/*
 * 该插件是用来处理表单的异步提交,
 * 
 * 使用本插件的注意事项：
 *   1.在页面中必须引入jquery.messagebox.js插件
 *   2.参数url是字符串(必选项) 
 *   3.option为json对象{'data':datas,'type':'post',async:false,'showMsg':false,'showLoadMsg':false,'timeout':555,','initLang':{'formId':'','prefix':''},paddingForm':{'formId':'','byName':false,'prefix':''}}
 * 
 *    (1)参数datas是json对象（必选项），key是表单元素的name,value是表单元素的value
 *    (2)showLoadMsg是否需要显示加载数据时的提示信息
 *    (3)showMsg是否需要显示处理后的提示信息
 *    (4)type是调用ajax的方式
 *    (5)timeout请求超时时间
 *    (6)initLang 初始化多国语言
 *    (7)paddingForm 填充表单数据
 *    (8)async 默认: true
 * 
 * 例：
 * 
 * $.formsubmit(
 *                url,
 *               {'data':datas,'type':'post','showMsg':false,'showLoadMsg':false,'timeout':555,
 *               
 *                {
 *                   ajaxOnSuccess : function(){ alert('success :  '+'submitOnSuccess');},//获取数据成功时或提交表单成功时的回调函数
 *                   ajaxOnFail : function(){ alert('fail :  '+'submitOnFail');}　　　//执行ajax失败时的回调函数
 *                }
 *              }
 *              ); 
 * 
 * 
 */

;(function($,jCRS){
		/**
		* 设置信息窗口的内容。 add by Lance
		*	messageHeard   消息概况
		*	messageDetail	消息描述 （如果为空，则隐藏）
		*	type   控制图片   suc 成功  notify 提醒 err失败
		*/
	    $.setMessageForAir=function(messageHeard,messageDetail,type){
	    	var tdStr="";
	    	if(messageDetail){
				tdStr+="<div style='margin-left: 30px'><font color='red' >";
				tdStr+=messageDetail;
				tdStr+="</font>未售完的保留房仍能接受预订。<br/>确需关闭保留房，请及时联系我司销售，感谢您的支持!</div>";    	
	    	}
	    	setMessage(messageHeard,tdStr,type);
	    }
		/**
		* 设置信息窗口的内容。 add by Lance
		*	messageHeard   消息概况
		*	messageDetail	消息描述 （如果为空，则隐藏）
		*/
	    function setMessage (messageHeard,messageDetail,type){
	    	var $h=$("#msgBoxDiv_dialog").find("#msgDivId");
	    	var $d=$("#msgBoxDiv_dialog").find("#messageDetail");
	    	$h.html(messageHeard);
	    	if(messageDetail!=null && messageDetail.length>0){
	    		$("#msgBoxDiv_dialog").css("height","170px");
	    		var $td_d=$d.show().find("td");
	    		$td_d.html(messageDetail);
	    	}else{
	    		$d.hide();
	    	}
	    	var $span_icon=$("#msgBoxDiv_dialog").find("#msgDivLeftId > span:first");
	    	if(type=="suc"){
	    		$span_icon.addClass('yes_icon');
	    	}else if(type=="notify"){
	    		$span_icon.addClass('sigh_icon');
	    	}else if(type=="err"){
	    		$span_icon.addClass('no_icon');
	    	}
	    }
	    
	    
	    $.loadData=function(url,option) {
	    	var cfg={
			  	showMsg : false,
			  	msgTitle : '加载数据',
			  	closeDialog : false  /*是否自动关闭提示框  false-自动关闭  true-需要手动点击"关闭"按钮关闭*/
			};
	    	
	    	$.extend(cfg, option);
	    	cfg.methodType='load';
	    	$.disposeAjaxTransfer(url,cfg);
	    }
	    
	    
	    $.formsubmit=function(url,option) {
	    	
	    	var cfg={
			  	showMsg : true,
			  	msgTitle : '提交数据'
			};
	    	
	    	$.extend(cfg, option);
	    	
	    	cfg.methodType='submit';
	    	
	    	jCRS.loadNumber+=1;
	    	$.disposeAjaxTransfer(url,cfg);
	    }
	    
	
		$.disposeAjaxTransfer=function(url,option) {
			  
			  var cfg={
			  	data : null,
			  	type : 'post',
			  	async: true,
			  	showMsg : false,
			  	timeout : 5 * 60 * 1000,	/*请求超时时间*/
			  	methodType : 'load',
			  	msgTitle : '加载数据',
			  	closeDialog : false /*是否自动关闭提示框  false-自动关闭  true-需要手动点击"关闭"按钮关闭*/
			  	
			  };
				 
			  $.extend(cfg, option);
			  
			  
			  
			  cfg.type=$.trim(cfg.type).toLowerCase();
			  
			   var spath = jCRS.webroot;
			   url = spath + url;  /*需要判断url第一个字符是否为'/'*/
	           
	           var $msgBoxDiv=$("#msgBoxDiv_dialog");
	           if($msgBoxDiv.size() == 0){
	           	  $msgBoxDiv=$("<div id='msgBoxDiv_dialog'/>");
	           
               }
              
	           $msgBoxDiv.addClass("flora");
	           $msgBoxDiv.empty();
	           var $table=$('<table />');
	           $msgBoxDiv.append($table);
	           var $tr=$('<tr style="height:100px"/>');
	           $table.append($tr);
	          var $td=$('<td style="width: 100px;top: 20px;" />')
	          $tr.append($td);
	          var $msgDivLeft=$('<div id="msgDivLeftId" style="float: right;"><span class="yes_icon"/></div>');
	          $td.append($msgDivLeft); 
	          
	          $td=$('<td style="width: 20px;" />')
	          $tr.append($td);
	           
	          $td=$('<td style="width: 320px;height: auto;text-align: center;" />')
	          $tr.append($td);
	          var $msgDiv=$('<div id="msgDivId" style="font-size:14px;font-weight:bold"></div>');
	          $td.append($msgDiv) ;
	          $table.append("<tr id='messageDetail' style='display: none;'><td colspan='3' ></td></tr>") ;
	           
	           //$msgBoxDiv.append($msgDivLeft);
	           //$msgBoxDiv.append($msgDiv);
	          
	           $msgBoxDiv.dialog({
	                            		width : 450,
	                            		height : 220,
	                            		autoOpen:false,
	                            		modal : true,
	                            		bgiframe:true,
	                            		title : cfg.msgTitle,
	                            		overlay : {
	                            			opacity : 0.5,
	                            			background : "black"
	                            		},
	                            		
	                            		close: function(event, ui) { 
	                            		              $(this).dialog( "destroy"); 
	                            		              if(cfg.dialogClose) cfg.dialogClose.apply(window);
	                            		        },
	                            		buttons : {
	                            			'关闭': function() {
	                            				$(this).dialog("close");
	                            			}
	                            		}
	             });
	           
                

			   $.ajax({
		 	          type : cfg.type,
                      url: url,
                      data : cfg.data ,
                      async : cfg.async,
                      timeout : cfg.timeout,
                      beforeSend : function(xMLHttpRequest){
                      	 if(cfg.showMsg){
                      	 	 $msgBoxDiv.find("#msgDivId ").text("正在处理数据...");
                      	     $msgBoxDiv.dialog("open"); 
		                     
                      	 }		
                      },
                      success: function(data,textStatus){ 
                           	 
                           	  var json=eval('('+data+')');//保存返回字符窜
		                      if(!json){
		                      	json={message:''};
		                      }
		                      var succMsg=null;
	                          if(json.message ){
	                           	 	succMsg=json.message;
	                           }
	                           	 
	                         $msgBoxDiv.find("#msgDivId ").text(succMsg);
	                         
	                          
                           	  if(cfg.success){
		                       	    cfg.success.call(window,json,$msgBoxDiv);
		                      }
		                     
                           	 if(cfg.methodType== 'load'  && !cfg.closeDialog){  
                           	 	 $msgBoxDiv.dialog("close"); 
                           	 }
                           	 
		                   	 
                           	
                      },
                     error : function(XMLHttpRequest,textStatus,errorThrown){
                     	
                     	$msgBoxDiv.find("#msgDivLeftId > span:first").removeClass().addClass('no_icon');
                     	
                     	var errMsgObj={code:'',message:'',extendMessage:'',exceptionType:''};
                     	if(textStatus == 'timeout'){

                     		errMsgObj.code="Sys_timeout",
                     		errMsgObj.message="系统超时...";
                     		
                     		$msgBoxDiv.find("#msgDivId ").text(errMsgObj.message);
                     		if(!cfg.showMsg){
                      	         $msgBoxDiv.dialog("open");
                     		}  
                     		
                     		
                     		
                     		if(cfg.fail){
                           	 	 cfg.fail.call(window,errMsgObj,$msgBoxDiv);
                            }
                            
                            return false;
                     		
                     	}
                     	 
                     	switch (XMLHttpRequest.status) {
                             case  533:
                                
                                if(XMLHttpRequest.responseText){
                     	           errMsgObj=eval('('+XMLHttpRequest.responseText+')');
                     	        }

                     			break;
                     		 case 404:
                     		 	errMsgObj.code="SysClient_404";
                     			errMsgObj.message="未找到资源";
                     			
                                break;
                              
                             case 500:
                                if(XMLHttpRequest.responseText){
                     	           errMsgObj=eval('('+XMLHttpRequest.responseText+')');
                     	        }
                     	        if(!errMsgObj||!errMsgObj.code){
                         		 	errMsgObj.code="SysClient_500";
                         			errMsgObj.message="内部服务器错误";
                     	        }
                                break;   
                                
                     		default:
                     		    errMsgObj.code="SysClient_Not";
                     			errMsgObj.message="未知错误";
                     		
                     		  
                     			break;
                     	}

                        $msgBoxDiv.find("#msgDivId ").text(errMsgObj.message);
                        if(!cfg.showMsg){
              	           $msgBoxDiv.dialog("open");
             		    }  
                      	         
                     	
                     	if(cfg.fail){
                           	 	 cfg.fail.call(window,errMsgObj,$msgBoxDiv);
                        }

                      }
		        }) 
	};
		
})(jQuery,jCRS);

