/*
	author: Metronet LTD (http://www.metronet.ie)
	requires: mootools 1.3
*/
Mnet.Ajax={Loader:{init:function(){if(!this.initialized){var b=document.body;this.panel=new Element("div",{"class":"ajax-loader",styles:{position:"fixed","z-index":9999,left:0,top:0}}).inject(b);var a=new Element("img",{src:Mnet.rootUrl+"img/loader.gif"}).inject(this.panel);this.fx=new Fx.Tween(this.panel,{duration:Mnet.getDuration(500),link:"cancel"});this._positionBound=this._position.bind(this);this.initialized=true}},show:function(a){this.init();this.panel.setStyles({display:"block"});this.panel.set("opacity",1)},hide:function(){var a=this;this.fx.chain(function(){a.panel.setStyles({display:"none"})}).start("opacity",0)},_position:function(){this.panel.setStyles({left:window.getScrollLeft(),top:window.getScrollTop()})}},doRequest:function(c,e,d){var f=Mnet.String.urlArgReplace(c,{poutput:"ajax",aaction:d});var a=this.Loader;if(!this.request){this.request=new Request.HTML({evalScripts:false,evalResponse:false,noCache:true,onSuccess:this.doRequestOnSuccess.bind(this),onFailure:function(g){a.hide();alert("Unable to perform request")}})}else{this.request.cancel()}a.show();var b={url:f};if(e){b.method="post";b.data=$(e);this.request.onFailure=function(g){a.hide();alert("Unable to post form. Please try again")}}else{b.method="get";this.request.onFailure=function(g){a.hide();document.location.href=c}}this.request.send(b)},doRequestOnSuccess:function(h,g,j,b){var e=this;var k=this.Loader;var m=new Element("div",{html:j});k.hide();var c,d;var i=m.getElement(".ajax-meta");var a={};if(i){i.getChildren().each(function(n){a[n.className]=n.get("html").replace(/^\s+|\s+$/,"")})}if(!a.replaceNode){a.replaceNode=".ajax-content"}if(!a.replaceNodeId){a.replaceNodeId="ajax-holder-content"}c=m.getElement(a.replaceNode);d=$(a.replaceNodeId);if(c&&d){if(a.runUnload){this.unloadPage()}var l=function(){if(a.scanLinks){e.scanLinks(c)}if(a.scanFlashTitles){Mnet.Flash.Titles.scanPage(c)}if(a.scanSlimbox){Mnet.scanSlimbox(c)}};var f;if(a.transitionDirectionType){f=function(){var n=Mnet.getContentTransition(a.replaceNodeId,d);if(!n.inProgress){n.replace(c,a,e.unloadPage.bind(e),function(){l()},function(){Browser.exec(b)});var o=null;var o=Mnet.getContentTransition(a.replaceNodeId+Mnet.Reflection.suffix);if(o){var p=Mnet.Reflection.copy(c,a.replaceNodeId);if(p){o.replace(p,a)}else{o=null}}n.start();if(o){o.start()}}}}else{f=function(){l();d.empty().grab(c);Browser.exec(b)}}f.apply(this)}else{alert("Unable to retrieve data")}},updatePageInfo:function(a,b){document.location.hash=a;if(b!=null){document.title=b}this.currentPage=a},linkTo:function(b,c,a){if(a!=null){b=Mnet.String.urlArgReplace(b,a)}this.doRequest(b,null,c);return false},linkOnClick:function(b,d,c){if(!this.linkPreClick||this.linkPreClick.apply(this,[b,d,c])){d.stop();var a=b.get("href");this.doRequest(a,null,c)}},getRelAction:function(a){var b=a.match(/^ajax(-(\w+))?$/);if(b){return b.length>1?b[2]:"full"}else{return null}},scanLinks:function(a){if(Mnet.Testing.ajaxLinksOff){return}if(!a){a=document.body}a=$(a);var c=this;var b=a.getElements("a");b.each(function(f){var g=c.getRelAction(f.rel);if(g!=null){var e=f.get("href").toLowerCase();var d=(Mnet.domain+Mnet.rootUrl+"home/").toLowerCase();if(!e.match(/^http(s?):\/\/|^\w+:/)){if(e.match(/^\//)){e=Mnet.domain+e}else{e=Mnet.domain+Mnet.rootUrl+e}}else{e=e.replace(/^http(s?):\/\//,"")}if(e.substring(0,d.length)==d){f.addEvent("click",function(h){Mnet.Ajax.linkOnClick(f,h,g)})}}});var b=a.getElements("form");b.each(function(e){var f=c.getRelAction(e.className);if(f!=null){var d=e.onsubmit;e.onsubmit=function(){var g=d?d.apply(this):true;if(g){Mnet.Ajax.doRequest(this.action,$(this),f)}return false}}});if(!this.documentWriteOverridden){document.write=this.documentWrite;this.documentWriteOverridden=true}},javascript:function(a){if(!this.onloadCleared){window.onload=function(){};this.onloadCleared=true}if(!this.javascriptCount){this.javascriptCount=0}this.javascriptCount++;var b=this;Asset.javascript(a,{onload:function(){b.javascriptLoaded()}})},javascriptLoaded:function(b){if(!b&&this.javascriptCount>0){this.javascriptCount--}if(this.javascriptCount==null||this.javascriptCount==0){if(this.onReadyEvents){for(var a=0;a<this.onReadyEvents.length;a++){this.onReadyEvents[a].apply(this.onReadyEvents[a])}this.onReadyEvents=[]}if(window.onload){window.onload()}window.onload=function(){}}},addOnReady:function(a){if(!this.onReadyEvents){this.onReadyEvents=[]}this.onReadyEvents.push(a)},unescapeHtml:function(a){var b=document.createElement("DIV");b.innerHTML=a;if(b.innerText){return b.innerText}return b.textContent},documentWrite:function(b){if((matches=b.match(/<script.*? src="(.*?)"[^>]*><\/script>/))){var a=matches[1];Mnet.Ajax.javascript(Mnet.Ajax.unescapeHtml(a))}else{new Element("div",{html:b}).inject(document.body)}},addUnload:function(a){if(!this.unloadEvents){this.unloadEvents=[]}this.unloadEvents.push(a)},unloadPage:function(){if(this.unloadEvents){for(var a=0;a<this.unloadEvents.length;a++){this.unloadEvents[a].apply(this.unloadEvents[a])}this.unloadEvents=[]}}};Mnet.String={urlParseCache:"",urlParse:function(c){if(c==null){return this.urlParseCache}var h=c.split("?");var f=h.shift();var a=h.join("?");var b={};if(a!=""){var e=a.split("&");for(var d=0;d<e.length;d++){pair=e[d].split("=");name=pair.shift();b[name]=unescape(pair.join("="))}}var g={base:f,sep:a!=""?"&":"?",qs:a,args:b};this.urlParseCache=g;return g},urlCompile:function(d){var c="";var b="?";for(var a in d.args){c+=b+a+"="+encodeURIComponent(d.args[a]);if(b=="?"){b="&"}}this.urlParseCache=d;return d.base+c},urlArgReplace:function(c,b){purl=this.urlParse(c);for(var a in b){purl.args[a]=b[a]}return this.urlCompile(purl)},urlArgGet:function(b,a){purl=this.urlParse(b);return purl.args[a]},startsWith:function(a,b){return a.substring(0,b.length)==b}};
