//line below allows us to use the [string].contains() function as in Java
String.prototype.contains = function(t) { return this.indexOf(t) >= 0 ? true : false }

var changeFlag = 0;
var changeID = 0;
var obsFileIn = 'null';
var modFileIn = 'null';
var origModFileIn = 'null';
var subsetArgo = 'y';
var subsetBuoy = 'y';
var subsetTESAC = 'y';
var subsetXBTMBT = 'y';
var subsetOtherInst = 'y';
var subsetATL = 'y';
var subsetIND = 'y';
var subsetPAC = 'y';
var EN3Day = "1";
var EN3Month = "1";
var EN3Year = "2008";
var endDay = "31";
var endMonth = "1";
var endYear = "2008";
var projectName = 'testData';
var output = 'googleEarth';
var profileRequest = '-1';
var colorBy = 'temperatureprofile';
var titleDate = 'n';
var titleProfileId = 'n';
var titleInstType = 'n';
var titleMaxDepth = 'n';
var tempCutoff1 = '1.0';
var tempCutoff2 = '2.0';
var tempCutoff3 = '3.0';
var tempCutoff4 = '4.0';
var salCutoff1 = '0.1';
var salCutoff2 = '0.2';
var salCutoff3 = '0.3';
var salCutoff4 = '0.4';
var depthCutoff1 = '100';
var depthCutoff2 = '200';
var depthCutoff3 = '300';
var depthCutoff4 = '400';
var maxDepCutoff1 = '1.0';
var maxDepCutoff2 = '2.0';
var maxDepCutoff3 = '3.0';
var maxDepCutoff4 = '4.0';
var RMSIntervalStart = '';
var RMSIntervalEnd = '';
var YAxis = 'depth';
var XTemperature = 'y';
var XSalinity = 'y';
var XDepth = 'n';
var westLongUser1 = '-200';
var eastLongUser1 = '-200';
var northLatUser1 = '-200';
var southLatUser1 = '-200';
var nameUser1 = 'UserDef1';
var westLongUser2 = '-200';
var eastLongUser2 = '-200';
var northLatUser2 = '-200';
var southLatUser2 = '-200';
var nameUser2 = 'UserDef2';
var westLongUser3 = '-200';
var eastLongUser3 = '-200';
var northLatUser3 = '-200';
var southLatUser3 = '-200';
var nameUser3 = 'UserDef3';
var westLongUser4 = '-200';
var eastLongUser4 = '-200';
var northLatUser4 = '-200';
var southLatUser4 = '-200';
var nameUser4 = 'UserDef4';
var westLongUser5 = '-200';
var eastLongUser5 = '-200';
var northLatUser5 = '-200';
var southLatUser5 = '-200';
var nameUser5 = 'UserDef5';
var daysInMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

var regionsArr = new Array(82);
for (regionCode = 0; regionCode < 82; regionCode++)
{
    regionsArr[regionCode] = 0;
}

function init() {
    assignDays(31, 'day');
    assignDays(31, 'endDay');
}

function updateValue(varName, value) {
    for (i in window) {
        if (i == varName) window[i] = value;
    }
}

function updateBoolean(varName, booleanVal) {
    for (i in window) {
        if (i == varName) window[i] = booleanVal == true ? 'y' : 'n';
    }
}

function updateDivViz(divName, showIt) {
    document.getElementById(divName).style.display = showIt == true ? "block" : "none";
}

function updateRegions(regionSelected, regionIdx) {
    this.regionsArr[regionIdx] = regionSelected == true ? 1 : 0;
}

function updateOutput(output) {
    this.output = output;
    clearInterval(changeID);
    document.getElementById('right').getElementsByTagName('p')[1].style.background = "white";
    document.getElementById('right').getElementsByTagName('p')[2].style.background = "white";
    changeFlag = 0;
    if (output == 'googleEarth') {
	document.form1.projectName.disabled = false;
	document.form1.titleDate.disabled = false;
	document.form1.titleProfileId.disabled = false;
	document.form1.titleInstType.disabled = false;
	document.form1.titleMaxDepth.disabled = false;
	document.form1.colorBy.disabled = false;
	document.form1.RMSIntervalStart.disabled = false;
	document.form1.RMSIntervalEnd.disabled = false;
	document.form1.tempCutoff1.disabled = false;
	document.form1.tempCutoff2.disabled = false;
	document.form1.tempCutoff3.disabled = false;
	document.form1.tempCutoff4.disabled = false;
	document.form1.salDepCutoff1.disabled = false;
	document.form1.salDepCutoff2.disabled = false;
	document.form1.salDepCutoff3.disabled = false;
	document.form1.salDepCutoff4.disabled = false;
	document.form1.depthCutoff1.disabled = false;
	document.form1.depthCutoff2.disabled = false;
	document.form1.depthCutoff3.disabled = false;
	document.form1.depthCutoff4.disabled = false;
	document.form1.salTempCutoff1.disabled = false;
	document.form1.salTempCutoff2.disabled = false;
	document.form1.salTempCutoff3.disabled = false;
	document.form1.salTempCutoff4.disabled = false;
	document.getElementById('projectNameText').style.color = "black";
	document.getElementById('labelDiv').style.color = "black";
	document.getElementById('XAxisForDepth').style.color = "black";
	document.getElementById('XAxisForTemp').style.color = "black";
	document.getElementById('colorByDiv').style.color = "black";
	document.getElementById('maxDepCutoffs').style.color = "black";
	document.getElementById('userRMSDiv').style.color = "black";
	document.form1.natl.checked = false;
        
        for (regionCode = 0; regionCode < 81; regionCode++) {
    	    this.regionsArr[regionCode] = 0;
	}
	document.getElementById('regionText').innerHTML = "(default is that no region is selected)";
	document.getElementById('right').getElementsByTagName('p')[0].innerHTML="<b>Google Earth output is selected.</b><br>&bull; OceanDIVA produces a KML file for viewing in Google Earth.<br>&bull; The file is based on input from two sources - one observations dataset, and one model dataset should be specified.<br>&bull; Location of observation profile data is marked by push-pins in Google Earth.<br>&bull; These profiles can be colour-coded by the RMS misfit between observation and model data.<br>&bull; RMS Colour-coding can be by either temperature or salinity, averaged over the entire profile, or over standard or user-defined depth intervals.<br>&bull; The cutoff values for the RMS misfits can be left as default values, or adjusted as desired.<br>&bull; Upon clicking a profile icon in Google Earth, a data plot of temperature and/or salinity against depth is generated on the fly.";
    } 
    else if (output == 'PDFPNG') {
	document.form1.titleDate.disabled = true;
	document.form1.titleProfileId.disabled = true;
	document.form1.titleInstType.disabled = true;
	document.form1.titleMaxDepth.disabled = true;
	document.form1.colorBy.disabled = true;
	document.form1.RMSIntervalStart.disabled = true;
	document.form1.RMSIntervalEnd.disabled = true;
	document.form1.tempCutoff1.disabled = true;
	document.form1.tempCutoff2.disabled = true;
	document.form1.tempCutoff3.disabled = true;
	document.form1.tempCutoff4.disabled = true;
	document.form1.salDepCutoff1.disabled = true;
	document.form1.salDepCutoff2.disabled = true;
	document.form1.salDepCutoff3.disabled = true;
	document.form1.salDepCutoff4.disabled = true;
	document.form1.depthCutoff1.disabled = true;
	document.form1.depthCutoff2.disabled = true;
	document.form1.depthCutoff3.disabled = true;
	document.form1.depthCutoff4.disabled = true;
	document.form1.salTempCutoff1.disabled = true;
	document.form1.salTempCutoff2.disabled = true;
	document.form1.salTempCutoff3.disabled = true;
	document.form1.salTempCutoff4.disabled = true;
	document.getElementById('labelDiv').style.color = "grey";
	document.getElementById('XAxisForDepth').style.color = "grey";
	document.getElementById('XAxisForTemp').style.color = "grey";
	document.getElementById('colorByDiv').style.color = "grey";
	document.getElementById('maxDepCutoffs').style.color = "grey";
	document.getElementById('userRMSDiv').style.color = "grey";
	document.form1.natl.checked = true;
	
        this.regionsArr[0] = 0;
        this.regionsArr[1] = 1;
	for (regionCode = 2; regionCode < 81; regionCode++) {
    	    this.regionsArr[regionCode] = 0;
	}
	document.getElementById('regionText').innerHTML = "(default is that North Atlantic region is selected)";
	document.getElementById('right').getElementsByTagName('p')[0].innerHTML="<b>Probability Distribution output is selected</b>.<br>&bull; Plots illustrating the probability of finding a given observed value, and model - observed misfit value on a given level are outputted for standard or user-defined ocean regions.<br>&bull; Input is from two sources - one observations dataset, and one model dataset should be specified.<br>&bull; Users should select region(s) of interest from the interface (defaults to North Atlantic).<br>&bull; Larger regions will contain more data and hence produce less noisy plots.<br>&bull; The probability distribution of the chosen datasets(s) (e.g. temperature and salinity on depth levels) will be outputted for the given region(s) in a series of PNGs within one HTML document.<br>&bull; colour-coded values of probability are given as log_10 of the probability of finding that value on that level (i.e. normalized to the data on each level).";
    }
    changeID = setInterval ( "flashBackground(1)", 500 );
}

function updateObsFileIn(obsFileIn) {
    clearInterval(changeID);
    document.getElementById('right').getElementsByTagName('p')[0].style.background = "white";
    document.getElementById('right').getElementsByTagName('p')[1].style.background = "white";
    document.getElementById('right').getElementsByTagName('p')[2].style.background = "white";
    
    this.obsFileIn = obsFileIn;
    if (obsFileIn == 'OBS/EN3_v1c/EN3_v1c_2008.01.nc') {
        document.getElementById('obsFileInEN3').style.display = "block";
	document.getElementById('right').getElementsByTagName('p')[1].innerHTML="EN3 dataset has been selected. This comprises monthly quality controlled data from argo floats, buoys, XBTs and other instruments. Data is available in monthly format from 1950 until 2008 inclusive.";
    } else {
	document.getElementById('obsFileInEN3').style.display = "none";
        document.getElementById('right').getElementsByTagName('p')[1].innerHTML="<b>No observations data file has been selected</b>";
    }
    changeFlag = 0;
    changeID = setInterval ( "flashBackground(2)", 500 );	
}

function updateModFileIn(modFileIn, flashBackground) {
    clearInterval(changeID);
    document.getElementById('right').getElementsByTagName('p')[0].style.background = "white";
    document.getElementById('right').getElementsByTagName('p')[1].style.background = "white";
    document.getElementById('right').getElementsByTagName('p')[2].style.background = "white";
    
    this.origModFileIn = modFileIn;
    this.modFileIn = modFileIn.replace(/\[YYYY\]/g, this.EN3Year);
    
    if (modFileIn == 'opendap') document.getElementById('modFileInOpendap').style.display = "block";
    else document.getElementById('modFileInOpendap').style.display = "none";
    
    if (modFileIn == 'http://apdrc.soest.hawaii.edu:80/dods/public_data/SODA/soda_pop2.0.4') {
        // SODA POP v2.0.4
        document.getElementById('right').getElementsByTagName('p')[2].innerHTML="SODA-POP v1.4 monthly means has been selected. This Asia-Pacific Data Research	Center dataset is available on a monthly basis over OPeNDAP from JAN 1958 until DEC 2004. As this data is accessed via OPeNDAP there may occasionally be errors which are associated with the remote server and unfortunately out of our control.";
        assignYears(2000, 2007);
    } else if (modFileIn == 'http://apdrc.soest.hawaii.edu/dods/public_data/ORA-S3/hope_scalar') {
        // ECMWF OCEAN REANALYSIS
        document.getElementById('right').getElementsByTagName('p')[2].innerHTML="ECMWF (European Centre for Medium-range Weather Forecasting) model data has been selected.  This data is available on a monthly basis from Jan 1959 to Dec 2006.";
        assignYears(1959, 2006);
    } else if (modFileIn == 'http://data1.gfdl.noaa.gov:9192/opendap/Fv_NetCDF/ocean_interp/ts/monthly/thetao_O1.[YYYY]01-[YYYY]12.nc,,http://data1.gfdl.noaa.gov:9192/opendap/Fv_NetCDF/ocean_interp/ts/monthly/so_O1.[YYYY]01-[YYYY]12.nc') {
        // GFDL
        document.getElementById('right').getElementsByTagName('p')[2].innerHTML="GFDL Ocean Assimilation Model monthly means has been selected. This dataset from the Geophysical Fluid Dynamics Laboratory is available on a monthly basis from Jan 1979 to Dec 2007.";
        assignYears(1979, 2007);
    } else if (modFileIn == 'WOA05_temp.nc,,WOA05_salt.nc') {
        // WORLD OCEAN ATLAS 2005
        document.getElementById('right').getElementsByTagName('p')[2].innerHTML="World Ocean Atlas (2005) model data has been selected. This climatology dataset is available for each month of the year.";
        assignYears(1950, 2008);
    } else if (modFileIn == 'http://www.nerc-essc.ac.uk/thredds/dodsC/ClassInatlAnal') {
        //FOAM NORTH ATLANTIC
        document.getElementById('right').getElementsByTagName('p')[2].innerHTML="FOAM North Atlantic 1/9 degree model has been selected.  This UK Met Office dataset is available on a daily basis from 14th Nov 2006 onwards";
        assignYears(2006, 2008);
    } else if (modFileIn == 'opendap') {
        //USER SPECIFIED OPENDAP LOCATION
        document.getElementById('right').getElementsByTagName('p')[2].innerHTML="Input the URL of an OPeNDAP netcdf file serving CF-compliant data (or two URLs if temperature and salinity data are held in different files).";
        assignYears(1950, 2008);
        updateOpendapModFileIn();
    } else if (modFileIn == 'null') {
        document.getElementById('right').getElementsByTagName('p')[2].innerHTML="<b>No model data file had been selected</b>";
    }
    
    if (flashBackground) {
        changeFlag = 0;    
        changeID = setInterval ( "flashBackground(3)", 500 );
    } else {
        changeFlag = 6; //stop any current flashing if user chooses again before old flashing done
    }
}

function updateOpendapModFileIn() {
    var tempFile = document.form1.modFileInOpendapTemp.value;
    var salFile = document.form1.modFileInOpendapSal.value;
    if (salFile == '') this.modFileIn = tempFile; 
    else this.modFileIn = tempFile + ',,' + salFile;
}

function isLeapYear(year) {
    return (year % 4 == 0 && year % 100 != 0);
}

function assignDays(nDays, where) {
    var year = where.contains('end') ? this.endYear : this.EN3Year;
    if (isLeapYear(year) && nDays == 28) nDays = 29;
    
    var element = document.getElementById(where);
    
    var oldNDays = element.options.length;
    
    for (var i = (oldNDays - 1); i >=0; i--) {
        element.remove(i);
    }
    
    for (i = 1; i <= nDays; i++) {
        var optn = document.createElement("option");
        optn.text = i;
        optn.value = i;
        element.options.add(optn);
    }
    if (where == 'endDay') {
        this.endDay = document.form1.endDay.options[nDays - 1].value;
        document.form1.endDay.options[nDays - 1].selected = true;
    } else {
        this.EN3Day = document.form1.day.options[0].value;
    }
    
}

function assignYears(startYear, lastYear) {
    var oldNYears = document.form1.year.options.length;

    for (var i = (oldNYears - 1); i >= 0; i--) {
        document.form1.year.remove(i);
        document.form1.endYear.remove(i);
    }
    
    if (startYear == "none" && lastYear == "none") {
        document.getElementById('year').style.visibility = "hidden";
        document.getElementById('endYear').style.visibility = "hidden";
    } else {
        document.getElementById('year').style.visibility = "visible";
        document.getElementById('endYear').style.visibility = "visible";
        for (i = lastYear; i >= startYear; i--) {
            var optn = document.createElement("option");
            optn.text = i;
            optn.value = i;
            document.form1.year.options.add(optn);
        }
        for (i = lastYear; i >= startYear; i--) {
            optn = document.createElement("option");
            optn.text = i;
            optn.value = i;
            document.form1.endYear.options.add(optn);
        }
        this.EN3Year = lastYear;
        this.endYear = lastYear;
        assignDays(this.daysInMonth[this.EN3Month - 1], 'day');
        assignDays(this.daysInMonth[this.endMonth - 1], 'endDay');
    }
}

function flashBackground (paraNumber) {
    if (changeFlag % 2 == 0 && changeFlag < 6) {
        document.getElementById('right').getElementsByTagName('p')[paraNumber - 1].style.background = "yellow";
        changeFlag++;
    } else if (changeFlag % 2 == 1 && changeFlag < 6) {
	document.getElementById('right').getElementsByTagName('p')[paraNumber - 1].style.background = "white";
	changeFlag++;
    } else {
	clearInterval(changeID);
	changeFlag = 0;
    }
}

function updateYear(year) {
    this.EN3Year = year;
    this.modFileIn = this.origModFileIn.replace(/\[YYYY\]/g, this.EN3Year);
    document.form1.year.value = year;
    assignDays(this.daysInMonth[this.EN3Month - 1], 'day');
}

function updateEndYear(year) {
    this.endYear = year;
    document.form1.endYear.value = year;
    assignDays(this.daysInMonth[this.endMonth - 1], 'endDay');
}

function updateMonth(month) {
    this.EN3Month = month;
    assignDays(this.daysInMonth[month - 1], "day");
}

function updateEndMonth(month) {
    this.endMonth = month;
    assignDays(this.daysInMonth[month - 1], "endDay");
}

function updateDay(day) {
    this.EN3Day = day;
}

function updateEndDay(day) {
    this.endDay = day;
}

function updateYAxis(YAxis) {
    this.YAxis = YAxis;
    if(YAxis == 'depth') {
        document.getElementById('XAxisForDepth').style.display = "block";
	document.getElementById('XAxisForTemp').style.display = "none";
	this.XDepth = 'n';
	this.XTemperature = 'y';
	colorByTempAndSal();
    } else if(YAxis == 'temperature') {
        document.getElementById('XAxisForDepth').style.display = "none";
	document.getElementById('XAxisForTemp').style.display = "block";
	this.XDepth = 'y';
	this.XTemperature = 'n';
	colorByDepAndSal();
    }
    this.colorBy = document.form1.colorBy.options[0].value;
}

function colorByTempAndSal() {
    var optionTextArr = new Array("Temperature RMS: all depths", 
                                  "Temperature RMS: 0-300m",
                                  "Temperature RMS: 300-1000m", 
                                  "Temperature RMS: below 1000m",
                                  "Temperature RMS: [define interval below]",
                                  "Salinity RMS: all depths", 
                                  "Salinity RMS: 0-300m",
                                  "Salinity RMS: 300-1000m", 
                                  "Salinity RMS: below 1000m",
                                  "Salinity RMS: [define interval below]",
                                  "Maximum depth of profile");
    var optionValueArr = new Array("temperatureprofile",
                                   "temperature0-300",
                                   "temperature300-1000",
                                   "temperatureover1000",
                                   "temperatureuserinterval",
                                   "salinityprofile",
                                   "salinity0-300",
                                   "salinity300-1000",
                                   "salinityover1000",
                                   "salinityuserinterval",
                                   "maxdepth")
    alterColorByOptions(optionTextArr, optionValueArr);
}

function colorByDepAndSal() {
    var optionTextArr = new Array("Salinity RMS: all depths", 
                                  "Salinity RMS: [define interval below]",
                                  "Depth RMS: all depths", 
                                  "Depth RMS: [define interval below]",
                                  "Maximum depth of profile");
    var optionValueArr = new Array("salinityprofile",
                                   "salinityuserinterval",
                                   "depthprofile",
                                   "depthuserinterval",
                                   "maxdepth")
    alterColorByOptions(optionTextArr, optionValueArr);
}

function alterColorByOptions(textArr, valueArr) {
    for (var i=11; i>=0; i--) {
        document.form1.colorBy.remove(i);
    }
    for (var iOptn = 0; iOptn < textArr.length; iOptn++) {
        var optn = document.createElement("option");
        optn.text = textArr[iOptn];
        optn.value = valueArr[iOptn];
        document.form1.colorBy.options.add(optn);
    }
    this.colorBy = valueArr[0];
}

function updateColorBy(colorBy) {
    this.colorBy = colorBy;
    if (colorBy == 'maxdepth') document.getElementById('maxDepCutoffs').style.display = "block";
    else document.getElementById('maxDepCutoffs').style.display = "none";
}

function Toggle(item) {
    obj = document.getElementById(item);
    visible = (obj.style.display!="none")
    key = document.getElementById("x" + item);
    if (visible) {
        obj.style.display = "none";
	key.innerHTML="[+]";
    }
    else {
        obj.style.display = "block";
	key.innerHTML="[-]";
    }
}

function getElementsByClassName(classname, node) {
    if(!node) node = document.getElementsByTagName("body")[0];
    var a = [];
    var re = new RegExp('\\b' + classname + '\\b');
    var els = node.getElementsByTagName("*");
    for (var i = 0, j = els.length; i < j; i++)
      if (re.test(els[i].className)) a.push(els[i]);
    return a;
}


function proceed() { 
    var title = this.titleDate + this.titleProfileId + this.titleInstType + this.titleMaxDepth;
    var XAxis = this.XTemperature + this.XSalinity + this.XDepth;
    var tempCutoffs = this.tempCutoff1 + "," + this.tempCutoff2 + "," + this.tempCutoff3 + "," + this.tempCutoff4; 
    var salCutoffs =  this.salCutoff1 + "," + this.salCutoff2 + "," + this.salCutoff3 + "," + this.salCutoff4;
    var depthCutoffs = this.depthCutoff1 + "," + this.depthCutoff2 + "," + this.depthCutoff3 + "," + this.depthCutoff4;
    var maxDepCutoffs = this.maxDepCutoff1 + "," + this.maxDepCutoff2 + "," + this.maxDepCutoff3 + "," + this.maxDepCutoff4;  
    var RMSInterval = this.RMSIntervalStart + "," + this.RMSIntervalEnd;
    var subsetInstType = this.subsetArgo + this.subsetBuoy + this.subsetTESAC + this.subsetXBTMBT + this.subsetOtherInst;
    var subsetLocation = this.subsetATL + this.subsetIND + this.subsetPAC;
    var startDate = this.EN3Day + "/" + this.EN3Month + "/" + this.EN3Year;
    var endDate = this.endDay + "/" + this.endMonth + "/" + this.endYear;
    
    var regions = "";
    for (regionCode = 0; regionCode < 82; regionCode++) {
        regions += this.regionsArr[regionCode];
    }

    var userLimits = "WA" + this.westLongUser1 + "EA" + this.eastLongUser1 + "NA" + this.northLatUser1 + "SA" + this.southLatUser1 + "NaA" + this.nameUser1  
	+ "WB" + this.westLongUser2 + "EB" + this.eastLongUser2 + "NB" + this.northLatUser2 + "SB" + this.southLatUser2 + "NaB" + this.nameUser2
	+ "WC" + this.westLongUser3 + "EC" + this.eastLongUser3 + "NC" + this.northLatUser3 + "SC" + this.southLatUser3 + "NaC" + this.nameUser3 
	+ "WD" + this.westLongUser4 + "ED" + this.eastLongUser4 + "ND" + this.northLatUser4 + "SD" + this.southLatUser4 + "NaD" + this.nameUser4
	+ "WE" + this.westLongUser5 + "EE" + this.eastLongUser5 + "NE" + this.northLatUser5 + "SE" + this.southLatUser5 + "NaE" + this.nameUser5; 
	  	            
    //var url = "http://localhost:8084/MOD-OBS/ModelTestServlet";
    var url = "http://lovejoy.nerc-essc.ac.uk:8080/MOD-OBS/ModelTestServlet";
    //var url = "http://lovejoy.nerc-essc.ac.uk:9080/MOD-OBS/ModelTestServlet";
    url += "?modFileIn=" + this.modFileIn;
    url += "&obsFileIn=" + this.obsFileIn;
    url += "&startDate=" + startDate;
    url += "&endDate=" + endDate;
    url += "&subsetInstType=" + subsetInstType;
    url += "&subsetLocation=" + subsetLocation;
    url += "&projectName=" + this.projectName;
    url += "&output=" + this.output;
    url += "&profileRequest=" + this.profileRequest;
    url += "&colorBy=" + this.colorBy;
    url += "&title=" + title;
    url += "&YAxis=" + this.YAxis;
    url += "&XAxis=" + XAxis;
    url += "&tempCutoffs=" + tempCutoffs;
    url += "&salCutoffs=" + salCutoffs;
    url += "&depthCutoffs=" + depthCutoffs;
    url += "&maxDepCutoffs=" + maxDepCutoffs;
    url += "&RMSInterval=" + RMSInterval;
    url += "&regions=" + regions;
    url += "&userLimits=" + userLimits;
    
    if (this.output == 'googleEarth') window.open(url,'NewWin','scrollbars=no,menubar=no,width=500,height=300');
    else if (this.output == 'PDFPNG') window.open(url,'NewWin','scrollbars=yes,toolbar=yes,menubar=no,width=1050,height=650'); 
}
