﻿function Project_CenterSearch(ctlId, searchType) {
    var userZip = document.getElementById(ctlId + "_zipCode").value;
    if (userZip == "")
        return;

    hideMap();
    document.getElementById("FindACenterResults").innerHTML = "";
    document.getElementById("SearchWait").style.display = "block";
    SearchSupport.DoSearch(ctlId, userZip, searchType);
}

function Project_SearchAgain(ctlId, searchType) {
    var zipFromQueryString = document.getElementById(ctlId + '_currentZip').value;
    if (zipFromQueryString != null && zipFromQueryString != "") {
        document.getElementById(ctlId + '_zipCode').value = zipFromQueryString;
        Project_CenterSearch(ctlId, searchType);
    }
}

function Project_ShowDetails(ctlId, locnId) {
    document.getElementById("FindACenterResults").style.display = "none";
    document.getElementById("SearchContainer").style.display = "none";
    SearchSupport.DoDetails(ctlId, locnId);
}

function Project_BackToResults() {
    document.getElementById("FindACenterDetails").style.display = "none";
    document.getElementById("FindACenterResults").style.display = "block";
    document.getElementById("SearchContainer").style.display = "block";
}
var SearchSupport =
{
    DoSearch:
        function(ctlId, userZip, searchType) {
            TitanDisplayServiceWrapper.MakeWebServiceCall("FindACenterWS", NorthwoodsSoftwareDevelopment.Cms.Custom.PageParts.LocalWebServices.FindACenterWS.FindACenterSearch, [ctlId, userZip, searchType], SearchSupport.DisplaySearch, [ctlId, userZip], false);
        },
    DoDetails:
        function(ctlId, locnId) {
            TitanDisplayServiceWrapper.MakeWebServiceCall("FindACenterWS", NorthwoodsSoftwareDevelopment.Cms.Custom.PageParts.LocalWebServices.FindACenterWS.GetLocationDetails, [locnId], SearchSupport.DisplayDetails, [ctlId, locnId], false);
        },
    DisplaySearch:
        function(ctlId, userZip, responseAsJSON) {
            if (responseAsJSON.ResponseHtml != null && responseAsJSON.ResponseHtml != ""){
                document.getElementById("FindACenterResults").innerHTML = responseAsJSON.ResponseHtml;
								// if pagination script is available paginate!
								if (window.paginate && window.jQuery){
									paginate();
								}
						}
            else
                document.getElementById("FindACenterResults").innerHTML = "<p>Could not retrieve results.</p>";

            document.getElementById("SearchWait").style.display = "none";

            if (responseAsJSON.ResponseXml != null) {
                showMap();
                /* Create the bounded Map */
                BoundedMap.CreateBoundedMap(responseAsJSON.MaxLat, responseAsJSON.MaxLong, responseAsJSON.MinLat, responseAsJSON.MinLong);

                SearchSupport.MakePoints(responseAsJSON.ResponseXml, userZip);


                /* Add center address point - will also center the map */
                BoundedMap.MakePointWithMarker(responseAsJSON.UserLat, responseAsJSON.UserLong, 'You are Here');

            }
        },
    DisplayDetails:
        function(ctlId, locnId, response) {
            document.getElementById("FindACenterDetails").style.display = "block";
            document.getElementById("FindACenterDetails").innerHTML = response;
        },
    MakePoints:
        function(xmlString, userZip) {

            // Mozilla and Netscape browsers
            if (document.implementation.createDocument) {
                var parser = new DOMParser()
                doc = parser.parseFromString(xmlString, "text/xml")
                // MSIE
            } else if (window.ActiveXObject) {
                doc = new ActiveXObject("Microsoft.XMLDOM")
                doc.async = "false"
                doc.loadXML(xmlString)
            }

            var locs = doc.getElementsByTagName("Location");

            for (var i = 0; i < locs.length; i++) {

                /* Get the location Information */
                var name = SearchSupport.GetNodeValue(locs[i], 'name');
                var city = SearchSupport.GetNodeValue(locs[i], 'city');
                var state = SearchSupport.GetNodeValue(locs[i], 'state');
                var zip = SearchSupport.GetNodeValue(locs[i], 'zip');
                var distance = SearchSupport.GetNodeValue(locs[i], 'distance');

                var itemNum = SearchSupport.GetNodeValue(locs[i], 'item_rank');

                /* Get Icon information - Add Later */
                var mapIcon = SearchSupport.GetNodeValue(locs[i], 'MapIcon');
                var mapResultIcon = SearchSupport.GetNodeValue(locs[i], 'MapResultIcon');

                /* Get Geocode information */
                var lat = SearchSupport.GetNodeValue(locs[i], 'latitude');
                var lng = SearchSupport.GetNodeValue(locs[i], 'longitude');

                //'<img src=' + mapResultIcon + '>' + '<br/>' +  <-- add this later
                var destinationAddress = name.replace(/ /g, '+').replace(/&/g, '%26') + '+' + city + ',+' + state + '+' + zip;
                var detailsHtml = name + '<br/>' + city + ', ' + state + ' ' + zip + '<br/>';
                if (distance != '0.0')
                    detailsHtml += distance + ' miles';

                detailsHtml += '<br/><a target="_blank" href=\"http://maps.google.com/maps?f=d&source=s_d&hl=en&saddr=' + userZip + '&daddr=' + destinationAddress + '\">Directions</a>';

                BoundedMap.AddMarker(lat, lng, detailsHtml, itemNum, mapIcon);
            }

            BoundedMap.SetPoints();
        },

    GetNodeValue:
        function(obj, tag) {
            try {
                if (obj != null && obj.getElementsByTagName(tag)[0].firstChild != null) {
                    return obj.getElementsByTagName(tag)[0].firstChild.nodeValue
                }
                else {
                    return '';
                }
            }
            catch (err) {
                return '';
            }
        },

    CenterSearchSubmit:
        function(resultsPage, searchCtl) {
            var zip = escape(searchCtl.value);
            if (resultsPage.indexOf("?") > 0)
                location.href = resultsPage + "&userZip=" + zip;
            else
                location.href = resultsPage + "?userZip=" + zip;
        }

}

