var scroller = function()
{
	scrollImgDir = '';
	scrollImgs = new Array;
    scrollText = new Array;

	scrollDiv = null;
	scrollInterval = null;
	scrollPosition = 0;
	scrollSpeed = 10;
	
	scrollWidth = 50;
	scrollLength = null;
	
	imgLength 	= 0;
	
	currentPos = 0;
	
	this.SetScroller = function(id,len)
	{
		scrollDiv = document.getElementById(id);
		scrollLength = len;
		
		//node = scrollDiv.getElementsByTagName('*')[0];
		//imgs = node.getElementsByTagName('img');
		//imgLength = imgs.length;
	}
	
	this.SetImageDir = function(dir)
	{
		scrollImgDir = dir;
	}
	
	this.SetImages = function()
	{
		for(i = 0; i < arguments.length; i++)
		{
			scrollImgs[i] = arguments[i];
		}
	}
    
    this.SetText = function()
    {
    	for(i = 0; i < arguments.length; i++)
        {
        	scrollText[i] = arguments[i];
        }
    }
	
    this.LoadImages = function(num)
    {
    	node = scrollDiv.getElementsByTagName('*')[0];
		
        for(i = 0; i < num; i++)
        {
        	if( scrollImgs[i] != undefined ) 
            {
                img = new Image();
                img.src = scrollImgDir+'/'+scrollImgs[i];
                node.innerHTML += '<img src="'+scrollImgDir+'/'+scrollImgs[i]+'" id="'+i+'" onclick="objScroll.ScrollTo(this);"'+(i==0?' class="active"':'')+'>';
                
                img_lg = new Image();
                img_lg = scrollImgDir+'/'+scrollImgs[i].replace('_th', '');
			}
        }
        
        imgs = node.getElementsByTagName('img');
		imgLength = num; //imgs.length;
    }
    
	this.ScrollLeft = function()
	{
		node = scrollDiv.getElementsByTagName('*')[0];
		imgs = node.getElementsByTagName('img');
		
		if( currentPos == 0 )
		{
			currentPos = imgLength;
			
			start = ((imgs[0].id*1)-1)-imgLength;
			end	  = start+imgLength;
			key   = end;
			
			for(i = end; i > start; i--)
			{
				if( !scrollImgs[key] ) key = scrollImgs.length-1;
				
				img = new Image();
				img.src = scrollImgDir+'/'+scrollImgs[key];
				node.innerHTML = '<img src="'+scrollImgDir+'/'+scrollImgs[key]+'" id="'+key+'" onclick="objScroll.ScrollTo(this);">'+node.innerHTML;

				img_lg = new Image();
                img_lg = scrollImgDir+'/'+scrollImgs[key].replace('_th', '');

				--key;
			}
		
			scrollDiv.scrollLeft = scrollLength;
		
			scrollPosition =  scrollDiv.scrollLeft - scrollLength*1;
			scrollInterval = setInterval("objScroll.ScrollStart('left')", scrollSpeed);
			
			currentPos--;
		}
		else
		{				
			currentPos--;
			
			node.getElementsByTagName('img')[currentPos+1].className = '';
			node.getElementsByTagName('img')[currentPos].className = 'active';
		}	
		
		lg_img = node.getElementsByTagName('img')[currentPos].src.replace('_th', '');
		document.getElementById('large').src = lg_img;	
        if( document.getElementById('txt') )
        {
        	timeoutID = window.setTimeout("document.getElementById('txt').innerHTML = scrollText[node.getElementsByTagName('img')[currentPos].id]", 100);
        }
	}
	
	this.ScrollRight = function()
	{
		node = scrollDiv.getElementsByTagName('*')[0];
		imgs = node.getElementsByTagName('img');
		
		if( currentPos+1 == imgLength )
		{
			currentPos = 0;

			scrollPosition =  scrollDiv.scrollLeft + scrollLength*1;
			scrollInterval = setInterval("objScroll.ScrollStart('right')", scrollSpeed);
			
			currentPos++;
		}
		else
		{	
			if( currentPos+2 == imgLength )
			{
				start = (imgs[0].id*1)+imgLength;
				end	  = start+imgLength;
				key = start;
				
				for(i = start; i < end; i++)
				{
					if( !scrollImgs[key] ) key = 0;
					
					img = new Image();
					img.src = scrollImgDir+'/'+scrollImgs[key];
					node.innerHTML = node.innerHTML+'<img src="'+scrollImgDir+'/'+scrollImgs[key]+'" id="'+key+'" onclick="objScroll.ScrollTo(this);">';
	
    				img_lg = new Image();
                	img_lg = scrollImgDir+'/'+scrollImgs[key].replace('_th', '');
    
					key++;
				}
			}
			
			currentPos++;
			
			node.getElementsByTagName('img')[currentPos-1].className = '';
			node.getElementsByTagName('img')[currentPos].className = 'active';
			
			lg_img = node.getElementsByTagName('img')[currentPos].src.replace('_th', '');
			document.getElementById('large').src = lg_img;	
            if( document.getElementById('txt') )
            {
            	timeoutID = window.setTimeout("document.getElementById('txt').innerHTML = scrollText[node.getElementsByTagName('img')[currentPos].id]", 100);
            }
		}
	}
	
	this.ScrollTo = function(obj)
	{		
		node = scrollDiv.getElementsByTagName('*')[0];
		imgs = node.getElementsByTagName('img');
		
		for(i = 0; i < imgLength; i++)
		{
			if( obj == imgs[i] )
			{
				id = i;
				break;
			}
		}
		
		if( id == 0 && imgs.length >= 5 ) //preload the previous set
		{
			start = ((imgs[0].id*1)-1)-imgLength;
			end	  = start+imgLength;
			key   = end;
			
			for(i = end; i > start; i--)
			{
				if( !scrollImgs[key] ) key = scrollImgs.length-1;
				
				img = new Image();
				img.src = scrollImgDir+'/'+scrollImgs[key];
                
                img_lg = new Image();
                img_lg = scrollImgDir+'/'+scrollImgs[key].replace('_th', '');

				--key;
			}
		}
		else if( id == imgLength-1 && imgs.length >= 5  )
		{
			start = (imgs[0].id*1)+imgLength;
			end	  = start+imgLength;
			key = start;
			
			for(i = start; i < end; i++)
			{
				if( !scrollImgs[key] ) key = 0;
				
				img = new Image();
				img.src = scrollImgDir+'/'+scrollImgs[key];
				node.innerHTML = node.innerHTML+'<img src="'+scrollImgDir+'/'+scrollImgs[key]+'" id="'+key+'" onclick="objScroll.ScrollTo(this);">';

				img_lg = new Image();
                img_lg = scrollImgDir+'/'+scrollImgs[key].replace('_th', '');

				key++;
			}
		}
		else
		{
			maxLength = imgLength*2;
			

			for(i = imgLength; i < maxLength; i++)
			{
				if( node.getElementsByTagName('img')[imgLength] )
				node.removeChild(node.getElementsByTagName('img')[imgLength]);
			}
		}
		
		for(i = 0; i < imgLength; i++)
		{
        	if( node.getElementsByTagName('img')[i] )
            {
				if( i == id ) node.getElementsByTagName('img')[i].className = 'active';
				else 		  node.getElementsByTagName('img')[i].className = '';
			}
		}
		
		currentPos = id;
		
		lg_img = node.getElementsByTagName('img')[currentPos].src.replace('_th', '');
		document.getElementById('large').src = lg_img;
        if( document.getElementById('txt') )
        {
        	timeoutID = window.setTimeout("document.getElementById('txt').innerHTML = scrollText[node.getElementsByTagName('img')[currentPos].id]", 100);
        }
	}
	
	this.ScrollUp = function()
	{
	
	}
	
	this.ScrollDown = function()
	{
	
	}
	
	this.ScrollStart = function(direction)
	{
		if( direction == 'left' )
		{						
			if( scrollDiv.scrollLeft - scrollWidth < scrollPosition )
			{
				scrollDiv.scrollLeft = scrollDiv.scrollLeft - (scrollPosition + scrollDiv.scrollLeft);
			}
			else
			{
				scrollDiv.scrollLeft = scrollDiv.scrollLeft - scrollWidth;
			}			
			
			if( scrollDiv.scrollLeft <= scrollPosition )
			{
				clearInterval(scrollInterval);
				
				node = scrollDiv.getElementsByTagName('*')[0];
				imgs = node.getElementsByTagName('img');
				
				node = scrollDiv.getElementsByTagName('*')[0];
				node.getElementsByTagName('img')[imgLength-1].className = 'active';	

				currentPos = imgLength-1;		
			}	
		}
		else
		{		
			if( scrollDiv.scrollLeft + scrollWidth > scrollPosition )
			{
				scrollDiv.scrollLeft = scrollDiv.scrollLeft + (scrollPosition - scrollDiv.scrollLeft);
			}
			else
			{
				scrollDiv.scrollLeft = scrollDiv.scrollLeft + scrollWidth;
			}
			
			if( scrollDiv.scrollLeft >= scrollPosition )
			{
				clearInterval(scrollInterval);
				
				node = scrollDiv.getElementsByTagName('*')[0];
				
				for(i = 0; i < imgLength; i++)
				{ node.removeChild(node.getElementsByTagName('img')[0]); }
				
				scrollDiv.scrollLeft = 0;
				
				node = scrollDiv.getElementsByTagName('*')[0];
				node.getElementsByTagName('img')[0].className = 'active';
				
				lg_img = node.getElementsByTagName('img')[0].src.replace('_th', '');
				document.getElementById('large').src = lg_img;
                if( document.getElementById('txt') )
                {
                	timeoutID = window.setTimeout("document.getElementById('txt').innerHTML = scrollText[node.getElementsByTagName('img')[0].id]", 100);
                }
				
				currentPos = 0;		
			}
		}
	}
}

Array.prototype.locate = function(str) 
{
	var arr = false;
	
	for( i = 0; i < this.length; i++) 
	{
		if(typeof(str) == 'function') 
		{
			if(str.test(this[i]))
			{
				if(!arr){ arr = []; }
				arr.push(i);
			}
		} 
		else 
		{
			if(this[i] === str)
			{
				if(!arr){ arr = []; }
				arr.push(i);
			}
		}
	}
	
	return arr;
}

window.onload = function()
{
	}
