﻿var map = null;
var geocoder = null;
var gmarkers = [];
var url = null;
var page_bar_html = null;
var side_bar_html = '';
var side_bar_wide_html = '';
var neLng = null;
var neLat = null;
var swLng = null;
var swLat = null;
var searchFieldVal = null;

// Create a base icon for all of our markers that specifies the
// shadow, icon dimensions, etc.
var baseIcon = new GIcon();
baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
baseIcon.iconSize = new GSize(20, 34);
baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);
baseIcon.infoShadowAnchor = new GPoint(18, 25);

function getQueryVariable(variable) {
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (pair[0] == variable) {
            return pair[1];
        }
    }
}

function initialize(locationid) {
    if (GBrowserIsCompatible()) {
        GDownloadUrl('/dataFromId.aspx?id=' + locationid, function(data, responseCode) {
            var xml = GXml.parse(data);
            var markers = xml.documentElement.getElementsByTagName("marker");

            for (var i = 0; i < markers.length; i++) {
                var number = i + 1;
                map = new GMap2(document.getElementById("map"));
                map.addControl(new GSmallZoomControl());
                //map.disableDragging(); 
                var point = new GLatLng(parseFloat(markers[i].getAttribute("flLat")),
                                           parseFloat(markers[i].getAttribute("flLong")));
                var notfriendly = markers[i].getAttribute("intNotFriendly");

                map.setCenter(point, 8);
                buildNearby();
                //var html = buildInfoWindow(markers[i].getAttribute("txtName"));
                createMarker(point, '', i, number, notfriendly);
            }
        }
       )

    }
};

function buildNearby() {
    GDownloadUrl(buildPageUrl(), function (data, responseCode) {
        var xml = GXml.parse(data);
        var xmlpages = xml.documentElement.getElementsByTagName("numofresults");
        for (var i = 0; i < xmlpages.length; i++) {
            pages = xmlpages[i].getAttribute("results");
        }
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {

            var number = i + 1;
            // var point = new GLatLng(parseFloat(markers[i].getAttribute("flLat")),
            //  parseFloat(markers[i].getAttribute("flLong")));                                       
            //  var html = buildInfoWindow(markers[i].getAttribute("intLocationId"), markers[i].getAttribute("txtName"), markers[i].getAttribute("txtAddress"), markers[i].getAttribute("txtAddress2"), markers[i].getAttribute("txtCity"), markers[i].getAttribute("txtState"), markers[i].getAttribute("txtZip"), markers[i].getAttribute("txtPhone"), markers[i].getAttribute("txtWebsite"), markers[i].getAttribute("txtDescription"));
            // gmarkers[i] = createMarker(point, html, i, number);
            if (number < 12) {
                if (side_bar_html.length > 2) {
                   // side_bar_wide_html += '<a href="/place/' + markers[i].getAttribute("txtUrl") + '.aspx">' + constrain(markers[i].getAttribute("txtName"), 32) + '</a>';
                    side_bar_html += '&nbsp|&nbsp;<a href="/place/' + markers[i].getAttribute("txtUrl") + '.aspx">' + constrain(markers[i].getAttribute("txtName"), 32) + '</a>';
                }
                else {
                 //   side_bar_wide_html += '<a href="/place/' + markers[i].getAttribute("txtUrl") + '.aspx">' + constrain(markers[i].getAttribute("txtName"), 32) + '</a>&nbsp|&nbsp;';
                    side_bar_html += '<a href="/place/' + markers[i].getAttribute("txtUrl") + '.aspx">' + constrain(markers[i].getAttribute("txtName"), 32) + '</a>';
                }

            }
        }
        // put the assembled side_bar_html contents into the side_bar div
        // pages = Math.ceil(pages / 10);
        // buildPageBar(pages);
        document.getElementById("side_bar").innerHTML = side_bar_html;
 //       document.getElementById("side_bar_wide").innerHTML = side_bar_wide_html;
    })
};


function constrain(str, n) {
    if (str.length > n) {
        var s = str.substr(0, n);
        var words = s.split(' ');
        if (words.length > 1) {
            words[words.length - 1] = '';
        }
        str = words.join(' ') + '&hellip;'
    }
    return str;
}

function buildPageUrl(pagenumber) {
    if (typeof pagenumber == "undefined") {
        pagenumber = 1;
        var mapbounds = map.getBounds();
        var ne = mapbounds.getNorthEast();
        var sw = mapbounds.getSouthWest();
        neLng = ne.lng();
        neLat = ne.lat();
        swLng = sw.lng();
        swLat = sw.lat();
        // sample URL: data.aspx?neLat=40&neLong=-74&swLong=-111&swLat=30&page=1
        url = '/data.aspx?neLat=' + neLat + '&neLong=' + neLng + '&swLong=' + swLng + '&swLat=' + swLat + '&page=' + pagenumber;

    }
    else {
        url = '/data.aspx?neLat=' + neLat + '&neLong=' + neLng + '&swLong=' + swLng + '&swLat=' + swLat + '&page=' + pagenumber;
    }
    return url;
}

function buildInfoWindow(name) {
    var html = "";
    html = "<div><h2>" + name + "</h2></div>"
    return html;
};



// Creates a marker at the given point with the given number label
function createMarker(point, html, i, number, notfriendly) {
    var nIcon = new GIcon(baseIcon);
    if (notfriendly == 1) {
        nIcon.image = "http://www.cigarplaces.com/images/markers/rmarker" + (i + 1) + ".png";
    }
    else {
        nIcon.image = "http://www.cigarplaces.com/images/markers/marker" + (i + 1) + ".png";
    }
    var marker = new GMarker(point, { icon: nIcon, draggable: false });
    map.addOverlay(marker);
    return marker;
}     
