var ajaxEngine=new Class({Implements:[Events,Options],options:{linksrc:false,loadFrom:false,loadingImg:false,defaultIndex:0,evalScripts:false,customEvents:false},running:false,orginalState:true,initialize:function(b,a){var d=this;this.setOptions(a);this.targetElement=$(b);if(!this.options.loadFrom){this.options.loadFrom=b}this.initLinks();if(Browser.Engine.trident){if(!$defined($("aeHistory"))){this.iHistory=new IFrame({id:"aeHistory",src:window.location,styles:{display:"none"}});this.iHistory.inject($(document.body),"bottom")}else{this.iHistory=$("aeHistory")}var c=this.iHistory.contentWindow.document;c.open();c.close();c.location.hash=window.location.hash}if(!this.options.loadingImg){this.loadingHTML="<h2>Loading...</h2>"}else{this.loadingHTML="<img src='"+this.options.loadingImg+"' />"}this.contentReq=new Request.HTML({evalScripts:this.options.evalScripts,method:"get",onRequest:function(){d.running=true;d.fireEvent("start")},onSuccess:function(f,e){e.each(function(h){try{if(h.id==d.options.loadFrom){d.fireEvent("complete",h)}}catch(g){}});d.running=false},onFailure:function(e){d.running=false;d.fireEvent("failure",e)}});if(!this.options.customEvents){this.addEvents({start:function(){this.targetElement.set("html",this.loadingHTML)},complete:function(e){this.targetElement.set("html",e.get("html"))}});this.initHash()}else{this.addEvent("initialize",function(){this.initHash()})}},initLinks:function(){var a=this;if(!this.options.linksrc){this.linksrc=$$("a")}else{if($type(this.options.linksrc)=="array"){this.linksrc=$(this.options.linksrc[0]).getElements("a");this.options.linksrc.erase(this.options.linksrc[0]);this.options.linksrc.each(function(b){this.linksrc.extend($(b).getElements("a"))}.bind(this))}else{this.linksrc=$(this.options.linksrc).getElements("a")}}this.linksrc.each(function(c,b){c.href=c.href;c.store("linkID",b)});this.linksrc.addEvent("click",function(b){b.preventDefault();b.stopPropagation();a.updateLocHash(this.retrieve("linkID"));a.accessRequest(this.get("href"))})},initHash:function(){this.pageHash=window.location.hash;if(this.pageHash!=""){this.orginalState=false;var a=this.getHashCode(this.pageHash);if($chk(a)){this.updateLocHash(a.toInt());this.accessRequest(this.linksrc[a.toInt()].get("href"))}}this.hashHandler=this.hasher.periodical(300,this)},hasher:function(){var b=window.location.hash;if(Browser.Engine.trident){b=this.iHistory.contentWindow.document.location.hash}if(b=="#"){b=""}if(this.pageHash!=b){if(this.getHashCode(this.pageHash)!=this.getHashCode(b)){this.pageHash=b;var a=this.getHashCode(this.pageHash);if($chk(a)){this.accessRequest(this.linksrc[a.toInt()].get("href"))}else{if(this.orginalState==false){this.orginalState=true;this.accessRequest(window.location.toString())}}}if(Browser.Engine.trident){window.location.hash=b}this.pageHash=b}},getHashCode:function(c){c=c.replace(/\x23/,"");if(c.contains(this.targetElement.id)){var b=c.split("/");var a="";b.each(function(d){if(d.contains(this.targetElement.id)){a=d.toString()}}.bind(this));return a.replace(this.targetElement.id,"")}else{return false}},updateLocHash:function(d){var c=window.location.hash;if(c=="#"){c=""}if(c.contains(this.targetElement.id)){while(c.search(/\x23/,"")>-1){c=c.replace(/\x23/,"")}var b=c.split("/");b.each(function(e){if(e.contains(this.targetElement.id)){c=c.replace(e,this.targetElement.id+d)}}.bind(this))}else{if(!$chk(c)){c=this.targetElement.id+d}else{c+="/"+this.targetElement.id+d}}while(c.search(/\x23/,"")>-1){c=c.replace(/\x23/,"")}window.location.hash=this.pageHash=c;if(Browser.Engine.trident){var a=this.iHistory.contentWindow.document;a.open();a.close();a.location.hash=window.location.hash}this.orginalState=false},accessRequest:function(a){this.contentReq.cancel();this.contentReq.options.url=a;this.contentReq.get()}});
