var leaveAlert = false;
var errorMsgList;
var focusFieldName;
var errorFieldList;
var errorFieldIdx;

//************************************************************************
//                       Start validation functions
//************************************************************************
function validateFormat(regExp, value) {
    if (value != null && value != '') {
        return regExp.test(value);
    } else  {
        return true;
    }
}

function checkEmail(emailStr) {
   if (emailStr.length == 0) {
       return true;
   }
   var emailPat=/^(.+)@(.+)$/;
   var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
   var validChars="\[^\\s" + specialChars + "\]";
   var quotedUser="(\"[^\"]*\")";
   var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
   var atom=validChars + '+';
   var word="(" + atom + "|" + quotedUser + ")";
   var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
   var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
   var matchArray=emailStr.match(emailPat);
   if (matchArray == null) {
       return false;
   }
   var user=matchArray[1];
   var domain=matchArray[2];
   if (user.match(userPat) == null) {
       return false;
   }
   var IPArray = domain.match(ipDomainPat);
   if (IPArray != null) {
       for (var i = 1; i <= 4; i++) {
          if (IPArray[i] > 255) {
             return false;
          }
       }
       return true;
   }
   var domainArray=domain.match(domainPat);
   if (domainArray == null) {
       return false;
   }
   var atomPat=new RegExp(atom,"g");
   var domArr=domain.match(atomPat);
   var len=domArr.length;
   if ((domArr[domArr.length-1].length < 2) ||
       (domArr[domArr.length-1].length > 3)) {
       return false;
   }
   return len >= 2;
}

function checkIdCard(idcard){
	if (idcard == '') return '';
	
	var Errors=new Array( 
		"", 
		"身份证号码位数不对!", 
		"身份证号码出生日期超出范围或含有非法字符!", 
		"身份证号码校验错误!", 
		"身份证地区非法!" 
	); 
	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:"国外"}
	var idcard,Y,JYM; 
	var S,M; 
	var idcard_array = new Array();
	idcard_array = idcard.split(""); 
	if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4]; 
	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 Errors[0]; 
			else return Errors[2]; 
			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}19[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}19[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)){ 
				S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 
				+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 
				+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 
				+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 
				+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 
				+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 
				+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 
				+ parseInt(idcard_array[7]) * 1 
				+ parseInt(idcard_array[8]) * 6 
				+ parseInt(idcard_array[9]) * 3 ; 
				Y = S % 11; 
				M = "F"; 
				JYM = "10X98765432"; 
				M = JYM.substr(Y,1); 
				if(M == idcard_array[17]) return Errors[0]; 
				else return Errors[3]; 
			} 
			else return Errors[2]; 
			break; 
		default: 
			return Errors[1]; 
			break; 
	}
}

function isNickName(str) {
	var patrn=/^[a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]{1,19}$/;
	return validateFormat(patrn, str);
} 

function isRegisterUserName(str) {
	var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){1,19}$/;
	return validateFormat(patrn, str);
} 

function isPasswd(str) {
	var patrn=/^(\w){4,20}$/;
	return validateFormat(patrn, str);
}

function isMoney(str) {
	var patrn=/^(\d)*(\.(\d){0,2})?$/;
	return validateFormat(patrn, str);
}

function isInt(str) {
	var patrn=/^[0-9]*$/;
	return validateFormat(patrn, str);
} 

function isFloat(str) {
	var patrn=/^(-?\d+)(\.\d+)?$/;
	return validateFormat(patrn, str);
} 

function check24HourTime(str) {
	var patrn=/^((0[0-9])|([1-2][0-3])|([1][4-9]))\:([0-5][0-9])\:([0-5][0-9])$/;
	return validateFormat(patrn, str);
}  

function checkDateFormat(str) {
	var patrn=/^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29))$/g;
	return validateFormat(patrn, str);
} 

function compareDate(fromDate, toDate) {
	if (fromDate != null && fromDate.length >= 8 && toDate != null && toDate.length >= 8) {
		var fromDateArr = fromDate.split('-');
		var toDateArr = toDate.split('-');
	    var dd1 = fromDateArr[2];
	    var dd2 = toDateArr[2];
	    var mm1 = fromDateArr[1];
	    var mm2 = toDateArr[1];
	    var yy1 = fromDateArr[0];
	    var yy2 = toDateArr[0];
	    if ( parseStringToInt(yy1) > parseStringToInt(yy2) ) {
	        return 1;
	    } else if( parseStringToInt(yy1) < parseStringToInt(yy2) )  {
	         return -1;
	    } else {
	        if(parseStringToInt(mm1) > parseStringToInt(mm2)) {
	            return 1;
	        } else if(parseStringToInt(mm1) < parseStringToInt(mm2)) {
	             return -1;
	        } else {
	            if(parseStringToInt(dd1) > parseStringToInt(dd2)) {
	                return 1;
	            } else if(parseStringToInt(dd1) < parseStringToInt(dd2)) {
	                 return -1;
	            } else {
	                return 0;
	            }
	        }
	    } 
	}
}

function compare24HourTime(fromTime, toTime) {
	if (fromTime != null && fromTime.length >= 5 && toTime != null && toTime.length >= 5) {
		var fromTimeArr = fromTime.split(':');
		var toTimeArr = toTime.split(':');
	    var sec1 = fromTimeArr[2];
	    var sec2 = toTimeArr[2];
	    var min1 = fromTimeArr[1];
	    var min2 = toTimeArr[1];
	    var hour1 = fromTimeArr[0];
	    var hour2 = toTimeArr[0];
	    if ( parseStringToInt(hour1) > parseStringToInt(hour2) ) {
	        return 1;
	    } else if( parseStringToInt(hour1) < parseStringToInt(hour2) )  {
	         return -1;
	    } else {
	        if(parseStringToInt(min1) > parseStringToInt(min2)) {
	            return 1;
	        } else if(parseStringToInt(min1) < parseStringToInt(min2)) {
	             return -1;
	        } else {
	            if(parseStringToInt(sec1) > parseStringToInt(sec2)) {
	                return 1;
	            } else if(parseStringToInt(sec1) < parseStringToInt(sec2)) {
	                 return -1;
	            } else {
	                return 0;
	            }
	        }
	    } 
	}
}

function setErrorMsg(msg) {
	setErrorMsg2('errorMsgDiv', 'errorMsg', msg);
}

function setErrorMsg2(divName, msgName, msg) {
	var msgObj = document.getElementById(msgName);
	if (msgObj != null) {
		msgObj.innerHTML = "<div align=\"left\" id=\"msgbox\"><img src=\"" + SYS_ROOT_PATH + "images/cross.jpg\" border=\"0\"></div><div id=\"msgbox\" style=\"color: #ff5555\">" + msg + "</div>";
		if (msg != null && msg.length > 0) {
			showElement (divName);
		} else {
			hideElement (divName);
		}
	}
} 

function setWarningMsg(msg) {
	var msgObj = document.getElementById('errorMsg');
	if (msgObj != null) {
		msgObj.innerHTML = "<div align=\"left\" id=\"msgbox\"><img src=\"" + SYS_ROOT_PATH + "images/warn.jpg\" align=\"left\" border=\"0\"></div><div id=\"msgbox\" style=\"color: #ff8800\">" + msg + "</div>";
		if (msg != null && msg.length > 0) {
			showElement ('errorMsgDiv');
		} else {
			hideElement ('errorMsgDiv');
		}
	}
}

function setSuccessMsg(msg) {
	var msgObj = document.getElementById('errorMsg');
	if (msgObj != null) {
		msgObj.innerHTML = "<div align=\"left\" id=\"msgbox\"><img src=\"" + SYS_ROOT_PATH + "images/tick.jpg\" align=\"left\" border=\"0\"></div><div id=\"msgbox\" style=\"color: #006600\">" + msg + "</div>";
		if (msg != null && msg.length > 0) {
			showElement ('errorMsgDiv');
		} else {
			hideElement ('errorMsgDiv');
		}
	}
} 

function clearErrorMsg() {
	var msgObj = document.getElementById('errorMsg');
	if (msgObj != null) {
		msgObj.innerHTML = "";
		hideElement ('errorMsgDiv');
	}
}

function isObjectAvailable(formIndex, fieldName) {
	var fieldObj = document.forms[formIndex].elements[fieldName];
	if (fieldObj != null) {
		if (fieldObj.length > 0 && fieldObj.type != 'select-single' && fieldObj.type != 'select-multiple' &&
		!fieldObj[0].disabled && (fieldObj[0].style == null || (fieldObj[0].style.display != 'none' && fieldObj[0].style.visibility != 'hidden'))) {
			return true
		} else if (!fieldObj.disabled && (fieldObj.style == null || (fieldObj.style.display != 'none' && fieldObj.style.visibility != 'hidden'))) {
			return true;
		}
	}
	return false;
}

function doFocus(formIndex, fieldName) { 
	var obj = document.forms[formIndex].elements[fieldName];
    if (obj.type == "select-one") {
    	var isDisabled = obj.disabled;
    	obj.disabled = false;
    	//setErrorField(obj);
      	obj.focus();
      	obj.disabled = isDisabled;
    } else if (obj.length >1 ) {
        for (var i=0; i<obj.length; i++) {
            var isDisabled = obj[i].disabled;
    		obj[i].disabled = false;
    		//setErrorField(obj[i]);
          	obj[i].focus();
          	obj[i].disabled = isDisabled;
          	break;
        }
    } else {
        var isDisabled = obj.disabled;
    	obj.disabled = false;
    	//setErrorField(obj);
        obj.focus();
        obj.disabled = isDisabled;
   	}
}

function setErrorFieldByName(formIndex, fieldName) { 
	var obj = document.forms[formIndex].elements[fieldName];
    if (obj.type == "select-one") {
    	var isDisabled = obj.disabled;
    	obj.disabled = false;
    	setErrorField(obj);
      	obj.disabled = isDisabled;
    } else if (obj.length >1 ) {
        for (var i=0; i<obj.length; i++) {
            var isDisabled = obj[i].disabled;
    		obj[i].disabled = false;
    		setErrorField(obj[i]);
          	obj[i].disabled = isDisabled;
          	break;
        }
    } else {
        var isDisabled = obj.disabled;
    	obj.disabled = false;
    	setErrorField(obj);
        obj.disabled = isDisabled;
   	}
} 

function clearErrorFieldByName(formIndex, fieldName) { 
	var obj = document.forms[formIndex].elements[fieldName];
    if (obj.type == "select-one") {
    	var isDisabled = obj.disabled;
    	obj.disabled = false;
    	clearErrorField(obj);
      	obj.disabled = isDisabled;
    } else if (obj.length >1 ) {
        for (var i=0; i<obj.length; i++) {
            var isDisabled = obj[i].disabled;
    		obj[i].disabled = false;
    		clearErrorField(obj[i]);
          	obj[i].disabled = isDisabled;
          	break;
        }
    } else {
        var isDisabled = obj.disabled;
    	obj.disabled = false;
    	clearErrorField(obj);
        obj.disabled = isDisabled;
   	}
}

function setErrorField(obj) {
    if (obj != null) {
    	obj.style.backgroundColor = 'pink';
    }
}

function clearErrorField(obj) {
    if (obj != null) {
    	obj.style.backgroundColor = '';
    }
}

function resetValidation() {
	errorMsgList = '';
	focusFieldName = '';
	errorFieldList = new Array();
	errorFieldIdx = 0;
	clearErrorMsg();
}

function handleErrorField(formIndex, fieldName, result) {
	if (!result) { 
		focusFieldName = (focusFieldName == '')? fieldName: focusFieldName;
		
		if (isObjectAvailable(formIndex, fieldName)) {
			setErrorFieldByName(formIndex, fieldName);
		}
		
		errorFieldList[errorFieldIdx] = fieldName;
		errorFieldIdx ++;
	} else if (!contains(errorFieldList, fieldName) && isObjectAvailable(formIndex, fieldName)) {
		clearErrorFieldByName(formIndex, fieldName);
	}
}
	
function validateMandatory(formIndex, fieldName, fieldDesc) {
	var result = true;
	var obj = document.forms[formIndex].elements[fieldName];
	if (obj != null) {
		if (!obj.type && obj.length != null && obj.length > 1) {
			if (obj[0].type == 'checkbox') {
				var emptyVal = true;
				for (var i=0; i<obj.length; i++) {
					if (obj[i].checked) {
						emptyVal = false;
						break;
					}
				}
				if (//isObjectAvailable(formIndex, fieldName) && 
					emptyVal) {
					errorMsgList += ' <li>请勾选' + fieldDesc;
					result = false;
				}
			} else {
				if (obj[0].value == '') {
					errorMsgList += ' <li>请选择' + fieldDesc;
					result = false;
				}
			}
		} else {
			if (//isObjectAvailable(formIndex, fieldName) && 
				trim(getElementValue(formIndex, fieldName)) == '') {
				if (obj.type == 'checkbox' ) {
					errorMsgList += ' <li>请勾选' + fieldDesc;
				} else {
					errorMsgList += ' <li>请填写' + fieldDesc;
				}
				result = false;
			}
			handleErrorField(formIndex, fieldName, result);
		}
	}  else {
		errorMsgList += ' <li>请勾选或填写' + fieldDesc;
		result = false;
	}
	return result;
}

function validateUpfile(formIndex, fieldName, fieldDesc) {
	var result = true;
	if (//isObjectAvailable(formIndex, fieldName) && 
		trim(getElementValue(formIndex, fieldName)) == '') {
		errorMsgList += ' <li>请上传' + fieldDesc;
		result = false;
	}
	handleErrorField(formIndex, fieldName, result);
	return result;
}

function validateLength(formIndex, fieldName, fieldDesc, valueLength) {
	var result = true;
	if (//isObjectAvailable(formIndex, fieldName) && 
		getElementValue(formIndex, fieldName) != null && 
		getElementValue(formIndex, fieldName).replace(/[^\x00-\xff]/g, "**").length > valueLength) {
		errorMsgList += ' <li>' + fieldDesc + '的长度不能超过' + valueLength + '个字符（约' + parseInt((valueLength / 3), 10) + '汉字）';
		result = false;
	}
	handleErrorField(formIndex, fieldName, result);
	return result;
} 

function validateEmail(formIndex, fieldName, fieldDesc) {
	var result = true;
	if (//isObjectAvailable(formIndex, fieldName) && 
		!checkEmail(getElementValue(formIndex, fieldName))) {
		errorMsgList += ' <li>' + fieldDesc + '不是合法的E-Mail格式';
		result = false;
	}
	handleErrorField(formIndex, fieldName, result);
	return result;
}

function validate24HourTime(formIndex, fieldName, fieldDesc) {
	var result = true;
	if (//isObjectAvailable(formIndex, fieldName) && 
		!check24HourTime(getElementValue(formIndex, fieldName))) {
		errorMsgList += ' <li>' + fieldDesc + '不是正确的24小时时间格式（HH:mm:ss）';
		result = false;
	}
	handleErrorField(formIndex, fieldName, result);
	return result;
} 

function validateDate(formIndex, fieldName, fieldDesc) {
	var result = true;
	if (//isObjectAvailable(formIndex, fieldName) && 
		!checkDateFormat(getElementValue(formIndex, fieldName))) {
		errorMsgList += ' <li>' + fieldDesc + '不是正确的日期格式（yyyy-mm-dd）';
		result = false;
	}
	handleErrorField(formIndex, fieldName, result);
	return result;
} 

function validateMoney(formIndex, fieldName, fieldDesc) {
	var result = true;
	if (//isObjectAvailable(formIndex, fieldName) &&
		!isMoney(getElementValue(formIndex, fieldName))) {
		errorMsgList += ' <li>' + fieldDesc + ' 不是正确的金额格式（9999.99）'
		result = false;
	}
	handleErrorField(formIndex, fieldName, result);
	return result;
}

function validateInt(formIndex, fieldName, fieldDesc) {
	var result = true;
	if (//isObjectAvailable(formIndex, fieldName) &&
		!isInt(getElementValue(formIndex, fieldName))) {
		errorMsgList += ' <li>' + fieldDesc + ' 不是正确的整数类型'
		result = false;
	}
	handleErrorField(formIndex, fieldName, result);
	return result;
} 

function validateFloat(formIndex, fieldName, fieldDesc) {
	var result = true;
	if (//isObjectAvailable(formIndex, fieldName) &&
		!isFloat(getElementValue(formIndex, fieldName))) {
		errorMsgList += ' <li>' + fieldDesc + ' 不是正确的数字类型（9999.99）'
		result = false;
	}
	handleErrorField(formIndex, fieldName, result);
	return result;
} 

function validateNric(formIndex, fieldName, fieldDesc) {
	var result = true;
	var resultMsg = checkIdCard(getElementValue(formIndex, fieldName));
 
	
	if (//isObjectAvailable(formIndex, fieldName) && 
		resultMsg != '') {
		errorMsgList += ' <li>' + resultMsg;
		result = false;
	}
	handleErrorField(formIndex, fieldName, result);
	return result;
}  

function validateNickName(formIndex, fieldName, fieldDesc) {
	var result = true;
	if (//isObjectAvailable(formIndex, fieldName) && 
		!isNickName(getElementValue(formIndex, fieldName))) {
		errorMsgList += ' <li>' + fieldDesc + '只能由2-20位大小写字母、数字、下划线或2-10个汉字组成，并且只能以字母或汉字开头。';
		result = false;
	}
	handleErrorField(formIndex, fieldName, result);
	return result;
}

function validateUserName(formIndex, fieldName, fieldDesc) {
	var result = true;
	if (//isObjectAvailable(formIndex, fieldName) && 
		!isRegisterUserName(getElementValue(formIndex, fieldName))) {
		errorMsgList += ' <li>' + fieldDesc + '只能由2-20位大小写字母、数字和下划线组成，并且第一个字符必须为英文字母。';
		result = false;
	}
	handleErrorField(formIndex, fieldName, result);
	return result;
} 

function validatePassword(formIndex, fieldName, fieldDesc) {
	var result = true;
	if (//isObjectAvailable(formIndex, fieldName) && 
		!isPasswd(getElementValue(formIndex, fieldName))) {
		errorMsgList += ' <li>' + fieldDesc + '只能由4-20位大小写字母和数字组成';
		result = false;
	}
	handleErrorField(formIndex, fieldName, result);
	return result;
}

function validate2Password(formIndex, fieldName, fieldDesc, fieldName2, fieldDesc2) {
	var result = true;
	if(getElementValue(0, fieldName) == '' && getElementValue(0, fieldName2) != '') {
		errorMsgList += ' <li>请填写' + fieldName;
		result = false;
	}
	handleErrorField(formIndex, fieldName, result);
	
	if(getElementValue(0, fieldName) != '' && getElementValue(0, fieldName2) == '') {
		errorMsgList += ' <li>对不起，您忘了填写' + fieldDesc2 + '了。';
		result = false;
	}
	handleErrorField(formIndex, fieldName2, result);
	
	if(getElementValue(0, fieldName) != getElementValue(0, fieldName2)) {
		errorMsgList += ' <li>两次填写的密码不一致！';
		result = false;
	}
	handleErrorField(formIndex, fieldName2, result);
}

function validateFromToDate(formIndex, fromDtName, fromDtDesc, toDtName, toDtDesc) {
	var result = true;
	if(//isObjectAvailable(formIndex, fromDtName) && 
		getElementValue(formIndex, fromDtName) != '' && getElementValue(formIndex, toDtName) != '' && compareDate(getElementValue(formIndex, fromDtName), getElementValue(formIndex, toDtName)) > 0) {
		errorMsgList += ' <li>' + fromDtDesc + '不可以晚于' + toDtDesc;
		result = false;
	}
	handleErrorField(formIndex, fromDtName, result);
	return result;
}

function generateErrorMsg(formIndex) {
	if (errorMsgList != '') {
		setErrorMsg('<span style=\"color: #000000;\">对不起，请检查并更正以下错误，再重新提交</span><br>' + errorMsgList);
		if (focusFieldName != '' && isObjectAvailable(formIndex, focusFieldName)) {
			doFocus(formIndex, focusFieldName);
		}
		return false;
	} 
	return true;
}

function generateErrorMsg2(formIndex, msgDivName, msgName) {
	if (errorMsgList != '') {
		setErrorMsg2(msgDivName, msgName, '<span style=\"color: #000000;\">对不起，请检查并更正以下错误，再重新提交</span><br>' + errorMsgList);
		if (focusFieldName != '' && isObjectAvailable(formIndex, focusFieldName)) {
			doFocus(formIndex, focusFieldName);
		}
		return false;
	} 
	return true;
}

function checkFileType (fieldObj) {
	var fileName = fieldObj.value; 
	if (fileName.length > 0) {
		var fileExtArr = fileName.split(".");
		if (fileExtArr.length > 0) {
			var fileExt = fileExtArr[fileExtArr.length - 1];
			if (fileExt != 'jpg' && fileExt != 'jpeg' && fileExt != 'gif' && fileExt != 'png' && fileExt != 'swf' && 
				fileExt != 'JPG' && fileExt != 'JPEG' && fileExt != 'GIF' && fileExt != 'PNG' && fileExt != 'SWF') {
				alert('上传文件的格式仅限JPG、GIF、PNG、SWF！');
				setElementValue(0, fieldObj.name, '');
			} 
		}
	}
}

function checkFormChanged(formIndex) {
 	var rtnVal = false;
  	var frm = document.forms[formIndex] ;
  
 	if (frm) {
   		var ele = frm.elements;
	 	for ( i=0; i < ele.length; i++ ) {
	 		if(ele[i].type != null || ele[i].type != undefined){
	 			if ( ele[i].type.length > 0 ) {
					if ( isElementChanged( ele, i ) ) {
						rtnVal = true;
						break;
					}
				}
	 		}
		}
 	} else {
   		for ( j=0;j < document.forms.length; j++ ) {
       		rtnVal = isFormChanged(document.forms[j]);
       		if( rtnVal ) break;
   		} 
 	}
 	return rtnVal;
}

function isElementChanged( ele, i ) {
    var isEleChanged = false;

	switch ( ele[i].type ) {
	    case "text" :
		    if ( ele[i].value != ele[i].defaultValue ) {
		     	//alert(ele[i].name);
		        return true;
		    }
			break;

	    case "textarea" :
            if ( ele[i].value != ele[i].defaultValue ) {
             	//alert(ele[i].name);
                return true;
            }
            break;

	    case "radio" :
		    if ( ele[i].checked != ele[i].defaultChecked ) {
		     	//alert(ele[i].name);
		        return true;
		    }
			break;

	    case "select-one" :
            if (ele[i].name != '') {
                hasDefaultValue = false;
                for ( var x =0 ; x <ele[i].options.length; x++ ) {
                    if ( ele[i].options[ x ].defaultSelected ) {
                        if ( ele[i].options[ x ].selected != ele[i].options[ x ].defaultSelected ) {
                         	//alert(ele[i].name);
                            return true;
                        }
                        hasDefaultValue = true;
                    }
                }
                //For those default value is null
                if ( !hasDefaultValue && ele[i].value != '' ) {
                 	//alert(ele[i].name);
                    return true;
                }
            }
            break;

	    case "select-multiple" :
		    for ( var x =0 ; x <ele[i].options.length; x++ ) {
			    if ( ele[i].options[ x ].selected != ele[i].options[ x ].defaultSelected ) { 
			     	//alert(ele[i].name);
			        return true;
			    }
            }
            break;

	    case "file" :
		    if ( ele[i].value != ele[i].defaultValue ) {
		     	//alert(ele[i].name);
		        return true;
		    }
		    break;
			
	    case "checkbox" :
		    if ( ele[i].checked != ele[i].defaultChecked ) {
		     	//alert(ele[i].name);
		        return true;
		    }
            break;

	    default:
		    return false;
	        break;
    }
}
//************************************************************************
