/* HistoryManager 2.0 by Neil Jenkins */
var HistoryManager=(function(){var HistoryManagerSingleton=new Class({Implements:Events,initialize:function(){this._currentLocation=this._getHash();if(Browser.Engine.trident&&Browser.Engine.version<=5){this._iframe=new IFrame({src:"javascript:'<html><body>"+this._currentLocation.replace(/(['"])/g,'\\$1')+"</body></html>'",styles:{display:'none'}}).inject(document.body).contentWindow;this.addState=this._addStateIE;this._monitorIE.periodical(200,this);}
else if(Browser.Engine.webkit419){this._form=new Element("form",{method:'get'}).inject(document.body);this._historyCounter=history.length;this._stateHistory=[];this._stateHistory[history.length]=this._getHash();this.addState=this._addStateSafari;this._monitorSafari.periodical(200,this);}
else if(Browser.Engine.presto925){this.addState=this._addStateDefault;window.$justForOpera=this._monitorDefault.bind(this);new Element('img',{src:"javascript:location.href='javascript:$justForOpera();';",style:"position: absolute; top: -1000px;"}).inject(document.body);}
else{this.addState=this._addStateDefault;this._monitorDefault.periodical(200,this);}},getCurrentHash:function(){return this._currentLocation;},_getHash:function(){return top.location.href.indexOf("#")>-1?top.location.href.split('#')[1].slice(1):'';},_addStateIE:function(hash){if(this._currentLocation!=hash){this._currentLocation=hash;top.location.hash="#/"+hash;this._iframe.document.open('text/html');this._iframe.document.write('<html><body>',hash,'</body></html>');this._iframe.document.close();}
return this;},_monitorIE:function(){var hash=this._iframe.document.body.innerText;if(hash!=this._currentLocation){top.location.hash="#/"+hash;this._currentLocation=hash;this.fireEvent('onHistoryChange',[hash]);}},_addStateSafari:function(hash){if(this._currentLocation!=hash){this._form.set('action','#/'+hash).submit()
this._currentLocation=hash;this._stateHistory[history.length]=this._getHash();this._historyCounter=history.length;}
return this;},_monitorSafari:function(){if(history.length!=this._historyCounter){this._historyCounter=history.length;this._currentLocation=this._stateHistory[history.length];this.fireEvent('onHistoryChange',[this._currentLocation]);}},_addStateDefault:function(hash){if(this._currentLocation!=hash){top.location.hash='#/'+hash;this._currentLocation=hash;}
return this;},_monitorDefault:function(){var hash=this._getHash();if(hash!=this._currentLocation){this._currentLocation=hash;this.fireEvent('onHistoryChange',[hash]);}}});var singleton;return function(){return singleton||(singleton=new HistoryManagerSingleton());}})();