 var ObjectPool=new Object();function $chk(value){if(typeof(value)=="undefined"||value==null||value!=value||value==false||value==""||value==0)return false;else return true;}function $define(value){if(typeof(value)=="undefined"||value==null||value!=value)return false;else return true;}Object.extendAndInit=function(destination,source){Object.extend(destination,source);destination.initialize.apply(destination,$A(arguments).slice(2));return destination;};Object.extend(Event,{srcElement:function(event){return $(event.currentTarget||event.srcElement);},fireClick:function(element){element=$(element);if(element.dispatchEvent){var evtObj=document.createEvent('MouseEvents');evtObj.initMouseEvent("click",true,true,document.defaultView,1,0,0,0,0,false,false,true,false,0,null);element.dispatchEvent(evtObj);}else if(element.fireEvent){element.fireEvent("onclick");}},fire:function(element,name){var element=$(element);if(element.fireEvent){try{element.fireEvent("on"+name);}catch(err){if(element._events){if(element._events[name]){var args=$A(arguments);args=args.slice(2);element._events[name].each(function(func){func.apply(element,args);});}}}}else{try{var evt=document.createEvent("UIEvents");evt.initUIEvent(name,true,true,window,1);var canceled=element.dispatchEvent(evt);}catch(err){}}}});Element.addMethods({exist:$,_events:$H(),clear:function(element){$A($(element).childNodes).each(function(obj){element.removeChild(obj);});$(element).innerHTML="";},show:function(element){$(element).style.display='block';return element;}});Element.setValue=function(element,value){if(element.setValue)element.setValue(value);else if(element.tagName.toLowerCase()=="input"){switch(element.type.toLowerCase()){case "checkbox":case "radio":if(element.value==value)element.checked=true;break;default:element.value=value;}}else{element.value=value;}if(element.datepickerObj)element.datepickerObj.setValue(value);};Object.extend(Element,Element.Methods);Object.extend(String.prototype,{trim:String.prototype.strip});Object.extend(Array.prototype,{getSize:Array.prototype.size,hasIntersection:function(target){var results=false;this.each(function(value,index){if(target.indexOf(value)!= -1){results=true;throw $break;}});return results;},isSubset:function(target){var result=true;this.each(function(value,index){if(target.indexOf(value)== -1){result=false;throw $break;}});return result;},toHash:function(fieldDef){var results=$H();this.each(function(item,index){results[fieldDef[index]]=item;});return results;}});Object.extend(Hash.prototype,{put:function(key,value){this[key]=value},get:function(key){return this[key]},getSize:Hash.prototype.size,clear:function(){var self=this;this.each(function(p){delete self[p.key];})},first:function(){var self=this,result;this.each(function(p){result=p;throw $break;});return result;},getIntersection:function(target){var results=$A();this.each(function(value,index){if(target.indexOf(value.key)!= -1)results.push(value.key);});return results;},shallowClone:function(){var results=$H();this.each(function(pair){results[pair.key]=pair.value;});return results;}});__$H=$H;$H=function(object){if(object instanceof Array)object=({});return __$H(object);};Class.eventClass=function(){var newClass=function(){this._events=$H();this.initialize.apply(this,arguments);if(this.id)ObjectPool[this.id]=this;};Object.extend(newClass.prototype,{addEventListener:function(name,observer){name="on"+name;if(!this._events[name])this._events[name]=new Array();if(!this._events[name].include(observer))this._events[name].push(observer);},removeEventListener:function(name,observer){name="on"+name;if(!this._events|| !this._events[name])return false;if(observer){var _index=this._events[name].indexOf(observer);if(_index!= -1)this._events[name].splice(_index,1);}else{delete this._events[name];}},fireEvent:function(name){if(name.substr(0,2)!="on")name="on"+name;if(!this._events[name])return false;var args=$A(arguments);args.shift();var sourceObj=this;this._events[name].each(function(func){func.apply(sourceObj,args);});}});return newClass;};var UA=navigator.userAgent;var isKHTML=/Konqueror|Safari|KHTML/.test(UA);var isGecko=(/Gecko/.test(UA)&& !isKHTML);var isOpera=/Opera/.test(UA);var isIE=isMSIE=(/MSIE/.test(UA)&& !isOpera);var isMaxthon=/Maxthon/.test(UA)||/MyIE/.test(UA);var _dom=document.all?(document.getElementById?2:1):(document.getElementById?4:(document.layers?3:0));var Cookie=new Object();Object.extend(Cookie,{originalString:document.cookie,_getCookieHash:function(){var cookieArr=this.originalString.split(";");var cookieHash=$H();for(var i=0;i<cookieArr.length;i++){if(cookieArr[i].indexOf("=")!= -1)cookieHash[cookieArr[i].split("=")[0].trim()]=unescape(cookieArr[i].split("=")[1]).trim();}return cookieHash;},setCookie:function(sName,sValue,dExpire,sDomain,sPath){var _cookieString=sName+"="+escape(sValue);if($define(dExpire))_cookieString+="; expires="+dExpire.toGMTString();if($define(sDomain))_cookieString+="; domain="+sDomain;if($define(sPath))_cookieString+="; path="+sPath;document.cookie=_cookieString;this.originalString=document.cookie;this.values=this._getCookieHash();},deleteCookie:function(sName){var _date=new Date(1);document.cookie=sName+"=;expires="+_date.toGMTString();this.originalString=document.cookie;this.values=this._getCookieHash();}});Cookie.values=Cookie._getCookieHash();Object.truncate=function(_object){for(key in _object){delete _object[key];}};function catchError(msg,url,line){if(!window.SystemLog)return false;SystemLog.add("Error: "+msg+" at "+url+": in "+line+" lines",null,true);return false;};window.onerror=catchError;function showError(oRequest,err){if(!err)err=oRequest;if(!(/www\.qunar\.com/.test(location.host))&&err.message.indexOf('nsIXMLHttpRequest.status')== -1)debugger;if(typeof SystemLog!="undefined")SystemLog.add("Error: "+err.name+": "+err.message,null,true);};function getCookie(){var cookieArr=document.cookie.split(";");var cookieHash=$H();for(var i=0;i<cookieArr.length;i++){if(cookieArr[i].indexOf("=")!= -1)cookieHash[cookieArr[i].split("=")[0].trim()]=cookieArr[i].split("=")[1].trim();}return cookieHash;};function $E(html){html=typeof html=='undefined'?'':html.toString().strip();var regExp=/^<([a-z]+)\s*[^>]*>[\s\S]*<\/\1>$/i;var tagName=regExp.exec(html);if(tagName)tagName=tagName[1].toUpperCase();else throw new Error(0,"html parse Error");var div=$(document.createElement('div'));if(['THEAD','TBODY','TR','TD'].include(tagName)){switch(tagName){case 'THEAD':case 'TBODY':div.innerHTML='<table>'+html.stripScripts()+'</table>';depth=2;break;case 'TR':div.innerHTML='<table><tbody>'+html.stripScripts()+'</tbody></table>';depth=3;break;case 'TD':div.innerHTML='<table><tbody><tr>'+html.stripScripts()+'</tr></tbody></table>';depth=4;}}else{div.innerHTML=html.stripScripts();depth=1;}depth.times(function(){div=div.firstChild});return Element.extend(div);}Log4js=Class.create();Log4js.prototype.initialize=function(debug,remoteUrl){this.remoteUrl=remoteUrl;this.logList=$H({});this.testLogList=$H({});this.baseTime=new Date();};Object.extend(Log4js.prototype,{add:function(key,value,allowOverride){value=value||this.getTimeOffset();allowOverride=true;this.show("Add a log: {"+key+":"+value+"}");},addTestLog:function(key,value,allowOverride){value=value||this.getTimeOffset();if(key in this.testLogList){if(allowOverride)this.testLogList[key]=value;else throw new Error("the key ["+key+"] has exist!");}else this.testLogList[key]=value;},remove:function(){$A(arguments).each(function(key){delete this.logList[key];this.show("Remove a log: "+key);}.bind(this))},removeAll:function(){this.logList.each(function(pair){this.remove(pair.key)}.bind(this));},removeByValue:function(value){this.logList.each(function(pair){if(this.logList[pair.key]==value){this.remove(pair.key);}}.bind(this));},show:function(){if(typeof $D=="undefined")return;for(var i=0;i<arguments.length;i++){$D.add(arguments[i]);}},setBaseTime:function(date){var time=date?((date instanceof Date?date:new Date(date))):new Date();if(isNaN(time.valueOf()))throw new Error("The time is error!");else this.baseTime=time;},getTimeOffset:function(){return new Date()-this.baseTime;},save:function(forceSave){},measure:function(key,whichType){var count=0,totalTime=0;this.testLogList.each(function(logKey){logKey=logKey.key;var ss="";if(whichType)ss="\\["+whichType+"\\]";else ss="(?:\\[.+\\]|^)";var reg=new RegExp(ss+key+"\\[(\\d+)\\]");var matchKey;if(matchKey=reg.exec(logKey)){count++;totalTime+=(this.testLogList[logKey]-matchKey[1]);}}.bind(this));if(count==0)return this.show("no data for measure!");else return[totalTime,count,totalTime/count];},watchFunction:function(fArr){for(var i=0;i<arguments.length;i++){var f=arguments[i];var tempf;try{tempf=eval(f);}catch(err){throw new Error("The watch function "+f+" is not defined");}if(!tempf)throw new Error("The watch function "+f+" is not defined");var self=this;var newFunction=function(){var timeSign=self.start(f,"function"),res;try{res=tempf.apply(this,$A(arguments));}finally{self.end(timeSign);}return res;};eval(f+"=newFunction");this.show("The function "+f+" has been watched");}},start:function(testName,whichType){return(whichType?"["+whichType+"]":"")+testName+"["+this.getTimeOffset()+"]";},end:function(testSign){this.addTestLog(testSign,null,true);},eval:function(evalStr,n){n=n||1;var testName="temp_"+this.getTimeOffset();var testSign;var logKeys=[];for(var i=0;i<n;i++){testSign=this.start(testName,"testEvalStr");logKeys.push(testSign);eval(evalStr);this.end(testSign);}var testResult=this.measure(testName,"testEvalStr");logKeys.each(function(ts){delete this.testLogList[ts]}.bind(this));return testResult;}});var SystemLog=new Log4js(true);var sobjPerformanceLog=new Log4js(true);var defaultLogURL="/twell/trace/log.jsp";if(location.host=="localhost"){defaultLogURL="http://beta.corp.qunar.com"+defaultLogURL;}Event.observe(window,"unload",function(){Object.truncate(ObjectPool);});var _st=window.setTimeout;window.setTimeout=function(fRef,mDelay){if(typeof fRef=='function'){var argu=Array.prototype.slice.call(arguments,2);var f=(function(){fRef.apply(null,argu);});return _st(f,mDelay);}return _st(fRef,mDelay);};SystemObject=Class.eventClass();Object.extend(SystemObject.prototype,{initialize:function(){this.queryParams=$H(location.search.toQueryParams());},status:new Object(),constant:new Object(),language:new Object()});var System=new SystemObject();Math.getMinValue=function(arr,defaultValue){var _result=Number.MAX_VALUE;arr.each(function(value){if(typeof(value)=="undefined"||value==null||isNaN(value)||value==defaultValue)return;if(value<_result)_result=value;});if(_result==Number.MAX_VALUE){if(defaultValue)return defaultValue;else return-1;}else return _result;};Math.getMaxValue=function(arr,defaultValue){var _result=Number.MIN_VALUE;arr.each(function(value){if(typeof(value)=="undefined"||value==null||isNaN(value)||value==defaultValue)return;if(value>_result)_result=value;});if(_result==Number.MIN_VALUE){if(defaultValue)return defaultValue;else return-1;}else return _result;};Array.defaultCompare=function(a,b){if(a>b)return 1;if(a==b)return 0;if(a<b)return-1;};Object.extend(Array.prototype,{swap:function(i,j){var _tem=this[i];this[i]=this[j];this[j]=_tem;},__quickSort1:function(st,en){if(en-st<=6)return this.insertSort(st,en);var splitV=this[(st+en)>>1],i=st,j=en,_tem;do{while(i<=en&&this.compare(this[i],splitV)<0)i++;while(j>=st&&this.compare(this[j],splitV)>0)j--;if(i<=j){_tem=this[i];this[i]=this[j];this[j]=_tem;i++;j--;};}while(i<j);if(st<j)this.__quickSort1(st,j);if(i<en)this.__quickSort1(i,en);},__quickSort2:function(st,en){},quickSort:function(compare){this.compare=compare||Array.defaultCompare;this.__quickSort1(0,this.length-1);return this;},defaultCompare:Array.defaultCompare,insertSort:function(s,e,compare){s=s||0;e=e||this.length-1;compare=compare||this.compare||Array.defaultCompare;var tem,stopPostion;for(var i=s+1;i<=e;i++){tem=this[i];stopPostion= -1;for(var j=i-1;j>=s;j--){if(this.compare(this[j],tem)>0){this[j+1]=this[j];stopPostion=j;}else break}if(stopPostion!= -1)this[stopPostion]=tem;}}});Debugger=Class.create();Debugger.prototype.initialize=function(isshow){this.alter=0;this.percent=1;this.evalStack=[];this.maxStackLength=30;this.pointer=0;this.container=document.createElement("div");Element.setStyle(this.container,{position:"absolute",top:0,right:0,zIndex:"999999"});if(isshow===false)Element.hide(this.container);this.logShowDiv=document.createElement("div");Element.setStyle(this.logShowDiv,{width:"100%",border:"1px solid #666",overflow:"auto","background-color":"#FFF"});this.container.appendChild(this.logShowDiv);this.debugInput=document.createElement("input");this.debugInput.div=document.createElement("div");Element.setStyle(this.debugInput.div,{"background-color":"#FF9900"});Element.setStyle(this.debugInput,{"background-color":"#FF9900",border:"1px solid #666",padding:"3px"});Event.observe(this.debugInput,"keydown",this.evalStr.bindAsEventListener(this));this.debugInput.div.appendChild(this.debugInput);this.container.appendChild(this.debugInput.div);this.logShowDivFromSys=document.createElement("div");Element.setStyle(this.logShowDivFromSys,{width:"100%",border:"1px solid #666",overflow:"auto","background-color":"#FFF",height:"150px"});this.container.appendChild(this.logShowDivFromSys);if(document.body){document.body.appendChild(this.container);this.setSize(1);}else Event.observe(window,"load",function(){document.body.appendChild(this.container);this.setSize(1);}.bind(this));if(isshow!==false)this.debugInput.focus();if(typeof Fix=="function")new Fix(this.container);};try{var allWindowEval=window.eval.bind(window);}catch(e){};Object.extend(Debugger.prototype,{setSize:function(percent){percent=this.percent*percent;if(percent==0)return;var maxWidth=document.body.offsetWidth;var maxHeight=document.documentElement.clientHeight-50;var sWidth=500*percent>maxWidth?maxWidth:500*percent;var sHeight=150*percent+150>maxHeight?maxHeight-150:150*percent;if(500*percent>maxWidth&&150*percent>maxHeight){}else{this.percent=percent;}this.container.style.width=sWidth+"px";this.logShowDiv.style.height=sHeight+"px";this.debugInput.style.width=(sWidth-6>0?sWidth-6:1)+"px";},evalStr:function(ev){if(ev.keyCode==13){var evalStr=this.debugInput.value;if(evalStr=="cls"){this.clear();this.debugInput.value="";return;}if(evalStr=="hidden"){Element.hide(this.logShowDivFromSys);this.debugInput.value="";return}if(evalStr=="show"){Element.show(this.logShowDivFromSys);this.debugInput.value="";return}if(evalStr=="cls2"){this.logShowDivFromSys.innerHTML="";this.debugInput.value="";return}try{this.add(allWindowEval(evalStr),true);}catch(err){this.add("error: "+err.name+": "+err.message,true);}finally{this.debugInput.value="";if(this.evalStack.include(evalStr)){this.evalStack=this.evalStack.without(evalStr);}this.evalStack.push(evalStr);if(this.evalStack.length>this.maxStackLength)this.evalStack.shift();this.pointer=this.evalStack.length;}}else if(ev.keyCode==38){if(this.evalStack.length==0)return;this.pointer--;if(this.pointer<0)this.pointer=0;this.debugInput.value=this.evalStack[this.pointer]||'';}else if(ev.keyCode==40){if(this.evalStack.length==0)return;this.debugInput.value=this.evalStack[this.pointer]||'';this.pointer++;if(this.pointer>this.evalStack.length)this.pointer=this.evalStack.length;}},add:function(object,fromEvel){var logDiv=this.logShowDivFromSys;if(fromEvel)logDiv=this.logShowDiv;var str=Object.inspect(object);if(str==="undefined")return;str=str.escapeHTML();if(typeof object=="function")str="<pre>"+str+"</pre>";if(!this.alter)logDiv.innerHTML+="<span style='background-color:#99FF99'>"+str+"</span><br />";else logDiv.innerHTML+="<span style='background-color:#FFCCCC'>"+str+"</span><br />";logDiv.scrollTop=logDiv.scrollHeight-logDiv.clientHeight;this.alter=this.alter?0:1;},clear:function(){this.logShowDiv.innerHTML="";}});var eventStartStep1=false,$D,startTimeoutHander=null;Event.observe(document,"keydown",function(ev){ev=ev||window.event;if(ev.keyCode==68&&ev.ctrlKey&&ev.altKey){if(startTimeoutHander)clearTimeout(startTimeoutHander);eventStartStep1=true;startTimeoutHander=window.setTimeout("eventStartStep1=false",5000);return;}if(!eventStartStep1|| !ev.ctrlKey|| !ev.altKey||ev.keyCode==16||ev.keyCode==17)return;switch(ev.keyCode){case 72:if($D)Element.hide($D.container);break;case 83:if($D){Element.show($D.container);$D.debugInput.focus();}break;case 190:if($D)$D.setSize(1.5);break;case 188:if($D)$D.setSize(0.8);break;}});function swf(el,b,params,vars){var s,s2='';var params=params||{};var fvars=vars&&vars.join('&');var src=b[0],id=b[1],width=b[2],height=b[3],ver=b[4];s='<object id="'+id+'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+width+'" height="'+height+'">';s+='<param name="movie" value="'+src+'" />';for(var key in params){s+='<param name="'+key+'" value="'+params[key]+'" />';s2+=key+'="'+params[key]+'" ';};if(fvars&&fvars.length>0){s+='<param name="flashvars" value="'+fvars+'" />';s2+='flashvars="'+fvars+'"';}s+='<embed type="application/x-shockwave-flash" src="'+src+'" width="'+width+'" height="'+height+'" id="'+id+'" name="'+id+'" '+s2+' /></object>';document.getElementById(el).innerHTML=s;};scriptTransport=Class.create();scriptTransport.prototype.initialize=function(){this.readyState=0;};scriptTransport.prototype.open=function(method,url,asynchronous){if(method!='GET')alert('Method should be set to GET when using cross site ajax');this.readyState=1;this.onreadystatechange();this.url=url;this.userAgent=navigator.userAgent.toLowerCase();this.setBrowser();this.prepareGetScriptXS();};scriptTransport.prototype.send=function(body){this.readyState=2;this.onreadystatechange();this.getScriptXS(this.url);};scriptTransport.prototype.setBrowser=function(body){scriptTransport.prototype.browser={version:(this.userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(this.userAgent),opera:/opera/.test(this.userAgent),msie:/msie/.test(this.userAgent)&& !/opera/.test(this.userAgent),mozilla:/mozilla/.test(this.userAgent)&& !/(compatible|webkit)/.test(this.userAgent),konqueror:this.userAgent.match(/konqueror/i)};};scriptTransport.prototype.prepareGetScriptXS=function(){};scriptTransport.prototype.callback=function(){this.status=200;this.readyState=4;if(this.node)this.onreadystatechange();try{if(this.removeScriptElement)this.node.parentNode.removeChild(this.node);}catch(e){}};scriptTransport.prototype.getScriptXS=function(){var arg={'url':null};arg.url=arguments[0];this.node=document.createElement('SCRIPT');this.node.type='text/javascript';this.node.src=arg.url;var node_helper=null;if(this.browser.msie){function mybind(obj){temp=function(){if(this.readyState=="complete"||this.readyState=="loaded"){return obj.callback.call(obj);}};return temp;};this.node.onreadystatechange=mybind(this);}else{this.node.onload=this.callback.bind(this);}this.readyState=3;this.onreadystatechange();var head=document.getElementsByTagName('HEAD')[0];head.appendChild(this.node);};scriptTransport.prototype.setRequestHeader=function(){};scriptTransport.prototype.onreadystatechange=function(){};scriptTransport.prototype.abort=function(){try{this.node.src="";this.node.parentNode.removeChild(this.node);delete this.node;}catch(e){}};Ajax.Request.prototype=Object.extend(Ajax.Request.prototype,{initialize:function(url,options){this.setOptions(options);if(!this.options.crossSite){this.transport=Ajax.getTransport();}else{this.transport=new scriptTransport();this.removeScriptElement=(options.removeScriptElement)?options.removeScriptElement:false;}this.request(url);}});(function(){var userAgent=navigator.userAgent.toLowerCase();Object.extend(Prototype.Browser,{version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],Safari:/webkit/.test(userAgent),Mozilla:/mozilla/.test(userAgent)&& !/(compatible|webkit)/.test(userAgent)});String.prototype.setTemplate=function(object){var p=/{%\w*%}/;var s=this;var result=null;do{result=p.exec(s);if(result!=null){var _pn=result[0].replace(/(\{%)|(%\})/g,'');s=s.replace(new RegExp("{%"+_pn+"%}","g"),object[_pn]);}}while(result!=null);return s;};Element.addMethods({setTemplate:function(element,object){if(!$define(element.__templateString))element.__templateString=element.innerHTML;var p=/{%\w*%}/;var s=element.__templateString;var result=null;do{result=p.exec(s);if(result!=null){var _pn=result[0].replace(/(\{%)|(%\})/g,'');s=s.replace(new RegExp("{%"+_pn+"%}","g"),object[_pn]);}}while(result!=null);element.innerHTML=s;return element;}});Event.domReady={add:function(fn){if(Event.domReady.loaded){return fn();}var observers=Event.domReady.observers;if(!observers){observers=Event.domReady.observers=[];}observers[observers.length]=fn;if(Event.domReady.callback){return;}Event.domReady.callback=function(){if(Event.domReady.loaded){return;}Event.domReady.loaded=true;if(Event.domReady.timer){clearInterval(Event.domReady.timer);Event.domReady.timer=null;}var observers=Event.domReady.observers;for(var i=0,length=observers.length;i<length;i++){var fn=observers[i];observers[i]=null;fn();}Event.domReady.callback=Event.domReady.observers=null;};var ie= ! !(window.attachEvent&& !window.opera);var webkit=navigator.userAgent.indexOf('AppleWebKit/')> -1;if(document.readyState&&webkit){Event.domReady.timer=setInterval(function(){var state=document.readyState;if(state=='loaded'||state=='complete'){Event.domReady.callback();}},50);}else if(document.readyState&&ie){var src=(window.location.protocol=='https:')?'://0':'javascript:void(0)';document.write('<script type="text/javascript" defer="defer" src="'+src+'" '+'onreadystatechange="if (this.readyState == \'complete\') Event.domReady.callback();"'+'><\/script>');}else{if(window.addEventListener){document.addEventListener("DOMContentLoaded",Event.domReady.callback,false);window.addEventListener("load",Event.domReady.callback,false);}else if(window.attachEvent){window.attachEvent('onload',Event.domReady.callback);}else{var fn=window.onload;window.onload=function(){Event.domReady.callback();if(fn)fn();}}}}}})(); 
