/*************** ** Variables ** ***************/ var cObject = new aprsOBJECT(); var objectMarkers = new Array(); var objectSymbol = new Object(); var numObjects = 0; var killObject = false; /** * aprsOBJECT::Toggle * * Toggle tools functionality. * */ function toggleOBJECT() { if (!cObject.isON()) { if (killObject) toggleKILL(); if (cRuler.isON()) toggleRULER(); if (!isHidden('viewOverlay')) toggleVIEW(); doPause('openaprs_form_pause'); changeById('toolStatusOverlayMessage', 'Click on the map to create an object'); showWindow('toolsOverlay'); showWindow('toolStatusOverlay'); showControl('controlCREATE', 'on'); cObject.ON(); map.disableDoubleClickZoom(); } // if else { showControl('controlCREATE', 'off'); createObject = false; if (!cRuler.isON()) unPause('openaprs_form_pause'); cObject.OFF(); map.enableDoubleClickZoom(); } // else return; } // toggleOBJECT /** * aprsOBJECT::Toggle * * Toggle tools functionality. * */ function toggleKILL() { if (!killObject) { if (cObject.isON()) toggleOBJECT(); if (cRuler.isON()) toggleRULER(); showWindow('killObjectOverlay'); showControl('controlKILL', 'on'); killObject = true; } // if else { showControl('controlKILL', 'off'); hideWindow('killObjectOverlay'); killObject = false; } // else return; } // toggleOBJECT /** * clearOBJECTS * * Clears all created objects. * */ function clearOBJECTS() { cObject.Clear(); return; } // clearOBJECTS function aprsOBJECT() { this.markers = new Array(); this.handles = new Array(); this.on = false; } // aprsOBJECT::Constructor aprsOBJECT.prototype.ON = function() { if (this.on) return; this.on = true; var handle; handle = GEvent.addListener(map, 'click', function(overlay, pnt) { if (!pnt) return; var baseIcon = new GIcon(); baseIcon.iconSize = new GSize(32,32); baseIcon.iconAnchor = new GPoint(16,16); baseIcon.infoWindowAnchor = new GPoint(10,0); baseIcon.shadow = "http://www.openaprs.net/images/icons/shadow.png"; var objectIcon = (new GIcon(baseIcon, "/images/icons/object.png")); var marker = new GMarker(pnt, { icon:objectIcon, draggable: true }); var numObject = numObjects; GEvent.addListener(marker, "drag", function() { pnt = marker.getPoint(); changeById('toolStatusOverlayMessage', 'DRAG OBJECT: ' +pnt.lat().toFixed(6)+','+pnt.lng().toFixed(6)); marker.closeInfoWindow(); }); GEvent.addListener(marker, "click", function() { //marker.openInfoWindowHtml(this.html); doIcons(marker, numObject); changeById('toolStatusOverlayMessage', 'OBJECT: CLICK ON A SYMBOL TO CONTINUE'); }); GEvent.addListener(marker, "dblclick", function() { var new_markers = new Array(); for(m in objectMarkers) { if (objectMarkers[m] == marker) continue; new_markers.push(objectMarkers[m]); } // for numObjects--; map.removeOverlay(marker); changeById('toolStatusOverlayMessage', 'OBJECT: CLEARED'); }); numObjects++; objectMarkers.push(marker) map.addOverlay(marker); changeById('toolStatusOverlayMessage', 'OBJECT: CLICK ON AN OBJECT TO SET SYMBOL AND SEND'); }); // function this.handles.push(handle); } // aprsOBJECT::ON aprsOBJECT.prototype.isON = function() { return this.on; } // aprsOBJECT::isON aprsOBJECT.prototype.Clear = function() { for(m in objectMarkers) { map.removeOverlay(objectMarkers[m]); } // for numObjects = 0; objectMarkers = new Array() return; } // aprsOBJECT::Clear aprsOBJECT.prototype.OFF = function() { if (!this.on) return false; for(h in this.handles) GEvent.removeListener(this.handles[h]); this.handles = new Array(); this.on = false; return true; } // aprsOBJECT::OFF /** * doIcons * * Load's a help article into the help window. * */ aprsOBJECT.prototype.setIcon = function(id, icon, icon_id) { var baseIcon = new GIcon(); baseIcon.iconSize = new GSize(32,32); baseIcon.iconAnchor = new GPoint(16,16); baseIcon.infoWindowAnchor = new GPoint(10,0); baseIcon.shadow = "http://www.openaprs.net/images/icons/shadow.png"; var objectIcon = (new GIcon(baseIcon, icon)); objectMarkers[id].setImage(icon); objectSymbol[id] = icon_id; hideWindow('objectICONS'+id); showWindow('objectFORM'+id); changeById('toolStatusOverlayMessage', 'OBJECT: FILL OUT FORM AND CLICK CREATE OBJECT'); return; } // aprsOBJECT::setIcon /** * doIcons * * Load's a help article into the help window. * */ function doIcons(marker, numObject) { var request = createXMLHttpRequest(); var html = "
Loading Icons

"; marker.openInfoWindowHtml(html); var queryString = "/ajax/object/icons.php?q="+numObject; 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++) { var html = "
"+retData[i]["message"]+"
"; GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); }); changeById('markerMessage'+numObject, retData[i]["message"]); } // for } // if } // function() request.send(null); } // doIcons /** * doCreateObject * * Load's a help article into the help window. * */ function doCreateObject(id) { var request = createXMLHttpRequest(); if (!loggedIn) { changeById('aprsOBJECT:Error:'+id, 'You must be logged in to use this feature.'); return; } // if // reset error fields changeById('aprsOBJECT:Error:'+id, ''); changeById('aprsOBJECT:Error:Name:'+id, ''); changeById('aprsOBJECT:Error:Destination:'+id, ''); changeById('aprsOBJECT:Error:ASC:'+id, ''); changeById('aprsOBJECT:Error:Beacon:'+id, ''); changeById('aprsOBJECT:Error:Life:'+id, ''); changeById('aprsOBJECT:Error:Status:'+id, ''); /** * Default Variables * * Span through the possible field values * and set our variable list accordingly. * */ var ids = { "n": "aprsOBJECT:Form:Name:"+id, "d": "aprsOBJECT:Form:Destination:"+id, "c": "aprsOBJECT:Form:Course:"+id, "spd": "aprsOBJECT:Form:Speed:"+id, "a": "aprsOBJECT:Form:Altitude:"+id, "b": "aprsOBJECT:Form:Beacon:"+id, "o": "aprsOBJECT:Form:Overlay:"+id, "bl": "aprsOBJECT:Form:Life:"+id, "s": "aprsOBJECT:Form:Status:"+id } var dfts = { "n": "", "d": "APRS", "c": "0", "spd": "0", "a": "0", "b": "0", "o": "", "bl": "0", "s": "" } pnt = objectMarkers[id].getPoint(); var var_list = createURI(document, false, ids, dfts); var queryString = "/ajax/object/do.php?m="+id+"&h="+seed+"&lat="+pnt.lat()+"&lon="+pnt.lng()+"&sym="+objectSymbol[id]+var_list; disableField('aprsOBJECT:Form:Submit:'+id); 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('objectFORM'+id, retData[i]["response"]); else { if (retData[i]["field"] != 'aprsOBJECT:Error:'+id) changeById('aprsOBJECT:Error:'+id, 'There was an error processing your request.'); changeById(retData[i]["field"], retData[i]["response"]); } // else } // for enableField('aprsOBJECT:Form:Submit:'+id); } // if } // function() request.send(null); } // doCreateObject /** * doKillObject * * Load's a help article into the help window. * */ function doKillObject(id) { var request = createXMLHttpRequest(); if (!loggedIn) { changeById('aprsOBJECT:Error', 'You must be logged in to use this feature.'); return; } // if // reset error fields changeById('aprsOBJECT:Error', ''); changeById('aprsOBJECT:Error:Name', ''); /** * Default Variables * * Span through the possible field values * and set our variable list accordingly. * */ var ids = { "n": "aprsOBJECT:Form:Name" } var dfts = { "n": "" } var var_list = createURI(document, false, ids, dfts); var queryString = "/ajax/object/kill.php?h="+seed+var_list; disableField('aprsOBJECT: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('killObjectContainer', retData[i]["response"]); else { if (retData[i]["field"] != 'aprsOBJECT:Error') changeById('aprsOBJECT:Error', 'There was an error processing your request.'); changeById(retData[i]["field"], retData[i]["response"]); } // else } // for enableField('aprsOBJECT:Form:Submit'); } // if } // function() request.send(null); } // doKillObject