  var IMG_ID = 'img';
  var DIV_ID = 'div';
    
  var currentImage;
  var currentPos=248;
  var initialPos=0;
  var stopPos=currentPos;
  var scrollSpeed=1;
  var imageid = 1;

  var thumbs       = new Array();
  var images       = new Array();
  var fullimages   = new Array();
	var bwimages     = new Array();
	var bwfullimages = new Array();
  
  var startScroll; 
  var selectThumb; 
  var fastStart; 
  var fastEnd;
  var numToMove;

  var beforeAutoScroll=0;
  var hoveringOnButton=false;
  var hoverId=0;
  var autoLeftId=0;
  var autoRightId=0;
  var centrePosition=0;
  var backToCentre=false;
  var overButton = false;
  var overImage = false;
  var overImageDiv = false;
  var overControl = false;

  var image;
  var gallery;
	var bw;
  
  function setGallery(_gallery)
  {
    gallery = _gallery;
  }

  function loadImage(tag, normal, hot, large, full, width, height, title, bw, bwfull, bwtitle)
  { 
    thumbs[tag]            = new Image;
    thumbs[tag].src        = normal;
    thumbs[tag+"_hot"]     = new Image;
    thumbs[tag+"_hot"].src = hot;
    images[tag]            = new Image;
    images[tag].src        = large;
    images[tag].width      = width;
    images[tag].height     = height;
	
    fullimages[tag]        = new Image;
    fullimages[tag].src    = full;
    fullimages[tag].title  = title;

		if (bw != "")
		{
			bwimages[tag]            = new Image;
			bwimages[tag].src        = bw;
			bwimages[tag].width      = width;
			bwimages[tag].height     = height;
			bwfullimages[tag]        = new Image;
			bwfullimages[tag].src    = full;
			bwfullimages[tag].title  = bwtitle;
		}
  }

  loadImage("scrollleft" ,"images/scrollleft.jpg" ,"images/scrollleft_h.jpg" ,"","",0,0,"","","");
  loadImage("scrollright","images/scrollright.jpg","images/scrollright_h.jpg","","",0,0,"","","");

  function startScrollThumbsLeft(startscroll,selectthumb,faststart,fastend,numtomove)
  {
      startScroll = startscroll;
      selectThumb = selectthumb;
      fastStart   = faststart;
      fastEnd     = fastend;
      numToMove   = numtomove;
      
      scrollThumbsLeft();
  }
   
  function scrollThumbsLeft() 
  {
    if (!currentImage)
      currentImage = document.getElementById(IMG_ID+1);

    if (startScroll)
    {
      //alert(currentPos);
      if (currentPos != stopPos)
        stopPos = stopPos-62;
      else
        stopPos = currentPos-62;
      initialPos=currentPos;
      imageid++; 
      numToMove--;
      if (!document.getElementById(IMG_ID+imageid))
      {
        imageid--;
        stopPos = currentPos;
        mouseOver(IMG_ID+imageid, true);
        currentImage = document.getElementById(IMG_ID+imageid);
        return;
      }
      mouseOut(currentImage.id, true);
      mouseOver(IMG_ID+imageid, false);
    }
    else if (currentPos < stopPos)
    {
      currentImage = document.getElementById(IMG_ID+imageid);
      currentPos = stopPos;
      mouseOver(IMG_ID+imageid, selectThumb);
      if (selectThumb)
      {
        setLargeImage(currentImage.id);
        //var image = document.getElementById('largeImage');
        //document.getElementById('imageView').style.background = "url("+image.src+")";
        //image.style.visibility = 'hidden';
        //image.src = images[currentImage.id];
      }
      if (numToMove > 0)
      {
        startScroll = true;
        selectThumb = numToMove==1;
        fastStart   = true;
        fastEnd     = numToMove==1;
        setTimeout(scrollThumbsLeft,scrollSpeed);
      }
      return;
    }
    document.getElementById('divScroll').style.left=currentPos+'px';
  
    if (((currentPos>initialPos-10)&&(!fastStart)) || ((currentPos<stopPos+10)&&(!fastEnd)))
      currentPos--;
    else if (((currentPos>initialPos-20)&&(!fastStart)) || ((currentPos<stopPos+20)&&(!fastEnd)))
      currentPos-=2;
    else
      currentPos-=4;
    startScroll = false;
    setTimeout(scrollThumbsLeft,scrollSpeed);
  } 

  function startScrollThumbsRight(startscroll,selectthumb,faststart,fastend,numtomove)
  {
      startScroll = startscroll;
      selectThumb = selectthumb;
      fastStart   = faststart;
      fastEnd     = fastend;
      numToMove   = numtomove;

      scrollThumbsRight();
  }
   
  function scrollThumbsRight() 
  {
    if (startScroll)
    {
      if (currentPos != stopPos)
        stopPos = stopPos+62;
      else
        stopPos = currentPos+62;
      initialPos=currentPos;  
      imageid--;  
      numToMove--; 
      var currentId = currentImage.id;
      if (!document.getElementById(IMG_ID+imageid))
      {
        imageid++;
        stopPos = currentPos;
        mouseOver(IMG_ID+imageid, true);
        currentImage = document.getElementById(IMG_ID+imageid);
        return;
      }
      mouseOver(IMG_ID+imageid, false);
      mouseOut(currentId, true);
    }
    else if (currentPos > stopPos)
    {
      currentImage = document.getElementById(IMG_ID+imageid);
      currentPos = stopPos;
      mouseOver(IMG_ID+imageid, selectThumb);
      if (selectThumb)
      {
        setLargeImage(currentImage.id);
        //var image = document.getElementById('largeImage');
        //document.getElementById('imageView').style.background = "url("+image.src+")";
        //image.style.visibility = 'hidden';
        //image.src = images[currentImage.id];
      }
      if (numToMove > 0)
      {
        startScroll = true;
        selectThumb = numToMove==1;
        fastStart   = true;
        fastEnd     = numToMove==1;
        setTimeout(scrollThumbsRight,scrollSpeed);
      }
      return;
    }
    
    document.getElementById('divScroll').style.left=currentPos+'px';
  
    if (((currentPos<initialPos+10)&&(!fastStart)) || ((currentPos>stopPos-10)&&(!fastEnd)))
      currentPos++;
    else if (((currentPos<initialPos+20)&&(!fastStart)) || ((currentPos > stopPos-20)&&(!fastEnd)))
      currentPos+=2;
    else
      currentPos+=4;
    
    startScroll = false;
    setTimeout(scrollThumbsRight,scrollSpeed);
  }
  
  function centreClickedThumb(thumb)
  {
    var currentid = currentImage.id.substring(IMG_ID.length,IMG_ID.length+2);
    var thumbid = thumb.substring(IMG_ID.length,IMG_ID.length+2);
    var move = currentid - thumbid;

    startScroll = true; 
    selectThumb = Math.abs(move)==1; 
    fastStart   = false;
    fastEnd     = Math.abs(move)>1; 
    numToMove   = Math.abs(move);
    if (move > 0)
      scrollThumbsRight();
    else if (move < 0)
      scrollThumbsLeft();

    return false; 
  }
  
  function autoScrollLeft()
  {
    return;
    if (!centrePosition)
    {
//      alert('set centre pos: '+currentPos);
      centrePosition = currentPos;
    }

    if (backToCentre && currentPos <= centrePosition)
    {
      currentPos = centrePosition;
      document.getElementById('divScroll').style.left = currentPos+"px";
      centrePosition = 0;
      backToCentre = false;
      autoLeftId = 0;
      return;
    }

    if (backToCentre)
      currentPos -= 10;
    else
      currentPos -= 2;
    document.getElementById('divScroll').style.left = currentPos+"px";
    autoLeftId = setTimeout(autoScrollLeft, 10);
  }
  
  function autoScrollRight()
  {
    return;
    if (!centrePosition)
    {
//      alert('set centre pos: '+currentPos);
      centrePosition = currentPos;
    }

    if (backToCentre && currentPos >= centrePosition)
    {
      currentPos = centrePosition;
      document.getElementById('divScroll').style.left = currentPos+"px";
      centrePosition = 0;
      backToCentre = false;
      autoRightId = 0;
      return;
    }
    
    if (backToCentre)
      currentPos += 10;
    else
      currentPos += 2;
    document.getElementById('divScroll').style.left = currentPos+"px";
    autoRightId = setTimeout(autoScrollRight, 10);
  }

  function mouseOver(image, selected)
  {
    var scrollButton = (image.indexOf('scroll') > -1);
    if (!currentImage)
      currentImage = document.getElementById(IMG_ID+1);

    //alert("mouseOver()");
    overControl=true;
    if (scrollButton)
      overButton = true;
    else
      overImage = true;
      
    if (currentImage.id == image && !selected)
      return;
    if (!scrollButton)
    {
      var currentid = parseInt(currentImage.id.substring(IMG_ID.length,IMG_ID.length+2));
      var thumbid = parseInt(image.substring(IMG_ID.length,IMG_ID.length+3));
      if (thumbid < currentid)
        document.getElementById('divScroll').style.left = (parseInt(document.getElementById('divScroll').style.left)-10)+"px";
      var div = document.getElementById('div'+image);

      if (div)
      {
        if (selected)
          div.className = "selectedImage";
        else
          div.className = "hotImage";
      }
    }
        
    var img = document.getElementById(image);
    img.src = thumbs[image+"_hot"].src;

    if (scrollButton)
    {
      if (!hoveringOnButton)
      {
        hoveringOnButton = true;
        hoverId = setTimeout("mouseOver('"+image+"')", 1000);
      }
      else
      {
        if (image.indexOf('left') > -1)
          autoScrollLeft();
        else
          autoScrollRight();
      }
    }
  }
 
  function controlMouseOver()
  {
    overControl = true;
    //alert("controlMouseOver()");
  }
  
  function controlMouseOut()
  {
//    alert(overImage+','+overButton+','+overImageDiv+','+overControl);
//    if ((overImage || overButton || overImageDiv) || !overControl)
      return;
      
    if (centrePosition)
    {
      //alert('out of control');
      if (autoLeftId)
      {
//        clearTimeout(autoLeftId);
        autoLeftId = 0;
        backToCentre = true;
        autoScrollRight();
      }
      else if (autoRightId)
      {
//        clearTimeout(autoRightId);
        autoRightId = 0;
        backToCentre = true;
        autoScrollLeft();
      }
    }
  }
  
  function imageOver()
  {
    overControl = true;
    //alert("imageOver()");
  }
  
  function imageOut()
  {
//    overImageDiv = false;
//    alert("imageOut()");
  }

  function mouseOut(image,force)
  {
    var scrollButton = (image.indexOf('scroll') > -1);
    
//    alert("mouseOut()");
//    if (scrollButton)
//      overButton = false;
//    else
//      overImage = false;
      
    if (hoverId)
    {
      clearTimeout(hoverId);
      hoverId = 0;
      hoveringOnButton=false;
    }
    
    if (scrollButton)
    {
      if (autoLeftId)
      {
        clearTimeout(autoLeftId);
//        autoLeftId = 0;
//        backToCentre = true;
//        autoScrollRight();
      }
      else if (autoRightId)
      {
        clearTimeout(autoRightId);
//        autoRightId = 0;
//        backToCentre = true;
//        autoScrollLeft();
      }
    }
    
    if (!currentImage)
      currentImage = document.getElementById(IMG_ID+1);

    if (currentImage.id == image && !force)
      return;
    var currentid = parseInt(currentImage.id.substring(IMG_ID.length,IMG_ID.length+2));
    var thumbid = parseInt(image.substring(IMG_ID.length,IMG_ID.length+3));
    if (thumbid < currentid)
      document.getElementById('divScroll').style.left = (parseInt(document.getElementById('divScroll').style.left)+10)+"px";
    var img = document.getElementById(image);
    img.src = thumbs[image].src;
    var div = document.getElementById('div'+image);
    if (div)
      div.className = "imageHolder";
  }
  
  function fadeImage()
  {
    var image = document.getElementById('largeImage');
    image.style.visibility = 'visible';
    setOpacity(image, 0);
    fadeInWithSelect(imageId,0,bw);
  }
  
  function imageClick(selectedImage)
  {
    centreClickedThumb(selectedImage);
//    setLargeImage(selectedImage);
  }

//  function getImageSize()
//  {
//    var anchor = document.getElementById('enlarge');
//    anchor.href = 'javascript:showImageViewer(\''+image.src+'\','+image.width+','+image.height+');';
//  }

  function setLargeImage(selectedImage)
  {  
    if (fadeInId)
      clearTimeout(fadeInId);
    var image 						 = document.getElementById('largeImage');
    image.style.visibility = 'hidden';
    image.style.width      = images[selectedImage].width;
    image.style.height     = images[selectedImage].height;
		image.style.marginTop  = ((480-parseInt(images[selectedImage].height))/2)+"px";
    image.src 						 = images[selectedImage].src;
    image.title						 = fullimages[selectedImage].title;

    var title = document.getElementById('image_title');
    var thumb = document.getElementById(selectedImage);
    title.innerHTML = "<small>"+image.title+"</small>";
    var anchor = document.getElementById('enlarge');
    anchor.href = 'javascript:showImageViewer("'+fullimages[selectedImage].src+'",'+fullimages[selectedImage].width+','+fullimages[selectedImage].height+',"'+fullimages[selectedImage].title+'");';
    var showBW = document.getElementById('showBW');
    showBW.href = 'javascript:showBWImage("'+selectedImage+'");';
    var textBW = document.getElementById('bw_text');
    textBW.innerHTML = 'show b/w version';
	  var spacer = document.getElementById('spacer');
		if (bwimages[selectedImage] != null)
		{
			showBW.style.display = 'inline';
			spacer.style.display = 'inline';
		}
		else
		{
			showBW.style.display = 'none';
			spacer.style.display = 'none';
		}
		bw = false;
  }
  
  function showBWImage(selectedImage)
  {  
    if (fadeInId)
      clearTimeout(fadeInId);
    var image = document.getElementById('largeImage');
    image.style.visibility = 'hidden';
    image.style.width      = bwimages[selectedImage].width;
    image.style.height     = bwimages[selectedImage].height;
    image.style.marginTop  = ((480-parsInt(bwimages[selectedImage].width))/2)+"px";
    image.src              = bwimages[selectedImage].src;
    image.title            = bwfullimages[selectedImage].title;

    var title = document.getElementById('image_title');
    var thumb = document.getElementById(selectedImage);
    title.innerHTML = "<small>"+image.title+"</small>";
    var anchor = document.getElementById('enlarge');
    anchor.href = 'javascript:showImageViewer("'+bwfullimages[selectedImage].src+'",'+bwfullimages[selectedImage].width+','+bwfullimages[selectedImage].height+',"'+bwfullimages[selectedImage].title+'");';

		var showBW = document.getElementById('showBW');
    showBW.href = 'javascript:setLargeImage("'+selectedImage+'");';
    var textBW = document.getElementById('bw_text');
    textBW.innerHTML = 'show colour version';
	  var spacer = document.getElementById('spacer');
		if (bwimages[selectedImage] != null)
		{
			showBW.style.display = 'inline';
			spacer.style.display = 'inline';
		}
		else
		{
			showBW.style.display = 'none';
			spacer.style.display = 'none';
		}
		bw = true;
  }
  
  function pageLoad(_selectedImage)
  {
    currentImage = document.getElementById(IMG_ID+1);
    centreClickedThumb(IMG_ID+_selectedImage)
    imageId                = 'largeImage';
    image                  = document.getElementById(imageId);
    image.onload           = fadeImage;
    image.src              = images[currentImage.id].src;
    image.style.width      = images[currentImage.id].width;
    image.style.height     = images[currentImage.id].height;
    image.style.marginTop  = ((480-parseInt(images[currentImage.id].height))/2)+"px";
    image.title            = fullimages[currentImage.id].title;

    var title = document.getElementById('image_title');
    var thumb = document.getElementById(currentImage.id);
    title.innerHTML = "<small>"+image.title+"</small>";
    var anchor = document.getElementById('enlarge');
    anchor.href = 'javascript:showImageViewer("'+fullimages[currentImage.id].src+'",'+fullimages[currentImage.id].width+','+fullimages[currentImage.id].height+',"'+fullimages[currentImage.id].title+'");';
    var showBW = document.getElementById('showBW');
    showBW.href = 'javascript:showBWImage("'+currentImage.id+'");';
	  var spacer = document.getElementById('spacer');
		if (bwimages[currentImage.id] != null)
		{
			showBW.style.display = 'inline';
			spacer.style.display = 'inline';
		}
		else
		{
			showBW.style.display = 'none';
			spacer.style.display = 'none';
		}
    var showBW = document.getElementById('showBW');
    showBW.href = 'javascript:setLargeImage("'+currentImage.id+'");';
		
		loadRemainingImages();
		
		bw = false;
  }

  function ShowFullImage(image)
  {
    window.open(image, 'fullimage', 'left=0,top=0,width='+screen.width+',height='+screen.height+',location=no,toolbar=no,directories=no,status=no,menubar=no,history=no,scrollbars=yes');
  }