//取字符长度，汉字为2，英文为1
function fucCheckLength(strTemp)   
{   
	var i,sum;   
	sum=0;   
	for(i=0;i<strTemp.length;i++)   
	{   
		if ((strTemp.charCodeAt(i)>=0) && (strTemp.charCodeAt(i)<=255))   
			sum=sum+1;   
		else  
			sum=sum+2;   
	}   
	return sum;   
}   

function selectall2(){
 if(document.detailform.DeleteGroup)
  if(document.detailform.DeleteGroup.length>1){
    for(i=0;i<document.detailform.DeleteGroup.length;i++){
       document.detailform.DeleteGroup[i].checked=true;
    } 
  }
  else{
       document.detailform.DeleteGroup.checked=true;
  }  
}		


function selectall3(){
for(i=2;i<12;i++){
  if (eval("document.detailform.DataGrid1__ctl"+i+"_selectid")){  
    eval("document.detailform.DataGrid1__ctl"+i+"_selectid").checked=true;    
  }
 }
}
function displayComm(urls,name,winsize1)
{var winstr;
 if(isBlank(name)) name='newwin';
 
 if(isBlank(winsize1))
   winstr="top=50,left=80,width=650,height=450,toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=no"
 else
   winstr=winsize1+'';
   
 winopen=window.open(urls,name,winstr);
 winopen.focus();
 //return false;
}
function displayComm1(urls,name,winsize1)
{
 var winstr;
 if(isBlank(name)) name='newwin1';
 
 if(isBlank(winsize1))
   winstr="top=50,left=80,width=780,height=450,toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=no"
 else
   winstr=winsize1+'';
   
 winopen1=window.open(urls,name,winstr);
 winopen1.focus();
 //return false;
}
function displayCommEx(urls,name,top,left,width,height)
{
  var winstr="top="+top+",left="+left+",width="+width+",height="+height+",toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=no,resizable=no";
  displayComm(urls,name,winstr);
}

function isBlank(s)
{
 var len = s.length; 
 if(len == 0)
  return true;
 else
 {
  var i = 0;
  for (i = 0; i < len; i++)
  {
   if(s.charAt(i) != ' ')
    return false;
  }
  if(i < len)
   return false;
  else
   return true;
 }
}
function selectall(formName){
var objstr;
objstr="document."+formName.id;
for(i=2;i<12;i++){
  if (eval(objstr+".DataGrid1__ctl"+i+"_selectid")){  
    eval(objstr+".DataGrid1__ctl"+i+"_selectid").checked=true;
  }
 }
}

//计算某一字段汇总值

//删除明细表的一行,num表示要删除的行号（从1算起），rowcount为明细表的行数
function _delrow(num,rowcount,beforeEvent,afterEvent)
{
   if (beforeEvent==true)
      if (!beforedelrow(num))
         return;
   var i=0;
   _clearrow(num+1);
   for(i=num+1;i<rowcount+2;i++)
     {
       if (i<=rowcount)
         _replacerow(i,i+1)
     }
   if (afterEvent)
     afterdelrow();
}
function _clearrow(num)  //num为datagrid实际生成的行号
{
    var  objstr,numobj,tr,i,obj;
    numobj=_getNumberObject(num);
    tr=numobj.parentElement.parentElement;
    for(i=1;i<tr.children.length;i++)
    {
       obj=tr.children(i).children(0);
       if (obj.tagName=="SPAN")
         obj.innerText="";
       else if (obj.tagName=="INPUT")
         obj.value="";
       else if (obj.tagName=="A")
         obj.children(0).value="";
    }
}
function _replacerow(num1,num2)
{
  var objstr,numobj,tr1,tr2,obj1,obj2;
  numobj=_getNumberObject(num1);
  tr1=numobj.parentElement.parentElement;
  numobj=_getNumberObject(num2);
  tr2=numobj.parentElement.parentElement;
  for (i=1;i<tr1.children.length;i++)
  {
     obj1=tr1.children(i).children(0);
     obj2=tr2.children(i).children(0);
     if (obj1.tagName=="SPAN")
       obj1.innerText=obj2.innerText;
     else if (obj1.tagName=="INPUT")
       obj1.value=obj2.value;
     else if (obj1.tagName=="A")
       obj1.children(0).value=obj2.children(0).value;
  }
  _clearrow(num2)
}
function _getNumberObject(i)
{
  var objstr="document.all('DataGrid1__ctl"+i+"_labelnumber')";
  return eval(objstr);
}

function _keydown() //把回车转化为tab
{
   if (window.event.keyCode==13)
      window.event.keyCode=9;
}
function _isNumeric(str,type)
{
   if (type=="int")
      var numstr="-0123456789";
   else if (type=="float")
      var numstr="-.0123456789";
   var i,pos,minuspos=-1,dotcount=0;
   for(i=0;i<str.length;i++)
   {
      pos=numstr.indexOf(str.charAt(i));
      if (pos==-1)
        return false;
      if (str.charAt(i)=='-')
        minuspos=i;
      if (str.charAt(i)=='.')
        dotcount++;
   }
   if ((minuspos!=-1) && (minuspos!=0))
     return false;
   if ((dotcount!=0) && (dotcount!=1))
     return false;
   return true;
}


	//这些是“完全客户端明细表组件”的JS脚本，添加人：李澍
	//region:公共部分，只被本构件的函数调用，不对用户程序员开放
	//检测输入数据合法性，保证给出有用的错误信息
	
	function CheckValueExist(valArr)
	{
		for(var i=0; i< arrFieldCollection.length; i++)
		{
			if( typeof(valArr[arrFieldCollection[i]]) == "undefined" )
				alert("need value is not exist, field = " + arrFieldCollection[i]);
		}
	}

	//添加数据到表格
	
	function SetDataToTable(table, prefix, valArr, isAdd)
	{
		if(isAdd)
		{
			var tr = table.insertRow();
			var td = tr.insertCell();
		}
		
		var ctrlID;
		for(var i=0; i< arrFieldCollection.length; i++)
		{
			ctrlID = prefix + "_" + arrFieldCollection[i];
			if(isAdd)
				td.innerHTML += ctrlID + "<input type=text name=" + ctrlID + "><br>";

			document.all[ctrlID].value = valArr[arrFieldCollection[i]];
		}
	}
	
	//从表格中取数据
	
	function GetDataFromTable(prefix)
	{
		var rowHandle = new Array();
		for(var i=0; i< arrFieldCollection.length; i++)
		{
			ctrlID = prefix + "_" + arrFieldCollection[i];

			if( typeof(document.all[ctrlID]) == "undefined" )
				alert("No exist ctrl, ctrlID = " + ctrlID);
			rowHandle[arrFieldCollection[i]] =	document.all[ctrlID].value;
		}
		return(rowHandle);
	}
	
	//在阵列中找数据，如果找到数据则返回所在的索引值（第一个位置是0），找不到则返回-1
	
	function FindInArray(arr, item)
	{
		if( typeof(arr) == "undefined" )
			alert("arr is undefined");
		if( typeof(item) == "undefined" )
			alert("item is undefined");
		for(var i=0; i< arr.length; i++)
		{
			if( arr[i] == item )
				return(i);
		}
		return(-1);
	}

	function RemoveDataGridRowWhenDelete(pCb)
	{
		var tr = pCb.parentElement.parentElement;
		if(tr.tagName.toUpperCase() != "TR")
			alert("checkbox is not in one td of tr");
		var table = tr.parentElement;
		table.deleteRow(tr.rowIndex);
	}
	
	//endregion:公共部分
	
	//region:新增部分功能函数块，这些函数对用户程序员开放
	
	function InsertData(valArr)
	{
		CheckValueExist(valArr);
		var index = parseInt(document.all["insertCount"].value);
		var prefix = "insert_" + index;
		SetDataToTable(document.all["InsertedData"], prefix, valArr, true);
		document.all["insertCount"].value = index +1;
		return(index);
	}

	function GetInsertedData(rowIndex)
	{
		return( GetDataFromTable("insert_" + rowIndex) );
	}

	function UpdateInsertedData(valArr, rowIndex)
	{
		CheckValueExist(valArr);
		SetDataToTable(document.all["InsertedData"], "insert_" + rowIndex, valArr, false);
	}

	function DeleteInsertedData(index)
	{
		if( typeof(index) != "number")
			alert("Error in DeleteInsertedData, index must be number type");
		var deletedIndexs = document.all["insertDeleted"].value;
		
		var arrDelete;
		if(deletedIndexs == "")
			arrDelete = new Array();
		else
			arrDelete = deletedIndexs.split(",");
		arrDelete.push(index);
		document.all["insertDeleted"].value = arrDelete.join(",");
	}

	function IsInserted()
	{
		if(document.all["insertCount"].value == "0")
			return false;
		else
		{
			var deleteCount;
			if(document.all["insertDeleted"].value == "")
				deleteCount = 0;
			else
				deleteCount = document.all["insertDeleted"].value.split(",").length;
			var isClear = ( deleteCount == parseInt(document.all["insertCount"].value) );
			return(!isClear);
				
		}
	}

	function DeleteInsertedByCb(pInsertedCb, pIsDeleteDataGrid)
	{
		//参数合法性

		if( typeof(pInsertedCb) == "undefined" )
		{
			alert("the pInsertedCb is undefined");
			return false;
		}
	
		//删除新增的数据

		var cbCtrl = pInsertedCb;


		if( typeof( cbCtrl.length ) == "undefined" )
		{
			//只有单条记录的情况

			if(cbCtrl.tagName.toUpperCase() != "INPUT")
			{
				alert("the pInsertedCb is not INPUT tag");
				return(false);
			}
			if(cbCtrl.type !="checkbox")
			{
				alert("the pInsertedCb is not checkbox");
				return(false);
			}

			if(cbCtrl.checked)
			{
				DeleteInsertedData(parseInt(cbCtrl.value));
				isDelete = true;
				if(pIsDeleteDataGrid) RemoveDataGridRowWhenDelete(cbCtrl);
			}
		}
		else
		{
			//多条记录的情况
			var cbIndex;
			for(var i=0; i< cbCtrl.length; i++)
			{
				cbIndex = cbCtrl[i];
				if(cbIndex.checked)
				{
					DeleteInsertedData( parseInt(cbIndex.value) );
					isDelete = true;

					if(pIsDeleteDataGrid) RemoveDataGridRowWhenDelete(cbIndex);
				}
			}
		}
		return(true);
	}

	//endregion:新增部分功能函数块

	//region:编辑部分的功能函数块，这些函数对用户程序员开放

	function GetExistData(id)
	{
		var rowHandle = GetDataFromTable("edit_" + id);
		return(rowHandle);
	}

	function UpdateExist(valArr, id)
	{
		var prefix = "edit_" + id;
		SetDataToTable(document.all["ExistData"], prefix, valArr, false);
		
		var editIDs = document.all["edittedIDs"].value;

		var arrEditIDs;
		if(editIDs == "")
			arrEditIDs = new Array();
		else
			arrEditIDs = editIDs.split(",");

		arrEditIDs.push(id);
		document.all["edittedIDs"].value = arrEditIDs.join(",");
	}
	
	function DeleteExistData(id)
	{
		var deleteIDs = document.all["deleteIDs"].value;

		var arrDeleteIDs;
		if(deleteIDs == "")
			arrDeleteIDs = new Array();
		else
			arrDeleteIDs = deleteIDs.split(",");
		
		if( FindInArray(arrDeleteIDs, id) != -1 )
			alert("Error the data has deleted");
		else
			arrDeleteIDs.push(id);

		document.all["deleteIDs"].value = arrDeleteIDs.join(",");				
	}

	function DeleteExistByCb(pExistCb, pIsDeleteDataGrid)
	{
		//参数合法性
		var isDelete = false;

		if( typeof(pExistCb) == "undefined" )
		{
			alert("the pExistCb is undefined");
			return false;
		}

		var cbCtrl = pExistCb

		if(typeof(cbCtrl) != "undefined")
		{
			if( typeof( cbCtrl.length ) == "undefined" )
			{
				//只有单条记录的情况
				if(cbCtrl.checked)
				{
					DeleteExistData(cbCtrl.value);
					isDelete = true;
					if(pIsDeleteDataGrid) RemoveDataGridRowWhenDelete(cbCtrl);
				}
			}
			else
			{
				//多条记录的情况
				var cbId;
				for(var i=0; i< cbCtrl.length; i++)
				{
					cbId = cbCtrl[i];
					if(cbId.checked)
					{
						DeleteExistData(cbId.value);
						isDelete = true;
						if(pIsDeleteDataGrid) RemoveDataGridRowWhenDelete(cbId);
					}
				}
			}
		}
		return(isDelete);
	}
	
	//endregion:编辑部分的功能函数块

	//从行句柄取数据的功能函数，这些函数对用户程序员开放
	
	function GetFieldValue(rowHandle, fieldCode)
	{
		if( typeof(rowHandle) == "undefined" )
			alert("Error, rowHandle is undefined");
		if( typeof(rowHandle[fieldCode]) == "undefined" )
			alert("Error fieldCode is invalid, fieldCode = " + fieldCode);
		else
			return( rowHandle[fieldCode] );
	}

	//“完全客户端明细表组件”的JS脚本，结束


	// class GettingXmlItemValue
	function GettingXmlItemValue(xmlString, index, urlBase)
	{
		if(isNaN(index))alert("Error index in not number index = " + index);
		this._urlBase = urlBase;
		this._index = parseInt(index);
		this._dom = new ActiveXObject("Microsoft.XMLDOM");
		this._dom.async= "false";
		this._dom.loadXML(xmlString);

		this.GetValue = GettingXmlItemValue_GetValue;
		this.GetDateString = GettingXmlItemValue_GetDateString;
		this.GetBoolValue = GettingXmlItemValue_GetBoolValue;
	}
	
	function GettingXmlItemValue_GetValue(itemName)
	{
		var url =  this._urlBase + itemName;
		var nodes = this._dom.selectNodes(url);
		if(nodes.length == 0)
			alert("Error nodes.length =0 then url = " + url);
		return(nodes[this._index].text);
	}

	function GettingXmlItemValue_GetDateString(itemName)
	{
		var dateStr = this.GetValue(itemName);
		return(dateStr.substr(0, 10));
	}

	function GettingXmlItemValue_GetBoolValue(itemName)
	{
		var boolStr = this.GetValue(itemName);
		if(boolStr != "Y" && boolStr != "N")
			alert("Error boolStr must be one of 'Y' and 'N', now is " + boolStr);
		return(boolStr == "Y");
	}
	//end of class GettingXmlItemValue

