Function.prototype.bind=function(context){var closure=this;var tmp_fnc=function(){return closure.apply(context,arguments);}
return tmp_fnc;}
Object.prototype.merge=function(object){for(attr in object){this[attr]=object[attr];}}
document.navigators={settings:{interval:100,helper:true,iframe_src:"javascript/ajax/control.htm"},initialize:function(){this.is_ie=(navigator.userAgent.toLowerCase().indexOf("msie")>-1)?true:false;if(this.is_ie){this.settings.iframe_src=this.settings.iframe_src.replace(/(\?|#).*$/,"");window.attachEvent("onload",(function(){this.iframe=document.createElement("iframe");this.iframe.setAttribute("src",this.settings.iframe_src);this.iframe.style.display="none";document.getElementsByTagName("body")[0].appendChild(this.iframe);}).bind(this));}else{this.running=true;}},helper:function(data,force){var navs=document.navigators;var data="["+this.id+"]"+data;if(force){navs.data_buffer="";}
if(navs.is_ie){navs.iframe.src=navs.settings.iframe_src+"?id="+data;}
else{window.location.hash="#"+data;}},called:false,history:[],data_buffer:""};function onnavigate(id,callback){var navs=document.navigators;navs[id]={};if(!navs.running){navs.initialize();}
setInterval(function(){if(navs.running){var url=window.location.href;var hash=window.location.hash.replace(/#/,"");var theid="#["+id+"]";if(url.indexOf(theid)>-1){var data=url.split(theid)[1]||"";var new_data=theid+data;if(navs.data_buffer!=new_data){callback(data);navs.called=true;navs.history.push(new_data);navs.data_buffer=new_data;}}else if(!hash&&navs.called){navs.running=false;window.location=((url.indexOf("#")>-1)?url.split("#")[0]:url)+"#";window.location.reload();}}},navs.settings.interval);navs[id].merge({callback:callback});if(navs.settings.helper){navs[id].helper=navs.helper.bind({id:id});return navs[id].helper;}}