dojo.provide("anwb.bookmark");dojo.require("dojo.undo.browser");dojo.debug("loading bookmark.js");anwb.bookmark.updatePolicy={Direct:0,FirstUpdate:1,Never:2};anwb.bookmark.init=function(g,f,b){dojo.debug("anwb.bookmark.init(...)");anwb.bookmark.updateView=g;if(b){anwb.bookmark.currentState=b}else{anwb.bookmark.currentState={}}if(window.location.search.length>0){if(f==anwb.bookmark.updatePolicy.Direct){window.location.replace(window.location.href.replace("?","#"));return}else{if(f==anwb.bookmark.updatePolicy.FirstUpdate){anwb.bookmark.reloadOnUpdate=true}else{if(f==anwb.bookmark.updatePolicy.Never){}}}var e=anwb.bookmark.parseState(window.location.search.substring(1,window.location.search.length));anwb.bookmark.currentState=anwb.bookmark.merge(anwb.bookmark.currentState,e)}var d=anwb.bookmark.currentState;if(window.location.hash.length>0){var c=anwb.bookmark.parseState(window.location.hash.substring(1,window.location.hash.length));d=anwb.bookmark.merge(d,c)}var a=new anwb.bookmark.State(d);dojo.undo.browser.setInitialState(a);a.handle("init")};anwb.bookmark.update=function(a,b){anwb.bookmark.replace(anwb.bookmark.updateState(a,b))};anwb.bookmark.updateState=function(c,b){var a=anwb.bookmark.merge(anwb.bookmark.currentState,c);if(b!=null){a=anwb.bookmark.deleteArray(a,b)}return a};anwb.bookmark.replace=function(b){if(anwb.bookmark.reloadOnUpdate){window.location.href=window.location.href.split("?")[0]+"#"+anwb.bookmark.createChangeUrl(b);return}var a=new anwb.bookmark.State(b);dojo.undo.browser.addToHistory(a);a.handle("update")};anwb.bookmark.queryString=function(a){return"?"+anwb.bookmark.createChangeUrl(a)};anwb.bookmark.parseState=function(b){dojo.debug("anwb.bookmark.parseState("+b+")");var c={};var d=b.split("&");for(i=0;i<d.length;i+=1){var a=d[i].split("=");c[a[0]]=a[1]}return c};anwb.bookmark.reloadOnUpdate=false;dojo.declare("anwb.bookmark.State",null,{initializer:function(a){dojo.debug("anwb.bookmark.State.initializer(...)");this.state=a;this.changeUrl=anwb.bookmark.createChangeUrl(this.state);dojo.debug("Initialized changeUrl: "+this.changeUrl)},handle:function(b){dojo.debug("anwb.bookmark.State.handle("+b+")");var a=anwb.bookmark.currentState;anwb.bookmark.currentState=this.state;anwb.bookmark.updateView(a,this.state)}});anwb.bookmark.createChangeUrl=function(a){var b=new Array();for(key in a){if(a.hasOwnProperty(key)){b.push(key+"="+a[key])}}return b.join("&")};anwb.bookmark.copyObject=function(b,a){for(key in b){if(b.hasOwnProperty(key)){a[key]=b[key]}}};anwb.bookmark.merge=function(a,c){dojo.debug("anwb.bookmark.merge(...)");var b={};anwb.bookmark.copyObject(a,b);anwb.bookmark.copyObject(c,b);return b};anwb.bookmark.deleteArray=function(a,c){dojo.debug("anwb.bookmark.merge(...)");var b={};for(key in a){if(a.hasOwnProperty(key)&&(!dojo.lang.inArray(c,key))){b[key]=a[key]}}return b};
