/**
 * @author shadow
 */

if(typeof($)=='undefined'){
	alert("Please include the global.js file!");	
}

var slideshow ={
	'slides' : [],
	'sliderWidth' : 650,
	'grab' : function(id){
		var oElement = $(id).childNodes;
		for(var i=0,oChild;oChild = oElement[i];i++){
			if(oChild.nodeType==1){
				slideshow.slides[slideshow.slides.length] = oChild;			
			}
		}
	},
	'frames' : [[],[]],
	'frame' : 0,
	'lastChecked' : 0,
	'create' : function(){
		var elWidth = 0;
		var me  = slideshow;
		if(me.slides.length == 0){
			return;	
		}
		var slideCount = me.slides.length-1;
		var j = 0;
		for(var i = me.lastChecked; i <= slideCount; i++){
			if((me.sliderWidth-elWidth) >= 100 ){
				me.frames[me.frame][j] = me.slides[i];
				elWidth += parseInt(me.slides[i].offsetWidth);
				j++;
			}else{
				break;//exit for	
			}
		}
		me.lastChecked = i;
		if(me.frame == 1 && (me.sliderWidth-elWidth >= 200)){
			//atunci mai bagam in el ceva
			for(var  i = 0; i<=slideCount;i++){
				if((me.sliderWidth-elWidth) >= 200 ){
					me.frames[me.frame][j] = me.slides[i];
					elWidth += parseInt(me.slides[i].offsetWidth);
					j++;
				}else{
					break;//exit for	
				}				
			}
		}
		//create second frame array
		if(me.frame+1 == 1){
			me.frame++;
			me.create();
		}else{
			return;	
		}		
	}
};

/**
 * @author shadow
 */

var inter=0;
var inter2=0;
var frame=1;
var slides=[];
var slide=0;
var sliderWidth=650;
var sliderDelay=20;

addLoadEvent(run);

function run(){
	slideshow.grab('sliders');	
	slideshow.create();
	var div1 = document.createElement('div');
	//add items
	var frameItems = slideshow.frames[0].length;
	for(var i=0;i< frameItems;i++){
		div1.appendChild(slideshow.frames[0][i].firstChild.cloneNode(true));		
	}
	slides.push(div1);
	if(!!slideshow.frames[1].length){
		var div2 = document.createElement('div');
		//add items
		var frameItems = slideshow.frames[1].length;
		for(var i=0;i< frameItems;i++){
			div2.appendChild(slideshow.frames[1][i].firstChild.cloneNode(true));	
		}
		slides.push(div2);	
	}
	document.getElementById('frame1').appendChild(slides[slide]);
	if(!!slides[slide+1]){	
		document.getElementById('frame2').appendChild(slides[slide+1]);
		slide++;
		inter=window.setInterval(init,sliderDelay);
	}

	//todo: clear the slideshow
}


function init(){	
	clearTimer();
	inter = setInterval('animSlide()',50);	
};


function setAtEnd(el){
	var elm=el.cloneNode(false);
	elm.style.left=sliderWidth+'px';
	el.parentNode.insertBefore(elm,el.parentNode.lastChild.nextSibling);
	el.parentNode.removeChild(el);
}

function setAtStart(el){
	var elm = el.cloneNode(false);
	elm.setAttribute('id','new');
	el.parentNode.insertBefore(elm,el.parentNode.firstChild);
	el.parentNode.removeChild(el);
}

function getFrame(){
	if(frame==1){
		frame++;
	}else{
		frame=1;
	}
	return frame;
}

function nextFrame(){
	getFrame();
	var el=document.getElementById('frame'+frame);
	el.appendChild(slides[slide]);
	if(slide==slides.length-1){
		slide=0;
	}else{
		slide++;
	}
	el.nextSibling.appendChild(slides[slide]);
	clearTimeout(inter2);
	inter=setInterval('animSlide()',50);
}

var animSlide=function (){
	var elm = document.getElementById('frame'+frame);
	var elm1 = elm.nextSibling;
	var pos1 = elm.style.left == '' ? 0 : parseInt(elm.style.left)*-1;
	var pos2 = elm1.style.left == '' ? sliderWidth : parseInt(elm1.style.left);
	if(pos1>=sliderWidth){		
		elm1.style.top ='5px';
		elm.style.top = '-20px';
		clearInterval(inter);
		setAtEnd(elm);
		inter2=setTimeout('nextFrame()',sliderDelay);
	}else{
		elm.style.left = (pos1+2)*-1+'px';
		elm1.style.left = (pos2-2)+'px';
	}
}

var nxtAnimSlide=function (){
	var elm=document.getElementById('slides').firstChild;
	var elm1 = elm.nextSibling;
	var pos1 = elm.style.top == '' ? 0 : parseInt(elm.style.top)*-1;
	var pos2 = elm1.style.top == '' ? sliderWidth : parseInt(elm1.style.top);
	
	if(pos1==sliderWidth){
		clearInterval(inter);
		setAtEnd(elm);
	//	inter2=setTimeout('nextFrame()',sliderDelay);
	}else{
		elm.style.top = (pos1+10)*-1+'px';
		elm1.style.top = (pos2-10)+'px';
	}
}

var prevAnimSlide=function (){
	var elm = document.getElementById('slides').lastChild;
	var elm1 = elm.previousSibling;
	var pos1 = elm.style.top == '' ? 0 : parseInt(elm.style.top)*-1;
	var pos2 = elm1.style.top == '' ? sliderWidth : parseInt(elm1.style.top);
	
	if(pos1==sliderWidth*-1){
		clearInterval(inter);
	}else{
		elm.style.top = (pos1-10)*-1+'px';
		elm1.style.top = (pos2+10)+'px';
	}
}

function next(){
	clearTimer();
	var el = document.getElementById('slides').firstChild;
	el.appendChild(slides[slide]);
	if(slide == slides.length-1){
		slide=0;
	}else{
		slide++;
	}
	el.nextSibling.appendChild(slides[slide]);
	inter = setInterval('nxtAnimSlide()',50);	
}

function prev(){
	clearTimer();
	setAtStart(document.getElementById('slides').lastChild);
	var el = document.getElementById('slides').lastChild;
	el.appendChild(slides[slide]);
	if(slide == 0){
		slide=slides.length-1;
	}else{
		slide--;
	}
	el.previousSibling.appendChild(slides[slide]);
	inter = setInterval('prevAnimSlide()',50);	
}

function clearTimer(){
	clearInterval(inter);
	clearTimeout(inter2);
}

