(function($){
    var cbDiv=null;
    var mbDiv=null;
    var confirmBox=null;
    var messageBox=null;
    var okCBF=null;
    var cancleCBF=null;
   
    
     $(document).ready(function(){
       cbDiv=document.createElement("div");
       cbDiv.title="操作确认";
       document.body.appendChild(cbDiv);
       
       confirmBox=$(cbDiv).dialog({
            width:300,
            height:150,
            autoOpen:false,
            overlay: {opacity: 0.5, background: "black"},
            buttons:{
                '取消':function(){$(this).dialog("close");if(cancleCBF)cancleCBF();cancleCBF=null;},
                '确定':function(){$(this).dialog("close");if(okCBF)okCBF();okCBF=null;}
            }
       });
     
       mbDiv=document.createElement("div");
       mbDiv.title="提示";
       mbDiv.align="center";
       document.body.appendChild(mbDiv);
       
       messageBox=$(mbDiv).dialog({
            width:300,
            height:150,
            autoOpen:false,
            overlay: {opacity: 0.5, background: "black"},
            buttons:{
                '关闭':function(){$(this).dialog("close");}
            }
       });
    });
   
   var jscatch=new Array();
   var stack=new Array();
   var tempStack=new Array();
   var loading=false;
   var isIE=$.browser.msie?true:false;
   
   function loadAndRunScript(path,callback){
      if(path&&typeof path=="string"){
          $.get(path,function(script){
              callback();
          })
      }
   }
   
   function clearScripts(){
      
   }
   
   function createPID(){
       
   }
   
   function initActive(script,initParam){
         stack[stack.length-1].param=initParam;
    }
    
    function pageInit(param){
	    if(stack.length>0){
	        var id=stack[stack.length-1].id;
	        window[id].init(param);
	    }
	    loading=false;
	    if(tempStack.length>0){
	        var lsobj=tempStack.pop();
	        loadSPage(lsobj.url,lsobj.id,lsobj.dialog,lsobj.param);
	    }
	}
	function pageDestory(){
	     if(stack.length>0){
	         var id=stack.pop().id;
	         if(id&&window[id]){
    	         if(window[id].destory)window[id].destory();
    	         window[id]=null;
    	         if(!isIE)delete window[id];
	         }
	     }
	}
	
	function loadCss(newcss){
	     
	     if(!newcss) return false;
	     var csslist=document.getElementsByTagName("link");
    	 	for(var i=0;i<newcss.length;i++){
    	 	    var href=newcss[i];
    	 	    var isFind=false;
    	 	    for(var j=csslist.length-1;j>-1;j--){
    	 	        if(csslist[j].href==href){isFind=true;break;};
    	 	    }
    	 	    if(isFind) continue;
    			var head = document.getElementsByTagName('head').item(0);
    			var style = document.createElement('link');
    			style.href = href;
    			style.rel = 'stylesheet';
    			style.type = 'text/css';
    			style.id='crstempcss';
    			head.appendChild(style);
    		}
    		deleteCSS(newcss);
	}
	
	function deleteCSS(newcss){
	    //debugger;
	    var css=document.getElementsByTagName("link");
	    for(var i=0;i<css.length;i++){
	        var linkobj=css[i];
	        var newCss=false;
	        for(var j=0;j<newcss.length;j++){
	 	        if(linkobj.href.indexOf(newcss[j])>-1){
	 	            newCss=true;
	 	            break;
	 	        };
	 	    }
	 	    if(newCss) continue;
	        if( 'crstempcss'==linkobj.id){
	            linkobj.type="";
	            linkobj.href="";
	            linkobj.parentNode.removeChild(linkobj);
	        }
	    }
	}
	
	
	function loadSPage(pageUrl,pid,isDialog,paramObj){
    	    //debugger;
    	    
    		var ss={id:pid,url:pageUrl,dialog:isDialog,param:paramObj};
    		if(loading){ tempStack.push(ss); return;}
    		
    		loading=true;
    		
    		this.currentUrl=pageUrl;
    		var c=isDialog?"mainTemp_div":"main";
 
    		pageUrl+="?timestamp="+(new Date()).getTime();
    		//开始遮罩====
    		if(!isDialog)pageDestory();//释放前一个页面的所有资源
    		
    		if(pid)stack.push(ss);
    		var crs=this;
    		var dia=document.getElementById(c);
    		if(isIE)dia.innerHTML="";
    		$(dia).load(pageUrl);
      }
	
    
    function loadJS(jslist){
        for(var i=0;i<arguments.length;i++){
            $.getScript(arguments[i]);
		}
    }
   
    return window["jCRS"]={
        webroot:"",
        language:"zh",
        basePagePath:"",
        hotelName:"",
        hotelID:"",
        loadNumber:1,
        isLink:false,
    	getCLDesc:function(desc){//获得当前语言环境下的对应描述
    		return desc[this.language];
    	},
    	isIEBrower:function(){
    	    return isIE;
    	},
    	setPlace:function(domain,isOffset){
			$("#"+domain).find("div.input_error_info").each(function(){
				var tid=$(this).attr("placement");
				var $e=$("#"+tid);
				if($e.length==0){
					 tid=$(this).attr("forE");
					 $e=$("#"+tid);
				}
				var offset;
				var width=$e.width();
				if(isOffset){
					offset=$e.offset();
				}else{
					offset=$e.position();
				}
				//if(!offset) alert(tid);
				$(this).css({top:offset.top,left:offset.left+width});
			});
     	},
    	loadScript:function(script){
    	   //stack[stack.length-1].script=script;
    	   var id=stack[stack.length-1].id;
    	   //alert(script);
    	   var param=stack[stack.length-1].param;
	       if(typeof script=="string"){
	            $.get(this.basePagePath+script,function(scriptf){
    	           window[id]=eval("("+scriptf+")($)");
    	            pageInit(param?param:null);
	            });
    	    }else{
    	        window[id]=script;
    	        pageInit(param?param:null);
    	    }
    	},
    	showMessage:function(message,width,height,title){
    	    mbDiv.innerHTML=message;
    	   if(width)
    	       messageBox.dialog("option","width",width);
    	       
    	   if(height)
    	       messageBox.dialog("option","height",height);
    	       
    	   if(title)
    	        messageBox.dialog("option","title",title);
    	    messageBox.dialog("open");
    	},
    	confirmOpt:function(message,okCallback,cancleCallback){
    	    cbDiv.innerHTML=message;
    	    confirmBox.dialog("open");
    	    if(okCallback&&typeof(okCallback)=="function") okCBF=okCallback;
    	    if(cancleCallback&&typeof(cancleCallback)=="function") cancleCBF=cancleCallback;
    	},
    	getDialog:function(){
    	    return dialog;
    	},
    	deleteElement:function(e){
    	    var eobj=e;
    	    if(typeof eobj=="string") eobj=document.getElementById(e);
    	    if(isIE)eobj.innerHTML="";
    	    $(eobj).remove();
    	},
    	loadPage:function(pageUrl,pid,isDialog,paramObj){
    	    this.loadNumber+=1;
    	    if(!isDialog&&pageUrl==this.currentUrl) return ;
    	    if(pageUrl){
        	    pageUrl=this.basePagePath+pageUrl;
        	    loadSPage(pageUrl,pid,isDialog,paramObj);
    	    }
    	},
    	
    	//此方法用来通知jCRS。页面加载并初始化完成。
    	loadFinish:function(){
    	    //释放遮罩
    	},
    	getPid:function(){
    	    if(stack.length>0)
    	      return stack[stack.length-1];
    	    else
    	      return null;
    	},
    	loadMainPage:function(pageUrl,pid,isDialog,paramObj){
    	    loadSPage(pageUrl,pid,isDialog,paramObj);
    	},
    	closeDialog:function(element){
    	    if(isIE){
    	        //alert(element.parentNode.innerHTML);
    	        if(element){
        	        if(element.innerHTML) element.innerHTML="";
            	    var dia=document.getElementById("mainTemp_div");
            	    dia.appendChild(element);
    	        }
//    	        $("div.ui-dialog").each(function (){
//            	        if(this.innerHTML) this.innerHTML="";
//            	        dia.appendChild(this);
//            	 })
        	    dia.innerHTML="";
    	    }else{
    	        $(element).remove();
    	    }
    	    pageDestory();
    	},
    	
    	loadCSS:function (newcss){
    	   
    	    if(arguments.length==0) return false;
    	    var css=new Array();
    	    for(var i=0;i<arguments.length;i++){
    	        css.push(this.basePagePath+arguments[i]);
    	    }
    	    loadCss(css);
    	    return true;
        },
        refreshPage:function(){
            var obj=stack.pop();
            if(obj){
                loadSPage(obj.url,obj.id,obj.dialog);
            }
        },
    	loadExtResource:function(resourcelist){
    		for(var i=0;i<arguments.length;i++){
    			var param=arguments[i];
    			var ext=param.substring(param.lastIndexOf(".")+1,param.length).toLowerCase();
    			switch(ext){
    				case 'css':this.loadCSS(param);break;
    				case 'js':loadJS(this.webroot+param);break;
    			}
    		}
    	}
    }
})($);