var sz = {};

//初始化
sz.init = function(){
	xh.init();
	xh.mergeEvent(sz);
	sz.arg = {
		"5-28" : { base:2,	mp:2 },											//排列3组三复式
		"5-29" : { base:3 },												//排列3组六复式
		"5-136" : { base:3,	mp:6 },											//排列3直选组合复式
		"5-137" : { name:"胆拖", base:3, mp:6, min:1, max:2, dt:4 },			//排列3直选组合胆拖
		"5-141" : { name:"胆拖", base:2, mp:2, min:1, max:1, dt:3 },			//排列3组3胆拖
		"5-142" : { name:"胆拖", base:3, min:1, max:2, dt:4 },				//排列3组6胆拖
		"5-30" : { name:"和值", sum:"zhx", port:[0,27] },					//排列3直选和值
		"5-31" : { name:"和值", sum:"zx", port:[1,26] },						//排列3组选和值
		"5-138" : { name:"跨度", sum:"zhx" },								//排列3直选跨度
		"5-139" : { name:"跨度", sum:"z3" },									//排列3组3跨度
		"5-140" : { name:"跨度", sum:"z6" },									//排列3组6跨度
		"7-26" : { name:"和值", sum:"zhx" },									//福彩3D直选和值
		"7-45" : { base:2,	mp:2 },											//福彩3D组三复式
		"7-46" : { base:3 },												//福彩3D组六复式
		"7-50" : { name:"和值", sum:"z3" },									//福彩3D组3和值
		"7-48" : { name:"和值", sum:"z6" },									//福彩3D组6和值
		"8-1" : { base:5, num:22, bit:2},									//22选5复式
		"11-1" : { base:7, num:30, bit:2 },									//七乐彩复式
		"20-1" : { base:7, num:29, bit:2 },									//29选7复式
		"26-1" : { base:7, num:36, bit:2 },									//36选7复式
		"28-100" : { base:2, num:12, bit:2 }								//大乐透12选2复式
	}
	fw.object.merge(sz, sz.getArg(trade.lotid, trade.playid));
	sz.number = sz.num ? fw.each(fw.array.createNum(1,sz.num),function(n){return fw.conv.formatNo(n,2)}) : fw.array.createNum(0,9);
	var aa = xh.getBall("numberList");
	var num = (sz.sum||!sz.dt&&sz.base) ? aa.length : 10;
	if (sz.sum) sz.sum = sz.rtCount(sz.sum, sz.name);
	var f = function(s){return s.match(/\d+/)[0]};
	var o = sz.dt ? [{ol:aa.splice(num,num),dt:1}, {ol:aa,dt:0}] : fw.each(fw.array.divide(aa,num),function(a){return {ol:a}});
	xh.setNumberItem(o, f);
	sz.rowsName = ['百万位', '十万位', "万位","千位","百位","十位","个位"].slice(-xh.nb.length);
	sz.jx = fw.getId("jixuan1Btn") && fw.getId("jixuan5Btn");
	var imgs = fw.dom.getObjImg("numberList");
	for (var i=0,l=imgs.length; i<l; i++) sz.addRule(imgs[i], Math.floor(i/6), i%6);
	xh.redraw();
}
window.init = sz.init;

//获取配置
sz.getArg = function (lotid, playid){
	var o = { name:"复式", mp:1, sum:false, base:false, min:false, max:false, dt:false, port:false };
	return fw.object.merge(o, sz.arg[lotid+"-"+playid]);
}

//获取号码字符串
sz.onNumberToString = function (nb, txt){
	nb = nb || xh.nb;
	var o = sz;
	var f = function (a,t){return fw.array.sortNumber(a).join(t||"")};
	var s;
	if (sz.dt){
		return "[D:" + f(nb[1],",") + "][T:" + f(nb[0],",") + "] 胆拖";
	}else if (o.sum||o.base){
		s = f(nb[0],",");
	}else {
		s = fw.each(nb,function(a){return f(a)},[]).join("|");
	}
	var name = !sz.sum&&xh.onGetTempCount(nb)==1 ? "单式" : o.name;
	return s + " " + name;
}

//获取号码
sz.onStringToNumber = function (str){
	var re = (sz.bit||sz.sum) ? /\d+/g : /\d/g;
	return fw.each(str.replace(/\[(.+?)\]\[(.+?)\]/, "$2|$1").split(/\|/), function(s){ return s.match(re) });
}

//检查号码是否可以组合成注
sz.onNumberGroup = function (){
	var a = fw.array2.getCols(xh.nb);
	var s = fw.each(a,function(n){return n==0?0:1},[]).join("");
	if (!+s){
		return !!alert("请您起码选择一注号码后再添加!");
	}else if (sz.port&&xh.nb[0].length==1&&(xh.nb[0][0]==sz.port[0]||xh.nb[0][0]==sz.port[1])){
		return !!alert("不能只单选"+sz.port[0]+"或只单选"+sz.port[1]+"进行投注，请您修改您的投注号码！");
	}else if (sz.dt&&a[1]<sz.min){
		return !!alert("至少要选择"+sz.min+"个胆码!");
	}else if (sz.dt&&(a[0]+a[1])<sz.dt || !sz.dt&&sz.base&&a[0]<sz.base){
		return !!alert("至少要选择"+(sz.dt||sz.base)+"个号码!");
	}else if ((s=s.search(/0/))>-1){
		return !!alert('"'+sz.rowsName[s]+'"为空，每位至少选择1个结果！');
	}
	return true;
}

//判断号码是否可选择
sz.onSelectBefore = function (o){
	if (!sz.dt)return true;

	if (o.rowIdx==1&&xh.nb[1].length==sz.max){
		return !!alert("最多只能选择"+sz.max+"个胆码!");
	}
	o.dt.selected && xh.clearIt(o.dt);
	return true;
}

//获取临时注数
sz.onGetTempCount = function (nb){
	nb = nb || xh.nb;
	var o = sz;
	if (o.sum) return fw.array.add(fw.each(nb[0],function(s){return o.sum[+s]},[]));
	var a = fw.array2.getCols(nb);
	return o.base ? fw.math.C(a[0],o.base-(o.dt?a[1]:0))*o.mp : fw.array.multiple(a);
}

//获取号码对应的注数
sz.rtCount = function(tp, name){
	return ({
		"z3和值" : {1:1,2:2,4:3,3:1,6:3,8:5,5:3,10:5,12:4,7:4,14:5,16:5,9:4,18:4,11:5,13:5,15:4,17:5,19:5,20:4,21:3,22:3,23:3,24:1,25:2,26:1},
		"z6和值" : {3:1,4:1,5:2,6:3,7:4,8:5,9:7,10:8,11:9,12:10,13:10,14:10,15:10,16:9,17:8,18:7,19:5,20:4,21:3,22:2,23:1,24:1},
		"zx和值" : {1:1,2:2,3:2,4:4,5:5,6:6,7:8,8:10,9:11,10:13,11:14,12:14,13:15,14:15,15:14,16:14,17:13,18:11,19:10,20:8,21:6,22:5,23:4,24:2,25:2,26:1},
		"zhx和值" : {0:1,1:3,2:6,3:10,4:15,5:21,6:28,7:36,8:45,9:55,10:63,11:69,12:73,13:75,14:75,15:73,16:69,17:63,18:55,19:45,20:36,21:28,22:21,23:15,24:10,25:6,26:3,27:1},
		"z3跨度" : {1:18,2:16,3:14,4:12,5:10,6:8,7:6,8:4,9:2},
		"z6跨度" : {2:8,3:14,4:18,5:20,6:20,7:18,8:14,9:8},
		"zhx跨度" : {0:10,1:54,2:96,3:126,4:144,5:150,6:144,7:126,8:96,9:54}
	})[tp+name];
}

//机选
sz.onJixuan = function (n){
	var r = sz.base ? 1 : xh.nb.length;
	var c =	sz.base || 1;
	return fw.math.each(n, function(i){
		return fw.math.each(r, function(){return fw.array.random(sz.number, c)});
	});
}

//定胆机选
sz.onDdjixuan = function (n){
	var l = xh.nb.length;
	var s = fw.array2.getCols(xh.nb).join("");
	var n1 = s.replace(/0/g,"").length;
	var n2 = s.replace(/[01]/g,"").length;
	if(+s==0){
		return !!alert("请至少选择1个胆码!");
	}else if(sz.base){
		l = xh.nb[0].length;
		if (l>=sz.base) return !!alert("最多只能选择"+(sz.base-1)+"个胆码！");
		var arr = [];
		var a = xh.getAllNumber();
		var tuo = fw.array.supplement(a[0], xh.nb[0]);
		for (var i=0;i<n;i++){
			arr[i] = [fw.array.random(tuo,sz.base-l).concat(xh.nb[0])];
		}
		return arr;
	}else if(n1==l&&n2>0){
		return !!alert("胆码总数不能超过"+(n-1)+"个，且每行最多只能选择1个!");
	}else if(n1==l){
		return !!alert("胆码总数不能超过"+(n-1)+"个!");
	}else if (n2>0){
		var a=[]; fw.callEach(s.split(""), function(s,r){s>1&&a.push(r+1)});
		return !!alert("第"+a.join("、")+"行胆码数量超出，每行最多只能选择1个胆码!");
	}

	var arr = [];
	var a = xh.getNumber(0);
	for (var i=0;i<n;i++){
		var t = [];
		for (var r=0; r<l; r++){
			 t[r] = [ xh.nb[r][0] || fw.array.random(a,1) ];
		}
		arr[i] = t;
	}
	return arr;
}

//号码拆分数据
sz.onNumberSplit = function (nb){
	var r = [];
	if (nb.length>1){
		fw.callEach(fw.math.CR(nb[0],sz.base-nb[1].length), function(a){
			r.push(nb[1].concat(a).sort());
		});
	}else r = fw.math.CR(nb[0], sz.base);
	if (sz.mp>1){
		var ab = function(a,b){return [[a,a,b],[a,b,b]]};
		var abc = function(a,b,c){return [[a,b,c],[a,c,b],[b,a,c],[b,c,a],[c,a,b],[c,b,a]]};
		var f = sz.mp==2 ? function(a){return ab(a[0],a[1])} : function(a){return abc(a[0],a[1],a[2])};
		var t = [];
		fw.callEach(r, function (a){
			t = t.concat(f(a));
		});
		r = t;
	}
	return r;
}

//有规律的选号
sz.addRule = function (obj, rowIdx, colIdx){
	obj.style.cursor = "pointer";
	obj.onclick = function(){
		sz.selectRule(rowIdx, colIdx);
	}
}
sz.selectRule = function (rowIdx, idx){
	var arr = xh.number[rowIdx];
	xh.clearNumber(arr);
	for (var i=0,l=arr.length;i<l;i++){
		(idx==0 || idx==1&&i>4 || idx==2&&i<5 || idx==3&&i%2 || idx==4&&i%2==0) && xh.selectIt(arr[i]);
	}
	xh.updateTemp();
}
