// include.js
var debugMode = false;
//develop by zoutao@126.com


//检查是否为任意数（实数）  
function  isNumeric(strNumber)  {  
   var  newPar=/^(-  |\+)?\d+(\.\d+)?$/  
   return  newPar.test(strNumber);  
}  
//检查是否为正数  
function  isUnsignedNumeric(strNumber)  {  
   var  newPar=/^\d+(\.\d+)?$/  
   return  newPar.test(strNumber);  
}  
//检查是否为整数  
function  isInteger(strInteger)  {  
   var  newPar=/^(-  |\+)?\d+$/  
   return  newPar.test(strInteger);  
}  
//检查是否为正整数  
function  isUnsignedInteger(strInteger)  {  
   var  newPar=/^\d+$/  
   return  newPar.test(strInteger);  
}    

//var r=new RenderFormFileds();  
//r.excludeNames="select";  
//r.excludePreNames=new Array("multS");
//r.render();
//r.render2none("customRequired")  
//r.selectUnselectedValue=new Array("","-100");
//r.renderEx("select","女")
//r.renderExById("select")

var excludeProtocols=new Array("file","ftp","gopher","javascript","mailto","news","res","telnet","view-source");

String.prototype.trim = function()
{
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

function fillPageCtrlObject2Form(){
  var frm;
  if(pageCtrlFormName==undefined){
    frm=document.forms[0];
  }else{
    frm=eval("document."+pageCtrlFormName);
  }
  if(frm!=null && frm!=undefined){
  with(frm){
  	var fs;
    for(var i=0;i<pageCtrlObject.length;i++){
    	var pageCtrl=pageCtrlObject[i];
    	
    	fs=elements(pageCtrl[0])
	    if(fs!=null ) continue;
      
      var oHidden=document.createElement("INPUT");
      oHidden.type="hidden";
      oHidden.name=pageCtrl[0];
      oHidden.value=pageCtrl[1];
      appendChild(oHidden);
    }
  }
  }else{
  	for(var i=0;i<pageCtrlObject.length;i++){
      var pageCtrl=pageCtrlObject[i];
      var oHidden=document.createElement("INPUT");
      oHidden.type="hidden";
      oHidden.name=pageCtrl[0];
      oHidden.value=pageCtrl[1];
      //document.body.appendChild(oHidden);
    }
  }
}

function getPageCtrlParameters(){
  var str="";
  if(pageCtrlObject!=undefined){
    for(var i=0;i<pageCtrlObject.length;i++){
      var pageCtrl=pageCtrlObject[i];
      str+="&"+pageCtrl[0]+"="+pageCtrl[1];
    }
  }
  return str;
}

function getPageCtrlParameter(name){
  var str="";
  if(pageCtrlObject!=undefined && name!=undefined && name!=null){
    for(var i=0;i<pageCtrlObject.length;i++){
      var pageCtrl=pageCtrlObject[i];
      if(pageCtrl[0]==name){
        str=pageCtrl[1];
      }
    }
  }
  return str;
}

function overloadWindowMethod(){
	var openBak=window.open;
	window.open=function(sUrl , sName, sFeatures, bReplace){
		try{
		  openBak(constructPageCtrlUrl(sUrl) , sName, sFeatures, bReplace);
	  }catch(e){}
	}

	var navigateBak=window.navigate;
	window.navigate=function(sUrl){
		try{
		  navigateBak(constructPageCtrlUrl(sUrl));
	  }catch(e){}
	}
	document.attachEvent ('onclick', overloadLinkAction);
}

function isOverloadLinkAction(hrefStr){
	if(hrefStr==undefined) return false;
	for(var i=0,j=excludeProtocols.length;i<j;i++){
		if(hrefStr.trim().indexOf(excludeProtocols[i]+":")==0){
			return false;
		}
	}
	return true;
}

function overloadLinkAction(o){
	var esrc=o.srcElement;
	if(esrc==null) return;
	var esrctag=esrc.tagName;
	if(esrctag==null) return;
	if(esrctag.toLowerCase()=="a"){
		var hrefStr=esrc.href;
		if(isOverloadLinkAction(hrefStr)){
			esrc.href=constructPageCtrlUrl(hrefStr);
		}
	}
}


function constructPageCtrlUrl(url){
  var str="";
  var ps=getPageCtrlParameters();
  ps=ps.substr(1);
  if(url.lastIndexOf("?")==-1 ){
    str=url+"?"+ps;
  }else if(url.lastIndexOf("?")== (url.length -1) ){
    str=url+ps;
  }else{
    str=url;
    if(pageCtrlObject!=undefined){

      var uPs=url.substr(url.lastIndexOf("?")+1);
      var pa=uPs.split("&");

      for(var i=0;i<pageCtrlObject.length;i++){
        var pageCtrl=pageCtrlObject[i];
        var contained=false;
        for(var j=0;j<pa.length;j++){
          var nv=pa[j].split("=");
          if(pageCtrl[0]==nv[0]){
            contained=true;
            break;
          }
        }
        if(!contained){
          str+="&"+pageCtrl[0]+"="+pageCtrl[1];
        }
      }
    }
  }
  return str;
}

//must reset form field
//function setPageCtrlParameter(name,value){
//  if(pageCtrlObject!=undefined){
//    for(var i=0;i<pageCtrlObject.length;i++){
//      var pageCtrl=pageCtrlObject[i];
//      if(name==pageCtrl[0]){
//        pageCtrlObject[i][1]=value;
//        break;
//      }
//    }
//  }
//}

function debugPageCtrl(){
  var str="";
  if(pageCtrlObject==undefined) return alert("");
  if(pageCtrlObject!=undefined){
    str="pageCtrlObject:\n"
    for(var i=0;i<pageCtrlObject.length;i++){
      var pageCtrl=pageCtrlObject[i];
      str+="  "+pageCtrl[0]+"="+pageCtrl[1]+"\n";
    }
  }

  str+="getPageCtrlParameter()\n";
  str+=getPageCtrlParameters()+"\n";

  var frm;
  if(pageCtrlFormName==undefined){
    frm=document.forms[0];
  }else{
    frm=eval("document."+pageCtrlFormName);
  }
  str+=frm.name+"'s elements \n";
  with(frm){
    var fs=elements;
    for(var i=0;i<fs.length;i++){
      if(fs[i]!=undefined && fs[i].name!=null && fs[i].name.indexOf(InitPageCtrlObjectPreName)==0){
        str+="  "+fs[i].outerHTML+"\n";
      }
    }
  }
  alert(str);
}

var pageCtrlObject;
var pageCtrlFormName;

//String.prototype.trim = function()
//{
//    return this.replace(/(^\s*)|(\s*$)/g, "");
//}

function RenderFormFileds(scopeObjectId){

    this.scopeObjectId=scopeObjectId;

	  //when modify the following two attribute,note to modify the toRender method synchronously!
    renderTagNames=new Array("input","textarea","select");
    //checkbox and radio render to Y if checked;file render not display;text render to value only
    renderInputType=new Array("checkbox","file","radio","text");

    //this property is used to toRenderEx method
    this.selectUnselectedValue=new Array("");
    this.rendered=false;

    scopeObject=null;

    this.excludeNames;
    this.excludePreNames;
    //this.includeNames;
    //this.includePreNames;

    //返回true,继续;false 停止
    this.beforeRender;
    this.afterRender;

    this.render=toRender;
    this.renderEx=toRenderEx;
    this.render2none=toRender2none;
    this.renderExById=toRenderExById;
    this.getRenderInputType=getRenderInputType;
    this.getScopeObject=getScopeObject;
    //return;

}
function beforeRender(){
	//alert("beforeRender:");
}

function getRenderInputType(){
	return renderInputType;
}
function getScopeObject(){
	return scopeObject;
}

function isRender(render,obj){
	var tagName=obj.tagName.toLowerCase();
	var b=false;
	var renderInputType=render.getRenderInputType();
	if(tagName=="input"){
		var type=obj.type.toLowerCase();
		for(var i=0,j=renderInputType.length;i<j;i++){
			if(renderInputType[i].toLowerCase()==type){
				b=true;
				break;
			}
		}
		if(!b) return false;
	}
	var name=obj.name;
	if(name.indexOf("listtable.input_page")==0) return false;
	if(render.excludeNames!=undefined){
		if(typeof(render.excludeNames)=="object"){
			for(var i=0,j=render.excludeNames.length;i<j;i++){
				if(render.excludeNames[i]==name)
				  return false;
			}
		}else{
		  if(name==render.excludeNames)
		    return false;
	  }
	}
	if(render.excludePreNames!=undefined){
		if(typeof(render.excludePreNames)=="object"){
			for(var i=0,j=render.excludePreNames.length;i<j;i++){
				if(name.indexOf(render.excludePreNames[i])==0 )
				  return false;
			}
		}else{
		  if(name.indexOf(render.excludePreNames)==0)
		    return false;
	  }
	}
	return true;
}

function toRender(){

	if(this.scopeObjectId==undefined){
  	scopeObject=document.forms[0];
  	if(scopeObject==undefined){
  	  alert("请指定将要重画的对象的Id");
  	  return ;
  	}
  }else{
    scopeObject=document.getElementById (this.scopeObjectId);
    if(scopeObject==undefined){
  	  alert("没有Id为"+this.scopeObjectId+"的对象");
  	  return ;
  	}
	}

  //document .close();
  var b= this.beforeRender;
  if(b!=undefined && !b) return;

  var fs;
  var fName;
  var index=0;
  var fArray=new Array();
  for(var i=0,j=renderTagNames.length;i<j;i++){
  	fs=scopeObject.getElementsByTagName(renderTagNames[i]);
  	for(var k=0,l=fs.length;k<l;k++){
  		if(!isRender(this,fs[k])) continue;
  		fArray[index++]=fs[k];
  	}
  }
/*-----------------------------------------------------------------------*/
  var tagName;
  var type;
  var v;
  var lt = /</g;
  var gt = />/g;
  var oElement;
  for(var i=0;i<index;i++){
  	v="";
  	type="";
  	trueValue="";
  	tagName=fArray[i].tagName;
  	if(tagName.toLowerCase()=="input"){
  		type=fArray[i].type.toLowerCase();
  		if(type=="checkbox" || type=="radio"){
  		  //if(fArray[i].checked){
  				//v="Y";
  			//}else{
  			  //v="N";
  		  //}

  		  if(fArray[i].checked){
  		  	scopeObject.appendChild(createHiddenbox4Backup(fArray[i]));
  		  }

  		  fArray[i].disabled=true;
  		  continue;
  		}else if(type=="file"){
  			v="";
  	  }else if(type=="text"){
  	  	v=fArray[i].value;
  	  }

		}else if(tagName.toLowerCase()=="select"){
			if(!isSelectUnselected(this,fArray[i]) ){
			  v=fArray[i].options[fArray[i].selectedIndex].text;
		  }else{
		    v=""
		  }

	  }else if(tagName.toLowerCase()=="textarea"){
	  	v=fArray[i].value;
	  	v=v.replace(lt,"&lt;");
	  	v=v.replace(gt,"&gt;");
	  	//v="<PRE>"+v+"</PRE>";

	  }
	  scopeObject.appendChild(createHiddenbox4Backup(fArray[i]));
	  fArray[i].outerHTML=v;

  }

  extraRender(this);

/*-----------------------------------------------------------------------*/
  var b= this.afterRender;
  if(b!=undefined)
    return b;
  else
  	return true;
}
function toRender2none(name){
	toRenderEx(name,"")
}
function toRenderExById(id,html){
	var scopeObject;
	if(this.scopeObjectId==undefined){
  	scopeObject=document.forms[0];
  	if(scopeObject==undefined){
  	  alert("请指定将要重画的对象的Id");
  	  return ;
  	}
  }else{
    scopeObject=document.getElementById (this.scopeObjectId);
    if(scopeObject==undefined){
  	  alert("没有Id为"+this.scopeObjectId+"的对象");
  	  return ;
  	}
	}
	
	var fs=document.getElementById(id);
	if(fs==undefined) return;
	var htmlBak=html;

  
  var tagName;
  for(var i=0,j=1;i<j;i++){

  	tagName=fs.tagName;
  	if(tagName.toLowerCase()=="input"){
  		type=fs.type.toLowerCase();
  	
  	if(type=="hidden") continue;	

  	if(type=="checkbox" || type=="radio"){
  		  //if(fs.checked){
  				//v="Y";
  			//}else{
  			  //v="N";
  		  //}

  		  if(fs.checked){
  		  	scopeObject.appendChild(createHiddenbox4Backup(fs));
  		  }
  		}else if(type=="text"){
  	  	scopeObject.appendChild(createHiddenbox4Backup(fs));
  	  }

		}else if(tagName.toLowerCase()=="select" || tagName.toLowerCase()=="textarea"){
			scopeObject.appendChild(createHiddenbox4Backup(fs));
	  }


		if(htmlBak==undefined) {
			if(fs.tagName.toLowerCase()=="select"){
				fs.outerHTML=fs.options(fs.selectedIndex).text;
			}else{
			fs.style.display="none";
		  fs.disabled=true;
		}

		}else{
		  if(fs.tagName.toLowerCase()=="img"){
		  	fs.style.display="none";
		    fs.disabled=true;
		    try{
		    if(typeof(html)=="object"){
					var n=html.length;
			  	if(i>=n) {
			  		fs.parentNode.insertAdjacentHTML("afterBegin",html[n-1]);
			  	}else{
			  	  fs.parentNode.insertAdjacentHTML("afterBegin",html[i]);
			    }
			  }else{
			    fs.parentNode.insertAdjacentHTML("afterBegin",html);
			  }
			  }catch(e){}
		  }else{
				if(typeof(html)=="object"){
					var n=html.length;

                                if(i>=n) {
			  		fs.outerHTML=html[n-1]
			  	}else{

			  	  fs.outerHTML=html[i];
			    }

			  }else{
			    fs.outerHTML=html;
			  }
		  }
	  }
  }
}

function toRenderEx(name,html){

	var scopeObject;
	if(this.scopeObjectId==undefined){
  	scopeObject=document.forms[0];
  	if(scopeObject==undefined){
  	  alert("请指定将要重画的对象的Id");
  	  return ;
  	}
  }else{
    scopeObject=document.getElementById (this.scopeObjectId);
    if(scopeObject==undefined){
  	  alert("没有Id为"+this.scopeObjectId+"的对象");
  	  return ;
  	}
	}
	var fs=document.getElementsByName(name);
	//var fs=document.getElementById(name);
	if(fs==undefined) return;
	var htmlBak=html;

  var fArray=new Array();
	for(var i=0,j=fs.length;i<j;i++){
  	fArray[i]=fs[i];
  }
  var tagName;
  for(var i=0,j=fArray.length;i<j;i++){

  	tagName=fArray[i].tagName;
  	if(tagName.toLowerCase()=="input"){
  		type=fArray[i].type.toLowerCase();
  	
  	if(type=="hidden") continue;	

  	if(type=="checkbox" || type=="radio"){
  		  //if(fArray[i].checked){
  				//v="Y";
  			//}else{
  			  //v="N";
  		  //}

  		  if(fArray[i].checked){
  		  	scopeObject.appendChild(createHiddenbox4Backup(fArray[i]));
  		  }
  		}else if(type=="text"){
  	  	scopeObject.appendChild(createHiddenbox4Backup(fArray[i]));
  	  }

		}else if(tagName.toLowerCase()=="select" || tagName.toLowerCase()=="textarea"){
			scopeObject.appendChild(createHiddenbox4Backup(fArray[i]));
	  }


		if(htmlBak==undefined) {
			if(fArray[i].tagName.toLowerCase()=="select"){
				fArray[i].outerHTML=fArray[i].options(fArray[i].selectedIndex).text;
			}else{
			fArray[i].style.display="none";
		  fArray[i].disabled=true;
		}

		}else{
		  if(fArray[i].tagName.toLowerCase()=="img"){
		  	fArray[i].style.display="none";
		    fArray[i].disabled=true;
		    try{
		    if(typeof(html)=="object"){
					var n=html.length;
			  	if(i>=n) {
			  		fArray[i].parentNode.insertAdjacentHTML("afterBegin",html[n-1]);
			  	}else{
			  	  fArray[i].parentNode.insertAdjacentHTML("afterBegin",html[i]);
			    }
			  }else{
			    fArray[i].parentNode.insertAdjacentHTML("afterBegin",html);
			  }
			  }catch(e){}
		  }else{
				if(typeof(html)=="object"){
					var n=html.length;

                                if(i>=n) {
			  		fArray[i].outerHTML=html[n-1]
			  	}else{

			  	  fArray[i].outerHTML=html[i];
			    }

			  }else{
			    fArray[i].outerHTML=html;
			  }
		  }
	  }
  }
}

function extraRender(obj){
	RequiredFlagRender(obj)
  dateButtonRender(obj);	
}

function isDateButtonrender(render,obj){
	var name=obj.name;
	if(render.excludeNames!=undefined){
		if(typeof(render.excludeNames)=="object"){
			for(var i=0,j=render.excludeNames.length;i<j;i++){
				if(render.excludeNames[i]==name)
				  return false;
			}
		}else{
		  if(name==render.excludeNames)
		    return false;
	  }
	}
	if(render.excludePreNames!=undefined){
		if(typeof(render.excludePreNames)=="object"){
			for(var i=0,j=render.excludePreNames.length;i<j;i++){
				if(name.indexOf(render.excludePreNames[i])==0 )
				  return false;
			}
		}else{
		  if(name.indexOf(render.excludePreNames)==0)
		    return false;
	  }
	}
	return true;
}

function dateButtonRender(obj){
	var fs;
	var index=0;
  var fArray=new Array();
  var scopeObject=obj.getScopeObject();
  fs=scopeObject.getElementsByTagName("INPUT")
  for(var i=0,j=fs.length;i<j;i++){
		if(fs[i].name!=undefined && fs[i].name.indexOf("_datebox_btn")!=-1){
			if(isDateButtonrender(obj,fs[i])){
		    fArray[index++]=fs[i];
		  }  
		  
	  }
  }
  for(var i=0;i<index;i++){
  	fArray[i].outerHTML="";
  }
}

function RequiredFlagRender(obj){
	var fs;
	var index=0;
  var fArray=new Array();
  var scopeObject=obj.getScopeObject();
  fs=scopeObject.getElementsByTagName("FONT");
  for(var i=0,j=fs.length;i<j;i++){
		if(fs[i].requiredFlagElement==""){
			if(isRender(obj,fs[i])){
		    fArray[index++]=fs[i];
		  }
	  }
  }
  for(var i=0;i<index;i++){
  	fArray[i].outerHTML="";
  }

}


function createHiddenbox4Backup(Object,value){
	/*var oElement = document.createElement("INPUT");
	oElement.type="hidden";
	if(Object.id!=undefined){
		oElement.id=Object.id;
	}
	if(Object.name!=undefined){
		oElement.name=Object.name;
	}
	if(value!=undefined){
		oElement.value=value;
	}
	if( Object.value!=undefined){
		oElement.value=Object.value;
	}*/
	var strHtml="<INPUT  TYPE=\"HIDDEN\" ";
  if(Object.id!=undefined && Object.id!=""){
		strHtml=strHtml+"id=\""+Object.id+"\" ";
	}
	if(Object.name!=undefined && Object.name!=""){
		strHtml=strHtml+"name=\""+Object.name+"\" ";
	}
  if(value!=undefined){
		strHtml=strHtml+"value=\""+value+"\" ";
	}else	if( Object.value!=undefined){
	  strHtml=strHtml+"value=\""+Object.value+"\" ";		
	}
	strHtml=strHtml+">"
	var oElement = document.createElement(strHtml);
	return oElement;
}

function isSelectUnselected(render,Object){
	var selectUnselectedValue=render.selectUnselectedValue;
	if(selectUnselectedValue==undefined || selectUnselectedValue==null){
		return false;
	}else if(typeof(selectUnselectedValue)=="string"){
		if(Object.value!=selectUnselectedValue)
		  return false;
  }else if(typeof(selectUnselectedValue)=="object"){
  	for(var i=0;i<selectUnselectedValue.length;i++){
  		if(Object.value==selectUnselectedValue[i]){
  			return true;
  		}
  	}
  	return false;
  }
  return true;
}
