/**
*提交请求到指定的url，并回调指定的函数。
*@rul 请求的url
*@responseProcess 提交后的回调函数。
*@formId 提交的form的id
*/

var content = '<div id="content" align="center"><img width="50" height="50" src="'+
	_fullPath+'/common/core/6.gif" /></div>'+
	'<div style="text-align:center;">数据加载中</div>';
var tipWin;
function submitRequest(url,responseProcess,formId,synchronous){
				//将favorite表单域的值转换为请求参数
				if(synchronous==null){
					synchronous=false;
				}
				
				if(formId){
					var params = Form.serialize(formId);
				}
				//创建Ajax.Request对象，对应于发送请求
			 
				var myAjax = new Ajax.Request(
				url,
				{
					//请求方式：POST
					method:'post',
					//请求参数
					parameters:params,
					//指定回调函数
					onComplete: responseProcess,
					//是否异步发送请求
					asynchronous:!synchronous
				});
				var readyState  = myAjax.transport.readyState ;  
       			if(readyState != 4) {  
       				if(!Windows.getWindow("tipWin")){
       					//alert('create');
						tipWin = new Window('tipWin', {className: "spread", width:100, height:70,
							resizable:false,
	        				minimizable:false,
	        				maximizable:false,
	       					draggable:false,
	        				closable:false,
	        				destroyOnClose:true});
						tipWin.getContent().innerHTML = content;
						tipWin.showCenter(false,20,20);
					}
       			}  
       			 
				 
}
/**
*提交请求到指定的url，并回调指定的函数,该过程如果后台出现错误将进行错误提示。
*@rul 请求的url
*@after 提交后的回调函数。
*@formId 提交的form的id
*@ynchronous 是否异步发送请求
*@callAnyway 是否总是回调
*/
function submitReqWithErrorPro(url,after,formId,ynchronous,callAnyway){
	submitRequest(url,
		function(response){
			var readyState = response.readyState;
				//alert(tipWin.visible);
				if(Windows.getWindow("tipWin")&&tipWin.visible){  
					//alert(tipWin.visible);
   					tipWin.close();
				}
			_webClentAjaxAfterRequest(response,after,callAnyway);
			}
		,formId,ynchronous);
}

/**
* 请求结束后的回调函数(并进行错误处理如果后台出现错误的话)这是内部js使用不建议页面js使用
* @response ajax求求后的返回对象;
* @after 回调函数并将传递后的responseText转换对象;
* @callAferAnyWay true or false 是否始终调用after无论是否出现后台错误,如果设为TRUE回调参数为原始response;
*/
function _webClentAjaxAfterRequest(response,after,callAferAnyWay){
	var result =resultFromResponse(response);
	var errorTip="";
	if(result.actionErrors){
		var message="";
		for(var i =0;i<result.actionErrors.length;i++){
			message=message+"\n"+result.actionErrors[i];
		}
		if(message !==''){
			alert(message);
		}
	}
	if(result.resultCode =="exception"){
		var errors = result.actionErrors;
		for(var i=0;i<errors.length;i++){
			errorTip=errorTip+errors[i]+'\n';
		}
		showDialogue(errorTip);
	}
	
	
 	if(errorTip && errorTip!==""){
 		if(callAferAnyWay){
 			after(response);
 		} 
 		return false;
 	}else if(after){
 		after(result);
 	}
 	return result.resultCode;
}
/**
 * 构造表格函数
 */
function constructorGrid(grid,gridInfo){
	if(gridInfo.imgPath){
		grid.setImagePath(gridInfo.imgPath);
	}
	if(gridInfo.header){
		grid.setHeader(gridInfo.header);
	}
	if(gridInfo.attachHeader){
		for(var i=0;i<attachHeader.length;i++){
			grid.attachHeader(attchHeader[i]);
		}
	}
	if(gridInfo.widths){
		grid.setInitWidths(gridInfo.widths);
	}
	if(gridInfo.colAlign){
		grid.setColAlign(gridInfo.colAlign);
	}
	if(gridInfo.colTypes){
		grid.setColTypes(gridInfo.colTypes);
	}
	if(gridInfo.colSorting){
		grid.setColSorting(gridInfo.colSorting);
	}
	if(gridInfo.colColor){
		grid.setColumnColor(gridInfo.colColor);
	}
	if(gridInfo.skin){
		grid.setSkin(gridInfo.skin);
	}
	grid.init();
}
/**
*根据属性信息创造一个grid
*
*/
function creatSimpleGrid(gridInfo){
	var grid = new dhtmlXGridObject(gridInfo.divId);
	constructorGrid(grid,gridInfo);
	return grid;	
}

function _parseData(data,valueInfo,rowId){
		var value;
		if( valueInfo.label){
			value=valueInfo.label;
		}else{
			eval("value = data."+valueInfo.name);
		}
		if(valueInfo.convert){//有转义值
			var convertValu;
			eval("convertValu=valueInfo.convert['"+value+"']");
			if(convertValu){
				value=convertValu;
			}
		}
		if(valueInfo.script){//有javascript
		var jsContent=valueInfo.script;
			var paReg=/@\w+(\.\w+)*@/g;
	 
			var allPars=valueInfo.script.match(paReg);
			jsContent=valueInfo.script;
			if(allPars&&allPars.length>0){
				for(var i=0;i<allPars.length;i++){
					var sParName=allPars[i];
					var parName=sParName.replace(/@/g,'');
					var scriptValue ;
					eval("scriptValue = data."+parName);
					jsContent=jsContent.replace(sParName,'"'+scriptValue+'"');
				}
			}
			if(jsContent.indexOf('@rowId')>=0){//需要rowid
				var realRowId=rowId;
				if(!realRowId && data.id){
					realRowId=data.id;
				}
				jsContent=jsContent.replace('@rowId','"'+realRowId+'"');
			}
			value=value+"^javascript:"+jsContent+"^_self";
		}
	return value;
}

function _getRegNameValue(regString,data,vlueInfos){
	
}

/**
*@data 数据对象
*@valueInfo 数据描述对象

*/
function data2WebXmlCell(data,valueInfo,rowId,index,base){
	if(!data||!valueInfo){
		return '';
	}
	var xml='<row id="'+rowId+'">';
	 
	for(var i=0;i<valueInfo.length;i++){
		var tempCode ="<cell><![CDATA[";
		var value;
		if(valueInfo[i].index){
			if(valueInfo[i].index === 'add'){
				value=index+base;
			}else{
				value=index;
			}
		}else{
			value =_parseData(data,valueInfo[i],rowId);
		}
		tempCode=tempCode+value+"]]></cell>";
		
		xml=xml+tempCode;
	}
	return xml+"</row>";
}
/**
* valueNameArray 必须是 [{name:'valueName',script:'function(para1,...@paraName,..,@rowId,...paran)'},{name:''}...{}]
* 其中Paraname是要取的参数名称，rowId行的id。
*/
function data2Webxml(allData,valueNameArray,rowIdFrom,baseIndex){
//	alert(""); curP*page.pageSize
	if(!allData||allData.length<1){
		return '<rows></rows>';
	}
	var result ='<rows>';
	var rowId;
	for(var i =0;i<allData.length;i++){
		var rowId=i;
		if(rowIdFrom && isNaN(rowIdFrom)){
			eval("rowId= allData[i]."+rowIdFrom);
		}
		result=result+data2WebXmlCell(allData[i],valueNameArray,rowId,i+1,baseIndex)+'\n';
	}
	return result+"</rows>";

}

/**
*添加一条记录到grid中
* @data 数据实体
* @数据描述对象
* @id row的id
* @type 插入的位置top ,bottom,current
*/
function addRowToGrid(grid,data,valueInfo,rowId,type){
	var values =[];
	for(var i=0;i<valueInfo.length;i++){
		var value =_parseData(data,valueInfo[i],data.id);
		values[values.length]=value;
	}//end of for
	var position=grid.getRowsNum();//默认加到尾部
	if(!isNaN(type)){//type 为数字 （指定了行号)
		position=type;
	}else{
		switch(type){
			case 'top':{
				position=0
				break;
			}
			case 'current':{
				var curId= grid.getSelectedRowId();
				if(curId != null){
					position=grid.getRowIndex(curId);
					}
				break;
			}
		}
	}
	grid.addRow(rowId,values,position);
}
 
 
/**
*这里修改某一行其实就是删除后再添加（尽量利用已有的js函数）
*@grid grid
*@dataInfo 数据信息
*@data 数据
*@rowId 表格中的行id
*/
function changeGridRowValue(grid,dataInfo,data,rowId){
	var rowIndex;
	if(typeof(rowId)=="undefined" || rowId==null || rowId==''){
		rowId=grid.getSelectedId();
	}
	if(typeof(rowId)=="undefined" || rowId==null || rowId==''){
		showDialogue("请选择一行");
		return;
	}
	var rowIndex=grid.getRowIndex(rowId);
	grid.deleteRow(rowId);
	addRowToGrid(grid,data,dataInfo,rowId,rowIndex);
	grid.selectRowById(rowId);
}

function isValueKey(event){
	event =window.event? window.event:event;
	var IE=window.event;
	if(IE){
		return event.keyCode;
	}else{
		return event.charCode;
	}

}

function isRegKey(e,reg){
	var key = window.event ? window.event.keyCode: e.which;
	var keychar = String.fromCharCode(key);
	return reg.test(keychar);
}

function inputNumberOnly(){
	var numReg =/\d+/g
	var numInput =$$("input.number");
	for(var i=0;i<numInput.length;i++){
		numInput[i].onkeypress= function(event){
			 	if(isValueKey(event)){
		 			return isRegKey(event,/\d/);
			 	}
		}
	
	}
}

/**
* 默认的toolbar处理函数
* @itemId 
* @itemValue
*/
function defaultOnClickToolBar(itemId,itemValue){
	switch(itemId){
		case 'new':{
			toAdd();
			break;
		}
		case 'edit':{
			toEdit();
			break;
		}
		case 'delete':{
			toDelete();
			break;
		}
		case 'search':{
			toSearch()
			break;
		}
	}
}	

 


