/*
*
* 
*
*
*
*/

function divPagination(name){
	this._name=name;
	this._pN=null;
	this._nN="";
	this._w=0;
	this._h=0;
	this._num=1;
	this.navStyle="arrows";
	this.navClass="";
	
	this.navAlign="right";
	this._nC=null;
	
	this._trgtPos=0;	//this is the x pos of the div, determines which column is viewable
	this._interval="";
	this.animate=true;
	this.paginateCallBack=null;
	
	this._divs=new Array();
			
	this._pgC=0;
	this._pgTtl=0;
	
	var self;
	
	
	/*
	* @param pn DIV		parent node name conatining divs
	* @param tw number	targetWidth
	* @param th number	targetHeight
	*/
	
	this.init=function(pn,w,h){
			this._pN=$e(pn);
			this._nN=pn;
			this._w=w;
			this._h=h;
	
			
			//let's loop through _parent and gather all the divs
			var _divs = this._pN.getElementsByTagName("div");
			
			var d = document.createElement("div");
			d.id=this._nN+"_dp";
			d.style.textAlign="left";
			d.style.position="relative";
			
			var msg = "";
			var dw=0;
			
			for(var i = 0; i < _divs.length; ++i){
				_divs[i].style.cssFloat="left";
				_divs[i].style.styleFloat="left";
				dw += parseInt( $e.getStyle(_divs[i].id,"width") );

			}
			$e.hide(pn);

			d.innerHTML=this._pN.innerHTML;
			
			this._pN.innerHTML="";
			this._pN.style.overflow="hidden";
			this._pN.style.width=w+"px";
			this._pN.style.height=h+"px";
			
		
			this._nC = this._pN.appendChild(d);

			$e.setStyle(this._nC.id,"width",dw+"px");
			this._pgTtl=_divs.length-1;
			$e.show(pn);
			this.createNav();
	}
	

	function anim(first){
		if(self.animate==true && first !== true){
			var cleft = parseInt(self._nC.style.left);
		    var nleft = (self._trgtPos > cleft) ? cleft + 40 : cleft - 40;
		    self._nC.style.left = nleft+"px";
		    if(Math.abs(nleft - self._trgtPos) < 30 ) {
		    		self._nC.style.left = self._trgtPos+"px";
		    		clearInterval(self._interval);
		    		self._interval="";
		    		if (self.paginateCallBack != null) self.paginateCallBack();
		    }
		} else {
			self._nC.style.left = self._trgtPos+"px";
		    clearInterval(self._interval);
		    self._interval="";
		    if (self.paginateCallBack != null) self.paginateCallBack();
		}
		
	}

	/**
	* shows a page, call by the text nav links
	*@param number num 		the number of the page to view
	*
	*/
	this.showPage=function(num,first){
		self = this;
		
		if(this._interval != "") clearInterval(this._interval);
		this._trgtPos = -( (( num-1)*this._w));		//render top position

		if(first ===true || this.animate==false) { 
			anim(true);
		} else {
  			this._interval = setInterval(anim, 30);
		}
		//change all nav  link number colors
		try{
			for (var i=1; i<= this._pgTtl; ++i){
				$e(this._nN+"pnavlnk"+i).style.color="#000000";
				$e(this._nN+"pnavlnk"+i).style.textDecoration="underline";
			}
			//change selected nav link color
			$e(this._nN+"pnavlnk"+num).style.color="#015AC2";
			$e(this._nN+"pnavlnk"+num).style.textDecoration="none";
			/*
			$e(this._nN+"pnavlnkPrev").style.color= (num==1) ? "#015AC2" : "#000000";
			$e(this._nN+"pnavlnkNext").style.color= (num==this._pgTtl) ? "#015AC2" : "#000000";
			//*/
		} catch(e){}
		
		try{
			var pa = $e(this._nN+'pnavlnkPrev').style;
			var na = $e(this._nN+'pnavlnkNext').style;
			na.display= (num==this._pgTtl) ? "none" : "block";
			pa.display= (num==1) ? "none" : "block";

		} catch(e){}
		this._pgC=num;
		
	}
	
	this.nextPage=function (){
		if(this._pgC < this._pgTtl) this.showPage(this._pgC+1);
	}
	
	this.prevPage=function (){
		if(this._pgC > 1) this.showPage(this._pgC-1);
	}

	
	/**
	* creates a div containing the nav links.
	* the div is nodeName+"paginateNav"
	*/
	this.createNav=function(){
		if(this._pgTtl <=1) return;
		
		switch (this.navStyle.toLowerCase()){
			case "arrows":
				var msg='<a id="'+this._nN+'pnavlnkNext" href="#" style="padding-left:10px; float: '+this.navAlign+'" class="'+this.navClass+'" onclick="'+this._name+'.nextPage();return false;">&raquo;</a>';
				msg +='<span class="'+this.navClass+'" style="float:'+this.navAlign+';"> more </span>';
				msg+='<a id="'+this._nN+'pnavlnkPrev" href="#" style="padding-'+this.navAlign+':10px; float:'+this.navAlign+';" class="'+this.navClass+'" onclick="'+this._name+'.prevPage();return false;">&laquo;</a>';
				break;
			default:
				var msg='<a id="'+this._nN+'pnavlnkPrev" href="#" style="padding-'+this.navAlign+':10px; float:" class="'+this.navClass+'" onclick="'+this._name+'.prevPage();return false;">&laquo;</a>';
				for (var i=1; i<= this._pgTtl; ++i){
					var lsty = "";
					lsty = 'style="padding-right:10px; "';
					msg +=' <a id="'+this._nN+'pnavlnk'+i+'" href="#" '+lsty+' class="'+this.navClass+'" onclick="'+this._name+'.showPage('+i+');return false;">'+i+'</a>';
				}
				msg+='<a id="'+this._nN+'pnavlnkNext" href="#" class="'+this.navClass+'" onclick="'+this._name+'.nextPage();return false;">&raquo;</a>';
				break;
		}
		
		var d = document.createElement("div");
		d.id=this._nN+"paginateNav";
		d.style.textAlign=this.navAlign;

		d.innerHTML=msg+'<div style="clear:both;"></div>';
		var p = this._pN;
		f = p.appendChild(d);
		//all done, now do it!
		this.showPage(1,true);

	}
}

function newDivPagination(name){
	window[name] = new divPagination(name);
}

