﻿var map;
var geocoder;
var curBrand;
   
function load() {
  if (GBrowserIsCompatible()) {
    // setup the map
    map = new GMap2(document.getElementById('map'));
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
    map.setCenter(new GLatLng(22.281933,114.156434), 13);
    showStores('HB'); // initial view
  }
}

function createMarker(point, name, address1, address2, address3, phone, fax) {
  var marker = new GMarker(point);
  var html = '<div class="gmapMarker"><b>' + name + '</b> <br/>' + address1 + '<br/>' + address2 + '<br/>Phone: ' + phone + '&nbsp;&nbsp;Fax: ' + fax + '</div>';
  GEvent.addListener(marker, 'click', function() {
    marker.openInfoWindowHtml(html);
  });
  return marker;
}

function createSidebarEntry(marker, name, address1, address2, address3, phone, fax) {
  var div = document.createElement('div');
  var html = '<b>' + name + '</b> <br/>' + address1 + '<br/>' + address2 + '<br/>Phone: ' + phone + '&nbsp;&nbsp;Fax: ' + fax;
  div.innerHTML = html;
  div.setAttribute("class", "sidebarEntry");
  div.style.cursor = 'pointer';
  div.style.marginBottom = '5px'; 
  GEvent.addDomListener(div, 'click', function() {
    GEvent.trigger(marker, 'click');
  });
  GEvent.addDomListener(div, 'mouseover', function() {
    div.style.backgroundColor = '#262020';
    div.style.color = '#D2A97C';
  });
  GEvent.addDomListener(div, 'mouseout', function() {
    div.style.backgroundColor = '#000';
    div.style.color = '#e1e1e1';
  });
  return div;
}

function showStores(brand) {
 var brandCode = brand.replace(/^\s+|\s+$/g, '');
 curBrand = brandCode;
 var region = document.getElementById('regionSelect').value;
 var langCode = document.getElementById('_lang').value;
 var searchUrl = '/api/default.ashx?call=getstorelist&brand=' + brandCode + '&region=' + region + '&langCode=' + langCode;  
var img = document.getElementById('brandImage');
img.src = '/images/brands/' + brandCode + '.jpg';
img.alt = brandCode;
 GDownloadUrl(searchUrl, function(data, responseCode) {
    if (responseCode == 200) {
       var xml = GXml.parse(data);
       var markers = xml.documentElement.getElementsByTagName('address');
       map.clearOverlays();

       var sidebar = document.getElementById('shopList');
       sidebar.innerHTML = '';
       if (markers.length == 0) {
         sidebar.innerHTML = 'No results found.';
         map.setCenter(new GLatLng(22.281933,114.156434), 13);
         return;
       }

       var bounds = new GLatLngBounds();
       for (var i = 0; i < markers.length; i++) {
         var name = markers[i].getAttribute('name');
         var address1 = markers[i].getAttribute('address1');
         var address2 = markers[i].getAttribute('address2');
         var address3 = markers[i].getAttribute('address3');
         var phone = markers[i].getAttribute('phone');
         var fax = markers[i].getAttribute('fax');
         var point = new GLatLng(parseFloat(markers[i].getAttribute('gmaplat')),
                                 parseFloat(markers[i].getAttribute('gmaplong')));
         var marker = createMarker(point, name, address1, address2, address3, phone, fax);
         map.addOverlay(marker);
         var sidebarEntry = createSidebarEntry(marker, name, address1, address2, address3, phone, fax);
         sidebar.appendChild(sidebarEntry);
         bounds.extend(point);
       }
       if (region != 'Macau') {
        map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
       } else {
        map.setCenter(bounds.getCenter(), 13);
       }
   } else if (responseCode == -1) {
        alert('Data request time out. Please try again later!');
   } else {
        alert('Store Location Data File Retrieval Error. Please try again later!');
   }
 });
}

addLoadEvent(load);

// arrange for our onunload handler to 'listen' for onunload events
if (window.attachEvent) {
    window.attachEvent("onunload", function() {
        GUnload();      // Internet Explorer
    });
} else {
    window.addEventListener("unload", function() {
        GUnload(); // Firefox and standard browsers
    }, false);
}