/*************** ** Variables ** ***************/ var cMessage = new aprsMESSAGE(); blinkTimer["messaging"] = Array("Mini:Messaging:Image", 0, true); /** * toggleMESSAGING * * Toggle tools functionality. * */ function toggleMESSAGING() { if (!cMessage.isON()) { changeById('toolStatusOverlayMessage', 'Messaging Mode'); showWindow('messagingOverlay'); showControl('controlMESSAGING', 'on'); windowControl('messagingOverlay'); cMessage.ON(); Drag.init(document.getElementById("messagingHandle"), document.getElementById("messagingOverlay"), null, null, null, null, true); if (blinkTimer["messaging"][1] > 0) { clearTimeout(blinkTimer["messaging"][1]); blinkTimer["messaging"][1] = 0; } // if changeById('miniMESSAGING', ''); } // if else { if (cMessage.isPAUSE()) changeById('miniMESSAGING', 'APRS Messaging is Paused'); else changeById('miniMESSAGING', 'APRS Messaging is Active'); hideWindow('messagingOverlay'); showControl('controlMESSAGING', 'off'); cMessage.OFF(); } // else return; } // toggleMESSAGE /** * toggleMSGPAUSE * * Toggle tools functionality. * */ function toggleMSGPAUSE() { if (cMessage.Pause()) showControl('controlMSGPAUSE', 'on'); else showControl('controlMSGPAUSE', 'off'); return; } // toggleMSGPAUSE function aprsMESSAGE() { this.on = false; this.loading = 0; this.pause = false; this.running = false; } // aprsMESSAGE::Constructor aprsMESSAGE.prototype.ON = function() { if (this.on) return; if (!this.running) this.Update(); this.running = true; this.on = true; } // aprsOBJECT::ON aprsMESSAGE.prototype.Pause = function() { if (this.pause) { this.pause = false; this.Refresh(); } // if else this.pause = true; return this.pause; } // aprsOBJECT::ON aprsMESSAGE.prototype.isPAUSE = function() { return this.pause; } // aprsMESSAGE::isPAUSE aprsMESSAGE.prototype.isON = function() { return this.on; } // aprsMESSAGE::isON aprsMESSAGE.prototype.OFF = function() { if (!this.on) return false; this.on = false; } // aprsMESSAGE::OFF /** * updateMESSAGING * * Update the currently displayed map. * */ aprsMESSAGE.prototype.Update = function(){ // Load any new stations this.Refresh(); // set the timer window.setTimeout('cMessage.Update()', 30000); } // aprsMESSAGE::Update /** * aprsMESSAGE::Click * * Load's a help article into the help window. * */ aprsMESSAGE.prototype.Click = function() { this.Create(); } // aprsMESSAGE::Click /** * aprsMESSAGE::Create * * Load's a help article into the help window. * */ aprsMESSAGE.prototype.Create = function() { var request = createXMLHttpRequest(); var me = this; if (!loggedIn) { changeById('aprsMESSAGE:Error', 'You must be logged in to use this feature.'); return; } // if // reset error fields changeById('aprsMESSAGE:Error', ''); /** * Default Variables * * Span through the possible field values * and set our variable list accordingly. * */ var ids = { "t": "aprsMESSAGE:Form:Target", "m": "aprsMESSAGE:Form:Message" } var dfts = { "t": "", "m": "" } var var_list = createURI(document, false, ids, dfts); var queryString = "/ajax/messaging/create.php?&h=" + seed + var_list; disableField('aprsMESSAGE:Form:Submit'); request.open("GET", queryString, true); request.onreadystatechange = function() { if (request.readyState == 4) { var xmlDoc = request.responseXML; var retData = new Array(); xmlArray("/openaprs/reply", xmlDoc, retData); for (i=0; i < retData.length; i++) { if (retData[i]["done"] == "yes") changeById('aprsMESSAGE:Error', retData[i]["response"]); else { if (retData[i]["field"] != 'aprsOBJECT:Error') changeById('aprsMESSAGE:Error', 'There was an error processing your request.'); changeById(retData[i]["field"], retData[i]["response"]); } // else } // for ClearField('aprsMESSAGE:Form:Message'); enableField('aprsMESSAGE:Form:Submit'); me.Refresh(); } // if } // function() request.send(null); } // aprsMESSAGE::Create /** * aprsMESSAGE::Refresh * * Redraws the current list of stations. * */ aprsMESSAGE.prototype.Refresh = function() { var request = GXmlHttp.create(); var t = document.getElementById("aprsMESSAGE:Form:Timestamp"); var l = 30; var now = new Date(); var me = this; if (t == null) return; // reset error messages //changeById('aprsMESSAGE:Error', ''); if (!loggedIn) { changeById('aprsMESSAGE:Error', 'You must be logged in to use this feature.'); return; } // if // pause check must be before loading or it will never // unpause. if (this.pause) { changeById('messagingSTATUS', 'Paused'); return; } // if if (this.loading) return; else this.loading = now.getTime(); // set timezone information var tz = escape(readCookie('myTimezone')); if (tz.length < 1) tz = "America/Los_Angeles"; if (l > 1000) l = 100; var queryString = "/ajax/messaging/view.php?h=" + seed + "&t=" + t.value + "&l=" + l + "&tz=" + tz; changeById('messagingSTATUS', 'Updating'); // ### PROFILING: START var start_date = new Date(); request.open("GET", queryString, true); request.onreadystatechange = function() { if (request.readyState == 4) { var xmlDoc = request.responseXML; var call = ""; var retData = new Array(); xmlArray("/openaprs/messages/packet", xmlDoc, retData); for (i=0; i < retData.length; i++) { var chatArray = []; if (retData[i]["action"] == "TO") { call = retData[i]["source"]; call = retData[i]["link"]; myClass = "from"; } // if else { call = retData[i]["addressee"]; call = retData[i]["link"]; myClass = "to"; } // else var aCell = new cellStruct; aCell.text = "" + call + ":"; aCell.css_class = myClass; chatArray.push(aCell); var aCell = new cellStruct; aCell.css_class = myClass; aCell.text = retData[i]["message"]; chatArray.push(aCell); addRow2('messagingTable', chatArray.reverse()); var chatArray = []; var aCell = new cellStruct; aCell.text = "(sent: " + retData[i]["date"] + ")"; aCell.colspan = 2; chatArray.push(aCell); addRow2('messagingTable', chatArray.reverse()); } // for var numMessages = retData.length; maxScroll('messagingContainer'); limitRows('messagingTable', 107); /** * Update the status window. * */ var retData = new Array(); xmlArray("/openaprs/reply", xmlDoc, retData); for (i=0; i < retData.length; i++) { // Change chat menu bottom background color. //if (retData[i]["sequence"] > document.form_chat.chat_sequence.value && blinkTimerId == 0) if (numMessages > 0) { changeTopMESSAGE('Unread APRS Messages'); if (!me.isON()) blinkIMG("messaging", 800, "/images/mini/on/messaging.png", "/images/mini/blink/blank.png"); } // if if (retData[i]["timestamp"] != undefined) changeFieldById('aprsMESSAGE:Form:Timestamp', retData[i]["timestamp"]); } // for // ### PROFILING: END var end_date = new Date(); var diff = parseFloat((end_date.getTime()/1000) - (start_date.getTime()/1000)); logById('logContainer', 'logTable', 'aprsMESSAGE: UPDATED (xml:'+diff.toRound(3)+' seconds)'); changeById("messagingSTATS", "Results " + numMessages +" messages (" + diff.toRound(3) +" secs)"); changeById('messagingSTATUS', 'Idle'); me.loading = 0; } // if } // function() request.send(null); } // aprsMESSAGE::Refresh