Ulink_Ajax=function(){
	Version:'1.0'
};


function getFormParameters(form){
	if($(form) == undefined){
		return "";
	}
  	var fieldCount = document.getElementById(form).length;
  	var params = "";
  	var m;
  	for(m=0;m<fieldCount;m++){
  		 var field = document.getElementById(form)[m];
  		 if(field.type == "checkbox" || field.type == "radio"){
  		 	if(!field.checked){
  		 		continue;
  		 	}
  		 }
  		 if(field.disabled)
  		 	continue;
  		 //alert(field.name+'='+escape(escape(field.value)));
  		 var fieldValue = field.value;
  		 if(field.type == "text" || field.type == "textarea"){
			fieldValue = replaceAll(fieldValue,"<","&lt;");
			fieldValue = replaceAll(fieldValue,">","&gt;");
  		 }
  		 if(params == ""){
  		 	params = field.name+'='+escape(escape(fieldValue));
  		 	//params = field.name+'='+field.value;
  		 	//params = field.name+"="+encodeURI(field.value);
  		 }else{
  		 	params += '&'+field.name+'='+escape(escape(fieldValue));
  		 	//params += '&'+field.name+'='+field.value;
  		 	//params += "&"+field.name+"="+encodeURI(field.value);
  		 }
  	}
  	return params;
};

/**
 * send request to the form action with form's input fields
 * eg.
 * 
 * <form action="createUser.do" name="userForm">
 *		User Name:<input type="text" name="userName">
 *		Password:<input type="password" name="password">
 * </form>
 * 
 * Ulink_Ajax.sendRequest("userForm");
 * this will send userName and password to url createUser.do
 *
 * responseHandler is a function to handle response from createUser.do
 * this function must with a parameter that will be passed while the server
 * response
 *
 * sendRequest depends on prototype-1.3.1 and resp.js
 */

document.write("<div id=\"_msg_div\" style=\"width:150px;height:18px;"+
		"display:none;background:#ffffe0;border:1px solid #000000;"+
		"position:absolute;top:0px;right:0px;vertical-align:middle;zIndex:999;\"></div>");


Ulink_Ajax.prototype={
	
		submitForm:function(form, responseHandler){
			this.sendRequest(document.getElementById(form).action,getFormParameters(form),responseHandler);
		},
		
		
		sendRequest:function(url,parameters,responseHandler){
			this.handler=responseHandler;
				
		    var ajaxOptions = {
		      asynchronous: true,
		      method: 'post',
		      evalScripts: true,
		      parameters:parameters,
		      onComplete: this.onRequestComplete.bind(this)
		    };
		    //显示装载信息
		    var div = $("_msg_div");
		   	div.innerHTML = "<span style=\"background-image:url(images/loading.gif);width:16px;height:16px;vertical-align:middle;\"></span>正在装载，请稍候 ...";
		   	//div.style.top=(document.body.offsetHeight-div.offsetHeight)/2+"px";
		   	//div.style.left=(document.body.offsetWidth-div.offsetWidth)/2+"px";
		   	div.style.display="inline";
		    new Ajax.Request(url, ajaxOptions);
		},
		
		onRequestComplete:function(request){
			$("_msg_div").style.display="none";
			if(request.status == 404){
				//page not found
				Ulink_Control.alert("连接服务器失败，请检查连接");
			}else if(request.status == 500){
				//server error
				Ulink_Control.alert("服务器发生错误");
			}else{
				var xml = request.responseXml;
				//alert(request.responseText);
				//alert(xml.getElementsByTagName("resp")[0]);
				var resp = new Response();
				resp.resolve(xml);
				this.handler(resp);
			}
		}

}