﻿var last_address = "";
var last_country = "";
var last_continent = "";
var color_active = "#900";
var color_inactive = "#066";

function show_cont(cont_name){
  if (!cont_name) return false;
  if (last_address) {
    swap_address(last_address);
    last_address = "";
  }
  swap_cont (cont_name);  
  return false;
}

function swap_cont(cont_name){
  if (!cont_name) return false;
  var cont = document.getElementById ("cont_"+cont_name);
  var label = document.getElementById (cont_name);
  var continent = (cont_name.indexOf('l1_') > -1);

  if ((!cont.style.display) || (cont.style.display != 'block')){
    if ((!continent) && (last_country)) swap_cont (last_country);
    if ((continent) && (last_continent)){
      if (last_country){
        swap_cont (last_country);
      }  
      
      swap_cont (last_continent);
    }  
    cont.style.display = 'block';
    label.style.backgroundImage = "url('http://www.hudson.com/officelocator/images/minus.gif')";
    label.style.color = color_active;
    if (!continent) last_country = cont_name;
    if (continent) last_continent = cont_name;
  } else {
    if (!continent) last_country = "";
    if (continent) last_continent = "";
    cont.style.display = 'none';
    label.style.color = color_inactive;
    label.style.backgroundImage = "url('http://www.hudson.com/officelocator/images/plus.gif')";
    
  }
  return false;
}

function show_address (cont_name){
  if (!cont_name) return false;
  if (cont_name.indexOf('_single') > -1) swap_cont (last_country);
  
  if ((last_address) && (cont_name != last_address)){
    swap_address (last_address); 
  }
  
  if (last_address != cont_name){
    swap_address (cont_name);
    last_address = cont_name;
  }

  // select the point on the map (if exists)
  if (map){ 
    // alert (global_addresses[0]);
    for (var i=0;i<global_markers.length;i++){
      if (global_addresses[i] == cont_name){
        map.setCenter(global_markers[i].getPoint(), 15);
        break;
      }
    }
  }  
     
  return false;
}

function show_region (cont_name){
  if (!cont_name) return false;
  var cont = document.getElementById ("cont_"+cont_name);
  //if ((!cont.style.display)){ // || (cont.style.display != 'block')  
    // select the point on the map (if exists)
    if (map && global_regions[cont_name]){ 
      map.setCenter(
        new GLatLng(global_regions[cont_name].lat,global_regions[cont_name].lng),
        global_regions[cont_name].zoom);
    } 
  //}   
  
  if (last_address) {
    swap_address (last_address);
    last_address = "";
  }
  swap_cont(cont_name);
  return false;
}

function swap_address (cont_name){
  if (!cont_name) return false;
  var cont = document.getElementById ("cont_"+cont_name);
  var label = document.getElementById (cont_name);

  if ((!cont.style.display) || (cont.style.display != 'block')){
    label.style.color = color_active;
    cont.style.display = 'block';
    last_address = cont_name;
  } else {
    label.style.color = color_inactive;
    cont.style.display = 'none';
  }
  return false;
}
                                       
// swap the stylesheets                                       
if (document.getElementsByTagName){
  for (var i=0; i <document.getElementsByTagName('link').length;i++){
    if (document.getElementsByTagName('link')[i].title == 'all_open'){
      document.getElementsByTagName('link')[i].disabled = true;
    }  
  }
}

	

function show_path (c1, c2){
  init_region = c1;
  init_address = c2;
}

function show_init_path (){
  if (!init_address){
    show_region (init_region);
  } else {
  show_cont (init_region);
  if (init_address.indexOf('_single') > -1) show_address (init_address); 
  else show_region (init_address);
}
}

function show_direct (address){
  if (address =="") return false;
  if (last_address) {
    swap_address(last_address);
    last_address = "";
  }
  if (last_country){
    swap_cont (last_country);
    last_country = "";
  }  
  if (last_continent){
    swap_cont (last_continent);
    last_continent = "";
  }


  var a = document.getElementById (address);
  var aa;
  var s = "";
  var ids = new Array();
  while (a.nodeName != 'DIV'){
    if (a.nodeName == "UL"){
      s = a.attributes.getNamedItem('id').nodeValue;
      s = s.substr (5);
      ids[ids.length] = s;
    } 
    a = a.parentNode;   
  }

  for (var i=ids.length-1;i>=0;i--){
    swap_cont (ids[i]);
  } 

  swap_address(address);
  return (false);  
}

// -------------------------  Google maps part ---------------------------------
  google.load("maps", "2.x", {locale:"en"});
  var global_markers = new Array();
  var global_addresses = new Array();
  var global_regions = new Array();
  var map;
  var icon;
  var init_region = "";
  var init_address = "";
  
// Creates a marker at the given point with the given XML node
function createMarker(point, node) {  
  var opt = new Object();
  opt.title = node.getAttribute("city");
  opt.icon = icon;
  opt.draggable = true;
  var marker = new GMarker(point, opt);

  GEvent.addListener(marker, "click", function() {    
  show_direct (node.getAttribute("tree_id"));
  map.setCenter(point, 15);   // coordinates + zoom
  });  
  return marker;
}
  
function initialize() {
  map = new google.maps.Map2(document.getElementById("map"));
  map.addControl(new GLargeMapControl());
  map.addControl(new GMapTypeControl());
  map.addControl(new GOverviewMapControl());
  map.setCenter(new GLatLng(-9.79567758282973,4.21875), 1); 
                             
  icon = new GIcon();
  icon.image = "http://www.hudson.com/officelocator/icon.png";
  icon.shadow = "http://www.hudson.com/officelocator/icon-shadow.png";
  icon.iconSize = new GSize(12, 20);
  icon.shadowSize = new GSize(22, 20);
  icon.iconAnchor = new GPoint(6, 20);
  icon.infoWindowAnchor = new GPoint(5, 1);

  GDownloadUrl("/forms/google-maps-data.asp", function(data, responseCode) {
    var xml = GXml.parse(data);  
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) {    
      var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),                            
                              parseFloat(markers[i].getAttribute("lng")));
      var marker = createMarker(point, markers[i]);
      global_markers[global_markers.length] = marker;
      global_addresses[global_addresses.length] = markers[i].getAttribute("tree_id"); 
      map.addOverlay(marker, icon);
    }
    
    var regions = xml.documentElement.getElementsByTagName("region");
    for (var i = 0; i < regions.length; i++) {
      var region = new Object();
      region.lat = parseFloat(regions[i].getAttribute("lat"));
      region.lng = parseFloat(regions[i].getAttribute("lng"));
      region.zoom = parseInt(regions[i].getAttribute("zoom"));
      global_regions[regions[i].getAttribute("id")] = region;
    }     
  });
  setTimeout ('show_init_path()', 500);
}      
google.setOnLoadCallback(initialize);    
  


