Request.PartialPageLoad=new Class({Extends:Request.HTML,options:{timeout:5000,noSpinner:false},send:function(a){this.sendOptions=new Hash(a);var c=a.data;switch($type(c)){case"element":a.method=c.get("method")||"get";a.url=c.get("action");if(!a.url&&c.getAttributeNode&&c.getAttributeNode("action")){a.url=c.getAttributeNode("action").nodeValue}a.data=document.id(c).toQueryString();break;case"object":case"hash":a.data=Hash.toQueryString(c);break;default:break}a.data=(a.data?a.data+"&":"")+"doPartialPageLoad=1&checkTemplate="+mainTemplate;if(!this.options.noSpinner){this.showProgressCursor()}window.fireEvent("beforePartialPageLoad");this.timeoutID=null;var b=(a.timeout||this.options.timeout);if(b){this.timeoutID=this.onTimeout.delay(b,this)}return this.parent(a)},onStateChange:function(){if(this.xhr.readyState!=4||!this.running){return}this.running=false;this.status=0;$try(function(){this.status=this.xhr.status}.bind(this));if(!this.options.noSpinner){this.hideProgressCursor()}if(this.timeoutID){$clear(this.timeoutID)}this.timeoutID=null;this.xhr.onreadystatechange=$empty;if(this.options.isSuccess.call(this,this.status)){this.response={text:this.xhr.responseText,xml:null};this.success(this.response.text)}else{this.response={text:null,xml:null};this.failure()}},onTimeout:function(){if(!this.running){return}this.running=false;this.status=0;if(!this.options.noSpinner){this.hideProgressCursor()}this.timeoutID=null;this.xhr.abort();this.xhr.onreadystatechange=$empty;this.response={text:null,xml:null};this.failure()},isSuccess:function(a){if(a<200){return false}if(a>=300){return false}if(this.getHeader("X-Avenue-Reload")){return false}if(!this.getHeader("Content-Type").match(/text\/html/)){return false}if(this.getHeader("X-Avenue-Partial")!="1"){return false}if(!this.xhr.responseText){return false}return true},success:function(j){var k=this.options,d=this.response;if(!this.sendOptions.noHistoryUpdate){window.historyManager.resetState()}var l=new Element("div");var f=j.match(/<body[^>]*>([\s\S]*?)<\/body>/i);var c=(f)?f[1]:j;if(Browser.Engine.trident){c=c.replace(/< *(param.*?)>/ig,"<!-- wrap $1 -->")}l.set("html",c);if(k.update){window.fireEvent("partialPageLoad");var h=new Hash();var e=new Array();switch($type(k.update)){case"element":case"function":h[k.update.id]=k.update;break;case"object":case"hash":h=new Hash(k.update);break;default:break}var i=true;var g=false;var b=[];h.each(function(o,n){var m=(n=="pagecontents"?l:l.getElement("[id="+n+"]"));if(!m){i=false;return}if(m.tagName.match(/script/i)){e.push(m);return}m.getElements("script").each(function(q){if(!q.src&&(Browser.Engine.webkit&&Browser.Engine.version<420?q.innerText:q.text).match(/register(DHTMLSelectable|MouseoverAttributes)/)){g=true}e.push(q.dispose())});switch($type(o)){case"element":var p=m.get("html");if(Browser.Engine.trident){p=p.replace(/< *(param.*?)>/ig,"").replace(/<!-- wrap (param.*?) -->/ig,"<$1>")}$(o).set("html",p);b.push($(o));break;case"function":o.attempt(m);break;default:break}});if(!i){d={text:null,xml:null};this.failure();return}if(k.evalScripts){if(!g&&b){restrictRegistrationContainers=b;l.getElements("script").each(function(m){if(!m.src&&(Browser.Engine.webkit&&Browser.Engine.version<420?m.innerText:m.text).match(/register(DHTMLSelectable|MouseoverAttributes)/)){e.unshift(m.dispose())}})}else{restrictRegistrationContainers=null}e.each(function(m){var n=document.createElement("script");n.setAttribute("type","text/javascript");if(m.src){n.src=m.src}else{if(Browser.Engine.webkit&&Browser.Engine.version<420){n.innerText=m.innerText}else{n.text=m.text}}n.onload=function(){n.onload=null;document.head.removeChild(n)};document.head.appendChild(n)})}window.fireEvent("afterPartialPageLoad")}d.html=j;this.onSuccess(d.html);if(!k.noScroll){if(this.options.url.match(/#(.*)/)){window.location.hash=RegExp.$1}else{window.scrollTo(0,0)}}var a=this.getHeader("X-Avenue-Location");if(!a){a=this.sendOptions.url}if(!a){a=fullPageRelUrl}if(!this.sendOptions.noHistoryUpdate){window.historyManager.update(a)}},failure:function(){this.onFailure();this.retryPartialAsFullPageLoad()},retryPartialAsFullPageLoad:function(){if(this.getHeader("X-Avenue-Reload")){window.location=this.getHeader("X-Avenue-Reload")}else{if(this.sendOptions.url){window.location=this.sendOptions.url}else{if(this.sendOptions.data){this.sendOptions.data.submit()}}}},handleHistoryChange:function(a){$("pagecontents").partialPageLoad(a,true)},showProgressCursor:function(){if(this.options.noSpinner){return}var a=$(document.body);a.setStyle("cursor","progress");if(Request.PartialPageLoad.spinOpacity>0){a.spin({style:{opacity:Request.PartialPageLoad.spinOpacity}});a.get("spinner").element.setStyle("position","fixed")}},hideProgressCursor:function(){if(this.options.noSpinner){return}var a=$(document.body);a.setStyle("cursor","auto");if(Request.PartialPageLoad.spinOpacity>0){a.get("spinner").hide(true)}}});Request.PartialPageLoad.spinOpacity=0.5;Element.Properties.partialPageLoad={set:function(b){var a=this.retrieve("partialPageLoad");if(a){a.cancel()}return this.eliminate("partialPageLoad").store("partialPageLoad:options",$extend({link:"cancel",update:this,method:"get",noScroll:(this.id!="pagecontents")},b))},get:function(a){if(a||!this.retrieve("partialPageLoad")){if(a||!this.retrieve("partialPageLoad:options")){this.set("partialPageLoad",a)}this.store("partialPageLoad",new Request.PartialPageLoad(this.retrieve("partialPageLoad:options")))}return this.retrieve("partialPageLoad")}};Element.implement({partialPageLoad:function(){this.get("partialPageLoad").send(Array.link(arguments,{url:String.type,noHistoryUpdate:Boolean.type,data:$defined}));return this}});var HistoryManager=new Class({Implements:[Events],initialize:function(){this.hashTrackedInHistory=!Browser.Engine.trident||(document.documentMode&&document.documentMode>=8);this.initialState=this.getURIRelativeToRoot(window.location.href);this.state=this.initialState;if(this.getHash().match(/\/(.*)/)&&RegExp.$1!=this.initialState){this.state=null}this.observationPaused=false;this.observe.periodical(400,this)},getHash:function(){return window.location.href.match(/#(.*)/)?RegExp.$1:""},setHash:function(b,a){if(a&&!Browser.Engine.presto){window.location.replace(window.location.href.replace(/#.*/,"")+"#"+b)}else{window.location.hash=b}},assertIFrame:function(){if(!this.iframe){this.iframe=$("historyIframe")}if(!this.iframe){this.iframe=new Element("iframe",{id:"historyIframe",src:wwwroot+"/blank.html",styles:{display:"none"}}).injectInside($(document.body))}},getIFrameContents:function(){var a=this.initialState;if(this.iframe){var b=this.iframe.contentWindow.document;if(b&&b.body.id=="state"){if(b.body.innerText){a=decodeURIComponent(b.body.innerText)}}}return a},setIFrameContents:function(a){this.assertIFrame();try{var c=this.iframe.contentWindow.document;c.open();c.write('<html><body id="state">'+encodeURIComponent(a)+"</body></html>");c.close()}catch(b){}},getState:function(){var a=this.getHash().match(/\/(.*)/)?RegExp.$1:null;if(!this.hashTrackedInHistory){if(a===null||a==this.state){return this.getIFrameContents()}}return a},setState:function(b,a){this.observationPaused=true;var c=b===null?"":"/"+b;if(this.getHash()!=c){this.setHash(c,a)}if(!this.hashTrackedInHistory){if(this.getIFrameContents()!=b){this.setIFrameContents(b)}}this.state=b;this.observationPaused=false},resetState:function(){if(this.state!==null){this.setState(this.state,true)}},update:function(a){this.setState(this.getURIRelativeToRoot(a))},observe:function(){if(!Browser.loaded){return}if(this.observationPaused){return}var b=this.getState();if(b===null||b==this.state){return}this.setState(b);var a=this.getURIAbsoluteFromRootBase(b);this.fireEvent("historyChange",[a])},getURIRelativeToRoot:function(b){b=b.replace(/#.*/,"");if(b.match(/^\w+:\/\//)){var a=location.protocol+"//"+location.host;if(b.substr(0,a.length+1)!=a+"/"){return null}b=b.substr(a.length)}if(!b.match(/^\//)){b=window.location.pathname.replace(/[^\/]*$/,"")+b}if(b.substr(0,wwwroot.length+1)!=wwwroot+"/"){return null}b=b.substr(wwwroot.length+1);if(b===""){return"."}if(b.match(/^([^?]+\/)?\w+.php(\?.*)/)){return RegExp.$2}if(b.match(/^([^?]+\/)?\w+.php$/)){return"?"}if(b.match(/^([^\x00-\x1F.\s+?%:;!#&<>''""\\]|:\w+:)*(\?|$)/)){return b}return null},getURIAbsoluteFromRootBase:function(a){if(a.match(/^\?/)&&window.location.pathname.match(/\.php$|Admin\/$/)){return window.location.pathname.replace(/[?#].*$/,"")+a}else{return wwwroot+"/"+(a=="."?"":a)}}});function tryPartialPageLoad(d,b){if(!d){return true}b=$(b)||$("pagecontents");if(!b){return true}switch($type(d)){case"object":case"element":if(d.getAttributeNode&&d.getAttributeNode("target")&&d.getAttributeNode("target")!="self"){return true}if($(d).getElements("input").some(function(f){return f.type=="file"&&f.value!==""})){return true}if(!d.href){break}d=d.href;case"string":var c=window.historyManager.getURIRelativeToRoot(d);if(!c){return true}var a=(window.historyManager?window.historyManager.state:window.historyManager.getURIRelativeToRoot(window.location.href));var e=d.indexOf("#")+1;if(c==a&&e){window.location.hash=d.substr(e);return false}break;default:break}b.partialPageLoad(d);return false}window.historyManager=new HistoryManager();window.historyManager.addEvent("historyChange",function(a){$("pagecontents").get("partialPageLoad").handleHistoryChange(a)});window.addEvent("domready",function(){window.historyManager.observe()});window.hidePageContents=(window.historyManager.state!==window.historyManager.initialState);if(window.hidePageContents){window.addEvent("partialPageLoad",function(){window.hidePageContents=false})}function replaceContainer(a,b){var c=$(a);var d=$(b);if(c&&d){d.replaces(c);d.setStyle("display","");d.set("id",c.id)}};
