//This is validate script for tags
//by zoutao

var unSaveAlert=true; 
var formFieldValueChanged=false;
var dateAutoPatchZero=true;
var formFieldsValidate=true;
var patch4Textboxed=false;

function validateFormFields(formObj){
  var b=true;
  if(formFieldsValidate){
  if(formObj==undefined || formObj==null || formObj.altKey!=undefined ){
    formObj=event.srcElement;
    formFieldValueChanged=false;
  }  
    try{
      b=beforeValidateFormFields(formObj);
      if(b==undefined) b=true;
    }catch(e){}
    if(!b) return false;
  with(formObj)
  {
    var f,fields=elements;
    for(var i=0,j=fields.length;i<j;i++){
      try{
	      b=fields[i].validate()
	      if(b==false) return false;

	    }catch(e){}
    }

  }
  //true
  b=true;
  try{
      b=afterValidateFormFields(formObj);
      if(b==undefined) b=true;
    }catch(e){
    	
    	}
    }	
    return b;
}

function getElementByName_Attribute(named,attribute){
  var c=document.getElementsByName(named);
/*
	for(var i=0,j=c.length;i<j;i++){
		if(eval("c[i]."+attribute)==""){
		  return c[i]
		}
	}
*/
    for(var i=c.length-1;i>=0;i--){
		if(eval("c[i]."+attribute)==""){
		  return c[i]
		}
	}	
	return null;
} 

function customFormSubmit(formObj){

	formObj.submitBak=formObj.submit;
	formObj.submit=function (){		
		if(validateFormFields(this)){
                    formFieldValueChanged=false;
		    try{
                      formObj.submitBak();
                    }catch(e){}
		    return true;
		}
		else
			  return false;
	};
}

function patch4Textbox(){
	if(!patch4Textboxed){
	openBak=window.open;
	window.open=function(sUrl , sName, sFeatures, bReplace){
		try{
		  openBak(sUrl , sName, sFeatures, bReplace);
	  }catch(e){}
	}

	navigateBak=window.navigate;
	window.navigate=function(sURL){
		try{
		  navigateBak(sURL);
	  }catch(e){}
	}
  }else{
  	patch4Textboxed=true;
  }	
}

function getInformationPrefix(displayName){
	var str="";
	if(displayName==undefined || displayName==null || displayName=="null" || displayName.trim()==""){
		str="此域值必须";
	}else{
	  str=displayName+"必须";
  }
  return str;
}

function fieldValidate_required(field,displayName){
	var b=true;
	
	if(field.fieldRequired=="true"){
	try{
	  b=eval(field.onbeforevalidate+"(field)");
  }catch(e){
  	b=true;
  }
  if(b==undefined) b=true;
  if(!b) return b;
  }
	
	var str=getInformationPrefix(displayName);
	var v=field.value.trim();

	if(v.length==0){
		tabpageSelect(field);
		informer(str+"填写");
		try{
		field.select();
		}catch(e){		  	
		}
		return false;
	}
	return b;
}

function fieldValidate_int(field,condition1,condition2,displayName){
	var b=true;
	
	if(field.fieldRequired!="true"){
	try{
	  b=eval(field.onbeforevalidate+"(field)");
  }catch(e){
  	b=true;
  }
  if(b==undefined) b=true;
  if(!b) return b;
  }
	
	var str=getInformationPrefix(displayName);
	var v=field.value;
	if(v=="") return true;
	if( !checkIsNum(v) || !isInteger(v)){
		informer(str+"为整数");
		try{
		field.select();
		}catch(e){		  	
		}
		return false;
	}
	if(condition1!=null && condition1!="null" && condition2!=null && condition2!="null"){
		if(!( eval(v+condition1) && eval(v+condition2)) ){
			informer(str+condition1+"且"+condition2);
			try{
			field.select();
			}catch(e){		  	
		  }
		  return false;
		}
	}else	if(condition1!=null && condition1!="null" && !eval(v+equal_2(condition1))){
		informer(str+equal_1(condition1));
		try{
		field.select();
		}catch(e){		  	
		}
		return false;
	}
	
	try{
	  b=eval(field.onaftervalidate+"(field)");
  }catch(e){
  	b=true;
  }
  if(b==undefined) b=true;
  if(!b) return b;
	return true;
}

function fieldValidate_float(field,condition1,condition2,displayName){
	var b=true;
	
	if(field.fieldRequired!="true"){
	try{
	  b=eval(field.onbeforevalidate+"(field)");
  }catch(e){
  	b=true;
  }
  if(b==undefined) b=true;
  if(!b) return b;
  }
  
	var str=getInformationPrefix(displayName);
	var v=field.value;
	if(v=="") return true;
	if( !checkIsNum(v)){
		informer(str+"为数字");
		try{
		field.select();
		}catch(e){		  	
		}
		return false;
	}
        if(condition1!=null && condition1!="null" && condition2!=null && condition2!="null"){
                if(!( eval(v+condition1) && eval(v+condition2)) ){
			informer(str+condition1+"且"+condition2);
			try{
			field.select();
			}catch(e){		  	
		  }
		  return false;
		}
	}else if(condition1!=null && condition1!="null" && !eval(v+equal_2(condition1))){
               informer(str+equal_1(condition1));
         try{      
	       field.select();
	       }catch(e){		  	
		     }
               return false;
        }
        
        try{
	  b=eval(field.onaftervalidate+"(field)");
  }catch(e){
  	b=true;
  }
  if(b==undefined) b=true;
  if(!b) return b;
	return true;
}

function fieldValidate_mask(field,len1,len2,pattern,displayName){
	var b=true;
	try{
	  b=eval(field.onbeforevalidate+"(field)");
  }catch(e){
  	b=true;
  }
  if(b==undefined) b=true;
  if(!b) return b;
  
	var str=getInformationPrefix(displayName);
	var v=field.value;
	if(v=="") return true;
        if(len1!=null && len1!="null" && len1!=undefined && len2!=null && len2!="null" && len2!=undefined){
            if(!( eval("v.lengthEx()"+len1) && eval("v.lengthEx()"+len2)) ){
                informer(str+"的长度应"+len1+"个字节且"+len2+"个字节\n注：一个汉字字符为两个字节，其余字符为一个字节");
                try{
                field.select();
                }catch(e){		  	
		            }
                return false;
            }
	}else if(len1!=null && len1!="null" && len1!=undefined && !eval("v.lengthEx()"+equal_2(len1))){
                informer(str+"的长度应"+equal_1(len1)+"个字节\n注：一个汉字字符为两个字节，其余字符为一个字节")
		try{
		field.select();
		}catch(e){		  	
		}
		return false;
        }
	try{
		var re=eval("/"+pattern+"/");
	  if(!re.test(v)){
	  	informer(str+"是有效的格式")
	  	try{
			field.select();
			}catch(e){		  	
		  }
			return false;
	  }
  }catch(e){}
  	
  	try{
	  b=eval(field.onbeforevalidate+"(field)");
  }catch(e){
  	b=true;
  }
  if(b==undefined) b=true;
  if(!b) return b;
  
	return true;
}

function fieldValidate_email(field,len1,len2,displayName){
	var v=field.value;
	if(v=="") return true;
	if(displayName==undefined || displayName==null || displayName=="null" || displayName.trim()==""){
		displayName="电子邮件";
	}
	return fieldValidate_mask(field,len1,len2,"^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$",displayName);
}

function fieldValidate_string(field,len1,len2,displayName){
	var b=true;
	if(field.fieldRequired!="true"){
	try{
	  b=eval(field.onbeforevalidate+"(field)");
  }catch(e){
  	b=true;
  }
  if(b==undefined) b=true;
  if(!b) return b;
  }
  
	var str=getInformationPrefix(displayName);
	var v=field.value;
	if(v=="") return true;
	if(len1!=null && len1!="null" && len1!=undefined && len2!=null && len2!="null" && len2!=undefined ){
            if(!( eval("v.lengthEx()"+len1) && eval("v.lengthEx()"+len2)) ){
                informer(str+"的长度应"+len1+"个字节且"+len2+"个字节\n注：一个汉字字符为两个字节，其余字符为一个字节");
                try{
                field.select();
                }catch(e){		  	
		            }
                return false;
            }
	}else if(len1!=null && len1!="null" && len1!=undefined && !eval("v.lengthEx()"+equal_2(len1))){
                informer(str+"的长度应"+equal_1(len1)+"个字节\n注：一个汉字字符为两个字节，其余字符为一个字节")
		try{
		field.select();
		}catch(e){		  	
		}
		return false;
        }
        
        try{
	  b=eval(field.onaftervalidate+"(field)");
  }catch(e){
  	b=true;
  }
  if(b==undefined) b=true;
  if(!b) return b;
	return b;
}

function fieldValidate_date(field,pattern,displayName){
	var b=true;
	try{
	  b=eval(field.onbeforevalidate+"(field)");
  }catch(e){
  	b=true;
  }
  if(b==undefined) b=true;
  if(!b) return b;
  
	if(displayName==undefined || displayName==null || displayName=="null" || displayName.trim()==""){
		displayName="日期";
	}
	var str=getInformationPrefix(displayName);
	var v=field.value;
	if(v=="") return true;
	var index=getDatePatternIndex(pattern);
	if(index==null || typeof(eval("fieldValidate_date_"+index))!="function") {
		informer("还未实现对"+pattern+"格式日期的效验，请和管理员联系");
		return true;
	}
	b=eval("fieldValidate_date_"+index+"(field,str,"+index+")");
	if(!b) return b;
	
	try{
	  b=eval(field.onaftervalidate+"(field)");
  }catch(e){
  	b=true;
  }
  if(b==undefined) b=true;
  if(!b) return b;
	return b;
}

function fieldValidate_date_0(field,str,index){
	var re = field.value.match(eval("/"+datePatternMap[index][1]+"/"));
  var d=new Date();
  if(re==null){

 	   str=str+"的格式不正确，日期格式应为"+datePatternMap[index][0]+"\n";
 	   str=str+"注：yyyy代表4位数字的年，mm代表两位数字的月份，dd代表两位数字的天\n"
 	   str=str+"如今天应表示为："+d.getFullYear()+"-"+toAutoPatchZero(d.getMonth()+1+"")+"-"+toAutoPatchZero(d.getDate()+"");
 	   informer(str);
 	   try{
 	   field.select();
 	   }catch(e){		  	
		 }
     return false;
  }
  d = new Date(re[1], re[3]-1, re[4]);
   if(!(d.getFullYear()==re[1]&&(d.getMonth()+1)==re[3]&&d.getDate()==re[4])){
   	 informer("输入的日期不是有效的日期");
   	 try{
 	   field.select();
 	   }catch(e){		  	
		 }
     return false;
  }
  if(dateAutoPatchZero && datePatternMap[index][0].length!==field.value.length){
  	field.value=re[1]+"-"+toAutoPatchZero(re[3])+"-"+toAutoPatchZero(re[4]);
  }

	return true;
}

function informer(str){
	alert(str);
}

function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}

function isInteger (s)
{
	  var i;

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if(i==0 && c=="-") continue;
        if (!isDigit(c)) return false;
    }
    return true;
}
function equal_2(s){
  if(s!=null && s!=undefined && s.indexOf("==")==-1 && s.indexOf(">")==-1 && s.indexOf("<")==-1){
    return s.replace("=","==");
  }
  return s;
}
function equal_1(s){
  if(s!=null && s!=undefined && s.indexOf("==")!=-1 ){
    return s.replace("==","=");
  }
  return s;
}
var datePatternMap=new Array();
datePatternMap[0]=Array("yyyy-mm-dd","^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$");
datePatternMap[1]=Array("yyyy/mm/dd","");
datePatternMap[2]=Array("yyyymmdd","");

function getDatePattern(f){
	for(var i=0,j=datePatternMap.length;i<j;i++){
		if(f==datePatternMap[i][0] && datePatternMap[i][1].trim()!="")
		  return datePatternMap[i][1];
	}
	return null;
}

function getDatePatternIndex(f){
	for(var i=0,j=datePatternMap.length;i<j;i++){
		if(f==datePatternMap[i][0] && datePatternMap[i][1].trim()!="")
		  return i;
	}
	return null;
}

function toAutoPatchZero(str){
	if(str==undefined || str==null || str=="null") return str;
	if(dateAutoPatchZero){
		if(str.length==1)
		return "0"+str;
	}
	return str;
}

function getMyTabpageObj(obj){
	if(obj==null) return null;
	else if(obj.nodeType == 1 && obj.tagName.toLowerCase()=="div" && obj.tabPageIndex!=undefined && obj.tabPageIndex.trim()!=""){
		return obj;
	}else{
		return getMyTabpageObj(obj.parentNode);
	}	
}

function getMyTabpaneObj(obj){
	if(obj==null) return null;
	else if(obj.nodeType == 1 && obj.tagName.toLowerCase()=="div" && obj.tabPaneIndex!=undefined && obj.tabPaneIndex.trim()!=""){
		return obj;
	}else{
		return getMyTabpaneObj(obj.parentNode);
	}	
}

function tabpageSelect(el){
	try{
	var tabpage=getMyTabpageObj(el);
	if(tabpage==null){
		return ;
	}
	var pageindex=tabpage.tabPageIndex;
	var tabpane=getMyTabpaneObj(tabpage);
	if(tabpane==null){
		return ;
	}
	var len=tabpaneArray.length;
	var tabpaneId=tabpane.id;
	for(var i=0;i<len;i++){
		if(tabpaneId==tabpaneArray[i][0]){
			tabpaneArray[i][1].setSelectedIndex(pageindex);
			return;
		}
	}	
}catch(e){}
}



/*
function getAncestorByTagName(el, pTagName) {
	if (el == null) return null;
	else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase())
		return el;
	else
		return getAncestorByTagName(el.parentNode, pTagName);
}
*/
function fieldValidate_select_required(field,emptyvalue,displayName){
	var b=true;
	if(displayName==undefined || displayName==null || displayName=="null" || displayName.trim()==""){
		str="必须从此域中";
	}else{
	  str="必须从"+displayName+"中";
  }
  if(field.multiple){
  	for (i=0; i< field.options.length; i++){
  		if(field.options(i).selected && emptyvalue+""==field.options(i).value+""){
				informer(str+"选择非空值");
				tabpageSelect(field);
				try{					
				field.focus();
				}catch(e){		  	
		    }
				return false;
		  }
  	}

  }else{
		var v=field.value;
		if(emptyvalue+""==v+""){
			informer(str+"选择一值");
			try{
			field.focus();
		  }catch(e){		  	
		  }	
			
			return false;
		}
  }
	return b;
}

function submitMethod4Form(obj){
	if(obj==null || obj.tagName.toUpperCase( )!="FORM"){
		return;
	}
	obj.toSubmit=function(b){  //b=true,will be going to check formFieldValueChanged
		if(b){
			if(formFieldValueChanged && unSaveAlert){
	      var s="此页面的内容已经改变，并且还没有保存。\n是否继续？";
	      var bConfirmed=window.confirm( s);
	      if(!bConfirmed ) return false;
		  }
	}
	formFieldValueChanged=false;	
	unSaveAlert=false;
	formFieldsValidate=false;
	this.submit();
}	
}
var unSaveAlertAttach;
if(unSaveAlertAttach!=1){
	unSaveAlertAttach=1;
window.attachEvent("onbeforeunload",function(){
  if(formFieldValueChanged && unSaveAlert){
      var s="";
      if(event.returnValue!="" && event.returnValue!=undefined) {
        s=event.returnValue+"\n";
      }
      event.returnValue=s+"此页面的内容已经改变，并且还没有保存";
  }
})
}
