//isNull="true|false" 是否可为空
//intLength,floatLength 浮点型数据
//intLength  整型数据
//textLength 文本最大长度
//minLenght 文本最小长度
//eMail="true|false" 是否是合法Email
//isDate="normal|long" 是普通日期或长日期

var PACKAGE="package";

/////检查FORM的输入内容
function checkForm(formelement){
	for (var i=0; i< formelement.length; i++)
	{
		var element= formelement.item(i);
          	if (checkInputValue(element)==false)
              		return false;
	}
	return true;
}

/////检查Input的输入内容
function checkInputValue(element){
    	//检查是否为空
	if ((typeof(element.isNull) != 'undefined')&&(element.isNull.toLowerCase() =="false"))
	{
		if (!checkInputNull(element))
		{
		
            element.focus();
			return false;
		}
	} 
	
	//检查浮点型数据的合法性
     	if ((typeof(element.intLength) != 'undefined')&&(typeof(element.floatLength) != 'undefined'))
          	if (!checkInputfloatLength(element,element.intLength,element.floatLength)) {
               		element.focus();
                      	return false;
          	}
	//检查整型数据的和法性
     	if ((typeof(element.intLength) != 'undefined')&&(typeof(element.floatLength) == 'undefined'))

          	if (!checkInputIntLength(element,element.intLength)) {
                      element.focus();
                      return false;
          	}
	//检查混合字符串的长度
	if (typeof(element.textLength) != 'undefined')
        	if (!checkInputStrLength(element,element.textLength)){
               		element.focus();
                      	return false;
          	}
	//检查输入值的最小长度
     	if (typeof(element.minLength) != 'undefined')
          	if (!checkInputStrMinLength(element,element.minLength)){
               		element.focus();
                      	return false;
          	}
        //检查是否是合法的Email
     	if ((typeof(element.eMail) != 'undefined')&&(element.eMail.toLowerCase()=="true"))
          	if (!checkInputemail(element)){
               		element.focus();
                      	return false;
          	}

        //检查是否是合法的日期
        if ((typeof(element.isDate) != 'undefined')&&(element.isDate.toLowerCase()=="normal" || element.isDate.toLowerCase()=="long")) {
        	if (!checkInputDate(element)){
               		element.focus();
                      	return false;
          	}
        }

	return true;
}

//检查Input的内容不能为空
function checkInputNull(element)
{
	if (element.tagName.toUpperCase()=="SELECT")
	{
		if (element.selectedIndex == -1 || element.value=="")
		{
			if (typeof(element.alertTitle) != 'undefined')
				alert(element.alertTitle+":选择值不能为空");
			else
				alert("在该项选择值不能为空");
			return false;
		}
		return true;
	} else if (element.tagName.toUpperCase()=="RADIO") {

        	for (var i = 0 ; i<element.length; i++ )
                {
                 	if (element[i].checked)
                         	return true;
                }
                return false;

	} else {
		var value = element.value;
		if (value.length == 0){
			element.focus();
			if (typeof(element.alertTitle) != 'undefined')
				alert(element.alertTitle+":输入值不能为空");
			else
				alert("在该项输入值不能为空");
			return false;
		}
		return true;
	}
}

//检查Input的float型的整数和小数部分的长度
function checkInputfloatLength(element,IntLength,floatLength)
{
	var value = (element.value);
    	if (value=="")
            return true;
    	var temp = value.split(".");
        //小数点
        if (temp.length>2) {
        	element.focus();
		if (typeof(element.alertTitle) != 'undefined')
			alert(element.alertTitle+":输入的数字只能有一个小数点");
		else
			alert("在该项输入的数字只能有一个小数点");
        	return false;
        }

        //整数部分
        if (temp[0]!=null) {
        	var iLength = temp[0].length;
        	for (var i=0; i<temp[0].length;i++) {
            	  ch = temp[0].charAt(i);
            	  if (ch < "0" || ch > "9" ){
			element.focus();
			if (typeof(element.alertTitle) != 'undefined')
				alert(element.alertTitle+":输入的值只能是数字");
			else
				alert("在该项输入的值只能是数字");
			return false;
            	  }
        	}

        	if (iLength>IntLength*1) {
        		element.focus();
			if (typeof(element.alertTitle) != 'undefined')
				alert(element.alertTitle+":输入的整数位数不能超过" + IntLength + "位");
			else
				alert("在该项输入的整数位数不能超过" + IntLength + "位");
                        return false;
        	}
        }

        //小数部分
        if (temp[1]!=null) {
                var fLength = temp[1].length;
                for (var i=0; i<temp[1].length;i++) {
                    ch = temp[1].charAt(i);
                    if (ch < "0" || ch > "9" ){
	        	element.focus();
		        if (typeof(element.alertTitle) != 'undefined')
			        alert(element.alertTitle+":输入的值只能是数字");
        		else
	        		alert("在该项输入的值只能是数字");
		        return false;
                    }
                }
                if (fLength>floatLength*1) {
        	        element.focus();
        		if (typeof(element.alertTitle) != 'undefined')
	        		alert(element.alertTitle+":输入的小数位数不能超过" + floatLength + "位");
		        else
			        alert("在该项输入的小数位数不能超过" + floatLength + "位");
        		return false;
                }
        }

        return true;

}

//检查Input的int型的整数的长度
function checkInputIntLength(element,IntLength) {
	var value = (element.value);
	for (var j = 0; j<  value.length; j++){
		var ch = value.substr(j, 1);
		if (ch < "0" || ch > "9" ){
			element.focus();
			if (typeof(element.alertTitle) != 'undefined')
				alert(element.alertTitle+":请输入合法数字");
			else
				alert("在该项输入合法数字");
			return false;
		}
	}

	if (value.length > IntLength*1)
	{
		element.focus();
		if (typeof(element.alertTitle) != 'undefined')
			alert(element.alertTitle+":输入的整数位数不能超过" + IntLength + "位");
		else
			alert("在该项输入的整数位数不能超过" + IntLength + "位");
		return false;
	}
	return true;
}

//检查Input的内容长度
function checkInputStrLength(element,StrLength){
	var actualLength=0;
    	for (var i=0;i<element.value.length;i++) {
        	if (escape(element.value.charAt(i)).length==6)
                	actualLength=actualLength+2;
                else
                	actualLength=actualLength+1;
    	}

	if (actualLength >StrLength*1 ){
		element.focus();
		if (typeof(element.alertTitle) != 'undefined')
			alert(element.alertTitle+":输入值的长度不能大于" + StrLength);
		else
			alert("在该项输入值的长度不能大于" + StrLength);
		return false;
	}
	return true;
}

//检查Input的内容Min长度
function checkInputStrMinLength(element,StrLength){
	var actualLength=0;
    	for (var i=0;i<element.value.length;i++) {
        	if (escape(element.value.charAt(i)).length==6)
                	actualLength=actualLength+2;
                else
                	actualLength=actualLength+1;
    	}
	if (actualLength < StrLength*1 ){
		element.focus();
		if (typeof(element.alertTitle) != 'undefined')
			alert(element.alertTitle+":输入值的长度不能小于" + StrLength);
		else
			alert("在该项输入值的长度不能小于" + StrLength);

		return false;
	}
	return true;
}

///////检查email输入信息
function  checkInputemail(element){
    	var inputString = element.value;
	var atIndex = inputString.indexOf('@');
	var dotIndex = inputString.indexOf('.',atIndex);
	theSub = inputString.substring(0,dotIndex+1);
	if ((atIndex<1) || (atIndex != inputString.lastIndexOf('@')) || (dotIndex < atIndex + 2) || (inputString.length <= theSub.length))
	{
		if (typeof(element.alertTitle) != 'undefined')
			alert(element.alertTitle+":不正确邮件格式. 正确格式如下 user@company.com");
		else
			alert("不正确邮件格式. 正确格式如下 user@company.com");

		return false;
	}
	return true;
}

//---------------------------------------------------------------
//功能：检查是否为时间类型
//模式：yyyy-mm-dd
//参数：
//		inputString -- 输入值
//---------------------------------------------------------------
function checkInputDate(element) {
	if (element.value == "")
		return true
    var inputString = element.value;
    var mo, day, yr;
    var entry = inputString;
	//alert(entry);
    var re = /\d{4}\b[-]\b\d{1,2}\b[-]\b\d{1,2}/;

    var alertMsg = "";
    if (typeof(element.alertTitle) != 'undefined')
	alertMsg = element.alertTitle+":";

    if (re.test(entry)) {
		//alert('12345');
        var delimChar = "-";
        var delim1 = entry.indexOf(delimChar);
        var delim2 = entry.lastIndexOf(delimChar);
        yr = parseInt(entry.substring(0, delim1), 10);
        mo = parseInt(entry.substring(delim1+1, delim2), 10);
        day= parseInt(entry.substring(delim2+1), 10);
        var testDate = new Date(yr, mo-1, day);
        //alert(testDate);
        if (testDate.getDate( ) == day) {
            if (testDate.getMonth( ) + 1 == mo) {
                if (testDate.getFullYear( ) == yr) {
                    return true;
                } else {
                    alert(alertMsg+"输入年有误！");
                }
            } else {
                alert(alertMsg+"输入月有误！");
            }
        } else {
            alert(alertMsg+"输入日有误!");
        }
    } else {
        alert(alertMsg+"不正确日期格式. 日期输入格式如下 yyyy-mm-dd");
    }
    return false;
}

//*********************************************************************************
//  函数名：
//            CheckIDAsMod11
//  函数说明：
//            18位身份证号码较验位生成
//  输入参数：
//            strID    待校验的身份证号码
//  返回值：
//           false：          不符合标准
//           true：          符合标准
//*********************************************************************************
function CheckIDAsMod11(strID)
{
       var arrWeight;
       var arrCheck;
       var nLen;
       var i,k;
       var nTotal;
       var nCheckNum;
       var strCh;

       arrWeight = new Array(1, 2, 4, 8, 5, 10, 9 ,7, 3, 6);
       arrCheck = new Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2");
       nTotal = 0;
       nLen = strID.length;

       strCh = strID.charAt(nLen - 1);

       for(i = 1; i < nLen; i++)
       {
              k = parseInt(strID.charAt(nLen - i - 1));
              nTotal = nTotal + arrWeight[i % 10] * k;
       }

       nCheckNum = nTotal % 11;

       if(arrCheck[nCheckNum] == strCh)
       {
              return true;
       }      
	   return false;
}

//表单的初始化方面
//主要包括回车转Tab，回车直接调用按钮

//表单域初始化方法
function form_init(formelement,btname){
    var button = document.all(btname);
    	
	for (var i=0; i< formelement.length; i++)
	{
		var element= formelement.item(i);
            	elementEnterToTab(element,button);
            	//elementInitAlertTitle(element);
            	//elementInitFocus(element);
            	//elementInitOnblur(element);
	}
}

//重载获得焦点的方法，主要用于控制CSS显示
function elementInitFocus(element) {
	if ( element.type != "button" && element.type !="submit" && element.type !="reset" ) {
		element.onfocus = function () {getFocus(element);};
	}	
}

function getFocus(vid) {
		var temp = document.all((vid.id==null || typeof(vid.id) == 'undefined' || vid.id == ""?vid.name:vid.id)+"_div");

		if (temp!=null) {
			temp.className = "notetrue";
		}	
}

//重载获得焦点的方法，主要用于控制CSS显示
function elementInitOnblur(element) {
	if ( element.type != "button" && element.type !="submit" && element.type !="reset" ) {
		element.onblur = function () {lostFocus(element);};		
	}	
}

function lostFocus(vid) {
		var temp = document.all((vid.id==null || typeof(vid.id) == 'undefined' || vid.id == ""?vid.name:vid.id)+"_div");

		if (temp!=null) {
			temp.className = "note";
		}
		
		if (typeof(nextBlurEvent) == "function" ) {
			invokeFunction(nextBlurEvent);
		}
}

//回车向下走一个元素
function elementEnterToTab(element,button) {
	if ( element.type != "button" && element.type !="submit" && element.type !="reset" ) {
	    if(typeof(button.name) == 'undefined'){
            	if (element.type!="textarea")
			element.onkeydown=enterToTab;
	    } else {
            	element.onkeydown=function() {enterToClick(button);};
	    }
	}
}

function elementInitAlertTitle(element) {
	if ( element.type != "button" && element.type !="submit" && element.type !="reset" ) {
	    	var preNode = element.parentNode.previousSibling;
                if (typeof(preNode) != 'undefined') {
                	element.setAttribute("alertTitle",preNode.innerText);
                }

	}

}

//////////////从enter转向tab////////////
function enterToTab(){
	var nKey = window.event.keyCode;
	if (nKey == 13){
		window.event.keyCode = 9;
	}
}

//////////////从enter转向tab////////////
function enterToClick(button){
	var nKey = window.event.keyCode;
	if (nKey == 13){
		button.focus();
	}
}

//工具函数部分
function initFormElement(elename,elevalue) {
	var formElement = document.getElementById(elename);
    	if (formElement!=null) {
        eleval = decode(elevalue);
        formElement.oldvalue = eleval;
        if ( formElement.type == "text") {
			initInput(elename,eleval);
         //隐藏字段
        } else if ( formElement.type == "hidden") {
        	initInput(elename,eleval);
         //密码字段
        } else if ( formElement.type == "password") {
        	initInput(elename,eleval);
        //多选框数据
        }        //多行文本框数据
        else if ( formElement.type == "textarea") {
	        initInput(elename,eleval);
        //多选框数据
        } else if ( formElement.type == "checkbox" ) {
           	initCheckBox(elename,eleval);
        //单选框数据
        } else if ( formElement.type == "radio" ) {
            	initRadio(elename,eleval);
        //下拉菜单数据
        } else if ( formElement.type == "select-one" ) {
		initSelect_One(elename,eleval);
        }
        //列表菜单数据
        else if ( formElement.type == "select-multiple" ) {

        }

    	}
}

//根据多选框的名称,初始值(以,分隔)设定多选框的值
function initCheckBox(cbname,val) {
     	tts = val.split(',');
        ft = document.all(cbname);
    	for (var i = 0 ; i < ft.length ; i++ ) {
              for (var j = 0; j < tts.length ; j++ ) {
               	  if (ft[i].value== tts[j]) {
               		ft[i].checked=true;
                        break;
                  }
            	}
        }
}

//根据单选框的名称和值初始化值
function initRadio(rdname,val) {
    	ft = document.all(rdname);
	for (var i = 0 ; i < ft.length ; i++ ) {
               	if (ft[i].value== val) {
              		ft[i].checked=true;
                       	break;
               	}
	}
}

//初始化文本框
function initInput(ipname,val) {
    	ft = document.all(ipname);
    	if (ft!=null) {
                ft.value = val;
    	}
}

//初始化下拉框
function initSelect_One(soname,val) {
    	ft = document.all(soname);
    	if (ft!=null) {
                ft.value = val;
    	}
}

// 下拉框左右转移
// src----源下拉框
// des----目的下拉框
function selectContent(src,des)
{
  for( var oindex =src.length-1 ; oindex >= 0 ; oindex--)
  {
	  var olength=des.length;
	  if(src.options[oindex].selected)
	  {

	    var otext=src.options[oindex].text;
	    var ovalue=src.options[oindex].value;
        des.options[olength]=new Option(otext,ovalue);
        //des.options[olength].value=ovalue;
  	    //src.options[oindex]=null;
  	    src.remove(oindex);

	  }
  }

  for( var oindex = 0 ; oindex < src.length ; oindex++)
  {
  		var otext=src.options[oindex].text;
	    var ovalue=src.options[oindex].value;
        src.options[oindex]=new Option(otext,ovalue);

  }
}

// 下拉框左右调整(单笔双击)
// src----源下拉框
// des----目的下拉框
function changeContent(src,des)
{
     var oindex=src.selectedIndex;
     if (oindex == -1) {
     	return false;
     }
     var olength=des.length;
     var otext=src.options[oindex].text;
     var ovalue=src.options[oindex].value;
     des.options[olength]=new Option(otext,ovalue);
     src.remove(oindex);

       for( var oindex = 0 ; oindex < src.length ; oindex++)
       {
            var otext=src.options[oindex].text;
            var ovalue=src.options[oindex].value;
            src.options[oindex]=new Option(otext,ovalue);
       }
}

//得到完整的时间字符串
function getDateTime(vday,vhour,vmi) {
     var dtstr="";
     if (vday!="")
     	if (vhour!="")
          	if (vmi!="")
               	dtstr = vday+" "+vhour+":"+vmi;
               else
               	dtstr = vday+" "+vhour;
     	else
          	dtstr = vday;

     return dtstr;
}

//获得当前时间
//1、长时间 包括时分秒
function getDateTime(s) {
	var today       = new Date();
	todayDay   = today.getDate();
	todayMonth = today.getMonth();
	todayYear  = today.getFullYear();

     todayHour  = today.getHours();
     todayMinute= today.getMinutes();
     todaySecond= today.getSeconds();
     if (s == '1')
     	return todayYear+"-"+todayMonth+"-"+todayDay+" "+todayHour+":"+todayMinute+":"+todaySecond;
     else
     	return todayYear+"-"+todayMonth+"-"+todayDay+" 00:00:00";
}

//得到select控件的所有内容，以|分隔
function getSelectContent(sel) {
   var rtn = "";
   for( var oindex = 0 ; oindex < sel.length ; oindex++)
   {
        var ovalue=sel.options[oindex].value;
        rtn+=ovalue+"|";
   }
   
   return rtn;
}

function invokeFunction(function_name,param){
     var paramstr="";

     if (arguments.length == 2)
          for(i=0; i<param.length; i++){
               if (i==0)
                    paramstr="param["+i+"]";
                else
                    paramstr=paramstr+",param["+i+"]";
          }   
  	  eval("result="+function_name+"("+paramstr+");");

}

function isChecked(obj) {
	var ischecked=false;
	for (var i=0 ; i<obj.length; i++) 
	{
	    if (obj[i].checked) {
			ischecked = true;
			break;
		}
	}
	
	return ischecked;
}

function load_form() {
}

function fieldToRead(obj) {
	if (typeof(obj) != 'undefined') {
		obj.readOnly=true;
		if (typeof(obj.onfocus) == "function")
			obj.onfocus = function(){};
	}
}

function fieldToWrite(obj) {
	if (typeof(obj) != 'undefined') {
		obj.readOnly=false;
		if (typeof(obj.onfocus) == "function")
			obj.onfocus = function(){setday(this);};
	}
}