// JavaScript Document


var words = "";
var autocomplete = new Array();

var autoCompleteField;
var map;
var geocoder;




//GOOGLE MAPS
function initialize() {
  if (GBrowserIsCompatible()) {
	map = new GMap2(document.getElementById("map_canvas"));
	//map.setCenter(new GLatLng(51.5071448, -0.1061959), 2);
	map.setCenter(new GLatLng(47.347546597574926, 8.53311538696289), 15);
	map.setUIToDefault();
	geocoder = new GClientGeocoder();

	
	//Custom Marker // Set up our GMarkerOptions object
	var mecMarker = new GIcon(G_DEFAULT_ICON);
	mecMarker.image = "/themes/blackcandy/images/icons/mapmarker.png";
	markerOptions = { icon:mecMarker };	

 
	
	GDownloadUrl("locationxml", function(data) {
	  var xml = GXml.parse(data);
	  var markers = xml.documentElement.getElementsByTagName("marker");
	  

	  for (var i = 0; i < markers.length; i++) {
		
		//point
		var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
								parseFloat(markers[i].getAttribute("lng")));
		/*if(markers.length == 1) {
		    map.setCenter(point, 2);	
		}*/
		
		//Address
		//var address = markers[i].nodeValue;			
		var address;
		
		//address = markers[i].childNodes[0];
		
		

		if(i == 1) {
			//alert(GXml.value(markers[i].childNodes[1]));
		}		
		
		title = GXml.value(markers[i].childNodes[0]);
		address = GXml.value(markers[i].childNodes[1]);
		phone = GXml.value(markers[i].childNodes[2]);
		fax = GXml.value(markers[i].childNodes[3]);
		email = GXml.value(markers[i].childNodes[4]);
		website = GXml.value(markers[i].childNodes[5]);
		
		
		
		address = "<div class='mapTitle'>" + title + "</div>, " + address + ", " + phone + ", " + fax + ", " + email + ", " + website;
		
		
		 
		
		//alert(address.length);
		
		if(address.length <= 5) {
			address = markers[i].childNodes[1];
			address = address.nodeValue;
		}
			
		
			
		  var marker = new GMarker(point, markerOptions);
		  marker.address = address;
		 
		  GEvent.addListener(marker, "click", function() {
			//format the address
			this.address = adjustMarkerText(this.address);
			this.openInfoWindowHtml(this.address);
		  });
			
		  map.addOverlay(marker);
		
	  }
	  
	});
	
	
	
  }
}


function adjustMarkerText(text) {

	text = text.replace(/,/g, "<br />");
	text = "<div style='font-size:10px; color:#000000;'>" + text + "</div>";
	return text;

}


//Find address and center Map view
function showAddress(address) {
  if (geocoder) {
	geocoder.getLatLng(
	  address,
	  function(point) {
		if (!point) {
		  alert(address + "- address not found. \nTry typing in your city/town or your country to find your nearest MEC office.");
		} else {
		  map.setCenter(point, 4);
		  //var marker = new GMarker(point);
		  //map.addOverlay(marker);
		  //marker.openInfoWindowHtml(address);
		}
	  }
	);
  }
}








//Autocomplete functions
function get_random_suggs(v){ 
   var a=[];
   /*
   var names = ['_first','_second','_third','_forth','_fifth','_fifth','_fifth','_fifth'];   
   for(var i=0;i<names.length;i++) {
     a.push({id:i, value:v+names[i], info:"", extra:"extra fields remains!" });
   }*/
   
   for(var i=0;i<autocomplete.length;i++) {
     
	 tempStr = autocomplete[i];
 	 //tempStr = autocomplete[i].substr(0,v.length);
	 //if(v.toLowerCase() == tempStr.toLowerCase()) {
		 
	 var searchStr = v.toLowerCase(); 
		 
	 if(tempStr.toLowerCase().indexOf(searchStr) >= 0) {
	 	a.push({id:i, value:autocomplete[i], info:"", extra:"extra fields remains!" });
	 }
   }
   
   if(a.length == 0) {
	   a.push({id:i, value:v, info:"", extra:"extra fields remains!" });
   }
   
   return a;
}
function print_sugg(obj){ 

	showAddress(obj.value);

	//$('#searchLocations').value = "test";
	
	//alert(autoCompleteField.val())
	
	//window.location = "our-locations/#" + obj.value;
	
	//$('#info').html('ID: '+obj.id+'<br>VALUE: '+obj.value+'<br>EXTRA: '+obj.extra); 
}

//jQuery init
(function($) {
$(document).ready(function() {
	
	

	defaultSearchValue = jQuery('#SearchForm_SearchForm_Search').val();  
	jQuery('#SearchForm_SearchForm_Search').click(function() {
		if( jQuery(this).val() == defaultSearchValue ) {
			jQuery(this).val("");
		}
	}); 



	autoCompleteField = $("input#searchLocations");
	
	//Locations Find Field
	defaultValue = "find your local office >";  
	jQuery('input#searchLocations').click(function() {
		if( jQuery(this).val() == defaultValue ) {
			jQuery(this).val("");
		}
	}); 	



	
	
	//Add autocoplete to location search
	$('input#searchLocations').autocomplete({ get : get_random_suggs, callback: print_sugg, multi: true});

	
	
	/* OLD XML Loading autocomplete
	
	$.ajax({
		url: 'locationxml',
		type: 'GET',
		dataType: ($.browser.msie) ? "text" : "text/xml"  ,
		error: function(){
			alert('Error loading XML document');
		},
		success: function(xml){
		   parseXML(xml);
		}
	});
		

	
	function parseXML(xml) {

		//alert("ttt");

		var i = 1;
		
		xml = fixXmlIE(xml);
		

		
		$(xml).find("marker").each( function()
		{
			//if(i == 15) {
				
				var address = $(this).find('address').html();
				
				address = address.replace("<!--[CDATA[", "");
				address = address.replace("]]-->", "");
				
				
				words = address + ", " + words;//words.concat(address.split(", "));				

				//alert($(this).attr("lat") + " - " + address);	
				
			//}
			i++;
		});	
		
		words = words.replace(/[\d]/g, "");

		words = words.split(",");
		
				
		
	  	for(var i=0;i<words.length;i++) {
		
			var wordsTemp = words[i].split(" ");
			
			for(var j=0;j<wordsTemp.length;j++) {
				if(wordsTemp[j].length > 0) {
					autocomplete.push(wordsTemp[j]);
				}		
			}

		}
		
		//alert(autocomplete)
		
	}
	
	function fixXmlIE(xml) {  
	   if (jQuery.browser.msie) {  
		 var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");  
		 xmlDoc.loadXML(xml);  
		 xml = xmlDoc;  
		 //alert("ie");
	   } else {
   		 //alert("ff");
	   }
	   
	   return xml;  
	}  	
	
	*/
	
	function checkArray(a)
	{
	  var o = {};
	  for(var i=0;i<a.length;i++)
	  {
		o[a[i]]='';
	  }
	  return o;
	}	
	
	
	
	words = words1.replace(/MEC /g, "");

	words = words.split(",");			
	
	for(var i=0;i<words.length;i++) {
		
		if(words[i] in checkArray(autocomplete)) {
		} else {
			autocomplete.push(words[i]);	
		}
	}	
	
	

	//If map exist initialize it
	if( document.getElementById("map_canvas") ) {
		initialize();
	}
	
	
})
})(jQuery);

