var XHR_ERROR=false;var MXRequest=new Class({METHOD_GET:"get",METHOD_POST:"post",loadedScriptsArrayLength:0,loadingLayer:0,idleAJAXRequests:new Array(),getHTTP:function(b,c,a){if(XHR_ERROR){return}if(typeof(c)=="undefined"){c=new Object()}c[utils.config.session_name]=utils.config.session_id;if(typeof(get)=="undefined"){a=this.METHOD_GET}returnValue=false;completeFunction=function(d,e){returnValue=d;return false};myHTTPRequest=new Request({url:b,method:a,async:false,data:c,onComplete:completeFunction});if(typeof(myHTTPRequest.xhr.open)=="undefined"){XHR_ERROR=true;return}myHTTPRequest.send();return returnValue},getAJAX:function(a,d){if(XHR_ERROR){return}myJSONRequest=false;if(this.idleAJAXRequests.length<=0){var b=new Object();b.url=utils.config.framework_data_url;b.onComplete=function(){this.AXInstance.idleAJAXRequests.push(this)};b.onSuccess=function(e,f){this.AXValue=this.AXInstance.getCompleteAJAX(e);if(typeof(this.AXFinalize)=="function"){this.AXFinalize(true,this.AXValue)}};b.onFailure=function(h){if(h.status){if(h.status=="200"){this.AXValue=true;if(typeof(this.AXFinalize)=="function"){this.AXFinalize(true)}return}if(h.status=="401"){if(client.isActive()){return client.refreshLogin(true)}}else{if(utils.config.debug){var g=new Array(0,408,504,3507,12002,12007,12029,12030,12031,12152);var e=false;for(var f=0;f<g.length;f++){if(g[f]==h.status){e=true}}if(!e){alert("The request failed. Status: "+h.status+" "+h.statusText)}}}}this.AXValue=false;if(typeof(this.AXFinalize)=="function"){this.AXFinalize(false)}};b.onCancel=function(e){if(e.status){alert("The request canceled. Status: "+e.status+" "+e.statusText)}this.AXValue=false;if(typeof(this.AXFinalize)=="function"){this.AXFinalize(false)}};myJSONRequest=new Request.JSON(b);myJSONRequest.AXInstance=this;if(typeof(myJSONRequest.xhr.open)=="undefined"){XHR_ERROR=true;return}}else{myJSONRequest=this.idleAJAXRequests.pop()}myJSONRequest.AXValue=true;myJSONRequest.AXFinalize=d.finalize;myJSONRequest.options.async=d.async;var c={e:utils.config.current_element,v:utils.config.current_view,call_r:JSON.encode(a)};c[utils.config.session_name]=utils.config.session_id;c[utils.config.client_name]=utils.config.client_id;myJSONRequest.post(c);return myJSONRequest.AXValue},getCompleteAJAX:function(a){retValue=true;if(a){obj=this;for(jobs in a){switch(jobs){case"value":retValue=a.value;break;case"assigns":a.assigns.each(function(c,b){obj.processAssigns(c)});break;case"functions":a.functions.each(function(c,b){obj.processFunctions(c)});break;case"scripts":a.scripts.each(function(c,b){obj.processScripts(c)});break;case"includes":a.includes.each(function(c,b){obj.processIncludes(c)});break;case"css":a.css.each(function(c,b){obj.processCSS(c)});break;default:break}}}return retValue},processScripts:function(args){eval(args)},processCSS:function(a){cssLinks=$(document).getElements("link");cssLinks.each(function(c,b){if(c.href.indexOf(a)>=0){return}});head=$(document).getElement("head");cssLink=$(document).createElement("link");cssLink.rel="stylesheet";cssLink.type="text/css";cssLink.href=a;head.appendChild(cssLink)},processIncludes:function(a){scripts=$(document).getElements("script");scripts.each(function(c,b){if(c.src.indexOf(a)>=0){return}});head=$(document).getElement("head");script=$(document).createElement("script");script.type="text/javascript";script.src=a;head.appendChild(script);this.loadedScriptsArrayLength=this.loadedScriptsArrayLength+1},processAssigns:function(a){if(element=$(a[0])){switch(a[1]){case"innerHTML":element.innerHTML=a[2];break;case"value":element.value=a[2];break;default:break}}},processFunctions:function(args){var scr=new Array();func=args.shift();if(eval("(typeof("+func+') == "undefined");')){alert(func+" not found")}scr.push(func);scr.push("(");var arg_r=new Array();args.each(function(argument,index){arg_r.push("args["+index+"]")});scr.push(arg_r.join(","));scr.push(");");eval(scr.join(""));return true}});var request=new MXRequest();var MXJob=new Class({unique_id:false,func:false,params:false,onfailure:false,onsuccess:false,max_timeout:0,min_timeout:0,last_call_timestamp:false,last_value:false,initialize:function(b,d,c,a){this.func=b;this.params=d;this.onfailure=c;this.onsuccess=a},getId:function(){return this.unique_id},setTimeout:function(a,b){a=a||0;if(typeof(b)!="number"){b=a}this.max_timeout=a;this.min_timeout=b},resetLastCallTimestamp:function(){this.last_call_timestamp=0}});var MXScheduler=new Class({uniqueId:1,job_r:new Array(),call_r:new Array(),is_running:false,is_modifying:false,next_call_timestamp:false,next_call_handler:false,callSync:function(b,d,c,a){return request.getAJAX(new Array({func:b,params:d}),{async:false,finalize:false})},call:function(b,d,c,a){this.addJob(new MXJob(b,d,c,a),true)},addJob:function(e,b,f){if(this.is_modifying){window.setTimeout(function(){alert("addJob waiting:");scheduler.addJob(e,b)},10)}this.is_modifying=true;if(typeof(e.max_timeout)!="number"||e.max_timeout<0){return alert("Invalid max timeout value for job: "+e.func)}if(typeof(e.min_timeout)!="number"||e.min_timeout<0){return alert("Invalid min timeout value for job: "+e.func)}e.last_call_timestamp=this._getTimestamp();e.unique_id=this.uniqueId++;if(e.max_timeout==0){for(var d=0;d<this.job_r.length;d++){if(this.job_r[d].max_timeout>0){break}}var c=this.job_r.slice(0,d);var a=this.job_r.slice(d,this.job_r.length);a.unshift(e);this.job_r=c.concat(a)}else{this.job_r.push(e)}if(!this.is_running){if(this.next_call_handler){window.clearTimeout(this.next_call_handler)}this._setTimer(this._getNextTimeout(this._getTimestamp(),false))}this.is_modifying=false;return true},removeJob:function(b){if(this.is_modifying){window.setTimeout(function(){alert("removeJob waiting:");scheduler.removeJob(b)},10)}this.is_modifying=true;for(var a=0;a<this.job_r.length;a++){if(this.job_r[a].getId()==b){this.job_r.splice(a,1);break}}this.is_modifying=false},_runQueue:function(f){this.is_running=true;var a=new Array();for(var c=0;c<this.job_r.length;c++){var e=this.job_r[c];var h=this.next_call_timestamp-e.last_call_timestamp;if(h<e.min_timeout){continue}var g=this._getNextTimeout(this.next_call_timestamp,e.getId());if(h+g<e.max_timeout){continue}var d={jid:e.unique_id,func:e.func};if(e.params){d.params=new Array();for(var b=0;b<e.params.length;b++){d.params[b]=(typeof(e.params[b])=="function")?e.params[b]():e.params[b]}}if(e.last_value){d.last=e.last_value}e.last_call_timestamp=-1;this.call_r.push(d)}if(!this.call_r.length){return this._runFinish()}request.getAJAX(this.call_r,{async:true,finalize:function(j,i){scheduler._runFinish(j,i)}})},_runFinish:function(successful,value){if(this.is_modifying){window.setTimeout(function(){alert("Finish waiting:");scheduler._runFinish(successful,value)},10)}this.is_modifying=true;var timestamp=this._getTimestamp();for(var i=0;i<this.job_r.length;i++){for(var j=0;j<this.call_r.length;j++){if(this.job_r[i].getId()==this.call_r[j].jid){var job=this.job_r[i];if(!successful){if(typeof(job.onfailure)!="undefined"){if(typeof(job.onfailure)=="function"){job.onfailure()}else{eval(job.onfailure)}}}else{if(typeof(job.onsuccess)!="undefined"){if(typeof(job.onsuccess)=="function"){job.onsuccess(value)}else{eval(job.onsuccess)}}}if(job.max_timeout==0){this.job_r.splice(i,1)}else{if(job.last_call_timestamp==-1){job.last_call_timestamp=timestamp}}break}}}this.call_r=new Array();var next_timeout=this._getNextTimeout(timestamp,false);this.is_modifying=this.is_running=false;this._setTimer(next_timeout)},_setLastValue:function(b,c){this.is_modifying=true;for(var a=0;a<this.job_r.length;a++){if(this.job_r[a].getId()!=b){continue}this.job_r[a].last_value=c}this.is_modifying=false},_getNextTimeout:function(d,c){var e=false;for(var a=0;a<this.job_r.length;a++){var b=this.job_r[a];if(c){if(c==b.getId()){continue}if(b.max_timeout==0){continue}var f=b.max_timeout}else{var f=b.max_timeout-(d-b.last_call_timestamp);if(f<0){f=0}}if(e!==false&&e<f){continue}e=f}return e},_setTimer:function(a){if(a<0){alert("negative timeout not supported: "+a)}if(this.next_call_handler){window.clearTimeout(this.next_call_handler)}if(a>=0){this.next_call_timestamp=this._getTimestamp(a);this.next_call_handler=window.setTimeout(function(){scheduler._runQueue()},a)}else{this.next_call_timestamp=false}},_getTimestamp:function(b){var a=new Date();if(b){return a.getTime()+b}return a.getTime()}});var scheduler=new MXScheduler();var MXClient=new Class({active:true,load_r:new Array(),unload_r:new Array(),focus_r:new Array(),blur_r:new Array(),initialize:function(){if(typeof(utils)=="undefined"){return window.setTimeout(function(){client.initialize()},50)}var a=utils.config.session_id+":"+utils.config.client_id;if(utils.config.client_initialized){window.name=a}else{if(window.name!=a){this.refreshLogin();return}}window.addEvent("domready",function(d){for(var b=0;b<client.load_r.length;b++){client.load_r[b]()}if((window.parent&&window.name!=window.parent.name&&window.parent.client)||utils.config.client_public){return}var c=new MXJob("ping",new Array(function(){return client.getClientIds()}));c.setTimeout(utils.ajaxTimeout,utils.ajaxTimeout/2);scheduler.addJob(c)});window.addEvent("beforeunload",function(c){if(!client.active){return}client.active=false;for(var b=0;b<client.unload_r.length;b++){client.unload_r[b]()}client.stopChilds();client.prepareRequest();if(!checkFeatureSupport("waitcursor")){window.addEvent("unload",function(){cleanSite()})}client.focus_r.push(function(d){client.active=true;hideSite()});window.setTimeout(function(){if(!client.active){showLocalSite()}},0)});window.addEvent("focus",function(c){for(var b=0;b<client.focus_r.length;b++){client.focus_r[b](c)}client.focus_r=new Array()})},refreshLogin:function(b){if(utils.config.debug&&!confirm("Debug Mode: Try to relogin into new window. Continue.")){return}if(this.hasCookie()){utils.config.client_id="";utils.config.session_id="";this.prepareRequest();var a=window.location.href}else{var a=window.location.href;a=a.split("?");if(a.length>1){a[1]=a[1].replace(new RegExp(utils.config.session_name+"="+utils.config.session_id+"[&]{0,1}"),"");a[1]=a[1].replace(new RegExp(utils.config.client_name+"="+utils.config.client_id+"[&]{0,1}"),"")}var a=a.join("?")}if(typeof b!="undefined"){if(a.indexOf("?")>0){a+="&co=1"}else{a+="?co=1"}}window.location.href=a},prepareRequest:function(){if(!this.hasCookie()){return}document.cookie=utils.config.client_name+"="+utils.config.client_id+"; path="+utils.config.framework_data_url.substr(0,utils.config.framework_data_url.indexOf("?"));document.cookie=utils.config.session_name+"="+utils.config.session_id+"; path="+utils.config.framework_data_url.substr(0,utils.config.framework_data_url.indexOf("?"))},isActive:function(){return this.active},hasCookie:function(){return(navigator.cookieEnabled==true&&document.cookie.indexOf(utils.config.session_name+"=")!=-1)},addLoadFunction:function(a){this.load_r.push(a)},addUnloadFunction:function(a){this.unload_r.push(a)},stopChilds:function(){for(var a=0;a<window.frames.length;a++){try{var b=window.frames[a];if(b.client){b.client.active=false;b.client.stopChilds()}}catch(c){}}},getClientIds:function(){var d=new Array(utils.config.client_id);for(var a=0;a<window.frames.length;a++){try{var b=window.frames[a];if(b.client){d=d.concat(b.client.getClientIds())}}catch(c){}}return d}});var client=new MXClient();
