﻿var TINY={};
var TINYClicked=0;
var aIpak;

function GetElemById(id){
	return document.getElementById(id);
}
function GetElemByTag(element,holder){
	return holder.getElementsByTagName(element);
}

TINY.slider=function(){
	
	function slide(identifier,params){
	  this.identifier=identifier; 
	  this.init(params);
	}
	
	
	slide.prototype.init=function(p){
		
		var s=this.x=GetElemById(p.id);
		var u=this.u=GetElemByTag('ul',s)[0];
		var c=this.m=GetElemByTag('li',u);
		var l=c.length;
		var i=this.l=this.c=0;
		
		this.b=1;
		
		if(p.navid&&p.activeclass){
			this.g=GetElemByTag('li',GetElemById(p.navid));
			this.s=p.activeclass
		}
		
		this.aIpak=p.auto||0;
		this.a=p.auto||0;
		this.p=p.resume||0;
		this.r=p.rewind||0;
		this.e=p.elastic||false;
		this.v=p.vertical||0;
		
		s.style.overflow='hidden';
		
		for(i;i<l;i++){if(c[i].parentNode==u){this.l++}}
		
		if(this.v){
			u.style.top=0; this.h=p.height||c[0].offsetHeight; u.style.height=(this.l*this.h)+'px'
		}else{
			u.style.left=0; this.w=p.width||c[0].offsetWidth; u.style.width=(this.l*this.w)+'px'
		}
		
		this.nav(p.position||0);
		
		if(p.position)
		{
			this.pos(p.position||0,this.a?1:0,1);
		}
		else if (this.a)
		{
			this.auto();
		}
			
		if(p.left)
		{
			this.sel(p.left)
		}
		
		if(p.right){
			this.sel(p.right)
		}
	},
	slide.prototype.auto=function(){
	
		this.x.ai=setInterval( new Function(this.identifier+'.move(1,1,1)'),this.a*1000)
		
	},
	slide.prototype.move=function(d,a){
		
		var n=this.c+d;
		if(this.r)
		{
			n=d==1?n==this.l?0:n:n<0?this.l-1:n
		}
		this.pos(n,a,1)
		
	},
	slide.prototype.pos=function(p,a,m){
		
		if(TINYClicked==0){
			
			TINYClicked = 1;
			
			var v=p;
			clearInterval(this.x.ai);
			clearInterval(this.x.si);
			if(!this.r){
				
				if(m){
					
					if( p==-1||(p!=0&&Math.abs(p)%this.l==0)){
						
						this.b++;
						for(var i=0;i<this.l;i++)
						{
							this.u.appendChild(this.m[i].cloneNode(1));
						}
						
						this.v?this.u.style.height=(this.l*this.h*this.b)+'px':this.u.style.width=(this.l*this.w*this.b)+'px';
						
					}
					
					if(p==-1||(p<0&&Math.abs(p)%this.l==0)){
						
						this.v?this.u.style.top=(this.l*this.h*-1)+'px':this.u.style.left=(this.l*this.w*-1)+'px';
						v=this.l-1;
						
					}
				}else if(this.c>this.l&&this.b>1){
					
					v=(this.l*(this.b-1))+p; 
					p=v;
					
				}
			}
			var t=this.v?v*this.h*-1:v*this.w*-1
			var d=p<this.c?-1:1;
			this.c=v; 
			var n=this.c%this.l;
			this.nav(n);
			if(this.e)
			{
				t=t-(8*d)
			}
			this.x.si=setInterval(new Function(this.identifier+'.slide('+t+','+d+',1,'+a+')'),10)
			
		}
		
	},
	slide.prototype.nav=function(n){
		
		if(this.g)
		{ 
			for(var i=0;i<this.l;i++)
			{
				this.g[i].className=i==n?this.s:'';
			}
		}
		
	},
	slide.prototype.slide=function(t,d,i,a){
		
		var o=this.v?parseInt(this.u.style.top):parseInt(this.u.style.left);
		
		if(o==t){
			
			clearInterval(this.x.si);
			
			TINYClicked = 0;
			
			if(this.e&&i<3){
				
				this.x.si=setInterval(new Function(this.identifier+'.slide('+(i==1?t+(12*d):t+(4*d))+','+(i==1?(-1*d):(-1*d))+','+(i==1?2:3)+','+a+')'),5);
				
			}else{
				
				if(a||(this.a&&this.p))
				{
					this.auto();
				}
				
				if(this.b>1&&this.c%this.l==0)
				{
					this.clear();
				}
			}
		}
		else
		{
			var v=o-Math.ceil(Math.abs(t-o)*.1)*d+'px';
			this.v?this.u.style.top=v:this.u.style.left=v;
		}
	},
	slide.prototype.clear=function(){
		
		var c=GetElemByTag('li',this.u);
		var t=i=c.length;
		 
		this.v?this.u.style.top=0:this.u.style.left=0;
		this.b=1;
		this.c=0;
		
		for(i;i>0;i--){
			
			var e=c[i-1];
			
			if(t>this.l&&e.parentNode==this.u)
			{
				this.u.removeChild(e); t--
			}
		}
	},
	slide.prototype.sel=function(i){
		
		var e=GetElemById(i);
		
		e.onselectstart=e.onmousedown=function()
		{
			return false;
		}
	},
	slide.prototype.stopInterval=function(){
		
		clearInterval(this.x.ai);
		/*this.x.ai=setInterval( new Function(this.identifier+'.move(1,1,1)'),300000);*/
		
	},
	slide.prototype.continueInterval=function(){
		
		clearInterval(this.x.ai);
		this.x.ai=setInterval( new Function(this.identifier+'.move(1,1,1)'),this.a*1000);
				
	}
	return{slide:slide}
}();
