var ns,ie
ns = (document.layers)? true:false
ie = (document.all)? true:false

function Scroll(p_width,p_height,p_speed,p_direct){	//構造函數
	//initial 
	this.preTop = 0;
	this.preLeft = 0;
	this.moveLimit = 0;
	this.currentLeft = 0;
	this.currentTop = 0;
	//properities
	this.marquee_name = "";
	this.template_name = "";
	this.marquee_hidden = "";
	this.marquee_width = p_width;
	this.marquee_height = p_height;
	this.marquee_speed = p_speed;
	this.marquee_direct = p_direct;
	//method
	this.setMarObject = setMarObject;
	this.setTempObject = setTempObject;
	this.setHiddenObject = setHiddenObject;
	//this.setStopValue = setStopValue;
	//this.setStartValue = setStartValue;
	this.beginScroll = beginScroll;
	this.scrollInit = scrollInit;
	this.scrollUp = scrollUp;
	this.scrollDown = scrollDown;
	this.scrollRight = scrollRight;
	this.scrollLeft = scrollLeft;
	this.getObject = getObject;
	return this;
}
function setTempObject(p_obj){	//不可見的層
	this.template_name = p_obj;
}
function setMarObject(p_obj){		//內容區
	this.marquee_name = p_obj;
}
function setHiddenObject(p_obj){		//這個變量控制是否停止滾動
	this.marquee_hidden = p_obj;
}
function getObject(p_obj){				//構造對象
	if(typeof(p_obj)=="string") {
		if(ie) return  eval("document.all."+p_obj);
		else return eval("document."+p_obj);
	} else {
		if(ie) return eval("p_obj");
		else return p_obj;
	}
}
function beginScroll(){
	var marq = this.getObject(this.marquee_name);
	var temp = this.getObject(this.template_name);
	// alert(this.marquee_name);
	// alert(marq);
	with(marq){
		style.height = this.marquee_height;
		if(this.marquee_direct == 'up' || this.marquee_direct == 'down'){
			style.overflowX="visible";	//滾動條不可見.
			style.overflowY="hidden";
		}
		else{
			style.overflowX="hidden";
			style.overflowY="visible"; 
		}
		var myStopValue = this.marquee_hidden+ "= 1";
		var myStartValue = this.marquee_hidden + "=0";
		onmouseover = new Function(myStopValue);	//滑鼠經過，停止滾動
		onmouseout = new Function(myStartValue);
	}
}
function scrollInit(){	//初始化滾動內容
	var marq = this.getObject(this.marquee_name);
	var temp = this.getObject(this.template_name);
	//多次複製原內容到"templayer"，直到"templayer"的高度大於內容區高度：
	var Nheight=this.marquee_height/4;
	var Nwidth=this.marquee_width/4;
	if(this.marquee_direct == "up" || this.marquee_direct == "down")
		marq.innerHTML += "<span style='height:"+Nheight+"px;'></span>";
	else
		marq.innerHTML += "<span style='width:"+Nwidth+"px;'></span>"; 
	temp.innerHTML = marq.innerHTML;
	if(this.marquee_direct == "up" || this.marquee_direct == "down"){
		marq.noWrap = false;
		temp.noWrap = false;
		var marq_height = 10;
		//var marq_height = temp.offsetHeight;
		while(marq_height < this.marquee_height){
			marq_height += marq_height;
			temp.innerHTML += marq.innerHTML;
		}
	}else{
		marq.noWrap = true;	//這句表內容區不自動換行
		temp.noWrap = true;
		var marq_width = 10;
		//var marq_width = temp.offsetWidth;
		while(marq_width < this.marquee_width){
			marq_width += marq_width;
			temp.innerHTML += marq.innerHTML;
		}
	}
	//把"templayer"的內容的"兩倍"複製回原內容區：
	marq.innerHTML = temp.innerHTML + temp.innerHTML;
	temp.innerHTML = "";

	var param_up = "this.scrollUp('"+this.marquee_name+"','"+this.template_name+"',"+this.marquee_hidden+","+this.marquee_height+")";
	var param_down = "this.scrollDown('"+this.marquee_name+"','"+this.template_name+"','"+this.marquee_hidden+"',"+this.marquee_height+")";
	var param_left = "this.scrollLeft('"+this.marquee_name+"','"+this.template_name+"',"+this.marquee_hidden+","+this.marquee_width+")";
	var param_right = "this.scrollRight('"+this.marquee_name+"','"+this.template_name+"','"+this.marquee_hidden+"',"+this.marquee_width+")";
	//設置連續超時，調用"scrollUp()"函數驅動滾動條：
	if(this.marquee_direct == "up")
		setInterval(param_up,this.marquee_speed);
	if(this.marquee_direct == "left")
		setInterval(param_left,this.marquee_speed);
	if(this.marquee_direct == "right")
		setInterval(param_right,this.marquee_speed);
	if(this.marquee_direct == "down")
		setInterval(param_down,this.marquee_speed);
}
function scrollUp(p_marquee,p_template,p_stop,p_height){
	var stop_value = eval(p_stop);
	//如果變數"stopscroll"為真，則停止滾動
	if(stop_value == 1) return;
	var marq = this.getObject(p_marquee);
	var temp = this.getObject(p_template);
	//記錄滾動前的滾動條位置
	this.preTop = marq.scrollTop;
	//滾動條向下移動一個圖元
	marq.scrollTop += 1;
	//如果滾動條不動了，則向上滾動到和當前畫面一樣的位置
	//當然不僅如此，同樣還要向下滾動一個圖元(+1)： 
	if(this.preTop == marq.scrollTop){
		marq.scrollTop = temp.offsetHeight- p_height + 1;
		marq.scrollTop += 1;
	}
}
function scrollRight(p_marquee,p_template,p_stop,p_width){
	var stop_value = eval(p_stop);
	if(stop_value == 1) return;
	var marq = this.getObject(p_marquee);
	var temp = this.getObject(p_template);
	this.preLeft = marq.scrollLeft;
	marq.scrollLeft -= 1;
	if(this.preLeft == marq.scrollLeft){
		if(!this.moveLimit){
			marq.scrollLeft = temp.offsetWidth*2;
			this.moveLimit = marq.scrollLeft;
		}
		marq.scrollLeft = this.moveLimit - temp.offsetWidth + p_width;
		marq.scrollLeft -= 1;
	}
}
function scrollDown(p_marquee,p_template,p_stop,p_height){
	var stop_value = eval(p_stop);
	if(stop_value == 1) return;
	var marq = this.getObject(p_marquee);
	var temp = this.getObject(p_template);
	this.preTop = marq.scrollTop;
	marq.scrollTop -= 1;
	if(this.preTop == marq.scrollTop){
		if(!this.moveLimit){
			marq.scrollTop = temp.offsetHeight*2;
			this.moveLimit = marq.scrollTop;
		}
		marq.scrollTop = this.moveLimit - temp.offsetHeight + p_height;
		marq.scrollTop -= 1;
	}
}
function scrollLeft(p_marquee,p_template,p_stop,p_width){
	var stop_value = eval(p_stop);
	if(stop_value == 1) return;
	var marq = this.getObject(p_marquee);
	var temp = this.getObject(p_template);
	marq.noWrap = true;
	this.preLeft = marq.scrollLeft;
	marq.scrollLeft = marq.scrollLeft + 1;
	if(this.preLeft == marq.scrollLeft){
		marq.scrollLeft = temp.offsetWidth - p_width + 1;
		marq.scrollLeft += 1;
	}
}
function begin_frame(p_id,p_pct, p_pix,p_height,p_speed) {
   marq_frame = new Scroll(marqueWidth,p_height,p_speed,'up');
	if(p_pct>0) 
		var marqueWidth = screen.width * p_pct * 0.82 / 100 ;
	if(p_pix>0)
		var marqueWidth = p_pix;
	marq_frame.setMarObject(p_id);
	marq_frame.setTempObject(p_id+"_temp");
	marq_frame.setHiddenObject(p_id+"_stop");
	marq_frame.beginScroll();
	marq_frame.scrollInit();
}

function MM_preloadImages() {
	var d=document; 
	if(d.images){ 
		if(!d.MM_p) d.MM_p=new Array();
		var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
		if (a[i].indexOf("#")!=0){ 
			d.MM_p[j]=new Image; 
			d.MM_p[j++].src=a[i];
		}
	}
} 
function MM_swapImgRestore() { 
	var i,x,a=document.MM_sr;
	for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) 
		x.src=x.oSrc;
} 
function MM_findObj(n, d) {
	var p,i,x;
	if(!d) d=document; 
	if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
	}
	if(!(x=d[n])&&d.all) x=d.all[n]; 
	for (i=0;!x&&i<d.forms.length;i++) 
		x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++)
		x=MM_findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n); 
	return x;
} 
function MM_swapImage() {
	var i,j=0,x,a=MM_swapImage.arguments; 
	document.MM_sr=new Array; 
	for(i=0;i<(a.length-2);i+=3)
		if ((x=MM_findObj(a[i]))!=null){
			document.MM_sr[j++]=x;
			if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];
		}
}
