﻿// Javascript JGospelMap class
function JGospelMap(mapDiv)
{
    this.mapDiv = mapDiv;
    
    this.zoom = 15;
    this.pinID = 1;
    this.map = null;
    this.latLongArray = new Array();
    
    this.repeatSearch = 0;
    
    // GetMap initialize Virtual Earth Map
    this.GetMap = function()
    {
        var ffv = 0;
        var ffn = "Firefox/"
        var ffp = navigator.userAgent.indexOf(ffn);

        // If the browser is Firefox get the version number
        if (ffp != -1) 
        {
            ffv = parseFloat(navigator.userAgent.substring(ffp + ffn.length));
            // If we're using Firefox 1.5 or above override the Virtual Earth drawing functions to use SVG
            if (ffv != 1.5) 
            {
                Msn.Drawing.Graphic.CreateGraphic=function(f,b) { return new Msn.Drawing.SVGGraphic(f,b) }
            }
        }

        this.map = new VEMap(this.mapDiv);
        
        this.map.LoadMap(null, null, 'r', false, VEMapMode.Mode2D, false);
                
        // add a custom control to minimize dashboard
        var dashHead = document.getElementById("navAction_header");
       
        if (dashHead != null)
        {
            var minMaxControl = dashHead.lastChild;
            
            dashHead.innerHTML += "<div style='display:block;vertical-alignment:bottom;cursor:pointer;text-align:right;' "
                                + "title='Show/Hide Dashboard' onclick='MinMaxDash(this);'>&nbsp;-&nbsp;</div>";
            
            dashHead.parentNode.style.textAlign = "left";
        }
    }
    
    // Add a pushpin on the map according to the location of the church
    // parameter: church, a LocalChurch object
    this.AddPushpin = function(name, detail, latitude, longitude)
    {
        if (this.map == null)
            return false;
        
        var me = this;
        
        var latlong = new VELatLong(latitude, longitude);
        var pin = new VEPushpin(
                   this.pinID, 
                   latlong, 
                   "/map/pushpin.aspx?id=" + ( churchSearcher.pageIdx * churchSearcher.pageMax + this.pinID ), 
                   name, 
                   detail
                );
        this.latLongArray[this.pinID-1] = latlong;               
        this.map.AddPushpin(pin);
        this.pinID++;
       
        return;
    }
    
    this.FindLocation = function(address, callBack)
    {
        if (trim(address) != "")
            this.map.Find(null, address, null, null, null, null, null, null, null, null, callBack);
    }
    
    this.GetUpperLeft = function()
    {
        var mv = this.map.GetMapView();
        
        return mv.TopLeftLatLong;
    }
    
    this.GetLowerRight = function()
    {
        var mv = this.map.GetMapView();
        
        return mv.BottomRightLatLong;
    }
    
    this.showSolo = function(isShow, imgID)
    {
        var ppAnchor = document.getElementById(churchSearcher.map.pinID);
        var ppImg = ppAnchor.getElementsByTagName("img")[0];
        
        if ( isShow )
        {
            ppImg.src = ppImg.src.replace("btn_solo.png", "btn_solo_select.png");
            ppImgMouseOver = ppImg.onmouseover;
            ppImgMouseOver();
        }
        else
        {
            ppImg.src = ppImg.src.replace("btn_solo_select.png", "btn_solo.png");
            ppImgMouseOut = ppImg.onmouseout;
            ppImgMouseOut();
        }
        
        swapSolo(imgID);
    }
    
    this.showPushpinHover = function(id)
    {
        var ppAnchor = document.getElementById(id.toString());
        var ppImg = ppAnchor.getElementsByTagName("img")[0];
        
        ppImg.src += "&selected=1";
        ppImgMouseOver = ppImg.onmouseover;
        ppImgMouseOver();
    }
    
    this.hidePushpinHover = function(id)
    {
        var ppAnchor = document.getElementById(id.toString());
        var ppImg = ppAnchor.getElementsByTagName("img")[0];
        
        ppImg.src = ppImg.src.replace("&selected=1", "");
        ppImgMouseOut = ppImg.onmouseout;
        ppImgMouseOut();
    }
}

function MinMaxDash(controller)
{
    var dash = document.getElementById("lowerContainer");
    
    if (dash == null)
       return;
       
    if (dash.style.display != "none")
    {
        dash.style.display = "none";
        controller.innerHTML = "&nbsp;+&nbsp;";
    }
    else
    {
        dash.style.display = "";
        controller.innerHTML = "&nbsp;-&nbsp;";
    }
}
