var ggm2num111 ={"单关":[1]};

function gameNameList(){//获取联赛名字
	var oTbl = document.getElementById('tbl');
	var flag="";
	var nameHtml = "";
	for(var i=2;i<oTbl.rows.length;i++){
		flag +=oTbl.rows[i].cells[1].innerHTML+"," ;
		var spfbox = document.getElementsByName("spfCheckbox"+parseInt(oTbl.rows[i].cells[0].innerText,10))
		document.getElementById("allspfCheckbox"+parseInt(oTbl.rows[i].cells[0].innerText,10)).checked = "";
		for(var j=0;j<spfbox.length;j++){
			spfbox[j].checked="";
		}
	}
	if(flag != ""){
		flag = flag.substring(0, flag.length - 1);//去掉最后一个","
		//去除重复的联赛
		var nameList = flag.split(",");
		nameList = clearRepeat(nameList);
		for(var i=0;i<nameList.length;i++){
			nameHtml+='<input type="checkbox" checked="true" name="term" value="'+nameList[i]+'" onClick="selectTerm(this.value,this.checked)"/>'+nameList[i];
		}
	}
	document.getElementById("leagueBox").innerHTML = "<p>"+nameHtml+"</p>"+'<span><input type="button" value="全选" onClick="selectTerm(this.value,true)"/><input type="button" value="清除"  onClick="selectTerm(this.value,true)"/><input type="button" value="关闭" onClick="closeLeagueBox()"/></span>';
	colorGameName(nameList);
}



function colorGameName(nameList){
//改变各种联赛的颜色
	var a = {};
	var b = 1;
	for(var i =0;i<nameList.length;i++){
		var c = nameList[i]
		a[nameList[i]] ="bg"+b;
		b++;
		if(b>7) b=1;
	}
	var oTbl = document.getElementById('tbl');
	for(var i=2;i<oTbl.rows.length;i++){
		oTbl.rows[i].cells[1].className =a[oTbl.rows[i].cells[1].innerHTML];
	}

}
function closeLeagueBox(){//关闭 赛事选择层
	document.getElementById("leagueBox").style.display="none";
}


function countNone(){//统计隐藏的比赛
	var oTbl = document.getElementById('tbl');
	var flag=0;
	for(var i=0;i<oTbl.rows.length;i++){
		if(oTbl.rows[i].style.display == "none"){
			flag++;
		}
	}
	document.getElementById("countNum").innerHTML = flag;
}


function hideAllGame(){//隐藏所有游戏
	var oTbl = document.getElementById('tbl');
	for(var i=2;i<oTbl.rows.length;i++){
		//oTbl.rows[i].childNodes[0].childNodes[0].checked="";
		oTbl.rows[i].style.display = "none";
	}
	 countNone();
}

function checkedFalseInit(){//初始化所有投注用的check为false
	var oTbl = document.getElementById('tbl');
	for(var i=2;i<oTbl.rows.length;i++){
		 var inputList = oTbl.rows[i].getElementsByTagName("input");
		 for(var j=1;j<inputList.length;j++){
		 	inputList[j].checked = false ;
		 }
	}
}

function delSelectRow(row,index){//删除选择的行
	index = parseInt(index,10);
	var tb = document.getElementById("selectList");
	var spfbox = document.getElementsByName("spfCheckbox"+index);
	document.getElementById("allspfCheckbox"+index).checked="";
	for(var i=0;i<spfbox.length;i++){
		spfbox[i].checked="";
	}
	clearChild(tb,row);
	var gg = document.getElementById("ggList");
		while(gg.firstChild){
			gg.removeChild(gg.firstChild);
		}			
	var danList = document.getElementsByName("dan");
	for(var i=0;i<danList.length;i++){
		danList[i].checked = "";
	}
	html = voteGgHtml();
	insertRows2 (gg, html, true);
	showMoney();
}

function delAll(){//清空选择框
	var gg = document.getElementById("selectList");
		while(gg.firstChild){
	      var index = parseInt(gg.firstChild.cells[0].innerText,10);
		  for(var i=0;i<document.getElementsByName("spfCheckbox"+index).length;i++){
			document.getElementsByName("spfCheckbox"+index)[i].checked = "";
		  }
			document.getElementById("allspfCheckbox"+index).checked = "";
			gg.removeChild(gg.firstChild);
		}
	var gl = document.getElementById("ggList");
	while(gl.firstChild){
		gl.removeChild(gl.firstChild);
	}
	document.getElementById("mulit").value = "1";	
	showMoney();
}

function selectGuoGuan(){//选择过关方式
	var gg = document.getElementById("ggList");
	while(gg.firstChild){
		gg.removeChild(gg.firstChild);
	}
	var html = voteGgHtml();
	insertRows2 (gg, html, true);
	for(var i=0;i<document.getElementsByName("dan").length;i++){
		document.getElementsByName("dan")[i].checked = false;	
	}
	showMoney();
}

function selectJIchuanJI(sValue){//选择几传几
	var b = sValue.indexOf("1");
	var c = sValue.length-1;
	var d = 0;
	if(b!=-1 && b==c){
		document.getElementById("isCutRepeat").value=true;
	}else{
		document.getElementById("isCutRepeat").value=false;
	}
	for(var i=0;i<document.getElementsByName("dan").length;i++){
		if(document.getElementsByName("dan")[i].checked == true){
			d++;
		}
	}
	if(d>0 && !onAddDanBefore()){
		for(var i=0;i<document.getElementsByName("dan").length;i++){
			document.getElementsByName("dan")[i].checked = false;
		}
	}	
	showMoney();
}

function  count(){//计算注数
	var baseCount = 0;
	var ggmode,gg,voteNb,b;
	var ar =[];
	var dan=0;//胆码
	var gg =document.getElementById("ggList");
	var radioList = gg.getElementsByTagName("input");
	var voteNbList = document.getElementsByName("ggType");
	var rowsLength = document.getElementById("selectList").rows.length;

	if(rowsLength == 0) return 0;

	for(var i=0;i<radioList.length;i++){//选择几串几
		if(radioList[i].checked) ggmode = radioList[i].value;
	}
	for(var i=0;i<voteNbList.length;i++){//选择过关类型
		if(voteNbList[i].checked) voteNb = voteNbList[i].value;
	}
	if (ggmode!="") {
		var t=[], d=[];
		for(var i=0;i<rowsLength;i++){
			var o = document.getElementById("selectList").rows[i];
			callEach(voteNb, function(){	        
				(document.getElementsByName("dan")[i].checked?d:t).push(selectListRow.arr(o));
			});
		}
		t = getNum(t);  
		d = getNum(d);
		c = [];
		var flag=0;
		var radioList = document.getElementsByName("ggtype_radio");
		for(var i=0;i<radioList.length;i++){
			if(radioList[i].checked){
				flag = i+1;
			}
		}
		if(voteNb == 2 && flag>1){
			flag = flag-1;
		}
		for(var i=0;i<flag;i++){
			c.push(rowsLength);
			rowsLength--;
		}
		var isCutRepeat = document.getElementById("isCutRepeat").value;

		if(voteNb ==3 ){
			var checkBosList= document.getElementsByName("ggtype_radio")
			for(var i = 0;i<checkBosList.length;i++){
				if(checkBosList[i].checked){
					ar.push(i+1);
				}
			}		
		}else{
			ar = ggm2num111[ggmode];
			if(typeof(ar) != "object" ){//大于15场时的处理&& voteNb==1
				ar=[rowsLength];
			}
		}

		if(ggm2num111[ggmode]== 1){
			b = true;
		}else{
			b = isCutRepeat || voteNb !=2;
		}
		b = false;
		if(voteNb ==3 ){
			baseCount = d.length==0?esunjsC(t,ar):calCount(t,d,ar);
		}else{
			baseCount = b ? (d.length==0?esunjsC(t,ar):calCount_re(t,d,ar)) : calCount_re(t,d,ar);
		}	
	}
	return baseCount;
}

function showMulit(){//计算倍数
	var mulit = document.getElementById("mulit").value;
	if(mulit=='' || mulit==0){
		document.getElementById("mulit").value = 1;
	}
	showMoney();
}

function showMoney(){//显示注数 倍数 金额
	var zhu = count();
	var multi = document.getElementById("mulit").value;
	document.getElementById("showCount").innerHTML = zhu;
	document.getElementById("showMulit").innerHTML = multi;
	document.getElementById("showMoney").innerHTML = multi*zhu*2;
}

///////////////////////我的辅助方法////////////////////////////////////
function paixvBtoS(list,splitCode){
//冒泡排序法 (从大到小)
	var temp;
	var listString="";
	var shuzu = list.split(splitCode);
	for(var i=0;i<shuzu.length;i++){
		for(var j=0;j<shuzu.length-1;j++){
			if(parseInt(shuzu[j+1],10) > parseInt(shuzu[j],10)){
				temp = shuzu[j+1];
				shuzu[j+1] = shuzu[j];
				shuzu[j] = temp;
			}
		}
	}
	for(var i=0;i<shuzu.length;i++){
		listString += shuzu[i]+splitCode;
	}
	return listString.substring(0,listString.length-1);//去掉最后一个符号
}

function paixvStoB(list,splitCode){
//冒泡排序法 (从小到大)
	var temp;
	var listString="";
	var shuzu = list.split(splitCode);
	for(var i=0;i<shuzu.length;i++){
		for(var j=0;j<shuzu.length-1;j++){
			if(parseInt(shuzu[j+1],10) < parseInt(shuzu[j],10)){
				temp = shuzu[j+1];
				shuzu[j+1] = shuzu[j];
				shuzu[j] = temp;
			}
		}
	}
	for(var i=0;i<shuzu.length;i++){
		listString += shuzu[i]+splitCode;
	}
	return listString.substring(0,listString.length-1);//去掉最后一个符号
}

var selectListRow = {};
selectListRow.dan = function (row){
	return row.getElementsByName("dan")[0].checked;
}
selectListRow.arr = function (row){
	return row.getElementsByTagName("input").length - 2 ;
}

function clearRepeat(a){
//去除数组中的重复
	var c=[],b={};         
    for(var i=0;i<a.length;i++){
       if( ! b[a[i]]){
          b[a[i]]=1;
          c.push(a[i])
       }
    }
    return c;
}

///////////////////////500万上的辅助方法////////////////////////////////////
//插入一行
function insertRows2 (tb, html, isclear){
    var o = document.createElement("div");
    o.innerHTML = "<table><tbody>"+html+"</tbody></table>";
    var ol = o.childNodes[0].tBodies[0].rows;
    while(ol.length>0) {
		tb.appendChild(ol[0]);
	}
}

//历遍数组set
function each(a, cb, r){
	if(r) for(var i=0,t,l=a.length;i<l;i++)(t=cb(a[i],i))!=undefined&&r.push(t);
	else for(var i=a.length-1;i>=0;i--)(a[i]=cb(a[i],i))==undefined&&a.splice(i,1);
	return r||a;
}

//清除子节点
function clearChild(td,node){
	td.removeChild(node);
}

//设置串
function setX(){
	var type2nm = {"单关":{n:1,m:1}};
	var num2ggm = {"1":"单关"};
	var a = [["单关"]], n, m, s, t;
	for(var i=1;i<15;i++){
		a[i] = [], n=i+1, m=0, t=[];
		num2ggm[n] = n + "串1";
    	for(var j=i+1; j>(i<6?0:i); j--){
        	m += fwmathC(n, j);
        	s = n + "串" + m;
        	a[i].push(s);
        	ggm2num111[s] = t.concat(j);
        	t = t.concat(j);
        	type2nm[s] = {n:n,m:m};
    	}
	}
	return a;
}

//获取相同元素的个数
function getNum(a){
	var r = [], o = {};
	for (var i=0,l=a.length; i<l; i++){
		o[a[i]] ? o[a[i]]++ : o[a[i]]=1;
	}
	for (var j in o) r.push([j,o[j]]);
	return r;
}

//组合个数
function fwmathC (n,m){
	var n1=1, n2=1;
	for (var i=n,j=1; j<=m; n1*=i--,n2*=j++);
	return n1/n2;
}

//数组相加
function arrayAdd(a){
	var n = 0;
	for (var i=0,l=a.length;i<l;i++) n+=a[i];
	return n;
}

//获取索引号
function arrayGetIdx(a, v){
	for (var i=0,l=a.length;i<l&&a[i]!=v;i++);
	return i<l ? i : -1;
}

//数组相乘
function arrayMultiple(a){
	var n = 1;
	for (var i=0,l=a.length;i<l;i++) n*=a[i];
	return n;
}

//计算串
function esunjsC(a, num) {
	if (typeof(a[0])=="number") a= getNum(a);
	if (typeof(num)=="number") num=[num];
    var r = 0;
    var n = a.length;
    var ff = function (n,i){ return Math.pow(a[i][0],n) * fwmathC(a[i][1],n) };
    (function f(t,i){
        if(i==n){
            if (arrayGetIdx(num, arrayAdd(t))>-1) r += arrayMultiple(each(t,ff,[]));
            return;
        }
        for(var j=0; j<=a[i][1]; j++) f(t.concat(j), i+1);
    })([], 0);
    return r;
}


function setDan(obj){//选择胆
	if (obj.checked && !onAddDanBefore()) return (obj.checked=false);
	showMoney();
}

//关于胆码的验证
function onAddDanBefore(){
	var voteNb,ggmode;
	var gg =document.getElementById("ggList");
	var voteNbList = document.getElementsByName("ggType");
	var radioList = gg.getElementsByTagName("input");
	var rowsLength = document.getElementById("selectList").rows.length;
	for(var i=0;i<voteNbList.length;i++){//选择过关类型
		if(voteNbList[i].checked) voteNb = voteNbList[i].value;
	}
	for(var i=radioList.length-1;i>=0;i--){//选择几串几
		if(radioList[i].checked) ggmode = radioList[i].value;
	}
	var danCount =0;
	for(var i=0;i<document.getElementsByName("dan").length;i++){
		if(document.getElementsByName("dan")[i].checked){
			danCount++;
		}
	}
	if (voteNb==1 && danCount>0){
		return !!alert('胆码只适用"组合过关"和"自由过关"');
	}else if(ggm2num111[ggmode]==1){
		return !!alert("单关不能设置胆码!");
	}else if(ggmode == rowsLength+"串1" && danCount >0){
		return !!alert(parseInt(ggmode,10)+"串1"+"不能设置胆码!");
	}else if (ggmode!=""&& danCount >= parseInt(ggmode,10)){
		return !!alert("您选择的过关方式是："+ggmode+"，胆码个数不能超过"+(parseInt(ggmode,10)-1)+"个!");
	}else if (danCount+1==danCount){
		return !!alert("不能把所有场次设为胆码!");
	}
	return true;
}

//历遍数组get
function callEach(a, cb){
	for (var i=0,l=a.length;i<l;i++) cb(a[i], i);
}


//计算注数(去重复有胆)
function calCount (t, d, ar) {
	var dn = 0, mp = 1;
	for (var i=0,l=d.length; i<l; i++) {
		dn += d[i][1];
		mp *= Math.pow(d[i][0], d[i][1]);
	}
	var n = 0;
	callEach(ar, function(m){
		n += m>dn ? esunjsC(t,m-dn)*mp : esunjsC(d,m);
	});
	return n;
}

//计算注数(不去重复)
function calCount_re(t, d, ar) {
	var m = ar[0], da = [], j;
	for (j=0; j<d.length; j++) da[j] = d[j][1];
	for (j=0; j<t.length; j++) d.push(t[j]);
    var tn = t.length;
    var dn = d.length;
	var ff = function(a){
        var r = [], n = 1;
        for(var i=0; i<dn; i++){
        	if (a[i]==0) continue;
            r.push([d[i][0], a[i]]);
            n *= fwmathC(d[i][1], a[i]);
		}
		return n * esunjsC(r, ar);
	};
    var r = 0;
    (function f(a,i){
        if(i==tn) { if(arrayAdd(a)==m)r+=ff(a); return };
        for (var k=0; k<=t[i][1]; k++) f(a.concat(k), i+1);
    })(da, 0);
    return r;
}
