var map; var object_list; var move_refresh = 0; var geocoder = null; var gmarkers; var glabels; var loading = new Object(); // initialize variables loading['chat'] = 0; loading['server'] = 0; loading['positions'] = 0; loading['locate'] = 0; /** * Global Variables * */ var gOpenSATS = new OpenSATS(); function OpenSATS() { this.runcount = 0; this.satelliteMap = new Map(); this.home = undefined; this.paths = new Array(); this.firstload = true; this.names = new Map(); // Initialize tick timer. //var me = this; //me.onTimer(); } // OpenSATS /** * OpenSATS::onTimer */ OpenSATS.prototype.onTimer = function() { this.runcount++; var d = new Date(); changeById('clock', d.toFormattedUTCString()); // Load any new stations if ((this.runcount % 10) == 0 || this.runcount == 1) this.getSatellitesFromServer(map); if ((this.runcount % 120) == 0) this.getPathsFromServer(map); // Update all satellite positions var keys = this.satelliteMap.getKeys(); for(var i=0; i < keys.length; i++) { var s = this.satelliteMap.get(keys[i]); s.incrementPosition(); if (this.home != undefined) { s.plotCompassLine(this.home.getLatLng()); s.changeTrackingLabel(this.home.getLatLng()); } // if else s.removeCompassLine(); } // for // set the timer window.setTimeout('gOpenSATS.onTimer()', 1000); } // OpenSATS::onTimer /** * OpenSATS::Control * * Select all text on click. * */ OpenSATS.prototype.Control = function(id, doACTION) { var myImg = document.getElementById(id); var path = '/images/opensats/c/'; if (myImg == null) return; var menus = { "cOPENSATS": new Array("opensats.png", "OpenSATS", "cOPENAPRS:Overlay"), "cEDIT": new Array("edit.png", "Edit", "cEDIT:Overlay"), "cTOOLS": new Array("tools.png", "View", "cTOOLS:Overlay"), "cVIEW": new Array("view.png", "View", "cVIEW:Overlay"), "cHELP": new Array("help.png", "Help", "cHELP:Overlay"), "cDONATE": new Array("donate.png", "Donate") }; var tooltips = { "controlCHAT": '
Web Chat

Chat with others users currently on the website.
' }; for(var m in menus) { if (m == id) { if (doACTION == 'over') { var mySub = "over/"; if (tooltips[m] != undefined) Tip(tooltips[m], BALLOON, true, ABOVE, true, OFFSETX, 0); if (menus[m][2] != undefined) showWindow(menus[m][2]); } // if else if (doACTION == 'on') { var mySub = "on/"; myImg.src = path + mySub + menus[m][0]; } // if else if (doACTION == 'off') { var mySub = "off/"; myImg.src = path + mySub + menus[m][0]; UnTip(); if (menus[m][2] != undefined) hideWindow(menus[m][2]); } // if else { var mySub = "off/"; UnTip(); } // else myImg.src = path + mySub + menus[m][0]; } // if } // for return void(0); } // OpenSATS::Control() /* ---------------------------------------------------------------------------- * Name: OpenSATS::onLoad * Loads google Maps settings for OpenSATS interface. * Parameters: n/a * Returns: n/a */ OpenSATS.prototype.onLoad = function() { document.body.style.overflow = 'hidden'; // Center the map on Palo Alto map = new GMap2(document.getElementById("mapDiv")); //map.addControl(new GSmallMapControl()); //map.addControl(new GMapTypeControl()); //map.disableDragging(); map.setCenter(new GLatLng(38.256973, -122.311685), 2); var topLeft = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(10,100)); var bottomRight = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(0,0)); map.addMapType(G_SATELLITE_3D_MAP); map.addMapType(G_PHYSICAL_MAP); //map.setMapType(G_HYBRID_MAP); map.addControl(new GLargeMapControl(), topLeft); map.addControl(new GMapTypeControl(), bottomRight); map.disableScrollWheelZoom(); geocoder = new GClientGeocoder(); var center = map.getCenter(); navUpdate('navOverlay2', center.y, center.x); object_list = new Array(); GEvent.addListener(map, "mousemove", function(point) { navUpdate('navOverlay2', point.lat(), point.lng()); }); //var daylight = new daylightMap.daylightLayer(); //daylight.addToMap(map); //daylight.addToMapType(G_SATELLITE_MAP); //daylight.addToMapType(G_HYBRID_MAP); // Pause the map when the info window is open. GEvent.addListener(map, "infowindowopen", function() { pause = document.getElementById("openaprs_form_pause"); if (pause == null) return; pause.checked = true; changeById('mapSTATUS', 'Paused'); changeById('topMESSAGE', 'Paused'); showControl('controlPAUSE', false); }); // Pause the map when the info window is open. //GEvent.addListener(map, "moveend", function() { // Turn off autocenter if user moves the map // manually. // if (isChecked('OpenSATS:Form:Autocenter')) // unCheck('OpenSATS:Form:Autocenter'); //}); // Unpause the map when the infowindow is closed. GEvent.addListener(map, "infowindowclose", function() { pause = document.getElementById("openaprs_form_pause"); if (pause == null) return; changeById('mapSTATUS', 'Resuming'); changeById('topMESSAGE', 'Resuming'); pause.checked = false; showControl('controlPAUSE', false); }); this.getSatelliteNamesFromServer(); updateChat(); updateAd(); //toggleCONSOLE(); toggleSTATIONS(); var loadTips = readCookie("myTips"); if (loadTips == "yes" || loadTips == "") { loadHelp('random:tips'); windowControl('helpOverlay'); } // if // add logout functions onLogout.push(new Function("changeFieldById('aprsMESSAGE:Form:Timestamp', '0'); clearRows('messagingTable')")); onLogout.push(new Function("clearRows('viewTable');")); } // onLoadOpensats /** * getSatelliteNamesFromServer * * Redraws the current list of stations. * */ OpenSATS.prototype.getSatelliteNamesFromServer = function() { var request = createXMLHttpRequest(); var pause = document.getElementById("openaprs_form_pause"); var me = this; /** * Default Variables * * Span through the possible field values * and set our variable list accordingly. * */ var ids = { "find": "openaprs_form_find", "units": "openaprs_form_units", "geocoords": "openaprs_form_geocoords", "timezone": "openaprs_form_timezone" }; var dfts = { "find": "", "units": "imperial", "geocoords": "decimal", "timezone": "America/Los_angeles" }; var var_list = createURI(document, false, ids, dfts); changeById('mapSTATUS', 'Fetching Names'); changeById('topMESSAGE', 'Fetching Names'); changeById("locate_status", "fetching names"); var queryString = "/ajax/opensats/satellites/names.php?hash=" + seed + var_list; var start_date = new Date(); request.open("GET", queryString, true); request.onreadystatechange = function() { var len; if (request.readyState == 4) { var xmlDoc = request.responseXML; // Remove from requestMap. requestMap.remove('getSatelliteNamesFromServer'); var c = me.storeSatelliteNamesFromServer(request); var end_date = new Date(); var diff = parseFloat((end_date.getTime()/1000) - (start_date.getTime()/1000)); changeById("mapRESULTS", "Results " + c + " names (" + diff.toRound(3) + " seconds)"); log('Satellite List: Results ' + c + ' names (' + diff.toRound(3) + ' seconds)'); // We don't want to start our main timer // until AFTER we've loaded the satellite // names. me.onTimer(); } // if } // function() request.send(null); } // OpenSATS::getSatelliteNamesFromServer /** * getSatellitesFromServer * * Redraws the current list of stations. * */ OpenSATS.prototype.getSatellitesFromServer = function(map) { var request = createXMLHttpRequest(); var pause = document.getElementById("openaprs_form_pause"); var me = this; var sw = new Stopwatch(); var sw2 = new Stopwatch(); var sw3 = new Stopwatch(); if (requestMap.isKey('getSatellitesFromServer')) { // We already have a request in progress. var r = requestMap.get('getSatellitesFromServer'); if (r.time < (getUnixTime() - 10)) { r.request.abort(); requestMap.remove('getSatellitesFromServer'); log('Satellites: Connection timed out.'); changeById('mapSTATUS', 'Timed out'); } // if else { changeById('mapSTATUS', 'Please wait'); return false; } // else } // if if (pause != null && pause.checked == true) { changeById('locate_status', 'Paused'); changeById('mapSTATUS', 'Paused'); changeById('topMESSAGE', 'Paused'); return; } // if if (this.names.length < 1) var n = "25544,-1,-2"; else { var n = ""; var keys = this.names.getKeys(); for(var i=0; i < keys.length; i++) { if (this.names.get(keys[i])) { if (n.length > 0) n += ","; n += keys[i]; } // if } // for } // else /** * Default Variables * * Span through the possible field values * and set our variable list accordingly. * */ var ids = { "find": "openaprs_form_find", "units": "openaprs_form_units", "geocoords": "openaprs_form_geocoords", "timezone": "openaprs_form_timezone", "n": "none" }; var dfts = { "find": "", "units": "imperial", "geocoords": "decimal", "timezone": "America/Los_angeles", "n": n }; var var_list = createURI(document, false, ids, dfts); changeById('mapSTATUS', 'Updating'); changeById('topMESSAGE', 'Updating'); changeById("locate_status", "updating"); var queryString = "/ajax/opensats/satellites/positions.php?hash=" + seed + var_list; sw.Start(); sw2.Start(); var r = new requestObject(request); requestMap.add('getSatellitesFromServer', r); request.open("GET", queryString, true); request.onreadystatechange = function() { var len; if (request.readyState == 4) { var xmlDoc = request.responseXML; sw2.Stop(); // Remove from requestMap. requestMap.remove('getSatellitesFromServer'); sw3.Start(); var c = me.storeSatellitesFromServer(request); sw3.Stop(); changeById("mapRESULTS", "Results " + c + " satellites ("+sw.Time()+" seconds)"); log('Satellite: Results ' + c + ' satellites (T:'+sw.Time()+'/X:'+sw2.Time()+'/P:'+sw3.Time()+')'); // If this is the first time we've tried to get satellites // then try and get their paths as well. if (me.firstload) { me.getPathsFromServer(map); me.firstload = false; } // if } // if } // function() request.send(null); } // OpenSATS::getSatellitesFromServer /** * getPathsFromServer * * Redraws the current list of stations. * */ OpenSATS.prototype.getPathsFromServer = function(map) { var request = createXMLHttpRequest(); var me = this; var sw = new Stopwatch(); var sw2 = new Stopwatch(); var sw3 = new Stopwatch(); if (requestMap.isKey('getPathsFromServer')) { // We already have a request in progress. var r = requestMap.get('getPathsFromServer'); if (r.time < (getUnixTime() - 10)) { r.request.abort(); requestMap.remove('getPathsFromServer'); log('Satellite Paths: Connection timed out.'); changeById('mapSTATUS', 'Timed out'); } // if else { changeById('mapSTATUS', 'Please wait'); return false; } // else } // if /* if (pause != null && pause.checked == true) { changeById('locate_status', 'Paused'); changeById('mapSTATUS', 'Paused'); changeById('topMESSAGE', 'Paused'); return; } // if */ // Find all satellites that we're currently tracking. var keys = this.satelliteMap.getKeys(); var n = ""; for(var i=0; i < keys.length; i++) { var s = this.satelliteMap.get(keys[i]); if (s.isTracking == true) { if (keys.length > 0) n += ","; n += s.number; } // if } // for if (n.length == 0) { // clear the map markers and draw the new ones for(var i=0; i < this.paths.length; i++) map.removeOverlay(this.paths[i]); return; } // if /** * Default Variables * * Span through the possible field values * and set our variable list accordingly. * */ var ids = { "find": "openaprs_form_find", "units": "openaprs_form_units", "geocoords": "openaprs_form_geocoords", "timezone": "openaprs_form_timezone", "n": "blah" }; var dfts = { "find": "", "units": "imperial", "geocoords": "decimal", "timezone": "America/Los_angeles", "n": n }; var var_list = createURI(document, false, ids, dfts); changeById('mapSTATUS', 'Updating Paths'); changeById('topMESSAGE', 'Updating Paths'); changeById("locate_status", "updating Paths"); var queryString = "/ajax/opensats/satellites/paths.php?hash=" + seed + var_list; sw.Start(); sw2.Start(); var r = new requestObject(request); requestMap.add('getPathsFromServer', r); request.open("GET", queryString, true); request.onreadystatechange = function() { var len; if (request.readyState == 4) { var xmlDoc = request.responseXML; sw2.Stop(); // Remove from requestMap. requestMap.remove('getPathsFromServer'); sw3.Start(); var c = me.storePathsFromServer(request); sw3.Stop(); changeById("mapRESULTS", "Results " + c + " paths ("+sw.Time()+" seconds)"); log('Paths: Results ' + c + ' paths (T:'+sw.Time()+'/X:'+sw2.Time()+'/P:'+sw3.Time()+')'); } // if } // function() request.send(null); } // OpenSATS::getPathsFromServer OpenSATS.prototype.storeSatellitesFromServer = function(xmlDoc) { var new_object_list = []; var station_list = ""; var numSatellites = 0; var numbers = new Array(); var i; if (xmlDoc == null) return; var parseMe = xmlDoc.responseText.split('\n'); var wasHome = false; // Main large loop for(i=0; i < parseMe.length; i++) { // Skip broken lines or comments if (parseMe[i].length < 1 || parseMe[i].substr(0, 1) == "#") continue; var v = new Vars(); v.Parse(parseMe[i]); // BEGIN: PROCESS LOCATIONS if (v.getField("TY") == "L") { var longitude = parseFloat(v.getField("lo"), 6); var latitude = parseFloat(v.getField("la"), 6); if (this.home != undefined) { map.removeOverlay(this.home); this.home = undefined; } // if wasHome = true; // Draw the marker on the map only if it isn't in the station list var img = v.getField("img"); var marker = createStationAJAX(longitude, latitude, v.getField("nm"), "/", img, v.getField("inf")); var label = new ELabel(new GLatLng(latitude, longitude), v.getField("nm"), "labels", new GSize(-18, +60), 90); createLabel(marker, label); label.hide(); this.home = marker; new_object_list.push(marker); //new_object_list.push(label); } // if // END: PROCESS LOCATIONS // BEGIN: PROCESS SATELLITES if (v.getField("TY") == "PA") { var marker = this.addSatellite(v, new_object_list); this.addSatellitePositions(v, new_object_list); //this.addSatellitePath(v, new_object_list); //this.addSatelliteGroundCircle(v, new_object_list); //this.addSatelliteCompassLine(marker, v, new_object_list); numbers.push(v.getField("num")); numSatellites++; } // if // END: PROCESS SATELLITES } // for changeById("locate_status", "" + numSatellites + " stations displayed"); changeById("mapSTATUS", "Idle"); changeById('topMESSAGE', 'Idle'); //if (numSatellites == 1) // changeById("googleEarthLink", '[Google Earth: ' + retData[0]["name"].toUpperCase() + ']'); //else // changeById("googleEarthLink", '[Google Earth: Satellites]'); // clear the map markers and draw the new ones //map.clearOverlays(); // Reset home marker. if (!wasHome && this.home != undefined) { map.removeOverlay(this.home); this.home = undefined; } // if for(var k = 0; k < new_object_list.length; k++) map.addOverlay(new_object_list[k]); object_list = new_object_list; // Now we need to remove any satellites that weren't found in // the most recent update. This seems like it is inefficient, // perhaps there is a beter way? var keys = this.satelliteMap.getKeys(); for(var i=0; i < keys.length; i++) { var needToKeep = false; for(var j=0; j < numbers.length && !needToKeep; j++) { if (keys[i] == numbers[j]) needToKeep = true; } // for if (!needToKeep) { this.removeSatellite(keys[i]); log('Removed satellite number ' + keys[i]); } // if } // for return numSatellites; } // OpenSATS::storeSatellitesFromServer OpenSATS.prototype.storePathsFromServer = function(xmlDoc) { var new_object_list = []; var station_list = "
"; var numSatellites = 0; var i; if (xmlDoc == null) return; var parseMe = xmlDoc.responseText.split('\n'); var wasHome = false; // Main large loop for(i=0; i < parseMe.length; i++) { // Skip broken lines or comments if (parseMe[i].length < 1 || parseMe[i].substr(0, 1) == "#") continue; var v = new Vars(); v.Parse(parseMe[i]); // BEGIN: PROCESS SATELLITE PATHS if (v.getField("TY") == "PA") { //var marker = this.addSatellite(v, new_object_list); //this.addSatellitePositions(v, new_object_list); this.addSatellitePath(v, new_object_list); //this.addSatelliteGroundCircle(v, new_object_list); //this.addSatelliteCompassLine(marker, v, new_object_list); numSatellites++; } // if // END: PROCESS SATELLITES } // for //changeById("locate_status", "" + numSatellites + " paths displayed"); changeById("mapSTATUS", "Idle"); changeById('topMESSAGE', 'Idle'); // clear the map markers and draw the new ones for(var i=0; i < this.paths.length; i++) map.removeOverlay(this.paths[i]); for(var k = 0; k < new_object_list.length; k++) map.addOverlay(new_object_list[k]); this.paths = new_object_list; return numSatellites; } // OpenSATS::storePathsFromServer OpenSATS.prototype.storeSatelliteNamesFromServer = function(xmlDoc) { var numRows = 0; var i; if (xmlDoc == null) return; clearRows('satelliteNamesTable'); var parseMe = xmlDoc.responseText.split('\n'); // Main large loop for(i=0; i < parseMe.length; i++) { // Skip broken lines or comments if (parseMe[i].length < 1 || parseMe[i].substr(0, 1) == "#") continue; var v = new Vars(); v.Parse(parseMe[i]); // BEGIN: PROCESS SATELLITE PATHS if (v.getField("TY") == "NM") { this.addSatelliteName(v); numRows++; } // if // END: PROCESS SATELLITES } // for //changeById("locate_status", "" + numSatellites + " paths displayed"); changeById("mapSTATUS", "Idle"); changeById('topMESSAGE', 'Idle'); return numRows; } // OpenSATS::storeSatelliteNamesFromServer /* ---------------------------------------------------------------------------- * Name: OpenSATS::addSatellite * Adds a new satellite to the map. * Parameters: * v: Special Vars's type record with satellite information. * o: Object list to add satellite to. * Returns: n/a */ OpenSATS.prototype.addSatellite = function(v, o) { var latitude = parseFloat(v.getField("la"), 6); var longitude = parseFloat(v.getField("lo"), 6); var k = v.getField("num"); var ct = parseInt(v.getField("ct")); if (this.satelliteMap.isKey(k)) { // Already in the satellite objectMap. // Re just want to sync the time index. var s = this.satelliteMap.get(k); s.syncIndex(ct, v.getField("img")); return undefined; } // if // Draw the marker on the map only if it isn't in the station list var img = "http://www.opensats.net/images/icons/satellite/small/" + v.getField("img"); var marker = this.createSatelliteMarker(latitude, longitude, img, v.getField("num")); //var label = new ELabel(new GLatLng(latitude, longitude), v.getField("nm"), "labels", new GSize(-18, +60), 90); //createLabel(marker, label); //label.hide(); // Add this satellite to the map. var sat = new Satellite(k, ct, marker, v.getField("nm"), v.getField("img")); // Only enable the compass line or ground circle if we're in tracking mode // for this satellite. if (v.isName("TRK") && v.getField("TRK") == "Y") { // sat.enableCompassLine(); // sat.enableGroundCircle(); } // if this.satelliteMap.add(k, sat); //if (k == "25544") { // sat.enableTracking(); // this.boldSatelliteName(k); //} // if // Set star next to satellite in the satellite list. this.linkSatelliteName(k); o.push(marker); //o.push(label); return marker; } // OpenSATS::addSatellite /* ---------------------------------------------------------------------------- * Name: OpenSATS::removeSatellite * Adds a new satellite to the map. * Parameters: * k : Satellite number to remove. * Returns: n/a */ OpenSATS.prototype.removeSatellite = function(k) { if (!this.satelliteMap.isKey(k)) return false; // Set star next to satellite in the satellite list. // We shouldn't unstar the satellite since it may // be a temporary outage. //this.unstarSatelliteName(k); this.unboldSatelliteName(k); this.unlinkSatelliteName(k); var s = this.satelliteMap.get(k); var refreshPaths = s.isTracking; s.remove(); this.satelliteMap.remove(k); if (refreshPaths) this.getPathsFromServer(map); return true; } // OpenSATS::removeSatellite /* ---------------------------------------------------------------------------- * Name: OpenSATS::addSatellitePositions * Adds a new set of future positions to satellite storage. * Parameters: * v: Special Vars's type record with satellite information. * o: Object list to add satellite to. * Returns: n/a */ OpenSATS.prototype.addSatellitePositions = function(v, o) { var num_rows = 0; if (!v.isName("PA") || !v.isName("NUM")) return 0; // Get the satellite number (record key). var k = v.getField("NUM"); if (!this.satelliteMap.isKey(k)) // Satellite wasn't stored in database. return 0; // Get satellite record. var s = this.satelliteMap.get(k); var parseMe = v.getField("PA").split('\n'); for (var i=0; i < parseMe.length; i++) { var v2 = new Vars(); v2.Parse(parseMe[i]); if (!v2.isName("ct")) continue; var t = parseInt(v2.getField("ct")); var lat = parseFloat(v2.getField("la"), 6); var lng = parseFloat(v2.getField("lo"), 6); var point = new GLatLng(lat, lng); s.addPosition(t, point, v2); num_rows++; } // for return num_rows; } // OpenSATS::addSatellitePositions /* ---------------------------------------------------------------------------- * Name: OpenSATS::addSatellitePath * Adds a new satellite to the map. * Parameters: * v: Special Vars's type record with satellite information. * o: Object list to add satellite to. * Returns: n/a */ OpenSATS.prototype.addSatellitePath = function(v, o) { if (!v.isName("PA")) return; var parseMe = v.getField("PA").split('\n'); var points = new Array(); for (var i=0; i < parseMe.length; i++) { var v2 = new Vars(); v2.Parse(parseMe[i]); // Skip bad lines if (!v2.isName("la")) continue; var longitude = parseFloat(v2.getField("lo"), 6); var latitude = parseFloat(v2.getField("la"), 6); var currColor = seqColor(i, parseMe.length); if (currColor != lastColor && points.length > 1) { o.push(new GPolyline(points, lastColor, 2, .5)); points = new Array(); points.push(lpoint); } // if var lpoint = new GLatLng(latitude, longitude); points.push(lpoint); var lastColor = currColor; } // for if (points.length > 1) o.push(new GPolyline(points, lastColor, 2, .5)); return; } // OpenSATS::addSatellitePath OpenSATS.prototype.addCompassListener = function(marker, label, polyline) { GEvent.addListener(marker, "mouseover", function() { label.show(); polyline.show(); }); GEvent.addListener(marker, "mouseout", function() { label.hide(); polyline.hide(); }); } // OpenSATS::addCompassListener /* ---------------------------------------------------------------------------- * Name: OpenSATS::createSatelliteMarker * Change satellite tracking to num specified. * Parameters: * lat : Latitude to create marker at. * lng : Longitude to create marker at. * img : Image to use for marker. * num : Satellite number. * Returns: n/a */ OpenSATS.prototype.createSatelliteMarker = function(lat, lng, img, num) { var icon; var point; var marker; var me = this; // Create our "tiny" marker icon var point = new GLatLng(lat, lng); var icon = new GIcon(); icon.image = img; icon.shadow = "http://www.openaprs.net/images/icons/shadow.png"; icon.iconSize = new GSize(22, 22); icon.shadowSize = new GSize(22, 20); icon.iconAnchor = new GPoint(11, 11); icon.infoWindowAnchor = new GPoint(15, 13); var marker = new GMarker(point, icon); GEvent.addListener(marker, "click", function() { changeById('mapSTATUS', 'Tracking ' + num); me.changeSatelliteTracking(num); }); return marker; } // createSatelliteAJAX /* ---------------------------------------------------------------------------- * Name: OpenSATS::changeSatelliteTracking * Change satellite tracking to num specified. * Parameters: * num : Satellite number to start tracking. * Returns: n/a */ OpenSATS.prototype.changeSatelliteTracking = function(num) { // Update all satellite positions var keys = this.satelliteMap.getKeys(); var wasFound = false; changeById('OpenSATS:Names:Error', ''); for(var i=0; i < keys.length; i++) { s = this.satelliteMap.get(keys[i]); if (keys[i] == num) { s.enableTracking(); this.boldSatelliteName(keys[i]); wasFound = true; map.setCenter(s.marker.getLatLng()); } // if else { s.disableTracking(); this.unboldSatelliteName(keys[i]); } // else } // for if (!wasFound) changeById('OpenSATS:Names:Error', 'Not being displayed.'); this.getPathsFromServer(map); return; } // OpenSATS::changeSatelliteTracking /* ---------------------------------------------------------------------------- * Name: OpenSATS::addSatelliteName * Adds a new satellite name to stored list. * Parameters: * v: Special Vars's type record with satellite information. * Returns: n/a */ OpenSATS.prototype.addSatelliteName = function(v) { var n = v.getField("nm"); var k = v.getField("num"); var cellArray = []; // Only add once. if (this.names.isKey(k)) return; var aCell = new cellStruct; aCell.text = ''; cellArray.push(aCell); var aCell = new cellStruct; aCell.text = ''+n+''; cellArray.push(aCell); addRow2('stationsTable', cellArray.reverse()); this.names.add(k, false); if (k == "25544" || k == "-1" || k == "-2") this.toggleSatelliteName(k); return; } // OpenSATS::addSatelliteName /* ---------------------------------------------------------------------------- * Name: OpenSATS::toggleSatelliteName * Adds a new satellite name to stored list. * Parameters: * n : Satellite number. * Returns: n/a */ OpenSATS.prototype.toggleSatelliteName = function(n) { changeById('OpenSATS:Names:Error', ''); if (!this.names.isKey(n)) return false; var nm = this.names.get(n); if (nm == false) { if (this.numSatelliteNamesOn() > 5) { changeById('OpenSATS:Names:Error', 'Too many to track.'); return false; } // if this.names.remove(n); this.names.add(n, true); this.starSatelliteName(n); } // if else { this.names.remove(n); this.names.add(n, false); this.unstarSatelliteName(n); } // else return true; } // OpenSATS::toggleSatelliteName /* ---------------------------------------------------------------------------- * Name: OpenSATS::numSatelliteNamesOn * Adds a new satellite name to stored list. * Parameters: * n : Satellite number. * Returns: n/a */ OpenSATS.prototype.numSatelliteNamesOn = function() { var keys = this.names.getKeys(); var numOn = 0; for(var i=0; i < keys.length; i++) { if (this.names.get(keys[i]) == true) numOn++; } // for return numOn; } // OpenSATS::numSatelliteNamesOn /* ---------------------------------------------------------------------------- * Name: OpenSATS::boldSatelliteName * Adds a new satellite name to stored list. * Parameters: * n : Satellite number. * Returns: n/a */ OpenSATS.prototype.boldSatelliteName = function(n) { if (!this.satelliteMap.isKey(n)) return false; var s = this.satelliteMap.get(n); var href = '' + s.name + ''; changeById('OpenSATS:Href:'+n, href); return true; } // OpenSATS::boldSatelliteName /* ---------------------------------------------------------------------------- * Name: OpenSATS::unboldSatelliteName * Adds a new satellite name to stored list. * Parameters: * n : Satellite number. * Returns: n/a */ OpenSATS.prototype.unboldSatelliteName = function(n) { if (!this.satelliteMap.isKey(n)) return false; var s = this.satelliteMap.get(n); var href = s.name; changeById('OpenSATS:Href:'+n, href); return true; } // OpenSATS::unboldSatelliteName /* ---------------------------------------------------------------------------- * Name: OpenSATS::linkSatelliteName * Adds a new satellite name to stored list. * Parameters: * n : Satellite number. * Returns: n/a */ OpenSATS.prototype.linkSatelliteName = function(n) { if (!this.names.isKey(n)) return false; showWindow('OpenSATS:Names:Link:'+n); hideWindow('OpenSATS:Names:Nolink:'+n); return true; } // OpenSATS::linkSatelliteName /* ---------------------------------------------------------------------------- * Name: OpenSATS::unlinkSatelliteName * Adds a new satellite name to stored list. * Parameters: * n : Satellite number. * Returns: n/a */ OpenSATS.prototype.unlinkSatelliteName = function(n) { if (!this.names.isKey(n)) return false; hideWindow('OpenSATS:Names:Link:'+n); showWindow('OpenSATS:Names:Nolink:'+n); return true; } // OpenSATS::unlinkSatelliteName /* ---------------------------------------------------------------------------- * Name: OpenSATS::starSatelliteName * Adds a new satellite name to stored list. * Parameters: * n : Satellite number. * Returns: n/a */ OpenSATS.prototype.starSatelliteName = function(n) { if (!this.names.isKey(n)) return false; changeImageById('OpenSATS:Image:'+n, '/images/stars/yellow.png'); changeById('OpenSATS:Names:Number', this.numSatelliteNamesOn()); return true; } // OpenSATS::starSatelliteName /* ---------------------------------------------------------------------------- * Name: OpenSATS::unstarSatelliteName * Adds a new satellite name to stored list. * Parameters: * n : Satellite number. * Returns: n/a */ OpenSATS.prototype.unstarSatelliteName = function(n) { if (!this.names.isKey(n)) return false; changeImageById('OpenSATS:Image:'+n, '/images/windows/offline.png'); changeById('OpenSATS:Names:Number', this.numSatelliteNamesOn()); return true; } // OpenSATS::unstarSatelliteName