﻿// JScript File
function CSuppMap(latitude, longitude, zoom, containerName)
{
    this._Map;
    this._Geocoder;
    this._containerName = containerName;
    this._latitude = latitude;
    this._longitude = longitude;
    this._zoom = zoom;
    this._arrMarker = new Array(); 
    this.fInit = Init;
    this.fAddListener = AddListener;
    this.fClearInstanceListeners = ClearInstanceListeners;
    this.fAddOverlay = AddOverlay;
    this.fRemoveOverlay = RemoveOverlay;
    this.fClearOverlays = ClearOverlays;
    this.fCheckResize = CheckResize;
    this.fSetCenter = SetCenter;
    //#this.fEnableScrollWheelZoom = EnableScrollWheelZoom;//v2.78
    //common
    this.fCreateMarker = CreateMarker;
    this.fAddListenerToControl = AddListenerToControl;
    this.fRemoveListener = RemoveListener;
    return this;
}

function Init()
{
    if (GBrowserIsCompatible()) 
    { 
        this._Map = new GMap2(document.getElementById(this._containerName)); 
        this._Map.setCenter(new GLatLng(this._latitude, this._longitude), this._zoom);
        this._Geocoder = new GClientGeocoder();
        this._Map.addControl(new GLargeMapControl());
        this._Map.addControl(new GScaleControl());
        this._Map.addControl(new GMapTypeControl());
        this._Map.addControl(new ExtMapTypeControl({showTraffic: true,showTrafficKey: false})); 
    }
}
function AddListener(eventName, handlerName)
{
    if(this._Map == null) return null;
    return GEvent.addListener(this._Map, eventName, handlerName);
}
function ClearInstanceListeners()
{
    GEvent.clearInstanceListeners(this._Map);
}
function AddOverlay(obMarker)
{
    if(obMarker == null) return;
    this._arrMarker.push(obMarker);
    this._Map.addOverlay(obMarker);
}
function RemoveOverlay(obMarker)
{
    if(obMarker == null) return;
    this._Map.removeOverlay(obMarker);
    if(this._arrMarker.length > 0)
    {   
        var tmpLatitude;
        var tmpLongitude;
        var mrkLatitude = GetLatitude(obMarker);
        var mrkLongitude = GetLongitude(obMarker);
        for(var i=0; i < this._arrMarker.length; i++)
        {
            tmpGMarker = this._arrMarker[i];
            tmpLatitude = GetLatitude(this._arrMarker[i]);
            tmpLongitude = GetLongitude(this._arrMarker[i]);

            if((mrkLatitude === tmpLatitude) && (mrkLongitude === tmpLongitude))
            {
                this._arrMarker.splice(i,1);
                break;
            }
        }
    }
}
function CheckResize()
{
    this._Map.checkResize();
}
function ClearOverlays()
{
    this._Map.clearOverlays();
}
function EnableScrollWheelZoom()
{
    if(scrollWheelZoomEnabled() == false) this._Map.enableScrollWheelZoom();
}

//other
function GetLatitude(obMarker)
{
    if(obMarker == null) return;
    var tmpGLatLng = obMarker.getLatLng();
    return tmpGLatLng.lat();
}
function GetLongitude(obMarker)
{
    if(obMarker == null) return;
    var tmpGLatLng = obMarker.getLatLng();
    return tmpGLatLng.lng();
}

//common
function CreateMarker(latitude, longitude, bDraggable)
{
    var center = new GLatLng(latitude, longitude);
    if(center == null) return null;
    var marker = new GMarker(center, {draggable: bDraggable});
    if(marker == null) return null;
    return marker;
}
function AddListenerToControl(control, eventName, handlerName)
{
    if(GEvent == null) return null;
    return GEvent.addListener(control, eventName, handlerName);
}
function RemoveListener(hndl)
{
    if(hndl == null) return;
    GEvent.removeListener(hndl);
}
function SetCenter(latitude, longitude, zoom)
{
    this._Map.setCenter(new GLatLng(latitude, longitude), zoom);
}

