var G = {		
	index: [],	// pics to show
	item: '',	// slideshow current frame
	time: 3,	// slideshow delay
	to: false,	// slideshow timeout
	scroll: {
		// varibales
		container: null,
		content: null,
		contentwidth: 0,
		containerwidth: 0,
		elementwidth: 0,
		dir: null,
		scroll: 200,
		duration: 0.8,
		over: 0,
		to: null,
		// setup
		init: function(container, content, containerwidth, contentwidth){
			G.scroll.container = $(container);
			G.scroll.content   = $(content);
			G.scroll.elementwidth = contentwidth;
			G.scroll.contentwidth = (G.index.length * contentwidth);
			G.scroll.content.setStyle({width:G.scroll.contentwidth+'px'});						
			G.scroll.container.setStyle({width:'auto'});
			G.scroll.containerwidth = G.scroll.container.getWidth();
			G.scroll.over = G.scroll.containerwidth - G.scroll.contentwidth;
			G.scroll
			$('scrollleftx' ).setStyle({left: 0});
			$('scrollrightx').setStyle({left: (G.scroll.containerwidth-20)+'px'});
		},
		// scroll left (west)
		left: function(){						
			var off = G.scroll.content.positionedOffset();
			if((off[0]-G.scroll.scroll)<=G.scroll.over)
			{
				G.scroll.to = new Effect.Move(G.scroll.content, { 
					x: G.scroll.over, 
					y: 0, 
					mode:       'absolute', 
					duration:   G.scroll.duration,
					transition: Effect.Transitions.linear
				});							
			} else
			{							
				G.scroll.to = new Effect.Move(G.scroll.content, { 
					x: -G.scroll.scroll, 
					y: 0, 
					mode:        'relative', 
					duration:    G.scroll.duration,
					transition:  Effect.Transitions.linear, 
					afterFinish: G.scroll.left
				});							
			}						
		},
		// scroll right (east)
		right: function(){						
			var off = G.scroll.content.positionedOffset();
			if((off[0]+G.scroll.scroll)>=0)
			{
				G.scroll.to = new Effect.Move(G.scroll.content, { 
					x: 0, 
					y: 0, 
					mode:       'absolute', 
					duration:   G.scroll.duration,
					transition: Effect.Transitions.linear																
				});							
			} else
			{
				G.scroll.to = new Effect.Move(G.scroll.content, { 
					x: G.scroll.scroll, 
					y: 0, 
					mode:        'relative', 
					duration:    G.scroll.duration,
					transition:  Effect.Transitions.linear,
					afterFinish: G.scroll.right
				 });
			}												
		},
		// scroll stop
		stop: function()
		{
			if(G.scroll.to)
				G.scroll.to.cancel();
			return;
		},
		set: function (current)
		{					
			set = 0;
			for(i=0; i<G.index.length; i++)
			{
				if(G.index[i].src==current)
				{
					set = i;
				}
			}
			if(set<=5)
				factor = 0;
			else
				factor = 4;
			/*
			else if(set>5 && set<=30)
				factor = 3;
			else if(set>30 && set<=50)
				factor = 6;
			else if(set>50 && set<=70)
				factor = 10;
			else if(set>70)
				factor = 14;
			*/
			pos = '-' + ((G.scroll.elementwidth * set) - factor * G.scroll.elementwidth) + 'px';			
			G.scroll.content.setStyle({left: pos});
			
		}		
	},
	
	load: function (set)
	{
		set = set || [];
		for(i=0, j=set.length; i<j; i++)
		{
			G.index.push(set[i]);
		}					
		if(0==G.index.length)
		{
			alert('Error (gallery)\nThere are no images loaded!');
		}
	},
	// image set part load
	loadSpecial: function (set, part)
	{	
		G.index = new Array();
		for(i=0, j=set.length; i<j; i++)
		{	
			if((set[i].src).match(part))
			{
				G.index.push(set[i]);
			}			
		}		
		if(0==G.index.length)
		{
			alert('Error (gallery)\nThere are no images loaded!');
		}	
	},
	
	show: function (img)
	{					
		var data, image, title;
		image = img || G.index[0].src;
		
		data = document.createElement('div');
		
		myScrollContainer = document.createElement('div');
		myScrollContainer.setAttribute('id', 'scrollcontainer');
		
		myScrollContent = document.createElement('div');
		myScrollContent.setAttribute('id', 'scrollcontent');
		
		for(i=0, j=G.index.length; i<j; i++)
		{
			var img = document.createElement('img');
			Element.extend(img);
			img.setAttribute('src', G.index[i].thumb);
			img.setAttribute('alt', G.index[i].title);
			if (image == G.index[i].src) 
			{
				img.setAttribute('class', 'selected');
				title = G.index[i].title;
			} else 
			{							
				img.setAttribute('class', 'noselect');
				img.setAttribute('onclick', 'javascript:G.show(\''+G.index[i].src+'\');');							
				//img.setOpacity(0.2);
				//img.setAttribute('onmouseover', 'Element.extend(this).setOpacity(1)');
				//img.setAttribute('onmouseout', 'Element.extend(this).setOpacity(0.2)');
			}
			myScrollContent.appendChild(img);						
		}
		
		myScrollContainer.appendChild(myScrollContent);
		// scroll west arrow
		swest = document.createElement('a');
		swest.setAttribute('id', 'scrollrightx');
		swest.setAttribute('href', '#');
		swest.setAttribute('onclick', 'return false');
		swest.setAttribute('onmouseover', 'G.scroll.left()');					
		swest.setAttribute('onmouseout', 'G.scroll.stop()');
		// scroll east arrow					
		seast = document.createElement('a');
		seast.setAttribute('id', 'scrollleftx');
		seast.setAttribute('href', '#');
		seast.setAttribute('onclick', 'return false');
		seast.setAttribute('onmouseover', 'G.scroll.right()');
		seast.setAttribute('onmouseout', 'G.scroll.stop()');					
		// append gallery data
		data.appendChild(myScrollContainer);
		data.appendChild(swest);
		data.appendChild(seast);
		// show selected picture
		Lightview.show({
		  href   : image,
		  rel    : 'image',
		  title  : title,
		  caption: data.innerHTML,
		  options: { topclose: true }
		});	
		// set thumb position
		document.observe('lightview:opened', function(){
			G.scroll.set(image);
		});
		
		return;					
	},
	// slideshow
	slideshow: function(time, item)
	{
		G.time = time || 3;
		G.item = item || G.index[0].src;
		document.observe('lightview:hidden', function(){ 
			clearTimeout(G.to); 
		});
		$A(G.index).each.delay(G.time, function(item){
			//Lightview.hide();
			//G.to = G.show.delay(G.time, item.src);
			alert(item);
		});
		
		
	}
					
};

var I = function (src, thumb, title)
{
	this.src   = src;
	this.thumb = thumb;
	this.title = title;				
	return this;
};
