EMS.Services.communicationMode = "CrossDomain";

var map, geocoder;
var skipHideArrow = false;
var iconSource;
window.onload = loaded;

function loaded() {
    iconSource = new OpenLayers.Icon(iconUrl, new OpenLayers.Size(27, 30), new OpenLayers.Pixel(-27,-30));
    geocoder = new EMS.Services.Geocoder();
    map = new EMS.Services.Map('map', { onInit: setupMap });
    
    // maps
    map.events.register("zoomend", this, hideArrow);
    map.events.register("click", this, hideArrow);

    // for current company mappings
    if (typeof(Sys.WebForms) != "undefined") {
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(mapCurrentCompany);
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(FaceBookInit);
    }
    mapCurrentCompany();
    // all nominations
    mapNominations();
}

// setup map opportunity
function setupMap(theMap) {
    //var lonlat = new EMS.LonLat(144.96291, -37.813585);
    //map.setCenter(lonlat, 12);
}

// map current company
function mapCurrentCompany() {
    try
    {
    // get coods
    var hf = ObjById(mapField);
    var hfm = ObjById(mapModeField);
    var latlon = hf.value.split("|");
    if (latlon.length == 2) {
        if (hfm.value == "1") {
            am(latlon[0], latlon[1], false, null);
        }
        var emsLonLat = new EMS.LonLat((latlon[0] - 0) + 0.0028, (latlon[1] - 0) + 0.0012);
        skipHideArrow = true;
        map.setCenter(emsLonLat, 12);
        skipHideArrow = false;
    }
    hf.value = "";
    hfm.value = "";
    } 
    catch (ex) {
    }
}

// add marker to map
function am(lon, lat, center, id) {
    var lonlat = new EMS.LonLat(lon, lat);

    // add marker to map
    var icon = iconSource.clone();
    var marker = new OpenLayers.Marker(lonlat, icon);
    map.markersLayer.addMarker(marker);

    if (id != null) {
        marker.events.register("click", this.marker, markerClickHandler(id));
    }

    // center map
    if (center) {
        map.setCenter(lonlat, 5);
    }
    return lonlat;
    tryRunPngFix();
}

// handle arrow hide
function hideArrow() {
    if (!skipHideArrow) {
        ReFlexJQuery("#mapArrowNominated").hide("fast");
        ReFlexJQuery("#mapArrowFound").hide("fast");        
    }
}

// handle marker click
function markerClickHandler(id) {
    return function(e) {
        var hf = ObjById(alreadyMapClickField);
        hf.value = id;
        __doPostBack(alreadyMapUpdateId, "");
    }
} 

// jump to marker on map
function jumpToMarker(lon, lat) {
    if (lon == 0 && lat == 0)
        alert("Sorry, we don't have a location for this nomination.");
    else {
        try {
            var emsLonLat = new EMS.LonLat(lon, lat);
            map.setCenter(emsLonLat, 12);
        }
        catch (ex) {
            alert("Unable to locate this nomination.\n\nIf the map is still loading please wait for it to\ncomplete, then try again.");
        }        
    }
}

// total check
function totalCheckSelected(source, eventArgs) {
    WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(searchShadowUniqueId, "", true, "", "", false, true));
}

function totalCheckBusy() {
    ReFlexJQuery(".autoCompleteBusy").show(); 
}
function totalCheckComplete() {
    ReFlexJQuery(".autoCompleteBusy").hide(); 
}

// gets object by id
function ObjById(id) {
    if (document.getElementById)
        var returnVar = document.getElementById(id);
    else if (document.all)
        var returnVar = document.all[id];
    else if (document.layers)
        var returnVar = document.layers[id];
    return returnVar;
}

// tries to run png fix
function tryRunPngFix() {
    try {
        runPngFix();
    }
    catch (ex){ }
}