﻿include("/js/Constants.js");
include("/js/GeoMaths.js");
include("/js/MapElements.js");
include("/js/AjaxFunctions.js");

function ToggleContent(obj, type)
{
    if (type == "V")
    {
        if (document.getElementById('chkShowV').checked == true)
        {
            obj.className='video';
            document.getElementById('chkShowV').checked = false;
        }
        else
        {
            obj.className='video act';
            document.getElementById('chkShowV').checked = true;
        }
    }
    else if (type == "P")
    {
        if (document.getElementById('chkShowP').checked == true)
        {
            obj.className='photo';
            document.getElementById('chkShowP').checked = false;
        }
        else
        {
            obj.className='photo act';
            document.getElementById('chkShowP').checked = true;
        }
    }
    else if (type == "A")
    {
        if (document.getElementById('chkShowA').checked == true)
        {
            obj.className='audio';
            document.getElementById('chkShowA').checked = false;
        }
        else
        {
            obj.className='audio act';
            document.getElementById('chkShowA').checked = true;
        }
    }
    else if (type == "W")
    {
        if (document.getElementById('chkShowW').checked == true)
        {
            obj.className='written';
            document.getElementById('chkShowW').checked = false;
        }
        else
        {
            obj.className='written act';
            document.getElementById('chkShowW').checked = true;
        }
    }

    reDrawContent();
}

function AddEditSquareMileFromAddress()
{
    var address = document.getElementById(txtaddress).value;
    var geocoder = new GClientGeocoder();

    geocoder.getLatLng(address,
        function(point) 
        {
            if (!point) 
            {
                alert(address + " not found");
            } 
            else 
            {
                AddEditSquareMile(point, txtlat, txtlon);
                map.setCenter(point, 12);
            }
        }
    );
}

function AddEditSquareMileFromTextBoxes()
{
    var retval = false;
    var lat = parseFloat(document.getElementById(txtlat).value);
    var lon = parseFloat(document.getElementById(txtlon).value);
            
    if (!isNaN(lat) && !isNaN(lon))
    {
        var point = new GLatLng(lat, lon);
        AddEditSquareMile(point, txtlat, txtlon);
        map.setCenter(point, 12);
        retval = true;
    }
    
    return retval;    
}

function AddEditSquareMile(point, txtlat, txtlon)
{
    temppoint = point;
    
    var ActiveIcon;
    ActiveIcon = {}
    ActiveIcon.icon = SquareMileActiveIcon;
    ActiveIcon.draggable = true;
    ActiveIcon.clickable = false;
    ActiveIcon.dragCrossMove = true;

    tempmarker = GenerateMarker(point, "", "", ActiveIcon, 0);
    tempsquare = GenerateSquareMile(point, "", "");

    document.getElementById(txtlat).value = point.lat();
    document.getElementById(txtlon).value = point.lng();

    GEvent.addListener(tempmarker,'dragend',
        function()
        {
            temppoint = this.getPoint();
            tempsquare = GenerateSquareMile(this.getPoint(), "", "");
            document.getElementById(txtlat).value = this.getPoint().lat();
            document.getElementById(txtlon).value = this.getPoint().lng();
            reDraw(true, false);
        }
    );

    GEvent.addListener(tempmarker,'dragstart',
        function()
        {
            map.removeOverlay(tempsquare);
        }
    );
}

function AddEditMarkerFromTextBoxes()
{
    var retval = false;
    var lat = parseFloat(document.getElementById(txtlat).value);
    var lon = parseFloat(document.getElementById(txtlon).value);
            
    if (!isNaN(lat) && !isNaN(lon))
    {
        var point = new GLatLng(lat, lon);
        AddEditMarker(point, txtlat, txtlon);
        retval = true;
    }
    
    return retval;    
}


function AddEditMarker(point, txtlat, txtlon)
{
    temppoint = point;
    tempmarker = GenerateMarker(point, "", "", "", 0);
    document.getElementById(txtlat).value = point.lat();
    document.getElementById(txtlon).value = point.lng();
    map.addOverlay(tempmarker);
    
    GEvent.addListener(tempmarker,'click',
        function()
        {
            map.removeOverlay(tempmarker);
            document.getElementById(txtlat).value = "";
            document.getElementById(txtlon).value = "";
        }
    );
}

function addSquareMarkersToMap()
{
    try
    {
        if (temppoint != null)
        {
            map.addOverlay(tempmarker);
        }
    }
    catch (err) { }
    
    MakeAJAXRequest("SquareMiles", "parseSquareMarkersXML");    
}

function addSquaresToMap()
{
    try
    {
        if (temppoint != null)
        {
            map.addOverlay(tempsquare);
        }
    }
    catch (err) { }

    MakeAJAXRequest("SquareMiles", "parseSquareMilesXML");    
}

function addSquareToMap()
{
    try
    {
        if (temppoint != null)
        {
            map.addOverlay(tempsquare);
        }
    }
    catch (err) { }

    MakeAJAXRequest("SingleMile", "parseSquareMilesXML");    
}

function reDraw(markerandsquare) 
{
    map.clearOverlays();
    
    if (map.getZoom() > 11)
    {
        addSquaresToMap();
        
        if (markerandsquare)
        {
            addSquareMarkersToMap();
        }
    }
    else
    {
        addSquareMarkersToMap();

        if (markerandsquare)
        {
            addSquaresToMap();
        }
    }
}

function reDrawConnections() 
{
    map.clearOverlays();
    
    if (map.getZoom() > 11)
    {
        MakeAJAXRequest("SquareMiles", "parseSquareMilesXMLWithConnections");    
        MakeAJAXRequest("Content", "parseContentXML");
    }
    else
    {
        MakeAJAXRequest("SquareMiles", "parseSquareMarkersXMLWithConnections");
    }
}

function reDrawContent() 
{
    map.clearOverlays();
    map.addOverlay(Mile);
    MakeAJAXRequest("Content", "parseContentXML");
}

function centerOnSquare(lat, lon) 
{
    map.getInfoWindow().hide();
    map.setCenter(new GLatLng(lat, lon), 14);
    
}

function centerOnContent(lat, lon) 
{
    map.getInfoWindow().hide();
    map.setCenter(new GLatLng(lat, lon), 15);
    
}

function fitMap( map, points ) 
{
    var bounds = new GLatLngBounds();
                
    for (var i=0; i< points.length; i++) 
    {
        bounds.extend(points[i]);
    }
            
    map.setZoom(map.getBoundsZoomLevel(bounds));
    map.setCenter(bounds.getCenter());
}