﻿var defaultTimer=20;
var defaultSpeed=0.01;

var statXmlDoc;
var statNumShowObj;
function loadStatXML(statXmlUrl,num1objname,num2objname,num3objname,datename){
	statNumShowObj=[num1objname,num2objname,num3objname,datename];
	if(statXmlUrl=="TITLE"){
		showStatNumByTitle();
		return;
	}
	var __$Stat_pvs;
	try{
		__$Stat_pvs=_$Stat_pvs;
	}catch(e){}
	if(statXmlUrl=="JS"&&__$Stat_pvs){
		showStatNumByJs();
		return;
	}else{
		statXmlUrl=null;
	}
	if(!statXmlUrl){
		statXmlUrl="http://www.vodone.com/xml/bus/number.xml";
	}
	statXmlUrl=statXmlUrl+"?"+Math.random();
	if(/WebKit/i.test(navigator.userAgent)){
		try{
			_$_objByNum(num1objname).innerHTML="[暂不支持safari]";
			_$_objByNum(num2objname).innerHTML="[暂不支持safari]";
			_$_objByNum(num3objname).innerHTML="[暂不支持safari]";
		}catch(e){
			alert("Error!");
		}
		return;
	}
	if (window.ActiveXObject){
		statXmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		statXmlDoc.async=false;
		statXmlDoc.load(statXmlUrl);
		showStatNum();
	}else if (document.implementation && document.implementation.createDocument){
		statXmlDoc=document.implementation.createDocument("","",null);
		statXmlDoc.load(statXmlUrl);
		statXmlDoc.onload=showStatNum;
	}else{
		alert('Your browser cannot load xml!');
	}
}
function showStatNum(){
	var stats_pvs=statXmlDoc.getElementsByTagName("pvs")[0].firstChild.nodeValue;
	var numpvs=new changToNum(statNumShowObj[0],new Number(stats_pvs));
	numpvs.play();
	
	var stats_play=statXmlDoc.getElementsByTagName("play")[0].firstChild.nodeValue;
	var numplay=new changToNum(statNumShowObj[1],new Number(stats_play));
	numplay.play();
	
	var stats_site=statXmlDoc.getElementsByTagName("site")[0].firstChild.nodeValue;
	var numsite=new changToNum(statNumShowObj[2],new Number(stats_site));
	numsite.play();
	
	var dateNum=statXmlDoc.getElementsByTagName("statNum")[0].getAttribute("date");
	try{
		_$_objByNum(statNumShowObj[3]).innerHTML=dateNum;
	}catch(e){}
}
function showStatNumByTitle(){
	var numpvs=new changToNum(statNumShowObj[0],new Number(_$_objByNum(statNumShowObj[0]).title));
	numpvs.play();
	
	var numplay=new changToNum(statNumShowObj[1],new Number(_$_objByNum(statNumShowObj[1]).title));
	numplay.play();
	
	var numsite=new changToNum(statNumShowObj[2],new Number(_$_objByNum(statNumShowObj[2]).title));
	numsite.play();
	
	try{
		_$_objByNum(statNumShowObj[3]).innerHTML=_$_objByNum(statNumShowObj[3]).title;
	}catch(e){}
}
function showStatNumByJs(){
	var numpvs=new changToNum(statNumShowObj[0],_$Stat_pvs,100000000,4);
	numpvs.play();
	
	var numplay=new changToNum(statNumShowObj[1],_$Stat_play,10000,2);
	numplay.play();
	
	var numsite=new changToNum(statNumShowObj[2],_$Stat_site,10000,2);
	numsite.play();
	
	try{
		_$_objByNum(statNumShowObj[3]).innerHTML=_$Stat_date;
	}catch(e){}
}
function _$_objByNum(name){
	return document.getElementById(name);
}
function fixNum(nums,reduce,fixs){
	var fixsStr="";
	var returnStr;
	var intsNum;
	var fixsNum;
	nums=Number(nums/reduce).toFixed(fixs);
	if(nums.indexOf(".")==-1){
		intsNum=nums;
		fixsNum="";
	}else{
		intsNum=nums.substr(0,nums.indexOf("."));
		fixsNum=nums.substr(nums.indexOf("."));
	}
	var newStr=new String(intsNum);
	var j=newStr.length;
	for(var i=newStr.length-3;i>-3;i-=3){
		if(returnStr){
			returnStr=newStr.substring(i,j).concat(fixsStr,returnStr);
		}else{
			returnStr=newStr.substring(i,j);
		}
		j=i;
	}
	return returnStr+fixsNum;
}
function randRange(mins, maxs) {
    var randomNum = Math.floor(Math.random() * (maxs - mins + 1)) + mins;
    return randomNum;
}
function changToNum(objname,endnums,reduce,fixs,speed,startnum,numspeed){
	try{
		if(!objname||!_$_objByNum(objname)) return;
	}catch(e){}
	if(isNaN(endnums)){
		return;
	}
	this.numobj=_$_objByNum(objname);
	this.maxNum=endnums;
	this.changTime=speed?speed:defaultTimer;
	this.startNum=startnum?startnum:1;
	this.changeSpeed=numspeed?numspeed:defaultSpeed;
	this.numTimeOutUnit=0;
	this.reduce=reduce;
	this.fixs=fixs;
}
changToNum.prototype.play=function(){
	var nowNum=new Number(this.startNum);
	if(nowNum<=0) nowNum=1;
	var zNum=nowNum+randRange(nowNum,nowNum*this.changTime*this.changeSpeed);
	var cNum=Math.floor(this.maxNum-zNum);
	if(cNum<=1){
		this.numobj.innerHTML=fixNum(this.maxNum,this.reduce,this.fixs);
		this.startNum=this.maxNum;
		this.numobj.title=this.maxNum;
		return;
	}else{
		this.numobj.innerHTML=fixNum(zNum,this.reduce,this.fixs);
		this.startNum=zNum;
		this.numobj.title=zNum;
	}
	var thisObj=this;
	clearTimeout(this.numTimeOutUnit);
	this.numTimeOutUnit=setTimeout(function(){thisObj.play()},this.changTime);
}
function __LoadScript(url){
	document.write('<script type="text/javascript" src="' + url + '"><\/script>' );
}
__LoadScript("http://union3.xenw.com/js/vodoneStatNum.js?"+Math.random());
