| /* |
| Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved. |
| Available via Academic Free License >= 2.1 OR the modified BSD license. |
| see: http://dojotoolkit.org/license for details |
| */ |
| |
| |
| if(!dojo._hasResource["dojo.back"]){ |
| dojo._hasResource["dojo.back"]=true; |
| dojo.provide("dojo.back"); |
| (function(){ |
| var _1=dojo.back; |
| function _2(){ |
| var h=window.location.hash; |
| if(h.charAt(0)=="#"){ |
| h=h.substring(1); |
| } |
| return dojo.isMozilla?h:decodeURIComponent(h); |
| }; |
| function _4(h){ |
| if(!h){ |
| h=""; |
| } |
| window.location.hash=encodeURIComponent(h); |
| _6=history.length; |
| }; |
| if(dojo.exists("tests.back-hash")){ |
| _1.getHash=_2; |
| _1.setHash=_4; |
| } |
| var _7=(typeof (window)!=="undefined")?window.location.href:""; |
| var _8=(typeof (window)!=="undefined")?_2():""; |
| var _9=null; |
| var _a=null; |
| var _b=null; |
| var _c=null; |
| var _d=[]; |
| var _e=[]; |
| var _f=false; |
| var _10=false; |
| var _6; |
| function _11(){ |
| var _12=_e.pop(); |
| if(!_12){ |
| return; |
| } |
| var _13=_e[_e.length-1]; |
| if(!_13&&_e.length==0){ |
| _13=_9; |
| } |
| if(_13){ |
| if(_13.kwArgs["back"]){ |
| _13.kwArgs["back"](); |
| }else{ |
| if(_13.kwArgs["backButton"]){ |
| _13.kwArgs["backButton"](); |
| }else{ |
| if(_13.kwArgs["handle"]){ |
| _13.kwArgs.handle("back"); |
| } |
| } |
| } |
| } |
| _d.push(_12); |
| }; |
| _1.goBack=_11; |
| function _14(){ |
| var _15=_d.pop(); |
| if(!_15){ |
| return; |
| } |
| if(_15.kwArgs["forward"]){ |
| _15.kwArgs.forward(); |
| }else{ |
| if(_15.kwArgs["forwardButton"]){ |
| _15.kwArgs.forwardButton(); |
| }else{ |
| if(_15.kwArgs["handle"]){ |
| _15.kwArgs.handle("forward"); |
| } |
| } |
| } |
| _e.push(_15); |
| }; |
| _1.goForward=_14; |
| function _16(url,_18,_19){ |
| return {"url":url,"kwArgs":_18,"urlHash":_19}; |
| }; |
| function _1a(url){ |
| var _1c=url.split("?"); |
| if(_1c.length<2){ |
| return null; |
| }else{ |
| return _1c[1]; |
| } |
| }; |
| function _1d(){ |
| var url=(dojo.config["dojoIframeHistoryUrl"]||dojo.moduleUrl("dojo","resources/iframe_history.html"))+"?"+(new Date()).getTime(); |
| _f=true; |
| if(_c){ |
| dojo.isWebKit?_c.location=url:window.frames[_c.name].location=url; |
| }else{ |
| } |
| return url; |
| }; |
| function _1f(){ |
| if(!_10){ |
| var hsl=_e.length; |
| var _21=_2(); |
| if((_21===_8||window.location.href==_7)&&(hsl==1)){ |
| _11(); |
| return; |
| } |
| if(_d.length>0){ |
| if(_d[_d.length-1].urlHash===_21){ |
| _14(); |
| return; |
| } |
| } |
| if((hsl>=2)&&(_e[hsl-2])){ |
| if(_e[hsl-2].urlHash===_21){ |
| _11(); |
| return; |
| } |
| } |
| if(dojo.isSafari&&dojo.isSafari<3){ |
| var _22=history.length; |
| if(_22>_6){ |
| _14(); |
| }else{ |
| if(_22<_6){ |
| _11(); |
| } |
| } |
| _6=_22; |
| } |
| } |
| }; |
| _1.init=function(){ |
| if(dojo.byId("dj_history")){ |
| return; |
| } |
| var src=dojo.config["dojoIframeHistoryUrl"]||dojo.moduleUrl("dojo","resources/iframe_history.html"); |
| document.write("<iframe style=\"border:0;width:1px;height:1px;position:absolute;visibility:hidden;bottom:0;right:0;\" name=\"dj_history\" id=\"dj_history\" src=\""+src+"\"></iframe>"); |
| }; |
| _1.setInitialState=function(_24){ |
| _9=_16(_7,_24,_8); |
| }; |
| _1.addToHistory=function(_25){ |
| _d=[]; |
| var _26=null; |
| var url=null; |
| if(!_c){ |
| if(dojo.config["useXDomain"]&&!dojo.config["dojoIframeHistoryUrl"]){ |
| console.warn("dojo.back: When using cross-domain Dojo builds,"+" please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl"+" to the path on your domain to iframe_history.html"); |
| } |
| _c=window.frames["dj_history"]; |
| } |
| if(!_b){ |
| _b=dojo.create("a",{style:{display:"none"}},dojo.body()); |
| } |
| if(_25["changeUrl"]){ |
| _26=""+((_25["changeUrl"]!==true)?_25["changeUrl"]:(new Date()).getTime()); |
| if(_e.length==0&&_9.urlHash==_26){ |
| _9=_16(url,_25,_26); |
| return; |
| }else{ |
| if(_e.length>0&&_e[_e.length-1].urlHash==_26){ |
| _e[_e.length-1]=_16(url,_25,_26); |
| return; |
| } |
| } |
| _10=true; |
| setTimeout(function(){ |
| _4(_26); |
| _10=false; |
| },1); |
| _b.href=_26; |
| if(dojo.isIE){ |
| url=_1d(); |
| var _28=_25["back"]||_25["backButton"]||_25["handle"]; |
| var tcb=function(_2a){ |
| if(_2()!=""){ |
| setTimeout(function(){ |
| _4(_26); |
| },1); |
| } |
| _28.apply(this,[_2a]); |
| }; |
| if(_25["back"]){ |
| _25.back=tcb; |
| }else{ |
| if(_25["backButton"]){ |
| _25.backButton=tcb; |
| }else{ |
| if(_25["handle"]){ |
| _25.handle=tcb; |
| } |
| } |
| } |
| var _2b=_25["forward"]||_25["forwardButton"]||_25["handle"]; |
| var tfw=function(_2d){ |
| if(_2()!=""){ |
| _4(_26); |
| } |
| if(_2b){ |
| _2b.apply(this,[_2d]); |
| } |
| }; |
| if(_25["forward"]){ |
| _25.forward=tfw; |
| }else{ |
| if(_25["forwardButton"]){ |
| _25.forwardButton=tfw; |
| }else{ |
| if(_25["handle"]){ |
| _25.handle=tfw; |
| } |
| } |
| } |
| }else{ |
| if(!dojo.isIE){ |
| if(!_a){ |
| _a=setInterval(_1f,200); |
| } |
| } |
| } |
| }else{ |
| url=_1d(); |
| } |
| _e.push(_16(url,_25,_26)); |
| }; |
| _1._iframeLoaded=function(evt,_2f){ |
| var _30=_1a(_2f.href); |
| if(_30==null){ |
| if(_e.length==1){ |
| _11(); |
| } |
| return; |
| } |
| if(_f){ |
| _f=false; |
| return; |
| } |
| if(_e.length>=2&&_30==_1a(_e[_e.length-2].url)){ |
| _11(); |
| }else{ |
| if(_d.length>0&&_30==_1a(_d[_d.length-1].url)){ |
| _14(); |
| } |
| } |
| }; |
| })(); |
| } |