var temp = document.location.href;
var currentpagename = temp.substring(temp.indexOf('northcarolina/'), temp.length - 5);
//document.write(pagename + '<br>');
//document.write(temp + '<br>');
var xmlfile;
var myLatlng;
if (temp.indexOf('sanfordncneighborhoods') > 0) {
    zoomlevel = 9;
    xmlfile = "/xml/sanfordnc.xml";
    myLatlng = new google.maps.LatLng(35.4917, -79.2224);
} else if (temp.indexOf('sanfordncgatedcommunities') > 0) {
    zoomlevel = 10;
    xmlfile = "/xml/sanfordncgatedcommunities.xml";
    myLatlng = new google.maps.LatLng(35.39000, -79.05344);
} else if (temp.indexOf('sanfordncgolfcoursecommunities') > 0) {
    zoomlevel = 10;
    xmlfile = "/xml/sanfordncgolfcoursecommunities.xml";
    myLatlng = new google.maps.LatLng(35.41397, -79.10455);
} else if (temp.indexOf('leecountyncneighborhoods') > 0) {
    zoomlevel = 11;
    xmlfile = "/xml/leecountyncneighborhoods.xml";
    myLatlng = new google.maps.LatLng(35.45500, -79.19393);
} else if (temp.indexOf('harnettcountyncneighborhoods') > 0) {
    zoomlevel = 11;
    xmlfile = "/xml/harnettcountyncneighborhoods.xml";
    myLatlng = new google.maps.LatLng(35.29356, -79.04400);
} else {
    // Page Is not an Overview Page
    xmlfile = "/xml/sanfordnc.xml";
    zoomlevel = 15;
    myLatlng = new google.maps.LatLng(35.4917, -79.2224);
}

var map = null;
var markerBounds = null;
var markers = [];
var markertypes = [];
var infowindows = [];
var htmls = [];
var points = [];
var zoomranges1 = [];
var zoomranges2 = [];
var zoomlevel;
var infowindowLevel = 0;

//var sale_image = new google.maps.MarkerImage("sale.png", new google.maps.Size(32, 32));

function createXmlHttpRequest() {
    try {
        if (typeof ActiveXObject != 'undefined') {
            return new ActiveXObject('Microsoft.XMLHTTP');
        } else if (window["XMLHttpRequest"]) {
            return new XMLHttpRequest();
        }
    } catch (e) { changeStatus(e); }
    return null;
};

function downloadUrl(url, callback) {
    var status = -1;
    var request = createXmlHttpRequest();
    if (!request) { return false; }
    request.onreadystatechange = function() { if (request.readyState == 4) { try { status = request.status; } catch (e) { } if (status == 200) { callback(request.responseXML, request.status); request.onreadystatechange = function() { }; }}}
    request.open('GET', url, true);
    try { request.send(null); } catch (e) { changeStatus(e); }
};


function xmlParse(str) {
    if (typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined') { var doc = new ActiveXObject('Microsoft.XMLDOM'); doc.loadXML(str); return doc; }
    if (typeof DOMParser != 'undefined') { return (new DOMParser()).parseFromString(str, 'text/xml');}
    return createElement('div', null);
}

/** Appends a JavaScript file to the page. @param {string} url */
function downloadScript(url) { var script = document.createElement('script'); script.src = url; document.body.appendChild(script); }

function createMarker(latlng, pagename, title, html, zoomrange1, zoomrange2, markertype) {
    var infowindow = new google.maps.InfoWindow({ content: html });
    var marker;
    if (temp.indexOf('sanfordncneighborhoods') > 0) {
        marker = new google.maps.Marker({ position: latlng, map: map, title: title }, zoomrange1, zoomrange2);
        markers[pagename] = marker;
        zoomranges1[pagename] = zoomrange1;
        zoomranges2[pagename] = zoomrange2;
        markertypes[pagename] = markertype;
        infowindows[pagename] = infowindow;
        htmls[pagename] = html;
        points[pagename] = latlng;

        switch (markertype) {
            case 'overview': google.maps.event.addListener(marker, 'click', function() { map.setZoom(14); map.setCenter(latlng); }); break;
            case 'neighborhood': google.maps.event.addListener(marker, 'click', function() { infowindow.setZIndex(++infowindowLevel); infowindow.open(map, marker); }); break;
            default: break;
        }
        return marker;
    } else if (temp.indexOf('northcarolina/') > 0) {
        if (pagename == currentpagename) {
            marker = new google.maps.Marker({ position: latlng, map: map, title: title }, 0, 17);
            markers[pagename] = marker;
            zoomranges1[pagename] = 0;
            zoomranges2[pagename] = 17;
            markertypes[pagename] = markertype;
            infowindows[pagename] = infowindow;
            htmls[pagename] = html;
            points[pagename] = latlng;

            switch (markertype) {
                case 'overview': google.maps.event.addListener(marker, 'click', function() { map.setZoom(14); map.setCenter(latlng); }); break;
                case 'neighborhood': google.maps.event.addListener(marker, 'click', function() { infowindow.setZIndex(++infowindowLevel); infowindow.open(map, marker); }); break;
                default: break;
            }
            
            return marker;
        } else { return null; }
    } else {
        marker = new google.maps.Marker({ position: latlng, map: map, title: title }, 0, 17);
        markers[pagename] = marker;
        zoomranges1[pagename] = 0;
        zoomranges2[pagename] = 17;
        markertypes[pagename] = markertype;
        infowindows[pagename] = infowindow;
        htmls[pagename] = html;
        points[pagename] = latlng;

        switch (markertype) {
            case 'overview': google.maps.event.addListener(marker, 'click', function() { map.setZoom(14); map.setCenter(latlng); }); break;
            case 'neighborhood': google.maps.event.addListener(marker, 'click', function() { infowindow.setZIndex(++infowindowLevel); infowindow.open(map, marker); }); break;
            default: break;
        }
        return marker;
    }
}

function showMarkers(markertype) {
    for (var name in markers) {
        if (markertype != "") {
            if (markertypes[name] == markertype) {
                //if (markerBounds.contains(points[name]) == true) {
                //document.write('point in: ' + points[name] + '<br>');
                markers[name].visible = true;
                // }  else { document.write('point out: ' + points[name] + '<br>'); }
            }
            else { markers[name].visible = false; }
        } else {
        if (zoomranges1[name] <= zoomlevel && zoomlevel <= zoomranges2[name]) {
            markers[name].visible = true;
        } else { markers[name].visible = false; }
        }
    }
}

function showMarkersByPagename(mypagename) { markers[mypagename].visible = true; }

function initialize() {
    var myOptions = { zoom: zoomlevel, center: myLatlng, mapTypeId: google.maps.MapTypeId.HYBRID };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    google.maps.event.addListener(map, 'zoom_changed', function() {
        zoomlevel = map.getZoom();
        if (temp.indexOf('sanfordncneighborhoods') > 0) {
            switch (zoomlevel) {
                case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: showMarkers('overview'); break;
                case 11: case 12: case 13: case 14: case 15: case 16: case 17: default: showMarkers('neighborhood'); break;
            }
        }        
    });
    
    downloadUrl(xmlfile, function(data) {
        var markerz = data.documentElement.getElementsByTagName("marker");
        //document.write(markerz.length);

        for (var i = 0; i < markerz.length; i++) {
            var latlng = new google.maps.LatLng(parseFloat(data.documentElement.getElementsByTagName("lat")[i].childNodes[0].nodeValue), parseFloat(data.documentElement.getElementsByTagName("lng")[i].childNodes[0].nodeValue));
            var marker = createMarker(latlng, data.documentElement.getElementsByTagName("pagename")[i].childNodes[0].nodeValue, data.documentElement.getElementsByTagName("name")[i].childNodes[0].nodeValue, data.documentElement.getElementsByTagName("html")[i].childNodes[0].nodeValue, data.documentElement.getElementsByTagName("zoomrange1")[i].childNodes[0].nodeValue, data.documentElement.getElementsByTagName("zoomrange2")[i].childNodes[0].nodeValue, data.documentElement.getElementsByTagName("markertype")[i].childNodes[0].nodeValue);     
        }
        showMarkers('');

        if (temp.indexOf('northcarolina/') > 0) {
            map.setCenter(points[currentpagename]);
            infowindows[currentpagename].open(map, markers[currentpagename]);
            //showMarkers('neighborhood');
            markers[currentpagename].visible = true;
        }       
    });
}

