//一些必要变量放在页面内
var maxNum = 0;//排名第一的总点击数，用来决定标尺的单位
var cacheObject = {};//将数据整理成需要使用的格式并存储在该对象中
var cacheSort = [];//排序数组
var scrollParam = null;//滚动的参数
var ruler = null;
//整理数据
for(var i=0;i<dataArray.length;i++){
	if(dataArray[i].rank == "max"){
		maxNum = dataArray[i].lastweek + dataArray[i].rise;
	}else{
		cacheObject["rank"+ dataArray[i].rank] = {rank:dataArray[i].rank,lastweek:dataArray[i].lastweek,rise:dataArray[i].rise,change:dataArray[i].change,sum:parseInt(dataArray[i].lastweek)+parseInt(dataArray[i].rise),currLen:0,stopLen1:0,stopLen2:0,stop1Done:false,stop2Done:false,counter:0,intervalID:null};
		cacheSort.push(dataArray[i].rank);
	}
}
for(var it in cacheObject){
	//alert(it + ":" + cacheObject[it]);
}
cacheSort.sort(function(a,b){return a-b;});//按数字升序排序
//工具函数
function $obj(id){
	return document.getElementById(id);
}
function $tag(tag){
	return document.getElementsByTagName(tag);
}
//设置标尺的函数，n:一共有多少个标尺格，m:排名第一的点击数,id:标尺区域的id
function setRuler(n,m,id,size){
	var ul = $obj(id);
	var c = ul.getElementsByTagName("li");
	var mm = Math.floor(m /(0.9)) / 10000;//假设让最大的数字保持在90%的一个状态,单位万
	var mmn = (Math.floor(mm / n)) ? Math.floor(mm / n) : 1;//算出每个单元格的长度
	mmn += (mmn % size) ? (size - mmn % size) : 0;//将单位换算成5的倍数 fix by ws
	//while(mmn % 5 != 0){mmn++;}//如果单元格的长度不是5的倍数，即不是10 15 20 25 这类数字则加到能整除为止
	mm = mmn * n;//得到最终的最大标尺数
	if(mm * 10000 < m){//如果标尺按单元长度乘以n的总长度小于第一名的总点击数
		mmn +=10;//单位增加10
		mm = mmn * n;//算出新的最大标尺数
	}
	for(var i=0;i<c.length;i++){
		var r = i * mmn;
		var d = 100;//底数，如果是100的倍数，则加红
		if(r > 1000){d = 1000;}//如果标尺已经超过1000，则要改成1000的倍数
		if(r % d == 0){
			c[i].className = "redcolor";
		}
		c[i].innerHTML = r;
	}
	return {perCell:mmn,maxCell:mm};
}
function computeParameter(r,t,s){//r,setRuler函数返回的对象,t,总计播放时间,s,标尺的实际最大尺寸,
	var perPx = Math.floor((r.maxCell * 10000)/s);//算出每个像素所表示的实际数字 最大的标尺*10000 换算后除以标尺的像素数，就得出每个像素的实际数字
	var delay = (Math.floor(t/s) > 0) ? Math.floor(t/s) : 1;//算出每多少毫秒移动一个像素
	return {perPx:perPx,delay:delay};
}
function playScroll(rank,step){
	var eleblue = cacheObject[rank].eleblue;
	var elebluetip = cacheObject[rank].elebluetip;
	var elegreen = cacheObject[rank].elegreen;
	var elegreentip = cacheObject[rank].elegreentip;
	var elecount = cacheObject[rank].elecount;
	
	var btc = elebluetip.getElementsByTagName("span");
	var gtc = elegreentip.getElementsByTagName("span");
	var cc = elecount.childNodes;
	if(cacheObject[rank].stopLen2 % step != 0) step += cacheObject[rank].stopLen2 % step;
	if(cacheObject[rank].currLen == cacheObject[rank].stopLen1){
		//已经显示完上周，将标志符设为true，开始显示本周增长，将currLen归零
		cacheObject[rank].stop1Done = true;
		cacheObject[rank].currLen = 0;
		btc[0].innerHTML = cacheObject[rank].lastweek;
		cc[1].innerHTML = cacheObject[rank].lastweek;
	}
	if(cacheObject[rank].stop1Done && (cacheObject[rank].currLen == cacheObject[rank].stopLen2 || !cacheObject[rank].stopLen2)){
		//如果上周已经显示完，并且本周增长也显示完，则将本周增长标识符设为true
		cacheObject[rank].stop2Done = true;
		gtc[0].innerHTML = cacheObject[rank].lastweek+cacheObject[rank].rise;
		cc[1].innerHTML = cacheObject[rank].lastweek+cacheObject[rank].rise;
	}
	//如果本周增长完成，则清楚定时器
	if(cacheObject[rank].stop2Done) {
		clearInterval(cacheObject[rank].intervalID);
		//$obj("debug").innerHTML +=rank + " has clear<br />";
	}
	if(!cacheObject[rank].stop1Done && !cacheObject[rank].currLen){
		eleblue.style.display = "block";
		elebluetip.style.display = "block";
		elebluetip.style.left = eleblue.offsetWidth + "px";
		btc[0].innerHTML = "0";
	}else if(!cacheObject[rank].stop2Done && !cacheObject[rank].currLen){
		elegreen.style.display = "block";
		elegreentip.style.display = "block";
		elegreentip.style.left = eleblue.offsetWidth + elegreen.offsetWidth + "px";
		gtc[0].innerHTML = btc[0].innerHTML;
	}
	if(!cacheObject[rank].stop1Done){
		cacheObject[rank].currLen = ((cacheObject[rank].currLen + step) > cacheObject[rank].stopLen1) ? cacheObject[rank].stopLen1 : (cacheObject[rank].currLen + step);//增加一个像素
		//计算当前的点击数，每次移动一个像素都会 按没像素的单位点击增加，如果超出实际点击，则等于实际点击数
		cacheObject[rank].counter = ((cacheObject[rank].counter + scrollParam.perPx * step) > cacheObject[rank].lastweek) ? cacheObject[rank].lastweek : (cacheObject[rank].counter + scrollParam.perPx * step);
		btc[0].innerHTML = cacheObject[rank].counter;
		cc[1].innerHTML = cacheObject[rank].counter;
		eleblue.style.width = cacheObject[rank].currLen + "px";
		elebluetip.style.left = eleblue.offsetWidth - elebluetip.offsetWidth + "px";
	}else if(!cacheObject[rank].stop2Done){
		cacheObject[rank].currLen = ((cacheObject[rank].currLen + step) > cacheObject[rank].stopLen2) ? cacheObject[rank].stopLen2 : (cacheObject[rank].currLen + step);//增加一个像素
		//计算当前的点击数，每次移动一个像素都会 按没像素的单位点击增加，如果超出实际点击，则等于实际点击数
		cacheObject[rank].counter = ((cacheObject[rank].counter + scrollParam.perPx * step) > cacheObject[rank].sum) ? cacheObject[rank].sum : (cacheObject[rank].counter + scrollParam.perPx * step);
		gtc[0].innerHTML = cacheObject[rank].counter;
		cc[1].innerHTML = cacheObject[rank].counter;
		elegreen.style.width = cacheObject[rank].currLen + "px";
		if(elegreentip.offsetWidth >= cacheObject[rank].stopLen2){
			gtc[1].className="jian2_1";
			elegreentip.style.left = eleblue.offsetWidth + elegreen.offsetWidth + "px";
		}else{
			gtc[1].className="jian2";
			elegreentip.style.left = eleblue.offsetWidth + elegreen.offsetWidth - elegreentip.offsetWidth + "px";
		}
	}
	
	
}
function scrollInit(){//构建
	for(var i=0;i<cacheSort.length;i++){
		var left = $obj("scroll_"+(i+1)+"_left");
		var right = $obj("scroll_"+(i+1)+"_right");
		var count = $obj("scroll_"+(i+1)+"_count");
		var cc = count.childNodes;
		var rc = right.getElementsByTagName("div");
		var rank = "rank" + cacheSort[i];

		//alert(left.innerHTML);
		cacheObject[rank].stopLen1 = Math.floor(cacheObject[rank].lastweek / scrollParam.perPx);//算出到上周一共有多少像素
		//alert(rank+"stopLen2:"+(cacheObject[rank].rise / scrollParam.perPx));
		cacheObject[rank].stopLen2 = (cacheObject[rank].rise) ? ((Math.floor(cacheObject[rank].rise / scrollParam.perPx) <= 0) ? 1 :Math.floor(cacheObject[rank].rise / scrollParam.perPx)) : 0;//算出本周增长的像素数
		cacheObject[rank].eleblue = rc[0];
		cacheObject[rank].elegreen = rc[1];
		cacheObject[rank].elebluetip = rc[2];
		cacheObject[rank].elegreentip = rc[3];
		cacheObject[rank].elecount = count;
		//cacheObject[rank].intervalID = setInterval("playScroll('"+rank+"',"+rc[0]+","+rc[2]+","+rc[1]+","+rc[3]+","+count+")",scrollParam.delay);
		cacheObject[rank].intervalID = setInterval("playScroll('"+rank+"',6)",scrollParam.delay);
		//left.innerHTML = '<table width="100%" height="76" cellpadding="0" cellspacing="0" border="0"><tr><td valign="middle">'+cacheSort[i]+'</td></tr></table>';

		if(cacheObject[rank].change.indexOf("up") != -1){
			cc[2].className = "up";
			cc[2].innerHTML = '<img src="images/allow.gif" width="21" height="19" alt="" align="absmiddle" /> '+cacheObject[rank].change.substr(2)+'位';
		}else if(cacheObject[rank].change.indexOf("down") != -1){
			cc[2].className = "down";
			cc[2].innerHTML = '<img src="images/allow1.gif" width="21" height="19" alt="" align="absmiddle" /> '+cacheObject[rank].change.substr(4)+'位';
		}

	}
}