/****************************************************************************
*
*  data_orbits.js  - SPDF script for data orbits web page
*
*  Version 1.0 - March 4, 2005
*
*     This Javascript file includes functions and data arrays to show
*  users (1) for a given SPDF service, which sources' data it contains, or
*  or (2) for a given source (spacecraft), which services have its data.
*  To do this, check marks are made visible or invisible in front of the
*  appropriate services or sources.
*
*  *** IMPORTANT ***
*
*  Additions or changes to the data collection information should be made in 
*  Function matchSourceServices
*
*  James Gass, Raytheon ITSS
*  January, 2004
*
****************************************************************************/


// Global object for toggle function
var toggler = new Object(); 
var oldset = null;
var id = "";
/**************************************************************************/	
// Toggles between class names for selected object

function toggle(id, set) 
{ 
    var old = toggler[oldset] 
    if(old) {
        old.className = old.className.replace(" selected",""); 
       }
    var elm = document.getElementById(id);
    elm.className = elm.className + " selected"; 
    toggler[set] = elm; 
    oldset = set;
} 

/**************************************************************************/	
//  A simple 3rd party prototype to add search method "exists" to built-in class Array

Array.prototype.exists = function (x) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] == x) return true;
    }
    return false;
}

/**************************************************************************/	
//  Function to check mark sources with data in the selected service

function showSources(id, service, services) {
	uncheckAll(); 
	var mode = 1;  // mode "1" looks up sources by service
	matchSourceServices(1, id);
	toggle(id, services);
	}

	
/**************************************************************************/	
//  Function to check services having data for the selected source
	
function showServices(id, source, sources) {
	uncheckAll(); 
	var mode = 2;  // mode "2" looks up services by source
	matchSourceServices(2, id); 
	toggle(id, sources);
	}

/**************************************************************************/	
//  Changes visibility of all elements named "check"

function uncheckAll() {
				
	var all_checkmarks = document.getElementsByName("check");
	
	for (var i = 0; i < all_checkmarks.length; i++) {	
                           // hide the layer                    
		all_checkmarks[i].style.visibility = "hidden";
	}
}

/**************************************************************************/	


function uncheckSources() {

	var sources_checkmarks = new Array("checkmark_ACE","checkmark_Cluster");
 						
	for (var i = 0; i < sources_checkmarks.length; i++) {	
                            // reference the layer by id
		var obj = document.getElementById(sources_checkmarks[i]);
                           // hide the layer                    
		obj.style.visibility = "hidden";
	}
}
					
/**************************************************************************/	
// 
					
function checkService(id) {

	var checkmarkId = "checkmark_" + id;
 	var obj = document.getElementById(checkmarkId);
	if (obj) {	
		obj.style.visibility="visible";
		}
	}
		
/**************************************************************************/	
// 
	
function checkSource(id) {

	var checkmarkId = "checkmark_" + id;
 	var obj = document.getElementById(checkmarkId);
		obj.style.visibility="visible";

	}
	
/**************************************************************************/	
// 
		
function matchSourceServices(mode, selection) {
	var CDAWeb = new Array(
		"ACE",
		"Cluster",
		"Equator-S",
		"FAST",
		"Genesis",
		"Geotail",
		"GOES",
		"Hawkeye",
		"IMAGE",
		"IMP_8",
		"Interball",
		"ISIS",
		"LANL_Geosynch",
		"Polar",
		"SAMPEX",
		"SOHO",
		"Ulysses",
		"Wind",
		"Ground-based");

	var OMNIWeb = new Array(
		"ACE",
		"IMP_8",
		"IMP_early",
		"ISEE_1-2",
		"ISEE_3-ICE",
                "Prognoz",
		"Wind",
		"Activity_Indices");

	var COHOWeb = new Array(
		"Helios_1-2",
		"IMP_8",
		"Pioneer_10-11",
		"Pioneer_Venus_Orbiter",
		"Ulysses",
		"Voyager_1-2",
		"Planets_Comets",
		"Activity_Indices");

	var ATMOWeb = new Array(
		"Aeros",
		"Alouette",
		"Atmospheric_Explorer",
		"Dynamics_Explorer",
		"Explorer_22_31",
		"Hinotori",
		"ISIS",
		"OGO_6");

	var FTPBrowser = new Array(
		"ACE",
		"ARCAD",
		"Dynamics_Explorer",
		"IMP_8",
		"IMP_early",
		"ISEE_3-ICE",
		"Magsat",
		"Prognoz",
		"Wind");

	var Anonymous_FTP = new Array(
		"ACE",
		"Aeros",
		"Alouette",
		"ARCAD",
		"Atmospheric_Explorer",
		"Cosmos_900",
		"CRRES",
		"Dynamics_Explorer",
		"Explorer_22_31",
		"Granat",
		"Helios_1-2",
		"Hinotori",
		"IMAGE",
		"IMP_8",
		"IMP_early",
		"ISEE_1-2",
		"ISEE_3-ICE",
		"ISIS",
		"LUNA",
		"Magsat",
		"Mariner_10",
		"Mars",
		"OGO_6",
		"Phobos_2",
		"Pioneer_10-11",
		"Pioneer_Venus_Orbiter",
		"Polar",
		"Prognoz",
		"SAMPEX",
		"San_Marco",
		"SNOE",
		"Ulysses",
		"Vega",
		"Venera",
		"Voyager_1-2",
		"Wind",
		"Zond");
		
	var SSCWeb = new Array (
		"ACE",
		"Active",
		"Akebono",
		"AMPTE",
		"APEX-MAIN",
		"ASTRID_II",
		"Cluster",
		"DEMETER",
		"DMSP",
		"Double_Star_1",
	        "Dynamics_Explorer",
	        "Equator-S",
	        "FAST",
		"Freja",
	        "Genesis",
		"Geotail",
		"GOES",
	        "Hawkeye",
	        "IMAGE",
		"IMP_8",
	     	"IMP_early",
		"Interball",
		"ISEE_1-2",
		"ISEE_3-ICE",
		"LANL_Geosynch",
		"Mir",
		"MSX",
		"NOAA",
		"Oersted",
		"OGO_6",
		"Ohzora",
		"Polar",
		"SAMPEX",
		"SCATHA",
		"SNOE",
		"SOHO",
		"TIMED",
		"UARS",
		"Wind",
		"Yohkoh");
	
	var HelioWeb = new Array(
		"Cassini",
		"Galileo",
		"Giotto",
		"Helios_1-2",
		"IMP_8",
		"ISEE_3-ICE",
		"Phobos_2",
		"Pioneer_10-11",
		"Pioneer_Venus_Orbiter",
		"Sakigake",
		"Ulysses",
		"Voyager_1-2",
		"Planets_Comets");
		
        if (mode == 1) { // given a service, look up its sources
                var serviceArray = selection;

                for (var i = 0; i < eval(serviceArray).length; i++) {
                        checkSource(eval(serviceArray)[i]);
                }
        }
	else if (mode ==2) { // given a source, look up the services	
		var sourceArray = new Array("CDAWeb", "OMNIWeb", "COHOWeb", "ATMOWeb", "FTPBrowser", "Anonymous_FTP", "SSCWeb", "HelioWeb");		
	
		for (var i = 0; i < sourceArray.length; i++) {
			var sourceArrayName = eval(sourceArray[i]);
			var test = sourceArrayName.exists(selection);
			if ( test == true ) {
				checkService(eval(sourceArray)[i]);
			}
		}
	}
	else { 
		alert ('Error: invalid mode selection in matchSourceServices'); 
	} 	
}

/**************************************************************************/	
	
		

