﻿/* ---------------------------------------------
Title:      StateIndex JS
Updated:    June 11 2010
----------------------------------------------- */

var nhsMqMap;
var mqCenter;
var mqZoom;
var nhsMapIconShadow;
var nhsMapIconMkt;
var mqState = document.getElementById('state').value;
var partnerId = document.getElementById('partnerId').value;
var siteRoot = document.getElementById('siteRoot').value;
var resourceRoot = document.getElementById('resourceRoot').value;
var brandPartnerId = document.getElementById('brandPartnerId').value;
var mapCenterLat;
var mapCenterLng;

if (brandPartnerId == 333) {
    //move & move partners
    var mqIconMktPath = resourceRoot + "globalresources/move/images/map/marker_market.gif";    
} else {
    //nhs & nhs partners
    var mqIconMktPath = resourceRoot + "globalresources/default/images/map/mkt_icon.gif";
}
var mqIconShadowPath = resourceRoot + "globalresources/default/images/map/marker_shadow.png";


// Run PageStart when page load is complete
//window.onload += PageStart();

function PageStart() {
    var nhsStateIndexMap = document.getElementById('nhsStateIndexMap');
    
    // Check for missing state - i.e. no mqCenterLat or mqCenterLng
    if (document.getElementById('mqCenterLat') == null) {
        nhsStateIndexMap.style.display = "none";
        return false;
    }

    mapCenterLat = document.getElementById('mqCenterLat').value;
    mapCenterLng = document.getElementById('mqCenterLng').value;

    mqZoom = document.getElementById('mqZoomLevel').value;

    mqCenter = new MQA.LatLng(mapCenterLat, mapCenterLng);

    // Create the map object
    nhsMqMap = new MQA.TileMap(document.getElementById('nhsStateIndexMap'), mqZoom, mqCenter, 'map');
    
    nhsMapIconShadow = new MQA.Icon(mqIconShadowPath, 0, 0);

    //Market icon
    nhsMapIconMkt = new MQA.Icon(mqIconMktPath, 40, 37);
    
    // add zoom control
    mqZoomControl = new MQA.ZoomControl();
    nhsMqMap.addControl(mqZoomControl, new MQA.MapCornerPlacement(MQA.MapCorner.TOP_LEFT, new MQA.Size(10,20)));

    // set map size
    nhsStateIndexMap.style.border = "1px solid #000";  
    var mapWidth = nhsStateIndexMap.offsetWidth - 2 + "px";
    //var mapHeight = nhsStateIndexMap.offsetHeight - 2 + "px";
    var mapHeight = "400px";
    nhsMqMap.setSize(new MQA.Size(mapWidth, mapHeight));
    
    getStateMarketMapPois();
}


function getStateMarketMapPois() {
    Nhs.Web.ServiceProxy.NhsServices.GetStateMarketMapPoints(partnerId, mqState, onStateMarketPoiSuccess, onError);
}

function onStateMarketPoiSuccess(result) {

    var poiNodes = result.getElementsByTagName("MapPoi");
    mqPoiCollection = new MQA.ShapeCollection();
    var poiNodesLength = poiNodes.length;

    for (i = 0; i < poiNodesLength; i++) {
        var id = getChildNodeValue(poiNodes[i], "Id");
        var lat = getChildNodeValue(poiNodes[i], "Lat");
        var lng = getChildNodeValue(poiNodes[i], "Lng");
        var title = getChildNodeValue(poiNodes[i], "Title");

        var mqPointLatLng = new MQA.LatLng(lat, lng);
        mqPoint = new MQA.Poi(mqPointLatLng, nhsMapIconMkt);
        mqPoint.setValue('iconOffset', new MQA.Point(-20,-37));
        mqPoint.setValue('shadow', nhsMapIconShadow);
        mqPoint.setValue('infoTitleHTML', "<strong>" + title + "</strong>");
        mqPoint.setValue('key', id);

        MQA.EventManager.addListener(mqPoint, "click", clickPoint);

        mqPoiCollection.add(mqPoint);
    }

    nhsMqMap.replaceShapes(mqPoiCollection);
}

function clickPoint(e) {
    window.location.href = "/communityresults/market-" + this.getKey();
}

function onError(error) {
    HandleError(error.get_message(), '', -1, "onError");
}

// Redirect to error page, it will log the error
function HandleError(message, url, line, fromWhere) {
    var errorUrl = siteRoot + 'Error/?Message=' + GetErrorMessage(message, url, line, fromWhere);
    MakeHttpReq(errorUrl);
}

// Create an error description and attach extra client information to log
function GetErrorMessage(errorMsg, url, line, fromWhere) {
    var message = 'Message: ' + errorMsg + ' \n';

    message += 'Url: ' + window.location.href + ' \n';
    message += 'Line: ' + line + ' \n';
    message += 'CalledFrom:' + fromWhere;
    return message;
}

function MakeHttpReq(url) {
    var xmlhttp;
    xmlhttp = null;
    // code for Mozilla, etc.
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    }
    // code for IE
    else if (window.ActiveXObject) {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    if (xmlhttp != null) {
        xmlhttp.open("GET", url, true);
        xmlhttp.send(null);
    }
}

function getChildNodeValue(parentNode, name) {
    if (parentNode.getElementsByTagName(name)[0].childNodes.length > 0) {
        return parentNode.getElementsByTagName(name)[0].childNodes[0].nodeValue;
    }
    else {
        return "";
    }
}

    
