/**
 * 返回两边不带空白字符的字符串
 */
String.prototype.trim=function(){  
	return this.replace(/(^\s*)|(\s*$)/g, "");  
}

/**
 * 检查是否是整数
 */
String.prototype.isInteger=function(){
	var regx=/^[-]?\d+$/;
	return regx.test(this);
}

/**
 * 判断字符串是否为正整数
 */
String.prototype.isUInteger=function() {
	var regx=/^\d+$/;
	return regx.test(this);
}

/**
 * 获得字符串的字节长度
 */
String.prototype.getBytesLength=function() {
	var re=/[\x00-\xff]/g;
	var len=this.length;
	var array=this.match(re);
    if (array==null)  array="";
	return len*2-array.length;
}

/**
 * 循环替换字符串的方法
 */
String.prototype.replaceAll=function(s1,s2) {   
	return this.replace(new RegExp(s1,"gm"),s2);   
}

/**
 * 检查是否包含指定字符串的方法
 */
String.prototype.contains=function(str) {   
	return this.indexOf(str)>=0;
}

/**
 * 对Date的扩展，将 Date 转化为指定格式的String
 * 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符
 * 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
 * eg:
 * (new Date()).pattern("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
 * (new Date()).pattern("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04
 * (new Date()).pattern("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04
 * (new Date()).pattern("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04
 * (new Date()).pattern("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
 */
Date.prototype.pattern=function(fmt) {
	var o = {
	"M+" : this.getMonth()+1, //月份
	"d+" : this.getDate(), //日
	"h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12, //小时
	"H+" : this.getHours(), //小时
	"m+" : this.getMinutes(), //分
	"s+" : this.getSeconds(), //秒
	"q+" : Math.floor((this.getMonth()+3)/3), //季度
	"S" : this.getMilliseconds() //毫秒
	};
	var week = {
	"0" : "\u65e5",
	"1" : "\u4e00",
	"2" : "\u4e8c",
	"3" : "\u4e09",
	"4" : "\u56db",
	"5" : "\u4e94",
	"6" : "\u516d"
	};
	if(/(y+)/.test(fmt)){
		fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
	}
	if(/(E+)/.test(fmt)){
		fmt=fmt.replace(RegExp.$1, ((RegExp.$1.length>1) ? (RegExp.$1.length>2 ? "\u661f\u671f" : "\u5468") : "")+week[this.getDay()+""]);
	}
	for(var k in o){
		if(new RegExp("("+ k +")").test(fmt)){
			fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
		}
	}
	return fmt;
}

/**
 * 关闭页面方法
 */
function closePage(){
	if(window.confirm("确认要关闭页面吗？")){
		window.opener=null;
		window.open('','_self');
		window.close();
	}
}

/**
 * 动态加载脚本、样式表
 */
function loadScript(filename, filetype){
	if(filetype=="js"){
		var fileref=document.createElement("script");
		fileref.setAttribute("type","text/javascript");
		fileref.setAttribute("src", filename);
	}else if (filetype=="css"){
		var fileref=document.createElement("link");
		fileref.setAttribute("rel", "stylesheet");
		fileref.setAttribute("type", "text/css");
		fileref.setAttribute("href", filename);
	}else if (filetype=="vbs"){
		var fileref=document.createElement("script");
		fileref.setAttribute("type", "text/vbscript");
		fileref.setAttribute("src", filename);
	}
	if(typeof fileref!="undefined"){
		document.getElementsByTagName("head")[0].appendChild(fileref);
	}
}

/**
 * 跳到select的defaultIndex属性指定的选项
 */
function chooseDefault(){
	var formEle;
	for(var i=0;i<document.forms.length;i++){
		formEle=document.forms[i].elements;
		for(var j=0;j<formEle.length;j++){
			if(formEle[j].tagName=="SELECT"){
				if(!isNaN(formEle[j].defaultIndex)){
					formEle[j].selectedIndex=formEle[j].defaultIndex-1;
				}		
			}	 
		}
	}
}
function chooseOption(selectObj,chooseValue){
	var haveFound=0;
	for(i=0;i<selectObj.options.length;i++){
		if(selectObj.options[i].value==chooseValue){
			selectObj.selectedIndex=i;
			haveFound=1;
		}
	}
	if(haveFound!=1){
		newOption=document.createElement("OPTION");
		newOption.text=chooseValue;
		newOption.value=chooseValue;
		selectObj.options.add(newOption);
		selectObj.selectedIndex=selectObj.options.length-1;
	}
}

/**
 * 根据allValue对象的属性值自动填写页面上对应名字的输入框或下拉菜单等控件
 * sequence为要自动填入的表单序列号，不填则默认为0
 */
function autoChoose(allValue,sequence){
	if(sequence == undefined){
		sequence = 0;
	}
	var eleArr=document.forms[sequence].elements;    // 将表单中的所有元素放入数组
	var selectValue,checkValue,inputValue,strArr;
	for(var i = 0; i < eleArr.length; i++){
		if(eleArr[i].autoInput!=null && eleArr[i].autoInput=="false") continue;
		//自动选择下拉菜单
		if(eleArr[i].tagName=="SELECT"){    
			selectValue=allValue[eleArr[i].name];
			if(selectValue!=null){
				if(eval("document.forms["+sequence+"][\""+eleArr[i].name+"\"]").item(0).name!=null){ //若该名字的对象有多个
					strArr="";
					if(selectValue!=null){
						strArr=selectValue.split("#");   //将字符串拆成数组
					}
					objArr=eval("document.forms["+sequence+"][\""+eleArr[i].name+"\"]");
					for(j=0;j<objArr.length;j++){
						if(eleArr[i]==objArr.item(j)){   //比较对象数组中每个对象和当前对象是否相同
						if(strArr[j]!=null){
							if(strArr[j]=="_"){
								chooseOption(eleArr[i],"");
								}else{
									chooseOption(eleArr[i],strArr[j]);				
									}
							}else
							{
								chooseOption(eleArr[i],"");	
							}
						}
					}
				}else{
					if(selectValue!=null){
						var strArr=selectValue.split("#");   //将字符串拆成数组		
						chooseOption(eleArr[i],strArr[0]);		  
					}
				}
			}
		}

		//自动选择checkbox和radio
		if(eleArr[i].tagName=="INPUT" && (eleArr[i].type=="checkbox" || eleArr[i].type=="radio")){
			checkValue=allValue[eleArr[i].name];
			if(checkValue!=null && checkValue!=""){
				checkValueArr=checkValue.split("#");  //将字符串拆成数组
				for(var j=0;j<checkValueArr.length;j++){
					if(checkValueArr[j]==eleArr[i].value){
						eleArr[i].checked=true;
						break;  //匹配的话跳出循环
					}else{
						eleArr[i].checked=false;
					}			
				}
			}else{
				if(checkValue=="")eleArr[i].checked=false;
			}
		}

		//自动填写text、hidden、password
  		if(eleArr[i].tagName=="INPUT" && (eleArr[i].type=="text" || eleArr[i].type=="hidden" || eleArr[i].type=="password")){
			inputValue=allValue[eleArr[i].name];  
			if(inputValue!=null){
				if((count=eval("document.forms["+sequence+"][\""+eleArr[i].name+"\"]").length)!=null){ //若该名字的对象有多个	
					strArr="";
					if(inputValue!=null){
						strArr=inputValue.split("#");   //将字符串拆成数组
					}
					objArr=eval("document.forms["+sequence+"][\""+eleArr[i].name+"\"]");
					for(j=0;j<objArr.length;j++){
						if(eleArr[i]==objArr.item(j)){   //比较对象数组中每个对象和当前对象是否相同
							if(strArr[j]!=null){
								if(strArr[j]=="_"){
									eleArr[i].value="";
								}else{
									eleArr[i].value=strArr[j];
								}
							}else{
								eleArr[i].value="";
							}
						}
					}
				}else{
					if(inputValue!=null){
						if(inputValue!="_"){
							eleArr[i].value=inputValue;
						}else{
							eleArr[i].value="";
						}
					}
				}
			}
		}

		if(eleArr[i].tagName=="TEXTAREA"){
			inputValue=allValue[eleArr[i].name];
			if(inputValue!=null){
				eleArr[i].value=inputValue;
			}
		}
	} //填写一个控件结束
}

/*
 * 判断新身份证出生年月
 */
function isNewBirthday(card) {
	var y = parseInt(card.substring(6, 10),10);
	var m = parseInt(card.substring(10, 12),10);
	var d = parseInt(card.substring(12, 14),10);
	if (y < 1900 || m < 1 || m > 12 || d < 1 || d > 31
			|| ((m == 4 || m == 6 || m == 9 || m == 11) && d > 30) ||
			(m == 2 && ((y % 4 > 0 && d > 28) || d > 29))){
		return false;
	}else {
		return true;
	}
}
/*
 * 判断旧身份证出生年月
 */
function isBirthday(card) {
	var y = parseInt(card.substring(6, 8),10);
	var m = parseInt(card.substring(8, 10),10);
	var d = parseInt(card.substring(10, 12),10);
	if (m < 1 || m > 12 || d < 1 || d > 31
			|| ((m == 4 || m == 6 || m == 9 || m == 11) && d > 30) ||
			(m == 2 && (((y + 1900) % 4 > 0 && d > 28) || d > 29)))	{
		return false;
	}else {
		return true;
	}
}
/*
 *判断身份证是否合法
 */
function convertCardID(card) {
	if(null == card) return false;
	var xx  = [2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4, 8, 5, 10, 9, 7 ];
	var yy  = [ '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' ];
	var mm = 0;
	if (card.length == 15) {
		if (isBirthday(card))
			return true;
		else
			return false;
	}else if (card.length == 18) {
		var gg = new Array;
		for (var i = 1; i < 18; i++){
			var j = 17 - i;
			gg[i - 1] = parseInt(card.substring(j, j + 1),10);
		}

		for (var i = 0; i < 17; i++){
			mm += xx[i] * gg[i];
		}
		mm = mm % 11;
		var c = card.charAt(17);
		if (c == yy[mm] && isNewBirthday(card))
			return true;
		else
			return false;
	} else {
		return false;
	}
}