var iedom=document.all||document.getElementById;
window._scrollerRun = true;
if(typeof(window._ready) == 'undefined') {
	window._ready = false;
	window._list = [];
}
function window_load(){
	for(var i=0; i<window._list.length; i++) {
		window._list[i]();
	}
	window._ready = true;
}
if (window.attachEvent) {
	window.attachEvent('onload', window_load);
}
else if(window.addEventListener) {
	window.addEventListener('load', window_load, false);
}
var pauseScroller = function() {
	
	this.get = function(eId){
		if(document.getElementById)
			return document.getElementById(eId);
		else if( document.all )
			return document.all(eId);
		else if(document.layers)
			return document.layers[eId];
		return null;
	}
		
	this.l2r = function(){
		this.dir = 'l2r';
		this.get(this.id+'_test2').style.marginRight = '0px';
		this.get(this.id+'_test3').style.marginRight = '0px';
		this.get(this.id+'_test2').style.marginLeft = this.margin+'px';
		this.get(this.id+'_test3').style.marginLeft = this.margin+'px';
	}
		
	this.r2l = function(){
		this.dir = 'r2l';
		this.get(this.id+'_test2').style.marginRight = this.margin+'px';
		this.get(this.id+'_test3').style.marginRight = this.margin+'px';
		this.get(this.id+'_test2').style.marginLeft = '0px';
		this.get(this.id+'_test3').style.marginLeft = '0px';
	}
		
	this.pause = function(){
		this.copyspeed=0;
	}
		
	this.resum = function(){
		this.copyspeed=this.slidespeed;
	}
	
	/**
	@param name: String - Ten cua bien khi new pauseScroller()
	@ 	Ex: 'my_name';  var my_name = new pauseScroller( ........ );
	@param id: String -  ID cua HTML Element chua Content
	@param dir: String -  Huong di chuyen cua Content
	@param w: Integer -  Width
	@param h: Integer -  Height
	@param column: Integer -   Column
	@param speed: Integer -  Speed 
	@param margin_pixel: Integer -  So pixel giua 2 div
	@param eventName: String -  Default 'mouseover' 	{'click', 'mouseover'}
	@param color: String -  Color
	*/
	this.horizoltal = function (name, id, dir, w, h, column, speed, margin_pixel, eventName, color) {
		this.name = name;
		this.id = id;
		this.margin = margin_pixel;
		this.dir = dir?(dir=='l2r'?'l2r':'r2l'):'l2r';
		this.dir = 'r2l';
		//Specify the slider's width (in pixels)
		this.sliderwidth=w+"px";
		//Specify the slider's height
		this.sliderheight=h+"px";
		//Specify the slider's slide speed (larger is faster 1-10)
		this.slidespeed=speed;
		//configure background color:
		this.slidebgcolor=color;//"#fcdb89";

		this.finalslide='';
		//Specify gap between each image (use HTML):
		
		//Specify pixels gap between each slideshow rotation (use integer):
		this.slideshowgap=column;

		////NO NEED TO EDIT BELOW THIS LINE////////////

		this.copyspeed = this.slidespeed;
		
		this.leftrightslide = this.get(this.id+'_hidden').innerHTML;
		
		this.actualwidth='';
		this.cross_slide = '';
		this.ns_slide = '';

		return this.startHorizoltal(eventName);
	}
	
	
	/**
	@param parent: String - ID Element cua DIV chua pauseScroller
	@param content: Array -  Array Content
	@param tickerid: String -  ID cua HTML Element chua Content
	@param divClass: String -  Class CSS cua Element chua Content
	@param delay: Integer -  Milisecond
	@param divInnerClass: String - Class CSS cua cac div Inner
	*/
	this.vertical = function(parent, content, tickerid, divClass, delay, divInnerClass) {
		this.content=content; //message array content
		this.id = parent;
		this.tickerid=tickerid; //ID of ticker div to display information
		this.delay=delay; //Delay between msg change, in miliseconds.
		this.mouseoverBol=0; //Boolean to indicate whether mouse is currently over scroller (and pause it if it is)
		this.hiddendivpointer=1; //index of message array for hidden div
		this.divClass = divClass;
		this.divInnerClass = divInnerClass;
		// document.write('<div id="'+divId+'" class="'+divClass+'" style="position: relative; overflow: hidden"><div class="'+divInnerClass+'" style="position: absolute; width: 100%" id="'+divId+'1">'+content[0]+'</div><div class="'+divInnerClass+'" style="position: absolute; width: 100%; visibility: hidden" id="'+divId+'2">'+content[1]+'</div></div>');
		this.load(this.startVertical);
		this.unload(function(){});
	}
	
	this.load = function(fn) {
		if(window._ready == false) {
			window._list.push(fn); 
		} else {
			window._list.push(fn); 
			fn();
		}
	}
	
	this.unload = function(fn) {
		if (window.attachEvent) {
			window.attachEvent('onubload', fn);
		}
		else if(window.addEventListener) {
			window.addEventListener('unload', fn, false);
		}
	}
	
	var $this = this;
	
	/* --------------------------------------------------- Vertical ---------------------------------------------------- */
	
	this.startHorizoltal = function(eventName) {
		this.el = this.get(this.id);
		var txt = '';
		if (iedom)
			txt = ('<span id="'+this.id+'_temp" style="visibility:hidden;position:absolute;top:-100px;left:-9000px">'+this.leftrightslide+'</span>');
		if (iedom||document.layers){
			with (document) {
				txt += '<table border="0" cellspacing="0" cellpadding="0"><td>';
				if (iedom){
					txt += '<div style="position:relative;width:'+this.sliderwidth+';height:'+this.sliderheight+';overflow:hidden">';
					txt += '<div style="position:absolute;width:'+this.sliderwidth+';height:'+this.sliderheight+';background-color:'+this.slidebgcolor+'" onMouseover="'+this.name+'.pause();" onMouseout="'+this.name+'.resum()">';
					txt += '<div id="'+this.id+'_test2" style="position:absolute;left:0px;top:0px; margin-right:7px;"></div>&nbsp;';
					txt += '<div id="'+this.id+'_test3" style="position:absolute;left:-1000px;top:0px; margin-right:7px;"></div>';
					txt += '</div></div>';
				}
				else if (document.layers){
					txt += '<ilayer width='+this.sliderwidth+' height='+this.sliderheight+' name="'+this.id+'_ns_slidemenu" bgColor='+this.slidebgcolor+'>';
					txt += '<layer name="'+this.id+'_ns_slidemenu2" left=0 top=0 onMouseover="'+this.name+'.pause();" onMouseout="'+this.name+'.resum()"></layer>';
					txt += '<layer name="'+this.id+'_ns_slidemenu3" left=0 top=0 onMouseover="'+this.name+'.pause();" onMouseout="'+this.name+'.resum()"></layer>';
					txt += '</ilayer>';
				}
				txt += '</td></table>';
			}
		}
		
		this.el.innerHTML = txt;
		
		if(eventName == 'click') {
			this.get(this.id+'_left').onclick = function(e){
				$this.l2r();
			}
		} else {
			this.get(this.id+'_left').onmouseover = function(e){
				$this.l2r();
			}
		}
		if(eventName == 'click') {
			this.get(this.id+'_right').onclick = function(e){
				$this.r2l();
			}
		} else {
			this.get(this.id+'_right').onmouseover = function(e){
				$this.r2l();
			}

		}
		this.load($this.fillup);
		
		this.get(this.id+'_test2').style.width = this.sliderwidth;
		this.get(this.id+'_test3').style.width = this.sliderwidth;
		this.get(this.id+'_test2').style.height = this.sliderheight;
		this.get(this.id+'_test3').style.height = this.sliderheight;
		
		this.unload(function(){
			if(eventName == 'click') {
				$this.get($this.id+'_left').onclick = null;
				$this.get($this.id+'_right').onclick = null;
			} else {
				$this.get($this.id+'_left').onmouseover = null;
				$this.get($this.id+'_right').onmouseover = null;
			}
		});
		return this;
	}
	
	this.fillup = function() {
		if (iedom){
			$this.cross_slide = $this.get($this.id+"_test2");
			$this.cross_slide2 = $this.get($this.id+"_test3");
			$this.cross_slide.innerHTML = $this.cross_slide2.innerHTML = $this.leftrightslide;
			$this.actualwidth = document.all ? $this.cross_slide.offsetWidth : $this.get($this.id+"_temp").offsetWidth;
			$this.cross_slide2.style.left = $this.actualwidth + $this.slideshowgap+"px";
		}
		else if (document.layers){
			$this.ns_slide = eval('document.'+$this.id+'_ns_slidemenu.document.'+$this.id+'_ns_slidemenu2');
			$this.ns_slide2 = eval('document.'+$this.id+'_ns_slidemenu.document.'+$this.id+'_ns_slidemenu3');
			$this.ns_slide.document.write($this.leftrightslide);
			// ns_slide.document.close();
			$this.actualwidth = this.ns_slide.document.width;
			$this.ns_slide2.left = $this.actualwidth + $this.slideshowgap;
			$this.ns_slide2.document.write($this.leftrightslide);
			// ns_slide2.document.close();
		}
		// lefttime=setInterval("slideleft()",30);
		$this.slideleft();
	}
	
	this.slideleft = function(){
		if(!window._scrollerRun) return this;
		if($this.dir == 'r2l') {
			$this.slideright();
			return;
		}
		
		if (iedom) {
			if (parseInt($this.cross_slide.style.left) > ($this.actualwidth*(-1)+8))
				$this.cross_slide.style.left = parseInt($this.cross_slide.style.left) - $this.copyspeed+"px";
			else
				$this.cross_slide.style.left = parseInt($this.cross_slide2.style.left) + $this.actualwidth + $this.slideshowgap+"px";
			if (parseInt($this.cross_slide2.style.left) > ($this.actualwidth*(-1)+8))
				$this.cross_slide2.style.left = parseInt($this.cross_slide2.style.left) - $this.copyspeed + "px";
			else
				$this.cross_slide2.style.left = parseInt($this.cross_slide.style.left) + $this.actualwidth + $this.slideshowgap+"px";
		}
		else if (document.layers) {
			if ($this.ns_slide.left > ($this.actualwidth*(-1)+8))
				$this.ns_slide.left -= $this.copyspeed;
			else
				$this.ns_slide.left = $this.ns_slide2.left + $this.actualwidth + $this.slideshowgap;

			if ($this.ns_slide2.left > ($this.actualwidth*(-1)+8))
				$this.ns_slide2.left -= $this.copyspeed;
			else
				$this.ns_slide2.left = $this.ns_slide.left + $this.actualwidth + $this.slideshowgap;
		}
		setTimeout(function(){
			$this.slideleft();
		}, 50);
	}

	this.slideright = function(){
		if(!window._scrollerRun) return this;
		if($this.dir == 'l2r') {
			$this.slideleft();
			return;
		}
		if (iedom) {
			if (parseInt($this.cross_slide.style.left) < ($this.actualwidth*(1)-8))
				$this.cross_slide.style.left = parseInt($this.cross_slide.style.left) + $this.copyspeed+"px";
			else
				$this.cross_slide.style.left = (parseInt($this.cross_slide2.style.left) - $this.actualwidth + $this.slideshowgap)+"px";
			if (parseInt($this.cross_slide2.style.left) < ($this.actualwidth*(1)+8))
				$this.cross_slide2.style.left = (parseInt($this.cross_slide2.style.left) + $this.copyspeed) + "px";
			else
				$this.cross_slide2.style.left = (parseInt($this.cross_slide.style.left) - $this.actualwidth + $this.slideshowgap)+"px";
		}
		else if (document.layers) {
			if ($this.ns_slide.left < ($this.actualwidth*(1)+8))
				$this.ns_slide.left += $this.copyspeed;
			else
				$this.ns_slide.left = ($this.ns_slide2.left - $this.actualwidth + $this.slideshowgap);

			if ($this.ns_slide2.left < ($this.actualwidth*(1)+8))
				$this.ns_slide2.left += $this.copyspeed;
			else
				$this.ns_slide2.left = ($this.ns_slide.left - $this.actualwidth + $this.slideshowgap);
		}
		setTimeout(function(){
			$this.slideright();
		}, 50);
	}

	/* --------------------------------------------------- Vertical ---------------------------------------------------- */
	this.startVertical = function() {
		$this.get($this.id).innerHTML = '<div id="'+$this.tickerid+'" class="'+
			$this.divClass+'" style="position: relative; overflow: hidden"><div class="'+
			$this.divInnerClass+'" style="position: absolute; width: 100%" id="'+
			$this.tickerid+'1">'+$this.content[0]+'</div><div class="'+
			$this.divInnerClass+'" style="position: absolute; width: 100%; visibility: hidden" id="'+
			$this.tickerid+'2">'+$this.content[1]+'</div></div>';
		
		$this.tickerdiv=$this.get($this.tickerid);
		$this.visiblediv=$this.get($this.tickerid+"1");
		$this.hiddendiv=$this.get($this.tickerid+"2");
		$this.visibledivtop=parseInt($this.getCSSpadding($this.tickerdiv));
		//set width of inner DIVs to outer DIV's width minus padding (padding assumed to be top padding x 2)
		$this.visiblediv.style.width=$this.hiddendiv.style.width=$this.tickerdiv.offsetWidth-($this.visibledivtop*2)+"px";
		$this.getinline($this.visiblediv, $this.hiddendiv);
		$this.hiddendiv.style.visibility="visible";
		$this.get($this.tickerid).onmouseover=function(){
			$this.mouseoverBol=1;
		}
		$this.get($this.tickerid).onmouseout=function(){
			$this.mouseoverBol=0;
		}
		$this.unload(function(){
			$this.tickerdiv.onmouseover=$this.tickerdiv.onmouseout=null
		});
		setTimeout(function(){
			$this.animateup();
		}, $this.delay);
	}
	
	this.animateup=function(){
		if(!window._scrollerRun) return this;
		if (parseInt(this.hiddendiv.style.top)>($this.visibledivtop+5)){
			$this.visiblediv.style.top=parseInt($this.visiblediv.style.top)-5+"px";
			this.hiddendiv.style.top=parseInt($this.hiddendiv.style.top)-5+"px";
			setTimeout(function(){
				$this.animateup();
			}, 20);
		}
		else{
			$this.getinline($this.hiddendiv, $this.visiblediv);
			$this.swapdivs();
			setTimeout(function(){
				$this.setmessage();
			}, $this.delay);
		}
	}
	
	this.swapdivs=function(){
		var tempcontainer=this.visiblediv;
		this.visiblediv=this.hiddendiv;
		this.hiddendiv=tempcontainer;
	}

	this.getinline=function(div1, div2){
		div1.style.top=this.visibledivtop+"px";
		div2.style.top=Math.max(div1.parentNode.offsetHeight, div1.offsetHeight)+"px";
	}
	
	this.setmessage=function(){
		if (this.mouseoverBol==1) //if mouse is currently over scoller, do nothing (pause it)
			setTimeout(function(){$this.setmessage()}, 100);
		else{
			var i=this.hiddendivpointer;
			var ceiling=this.content.length;
			this.hiddendivpointer=(i+1>ceiling-1)? 0 : i+1;
			this.hiddendiv.innerHTML=this.content[this.hiddendivpointer];
			this.animateup();
		}
	}

	this.getCSSpadding=function(tickerobj){ //get CSS padding value, if any
		if (tickerobj.currentStyle) {
			return tickerobj.currentStyle["paddingTop"];
		} else if (window.getComputedStyle){ //if DOM2
			var cs = window.getComputedStyle(tickerobj, "");
			var pd = cs.getPropertyValue("padding-top");
			return pd;
		}
		return 0;
	}

}