////////////////////////////////////////////////////////////////////////////////
//	name: evalform.js
//	note: 使用时需要在被判断的Input对象中加入属性值。
//			MUST=1										说明该Input对象必填。
//          MUST = 2                                    说明这是使用了部门用户联选的必填项
//          isEmail = 1                                 说明该Input对象必须填写符合EMAIL格式的值（不要求必填）。
//			isNumeric = 1 								说明该Input对象必须填写数字类型的值（不要求必填）。
//			isDate = 1									说明该Input对象必须填写日期类型（YYYY-MM-DD）的值（不要求必填）。
//		此处还提供了另外几个函数：
//			isDate(objTgt)							判断传入对象objTgt中填写的值（objTgt.value）是否为日期类型。
//			judgeLeapYear(yearStr)						是否为闰年。
//			judgeSmallMonth(monthStr)					是否为小月。
//			isInt(objNumber)						是否为整数。
//			isModified(eForm)						页面是否有过修改。
////////////////////////////////////////////////////////////////////////////////


// 表单提交之前，在页面上判断输入的合法性（必填MUST、数字isNumeric、日期isDate)。
function evalForm(formName){
	var isLeapYear=false; /*闰年[二月为29天]*/
	var isSmallMonth=false; /*小月[该月为30天]*/

	if (!document.forms(formName)) return false;
	for (i=0;i<document.forms(formName).length;i++)	{
		objTgt = document.forms(formName).item(i);
		// 对于所有 Text 输入框中的值进行去空操作。
		if(objTgt.type=="text")objTgt.value=objTgt.value.trim();

		if (objTgt.MUST==1&&objTgt.value==''){
			if (objTgt.disabled==true){
				return true;
			}else{
				if(objTgt.title!=""){
					errAlert (" ["+objTgt.title+"] 为必填项! 请填写!","为了保证数据的完整性，系统要求某些值必须填写，\n现在您没有填写其中的 ["+objTgt.title+"] 这一项。","重新填写 ["+objTgt.title+"] 这一项。");
				}else{
					errAlert("必填项未填写 !","为了保证数据的完整性，系统要求某些值必须填写，\n现在您没有填写其中的某几项。","返回重新填写。");
				}
				focusItem(objTgt);
				return false;
			}
		}

		if (objTgt.MUST==2&&objTgt.value==''){
			if (objTgt.disabled==true){
				return true;
			}else{
				if(objTgt.title!=""){
					alert (" ["+objTgt.title+"] 未填写 !"+"为了保证数据的完整性，系统要求某些值必须填写，\n现在您没有填写其中的 ["+objTgt.title+"] 这一项。"+"重新填写 ["+objTgt.title+"] 这一项。");
				}else{
					alert("必填项未填写 !" + "为了保证数据的完整性，系统要求某些值必须填写，\n现在您没有填写其中的某几项。" + "返回重新填写。");
				}

				if (window.frames(objTgt.ifrName).f1.dept.value == "0")
					window.frames(objTgt.ifrName).f1.dept.focus();
				else
					window.frames(objTgt.ifrName).f1.user.focus();
				//focusItem(objTgt);
				return false;
			}
		}

		if(objTgt.value!=''){
			if (objTgt.isNumeric==1){
				if (isNaN(objTgt.value)){
					if(objTgt.title!=""){
						errAlert ("["+objTgt.title+"] 项中应该填写数字 !","为了保证数据的准确性，系统要求某些值必须填写数字，\n现在您在 ["+objTgt.title+"] 项中没有填写数字。","重新填写 ["+objTgt.title+"] 这一项。");
					}else{
						errAlert ("应该填写数字 !","为了保证数据的准确性，系统要求某些值必须填写数字，\n现在您在某几项中没有填写数字。","重新填写。");
					}

					focusItem(objTgt);
					return false;
				}

				var objTgtValue=new Number(objTgt.value);
				var maxV=objTgt.maxValue;
				var minV=objTgt.minValue;

				if(objTgt.isPow==1){
					if (Math.abs(objTgtValue)>=Math.pow(10,maxV)||Math.abs(objTgtValue)<Math.pow(10,(minV-1))){
						errAlert ("所填数字超出规定范围!");

						focusItem(objTgt);
						return false;
					}
				}else{
					if(objTgtValue.valueOf()>maxV||objTgtValue.valueOf()<minV){
						errAlert ("所填数字超出规定范围!");

						focusItem(objTgt);
						return false;
					}
				}
			}

			if (objTgt.isDate==1){
				if(isDate(objTgt)==false){return false;}
			}
			if (objTgt.isEmail==1){
				if(isEmail(objTgt)==false){return false;}
			}
		}

	}
	return true;
}
// 判断是否是日期。
function isDate(objTgt){
	var inDate=objTgt.value;

	if (inDate.length>=6 && inDate.length<=10 && inDate.indexOf("-")!=-1 && inDate.indexOf("-")!=inDate.lastIndexOf("-") && inDate.substring(inDate.indexOf("-")+1,inDate.lastIndexOf("-")).indexOf("-")==-1){
		var inYear=parseInt(inDate.substring(0,inDate.indexOf("-")));
		var inMonth=inDate.substring(inDate.indexOf("-")+1,inDate.lastIndexOf("-"));
			if (inMonth.substring(0,1)=="0" && inMonth.length>1)
				inMonth=inMonth.substring(1,inMonth.length);
			inMonth=parseInt(inMonth);
		var inDay=inDate.substring(inDate.lastIndexOf("-")+1,inDate.length);
			if (inDay.substring(0,1)=="0" && inDay.length>1)
				inDay=inDay.substring(1,inDay.length);
			inDay=parseInt(inDay);

		if (inYear && !(isNaN(inYear)) && inYear.toString().length==4){
			var year=inYear;
			isLeapYear=judgeLeapYear(inYear);
		}else if(inYear.toString().length!=4){
			errAlert("对不起，系统需要四位年 !","为了保证日期存储的准确性，系统要求所有的日期输入都使用四位数字表示年份，\n可是您在 ["+objTgt.title+"] 项中没有使用四位年输入。","重新输入 ["+objTgt.title+"] 这一项。");

			focusItem(objTgt);
			return false;
		}else{
			errAlert("年份填写有误 !","","");

			focusItem(objTgt);
			return false;
		}

		if (inMonth && !(isNaN(inMonth)) && inMonth<=12 && inMonth >=1){
			var month=inMonth;
			isSmallMonth=judgeSmallMonth(inMonth);
		}else{
			errAlert("月份填写有误 !","表示月份的数字必须处于1到12之间，可是您在 ["+objTgt.title+"] 项中填写的 "+inMonth+" 显然不在这个范围内。","重新填写 ["+objTgt.title+"] 这一项。");

			focusItem(objTgt);
			return false;
		}

		if (inDay && !(isNaN(inDay)) && inDay>=1 && (month==2?(isLeapYear?inDay<=29:inDay<=28):(isSmallMonth?inDay<=30:inDay<=31))){
			var day=inDay;
		}else{
			errAlert("日期填写有误 !","表示日期的数字必须处于1到31之间，而且必须满足闰年和大小月规则，\n可是您在 ["+objTgt.title+"] 项中填写的 "+inDay+" 显然不满足要求。","重新填写 ["+objTgt.title+"] 这一项。");

			focusItem(objTgt);
			return false;
		}

		var inputDate=new Date();
		if (!(Date.parse(month + "-" + day + "-" + year))){
			errAlert("日期填写有误 !","为了保证日期存储的准确性，系统要求所有的日期输入都按照 YYYY-MM-DD 的格式输入，\n可是您在 ["+objTgt.title+"] 项中的输入值 ["+objTgt.value+"] 不满足输入要求。","重新输入 ["+objTgt.title+"] 这一项。");

			focusItem(objTgt);
			return false;
		}

	}else{
		errAlert("您输入的不是一个完整的日期值 !","为了保证日期存储的准确性，系统要求所有的日期输入都按照 YYYY-MM-DD 的格式输入，\n可是您在 ["+objTgt.title+"] 项中的输入值 ["+objTgt.value+"] 不满足输入要求。","重新输入 ["+objTgt.title+"] 这一项。");

		focusItem(objTgt);
		return false;
	}
}

// 判断闰年。
function judgeLeapYear(yearStr){
	if(!(isNaN(yearStr)) && yearStr.toString().length==4 && (yearStr%100==0?yearStr%400==0:yearStr%4==0))
		return true;
	return false;
}

// 判断小月。
function judgeSmallMonth(monthStr){
	if(monthStr==4||monthStr==6||monthStr==9||monthStr==11)
		return true;
	return false;
}

// 是否整数。
function isInt(objNumber){
	if(!isNaN(objNumber)){
		if(Math.round(objNumber)==objNumber){
			return ture;
		}else{
			return false;
		}
	}else{
		return false;
	}
}

// 使INPUT对象获取焦点。
function focusItem(objTgt){
	//objTgt.select();
	objTgt.focus();
}

// 判断页面是否修改过。
// 传入要判断页面的对象 -- eForm。
// 返回值：
// true -- 曾经修改过
// false -- 没有修改过
function isModified(eForm){
	var iNumElems = eForm.elements.length;
	for (var i=0;i<iNumElems;i++){
		var eElem = eForm.elements[i];
		// 输入框是否修改。
		if ("text" == eElem.type || "TEXTAREA" == eElem.tagName){
			if (eElem.value != eElem.defaultValue) return true;
		}
		// checkBox和radioBox是否修改。
		else if ("checkbox" == eElem.type || "radio" == eElem.type){
			if (eElem.checked != eElem.defaultChecked) return true;
		}
		// select是否修改。
		else if ("SELECT" == eElem.tagName){
			var cOpts = eElem.options;
			var iNumOpts = cOpts.length;
			for (var j=0;j<iNumOpts;j++){
				var eOpt = cOpts[j];
				if (eOpt.selected != eOpt.defaultSelected) return true;
			}
		}
	}
	return false;
}

function isEmail(objTgt) {
	var email=/^[A-Za-z0-9][\w-.]+[A-Za-z0-9]@[A-Za-z0-9]([\w-.]+[A-Za-z0-9]\.)+([A-Za-z]){2,4}$/i;
	if (email.test(objTgt.value))
		return true;
	else
	{
		if(objTgt.title!=""){
			errAlert ("["+objTgt.title+"] 项中应该填写符合EMAIL格式的字串 !","\n现在您在 ["+objTgt.title+"] 项中没有填写符合EMAIL格式的字串。","重新填写 ["+objTgt.title+"] 这一项。");
		}else{
			errAlert ("应该填写符合EMAIL格式的字串 !","\n现在您在某几项中没有填写符合EMAIL格式的字串。","请重新填写。");
		}
		
		focusItem(objTgt);
		return false;
	}
}

//////////////////////////////////////////////////////////////////////////////////////////////////
//
//
//来自standardoutput.js
////////////////////////////////////////////////////////////////////////////////////////////////
function errAlert(errContent,errReason,errSolve){
	var errAlertString="";
	if(errContent!=""&&errContent!="undefined"){
		errAlertString=errContent;

		//if(errReason!=""&&errReason!="undefined")
		//	errAlertString+="\n发生原因：\n"+errReason;

		//if(errSolve!=""&&errSolve!="undefined")
		//	errAlertString+="\n\n解决方法：\n"+errSolve;

		//errAlertString+="\n";

		alert(errAlertString);

	}else{
		alert("调试期间错误 !\n\n错误内容为空 !");
	}
}


// 警告信息。
function warnAlert(warnContent){
	var warnAlertString="";

	if(warnContent!=""){
		warnAlertString="警告：\n"+warnContent+"\n";

		alert(warnAlertString);

	}else{
		alert("警告内容为空!");
	}
}

//////////////////////////////////////////////////////////////////////////////////////////////////
//
//
//来自conmonstyle.js
////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
//	name: commonstyle.js
//	version: 1.5
//	date: Apr 14, 2001
//	description: Provide some function to take effect of page.
//	note: 
////////////////////////////////////////////////////////////////////////////////


// 获取对象事件。
document.onmouseover=setFocus;
document.onmouseout=rmFocus;

// 当对象获得mouseover事件时……
function setFocus(){
	objSrc=window.event.srcElement;

	// 标准按钮。
	if (objSrc.className=='standardButton'){
		objSrc.className='standardButton_hover';
	}

	// 。
	if (objSrc.className=='div_actionmenu'){
		objSrc.className='div_actionmenu_hover';
	}

	// 。
	if (objSrc.className=='reg_text_no_border'){
		objSrc.className='reg_text_no_border_hover';
	}

}

// 当对象获得mouseout事件时……
function rmFocus(){
	objSrc=window.event.srcElement;

	// 标准按钮。
	if (objSrc.className=='standardButton_hover'){
		objSrc.className='standardButton';
	}

	//
	if (objSrc.className=='div_actionmenu_hover'){
		objSrc.className='div_actionmenu';
	}

	//
	if (objSrc.className=='reg_text_no_border_hover'){
		objSrc.className='reg_text_no_border';
	}

}	

// 将当前页面上所有class为className的DIV置为不可见。
function cancelAllDiv(className){
	var allAction=document.all.tags("DIV");
	for(i=0;i<allAction.length;i++){
		if(allAction[i].className==className)
			allAction[i].style.display='none';
	}
}

// trim()方法。
String.prototype.trim = function(){
    // 用正则表达式将前后空格用空字符串替代。
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

// 类似DateDiff("d"...)的方法。
// 传入参数为日期的字符串，格式：10-2-2001，Sep 4, 2001等等。
// 返回dateOne和dateTwo之间的天数。
// 负值说明dateOne小于dateTwo。
function dateDayDiff(dateOne,dateTwo){
	var returnDays;
	var dateOneP,dateOneM;
	var dateTwoP,dateTwoM;

	// 初始化变量。
	var minMilli = 1000 * 60;
	var hrMilli = minMilli * 60;
	var dyMilli = hrMilli * 24;

	// 得到该日期(午夜00:00:00)与1970年1月1日午夜之间的毫秒数。
	dateOneM=Date.parse(dateOne);
	dateTwoM=Date.parse(dateTwo);

	// 得到该日期与1970年1月1日之间的天数。
	dateOneP=Math.round(Math.abs(dateOneM/dyMilli))
	dateTwoP=Math.round(Math.abs(dateTwoM/dyMilli))

	returnDays=dateOneP-dateTwoP;

	return(returnDays);
}

// 转换日期型字符串为标准格式。
// 参数dateStr格式为：YYYY-MM-DD
// 返回日期字符串格式为：MM-DD-YYYY
function changeDateFormat(dateStr){
	return(dateStr.substring(dateStr.indexOf("-")+1,dateStr.length) + "-" + dateStr.substring(0,dateStr.indexOf("-")));
}

// 初始化页面。
function initPage(){
	objTgt=window.event.srcElement;
	cancelAllDiv("activeAction"); // 将activeAction置为不可见。
}

function disHelp(){
	alert("帮助系统正在建设中……\n\n");
}