var loadingCounter=null,cometEnabled=false,dojoDebugEnabled=true,toSubscribeList=new Array(),subscribeChannelsCount=0,subscriptionSuccesfull=0,loadingCount=0;dojo.require("dojo.cookie");dojo.require("dijit.Dialog");function _log(a){}function enableComet(){cometEnabled=true;dojo.require("dojox.cometd");dojo.addOnLoad(initializeComet);_log("CometD enabled")}function initializeComet(){try{if(cometEnabled&&$cometdGetSubscriptionList){dojox.cometd.init({data:"UserId:"+dojo.cookie("#_userId")},"/cometd");dojox.cometd.subscribed=cometSubscriptionSuccessfull;_log("CometD initialized");$cometdGetSubscriptionList(subscribeToCometChannels);_log("CometD subscription request sent")}}catch(a){alert(dojo.toJson(a))}}function subscribeToCometChannels(a){try{toSubscribeList=a.subscribedTo;if(toSubscribeList==null){toSubscribeList=new Array()}subscribeChannelsCount=toSubscribeList.length;dojox.cometd.publish("/jiva/system",{action:"initialize"});_log(" CometD » /jiva/system » { action: 'initialize'}");_log("CometD subscription list: "+dojo.toJson(toSubscribeList));cometSubscriptionSuccessfull()}catch(b){alert(dojo.toJson(b))}}function cometSubscriptionSuccessfull(c){if(c&&c=="/meta/subscribe"){_log("CometD subscription succesfull: "+c);return}try{if(c){subscriptionSuccesfull++;_log("CometD subscription succesfull: "+c)}if(toSubscribeList!=0){var a=toSubscribeList[0];toSubscribeList.splice(0,1);dojox.cometd.subscribe(a,true,cometMessageReceived);_log("CometD subscription: "+a)}}catch(b){alert(dojo.toJson(b))}if(subscriptionSuccesfull==subscribeChannelsCount&&subscribeChannelsCount!=0){dojox.cometd.publish("/jiva/system",{action:"history"});_log(" CometD » /jiva/system » { action: 'history'}");cometCommandProcessor({chat:"enable"})}}function sendCometMessage(b){try{if(b&&b.length!=0){dojox.cometd.publish("/jiva/messages",{message:b})}_log(" CometD » /jiva/messages » "+b)}catch(a){alert(dojo.toJson(a))}}function cometMessageReceived(a){try{if(a.channel.substring(0,"/jiva/commands".length)=="/jiva/commands"){if(cometCommandProcessor){cometCommandProcessor(a.data)}_log(" CometD « /jiva/commands « "+dojo.toJson(a.data))}else{if(a.channel.substring(0,"/jiva/users".length)=="/jiva/users"||a.channel.substring(0,"/jiva/locations".length)=="/jiva/locations"){if(cometChatProcessor){cometChatProcessor(a.timestamp,a.data)}_log(" CometD « "+a.channel+" « "+dojo.toJson(a.data))}}}catch(b){alert(dojo.toJson(b))}}function showLoading(a){if(document.getElementById("loadingFrame")){if(loadingCounter){clearTimeout(loadingCounter)}if(a){loadingCount++;loadingCounter=setTimeout('dojo.byId("loadingFrame").style.visibility = "visible"; dojo.fadeIn({node: "loadingFrame", duration: 200, end: 0.4}).play(50); loadingCounter = null;',200);allButtonsOff(true)}else{loadingCount--;if(loadingCount<=0){loadingCount=0;loadingCounter=setTimeout('dojo.fadeOut({node: "loadingFrame", duration: 100, onEnd: function(){dojo.byId("loadingFrame").style.visibility = "hidden";}}).play(50); loadingCounter = null;',50);allButtonsOff(false)}}}}function allButtonsOff(a){try{var d=document.getElementsByTagName("INPUT");if(d){var c=0;for(c=0;c<d.length;c++){if(d[c].type.toLowerCase()=="button"||d[c].type.toLowerCase()=="submit"){d[c].disabled=a?"1":null}}}}catch(b){alert(b)}}function jivaSend(d,c,b,a){showLoading(true);sendRequest({_action:d,_attributes:b,_objects:a,_callback:c})}function sendRequest(a){var c=serialize(a._action,a._attributes,a._objects),b=dojo.rawXhrPost({url:"/",error:function(d,e){processError(d,e)},contentType:"text/plain",postData:c,preventCache:true});b.addCallback(function(d){processResult(d,a._callback);return d})}function processError(a,b){showLoading(false);if(dojoDebugEnabled){console.error(a)}}function processResult(r,u){showLoading(false);var j=new Array(),b=new Array(),a=r.split(/\s*\n\s*/g),s=false,w=null,n=null,i="OK",c="No description";if(!r){r=""}for(var p=0;p<a.length;p++){try{var k=a[p],x=null,g=null,q=null;if(p==0){i=k;continue}else{if(p==1){c=k;if(i=="ERROR"||i=="EXCEPTION"){break}else{continue}}}if(k.charAt(0)=="$"){s=true;var o=k.split(/[\\=\\.\s]/g);w=o[0].substring(1);n=new Object();n._id=new Number(o[1]);n._revision=new Number(o[2]);n._attributes=new Array()}else{if(k.charAt(0)=="}"){s=false;b[w]=n;n=null;w=null}else{var m=k.indexOf("="),f=k.substring(m+1),v,e=f.substring(0,2),d=f.substring(0,3);x=k.substring(0,m);q="";if(e=="s "){q=f.substring(2).replace(/%n/g,"\n").replace(/%%/g,"%")}else{if(e=="l "||e=="d "){q=new Number(f.substring(2))}else{if(e=="L."){v=f.indexOf(" ");g=f.substring(2,v);q=f.substring(v+1).replace(/%n/g,"\n").replace(/%%/g,"%")}else{if(d=='M."'){v=f.indexOf('" ');g=f.substring(3,v);q=f.substring(v+2).replace(/%n/g,"\n").replace(/%%/g,"%")}}}}var l=j;if(s){l=n._attributes}if(g==null){l[x]=q}else{var h=l[x];if(!h){h=new Array();l[x]=h}h[g]=q}}}}catch(t){alert(dojo.toJson(t))}}if(u){u(j,b,i,c)}}function $a(c,a,b){return{_name:c,_type:a,_value:b}}function serialize(h,e,a){var i="%"+h+"\n",f,d,b,g;for(f in e){b=e[f];if(b!=null&&b!=undefined&&b._value!=null&&b._value!=undefined){if(b._type=="L"){for(g in b._value){i+=b._name+"="+b._type+"."+g+" "+replacePercents(new String(b._value[g]))+"\n"}}else{if(b._type=="M"){for(g in b._value){i+=b._name+"="+b._type+'."'+g+'" '+replacePercents(new String(b._value[g]))+"\n"}i+=b._name+"="+b._type+" "+replacePercents(new String(b._value))+"\n"}else{i+=b._name+"="+b._type+" "+replacePercents(new String(b._value))+"\n"}}}}for(d in a){var c=a[d];i+="$"+c._name;if(c._id){i+="="+c._id+"."}if(c._revision){i+=c._revision}i+=" {\n";for(f in c._attributes){b=c._attributes[f];if(b!=null&&b!=undefined&&b._value!=null&&b._value!=undefined){if(b._type=="L"){for(g in b._value){i+=b._name+"="+b._type+"."+g+" "+replacePercents(new String(b._value[g]))+"\n"}}else{if(b._type=="M"){for(g in b._value){i+=b._name+"="+b._type+'."'+g+'" '+replacePercents(new String(b._value[g]))+"\n"}i+=b._name+"="+b._type+" "+replacePercents(new String(b._value))+"\n"}else{i+=b._name+"="+b._type+" "+replacePercents(new String(b._value))+"\n"}}}}i+="}\n"}return i}function replacePercents(a){if(a){return new String(a).replace(/%/g,"%%").replace(/\n/g,"%n")}else{return""}};