/* 过滤所有输入项前后导空格 */
function trimInput(){
	var inputs = document.getElementsByTagName("input");
	for(var i = 0; i < inputs.length; i++){
	     inputs[i].value = inputs[i].value.replace(/(^\s*)|(\s*$)/g,"");
	}
	var textAreas = document.getElementsByTagName("textarea");
	for(var i = 0; i < textAreas.length ; i++){
	    textAreas[i].value = textAreas[i].value.replace(/(^\s*)|(\s*$)/g,"");
	}	 	 
}

/* 验证传入字符串是否为电话/传真号码/手机支持各种类型 */
function checkTel(tel){
	if (checkPhone(tel) || checkMobile(tel)) {
	    return true;
	}else{
	    return false;
	}
}
/* 验证传入字符串是否是以字母开头的数字、字母、下划线的组合 */
function checkEnWord(str){
	var Expression=/^[A-Za-z]\w{2,}$/; 
	var objExp=new RegExp(Expression);
	if(objExp.test(str)==true){
	    return true;
	}else{
	    return false;
	}
}
/* 验证传入字符串是否为电话/传真号码 */
function checkPhone(phone){
	var Expression=/^(((\+86)|(86)|(086))\-?)?((0[1-9]\d{1,2}[-]?)|(\(0[1-9]\d{1,2}\)?))?([1-9]\d{6,7})(\-\d{1,4})?$/; 
	var objExp=new RegExp(Expression);
	if(objExp.test(phone)==true){
	    return true;
	}else{
	    return false;
	}
}
/* 验证传入字符串是否为手机 */
function checkMobile(mobile){
	var Expression=/^((\+86)|(86)|(086))?(130|131|132|133|134|135|136|137|138|139|150|151|152|153|154|155|156|157|158|159|186|187|188|189)\d{8}$/; 
	var objExp=new RegExp(Expression);
	if(objExp.test(mobile)==true){
		return true;
	}else{
		return false;
	}
}
/* 验证传入字符串是否为QQ号码*/
function checkQQ(phone){
	var Expression=/^[1-9][0-9]{4,}$/; 
	var objExp=new RegExp(Expression);
	if(objExp.test(phone)==true){
	    return true;
	}else{
	    return false;
	}
}

/* 验证传入文件是否为Excel文件 */
function checkXLSFile(file){
	var fileType=file.substring(file.lastIndexOf('.')+1).toLowerCase();
	if(fileType=='xls'){
	    return true;
	}else{
	    return false;
	}
}

/* 检测Email */
function checkEmail(str){
	var Expression= /^([-_A-Za-z0-9\.]+)@([-_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/; 
	var objExp=new RegExp(Expression);
	if(objExp.test(str)==true){
	  	return true;
	}else{
	    return false; 
	}
}

/* 检测网址 */
function checkWeb(str){
	var Expression= /^((http\:\/\/)|(HTTP\:\/\/))?(\w+.)+\%?\??\=?\&?\w+$/; 
	var objExp=new RegExp(Expression);
	if(objExp.test(str)==true){
	  	return true;
	}else{
	    return false; 
	}
}
//检测正整数型
function checkPositive(str){
	var Expression= /^[1-9][0-9]*$/g; 
	var objExp=new RegExp(Expression);
	if(objExp.test(str)==true){
	  	return true;
	}else{
	    return false; 
	}
}
//检测自然数
function checkNature(str){
	var Expression= /^[0-9]*$/g; 
	var objExp=new RegExp(Expression);
	if(objExp.test(str)==true){
	  	return true;
	}else{
	    return false; 
	}
}

//检测自然数
function checkNature1(str){
	var Expression=/^[0-9]{1}$/;
	var objExp=new RegExp(Expression);
	if(objExp.test(str)==true){
	  	return true;
	}else{
	    return false; 
	}
}

//检测小数型
function checkFloat(str){
	var Expression= /^(-?\d+)(\.\d+)?$/g; 
	var objExp=new RegExp(Expression);
	if(objExp.test(str)==true){
	  	return true;
	}else{
	    return false; 
	}
}
//检测小数型,两位小数
function checkFloat2(str){
	var Expression= /^(-?\d+)(\.\d{1,2})?$/g; 
	var objExp=new RegExp(Expression);
	if(objExp.test(str)==true){
	  	return true;
	}else{
	    return false; 
	}
}
//检测百分数0.00 ~ 100
function checkPercent(str){
	var Expression= /^(\d{1,2})(\.\d{1,2})?$|^100$/g; 
	var objExp=new RegExp(Expression);
	if(objExp.test(str)==true){
	  	return true;
	}else{
	    return false; 
	}
}
//检测用户名，字母开头，跟字母、数字和_，最少6位，最大12位
function checkUsername(str){
	var Expression= /^[a-zA-Z][a-zA-Z0-9_]{2,11}$/g; 
	var objExp=new RegExp(Expression);
	if(objExp.test(str)==true){
	  	return true;
	}else{
	    return false; 
	}
}
//最少6位，最大12位
function checkPassword(str){
	var len = str.length;
	if(len >= 6 && len <= 12){
	  	return true;
	}else{
	    return false; 
	}
}
//
function checkNumber10_2(str){
	var Expression= /^(-?\d{1,10})(\.\d{1,2})?$/g; 
	var objExp=new RegExp(Expression);
	if(objExp.test(str)==true){
	  	return true;
	}else{
	    return false; 
	}
}

//
function checkNumber3_2(str){
	var Expression= /^(-?\d{1,3})(\.\d{1,2})?$/g; 
	var objExp=new RegExp(Expression);
	if(objExp.test(str)==true){
	  	return true;
	}else{
	    return false; 
	}
}


//验证身份证号码是否正确
	function checkIdCard(idcard){ 
	    ereg15 = /^\d{15}$/;
	    ereg18 = /^\d{17}[0-9Xx]$/;
		if(!ereg15.test(idcard) && !ereg18.test(idcard)){
		    return false;
		}
		var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"} 
		//地区检验 
		if(area[parseInt(idcard.substr(0,2))]==null){
			return false;
		}
		//身份号码位数及格式检验 
		switch(idcard.length){ 
			case 15: 
			if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){ 
			    ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性 
			} else { 
			    ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性 
			} 
			if(!ereg.test(idcard)){
	            return false;
	        }
			break; 
			case 18: 
			if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){ 
			ereg=/^[1-9][0-9]{5}((1)(9)|(2)[0-9])[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式 
			} else { 
			ereg=/^[1-9][0-9]{5}((1)(9)|(2)[0-9])[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式 
			} 
			if(!ereg.test(idcard)){//测试出生日期的合法性 
			    return false;
			} 
		}
		return true;
} 



/* 确定排序类型 */
function order(orderBy){
	//return false;
	var ascOrDesc = document.getElementById("ascOrDesc").value;
	if(orderBy == document.getElementById("orderBy").value){
		if(ascOrDesc == "asc"){
			document.getElementById("ascOrDesc").value = "desc";
		}else{
			document.getElementById("ascOrDesc").value = "asc";
		}				
	}else{
		document.getElementById("ascOrDesc").value = "asc";
		document.getElementById("orderBy").value = orderBy;
	}
	listForm.offset.value = 0;
	listForm.submit();
}

/* 标示当前排序字段级类型 */
function initOrder(path){
	if(listForm.orderBy.value != ''){
		if(listForm.ascOrDesc.value == 'desc'){
			document.getElementById(listForm.orderBy.value + "Th").style.background= "url(" + path + "/img/common/orderByDesc.jpg)";
		}else{
			document.getElementById(listForm.orderBy.value + "Th").style.background= "url(" + path + "/img/common/orderByAsc.jpg)";
		}
	}
}
/* 分页转向 */
function goto(offset){
	listForm.offset.value = offset;
	listForm.submit();
}

/* 验证关键字输入框 */
var arrErrCha = [',','@','$','&','%','?','!','|',':','"','\'','\\','*','/','=','<','>',';','(',')','《','》','[',']','{','}','^','_','`','-'];
function checkInputStr(obj){
	var keyword = obj.value;
	if(keyword.length!=0 && keyword.length<2){
		alert('输入的关键字不能少于2个英文字母或2个汉字, 请重新输入！');
		return false;
	}
	for(var i=0;i<arrErrCha.length;i++){
		if(keyword.indexOf(arrErrCha[i])>-1){
			alert('输入的关键字含有不规范词语，会降低搜索结果的准确度，请重新输入！');
			return false;
		}
	}
	var valueStr = keyword;
	valueStr = valueStr.toLowerCase().replace(/c\+\+/g,'').replace(/j\+\+/g,'');
	if(valueStr.indexOf('+')>-1){
		alert('输入的关键字含有不规范词语，会降低搜索结果的准确度，请重新输入！');
		return false;
	}
	return true;
}

/* 显示关键字输入框提示信息 */
function showMessage(obj){
    if(obj.value == ""){
        obj.className = "grayFont";
        obj.value = obj.title;
    }
}

/* 清空关键字输入框提示信息 */
function clearMessage(obj){
    if(obj.value == obj.title){
        obj.value = "";
        obj.className = "blackFont";
    }
}
				
/** 定义一个XMLHttpRequest实例对象名称*/
var xmlHttp;
function createXmlHttpRequest(){     
    if (window.ActiveXObject){     
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } else if (window.XMLHttpRequest) {          
        xmlHttp = new XMLHttpRequest();
    }
}

//开始发送和接收相关请求。
function checkDelete(id, url){
	if(id == ''){
		return false;
	}
    createXmlHttpRequest();
    xmlHttp.onreadystatechange = complete;
    xmlHttp.open("GET",url,false);
    xmlHttp.send(null);
}
 
 //请求完毕，交互成功
function complete(){
	if (xmlHttp.readyState == 4) { 
		if (xmlHttp.status == 200) {
			if(xmlHttp.responseText == "true"){
				isExist = true;
			}else{
				isExist = false;
			}
		}
	}
}


//-------------------------------------------
function required(value){
	var v = value.replace(/(^\s*)|(\s*$)/g,"");
	if (!v) {
		return false;
	} else {
		return true;
	}
};
function checkMaxLength(value,ml) {
	var ml = parseInt(ml);
	var l = value.length;
	if (l>ml)
		return false;
	else
		return true;
};

function checkOrgCode(value){
	var Expression=/^\d{8}[0-9Xx]$/; 
	var objExp=new RegExp(Expression);
	if(objExp.test(value)==true){
	    return true;
	}else{
	    return false;
	}
}

var validationMap = {
	REQUIRED: {
		func:required,
		msg:"必须填写"
	},
	TEL: {
		func:checkTel,
		msg:"请填写正确的电话号码"
	},
	XLS: {
		func:checkXLSFile,
		msg:"请选择正确的导入文件"
	},
	EMAIL: {
		func:checkEmail,
		msg:"请填写正确的EMail"
	},
	WEB: {
		func:checkWeb,
		msg:"请填写正确的网址"
	},
	ENWORD: {
		func:checkEnWord,
		msg:"请填正确的英文字符"
	},
	PHONE: {
		func:checkPhone,
		msg:"请填写正确的电话号码"
	},
	QQ: {
		func:checkQQ,
		msg:"请填写正确的QQ号码"
	},
	MOBILE: {
		func:checkMobile,
		msg:"请填写正确的手机号码"
	},
	IDCARD: {
		func:checkIdCard,
		msg:"请填写正确的身份证号码"
	},
	POSITIVE: {
		func:checkPositive,
		msg:"请填写大于零的整数"
	},
	MAXLENGTH: {
		func:checkMaxLength,
		msg:"字符个数不能大于"
	},
	FLOAT: {
		func:checkFloat,
		msg:"请输入正确的小数格式"
	},
	FLOAT2: {
		func:checkFloat2,
		msg:"请输入最多两位小数的数值"
	},
	ORGCODE:{
		func:checkOrgCode,
		msg:"请输入正确的机构代码"
	},
	USERNAME: {
		func:checkUsername,
		msg:"3~12个字符(英文字母开头跟字母、数字和_)"
	},
	PASSWORD: {
		func:checkPassword,
		msg:"6~12个字符(字母、数字、特殊符号)"
	},
	NUMBER10_2: {
		func:checkNumber10_2,
		msg:"请输入最大10位整数两位小数"
	},
	NUMBER3_2: {
		func:checkNumber3_2,
		msg:"请输入最大3位整数两位小数"
	},
	
	NATURE: {
		func:checkNature,
		msg:"请输入自然数"
	},
	NATURE1: {
		func:checkNature1,
		msg:"请输入0-9的数字"
	},
	PERCENT: {
		func:checkPercent,
		msg:"请输入小于等100的两位小数"
	}
};
var clearTip = function(pNode) {
	var cs = pNode.childNodes;
	for (var i=0;i<cs.length;i++) {
		if (cs[i].className && cs[i].className.indexOf("formtips") >= 0)
			pNode.removeChild(cs[i]);
	}
};
var showOK = function(input) {
	var pNode = input.parentNode;
	input.checked = true;
	input.valid = true;
	clearTip(pNode);
	var tipNode = document.createElement("span");
	tipNode.innerHTML = "&nbsp";
	tipNode.className = "formtips onSuccess";
	pNode.appendChild(tipNode);
};
var showErr = function(input, msg) {
	var pNode = input.parentNode;
	input.checked = true;
	input.valid = false;
	clearTip(pNode);
	var tipNode = document.createElement("span");
	tipNode.innerHTML = msg;
	tipNode.className = "formtips onError";
	pNode.appendChild(tipNode);
};
var showNoCheck = function(input) {
	var pNode = input.parentNode;
	input.checked = true;
	input.valid = true;
	clearTip(pNode);
};

var validateInput = function(input){
	if (input.tagName == "INPUT")
		var validations = input.alt.split(",");
	else
		var validations = input.title.split(",");
	var required = false;
	for(var i=0;i<validations.length;i++) {
		if (validations[i].toUpperCase() == "REQUIRED") {
			required = true;
			break;
		}
	}
	if (required || input.value) {
		for(var j=0;j<validations.length;j++) {
			var validation = validations[j];
			var oValidate = validationMap[validation.toUpperCase()];
			if (!oValidate) {
				input.checked = true;
				input.valid = true;
			}
			var isNumber = parseInt(validation) == validation;
			if (oValidate || isNumber) {
				var result = false;
				if (isNumber) {
					oValidate = validationMap["MAXLENGTH"];
					result = oValidate.func(input.value, validation);
				}
				else {
					result = oValidate.func(input.value);
				}
				if (result){
					if (j==validations.length-1)
						showOK(input);
				} else {
					(isNumber)?showErr(input,oValidate.msg+validation):showErr(input,oValidate.msg);
					break;
				}
			}
		}
	} else {
		showNoCheck(input);
	}
};
var initSubmit = function(){
	var inputs = document.getElementsByTagName("input");
	for (var i=0;i<inputs.length;i++){
		var input = inputs[i];
		if(input.alt) {
			input.onchange = function(){
				validateInput(this);
			};
			input.onblur = function(){
				validateInput(this);
			};
		}
	}
	var areas = document.getElementsByTagName("textarea");
	for (var i=0;i<areas.length;i++){
		var area = areas[i];
		if(area.title) {
			area.onblur = function(){
				validateInput(this);
			};
		}
	}
};
var isValidated = function(form) {
	var inputs = document.getElementsByTagName("input");
	var areas = document.getElementsByTagName("textarea");
	for (var i=0;i<inputs.length;i++){
		var input = inputs[i];
		if(input.alt && !input.checked) {
			validateInput(input);
		}
	}
	for (var i=0;i<areas.length;i++){
		var input = areas[i];
		if(input.title && !input.checked) {
			validateInput(input);
		}
	}
	var flag = true;
	for (var i=0;i<inputs.length;i++) {
		var input = inputs[i];
		if (input.alt && !input.valid) {
			flag = false;
			break;
		}
	}
	for (var i=0;i<areas.length;i++) {
		var input = areas[i];
		if (input.title && !input.valid) {
			flag = false;
			break;
		}
	}
	return flag;
}
