Betzc = {};

Betzc.base = "";

// 定义String的startsWith函数
String.prototype.startsWith = function(str) {
	return (this.match('^' + str) == str);
}

// 定义String的endsWith函数
String.prototype.endsWith = function(str) {
	return (this.match(str + '$') == str);
}

/**
 * 是否JSON字符串
 * 
 * @param {String}
 *            str 字符串
 */
function isJsonString(str) {
	return str.startsWith('{') && str.endsWith('}');
}

/**
 * 跨浏览器的innerHTML方法<br/> HTML代码中包含的script和style有效
 * 
 * @param el
 *            {Element} Element对象
 * @param htmlCode
 *            {String} HTML代码
 */
function $setInnerHTML(el, htmlCode) {
    var ua = navigator.userAgent.toLowerCase();
    if (ua.indexOf('msie') >= 0 && ua.indexOf('opera') < 0) {
        htmlCode = '<div style="display:none">for IE</div>' + htmlCode;
        htmlCode = htmlCode.replace(/<script([^>]*)>/gi,'<script$1 defer>');
        el.innerHTML = '';
        el.innerHTML = htmlCode;
        el.removeChild(el.firstChild);
    } else {
        var el_next = el.nextSibling;
        var el_parent = el.parentNode;
        el_parent.removeChild(el);
        el.innerHTML = htmlCode;
        if (el_next) {
            el_parent.insertBefore(el, el_next);
        } else {
            el_parent.appendChild(el);
        }
    } 
};


/**
 * 获取表单中被选中的radio标签的值
 * 
 * @param {Object}
 *            submitForm 表单对象
 * @param {String}
 *            propertyName radio标签name属性
 */
function getRadioVal(submitForm, propertyName) {
	var radios = submitForm.elements[propertyName];
	if (radios) {
		if (radios.length) {
			for ( var i = 0; i < radios.length; i++) {
				if (radios[i].checked == true) {
					return radios[i].value;
				}
			}
		} else if (radios.checked == true) {
			return radios.value;
		}
	}
	return null;
}

/**
 * 获取光标在文本框中的位置
 * 
 * @param {Object}
 *            obj 文本框对象
 */
function getCursorPos(obj) {
	if (typeof obj.selectionStart == "number") {
		return obj.selectionStart;
	} else {
		obj.focus();
		var currentRange = document.selection.createRange();
		var workRange = currentRange.duplicate();
		obj.select();
		var allRange = document.selection.createRange();
		var pos = 0;
		while (workRange.compareEndPoints("StartToStart", allRange) > 0) {
			workRange.moveStart("character", -1);
			pos++;
		}
		currentRange.select();
		return pos;
	}
}

/**
 * 文本框验证：只能为数字
 * 
 * @param {Object}
 *            obj 文本框对象
 * @param {Object}
 *            evt window事件对象
 * @param {Number}
 *            type [可选]表示允许的小数位，null表示只能为数字
 */
function number_check(obj, evt, type) {
	var keyCode = evt.keyCode || evt.which;
	if (keyCode == 8 || keyCode == 46 || keyCode == 37 || keyCode == 39 || keyCode == 9 || keyCode == 229) {
		// evt.returnValue = true;
		return;
	}

	var selection;
	if (typeof obj.selectionStart == "number") {
		selection = obj.value.substring(obj.selectionStart, obj.selectionEnd);
	} else {
		selection = document.selection.createRange().text
	}
	if (selection == obj.value) {
		if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105)) {
			// evt.returnValue = true;
		} else {
			if (evt.preventDefault) {
				evt.preventDefault();
			} else {
				evt.returnValue = false;
			}
		}
	} else {
		if (type >= 1 && (keyCode == 110 || keyCode == 190)) {
			if (obj.value.indexOf('.') == -1) {

			} else {
				if (evt.preventDefault) {
					evt.preventDefault();
				} else {
					evt.returnValue = false;
				}
			}
		} else {
			var p = obj.value.indexOf('.');
			var cp = getCursorPos(obj);
			if (p != -1 || (obj.value != 0 && cp > 0)) {
				if ((p == -1 || cp <= p || obj.value.length - 1 - p < type)
						&& ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105))) {
					// evt.returnValue = true;
				} else {
					if (evt.preventDefault) {
						evt.preventDefault();
					} else {
						evt.returnValue = false;
					}
				}
			} else {
				if ((keyCode >= 49 && keyCode <= 57) || (keyCode >= 97 && keyCode <= 105)) {
					if (obj.value == 0 && getCursorPos(obj) > 0) {
						obj.value = "";
					}
					// evt.returnValue = true;
				} else {
					if (evt.preventDefault) {
						evt.preventDefault();
					} else {
						evt.returnValue = false;
					}
				}
			}
		}

	}
}

/**
 * 
 */
function openWin(text, title) {
	/*
	 * //注释部分请不要删除 var win = window.open("", "win"); // a window object
	 * win.document.open("text/html", "replace"); if (typeof title == 'string') {
	 * win.document.write('<head><title>' + title + '</title></head>'); }
	 * var strArr = text.split("\r\n"); for ( var i = 0; i < strArr.length; i++) {
	 * win.document.write(strArr[i]); win.document.write("<br/>"); } //
	 * win.document.write("<div style\"font-size:12px\">"+text+"</div>");
	 * win.document.close();
	 */
	$floater({
		height:400,
		width:620,
		src: Betzc.base+'/html/sp/filterschemedesc.html?noCache='+new Date().getTime(),
		title:'盈彩网<span style="color:#794E4F;font-size:12px;">&nbsp;&nbsp;过滤后方案内容详情</span>',
		cover:true,
		beforeClose:function(){
		}
	});
}

/**
 * 跨浏览器“复制到粘贴板”
 * 
 * @param {String}
 *            txt 要复制的内容
 */
function copyToClipboard(txt) {
	if (window.clipboardData) {
		window.clipboardData.clearData();
		window.clipboardData.setData("Text", txt);
		alert("复制成功，您可以马上粘贴给好友了！");
	} else if (navigator.userAgent.indexOf("Opera") != -1) {
		window.location = txt;
	} else if (window.netscape) {
		try {
			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
		} catch (e) {
			alert("如果您正在使用FireFox！\n请在浏览器地址栏输入'about:config'并回车\n然后将'signed.applets.codebase_principal_support'设置为'true'");
		}
		var clip = Components.classes['@mozilla.org/widget/clipboard;1']
				.createInstance(Components.interfaces.nsIClipboard);
		if (!clip)
			return;
		var trans = Components.classes['@mozilla.org/widget/transferable;1']
				.createInstance(Components.interfaces.nsITransferable);
		if (!trans)
			return;
		trans.addDataFlavor('text/unicode');
		var str = new Object();
		var len = new Object();
		var str = Components.classes["@mozilla.org/supports-string;1"]
				.createInstance(Components.interfaces.nsISupportsString);
		var copytext = txt;
		str.data = copytext;
		trans.setTransferData("text/unicode", str, copytext.length * 2);
		var clipid = Components.interfaces.nsIClipboard;
		if (!clip)
			return false;
		clip.setData(trans, null, clipid.kGlobalClipboard);
		alert("复制成功，您可以马上粘贴给好友了！");
	}
}

/**
 * 禁止粘贴(非IE浏览器)
 */
function fncKeyStop(evt) {
	if (!window.event) {
		var keycode = evt.keyCode;
		var key = String.fromCharCode(keycode).toLowerCase();
		if (evt.ctrlKey && key == "v") {
			evt.preventDefault();
			evt.stopPropagation();
		}
	}
}

/**
 * 生成一个min到max的随机整数
 * 
 * @parma min {Number} 生成的随机整数的最小值
 * @parma max {Number} 生成的随机整数的最大值
 */
function getRndNum(min, max) {
	return Math.round((max - min) * Math.random() + min);
}

/**
 * 供数组排序用，降序
 * 
 * @param {Number}
 *            x
 * @param {Number}
 *            y
 */
function desc(x, y) {
	x = parseInt(x, 10);
	y = parseInt(y, 10);
	if (x >= y)
		return -1;
	if (x < y)
		return 1;
}

/**
 * 供数组排序用，升序
 * 
 * @param {Number}
 *            x
 * @param {Number}
 *            y
 */
function asc(x, y) {
	x = parseInt(x, 10);
	y = parseInt(y, 10);
	if (x > y)
		return 1;
	if (x <= y)
		return -1;
}

/**
 * 获取字符串长度，1个汉字代表2单位长度
 * 
 * @param {String}
 *            sString 字符串
 */
function getBytesLength(sString) {
	var sStr, iCount, i, strTemp;
	iCount = 0;
	sStr = sString.split("");
	for (i = 0; i < sStr.length; i++) {
		strTemp = escape(sStr[i]);
		if (strTemp.indexOf("%u", 0) == -1) { // 表示是汉字
			iCount = iCount + 1;
		} else {
			iCount = iCount + 2;
		}
	}
	return iCount;
}

/**
 * ajax请求失败的回调函数
 */
function requestFailure(instance) {
	window.alert("请求失败");
}

/**
 * 计数组合数
 */
function comp(r, n) {
	var C = 1;
	for ( var i = n - r + 1; i <= n; i++) {
		C = C * i;
	}
	for ( var j = 2; j <= r; j++) {
		C = C / j;
	}
	return C;
}

/**
 * 往select里添加option
 */
function selectAddOption(selectObj, text, value) {
	var oOption = document.createElement("option");
	oOption.appendChild(document.createTextNode(text));

	if (arguments.length == 3) {
		oOption.setAttribute("value", value);
		oOption.setAttribute("title", text);
	}

	selectObj.appendChild(oOption);
}

/**
 * 弹出模块窗口
 * 
 * @param {String}
 *            url URL地址
 */
function openModalDialog(url) {
	if (window.showModalDialog != null) { // IE
		window.showModalDialog(url, window,
				"help: No; resizable: No; status: No;scrollbars:yes;center: Yes;dialogWidth:630px;dialogHeight:600px;");
	} else {
		window.open(url, name, 'modal=yes,height=600,width=630,scrollbars=1;');
	}
}

/**
 * 刷新登录信息
 * 
 * @param {Function}
 *            [可选]回调函数
 */
function refreshLoginInfo(callback) {
	if(typeof common_refresh_login == 'function'){
		common_refresh_login();
	}
}

/**
 * 退出登录
 */
function loginOut(url) {
	if (typeof url == 'string') {
		new Request( {
			url :Betzc.base + '/user!logout.action',
			onSuccess:function(responseText, responseXML){
				window.location.href = url;
			}
		}).get( {
			'noCache=' :new Date().getTime()
		});
	} else {
		new Request.HTML( {
			url :Betzc.base + '/user!logout.action',
			update :$('loginInfo')
		}).get( {
			'noCache=' :new Date().getTime()
		});
	}
}

function addFriend(userId) {
	LoingDialog.show( {
		method : function() {
			lhgdialog.opendlg('加为好友', 'http://www.betzc.com/member/message/friend!addotherPer.action?friend.id=' + userId,
					320, 190, true, true);
		}
	});
}

function mySchemeList(el) {
	LoingDialog.show( {
		el :el,
		method : function() {
			if(el.target){
				if(el.target=='_blank'){
					window.open(el.href);
				}else{
					window.open(el.href,el.target);
				}
			}else{
				window.location.href = el.href;
			}
		}
	});
	return false;
}

function getUrlParam() {
	var url = window.location.href;
	var u, g, strBack = '';
	if (arguments[arguments.length - 1] == "#")
		u = url.split("#");
	else
		u = url.split("?");
	if (u.length == 1)
		g = '';
	else
		g = u[1];

	if (g != '') {
		gg = g.split("&");
		var MaxI = gg.length;
		str = arguments[0] + "=";
		for (xm = 0; xm < MaxI; xm++) {
			if (gg[xm].indexOf(str) == 0) {
				strBack = gg[xm].replace(str, "");
				break;
			}
		}
	}
	return strBack;
}

/**
 * 格式化数组的项
 * 
 * @param array
 * @return
 */
function formatNumArray(array){
	var newArray=[];
	for(var i=0;i<array.length;i++){
		if(/^\d$/.test(array[i]))
			newArray.push("0"+array[i]);
		else
			newArray.push(array[i]);
	}
	return newArray;
}

/**
 * 组合-递归算法
 * 
 * @param arr
 *            备选数组
 * @param m
 *            取多少个
 * @return
 */
function C(arr, m) {
	var r = [];
	( function f(t, a, n) {
		if (n == 0)
			return r.push(t);
		for ( var i = 0, l = a.length; i <= l - n; i++) {
			f(t.concat(a[i]), a.slice(i + 1), n - 1);
		}
	})( [], arr, m);
	return r;
}

/**
 * <b>组合算法：</b>
 * <p>
 * 本程序的思路是开一个数组，其下标表示1到m个数，数组元素的值为1表示其下标 代表的数被选中，为0则没选中。首先初始化，将数组前n个元素置1，表示第一个
 * 组合为前n个数。然后从左到右扫描数组元素值的“10”组合，找到第一个“10”组合
 * 后将其变为“01”组合，同时将其左边的所有“1”全部移动到数组的最左端。当第一
 * 个“1”移动到数组的m-n的位置，即n个“1”全部移动到最右端时，就得到了最后一个 组合。
 * </p>
 * 
 * @param arr
 *            备选数组
 * @param m
 *            取多少个
 * @return
 */
function C2(arr, m) {
	var n = arr.length;
	if (n == m) {
		return [arr];
	} else if (m <= 0 || m > n) {
		return null;
	}

	var getComb = function(_bs) {
		var combs = [];
		for ( var i = 0; i < n; i++) {
			if (_bs[i] == 1) {
				combs.push(arr[i]);
				if (combs.length == m) {
					break;
				}
			}
		}
		return combs;
	}

	var rs = [];
	var bs = [];
	for ( var i = 0; i < m; i++) {
		bs[i] = 1;
	}
	for ( var i = m; i < n; i++) {
		bs[i] = 0;
	}

	var flag = true;
	var tempFlag = false;
	var pos = 0;
	var sum = 0;
	do {
		sum = 0;
		pos = 0;
		tempFlag = true;
		rs.push(getComb(bs));

		for ( var i = 0; i < n - 1; i++) {
			if (bs[i] == 1 && bs[i + 1] == 0) {
				bs[i] = 0;
				bs[i + 1] = 1;
				pos = i;
				break;
			}
		}

		for ( var i = 0; i < pos; i++) {
			if (bs[i] == 1) {
				sum++;
			}
		}
		for ( var i = 0; i < pos; i++) {
			if (i < sum) {
				bs[i] = 1;
			} else {
				bs[i] = 0;
			}
		}

		for ( var i = n - m; i < n; i++) {
			if (bs[i] == 0) {
				tempFlag = false;
				break;
			}
		}
		if (tempFlag == false) {
			flag = true;
		} else {
			flag = false;
		}
	} while (flag);
	rs.push(getComb(bs));

	return rs;
}

/**
 * <b>组合算法：</b>
 * <p>
 * 本程序的思路是开一个数组，其下标表示1到m个数，数组元素的值为1表示其下标 代表的数被选中，为0则没选中。首先初始化，将数组前n个元素置1，表示第一个
 * 组合为前n个数。然后从左到右扫描数组元素值的“10”组合，找到第一个“10”组合
 * 后将其变为“01”组合，同时将其左边的所有“1”全部移动到数组的最左端。当第一
 * 个“1”移动到数组的m-n的位置，即n个“1”全部移动到最右端时，就得到了最后一个 组合。
 * </p>
 * 
 * @param n
 *            备选数目
 * @param m
 *            选多少个
 * @param callbackFn
 *            回调函数
 * @return
 */
function C3(n, m,callbackFn) {
	if (m <= 0 || m > n) {
		return;
	}

	var bs = [];
	for ( var i = 0; i < m; i++) {
		bs[i] = true;
	}
	if (n == m) {
		callbackFn(bs, n, m);
		return;
	}
	for ( var i = m; i < n; i++) {
		bs[i] = false;
	}

	var flag = true;
	var tempFlag = false;
	var pos = 0;
	var sum = 0;
	do {
		sum = 0;
		pos = 0;
		tempFlag = true;
		callbackFn(bs, n, m);

		for ( var i = 0; i < n - 1; i++) {
			if (bs[i] == true && bs[i + 1] == false) {
				bs[i] = false;
				bs[i + 1] = true;
				pos = i;
				break;
			}
		}

		for ( var i = 0; i < pos; i++) {
			if (bs[i] == true) {
				sum++;
			}
		}
		for ( var i = 0; i < pos; i++) {
			if (i < sum) {
				bs[i] = true;
			} else {
				bs[i] = false;
			}
		}

		for ( var i = n - m; i < n; i++) {
			if (bs[i] == false) {
				tempFlag = false;
				break;
			}
		}
		if (tempFlag == false) {
			flag = true;
		} else {
			flag = false;
		}
	} while (flag);
	callbackFn(bs, n, m);
}

// 排列
function P(arr, num) {
	var r = [];
	( function f(t, a, n) {
		if (n == 0)
			return r.push(t);
		for ( var i = 0, l = a.length; i < l; i++) {
			f(t.concat(a[i]), a.slice(0, i).concat(a.slice(i + 1)), n - 1);
		}
	})( [], arr, num);
	return r;
}


/*
 * 在线过滤退出
 */
function filterLogOut(){
	loginOut();    
	window.close();
}

/**
 * 添加到收藏夹
 */
function addBookmark(title,url) {
	if (window.sidebar) { 
		window.sidebar.addPanel(title, url,""); 
	} else if( document.all ) {
		window.external.AddFavorite( url, title);
	} else if( window.opera && window.print ) {
		return true;
	}
}

/**
 * 还未生成亚欧析时提示
 */
function noSchedule(num){
	var str='对不起，';
	switch (num) {
	case 1:
		str+="亚赔"
		break;
	case 2:
		str+="欧赔"
		break;
	default:
		break;
	}
	str+="分析暂未生成，请稍后再试";
	alert(str);
}
