//Defines an Operating System level controller for the Web OS
//Author: Brian R Miedlar (c) 2006 (miedlar.com)
var _os=null;var OS=Class.create();
OS.Path = function() { return 'clientscript/'; }; 
OS.Load=function(){if(!OS.Path){setTimeout(OS.Load,50);return }_os=new OS();OS.OnLoadComplete()};OS.prototype={"initialize":function(){this.appVersion="0";this.debug=true;this.agent=null;this.trace=false;this.startTime=new Date();this.lastTrace=this.startTime;this.timeoutCount=0;this.activeTaskHandler=null;this.sources=[];this.clientKey="anonymous";this.scriptsToLoad=[];this.loadedScripts=[];this.completedScripts=[];this.completeCallbacks=[];this.scriptLoadListeners=[];this.authenticationListeners=[];this.isAuthenticated=false;this.username=null;this.desktopKey="";this.invitesRemaining=0;this.pageLoading=true;this.activeInterface=false;this.progressHandle=null;this.queueLoading=false;this.remaining=0;this.updateRequests=$H([]);this.activeMessage=true;this.connected=true;this.workspaceElement=null},"addScriptLoadListener":function(A,C){var B=new Object();B.callback=A;B.associatedScripts=C;this.scriptLoadListeners.push(B)},"addAuthListener":function(A){this.authenticationListeners.push(A)},"requireAll":function(D,A,C){C=C||{};if(C.onComplete){this.scriptsToLoad.push(C.onComplete)}var B=A;if(C.extendedWatchScripts){var F=C.extendedWatchScripts;for(var E=0;E<F.length;E++){B.push(F[E])}}if(C.scriptLoadListener){this.addScriptLoadListener(C.scriptLoadListener,B)}if(typeof A=="string"){this.scriptsToLoad.push(A)}else{$A(A.reverse()).each(function(G){if(!this.sources[G]){this.scriptsToLoad.push(G)}}.bind(this))}this.load()},"scriptLoaded":function(B){var A=[];$A(this.scriptsToLoad).each(function(C){if(C!=B){A.push(C)}});this.scriptsToLoad=A;if(this.completeCallbacks[B]){this.completeCallbacks[B]();this.completeCallbacks[B]=false}$A(this.scriptLoadListeners).each(function(C){var E=0;var D=0;$A(C.associatedScripts).each(function(F){if(this.completedScripts[F]){D++}E++}.bind(this));C.callback(D,E)}.bind(this))},"loadNext":function(){if(!this.queueLoading){return }this.requireNext();setTimeout(function(){this.loadNext()}.bind(this),50)},"load":function(){if(this.queueLoading){return }this.queueLoading=true;this.loadNext()},"loadComplete":function(){this.queueLoading=false},"requireNext":function(){if(this.scriptLoadListener){this.scriptLoadListener(this.scriptsToLoad.length)}if(this.scriptsToLoad.length==0){this.loadComplete();return }var A=this.scriptsToLoad[this.scriptsToLoad.length-1];if(typeof A=="function"){A();this.scriptsToLoad.pop();this.load();return }this.require(A,function(){this.load()}.bind(this))},"require":function(D,C,isAbsolute){if(this.sources[D]){if(C){setTimeout(C,10)}return }this.sources[D]=true;if(!OS.Path){_os.showMessage("Error: Unknown JsOS");return }var A=document.getElementsByTagName("head").item(0);var B=document.createElement("script");B.setAttribute("type","text/javascript");var sSrc = OS.Path() + D;if(isAbsolute) sSrc=D;  B.setAttribute("src",sSrc);A.appendChild(B);if(!isAbsolute) this.waitForLoadComplete(D,C)},"getStylesheets":function(){var A=[];$A(document.getElementsByTagName("link")).each(function(B){if(B.getAttribute("type")!="text/css"){throw $continue}A.push(B)});return A},"applyStylesheet":function(F,D,C){var B=null;var E=this.getStylesheets();$A(E).each(function(I){var H=F.indexOf("?");var J=F.substr(0,H);if(I.disabled){throw $continue}if(I.getAttribute("href")==J){B=I;throw $break}});if(B){B.disabled=true}var A=document.getElementsByTagName("head").item(0);var G=document.createElement("link");G.setAttribute("rel","stylesheet");G.setAttribute("type","text/css");G.setAttribute("media",D);G.setAttribute("href",F+"?rnd="+Math.random()*123456);A.appendChild(G);if(C){C(F)}},"waitForLoadComplete":function(A,B){if(this.isQueueLoading(A)){setTimeout(function(){this.waitForLoadComplete(A,B)}.bind(this),10);return }if(this.completedScripts[A]){return }this.completedScripts[A]=true;if(B){setTimeout(B,10)}},"isQueueLoading":function(A){if(!this.loadedScripts[A]){return true}return false},"onLoadComplete":function(A){this.loadedScripts[A]=true;this.scriptLoaded(A)},"requestUpdate":function(B,E,A,F){if(!F){F=false}OS.Trace("RequestUpdate: key("+B+") wait-"+A+" I:"+F);if(!A){A=1200}if(A<250){A=250}if(this.updateRequests[B]){this.updateRequests[B].action=E;this.updateRequests[B].isInterval=F;var D=this.updateRequests[B].iteration;D++;this.updateRequests[B].iteration=D;if(!F){setTimeout(function(){this.performUpdate(B,D)}.bind(this),A)}return }var C=new Object();C.key=B;C.action=E;C.iteration=0;C.isInterval=F;this.updateRequests[B]=C;setTimeout(function(){this.performUpdate(B,0)}.bind(this),A)},"performUpdate":function(A,C){OS.Trace("PerformUpdate: key("+A+") iteration-"+C);var B=this.updateRequests[A];if(!B){return }if(B.iteration!=C&&!B.isInterval){return }if(this.activeInterface){setTimeout(function(){this.performUpdate(A,C)}.bind(this),500);return }var B=this.updateRequests[A];this.updateRequests[A]=null;setTimeout(B.action,50)},"showMessage":function(B){if(!$("Message")){return }this.activeMessage=B;Element.update("MessageText",B);if(!Element.visible("Message")){var A=new Effect.Appear("Message");A=null}},"hideMessage":function(A){var B=this.activeMessage;setTimeout(function(){if(!Element.visible("Message")){return }if(this.activeMessage!=B){return }this.activeMessage="";if(A){Effect.Fade("Message")}else{Element.hide("Message")}}.bind(this),30)},"setAuthenticated":function(A,E,B,D,C){this.isAuthenticated=A;this.username=E;this.clientKey=B;this.desktopKey=D;this.invitesRemaining=C;$A(this.authenticationListeners).each(function(F){F(A,E)}.bind(this))}};OS.HandleEvent=function(A,C,B){if(!B){B={}}Client.DoRequest(A,{"onSuccess":B.onSuccess,"parameters":Object.extend({"eventCode":C},B.parameters||{})})};OS.StartTask=function(B,A){_dynamics.preloaderWaitCount=0;OS.HandleEvent(WebServices.Service_StartTask(),B,A)};OS.StartFileTask=function(B,A){OS.HandleEvent(WebServices.Service_Uploader_StartTask(),B,A)};OS.GetProgress=function(B,A){OS.HandleEvent(WebServices.Service_GetProgress(),B,A)};OS.GetFileProgress=function(B,A){OS.HandleEvent(WebServices.Service_Uploader_GetProgress(),B,A)};OS.CancelTask=function(B,A){OS.HandleEvent(WebServices.Service_CancelTask(),B,A)};OS.GetTaskValue=function(B,A){OS.HandleEvent(WebServices.Service_GetTaskValue(),B,A)};OS.OnCallTimeout=function(A){_os.showMessage("Operation Timed Out");if(!_os.connected){return }_os.timeoutCount++;Client.DoRequest(WebServices.Service_Notify_Timeout(),{"onSuccess":function(B){},"onError":function(B){},"parameters":{"value":A.responseText}})};OS.OnCallError=function(A){if(!_os.connected){return }_os.showMessage("Error");Client.DoRequest(WebServices.Service_Notify_Error(),{"onSuccess":function(B){},"onError":function(B){},"parameters":{"value":A.responseText}})};OS.IsText=function(A){return A.length&&(A.search(/\S/)!=-1)};OS.OnDisconnected=function(A){OS.Trace("Internet Disconnected");_os.showMessage("No Internet Connection");_os.connected=false};OS.CreateElement=function(C,B,E){if(!$(B)){return }var A=document.createElement(C);var D=$(B).appendChild(A);if(E){D.id=E}return D};OS.CreateDiv=function(B,C){var A=OS.CreateElement("div",B,C);return A};OS.CreateList=function(B,C){var A=OS.CreateElement("ul",B,C);return A};OS.AddListItem=function(B,C){var A=OS.CreateElement("li",B,C);return A};OS.ResizeImage=function(C,F,E,D){if(!C.complete){setTimeout(function(){OS.ResizeImage(C,F,E,D)},300);return }var B=F;var A=B*(C.height/C.width);if(D){D(B,A)}};OS.AddImage=function(E,G,F,A,D){D=Object.extend({},D||{});if(!F){Dynamics.PreloadImage(D,G)}var B=document.createElement("img");if(!A){var C=$(E).appendChild(B);C.style.backgroundImage="url("+G+")";G="images/spacer.gif"}else{var C=$(E).appendChild(B);if(D.onload){C.onload=function(){D.onload(C,E)}}if(D.onerror){C.onabort=function(){D.onabort(C,E)}}if(D.onerror){C.onerror=function(){D.onerror(C,E)}}}C.src=G;return C};OS.SetImage=function(C,E,D,A,B){if(!$(C)){return }$(C).removeChildren();C.innerHTML="";return OS.AddImage(C,E,D,A,B)};OS.GetQuerystring=function(A){var C=window.location.search.substring(1);var D=C.split("&");for(var B=0;B<D.length;B++){var E=D[B].split("=");if(E[0]==A){return E[1]}}return null};OS.CreateInput=function(C,B,A){C=$(C);if(_os.agent.bIsIE){eInput=OS.CreateElement("<input type=\""+B+"\" name=\""+A+"\">",C)}else{eInput=OS.CreateElement("input",C);eInput.setAttribute("name",A);eInput.setAttribute("type",B)}return eInput};OS.OnLoadComplete=function(){if(!Prototype||!Element){setTimeout(OS.OnLoadComplete,300);return }var A="firebug/firebug.js";if(!_os.debug){A="firebug/firebugx.js"}_os.requireAll("os.js",[A,"agent.js"],{"onComplete":function(){_os.onLoadComplete("os.js")}})};OS.DateDiff=function(B,A){return(Date.parse(A)-Date.parse(B))};OS.TimeFrom=function(B){var A=new Date();return OS.DateDiff(B,A)};OS.Trace=function(C){if(!_os.debug||!_os.trace){return }var B=new Date();var A=OS.DateDiff(_os.lastTrace,B)+" ** "+C;_os.lastTrace=B};OS.PageLoadComplete=function(){if(!_os||typeof (UserAgent)=="undefined"){setTimeout(OS.PageLoadComplete,50);return }document.getElementsByClassName("workspace","Site").each(function(A){_os.workspaceElement=A});_os.pageLoading=false;_os.agent=UserAgent.GetAgent()};OS.SelectInputOption=function(B,A,C,D){$A(document.getElementsByClassName(A,B)).each(function(E){if(E.value==C){E.checked=true}else{if(D){if(Element.hasClassName(E,D)){E.checked=false}}}})};OS.SelectInputElement=function(C,A,D,E){if(!E){E="anyoption"}var B=false;if(Element.hasClassName(D,E)){B=true}$A(document.getElementsByClassName(A,C)).each(function(F){if(F!=D){if(B||Element.hasClassName(F,E)){F.checked=false}}});D.checked=true};OS.GetSelectedRadio=function(A,C){var B=null;$A(document.getElementsByClassName(C,A)).each(function(D){if(D.checked){B={"element":D,"value":D.value,"label":"unknown"};throw $break}});if(B){$A($(A).getElementsByTagName("label")).each(function(D){var E=D.getAttribute("for",2);if(E==null){E=D.getAttribute("htmlFor")}if(E==B.element.id){B.label=D.innerHTML;throw $break}})}return B};OS.GetSelectedCheckboxes=function(B,A){var C=[];$A(document.getElementsByClassName(A,B)).each(function(E){if(E.checked){var D={"element":E,"value":E.value,"label":"unknown"};$A($(B).getElementsByTagName("label")).each(function(F){var G=F.getAttribute("for",2);if(G==null){G=F.getAttribute("htmlFor")}if(G==D.element.id){D.label=F.innerHTML;throw $break}});C.push(D)}});return C};OS.GetSelectBoxLabel=function(A){A=$(A);var B=A.selectedIndex;if(!(B>=0)){return""}return A.options[B].text};Behaviour.addLoadEvent(function(){OS.PageLoadComplete()});OS.CreateScript=function(A,B){var C=document.createElement("script");C.setAttribute("type","text/javascript");C.setAttribute("src",B);C.setAttribute("id",A);return C};OS.SwapScript=function(A,B){_os.agent=UserAgent.GetAgent(); console.log('ie check: ' + _os.agent.bIsIE); if(!_os.agent.bIsIE) { _os.require(B, null, true); return;}; var C=$(A);var D=OS.CreateScript(A,B);C.parentNode.replaceChild(D,C);OS.SwapScript.el=D;return true};OS.CreateApplication=function(C,A){var B="";B+=("<div id=\""+C+"\">");B+=("<script id=\""+A+"\" language=\"JavaScript1.1\"></script>");B+=("</div>");return B};OS.Load();var Client=Class.create();Client.DoRequest=function(A,C){var D=OS.OnCallError;if(C.onError){D=C.onError}var E=OS.OnCallTimeout;if(C.onTimeout){E=C.onTimeout}var B=new Ajax.Request(A,{method:"post",parameters:"client="+_os.clientKey+"&"+$H(C.parameters).toQueryString(),onSuccess:C.onSuccess,"onTimeout":E,"onFailure":D})}





