a:15:{s:9:"#provides";s:9:"dojo.back";s:9:"#resource";s:7:"back.js";s:9:"dojo.back";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:36:"Browser history management resources";}s:20:"window.location.hash";a:1:{s:7:"summary";s:0:"";}s:17:"dojo.back.getHash";a:1:{s:7:"summary";s:0:"";}s:17:"dojo.back.setHash";a:1:{s:7:"summary";s:0:"";}s:16:"dojo.back.goBack";a:1:{s:7:"summary";s:0:"";}s:19:"dojo.back.goForward";a:1:{s:7:"summary";s:0:"";}s:22:"historyIframe.location";a:1:{s:7:"summary";s:0:"";}s:14:"dojo.back.init";a:4:{s:4:"type";s:8:"Function";s:6:"source";s:349:" if(dojo.byId("dj_history")){ return; } // prevent reinit
var src = dojo.config["dojoIframeHistoryUrl"] || dojo.moduleUrl("dojo", "resources/iframe_history.html");
document.write('');";s:7:"summary";s:137:"Initializes the undo stack. This must be called from a <script>
block that lives inside the <body> tag to prevent bugs on IE.";s:7:"returns";s:14:"prevent reinit";}s:25:"dojo.back.setInitialState";a:5:{s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"args";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:70:"See the addToHistory() function for the list of valid args properties.";}}s:6:"source";s:61:" initialState = createState(initialHref, args, initialHash);";s:7:"summary";s:79:"Sets the state object and back callback for the very first page
that is loaded.";s:11:"description";s:113:"It is recommended that you call this method as part of an event
listener that is registered via dojo.addOnLoad().";}s:15:"dojo.__backArgs";a:6:{s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:6:"kwArgs";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:6151:"dojo.provide("dojo.back");
dojo.back = {
// summary: Browser history management resources
}
(function(){
var back = dojo.back;
// everyone deals with encoding the hash slightly differently
function getHash(){
var h = window.location.hash;
if(h.charAt(0) == "#"){ h = h.substring(1); }
return dojo.isMozilla ? h : decodeURIComponent(h);
}
function setHash(h){
if(!h){ h = ""; }
window.location.hash = encodeURIComponent(h);
historyCounter = history.length;
}
// if we're in the test for these methods, expose them on dojo.back. ok'd with alex.
if(dojo.exists("tests.back-hash")){
back.getHash = getHash;
back.setHash = setHash;
}
var initialHref = (typeof(window) !== "undefined") ? window.location.href : "";
var initialHash = (typeof(window) !== "undefined") ? getHash() : "";
var initialState = null;
var locationTimer = null;
var bookmarkAnchor = null;
var historyIframe = null;
var forwardStack = [];
var historyStack = [];
var moveForward = false;
var changingUrl = false;
var historyCounter;
function handleBackButton(){
//summary: private method. Do not call this directly.
//The "current" page is always at the top of the history stack.
var current = historyStack.pop();
if(!current){ return; }
var last = historyStack[historyStack.length-1];
if(!last && historyStack.length == 0){
last = initialState;
}
if(last){
if(last.kwArgs["back"]){
last.kwArgs["back"]();
}else if(last.kwArgs["backButton"]){
last.kwArgs["backButton"]();
}else if(last.kwArgs["handle"]){
last.kwArgs.handle("back");
}
}
forwardStack.push(current);
}
back.goBack = handleBackButton;
function handleForwardButton(){
//summary: private method. Do not call this directly.
var last = forwardStack.pop();
if(!last){ return; }
if(last.kwArgs["forward"]){
last.kwArgs.forward();
}else if(last.kwArgs["forwardButton"]){
last.kwArgs.forwardButton();
}else if(last.kwArgs["handle"]){
last.kwArgs.handle("forward");
}
historyStack.push(last);
}
back.goForward = handleForwardButton;
function createState(url, args, hash){
//summary: private method. Do not call this directly.
return {"url": url, "kwArgs": args, "urlHash": hash}; //Object
}
function getUrlQuery(url){
//summary: private method. Do not call this directly.
var segments = url.split("?");
if(segments.length < 2){
return null; //null
}
else{
return segments[1]; //String
}
}
function loadIframeHistory(){
//summary: private method. Do not call this directly.
var url = (dojo.config["dojoIframeHistoryUrl"] || dojo.moduleUrl("dojo", "resources/iframe_history.html")) + "?" + (new Date()).getTime();
moveForward = true;
if(historyIframe){
dojo.isWebKit ? historyIframe.location = url : window.frames[historyIframe.name].location = url;
}else{
//console.warn("dojo.back: Not initialised. You need to call dojo.back.init() from a