var loc = 0;
var maxLoc = 0;
var currentWidth = 0;
var thumbTimer = 0;
var fullTimer = 0;
var arrowTimer = 0;
var minShownImage = 0;
var scrollDelay = 5;
var fullDelay = 3000;
var arrowDelay = 5000;
var currentImage = 0;
var width = 500;

function initGallery() {
  pad = 0;
  for(i = 0; i < imageW.length; i++) {
    maxLoc += imageW[i] + 1;

    span = document.createElement('span');
    span.setAttribute('class', 'imageholder');
    if(ie) {
      span.style.background = 'url(/gallery/images/' + imageURL[i] + 
			      '_thumb.jpg) top right no-repeat';
      span.style.width = (imageW[i] + pad) + 'px';
      span.style.height = '80px';
    } else {
      span.setAttribute('style', 'background-image: url(/gallery/images/' + 
			         imageURL[i] + 
                                 '_thumb.jpg);width: ' + (imageW[i] + pad) + 
			         'px;');
    }
    imageSpans[i] = span;
    pad = 1;
  }
  maxLoc -= (width + 1);
}

function scrollRight() {
  el = thumbs.firstChild;
  w = parseInt(el.style.width, 10);
  if(loc < maxLoc) {
    thumbTimer = setTimeout('scrollRight()', scrollDelay);
    loc++;
    currentWidth--;
    if(w > 1) {
      el.style.width = (w - 1) + 'px';
    } else {
      thumbs.removeChild(thumbs.firstChild);
      minShownImage++;
    }
  }
}

function scrollLeft() {
  el = thumbs.firstChild;
  w = parseInt(el.style.width, 10);
  if(loc > 0) {
    thumbTimer = setTimeout('scrollLeft()', scrollDelay);
    loc--;
    currentWidth++;
    if(w < imageW[minShownImage] + 1) {
      el.style.width = (w + 1) + 'px';
    } else {
      addSingleImageFront(thumbs, minShownImage - 1);
    }
  }
}

function stopScrolling() {
  clearTimeout(thumbTimer);
}

function addImages(thumbs) {
  pad = 0;
  for(i = 0; i < imageW.length; i++) {
    thumbs.appendChild(imageSpans[i]);
    currentWidth += imageW[i] + pad;
    pad = 1;
  }
  for(;;) {
    el = thumbs.firstChild;
    if(el.nodeType != 1) {
      thumbs.removeChild(el);
    } else {
      break;
    }
  }
}

function addSingleImageFront(thumbs, i) {
  span = document.createElement('span');
  span.setAttribute('class', 'imageholder');
  if(ie) {
    span.style.background = 'url(/gallery/images/' + imageURL[i] + 
			    '_thumb.jpg) top right no-repeat';
    span.style.width = '1px';
    span.style.height = '80px';
  } else {
    span.setAttribute('style', 'background-image: url(/gallery/images/' + 
			       imageURL[i] + '_thumb.jpg);width: 1px;');
  }
  thumbs.insertBefore(span, thumbs.firstChild);
  currentWidth += 1;
  minShownImage = i;
}

function clickImage(e) {
  if (!e) var e = window.event;
  if (e.pageX) {
    posx = e.pageX;
  } else if (e.clientX) {
    posx = e.clientX + document.body.scrollLeft;
  }

  obj = thumbs;
  curx = 0;
  if(obj.offsetParent) {
    while(obj.offsetParent) {
      curx += obj.offsetLeft;
      obj = obj.offsetParent;
    }
  } else if(obj.x) {
    curx = obj.x;
  }
  posx -= curx;

  el = thumbs.firstChild;
  i = 0;
  w = 0;
  for(;;) {
    w += parseInt(el.style.width, 10);
    if(w > posx) {
      changeImage(i + minShownImage);
      break;
    }
    i++;
    el = el.nextSibling;
    if(el == null) {
      break;
    }
  }
}

function changeImage(img) {
  currentImage = img;
  image = document.getElementById('gallerycurrentimage');
  image.setAttribute('src', '/gallery/images/' + imageURL[img] + '.jpg');
  image.style.display = 'none';
  if(ie) {
    if(imageType[img] == 'vertical') {
      image.style.marginTop = '0px';
      image.style.marginLeft = '84px';
    } else {
      image.style.marginTop = '84px';
      image.style.marginLeft = '0px';
    }
  } else {
    image.setAttribute('class', 'gallery_' + imageType[img]);
  }
  if(ie) {
    fullTimer = setTimeout('showImage()', fullDelay);
  }
}

function showImage() {
  fullTimer = 0;
  image = document.getElementById('gallerycurrentimage');
  image.style.display = 'block';
  el = document.getElementById('gallerytexttitle');
  el.replaceChild(document.createTextNode(imageName[currentImage]), 
		  el.firstChild);
  el = document.getElementById('gallerytextloc');
  el.replaceChild(document.createTextNode(imageLoc[currentImage] + ', ' +
					  imageDate[currentImage]), 
		  el.firstChild);
}

function hiliteImage(e) {
  if (!e) var e = window.event;
  posx = countX(e, document.getElementById('galleryfullholder'));
  if(posx < 250 && currentImage > 0) {
    document.getElementById('galleryfullnlarrow').style.display='block';
    document.getElementById('galleryfullnrarrow').style.display='none';
  } else if(posx >= 250 && currentImage < imageURL.length - 1) {
    document.getElementById('galleryfullnrarrow').style.display='block';
    document.getElementById('galleryfullnlarrow').style.display='none';
  }
  arrowTimer = setTimeout('loliteImage()', arrowDelay);
}

function loliteImage() {
  arrowTimer = 0;
  document.getElementById('galleryfullnrarrow').style.display='none';
  document.getElementById('galleryfullnlarrow').style.display='none';
}

function clickFullImage(e) {
  if (!e) var e = window.event;
  posx = countX(e, document.getElementById('galleryfullholder'));
  if(posx < 250 && currentImage > 0) {
    changeImage(currentImage - 1);
    if(currentImage == 0) {
      document.getElementById('galleryfullnlarrow').style.display='none';
    }
  } else if(posx >= 250 && currentImage < imageURL.length - 1) {
    changeImage(currentImage + 1);
    if(currentImage == imageURL.length - 1) {
      document.getElementById('galleryfullnrarrow').style.display='none';
    }
  }
}

function countX(e, obj) {
  if (e.pageX) {
    posx = e.pageX;
  } else if (e.clientX) {
    posx = e.clientX + document.body.scrollLeft;
  }

  curx = 0;
  if(obj.offsetParent) {
    while(obj.offsetParent) {
      curx += obj.offsetLeft;
      obj = obj.offsetParent;
    }
  } else if(obj.x) {
    curx = obj.x;
  }
  posx -= curx;
  return posx;
}

function addEvent(obj, evType, fn){ 
  if(obj.addEventListener){ 
    obj.addEventListener(evType, fn, false); 
    return true; 
  } else if (obj.attachEvent){ 
    var r = obj.attachEvent("on"+evType, fn); 
    return r; 
  } else { 
    return false; 
  } 
}

function hiJump(e) {
  if (!e) var e = window.event;
  posx = countX(e, document.getElementById('mainmenu'));
  if(posx > 394) {
    document.location.href = imageOnPage;
  }
}

function loJump(e) {
  document.location.href = imageOnPage;
}
