<!--

var markerref = null;
var active = true;

function getSelectedCheckboxGroup(element) {
    // alert("Getting option for " + element.id);
    //var children = element.childNodes;
    var results = new Array();
    var children = element.getElementsByTagName("INPUT");
    //alert("We have " + children.length + " children." );
    for(var i = 0; i < children.length; i++) {
	     if (children[i].checked && children[i].value) {
             if (children[i].value.substring(0,4) != '_all') {
  	             results[results.length] = children[i].value;
             }
         }
    }
    return results;
}


function getStudiesWrapper() {
    setMessage("Loading, please wait ...");
    getStudies();
    clearMessage();
}

function getMeasurementsWrapper() {
    setMessage("Loading, please wait ...");
    getMeasurements();
    clearMessage();
}

function onMeasurementChangeWrapper() {
    setMessage("Loading, please wait ...");
    onMeasurementChange();
    clearMessage();
}


function getStudies() {
    //alert("called getstudies!");
    var project = getSelectedOption(document.getElementById('project'));
    var url = "request.php?fillin=studies&project=" + project;

    replaceInnerContents(url,'studycontainer',false,'onStudyChange');

    return false;
}

function getMeasurements() {
    //alert("called getmeasurements!");
    var project = getSelectedOption(document.getElementById('project'));
    var studies = getSelectedCheckboxGroup(document.getElementById('studycontainer'));
    var measurements = getSelectedCheckboxGroup(document.getElementById('measurementgroup'));
    var url = "request.php?fillin=measurements&project=" + project;
    for ( var i = 0; i < measurements.length; i++ ) { 
        url += '&measurement[]=' + measurements[i];
    }
    for ( var i = 0; i < studies.length; i++ ) { 
        url += '&study[]=' + studies[i];
    }
    //alert("url minirequest is " + url);
    
    replaceInnerContents(url,'measurementgroup',true,'onMeasurementChange');
    return false;
}

function onStudyChange() {
    getMeasurements();
}

function onMeasurementChange() {
    //alert("Changing measurement.");
    getStartTime();
    getEndTime();
    //getTimeline();
    getCurrentStudyLocation();
}

function getTimeline() {
    //alert("called getTimeline!");
    var xmlhttp = createXMLHTTPObject();
    var project = getSelectedOption(document.getElementById('project'));
    var studies = getSelectedCheckboxGroup(document.getElementById('studycontainer'));
    var measurements = getSelectedCheckboxGroup(document.getElementById('measurementgroup'));
    var timelinewrapper = document.getElementById('timelineblock');

    var url = "request.php?fillin=timeline&project=" + project;
    
    for ( var i = 0; i < studies.length; i++ ) { 
        url += '&study[]=' + studies[i];
    }
    for ( var i = 0; i < measurements.length; i++ ) { 
        url += '&measurement[]=' + measurements[i];
    }
    xmlhttp.open("GET",url,true);
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4) {
            //alert("measurement was " + document.getElementById('measurement').value );
            //alert("Got new timelime for measurement " + measurement );
            timelinewrapper.innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.send(null);
    return false;
 }

function getStartTime() {
    var project = getSelectedOption(document.getElementById('project'));
    var studies = getSelectedCheckboxGroup(document.getElementById('studycontainer'));
    var measurements = getSelectedCheckboxGroup(document.getElementById('measurementgroup'));

    var url = "request.php?fillin=starttime&project=" + project;
    for ( var i = 0; i < studies.length; i++ ) { 
        url += '&study[]=' + studies[i];
    }
    for ( var i = 0; i < measurements.length; i++ ) { 
        url += '&measurement[]=' + measurements[i];
    }
    //alert(measurements.length + " measurement types selected.");
    replaceInnerContents(url,'starttime',false);
    return false;
}

function getEndTime() {
    var project = getSelectedOption(document.getElementById('project'));
    var studies = getSelectedCheckboxGroup(document.getElementById('studycontainer'));
    var measurements = getSelectedCheckboxGroup(document.getElementById('measurementgroup'));

    var url = "request.php?fillin=endtime&project=" + project;
    for ( var i = 0; i < studies.length; i++ ) { 
        url += '&study[]=' + studies[i];
    }
    for ( var i = 0; i < measurements.length; i++ ) { 
        url += '&measurement[]=' + measurements[i];
    }
    replaceInnerContents(url,'endtime',false);
    return false;
}

function swapCollection(elem,collection) {
    selectListElement(elem);

    var xmlhttp = createXMLHTTPObject();
    //var collection = getSelectedOption(document.getElementById('choosecollection'));
    var collectionwrapper = document.getElementById('collectionblock');
    var url = "request.php?fillin=collection&id=" + collection;

    xmlhttp.open("GET",url,true);
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4) {
            collectionwrapper.innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.send(null);
    return false;

}

var markers = [];

function getCurrentStudyLocation() {
    var parent = document.getElementById("dataselect");
    var project = getSelectedOption(document.getElementById('project'));
    var studies = getSelectedCheckboxGroup(document.getElementById('studycontainer'));
    var measurements = getSelectedCheckboxGroup(document.getElementById('measurementgroup'));
    var xmlhttp = createXMLHTTPObject();
    var url = "request.php?fillin=latlon&project=" + project;

    for ( var i = 0; i < studies.length; i++ ) { 
        url += '&study[]=' + studies[i];
    }
    for ( var i = 0; i < measurements.length; i++ ) { 
        url += '&measurement[]=' + measurements[i];
    }

    for ( var i = parent.childNodes.length-1; i >= 0; i-- ) {
        if ( parent.childNodes[i].className=="mapmarker" ) 
           parent.removeChild(parent.childNodes[i]);
    }

    var lat1 = 49.1;
    var lat2 = 32.1;
    var lon1 = -129.0;
    var lon2 = -114;
    var mapmarkerloffset = 290;
    var mapmarkertoffset = 10;
    xmlhttp.open("GET",url,true);
    

    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4) {
            //alert("Latitude: " + latitude + ', Longitude: ' + longitude);
            if ( markerref == null ) {
                markerref = document.createElement("img");
                markerref.height="47"; 
                markerref.width="47"; 
                markerref.src="../images/marker.gif"; 
                markerref.alt = "";
                markerref.className = "basemarker";
                markerref.onmouseover="showQueryMapComment(event)";
                markerref.onmouseover="hideQueryMapComment(event)";
            }

            var lines = xmlhttp.responseText.split(/\n/);
            for ( var i = 0; i < lines.length; i++ ) {
                lines[i].match(/(.*)\t([\d\.]*),([\d\.-]*)/);
                var study = RegExp.$1;
                var latitude = parseFloat(RegExp.$2);
                var longitude = parseFloat(RegExp.$3);

                var coords = latlonToPixels(latitude,longitude,'querymap',lat1,lon1,lat2,lon2);
                if ( study && coords.topoffset && coords.leftoffset ) {
                    prettycoords = decimalDegreesToDegreesMinutes(latitude,longitude);
                    querymapmarker = markerref.cloneNode(false);
                    querymapmarker.className = "mapmarker";
                    querymapmarker.comment = '<b>' + unescape(study) + "</b><br/>" + prettycoords.latitude + "<br/>" + prettycoords.longitude;

                    //querymapmarker.style.top = (coords.topoffset + mapmarkertoffset) + 'px';
                    querymapmarker.style.top = (coords.topoffset - 24 + 26) + 'px';
                    //querymapmarker.style.left = (coords.leftoffset + mapmarkerloffset) + 'px';
                    querymapmarker.style.left = (coords.leftoffset - 24 + 290) + 'px';
                    
                    parent.insertBefore(querymapmarker,parent.firstChild);
                }
            }
        }
    }
    xmlhttp.send(null);
}

function latlonToPixels(lat,lon,imageid,c1,c2,c3,c4) {
    var image = document.getElementById(imageid);
    var pixelwidth = image.width;
    var pixelheight = image.height;
    var point = new Object();

    var xscale = Math.abs(pixelwidth / ( c4 - c2 ));
    var yscale = Math.abs(pixelheight / ( c1 - c3 ));
    point.topoffset = Math.round(( c1 - lat ) * yscale);
    point.leftoffset = Math.round(( lon - c2 ) * xscale);
    //alert("topoffset: " + point.topoffset + ', leftoffset: ' + point.leftoffset);

    //point.topoffset = '250px';
    //point.leftoffset = '150px';
    return point; 
}

function showQueryMapComment(e) {   
    if ( !e) var event = window.event;
    var target = e.target;
    var block = document.getElementById('querymapcomment');
    block.innerHTML = target.comment;

    posx = 0;
    posy = 0;
    if ( e.pageX || e.pageY ) {
        posx = e.pageX;
        posy = e.pageY;
    } else if (e.clientX || e.clientY ) {
        if( document.body.scrollLeft == undefined ) document.body.scrollLeft = 0; 
        if( document.body.scrollRight == undefined ) document.body.scrollRight = 0; 
        posx = e.clientX + document.body.scrollLeft;
        posy = e.clientY + document.body.scrollRight;
    }
 
    block.style.top = (posy + 5) + 'px';
    block.style.left = (posx + 3) + 'px';
    block.style.display = 'block';
}

function hideQueryMapComment(event) {
    var querymapcomment = document.getElementById('querymapcomment');
    querymapcomment.style.display = 'none';
}

function decimalDegreesToDegreesMinutes(lat,lon) {
    var coords = new Object();
    var latsign = 'N';
    var lonsign = 'E';
    if ( lat < 0 ) var latsign = 'S';
    if ( lon < 0 ) var latsign = 'W';
    lat = Math.abs(lat);
    lon = Math.abs(lon);
    min = Math.floor((lat % 180) * .60 );
    sec = Math.round((((lat % 180) * .60 ) - min) * 100);
    coords.latitude = Math.floor(lat) + '&deg; ' + min + '.' + sec + '&lsquo; ' + latsign;
    min = Math.floor((lon % 180) * .60 );
    sec = Math.round((((lon % 180) * .60 ) - min) * 100);
    coords.longitude = Math.floor(lon) + '&deg; ' + min + '.' + sec + '&lsquo ' + lonsign;
    return coords;
}

function toggleSelected(e) {
    if ( !e) var event = window.event;
    var tg = (e.target) ? e.target : e.srcElement;
    var container = tg.parentNode;
    var children = container.getElementsByTagName('INPUT');
    var operation = tg.checked;
    //return;
    for ( var i = 0; i < children.length; i++ ) {
        children[i].checked = operation;
    }
    if ( container.id == "studycontainer" ) {
        setMessage("Loading, please wait ...");
        //alert("Triggered a study change.");
        onStudyChange();
        clearMessage();
    }
    if ( container.id == "measurementgroup" ) {
        setMessage("Loading, please wait ...");
        //alert("Triggered a measurement change.");
        onMeasurementChange();
        clearMessage();
    }
}

function getDateFromDropdowns(prefix) {
   var year = parseInt(document.getElementById(prefix+"year").value);
   var month = parseInt(document.getElementById(prefix+"month").value);
   var day = parseInt(document.getElementById(prefix+"day").value);
   var hour = parseInt(document.getElementById(prefix+"hour").value);
   var min = parseInt(document.getElementById(prefix+"min").value);

   var dt = sprintf("%04d-%02d-%02d %02d:%02d:00",year,month,day,hour,min);
 
   return dt;
}


function requestData(e) {
    if ( !e) var e = window.event;

    if ( typeof(e.preventDefault) != "undefined" ) {
        e.preventDefault();
    }

    if ( typeof(e.stopPropagation) != "undefined" ) {
        e.stopPropagation();
    } else {
        e.cancelBubble=true;
    }

    e.returnValue = false;

    var querykeys = ['project','studies','measurements','startdate','enddate','format','resultset']
    var queryvars = {};
    queryvars['project'] = getSelectedOption(document.getElementById('project'));
    queryvars['studies'] = getSelectedCheckboxGroup(document.getElementById('studycontainer'));
    queryvars['measurements'] = getSelectedCheckboxGroup(document.getElementById('measurementgroup'));
    queryvars['startdate'] = getDateFromDropdowns('start');
    queryvars['enddate'] = getDateFromDropdowns('end');
    queryvars['format'] = getSelectedOption(document.getElementById('fileformat'));
    var resultset = document.getElementById('resultset');
    queryvars['resultset'] = typeof(resultset)!="undefined"&&resultset!==null?resultset.value:0; 

    var url = "request.php?action=results";

    for ( var i = 0; i < querykeys.length; i++ ) {
        if (typeof(queryvars[querykeys[i]]) != 'object') {
            url += "&" + querykeys[i] + "=" + queryvars[querykeys[i]];
        } else {
            var vals = queryvars[querykeys[i]];
            for ( var j = 0; j < vals.length; j++ ) {
                url += "&" + querykeys[i] + "[]=" + vals[j];
            }
        }
    }


    var resultblock = document.getElementById("resultblock");
    if ( ! resultblock ) {
        var parent = document.getElementById("dataselect");
        resultblock = document.createElement("div");
        resultblock.id="resultblock";
        parent.appendChild(resultblock);
    }

    resultblock.innerHTML = "";
    resultblock.style.display = "none";
    setMessage("Retrieving data, please wait ...");
    replaceInnerContents(url,"resultblock",true,"showResults");
}

function showResults() {
    var resultblock = document.getElementById("resultblock");
    resultblock.style.display = "block";
    clearMessage();
}

function clearMessage() {
    var modalblock = document.getElementById("modalblock");
    if ( modalblock ) {
        modalblock.style.display="none";
    }
}

function setMessage(str) {
    var modalblock = document.getElementById("modalblock");
    var parent = document.getElementById("dataselect").parentNode;
    if ( ! modalblock ) {
        modalblock=document.createElement("div");
        modalblock.id="modalblock";
        parent.insertBefore(modalblock,parent.firstChild);
        addEvent(window,'resize',function() {
            modalblock.style.height = parent.offsetHeight + "px";
        });
    }

    if ( str === null ) {
        active = false;
        return;
    }

    if ( active ) {
        modalblock.innerHTML = '<div id="resultStatus"><span class="resulttext">'+str+'</span><img class="loadingimg" src="loading.gif" /></div>'
    }
    modalblock.style.width=(parent.offsetWidth-8) + "px";
    modalblock.style.height=parent.offsetHeight + "px";
    modalblock.style.display="block";
}

function getPrevResultset(e) {
   var resultset = document.getElementById("resultset");
    if ( !e) var e = window.event;

    if ( typeof(e.preventDefault) != "undefined" ) {
        e.preventDefault();
    }

    if ( typeof(e.stopPropagation) != "undefined" ) {
        e.stopPropagation();
    } else {
        e.cancelBubble=true;
    }

    e.returnValue = false;

   if ( resultset.value > 0 ) {
       resultset.value = (parseInt(resultset.value)-1);
       requestData(e);
   }
}

function getNextResultset(e) {
   var resultset = document.getElementById("resultset");
   var moreresults = document.getElementById("moreresults");
    if ( !e) var e = window.event;

    if ( typeof(e.preventDefault) != "undefined" ) {
        e.preventDefault();
    }

    if ( typeof(e.stopPropagation) != "undefined" ) {
        e.stopPropagation();
    } else {
        e.cancelBubble=true;
    }

    e.returnValue = false;

   if ( moreresults.value === "1" ) {
       resultset.value = (parseInt(resultset.value)+1);
       requestData(e);
   }
}



//-->
