/**
 * @author lubihua
 */

Ext.namespace('AssistCom','AssistCom.Util','AssistCom.Util.Ajax');

/**
 * 企业总机的Ajax请求的方法提交
 * 
 * parameterObj 对象参数设置：
 * 
 * params: 传输过来的参数列表 格式为:{a:a,b:b,c:c}
 * cmd: 执行命令的servlet的类型
 * callbackFun: Ajax请求完成后执行的callback function
 * scope:范围 
 * maskObj: 页面中冻结的对象，可选参数，默认为scope的值,
 * maskStr : 页面冻结时显示的文字
 * maskCls : 页面冻结时显示的图片
 * url : 请求的地址，默认为auth.do,可选,
 * isCmdStr : 表示拼凑的参数的格式，默认是true，当它是false时，格式是cmd=''&aaa=''&bbb=''
 * otherParam : 用于其他格式的参数，当他不为空时，就选用这个而原有的格式
 * isUseMask : 是否使用mask冻结，默认是true使用的，false就是不使用
 */

AssistCom.Util.Ajax.Send = function(parameterObj){
	
	parameterObj.maskObj = parameterObj.maskObj || Ext.getBody();
	parameterObj.isUseMask = parameterObj.isUseMask === false ? false : true;
	if(parameterObj.isUseMask && !parameterObj.maskObj.mask){
		parameterObj.maskObj = Ext.getBody();
		
	}
	
	if (parameterObj.isUseMask && parameterObj.maskObj.mask) {
		parameterObj.maskObj.mask('<center><div style="width:32px;height:32px;border:none;" class="icon_pageLoading"></div></center>' + (parameterObj.maskStr || '正在处理请求,请稍候...'));
	}
	
	var pa = {};
	if (parameterObj.otherParam == null) {
	
		if (parameterObj.isCmdStr != null && parameterObj.isCmdStr === false) {
			pa = Ext.apply({
				cmd: parameterObj.cmd || ''
			}, parameterObj.params);
		}
		else {
			paa = {
				cmd: parameterObj.cmd || '',
				parameter: parameterObj.params ||
				{}
			};
			pa ={cmdStr : Ext.encode(paa)};
		}
	}
	
	//alert(Ext.encode(pa));
	var ajaxParam = {
		url : parameterObj.url == null ? AssistCom.Config.SERVER.URL + AssistCom.Config.REQUEST.AuthDo : parameterObj.url , 
		params : parameterObj.otherParam == null ? pa : parameterObj.otherParam,
		callback: function(o, s, r){
		
			try {
				if (parameterObj.cmd != null && parameterObj.cmd.length != 0) {
				
					if (s != false && r != null && r.responseText != null && r.responseText.length != 0 ) {
						if (Ext.decode(r.responseText).exId == -33) {
							Ext.MessageBox.show({
								fn: function(){
									window.location.href = '../login.html';
								},
								buttons: Ext.MessageBox.OK,
								msg: '操作已超时,请重新登陆',
								title: '超时',
								icon: Ext.MessageBox.ERROR
							});
						}
						if(Ext.decode(r.responseText).exId == -29){
							Ext.MessageBox.show({
								fn: function(){
									window.location.href = '../login.html';
								},
								buttons: Ext.MessageBox.OK,
								msg: '很抱歉，系统正在维护中，请您稍后尝试...',
								title: '错误',
								icon: Ext.MessageBox.ERROR
							});
						}
					}
				}
				if (parameterObj.callbackFun != null && typeof parameterObj.callbackFun == 'function') {
					parameterObj.callbackFun.call(this, o, s, r);
				}
				if (parameterObj.isUseMask && parameterObj.maskObj != null && parameterObj.maskObj.unmask != null) {
					parameterObj.maskObj.unmask();
				}
			} 
			catch (e) {
				if (parameterObj.isUseMask && parameterObj.maskObj != null && parameterObj.maskObj.unmask != null) {
					parameterObj.maskObj.unmask();
				}
			}
		},
		method : 'POST',
		scope : parameterObj.scope || window,
		disableCaching : false
	};
	//发送请求
	Ext.Ajax.timeout = 300000;
	Ext.Ajax.request(ajaxParam);	
};
