﻿    
var map = null;
var N=90,E=180,S=-90,W=-180;
var coresvis=0;
var libvis=0;
var pinlayer;
var liblayer;

Sys.Application.add_load(ApplicationLoadHandler)

function ApplicationLoadHandler(sender, args)
{
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(begin);
    Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(end); 
}

function begin(sender, args)
{
    document.getElementById(ddl2id).disabled=true;
    document.getElementById(ddl3id).disabled=true;
}

function end(sender, args)
{
    document.getElementById(ddl2id).disabled=false;
    document.getElementById(ddl3id).disabled=false;
}

function waitForddl3tofill()
{
    if (document.getElementById(ddl3id).selectedIndex==parseInt(document.getElementById("savedddl3value").value)) return;
    else if (document.getElementById(ddl3id).options.length<=1) setTimeout("waitForddl3tofill();",500);
    else
    {
        var savedvar=parseInt(document.getElementById("savedddl3value").value);
        document.getElementById(ddl3id).selectedIndex=savedvar;
        ddl3changed();
    }
}


function GetMap()
{
    try
    {
        setelesize(document.getElementById("mapcontainer"));
        map = new VEMap('myMap');
        map.LoadMap(new VELatLong(-28, 132), 5 ,VEMapStyle.Aerial , false,VEMapMode.Mode2D,true);
        map.SetShapesAccuracy(VEShapeAccuracy.Pushpin);
        map.SetScaleBarDistanceUnit(VEDistanceUnit.Kilometers);
        pinlayer = new VEShapeLayer();
        liblayer = new VEShapeLayer();
        map.AddShapeLayer(pinlayer);
        map.AddShapeLayer(liblayer);
        // pushpin calibration cross through lat -30 long 131.
        /*var points1 = new Array(new VELatLong(-29,131),new VELatLong(-31,131))
        poly1 = new VEShape(VEShapeType.Polyline,points1);
        poly1.SetLineWidth(1);
        poly1.SetLineColor(new VEColor(255,0,0,1.0));
        poly1.HideIcon();
        map.AddShape(poly1);
        var points2 = new Array(new VELatLong(-30,132),new VELatLong(-30,130))
        poly2 = new VEShape(VEShapeType.Polyline,points2);
        poly2.SetLineWidth(1);
        poly2.SetLineColor(new VEColor(255,0,0,1.0));
        poly2.HideIcon();
        map.AddShape(poly2);*/
        map.AttachEvent("onstartzoom", clearcores);
        map.AttachEvent("onendzoom", refreshcores);
        try
        {
            document.getElementById("ctl00_Image1").addEventListener('click', resizemap,false);
        }
        catch (ex)
        {
            document.getElementById("ctl00_Image1").attachEvent('onclick', resizemap);
        }
    }
    catch (e)
    {
        alert(e.message);
    }
    resizemap();
    if (document.getElementById("coresvisible").value!="0") coresvis=1;
    if (document.getElementById(ddl2id).SelectedIndex!=0)
    {
        var ddl2 = document.getElementById(ddl2id);
        map.DeleteAllShapes();
        __doPostBack(ddl2id,'');
        if (document.getElementById("savedddl3value").value!=document.getElementById(ddl3id).selectedIndex)
        {
            waitForddl3tofill();
        }
    }
}

function setelesize(ele)
{
    var width=0,height=0;
    if (document.documentElement && document.documentElement.clientWidth != 0) 
    {
        width = document.documentElement.clientWidth;
        height = document.documentElement.clientHeight;
    }
    else if (document.body)
    {
        width = document.body.clientWidth;
        height = document.body.clientHeight;
    }
    var pos = getpos(ele);
    width -=pos[0]+getrightspace(ele);
    width = Math.max(width,600);
    ele.style.width=width+"px";
    height -=pos[1]+20;
    height = Math.max(height,600);
    ele.style.height=height+"px";
}

function setelewidth(ele)
{
    var width=0;
    if (document.documentElement && document.documentElement.clientWidth != 0) 
    {
        width = document.documentElement.clientWidth;
    }
    else if (document.body)
    {
        width = document.body.clientWidth;
    }
    var pos = getpos(ele);
    width -=pos[0]+getrightspace(ele);
    width = Math.max(width,600);
    ele.style.width=width+"px";
}

function resizemap()
{
    var mapcontainer = document.getElementById("mapcontainer");
    setelewidth(mapcontainer);
    map.Resize(mapcontainer.clientWidth,mapcontainer.clientHeight);
}

function Requestregion(url) 
{
    var http_request = false;

    if (window.XMLHttpRequest) 
    {
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) 
        {
            http_request.overrideMimeType('text/xml');
        }
    } 
    else if (window.ActiveXObject) 
    {
        try 
        {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch (e) 
        {
            try 
            {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch (e) {}
        }
    }

    if (!http_request) 
    {
        alert('Cannot create an XMLHTTP instance');
        return false;
    }
    http_request.onreadystatechange = function() { regionready(http_request); };
    http_request.open('GET', url, true);
    http_request.send(null);

}

function regionready(http_request) 
{

    if (http_request.readyState == 4) 
    {
        if (http_request.status == 200) 
        {
            var xmldoc = http_request.responseXML;
            if (xmldoc.getElementsByTagName("Lat_Min")[0].text)
            {
                S = xmldoc.getElementsByTagName("Lat_Min")[0].text;
                N = xmldoc.getElementsByTagName("Lat_Max")[0].text;
                E = xmldoc.getElementsByTagName("Long_Max")[0].text;
                W = xmldoc.getElementsByTagName("Long_Min")[0].text;
            }
            else if (xmldoc.getElementsByTagName("Lat_Min")[0].nodeValue)
            {
                S = xmldoc.getElementsByTagName("Lat_Min")[0].nodeValue;
                N = xmldoc.getElementsByTagName("Lat_Max")[0].nodeValue;
                E = xmldoc.getElementsByTagName("Long_Max")[0].nodeValue;
                W = xmldoc.getElementsByTagName("Long_Min")[0].nodeValue;
            }
            else if (xmldoc.getElementsByTagName("Lat_Min")[0].textContent)
            {
                S = xmldoc.getElementsByTagName("Lat_Min")[0].textContent;
                N = xmldoc.getElementsByTagName("Lat_Max")[0].textContent;
                E = xmldoc.getElementsByTagName("Long_Max")[0].textContent;
                W = xmldoc.getElementsByTagName("Long_Min")[0].textContent;
            }
            if (coresvis==1 || libvis==1) refreshcores();
            rezone();
        } 
        else 
        {
            alert('There was a problem with the request.');
        }
    }

}


function ddl3changed()
{
    var ddl3 = document.getElementById(ddl3id);
    map.DeleteAllShapes();
    document.getElementById("savedddl3value").value=ddl3.selectedIndex;
    if (ddl3.selectedIndex==0)
    {
        N=90;
        E=180;
        S=-90;
        W=-180;
        return;
    }
    Requestregion("GETregion.aspx?mapid="+ddl3.options[ddl3.selectedIndex].value);
}

function ddl2changed()
{
    var ddl2 = document.getElementById(ddl2id);
    document.getElementById("savedddl3value").value="0";
    if (ddl2.selectedIndex==0) 
    {
        N=90;
        E=180;
        S=-90;
        W=-180;
    }
    if (coresvis==1) showcores();
    map.DeleteAllShapes();
}

function rezone()
{
    if (N==0 || S==0 || E==0 || W==0) return;
    var points = new Array(
    new VELatLong(N,E),
    new VELatLong(N,W),
    new VELatLong(S,W),
    new VELatLong(S,E),
    new VELatLong(N,E));
    poly = new VEShape(VEShapeType.Polyline,points);
    poly.SetLineWidth(1);
    poly.SetLineColor(new VEColor(255,0,0,1.0));
    poly.HideIcon();
    map.SetMapView(points);
    map.AddShape(poly);
}

function Requestcores(url) 
{
    var http_request = false;

    if (window.XMLHttpRequest && !(window.ActiveXObject)) 
    {
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) 
        {
            http_request.overrideMimeType('text/xml');
        }
    } 
    else if (window.ActiveXObject) 
    {
        try 
        {
            http_request = new ActiveXObject("MSXML2.XMLHTTP.6.0");
        } 
        catch(e) 
        {
            try 
            {
                http_request = new ActiveXObject("MSXML2.XMLHTTP.3.0");
            } 
            catch(e) 
            {
                try 
                {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                } 
                catch(e) 
                {
                    try 
                    {
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    } 
                    catch(e) {}
                }
            }
        }
    }
    else
    {
        alert('Your browser does not support components of this web site');
    }
    if (!http_request) {
        alert('Cannot create an XMLHTTP instance');
        return false;
    }
    http_request.onreadystatechange = function() { coresready(http_request); };
    http_request.open('GET', url, true);
    http_request.send(null);

}

function coresready(http_request) 
{
    if (http_request.readyState == 4) 
    {
        if (http_request.status == 200) 
        {
            var xmldoc = http_request.responseXML;
            var xmlobj=xmldoc.documentElement;
            var count=0;
            var newShapes = new Array();
            var coreid;
            var Name;
            var lat;
            var longi;
            var proj;
            for (var i=0;i<xmlobj.childNodes.length;i++)
            {
                if (xmlobj.childNodes[i].nodeType == 1)
                {
                    if (xmlobj.childNodes[i].getElementsByTagName("Drillhole_ID")[0].text)   // IE 7
                    {
                        coreid = xmlobj.childNodes[i].getElementsByTagName("Drillhole_ID")[0].text;
                        Name = xmlobj.childNodes[i].getElementsByTagName("Name")[0].text;
                        lat = parseFloat(xmlobj.childNodes[i].getElementsByTagName("Latitude")[0].text);
                        longi = parseFloat(xmlobj.childNodes[i].getElementsByTagName("Longitude")[0].text);
                        proj=undefined;
                        if (xmlobj.childNodes[i].getElementsByTagName("Project")[0]!=undefined) proj = xmlobj.childNodes[i].getElementsByTagName("Project")[0].text;
                    }
                    else if (xmlobj.childNodes[i].getElementsByTagName("Drillhole_ID")[0].nodeValue)  // others ??
                    {
                        coreid = xmlobj.childNodes[i].getElementsByTagName("Drillhole_ID")[0].nodeValue;
                        Name = xmlobj.childNodes[i].getElementsByTagName("Name")[0].nodeValue;
                        lat = parseFloat(xmlobj.childNodes[i].getElementsByTagName("Latitude")[0].nodeValue);
                        longi = parseFloat(xmlobj.childNodes[i].getElementsByTagName("Longitude")[0].nodeValue);
                        proj=undefined;
                        if (xmlobj.childNodes[i].getElementsByTagName("Project")[0]!=undefined) proj = xmlobj.childNodes[i].getElementsByTagName("Project")[0].nodeValue;
                    }
                    else if (xmlobj.childNodes[i].getElementsByTagName("Drillhole_ID")[0].textContent)  // Moz/Safari
                    {
                        coreid = xmlobj.childNodes[i].getElementsByTagName("Drillhole_ID")[0].textContent;
                        Name = xmlobj.childNodes[i].getElementsByTagName("Name")[0].textContent;
                        lat = parseFloat(xmlobj.childNodes[i].getElementsByTagName("Latitude")[0].textContent);
                        longi = parseFloat(xmlobj.childNodes[i].getElementsByTagName("Longitude")[0].textContent);
                        proj=undefined;
                        if (xmlobj.childNodes[i].getElementsByTagName("Project")[0]!=undefined) proj = xmlobj.childNodes[i].getElementsByTagName("Project")[0].textContent;
                    }
                    var pin = new VEShape(VEShapeType.Pushpin,new VELatLong(lat,longi));
                    pin.SetTitle("");
                    var coreids = coreid.split(",");
                    var names = Name.split(",");
                    for (var j=0;j<coreids.length;j++)
                    {
                        pin.SetDescription(pin.GetDescription()+"<a href=\"details.aspx?coreid=" + coreids[j] + "\">"+names[j]+"</a><br/>");
                                              
                    }
                    if ( coreids.length >1) pin.SetCustomIcon("<img src='images/x_blue.gif' />");
                    else if(xmlobj.childNodes[i].getElementsByTagName("HyLogged")[0].text=="True" || xmlobj.childNodes[i].getElementsByTagName("HyLogged")[0].nodeValue=="True" || xmlobj.childNodes[i].getElementsByTagName("HyLogged")[0].textContent=="True") pin.SetCustomIcon("<img src='images/x_green.gif' />");
                    else pin.SetCustomIcon("<img src='images/x.gif' />");                        
                    newShapes.push(pin);
                    count++;
                }
            }
            pinlayer.AddShape(newShapes);
        } 
        else 
        {
            alert('There was a problem with the request.');
        }
    }
}

function showcores()
{
    if (coresvis==1) 
    {
        map.DeleteShapeLayer(pinlayer);
        pinlayer = new VEShapeLayer();
        map.AddShapeLayer(pinlayer);
        coresvis=0;
        document.getElementById("coresvisible").value="0";
        document.getElementById(button2id).style.visibility="hidden";
        document.getElementById(button1id).style.visibility="visible";
        document.getElementById(button2id).style.display="none";
        document.getElementById(button1id).style.display="";
    }
    else
    {
        Requestcores("GETcores.aspx?N="+N+"&S="+S+"&E="+E+"&W="+W+"&comm="+comm+"&zoom="+map.GetZoomLevel());
        coresvis=1;
        document.getElementById("coresvisible").value="1";
        document.getElementById(button1id).style.visibility="hidden";
        document.getElementById(button2id).style.visibility="visible";
        document.getElementById(button1id).style.display="none";
        document.getElementById(button2id).style.display="";
    }
}

function showlibraries()
{
    if (libvis==1) 
    {
        map.DeleteShapeLayer(liblayer);
        liblayer = new VEShapeLayer();
        map.AddShapeLayer(liblayer);
        libvis=0;
        document.getElementById(button4id).style.visibility="hidden";
        document.getElementById(button3id).style.visibility="visible";
        document.getElementById(button4id).style.display="none";
        document.getElementById(button3id).style.display="";
    }
    else
    {
        Requestlibraries("GETlibraries.aspx?N="+N+"&S="+S+"&E="+E+"&W="+W);
        libvis=1;
        document.getElementById(button3id).style.visibility="hidden";
        document.getElementById(button4id).style.visibility="visible";
        document.getElementById(button3id).style.display="none";
        document.getElementById(button4id).style.display="";
    }
}

function clearcores()
{
    map.DeleteShapeLayer(pinlayer);
    pinlayer = new VEShapeLayer();
    map.AddShapeLayer(pinlayer);
}

function refreshcores()
{
    if (coresvis==1) 
    { 
        Requestcores("GETcores.aspx?N="+N+"&S="+S+"&E="+E+"&W="+W+"&comm="+comm+"&zoom="+map.GetZoomLevel());
    }
    if (libvis==1) 
    { 
        Requestlibraries("GETlibraries.aspx?N="+N+"&S="+S+"&E="+E+"&W="+W);
    }
}

function Requestlibraries(url) 
{
    var http_request = false;

    if (window.XMLHttpRequest) 
    {
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) 
        {
            http_request.overrideMimeType('text/xml');
        }
    } 
    else if (window.ActiveXObject) 
    {
        try 
        {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch (e) 
        {
            try 
            {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch (e) {}
        }
    }

    if (!http_request) {
        alert('Cannot create an XMLHTTP instance');
        return false;
    }
    http_request.onreadystatechange = function() { librariesready(http_request); };
    http_request.open('GET', url, true);
    http_request.send(null);

}

function librariesready(http_request) 
{

    if (http_request.readyState == 4) 
    {
        if (http_request.status == 200) 
        {
            var xmldoc = http_request.responseXML;
            var xmlobj=xmldoc.documentElement;
            var count=0;
            var newShapes = new Array();
            var libraryid;
            var name;
            var lat;
            var longi;
            for (var i=0;i<xmlobj.childNodes.length;i++)
            {
                if (xmlobj.childNodes[i].nodeType == 1)
                {
                    if(xmlobj.childNodes[i].getElementsByTagName("Library_ID")[0].text)
                    {
                        libraryid = xmlobj.childNodes[i].getElementsByTagName("Library_ID")[0].text;
                        name = xmlobj.childNodes[i].getElementsByTagName("Name")[0].text;
                        lat = parseFloat(xmlobj.childNodes[i].getElementsByTagName("Latitude")[0].text);
                        longi = parseFloat(xmlobj.childNodes[i].getElementsByTagName("Longitude")[0].text);
                    }
                    else if(xmlobj.childNodes[i].getElementsByTagName("Library_ID")[0].nodeValue)
                    {
                        libraryid = xmlobj.childNodes[i].getElementsByTagName("Library_ID")[0].nodeValue;
                        name = xmlobj.childNodes[i].getElementsByTagName("Name")[0].nodeValue;
                        lat = parseFloat(xmlobj.childNodes[i].getElementsByTagName("Latitude")[0].nodeValue);
                        longi = parseFloat(xmlobj.childNodes[i].getElementsByTagName("Longitude")[0].nodeValue);
                    }
                    else if(xmlobj.childNodes[i].getElementsByTagName("Library_ID")[0].textContent)
                    {
                        libraryid = xmlobj.childNodes[i].getElementsByTagName("Library_ID")[0].textContent;
                        name = xmlobj.childNodes[i].getElementsByTagName("Name")[0].textContent;
                        lat = parseFloat(xmlobj.childNodes[i].getElementsByTagName("Latitude")[0].textContent);
                        longi = parseFloat(xmlobj.childNodes[i].getElementsByTagName("Longitude")[0].textContent);
                    }
                    var pin = new VEShape(VEShapeType.Pushpin,new VELatLong(lat,longi));
                    pin.SetTitle("");
                    pin.SetDescription("<a href=\"Library_Details.aspx?libraryid=" + libraryid + "\">"+name+"</a><br/>");
                    pin.SetCustomIcon("<img src='images/library.gif' />");                        
                    liblayer.AddShape(pin);
                    count++;
                }
            }
            pinlayer.AddShape(newShapes);
        } 
        else 
        {
            alert('There was a problem with the request.');
        }
    }
}

