var last_rows = new Array();//最后一行的对象
//var col_int =0;//列数
var sumCout=0;//重新排序的序号
var action = 1;//获取焦点的标识 1获取 0 不获取


/**
 *@author paul.lee
 *@date 2007/03/20
 *判断是否IE
 */
function isIE(){
	if(document.all){
		return true;
	}
	else{
	    return false;
	}
}

/**
 *@author paul.lee
 *@date 2007/03/20
 *为表格添加一行
 *@param tableName	表格id
 */
function addTableRow(tableName){
      action = 1;
     var table = document.getElementById(tableName);
     var tbody
     var tableChild=table.childNodes
      for(var i=0;i<tableChild.length;i++) {  
			var tableNode=tableChild[i];
			if(tableNode.nodeType == 1) { 
				if(tableNode.tagName=="TBODY"){
					 tbody=tableNode;
				}
         	    
         	}
			
     }
   	  var trSum=countTR(tbody);
   
      if(last_rows[tbody.id]!=null && trSum==0){ 
      		tbody.appendChild(last_rows[tbody.id]); 
      		setFocus(last_rows[tbody.id]);
      }else{
      	var tbodyRows=tbody.rows;
      	var node=tbodyRows[tbodyRows.length-1];
      	var tr;
        if(isIE()){
        	tr=node.cloneNode(true);
        }else{
        	tr=createTD(node);
        }
      	setTableRowsId(tr);
      	setTableRowsName(tr)
      	clearTableRowsValue(tr);
      	setTableRowsCheck(tr);
      	tbody.appendChild(tr);  
      	setFocus(tr);	
      }
      resetSum(tbody);
      resetBoxValue(tbody);
     
}

/**
 *@author paul.lee
 *@date 2008/01/29
 *计算行数
 */
function countTR(tbody){
	var childrens=tbody.childNodes;
	
	var trSum=0;
	for(var i=0;i<childrens.length;i++) {  
			var tr=childrens[i];
			if(tr.nodeType == 1) { 
				if(tr.tagName=="TR"){
					trSum++;
				}
         	    
         	}
			
     }
     
     return trSum;
}


/**
 *@author paul.lee
 *@date 2008/01/29
 *复制一行(fireFox)
 */
function createTD(node){
	var tr = document.createElement("TR") ;
    if(node.className){       
        tr.className=node.className;			
    }       
	var childrens=node.childNodes;
	for(var i=0;i<childrens.length;i++) {  
			var td=childrens[i];
			if(td.nodeType == 1) { 
				if(td.tagName=="TD"){
					var newtd = document.createElement("TD") ;
					if(node.className){       
                		newtd.className=td.className;			
        			}   
					newtd.innerHTML=td.innerHTML;
					tr.appendChild(newtd);  
				}
         	    
         	}	
     }
     
     return(tr);
     
}



/**
 *@author paul.lee
 *@date 2007/07/20
 *从新设定控件id
 *@param node	页面组件的docment
 */
function setTableRowsId(node){  

       var childrens=node.childNodes;
       for(var i=0;i<childrens.length;i++) {
              var node=childrens[i];
              if(node.nodeType == 1) {
                 if(node.id!=null && typeof node.id != "undefined" && node.id!=""){  
                            var reArray = node.id.split(":");
                            reArray[2]=""+(new Number(reArray[2])+1)
                            node.id=reArray[0]+":"+reArray[1]+":"+reArray[2]+":"+reArray[3];
                           // alert(node.tagName+"->id----------->"+node.id)		
                 }
                 setTableRowsId(node);
              }
           
       } 

}


/**
 *@author paul.lee
 *@date 2007/11/23
 *新的一行获取焦点
 */

function setFocus(nodes){
	if(action==1){
		var childrens=nodes.childNodes;
		for(var i=0;i<childrens.length;i++) {  
		
			var node=childrens[i];
         	if(node.nodeType == 1) { 
         	    if(node.tagName!=null && typeof node.tagName != "undefined" && ( node.tagName=="SELECT" || ( node.tagName=="INPUT" && node.type!=null && typeof node.type != "undefined" && node.type!="hidden" ))){  	
                 	node.focus();
                 	action=0;	
                 }
         	}
         	setFocus(node)  
			
    	}
	}
    
}



/**
 *@author paul.lee
 *@date 2007/07/20
 *从新设定check控件的CHECKED属性
 *@param node	页面组件的docment
 */
function setTableRowsCheck(node){  
       var childrens=node.childNodes;
       for(var i=0;i<childrens.length;i++) {
              var node=childrens[i];
              if(node.nodeType == 1) {
                 if(isIE()){
                 	if(node.tagName=="INPUT" &&  node.outerHTML.indexOf("CHECKED") != -1 ){
                    	node.outerHTML=node.outerHTML.replace(/\bCHECKED\b/gi," ")
                    	//node.outerHTML="";
                   		// alert(node.outerHTML);
                 	}
                 }
                 
                 setTableRowsCheck(node);
              }
       } 
}


/**
 *@author paul.lee
 *@date 2007/07/20
 *从新设定id
 *@param node	页面组件的docment
 */
function clearTableRowsValue(node){  

       var childrens=node.childNodes;
       for(var i=0;i<childrens.length;i++) {
              var node=childrens[i];
              if(node.nodeType == 1) {
               
                 if(node.tagName=="INPUT" && node.type != "radio" && node.type != "button"  && node.type != "image" && node.type != "reset" && node.type != "submit"){  
                    node.value="";
            	 } 
                 clearTableRowsValue(node);
              }
           
       } 

}

/**
 *@author paul.lee
 *@date 2007/07/20
 *从新设定控件name
 *@param node	页面组件的docment
 */
function setTableRowsName(node){  
       var childrens=node.childNodes;
       for(var i=0;i<childrens.length;i++) {
              var node=childrens[i];
              if(node.nodeType == 1) {
                 if(node.name!=null && typeof node.name != "undefined" && node.name!=""){
                    var reArray = node.name.split(":");
                    reArray[2]=""+(new Number(reArray[2])+1)
                 	var named=reArray[0]+":"+reArray[1]+":"+reArray[2]+":"+reArray[3];
                 	if(isIE()){
                 		node.outerHTML=node.outerHTML.replace(/\bname=['"]?[^'"> ]+['"]?\b/gi,"name='"+named+"'")
                 	}else{
                 		node.name=named;
                 	}
                 			
                 }
                 
                 setTableRowsName(node);
              }
       } 
}



/**
 *@author paul.lee
 *@date 2007/03/20
 *对datatable 重新排序
 */
function resetSum(tbody){
	sumCout=0;
	var tableID=tbody.id.substring(0,tbody.id.lastIndexOf(":"));
	resetSubSum(tbody,tableID);
} 
function resetSubSum(nodes,tableID){
    var childrens=nodes.childNodes;
	for(var i=0;i<childrens.length;i++) {  
			var node=childrens[i];
         	if(node.nodeType == 1) { 
         	    if(node.id.indexOf(tableID)!=-1 && node.id.indexOf("seq")!=-1){
         	    	sumCout++;
         	    	if(node.innerText){
         	    		node.innerText=""+sumCout;
         	    	}else{
         	    		node.textContent=""+sumCout;
         	    	}
         	    }
         	}
         	resetSubSum(node,tableID)  
    }
}

/**
 *@author paul.lee
 *@date 2007/03/20
 *对checkbox的value付植
 */
function resetBoxValue(tbody){
    var childrens=tbody.childNodes;
	for(var i=0;i<childrens.length;i++) {  
	        searchBox(childrens[i],(""+i));     
    }
}
/**
 *@author paul.lee
 *@date 2007/03/20
 *搜索出每一行的checkbox
 */
function searchBox(node,row){
	var childrens=node.childNodes;
	for(var i=0;i<childrens.length;i++) {  
	     var node=childrens[i];
         if(node.nodeType == 1) { 
         	if(node.tagName=="INPUT" && node.type=="checkbox"){                
                      node.value=row;    
            } 
           
        }   
        
        searchBox(node,row);
                   
    }
}

/**
 *@author paul.lee
 *@date 2007/03/20
 *clone 控件
 */
function cloneRow(node,pNode){  
       var childrens=node.childNodes;
       for(var i=0;i<childrens.length;i++) {
              var node=childrens[i];
              if(node.nodeType == 1) {
                 var newnode ;
                 if(node.tagName=="INPUT" || node.tagName=="SELECT"){
                 	 var inputName;
                 	 if(node.name!=null && typeof node.name != "undefined" ){
                 		   var reArray = node.name.split(":");
                            reArray[2]=""+(new Number(reArray[2])+1)
                 			inputName=reArray[0]+":"+reArray[1]+":"+reArray[2]+":"+reArray[3];
                         
                 	 }
                 	if(isIE()){
                 		var createTxt="<"+node.tagName+" name = "+inputName+">"
                 		newnode = document.createElement(createTxt) ;  
                 	}else{
                 		newnode = document.createElement(node.tagName) ;  
                 		newnode.name = inputName;
                 	}
                 	
                 }else{   
                 	newnode = document.createElement(node.tagName) ;  
                 	newnode.name = "newFrame2";
                 	
                 }
                 
                 if(node.id!=null && typeof node.id != "undefined" && node.id != ""){
                 		  var reArray = node.id.split(":");
                 		  if(reArray.length==4){
                 		  	reArray[2]=""+(new Number(reArray[2])+1);
                          	newnode.id=reArray[0]+":"+reArray[1]+":"+reArray[2]+":"+reArray[3];
                 		  }
                          
                          
                 }
                  
               
                 
                 if(node.value!=null && typeof node.value != "undefined"){
                    if( node.type=="button" || node.tagName=="OPTION"){                
                       newnode.value=node.value;
                    }
                 }
                 
                 if(node.className!=null && typeof node.className != "undefined"){       
                 			
                 			newnode.className=node.className;			
                 }               
                 if(node.align!=null && typeof node.align != "undefined" ){
                 			newnode.align=node.align;
                 }
                 if(node.background!=null && typeof node.background != "undefined" ){
                 			newnode.background=node.background;
                 }
                 if(node.bgColor!=null && typeof node.bgColor != "undefined" ){
                 			newnode.bgColor=node.bgColor;
                 }
                 if(node.borderColor!=null && typeof node.borderColor != "undefined" ){
                 			newnode.borderColor=node.borderColor;
                 }
                 if(node.disabled!=null && typeof node.disabled != "undefined" ){
                 			newnode.disabled=node.disabled;
                 }
                 if(node.height!=null && typeof node.height != "undefined" && node.height<1000){
                 			newnode.height=node.height;
                 }
                 
                     //父tag 可以拥有子tag 的innerText 所以要固定那些tag的innerText要附值
                 if(node.innerText && (node.tagName=="SPAN" || node.tagName=="DIV" ||  node.tagName=="OPTION" || node.tagName=="LABEL" || node.tagName=="INPUT")){
                        
                        newnode.innerText=node.innerText;
                 }
                 
                 if(node.textContent && (node.tagName=="SPAN" || node.tagName=="DIV" ||  node.tagName=="OPTION" || node.tagName=="LABEL" || node.tagName=="INPUT")){
                        
                        newnode.textContent=node.textContent;
                 }
                
                 if(node.title!=null && typeof node.title != "undefined" ){
                 			newnode.title=node.title;
                 }
                 if(node.vAlign!=null && typeof node.vAlign != "undefined" ){
                 			newnode.vAlign=node.vAlign;
                 }
                 if(node.size!=null && typeof node.size != "undefined" && node.size > 0){
                 			newnode.size=node.size;
                 }
                 
                
                 
                
                 if(node.tagName=="INPUT" && node.type == "text"){
                 	if(node.tagName=="INPUT" && node.type == "text" && node.maxLength  && node.maxLength > 0){
                 		newnode.maxLength=node.maxLength;
                 	}
                 }
                 
                 if(node.type!=null && typeof node.type != "undefined" &&  node.tagName!="SELECT"){     
                 			newnode.type=node.type;
                 }
                 
                 if(node.src!=null && typeof node.src != "undefined" ){
                 			newnode.src=node.src;
                 }
                 
                 
                 if(node.border!=null && typeof node.border != "undefined" ){
                 			newnode.border=node.border;
                 }
                 
                 
                 
                 if(node.onclick!=null && typeof node.onclick != "undefined" ){
                 			newnode.onclick=node.onclick;
                 }
                 if(node.onkeypress!=null && typeof node.onkeypress != "undefined" ){
                 			newnode.onkeypress=node.onkeypress;
                 }
                 if(node.onkeydown!=null && typeof node.onkeydown != "undefined" ){
                 			newnode.onkeydown=node.onkeydown;
                 }
                 if(node.onkeyup!=null && typeof node.onkeyup != "undefined" ){
                 			newnode.onkeyup=node.onkeyup;
                 }
                 if(node.onfocus!=null && typeof node.onfocus != "undefined" ){
                 			newnode.onfocus=node.onfocus;
                 }
                 if(node.onchange!=null && typeof node.onchange != "undefined" ){
                 			newnode.onchange=node.onchange;
                 }
                 if(node.onblur !=null && typeof node.onblur  != "undefined" ){
                 			newnode.onblur =node.onblur ;
                 }
                 if(node.onmousedown  !=null && typeof node.onmousedown   != "undefined" ){
                 			newnode.onmousedown  =node.onmousedown  ;
                 }
                 if(node.onmouseout  !=null && typeof node.onmouseout   != "undefined" ){
                 			newnode.onmouseout  =node.onmouseout  ;
                 }
             
                 if(node.maxLength!=null && typeof node.maxLength != "undefined" ){
                 			newnode.maxLength=node.maxLength;
                 }
                 
                 if(node.href!=null && typeof node.href != "undefined" && (node.tagName=="A" || node.tagName=="AREA" || node.tagName=="LINK")){
                 			newnode.href=node.href;
                 }
                 
                 if(node.style!=null && typeof node.style != "undefined" ){
                 			newnode.style.background=node.style.background
                 			newnode.style.backgroundColor=node.style.backgroundColor
                 			newnode.style.backgroundImage=node.style.backgroundImage     
                 			newnode.style.color=node.style.color
                 			newnode.style.cursor=node.style.cursor
                 			//newnode.style.font=node.style.font
                 			newnode.style.fontFamily=node.style.fontFamily
                 			newnode.style.fontSize=node.style.fontSize
                 			newnode.style.fontStyle=node.style.fontStyle
                 			newnode.style.fontVariant=node.style.fontVariant
                 			newnode.style.fontWeight=node.style.fontWeight
                 			newnode.style.height=node.style.height
                 			newnode.style.layoutFlow=node.style.layoutFlow
                 			newnode.style.margin=node.style.margin
                 			newnode.style.visibility=node.style.visibility
                 			newnode.style.width=node.style.width    			
                 		
                 }
                 
                 cloneRow(node,newnode);
                 pNode.appendChild(newnode);
              }
          
       } 

}



/**
 *@author paul.lee
 *@date 2007/03/20
 *isDelAll=true:可以删除所有的行  isDelAll=false最后一行不能删掉,只能清掉数据
 */
function delTableRow(button,isDelAll,msg1,msg2){  
	var tbody=button.parentNode.parentNode.parentNode;
	var trSum=countTR(tbody);
	
	if(trSum>1){
	    var re = confirm(msg1)
	    if(re){
	    	var tr=button.parentNode.parentNode;
	    	tbody.removeChild(tr); 
	    	resetSum(tbody);
	    	
	    }  
	}else{
	    if(isDelAll){
	    	var re = confirm(msg1)
	    	if(re){
	    		removeData(tbody);
	    		last_rows[tbody.id]=button.parentNode.parentNode;
	    		tbody.removeChild(last_rows[tbody.id]); 
	    		
	    	}  
	    }else{
	    	//var re = confirm(msg1)
			//if(re){
		 	//	removeData(tbody);	
			//}
			alert(msg2);
	    }
		
	}
	resetBoxValue(tbody);
 
}


/**
 *@author paul.lee
 *@date 2007/03/20
 *清除一行的数据
 */
function removeData(node){
    var childrens=node.childNodes;
	for(var i=0;i<childrens.length;i++) {  
	     var node=childrens[i];
         if(node.nodeType == 1) { 
	        if(node.value!=null && typeof node.value != "undefined"){
                if(node.type!=null && typeof node.type != "undefined" &&  node.type!="button" && node.tagName!="OPTION"){
                       node.value="";
                }
            }
        }   
        
        removeData(node);
                   
    }
	
}


 /**
 *@author paul.lee
 *@date 2008/01/17
 *验证todate 和 fromdate 是否为空 格式(dd/mm/yyyy)是否合法,和todate是否大于或等于fromdate 和他们是否在指定的一年内
 *own控件对象
 *return  true 合法 false 不合法
 */
function vaildRowDate(idFrom,idTo,yearId,fromName,toName,emptyErr,dateFormatErr,compareError,saveYearErr,rowName){
		var error="";
		var year=document.getElementById(yearId).value;
		var from_split=idFrom.split(":");
		var to_split=idTo.split(":");
		var row=0;
		while(true){
				var from_row=from_split[0]+":"+from_split[1]+":"+row+":"+from_split[2];
				var to_row=to_split[0]+":"+to_split[1]+":"+row+":"+to_split[2];
				var noteFroms=document.getElementById(from_row);
				var noteTos=document.getElementById(to_row);
				var rowErr="";
				var validDMYForm=true;
				var validDMYTo=true;
				if(noteFroms!=null && noteTos!=null){
					//验证是否为空
					if(validDMYForm && validIsEmpty(noteFroms)){
						validDMYForm=false;
						rowErr+="\n*"+rowName+" "+(row+1)+"  "+fromName+": "+emptyErr;
					}
					if(validDMYTo && validIsEmpty(noteTos)){
						validDMYTo=false;
						rowErr+="\n*"+rowName+" "+(row+1)+"  "+toName+": "+emptyErr;
					}	
					
						
					//验证日期格式(dd/mm/yyyy)
					if(validDMYForm && !validDMYDate(noteFroms)){
						validDMYForm=false;
						rowErr+="\n*"+rowName+" "+(row+1)+"  "+fromName+": "+dateFormatErr;
					}
					
					if(validDMYTo && !validDMYDate(noteTos)){
						validDMYTo=false;
						rowErr+="\n*"+rowName+" "+(row+1)+"  "+toName+": "+dateFormatErr;
					}
					
					
					//验证是否在指定年之内
					
					if(validDMYForm && !validOneSaveYear(noteFroms,year)){
						validDMYForm=false;
						rowErr+="\n*"+rowName+" "+(row+1)+"  "+fromName+": "+saveYearErr +" "+ year;
					}
					if(validDMYTo && !validOneSaveYear(noteTos,year)){
						validDMYTo=false;
						rowErr+="\n*"+rowName+" "+(row+1)+"  "+toName+": "+saveYearErr +" "+ year;
					}
					
					
					
					
					//验证开始日期是否小于等于结束日期
					if(validDMYForm && validDMYTo){
						if(compareOneRowDate(noteFroms,noteTos,1) || compareOneRowDate(noteFroms,noteTos,0)){
							noteFroms.style.backgroundColor="white";
							noteTos.style.backgroundColor="white";
							
						}else{
							noteFroms.style.backgroundColor="yellow";
							noteTos.style.backgroundColor="yellow";
							rowErr+="\n*"+rowName+" "+(row+1)+" : "+compareError;
						}
					}
					
					error+=rowErr;
					
					
				}else{
					break;
				}
				row++;
		}
		
		if(error!=""){
			alert(error);
			return false;
		}
	
		return true;
		
	
}

 /**
 *@author paul.lee
 *@date 2008/01/17
 *验证控件own的值的格式是否为dd/mm/yyyy  
 *own控件对象
 *return  true 正确 false 不正确
 */
function validDMYDate(own){
	var value = own.value;
	var pattern =/^(((0?[1-9]|[12]\d|3[01])\/(0?[13578]|1[02])\/((1[6-9]|[2-9]\d)\d{2}))|((0?[1-9]|[12]\d|30)\/(0?[13456789]|1[012])\/((1[6-9]|[2-9]\d)\d{2}))|((0?[1-9]|1\d|2[0-8])\/0?2\/((1[6-9]|[2-9]\d)\d{2}))|(29\/0?2\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/;
	
	if(value != null && value != '') {
        if(value.match(pattern) == null) {
        	 own.style.backgroundColor="yellow";
			 return false;
		}else {
			 own.style.backgroundColor="white";
        	 return true;
		}   
    }
     return true;
	
}


 /**
 *@author paul.lee
 *@date 2008/01/17
 *验证控件own的值是否为空
 *own控件对象 
 * *return   true 为空 false 不为空
 */
function validIsEmpty(own){
	var value = own.value;
	if(value == null || value == '') {
		own.style.backgroundColor="yellow";
        return true;
    }else{
    	own.style.backgroundColor="white";
    	return false;
    }
	
	
}



/**
 *判断To Date 和 From Date 之间的先后。(dd/mm/yyyy)
 *@param nodeFrom From Date 控件 
 *@param nodeTo To Date 控件
 *@param status 1:to 大于 from  0:to 等于 from -1:to 小于 from
*/
function compareOneRowDate(nodeFrom,nodeTo,status){
	var result=false;
	var from=nodeFrom.value;
	var to=nodeTo.value;
	if(from=='' && to==''){
		result=true;
	}else{
		var fromArray=from.split("/");
		var toArray=to.split("/");
		if(fromArray.length==3 && toArray.length==3){
			var dateForm=new Date(fromArray[2],fromArray[1],fromArray[0]);
			var dateTo=new Date(toArray[2],toArray[1],toArray[0]);
			if(status==3){
				if(dateTo.getTime()<dateForm.getTime() || dateTo.getTime()==dateForm.getTime()){
					result=true;
				}else{
					result=false;
				}
			}
		
			if(status==2){
				if(dateTo.getTime()>dateForm.getTime() || dateTo.getTime()==dateForm.getTime()){
					result=true;
				}else{
					result=false;
				}
			}
		
			if(status==1){
				if(dateTo.getTime()>dateForm.getTime()){
					result=true;
				}else{
					result=false;
				}
			
			}
		
			if(status==0){
				 if(dateTo.getTime()==dateForm.getTime()){
			 		result=true;
				 }else{
			 		result=false;
			 	}
			}
		
			if(status==-1){
			 	if(dateTo.getTime()<dateForm.getTime()){
			 		result=true;
			 	}else{
			 		result=false;
				 }
			}
		
		}
	}
	
	
	return result;
}

/**
 *判断日期(dd/mm/yyyy)是否在指定的一年内。
 *@param nodeFrom Date 输入控件
 *@param year 指定的一年
 *return true 在指定年内 false 不在
*/
function validOneSaveYear(date,isSave){
	var result=true;
	var dateVaule=date.value;
	if(dateVaule!=null && dateVaule!=''){
		var dateArray=dateVaule.split("/");
		if(dateArray.length==3 ){
			if(dateArray[2]==isSave){
				date.style.backgroundColor="white";
			}else{
				result=false;
				date.style.backgroundColor="yellow";
			}
		}
	}
	return result;
}


