/* Copyright (c) 2004-2010, 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 _3(h){ if(!h){ h=""; } window.location.hash=encodeURIComponent(h); _4=history.length; }; if(dojo.exists("tests.back-hash")){ _1.getHash=_2; _1.setHash=_3; } var _5=(typeof (window)!=="undefined")?window.location.href:""; var _6=(typeof (window)!=="undefined")?_2():""; var _7=null; var _8=null; var _9=null; var _a=null; var _b=[]; var _c=[]; var _d=false; var _e=false; var _4; function _f(){ var _10=_c.pop(); if(!_10){ return; } var _11=_c[_c.length-1]; if(!_11&&_c.length==0){ _11=_7; } if(_11){ if(_11.kwArgs["back"]){ _11.kwArgs["back"](); }else{ if(_11.kwArgs["backButton"]){ _11.kwArgs["backButton"](); }else{ if(_11.kwArgs["handle"]){ _11.kwArgs.handle("back"); } } } } _b.push(_10); }; _1.goBack=_f; function _12(){ var _13=_b.pop(); if(!_13){ return; } if(_13.kwArgs["forward"]){ _13.kwArgs.forward(); }else{ if(_13.kwArgs["forwardButton"]){ _13.kwArgs.forwardButton(); }else{ if(_13.kwArgs["handle"]){ _13.kwArgs.handle("forward"); } } } _c.push(_13); }; _1.goForward=_12; function _14(url,_15,_16){ return {"url":url,"kwArgs":_15,"urlHash":_16}; }; function _17(url){ var _18=url.split("?"); if(_18.length<2){ return null; }else{ return _18[1]; } }; function _19(){ var url=(dojo.config["dojoIframeHistoryUrl"]||dojo.moduleUrl("dojo","resources/iframe_history.html"))+"?"+(new Date()).getTime(); _d=true; if(_a){ dojo.isWebKit?_a.location=url:window.frames[_a.name].location=url; }else{ } return url; }; function _1a(){ if(!_e){ var hsl=_c.length; var _1b=_2(); if((_1b===_6||window.location.href==_5)&&(hsl==1)){ _f(); return; } if(_b.length>0){ if(_b[_b.length-1].urlHash===_1b){ _12(); return; } } if((hsl>=2)&&(_c[hsl-2])){ if(_c[hsl-2].urlHash===_1b){ _f(); return; } } if(dojo.isSafari&&dojo.isSafari<3){ var _1c=history.length; if(_1c>_4){ _12(); }else{ if(_1c<_4){ _f(); } } _4=_1c; } } }; _1.init=function(){ if(dojo.byId("dj_history")){ return; } var src=dojo.config["dojoIframeHistoryUrl"]||dojo.moduleUrl("dojo","resources/iframe_history.html"); if(dojo._postLoad){ console.error("dojo.back.init() must be called before the DOM has loaded. "+"If using xdomain loading or djConfig.debugAtAllCosts, include dojo.back "+"in a build layer."); }else{ document.write(""); } }; _1.setInitialState=function(_1d){ _7=_14(_5,_1d,_6); }; _1.addToHistory=function(_1e){ _b=[]; var _1f=null; var url=null; if(!_a){ 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"); } _a=window.frames["dj_history"]; } if(!_9){ _9=dojo.create("a",{style:{display:"none"}},dojo.body()); } if(_1e["changeUrl"]){ _1f=""+((_1e["changeUrl"]!==true)?_1e["changeUrl"]:(new Date()).getTime()); if(_c.length==0&&_7.urlHash==_1f){ _7=_14(url,_1e,_1f); return; }else{ if(_c.length>0&&_c[_c.length-1].urlHash==_1f){ _c[_c.length-1]=_14(url,_1e,_1f); return; } } _e=true; setTimeout(function(){ _3(_1f); _e=false; },1); _9.href=_1f; if(dojo.isIE){ url=_19(); var _20=_1e["back"]||_1e["backButton"]||_1e["handle"]; var tcb=function(_21){ if(_2()!=""){ setTimeout(function(){ _3(_1f); },1); } _20.apply(this,[_21]); }; if(_1e["back"]){ _1e.back=tcb; }else{ if(_1e["backButton"]){ _1e.backButton=tcb; }else{ if(_1e["handle"]){ _1e.handle=tcb; } } } var _22=_1e["forward"]||_1e["forwardButton"]||_1e["handle"]; var tfw=function(_23){ if(_2()!=""){ _3(_1f); } if(_22){ _22.apply(this,[_23]); } }; if(_1e["forward"]){ _1e.forward=tfw; }else{ if(_1e["forwardButton"]){ _1e.forwardButton=tfw; }else{ if(_1e["handle"]){ _1e.handle=tfw; } } } }else{ if(!dojo.isIE){ if(!_8){ _8=setInterval(_1a,200); } } } }else{ url=_19(); } _c.push(_14(url,_1e,_1f)); }; _1._iframeLoaded=function(evt,_24){ var _25=_17(_24.href); if(_25==null){ if(_c.length==1){ _f(); } return; } if(_d){ _d=false; return; } if(_c.length>=2&&_25==_17(_c[_c.length-2].url)){ _f(); }else{ if(_b.length>0&&_25==_17(_b[_b.length-1].url)){ _12(); } } }; })(); }