/***************
** 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',
'
');
else
changeById('miniMESSAGING',
'
');
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