
var HistoryManager=(function(){var HistoryManagerSingleton=new Class({initialize:function(){this._currentLocation=this._getHash();var historyManager=this;if(window.ie){this.addState=this._addStateIE;this._iframe=new Element('iframe',{src:"javascript:'<html></html>'",styles:{'position':'absolute','top':'-1000px'}}).inject(document.body).contentWindow;$justForIE=function(hash){historyManager._getHash=function(){return hash;}
historyManager._monitorDefault.call(historyManager);location.hash=hash;}
function waitForIframeLoad(){if(historyManager._iframe&&historyManager._iframe.document&&historyManager._iframe.document.body){if(!historyManager._iframe.document.body.innerHTML)
historyManager.addState(historyManager._currentLocation,true);}
else setTimeout(waitForIframeLoad,50);}
waitForIframeLoad();}
else if(window.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(250,this);}
else if(window.opera){this.addState=this._addStateDefault;$justForOpera=function(){historyManager._monitorDefault.call(historyManager);}
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(250,this);}},getCurrentLocation:function(){return this._currentLocation;},_getHash:function(){return location.href.split('#')[1]||'';},_addStateIE:function(hash,override){if(this._currentLocation==hash&&!override)return;this._currentLocation=hash;this._iframe.document.write('<html><body onload="top.$justForIE(\'',hash,'\');">Loaded</body></html>');this._iframe.document.close();},_addStateSafari:function(hash){if(this._currentLocation==hash)return;this._form.setProperty('action','#'+hash).submit()
this._currentLocation=hash;this._stateHistory[history.length]=this._getHash();this._historyCounter=history.length;},_monitorSafari:function(){if(history.length!=this._historyCounter){this._historyCounter=history.length;this._currentLocation=this._stateHistory[history.length];this.fireEvent('onHistoryChange',[this._stateHistory[history.length]]);}},_addStateDefault:function(hash){if(this._currentLocation==hash)return;location.hash='#'+hash;this._currentLocation=hash;},_monitorDefault:function(){var hash=this._getHash();if(hash!=this._currentLocation){this._currentLocation=hash;this.fireEvent('onHistoryChange',[hash]);}}});HistoryManagerSingleton.implement(new Events);var singleton;return function(){return singleton?singleton:singleton=new HistoryManagerSingleton();}})();