/* Copyright (c) 2004-2011, 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 */ //>>built define("dojo/back",["./_base/kernel","./_base/lang","./_base/sniff","./dom","./dom-construct","./_base/window","require"],function(_1,_2,_3,_4,_5,_6,_7){ _2.getObject("back",true,_1); var _8=_1.back,_9=_8.getHash=function(){ var h=window.location.hash; if(h.charAt(0)=="#"){ h=h.substring(1); } return _3("mozilla")?h:decodeURIComponent(h); },_a=_8.setHash=function(h){ if(!h){ h=""; } window.location.hash=encodeURIComponent(h); _b=history.length; }; var _c=(typeof (window)!=="undefined")?window.location.href:""; var _d=(typeof (window)!=="undefined")?_9():""; var _e=null; var _f=null; var _10=null; var _11=null; var _12=[]; var _13=[]; var _14=false; var _15=false; var _b; function _16(){ var _17=_13.pop(); if(!_17){ return; } var _18=_13[_13.length-1]; if(!_18&&_13.length==0){ _18=_e; } if(_18){ if(_18.kwArgs["back"]){ _18.kwArgs["back"](); }else{ if(_18.kwArgs["backButton"]){ _18.kwArgs["backButton"](); }else{ if(_18.kwArgs["handle"]){ _18.kwArgs.handle("back"); } } } } _12.push(_17); }; _8.goBack=_16; function _19(){ var _1a=_12.pop(); if(!_1a){ return; } if(_1a.kwArgs["forward"]){ _1a.kwArgs.forward(); }else{ if(_1a.kwArgs["forwardButton"]){ _1a.kwArgs.forwardButton(); }else{ if(_1a.kwArgs["handle"]){ _1a.kwArgs.handle("forward"); } } } _13.push(_1a); }; _8.goForward=_19; function _1b(url,_1c,_1d){ return {"url":url,"kwArgs":_1c,"urlHash":_1d}; }; function _1e(url){ var _1f=url.split("?"); if(_1f.length<2){ return null; }else{ return _1f[1]; } }; function _20(){ var url=(_1.config["dojoIframeHistoryUrl"]||_7.toUrl("./resources/iframe_history.html"))+"?"+(new Date()).getTime(); _14=true; if(_11){ _3("webkit")?_11.location=url:window.frames[_11.name].location=url; }else{ } return url; }; function _21(){ if(!_15){ var hsl=_13.length; var _22=_9(); if((_22===_d||window.location.href==_c)&&(hsl==1)){ _16(); return; } if(_12.length>0){ if(_12[_12.length-1].urlHash===_22){ _19(); return; } } if((hsl>=2)&&(_13[hsl-2])){ if(_13[hsl-2].urlHash===_22){ _16(); } } } }; _8.init=function(){ if(_4.byId("dj_history")){ return; } var src=_1.config["dojoIframeHistoryUrl"]||_7.toUrl("./resources/iframe_history.html"); if(_1._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(""); } }; _8.setInitialState=function(_23){ _e=_1b(_c,_23,_d); }; _8.addToHistory=function(_24){ _12=[]; var _25=null; var url=null; if(!_11){ if(_1.config["useXDomain"]&&!_1.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"); } _11=window.frames["dj_history"]; } if(!_10){ _10=_5.create("a",{style:{display:"none"}},_6.body()); } if(_24["changeUrl"]){ _25=""+((_24["changeUrl"]!==true)?_24["changeUrl"]:(new Date()).getTime()); if(_13.length==0&&_e.urlHash==_25){ _e=_1b(url,_24,_25); return; }else{ if(_13.length>0&&_13[_13.length-1].urlHash==_25){ _13[_13.length-1]=_1b(url,_24,_25); return; } } _15=true; setTimeout(function(){ _a(_25); _15=false; },1); _10.href=_25; if(_3("ie")){ url=_20(); var _26=_24["back"]||_24["backButton"]||_24["handle"]; var tcb=function(_27){ if(_9()!=""){ setTimeout(function(){ _a(_25); },1); } _26.apply(this,[_27]); }; if(_24["back"]){ _24.back=tcb; }else{ if(_24["backButton"]){ _24.backButton=tcb; }else{ if(_24["handle"]){ _24.handle=tcb; } } } var _28=_24["forward"]||_24["forwardButton"]||_24["handle"]; var tfw=function(_29){ if(_9()!=""){ _a(_25); } if(_28){ _28.apply(this,[_29]); } }; if(_24["forward"]){ _24.forward=tfw; }else{ if(_24["forwardButton"]){ _24.forwardButton=tfw; }else{ if(_24["handle"]){ _24.handle=tfw; } } } }else{ if(!_3("ie")){ if(!_f){ _f=setInterval(_21,200); } } } }else{ url=_20(); } _13.push(_1b(url,_24,_25)); }; _8._iframeLoaded=function(evt,_2a){ var _2b=_1e(_2a.href); if(_2b==null){ if(_13.length==1){ _16(); } return; } if(_14){ _14=false; return; } if(_13.length>=2&&_2b==_1e(_13[_13.length-2].url)){ _16(); }else{ if(_12.length>0&&_2b==_1e(_12[_12.length-1].url)){ _19(); } } }; return _1.back; });