// JavaScript Document
function Opt(a,b){
	return (typeof a=='undefined')?b:a;
}
var $extend = Object.extend = function(){
	var args = arguments;
	if (!args[1]) args = [this, args[0]];
	for (var property in args[1]) args[0][property] = args[1][property];
	return args[0];
};

var JClass = function(properties){
	var klass = function(){
		return (arguments[0] !== null && this.initialize && typeof(this.initialize) == 'function') ? this.initialize.apply(this, arguments) : this;
	};
	$extend(klass, this);
	klass.prototype = properties;
	klass.constructor = JClass;
	return klass;
};
var arrSl = new Array();

var JSSlideshow = new JClass(
	{
		initialize: function(opts) {		
			this.isauto = Opt(opts.auto,null);
			this.fdelay=parseInt(Opt(opts.delayfirst,0));
			this.delay  =parseInt(Opt(opts.delay,5000));
			
			
			if ( this.delay<5000 ) this.delay=5000;			
			this.timeduration  =parseInt(Opt(opts.timeduration,1000));
			if (this.timeduration>=this.delay) {
				this.timeduration=parseInt(this.delay/5);
			}
			this.delay+=this.timeduration;
			this.slideobjid = '#' + opts.slidehover;
			this.slideobj = $(this.slideobjid);
			this.slidebar = $('#' + opts.slidebar);
			this.width= parseInt(Opt(opts.size[0],$(this.slideobjid).css('width')));
			this.height= parseInt(Opt(opts.size[1],$(this.slideobjid).css('height')));
		    this.contentclass='.' + opts.classcontent;
			this.contentobj=$(this.slideobjid).find(this.contentclass);			
			this.trans  =Opt(opts.effect,'fadding'); //fading, moving, both			
			this.direction  =Opt(opts.moving_direction,'right');//right,left,top, bottom
			this.current=0;
			this.swapid=0;
			this.slideobj.css({position:'relative'})
			this.slideobj.wrapInner('<div id="' + this.slideobj.attr("id") + 'wrapper01"></div><div id="' + this.slideobj.attr("id") + 'wrapper02"></div>');
			this.slidewaper=new Array()
			this.slidewaper[0]= $('#' + this.slideobj.attr("id") + 'wrapper01');
			this.slidewaper[1]= $('#' + this.slideobj.attr("id") + 'wrapper02');
			// set some required styling to handle overflows and positioning	
			this.slidewaper[0].css({width: this.width,height:this.height,position:'absolute',left:0,top:0});
			this.slidewaper[1].css({width: this.width,height:this.height,position:'absolute'});
			this.slidewaper[0].html($(this.contentobj[0]).html());
			//if (this.trans=='fadding' ) this.slidewaper[1].fadeOut('fast');
			//hide all content
			$.each(this.contentobj, function(){
				$(this).css('dispalay', 'none');
			});
			if(this.contentobj.length <= 1 ) return; //no slide
			
			this.listlinks =this.slidebar.find('a');
			if (this.listlinks.length>0){
				$(this.listlinks[0]).attr('class','active');
			}
			var objtemp =this;
			if (this.listlinks.length>1){
				var i=0;
				$.each(this.listlinks, function(){
					$(this).attr('id', 'a_' + i);
					i++;
				});
				this.listlinks.click(function(){
					objtemp.isauto=false;						  
					clearInterval(objtemp.autoplay);
					objtemp.playslide(this.id.replace('a_',''))
				});
				//alert(this.listlinks.length)
			}
			
			if (this.isauto){
				this.autoplay= setInterval(function(){					    
					objtemp.playslide((objtemp.current + 1) % objtemp.contentobj.length)
					
				},this.delay + this.fdelay);
			}
			//function here
			this.playslide= function(toid){
			    //alert(objtemp.slidewaper[0].attr("id"))
				if (objtemp.isauto && objtemp.fdelay>0){
					clearInterval(objtemp.autoplay);
					objtemp.autoplay= setInterval(function(){					    
						objtemp.playslide((objtemp.current + 1) % objtemp.contentobj.length)
						
					},objtemp.delay);
					objtemp.fdelay=0;
				}
				if ((objtemp.sliding)||(objtemp.current==toid)) return;
				objtemp.current=toid;
				objtemp.listlinks.removeClass('active');								
				
				var tempswap= (objtemp.swapid +1) % 2;
				//if (this.trans!='fadding' ) 
				objtemp.slidewaper[tempswap].html($(this.contentobj[toid]).html());
				
				if (objtemp.trans=='moving' || objtemp.trans=='both'){
					var pos1=0;
					var direct= objtemp.direction;
					if (direct=='left'){
						pos1=-objtemp.width;
						objtemp.slidewaper[tempswap].css({left:objtemp.width,top:0});
					}
					if (direct=='right'){
						direct=='left';
						pos1=objtemp.width;
						objtemp.slidewaper[tempswap].css({left:-objtemp.width,top:0});
					}
					if (direct=='top'){
						pos1=-objtemp.height;
						objtemp.slidewaper[tempswap].css({left:0,top:objtemp.height});
					}
					if (direct=='bottom'){
						direct=='top';
						pos1=objtemp.height;
						objtemp.slidewaper[tempswap].css({left:0,top:-objtemp.height});
					}
					objtemp.sliding=true;
					if (direct=='top'){
						objtemp.slidewaper[objtemp.swapid].animate({top:(pos1)},objtemp.timeduration,function(){					
							$(this).css({left:0,top:-pos1});
						});
						objtemp.slidewaper[tempswap].animate({top:0},objtemp.timeduration,function(){																			
							$(this).css({left:0,top:0});
							objtemp.swapid=tempswap;
							$(objtemp.listlinks[toid]).attr('class','active');
							objtemp.sliding=false;
						});
					}else{
						objtemp.slidewaper[objtemp.swapid].animate({left:(pos1)},objtemp.timeduration,function(){					
							$(this).css({left:-pos1,top:0});
						});
						objtemp.slidewaper[tempswap].animate({left:0},objtemp.timeduration,function(){																			
							$(this).css({left:0,top:0});
							objtemp.swapid=tempswap;
							$(objtemp.listlinks[toid]).attr('class','active');
							objtemp.sliding=false;
						});
					}
					
					
				}
				if (objtemp.trans=='both'){
					objtemp.slideobj.fadeOut(objtemp.timeduration/2, function(){	
						/*if (objtemp.trans!='both'){
							objtemp.slidewaper[tempswap].css({top:0,left:0});
							//objtemp.slidewaper[objtemp.swapid].css({top:-objtemp.height,left:0});
						}*/
						$(this).fadeIn(objtemp.timeduration/2, function(){		
							objtemp.sliding=false;							
						});
					});
				}
				if (objtemp.trans=='fadding'){
					//objtemp.slidewaper[tempswap].css({top:-objtemp.height,left:0});
					objtemp.slidewaper[tempswap].hide();
					objtemp.slidewaper[tempswap].css({top:0,left:0});
					setTimeout(function(){$(objtemp.listlinks[toid]).attr('class','active');},parseInt(objtemp.timeduration/4))
					objtemp.slidewaper[objtemp.swapid].css({top:0,left:0});
					objtemp.slidewaper[objtemp.swapid].fadeOut(objtemp.timeduration, function(){											
					});
					objtemp.slidewaper[tempswap].fadeIn(objtemp.timeduration, function(){							
						objtemp.slidewaper[tempswap].css({top:0,left:0});
						objtemp.swapid=tempswap;
												
						objtemp.sliding=false;	
					});
				}
			
				

			}
			
		}		
	}
);
