
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//
// 第五部分：用于页面显示的一些函数 default.aspx 中引用
// 主要是 图表
//
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

GraphClass = function() 
{
	this.Panel = "BetScroll";		// 容器名
	this.CtrlName = "GrafTable";	// 控件名
	this.WidthDefault = 482;
	this.HeightDefault = 260;
	this.WidthNarrow = 466;

	this.loaded = false;
	this.dataTrend = "";
	this.dataFreq = "";
	this.dataSum = "";
	this.dataHot = "";
	
	this.vmin = 999999;
	this.vmax = 0;
	this.dump = new Array();
}

GraphClass.prototype = 
{
	// 新增图表
	Add : function(title,html)
	{
		var obj = document.getElementsByName(this.Panel);
		var str = obj[0].innerHTML + "<span id=\"" + this.CtrlName + "\" name=\"" + 
			      this.CtrlName + "\" style=\"width:" + this.WidthDefault + "px;\" tips=\"" + 
				  title + "\">Loading...</span>";
		obj[0].innerHTML = str;
	},

	// 生成图表的内容
	HTML : function(title)
	{
		if(title == "缩水") return this.BallOptions(3,0);
		if(title == "缩21") return this.BallOptions(2,0); // 前二
		if(title == "缩22") return this.BallOptions(2,1); // 后二
		if(title == "复合") return this.BallComplex();
		if(title == "文件") return this.BallFile();
		if(title == "和值") return this.BallSum("ImgSum3");
		if(title == "和21") return this.BallSum("ImgSum21");
		if(title == "和22") return this.BallSum("ImgSum22");
		if(title == "频率") return this.BallFreq("FreqRed", "LostRed");
		if(title == "走势") return this.BallTrend("DigitalTrend");
		if(title == "博士") return this.BallHot();
		if(title == "开奖") return this.BallOpens();
		return "";
	},

	// 给指定名称的图表建立 HTML 元素
	Assign : function(title, str)
	{
		var obj = document.getElementsByName(this.CtrlName);
		for(var i=0; i<obj.length; i++) {
			if(obj[i].tips == title) {
				obj[i].innerHTML = str;
				break;
			}
		}
	},
	
	// 重新生成图表（与开奖数据相关）
	Reload : function()
	{
		Assign( "和值", this.BallSum("ImgSum3") );
		Assign( "和21", this.BallSum("ImgSum21") );
		Assign( "和22", this.BallSum("ImgSum22") );
		Assign( "频率", this.BallFreq("FreqRed", "LostRed") );
		Assign( "走势", this.BallTrend("DigitalTrend") );
		Assign( "博士", this.BallHot() );
		Assign( "开奖", this.BallOpens() );
	},
	
	// 隐藏指定图表或隐藏全部图表(title="")
	// 因为右侧 开奖 也是 CtrlName 的控件，所以隐藏时需要减去 1
	Hide : function(title)
	{
		var obj = document.getElementsByName(this.CtrlName);
		for(var i=0; i<obj.length - 1; i++) {
			if(obj[i].tips == title || title == "") {
				obj[i].style.display = "none";
			}
		}
	},
	
	// 显示指定图表
	Show : function(title)
	{
		var obj = document.getElementsByName(this.CtrlName);
		for(var i=0; i<obj.length; i++) {
			if(obj[i].tips == title) {
				if(obj[i].innerHTML == "Loading...") {
					obj[i].innerHTML = this.HTML(title);
				}
				obj[i].style.display = "inline";
				break;
			}
		}
	},
	
	// 按 lst 显示部分图表
	ShowList : function(lst)
	{
		var iAry = lst.split(",");
		for(var i=0; i<iAry.length; i++)
		{
			// 如果出现等号，则进行表格覆盖；请参阅 Command.OnSelect方法
			// 这样做的目的是 不会引起 计算(Execute)的控件重复。
			// 尤其是 缩水选项
			if(iAry[i].indexOf("=")>=0) {
				var fAry = iAry[i].split("=");
				this.Assign( fAry[0], this.HTML(fAry[1]) );
				this.Show(fAry[0]);
			}
			else {
				this.Show(iAry[i]);
			}
		}
	},
	
	//-------------------------------------------------------------------------
	// 一次性或读 ajax 数据；分别使用；
	Load : function()
	{
		var bData = "";
		bData = AjaxPost("/Include/Agent.Loader.aspx?id=" + game.id);
		var bArray = bData.split("|");

		var i=0;
		this.dataFreq = "";
		for(var j=0; j<2; j++, i++) this.dataFreq += bArray[i] + "|";

		this.dataSum = "";
		var scount = (game.result-1)*2 + (game.result-2)*2 + 2;
		for(var j=0; j<scount; j++, i++) this.dataSum += bArray[i] + "|";

		this.dataHot = "";

		this.dataTrend = "";
		while(i<bArray.length-1) {
			if(i>bArray.length-20) {
				this.dataTrend += bArray[i] + "|";
			}
			i++;
		}
	},

	// 计算图表的合适的高度比例
	BallScale : function (values,height)
	{
		var rsl = 1.0;
		var varray = values.split(",");
		this.vmin = 999999;
		this.vmax = 0;
		var v;
		for(var i=0; i<varray.length; i++) {
			if(varray[i]!="") {
				v = parseInteger(varray[i]);
				if(this.vmin > v) this.vmin = v;
				if(this.vmax < v) this.vmax = v;
			}
		}
		if( (this.vmax-this.vmin)<=0) return height/this.vmax;
		rsl = height / (this.vmax-this.vmin);
		return rsl;
	},

	// 显示和值图
	BallSum : function (idstr)
	{
		var rsl = "";
		if(this.dump[0]!=null) {
			eval(this.dump[0]);
		}
		else {
			var scr = AjaxXML("/Include/Load.aspx?js=d3_BallSum","");
			this.dump[0] = scr;
			eval(scr);
		}
		return rsl;
	},

	//-------------------------------------------------------------------------

	// 设置走势图显示列(TD)
	BallTrendShow : function (ilen, ipos)
	{
		if(this.dump[1]!=null) {
			eval(this.dump[1]);
		}
		else {
			var scr = AjaxXML("/Include/Load.aspx?js=d3_BallTrendShow","");
			this.dump[1] = scr;
			eval(scr);
		}
	},

	// 显示走势图的一列
	BallTrendIssue : function()
	{
		var rsl = "";
		if(this.dump[2]!=null) {
			eval(this.dump[2]);
		}
		else {
			var scr = AjaxXML("/Include/Load.aspx?js=d3_BallTrendIssue","");
			this.dump[2] = scr;
			eval(scr);
		}
		return rsl;
	},

	// 显示走势图的一列
	BallTrendOpen : function()
	{
		var rsl = "";
		if(this.dump[3]!=null) {
			eval(this.dump[3]);
		}
		else {
			var scr = AjaxXML("/Include/Load.aspx?js=d3_BallTrendOpen","");
			this.dump[3] = scr;
			eval(scr);
		}
		return rsl;
	},

	// 显示走势图的一列
	BallTrendColumn : function(ctrlName,ipos)
	{
		var rsl = "";
		if(this.dump[4]!=null) {
			eval(this.dump[4]);
		}
		else {
			var scr = AjaxXML("/Include/Load.aspx?js=d3_BallTrendColumn","");
			this.dump[4] = scr;
			eval(scr);
		}
		return rsl;
	},

	// 数据统计
	BallStatics : function(istart,ilen)
	{
		var rsl = "";
		if(this.dump[5]!=null) {
			eval(this.dump[5]);
		}
		else {
			var scr = AjaxXML("/Include/Load.aspx?js=d3_BallStatics","");
			this.dump[5] = scr;
			eval(scr);
		}
		return rsl;
	},


	// 数字覆盖
	BallFill : function(istart,ilen)
	{
		var rsl = "";
		if(this.dump[6]!=null) {
			eval(this.dump[6]);
		}
		else {
			var scr = AjaxXML("/Include/Load.aspx?js=d3_BallFill","");
			this.dump[6] = scr;
			eval(scr);
		}
		return rsl;
	},

	// 显示走势图
	BallTrend : function (idstr)
	{
		var rsl = "";
		rsl += "<table cellpadding=0 cellspacing=0 border=0 width=\"620\" style=\"font-size:12px;line-height:16px;border-collapse:collapse;text-align:center;\">";
		rsl += "<tr>";
		rsl += "<td width=70 valign=top>" + this.BallTrendIssue() + "</td>";
		rsl += "<td width=70 valign=top id=zsTD name=zsTD style=\"display:none;\">" + this.BallTrendOpen() + "</td>";
		for(var i=0; i<game.result; i++) {
			rsl += "<td width=144 valign=top id=zsTD name=zsTD style=\"display:inline;\">" + this.BallTrendColumn(idstr,i) + "</td>";
		}
		rsl += "<td width=164 valign=top id=zsTD name=zsTD style=\"display:inline;\">" + this.BallStatics(0,3) + "</td>";
		rsl += "<td width=164 valign=top id=zsTD name=zsTD style=\"display:none;\">" + this.BallStatics(0,2) + "</td>";
		rsl += "<td width=164 valign=top id=zsTD name=zsTD style=\"display:none;\">" + this.BallStatics(1,2) + "</td>";
		rsl += "<td width=144 valign=top id=zsTD name=zsTD style=\"display:inline;\">" + this.BallFill(0,3) + "</td>";
		rsl += "<td width=144 valign=top id=zsTD name=zsTD style=\"display:none;\">" + this.BallFill(0,2) + "</td>";
		rsl += "<td width=144 valign=top id=zsTD name=zsTD style=\"display:none;\">" + this.BallFill(1,2) + "</td>";
		rsl += "</table>";
		return rsl;
	},

	//-------------------------------------------------------------------------

	// 显示最新开奖号码
	BallOpens : function ()
	{
		var rsl = "";
		rsl += "<table cellspacing=\"0\" cellpadding=\"0\" width=\"308\" class=\"tb1g\" border=\"1\" bordercolor=\"#FFFFFF\" style=\"text-align:center;\">";
		rsl += "<tr class=\"tr1g\">";
		rsl += "<td>期号</td>";
		rsl += "<td>中奖号码</td>";
		rsl += "<td>和值</td><td>奇偶</td><td>大小</td><td>质合</td>";
		rsl += "</tr>";
		var j=1;
		var bArray = this.dataTrend.split("|");
		for(var i=bArray.length-2; i>0; i--) {
			var lbuf = bArray[i].split(",");
			rsl += "<tr class=\"tr1g\">";
			rsl += "<td><a href=\"" + game.path + "zjgg/" + lbuf[0] + ".html\" target=_blank>" + lbuf[0] + "</a></td>";
			rsl += "<td>" + ResultDivision(lbuf[1]) + "</td>";
			j = 2;
			while(j<(lbuf.length-1)) {
				rsl += "<td>" + lbuf[j] + "</td>";
				j++;
			}
			rsl += "</tr>";
		}
		rsl += "<tr class=\"tr1g\">";
		rsl += "<td>期号</td>";
		rsl += "<td>中奖号码</td>";
		rsl += "<td>和值</td><td>奇偶</td><td>大小</td><td>质合</td>";
		rsl += "</tr>";
		rsl += "</table>";
		return rsl;
	},

	// 显示123个号码的冷热统计
	BallHot : function ()
	{
		var rsl = AjaxPost("/Include/Agent.Master.aspx?id=" + game.id);
		return rsl;
	},

	// 显示号球频率与遗漏
	BallFreq : function (id1, id2)   
	{   
		var rsl = "";
		var bArray = this.dataFreq.split("|");
		var freqs = bArray[0];
		var freqa = freqs.split(",");
		var losts = bArray[1];
		var losta = losts.split(",");
		var lostb = losts.split(",");

		for(var i=0; i<game.result; i++) {
			for(var j=0; j<10; j++) {
				if( parseInteger(losta[i*10+j])<parseInteger(lostb[j])) {
					lostb[j] = losta[i*10+j];
				}
			}
		}

		var trName = "百位,十位,个位,胆号,拖号,数字";
		var trNames = trName.split(",");

		rsl += "<table width=\"100%\" height=\"50\" cellpadding=0 cellspacing=0 style=\"width:100%;padding-top:2px;padding-bottom:2px;text-align:center;color:#957E4C;border:solid 1px #FFDF8B;\">";
		rsl += "<tr><td valign=top>";
		for(var j=0; j<game.result + 3; j++) {
			rsl += "<table id=tbFreq name=tbFreq width=\"100%\" height=\"50\" class=xz cellpadding=0 cellspacing=0>";
			rsl += "<tr>"; 
			rsl += "<td>" + trNames[j] + "</td>";
			for(var i=0; i<10; i++) {
				rsl += "<td align=center><img src=\"/images/balls/nr" + i + ".gif\" style=\"cursor:hand;filter:alpha(opacity=" + opNormal + ");\" id=\"DigitalBall\" name=\"DigitalBall\" onclick=\"BallClick(this," + j + "," + i + ");\"></td>";
			}
			if(j<3) {
				rsl += "<td align=center><img src=\"/images/agent/n-big.gif\" width=17 height=17 id=CmdSpecial style=\"cursor:hand;filter:alpha(opacity=" + opSelect + ");\" onclick=\"BallSpecial(" + j + ",'56789'); \"></td>";
				rsl += "<td align=center><img src=\"/images/agent/n-even.gif\" width=17 height=17 id=CmdSpecial style=\"cursor:hand;filter:alpha(opacity=" + opSelect + ");\" onclick=\"BallSpecial(" + j + ",'13579'); \"></td>";
				rsl += "<td align=center><img src=\"/images/agent/n-prime.gif\" width=17 height=17 id=CmdSpecial style=\"cursor:hand;filter:alpha(opacity=" + opSelect + ");\" onclick=\"BallSpecial(" + j + ",'12357'); \"></td>";
				rsl += "<td align=center><img src=\"/images/agent/n-all.gif\" width=17 height=17 id=CmdSpecial style=\"cursor:hand;filter:alpha(opacity=" + opSelect + ");\" onclick=\"BallSpecial(" + j + ",'0123456789')\"></td>";
			}
			else {
				if(j==3)
					rsl += "<td align=left colspan=4 width=100>０＜胆号≤９</td>";
				if(j==4)
					rsl += "<td align=left colspan=4 width=100>３≤(拖号＋胆号)</td>";
				if(j==5)
					rsl += "<td align=left colspan=4 width=100>不定位选号</td>";
			}

			rsl += "</tr>"; 
			rsl += "<tr>"; 
			rsl += "<td>遗漏</td>";
			for(var i=0; i<10; i++) {
				if(j<(game.result)) {
					rsl += "<td align=center>" + losta[j*10+i] + "</td>";
				}
				else {
					rsl += "<td align=center>" + lostb[i] + "</td>";
				}
			}
			if(j<3) {
				rsl += "<td align=center><img src=\"/images/agent/n-small.gif\" width=17 height=17 id=CmdSpecial style=\"cursor:hand;filter:alpha(opacity=" + opSelect + ");\" onclick=\"BallSpecial(" + j + ",'01234'); \"></td>";
				rsl += "<td align=center><img src=\"/images/agent/n-odd.gif\" width=17 height=17 id=CmdSpecial style=\"cursor:hand;filter:alpha(opacity=" + opSelect + ");\" onclick=\"BallSpecial(" + j + ",'02468'); \"></td>";
				rsl += "<td align=center><img src=\"/images/agent/n-combine.gif\" width=17 height=17 id=CmdSpecial style=\"cursor:hand;filter:alpha(opacity=" + opSelect + ");\" onclick=\"BallSpecial(" + j + ",'04689'); \"></td>";
				rsl += "<td align=center><img src=\"/images/agent/n-clear.gif\" width=17 height=17 id=CmdSpecial style=\"cursor:hand;filter:alpha(opacity=" + opSelect + ");\" onclick=\"BallSpecial(" + j + ",'')\"></td>";
			}
			else {
				rsl += "<td align=left colspan=4 width=100></td>";
			}
			rsl += "</tr>"; 
			rsl += "</table>"; 
		}

		rsl += "</td>";
		rsl += "</tr>";
		rsl += "</table>";
		return rsl;
	},

	// 某个位置的选项
	BallOptionItem : function (ctrlname,cstatus)
	{
		var rsl = "";
		if(this.dump[8]!=null) {
			eval(this.dump[8]);
		}
		else {
			var scr = AjaxXML("/Include/Load.aspx?js=d3_BallOptionItem","");
			this.dump[8] = scr;
			eval(scr);
		}
		return rsl;
	},

	// 缩水选项
	BallOptions : function (count, ipos)   
	{   
		var rsl = "";
		if(this.dump[9]!=null) {
			eval(this.dump[9]);
		}
		else {
			var scr = AjaxXML("/Include/Load.aspx?js=d3_BallOptions","");
			this.dump[9] = scr;
			eval(scr);
		}
		return rsl;
	},

	// 文件投注显示信息
	BallFile : function ()
	{
		var rsl = "";
		rsl += "<table width=\"482\" cellpadding=0 cellspacing=0 class=xz style=\"border:solid 0px #FFDF8B;\" tips=\"文件\">";
		rsl += "<tr>";
		rsl += "<td>";
		rsl += "<span id=HelpGroup0 style=\"padding:8px;padding-left:0px;display:inline-block;line-height:15px;\">";
		rsl += "· 请从文件中拷贝一些" + game.name + "的号码，并粘贴到下面的输入区；<br>";
		rsl += "· 然后点击添加按钮，由系统进行检查并增加到可投注号码集合中。<br>";
		rsl += "· 文件请按每行一注号码的形式保存。比如第一行是 <font class=\"f9\"><span id=\"CodeExample\"></span></font><br>";
		rsl += "· 应为半角数字，用逗号或空格分开。";
		rsl += "</span>";
		rsl += "<textarea style=\"width:398px;height:75px;\" id=\"codetxt\" name=\"codetxt\" class=xz></textarea>";
		rsl += "</td>";
		rsl += "</tr>";
		rsl += "</table>";
		return rsl;
	},

	// 复合缩水选项
	BallComplex : function ()
	{
		var rsl = "";
		if(this.dump[11]!=null) {
			eval(this.dump[11]);
		}
		else {
			var scr = AjaxXML("/Include/Load.aspx?js=d3_BallComplex","");
			this.dump[11] = scr;
			eval(scr);
		}
		return rsl;
	},

	// 训练营统计
	BallTrain : function()
	{
		var rsl = AjaxPost("/Include/Agent.Count.aspx?id=" + game.id);
		var bArray = rsl.split("|");

		var freqs = bArray[0];
		var freqa = freqs.split(",");
		var losts = bArray[1];
		var losta = losts.split(",");
		
		var imgwidth = 9;
		var fontsize = 8;

		var vscale;
		var rsl = "";

		vscale = this.BallScale(freqs, 100); 
		rsl += "<table width=\"312\" height=\"195\" cellpadding=0 cellspacing=0 style=\"padding-top:2px;padding-bottom:2px;text-align:center;color:#726D43;border:solid 1px #FFDF8B;\">";
		rsl += "<tr height=14><td colspan=28 align=left>&nbsp;和值关注统计[移动鼠标到图片可查看结果]</td></tr>";
		rsl += "<tr height=150>"; 
		for(var i=0; i<28; i++) {
			rsl += "<td valign=bottom align=center width=" + imgwidth + ">";
			rsl += "<img src=\"/images/r1.jpg\" width=" + imgwidth + " height=" + (parseInteger(vscale*parseInteger(freqa[i]))+4) + " alt=\"和值 " + i + " 被 " + freqa[i] + " 人次关注\">";
			rsl += "</td>";   
		}
		rsl += "<td> </td></tr>"; 
		rsl += "</table>";

		return rsl;
	},

    BallOddsSingle : function(rsl,idx)
    {
        var str = "";
        var vs = new Array();
		var bArray = rsl.split("|");
		var j=0;
        for(var i=0; i<(bArray.length-1)/2; i++) {
            var vArray = bArray[i*2].split(",");
            vs[j] = vArray[idx];
            j++;
        }
        for(var i=j-50; i<j; i++) {
            str += vs[i] + ",";
        }
        return str;
    },
    
    BallOddsTime : function(rsl)
    {
        var vs = new Array();
		var bArray = rsl.split("|");
		var j=0;
        for(var i=0; i<(bArray.length-1)/2; i++) {
            vs[j] = bArray[i*2+1];
            j++;
        }
        var str = "";
        for(var i=j-50; i<j; i++) {
            str += vs[i] + ",";
        }
        return str;
    },
    
	// 训练营统计
	BallOdds : function()
	{
		/*
	    if(game.result!=3) return "";
	    
		var imgwidth = 9;
		var fontsize = 8;
		var vscale;
		var height;
		
		var odata = AjaxPost("/Include/Agent.Odds.aspx?id=" + game.id + "&time=" + TimeFormat2(dNext));
		
		if(odata=="") return;
        var rtime = this.BallOddsTime(odata);
        var vtime = rtime.split(",");
        
		var rsl = "";
		if(this.dump[12]!=null) {
			eval(this.dump[12]);
		}
		else {
			var scr = AjaxXML("/Include/Load.aspx?js=d3_BallOdds","");
			this.dump[12] = scr;
			eval(scr);
		}
		return rsl;
		*/
		return "";
	},
	
	OddsShow : function(obj,idx)
	{
	    var grf = document.all.BallOddsGraf;
	    for(var i=0; i<grf.length; i++) {
	        grf[i].style.display = (i==idx) ? "inline" : "none";
	    }
	    document.all.BallOddsNumber.innerHTML = I2(idx+1);
	    
	    var tds = document.all.oddsTD;
	    for(var i=0; i<tds.length; i++) {
	        tds[i].style.color = "#000000";
	    }
	    if(obj!=null) {
	        obj.style.color = "#FF0000";
	    }
	    else {
	        tds[idx].style.color = "#FF0000";
	    }
	}

}

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

