    // map attributes

    var geocoder;

    var map;

    var gicon_store = new GIcon(G_DEFAULT_ICON,"http://www.sonystyle.ca/html/images/icon_ss_loc.png"); 

    var gicon_store_red = new GIcon(G_DEFAULT_ICON,"http://www.sonystyle.ca/html/images/icon_ss_loc_red.png");

    var gdir;

    var defaultLat = 62.35873;

    var defaultLng = -96.582092;
    
    //var defaultLat = 55.74429;
    //var defaultLng = -97.850681;    
    

    var initZoom = 3;

    var defaultZoom = 9;

    //var maxDistance = 50;
    var maxDistance = 100;

    //var highPriorityStoreType = 'SSC';
    //var specialMarkerStoreType = 'SES';
    
    var highPriorityStoreType = 'ASSC';

    var specialMarkerStoreType = 'SES';

    var prtDistributors = 'ACCD'; 
    

    // data files

    var data_store_categories = '/html/locator/data/data_store_categories.xml';

    var data_stores = '/html/locator/data/data_stores.xml';

    // new data xml with exception list
    var data_dsc_exc_prod = '/html/locator/data/data_dsc_exc_prod.xml';


    // locator data

    var userLat;

    var userLng;

    var userMarker;
    var msgMarker;
    var userCICMarker;

    var storeCategories = [];
    
    var dscExcludedProducts = [];

    var selectedCategories = [];
    
    var selectedCategory;    

    var nearbyStores = [];

    var selectedStores = [];

    var selectedStoreMarkers = [];

    var to_htmls = [];
    var from_htmls = [];
    

    // display attributes

    var html_store_categories = '';

    var html_selected_stores = '';

    var isInitTime = true;

    var catNodeElementName;
    var chk = 'chk';   
    var selectedFlag;
    var categoryNamevalue;
    var dsSlection = 0;



    // remove an object from an array

    Array.prototype.remove=function(o){

      // var index = this.indexOf(o);

      var index = this.positionOf(o);

      

      if (index != -1)

          this.splice(index, 1);

    } 

    

    // we need to implement our own indexOf function because of IE 6

    Array.prototype.positionOf=function(o){

      for (var i=0; i<this.length; i++) {

      	  if (this[i] == o) 

      	      return i;

      }

      

      return -1;

    } 

    

    function initialize() {

      geocoder = new GClientGeocoder();

       

      if (GBrowserIsCompatible()) {

        map = new GMap2(document.getElementById("map_canvas"));

        map.setCenter(new GLatLng(defaultLat, defaultLng), initZoom);

        map.addControl(new GSmallMapControl());

        map.addControl(new GMapTypeControl());

      }

 

      gdir = new GDirections(map, document.getElementById("directions"));

     

      initStoreCategories();
      
      initDscExcProducts();

    }



    function initDscExcProducts() {
    	//alert('initDscExcProducts() ==== INITIALIZING DSC EXCLUSION LIST CALLED'); 
      	
      	GDownloadUrl(data_dsc_exc_prod, function(data) {

		var xml = GXml.parse(data);

		var dscExcProductList = xml.documentElement.getElementsByTagName("dscexcprod");
		
		dscExcludedProducts = [];
		
		      for (var i = 0; i < dscExcProductList.length; i++) {  
		      	  		    
			    var dscCurrentExcProduct = dscExcProductList[i];

			    var dscCurrentProductName = dscCurrentExcProduct.getAttribute("name");	
	
			    if (dscCurrentExcProduct.getAttribute("active") == 'Y') {
	
			       dscExcludedProducts.push(dscCurrentExcProduct);	
			       
			    }	
		     }
		
		
      	});

    } 


    function initStoreCategories() {
    	//alert('initStoreCategories() ==== INITIALIZING STORE CATEGORIES CALLED'); 
      	
      	GDownloadUrl(data_store_categories, function(data) {

		var xml = GXml.parse(data);

		var categories = xml.documentElement.getElementsByTagName("category");

		storeCategories = [];

		selectedCategories = [];
		selectedCategory = "xAz";


		html_store_categories += '<table>';

		for (var i = 0; i < categories.length; i++) {

		    var currentCategory = categories[i];
		    var categoryNodeName = currentCategory.getAttribute("name");

		    // alert (currentCategory.getAttribute("name"));

		    if (currentCategory.getAttribute("active") == 'Y') {

		       storeCategories.push(currentCategory);

		       var displayIndex = i % 2;

		       if (displayIndex == 0) {

			   // is left

			   html_store_categories += '<tr>';

		       } 

		      if(categoryNodeName =='DI'){
		      html_store_categories += '<td align="left" valign="bottom">' 
					    +  '<input type="checkbox" name="chk"+i id="' + currentCategory.getAttribute("name") 
					    +  '" value="' + currentCategory.getAttribute("desc") 
					    +  '" onClick="updateSelectedCategories1(this); singleSelect(chk, this);" unchecked/>' +  currentCategory.getAttribute("desc")
					    +  '<div id="dscdiv" style="display:none; border: 1px solid #131313; padding:2px; width:108px; background-color:#DEDEDE;"><label id="dsclab" >Enter model #:</label><br><input id="dsc"  type="text" value="" size="12" /><br>'
					    +  '</div></td>';
					    //+  '<input id="dscbtn"  type="button" value="Submit" onClick="checkDscEligibleModel()" /></div></td>'; 
		      }
		      else{
		      html_store_categories += '<td align="left">' 
					    +  '<input type="checkbox" name="chk"+i id="' + currentCategory.getAttribute("name") 
					    +  '" value="' + currentCategory.getAttribute("desc") 
					    +  '" onClick="updateSelectedCategories(this); singleSelect(chk, this);" unchecked/>' +  currentCategory.getAttribute("desc")
					    +  '</td>'; 	
		      }  

		       if (displayIndex == 1) {

			   // is right

			   html_store_categories += '</tr>';

		       } 

		    }


		}


		html_store_categories += '</table>';

		document.getElementById("store_categories").innerHTML = html_store_categories;

      	});
      	

    } 


   function updateSelectedCategories(category) {

   	//alert('updateSelectedCategories() ==== UPDATE SELECTED CATEGORIES CALLED'); 

     	document.getElementById('dscdiv').style.display = "none"; 
     	selectedFlag = category;
     
     	if(category.id =='BTV' || category.id =='ME'){
     		dsSlection = 0;
     		document.getElementById('dsc').value = '';
		categoryNamevalue = category.id;
		selectedCategory = category.id;
		close_loc_path();

      	}
      
	if(category.id =='TV'){
		dsSlection = 0;
		document.getElementById('dsc').value = '';
		categoryNamevalue = category.id;
		selectedCategory = category.id;
		close_loc_path();
      	}
        /*
      	if(category.id =='DI'){
		categoryNamevalue = category.id;
		selectedCategory = category.id;
      	}
      	*/
      
      	if(category.id =='AV'){
      		dsSlection = 0;
		document.getElementById('dsc').value = '';
		categoryNamevalue = category.id;
		selectedCategory = category.id;
		close_loc_path();
      	}
      
      	if(category.id =='IT'){
      		dsSlection = 0;
		document.getElementById('dsc').value = '';
		categoryNamevalue = category.id;
		selectedCategory = category.id;
		close_loc_path();
      	}
      
      	if(category.id =='ME'){
      		dsSlection = 0;
		document.getElementById('dsc').value = '';
		categoryNamevalue = category.id;
		selectedCategory = category.id;
		close_loc_path();
      	}      

      	if(category.id =='ACC'){
      		dsSlection = 0;
		document.getElementById('dsc').value = '';
		categoryNamevalue = category.id;
		selectedCategory = category.id;
		close_loc_path();
      	}   

      	if(category.id =='PRT'){
      		dsSlection = 0;
		document.getElementById('dsc').value = '';
		categoryNamevalue = category.id;
		selectedCategory = category.id;
		close_loc_path();
      	}    
      	if(category.id =='ERD'){
      		dsSlection = 0;
		document.getElementById('dsc').value = '';
		categoryNamevalue = category.id;
		selectedCategory = category.id;
		close_loc_path();
      	}       	     	
   } 

   
   function updateSelectedCategories1(category) {
   
	//alert('updateSelectedCategories1() ==== UPDATE SELECTED CATEGORIES 1 CALLED'); 

	categoryNamevalue = category.id;
	selectedCategory = category.id;

	selectedFlag = category;
	singleSelect('chk',category);

	var vis = (category.checked) ? "block" : "none";
	document.getElementById('dscdiv').style.display = vis;
	close_loc_path();

   }    
 
 
    function checkDscEligibleModel() { 	
    	
    	var dslrStr = "DSLR";
    	var dscFlag = false;
    	
    	var modelName = document.getElementById('dsc').value;
    	modelName = modelName.replace(/-/,"");
    	modelName = modelName.toUpperCase();
    	var dslrModelName = modelName.substring(4,0);
    	
    	if(dslrModelName == dslrStr){
    		
    		dsSlection = 1;    		
    	}
    	else {
    	
	    	for(var i=0; i<dscExcludedProducts.length; i++){
	    		var excludedMode = dscExcludedProducts[i];
	    		var excludedModeName = excludedMode.getAttribute("name");	
	    		
	    		if(modelName == excludedModeName){

	    			dscFlag = true;	    			
	    		}
	    		
	    	}
	    	
	    	if(dscFlag == true){

	    		dsSlection = 2; 
	    	}
	    	else{

	    	    dsSlection = 3; 
	    	}
    	}

 	
    }  

    function showUserAddress(address) {
	//alert('showUserAddress() ==== ADDRESS BLOCKED CALLED');
	
	if (geocoder) {

		geocoder.getLatLng(address, function(point) {


			if (!point || selectedFlag==null) {

				if (!point) {
					alert ("Please enter your Postal code or City & Province");
					document.getElementById('address').value='';	
					document.getElementById('address').focus();	
					return false;							
				}
				if (selectedFlag==null) {
					alert ("Please select your product's category");
					return false;				
				}


				
			      if (GBrowserIsCompatible()) {
			
			        map = new GMap2(document.getElementById("map_canvas"));
			
			        map.setCenter(new GLatLng(defaultLat, defaultLng), initZoom);
			
			        map.addControl(new GSmallMapControl());
			
			        map.addControl(new GMapTypeControl());
			
			      }				
			  		      					

			} else {

				map.clearOverlays();

				userLat = point.lat();

				userLng = point.lng();

				//DBL
				if(categoryNamevalue =='BTV' || categoryNamevalue =='ME'){

					userMarker = createMsgMarker(userLat, userLng, address);

				}
				else if(categoryNamevalue =='DI') {
					
					if (document.getElementById('dsc').value==null||document.getElementById('dsc').value==""){
					   alert ('Please enter model number');
					   document.getElementById('dsc').focus();
					   return false;
					}
					else
					{
					
					
						checkDscEligibleModel();						
						
						if(dsSlection == 1){

							userMarker = createMsgMarker(userLat, userLng, address);
						}
					        else if(dsSlection == 2 ){
							
							window.open('http://www.mtcservice.com/DSCS/form.asp'); 
							return false;
							
						}
						else if(dsSlection == 0){
						
							userMarker = createUserMarker(userLat, userLng, address);					
						}
						else{
						
							userMarker = createUserMarker(userLat, userLng, address);					
						}
						
						userCICMarker = createCICUserMarker(userLat, userLng, address);
					   
				       }
					
				}
				else if(categoryNamevalue =='TV') {
					userMarker = createUserMarker(userLat, userLng, address);
					userCICMarker = createCICUserMarker(userLat, userLng, address);
				}					 	      
				else {
					userMarker = createUserMarker(userLat, userLng, address);
					userCICMarker = createCICUserMarker(userLat, userLng, address);
				}	   


				findNearbyStores();

				isInitTime = false;

			}

	      });

	}
         
    }


   function createUserMarker(lat, lng, markerInfo) {

	//alert('createUserMarker() ==== CREATE USER MARKER CALLED');

	var point = new GLatLng(lat, lng);

	var marker = new GMarker(point);

       

	GEvent.addListener(marker, "click", function() {

		map.setCenter(point, defaultZoom);

		user_address_html = "<P><b>Your Address: "+ markerInfo + "</b><br><br>"

				 + "Click servicer marker around your address to find out more location information "  + "</p>";

		marker.openInfoWindowHtml(user_address_html);

	});  

     
     	return marker;   

   }   


   function createCICUserMarker(lat, lng, markerInfo) {

	//alert('createCICUserMarker() ==== CREATE CIC USER MARKER CALLED');

	var point = new GLatLng(lat, lng);

	var marker = new GMarker(point);

       

	GEvent.addListener(marker, "click", function() {

		map.setCenter(point, defaultZoom);

		user_address_html = "<div style='width: 450px; height: 100px;'><p><b>Your Address: "+ markerInfo + "</b><br><br>"

				 //+ "Please Call Us Toll Free at: 1-888-289-7669 for further information <br><br> We are open Monday to Friday 9:00 - 20:00 (Eastern Standard Time) Closed on National Holidays"  + "</p>";
				+ "<center>Unfortunately, there is no Authorized Service Centre within 100 KM of your location.<br><br>"

				+ "Please contact our call centre at 1-877-899-7669 for assistance.</center>"  + "</p><div>"; 

				 

		marker.openInfoWindowHtml(user_address_html);

	});  

     
     	return marker;   

   }   

 
    
   function createMsgMarker(lat, lng, markerInfo) {

	//alert('createMsgMarker() ==== CREATE MESSAGE MARKER CALLED');

	var point = new GLatLng(lat, lng);

	var marker = new GMarker(point);

       

	GEvent.addListener(marker, "click", function() {

		map.setCenter(point, defaultZoom);

		if(categoryNamevalue =='BTV'){ 

			user_address_html = "<div style='width: 400px; height: 100px;'><p><b>Your Address: "+ markerInfo + "</b><br><br>"

				//+ "<center>BRAVIA Message:<br><br> Please call 1-800-8-BRAVIA for further assitance</center>"  + "</p><div>";
				+ "<center>Please call our Call Centre from anywhere in Canada <br><br> Sony of Canada Headquarters, Toronto, ON, M2H 3R6 &nbsp;&nbsp;1-877-899-7669</center>"  + "</p><div>"; 
		}
		//DBL
		if(categoryNamevalue =='ME'){

			user_address_html = "<div style='width: 450px; height: 300px;'><p><b>Your Address: "+ markerInfo + "</b><br><br>"

				//+ "<center>PLAYSTATION Message:<br><br> Please call MTC at 1-800-345-7669 for further assitance</center>"  + "</p><div>";   
				
				+ "MTC repairs Warranty and Out Of Warranty PlayStation Systems. Customers can drop their units off at (or ship their units to)"
				+" the MTC Whitby, ON location to receive repair. <br><br>"				
				+"<b>PlayStation 3 Customers must call Sony Computer Entertainment America before sending their unit into MTC. See the PlayStation 3 section (below) for more information.</b><br><br><br>" 

				+ "If customers need help from SCEA PlayStation with Warranty/Model/Service Information & Support : <br><br>"
				
				+ "<div style='padding-lef: 15px;'><li>SCEA PlayStation: 1-800-345-SONY (7669)</li><li>or visit <a href='http://www.playstation.com' target='_blank'>www.playstation.com</li><div>"  + "</p><div>";     

		}      

		if(categoryNamevalue =='DI'){
      
                       
                       if(dsSlection == 1){
				
				user_address_html = "<div style='width: 460px; height: 90px;'><p><b>Your Address: "+ markerInfo + "</b><br><br><br>"
	
					+ "<center>For <b>DSLR Products</b>, please contact our call centre at 1-877-899-7669 for assistance</center>"  + "</p><div>";

	               }

		}  

		marker.openInfoWindowHtml(user_address_html);

	});  

     
     	return marker;   

   }      
     
          


    function findNearbyStores() {
    
	//alert('findNearbyStores() ==== FINDING NEAR BY STORES CALLED');
	//DBL
	if(categoryNamevalue=="PRT" || categoryNamevalue=="ME"){
		defaultZoom = 3;
	}
	else{
	   defaultZoom = 9;
	}
	
	GDownloadUrl(data_stores, function(data) {

		var xml = GXml.parse(data);

		var stores = xml.documentElement.getElementsByTagName("store");

		// fitler stores by distance

		nearbyStores = [];
		

		for (var i = 0; i < stores.length; i++) {

			var currentStore = stores[i];

			var currentLat = currentStore.getAttribute("lat");

			var currentLng = currentStore.getAttribute("lng");						

			if (isWithRange(userLat, userLng, currentLat,currentLng)) {

				nearbyStores.push(currentStore);

			} 
			if(currentStore.getAttribute("type")!="" && currentStore.getAttribute("type")!= null){
			   if(currentStore.getAttribute("type")== prtDistributors && categoryNamevalue=="PRT"){
				nearbyStores.push(currentStore);
			   }

			}
			//DBL
			if(categoryNamevalue=="ME"){
				nearbyStores.push(currentStore);
			}

		}


		filterStores();

      });

   }

   //Adds new uniqueArr values to temp array
   function uniqueArr(a) {
	temp = new Array();
	for(i=0;i<a.length;i++){
	  if(!contains(temp, a[i])){
	   	temp.length+=1;
	   	temp[temp.length-1]=a[i];
	  }
	}
	return temp;
   }
	 
   //Will check for the Uniqueness
   function contains(a, e) {
	for(j=0;j<a.length;j++)if(a[j]==e)return true;
	return false;
   }


   function filterStores() {

	//alert('filterStores() ==== FILTER STORES CALLED');  

	selectedStores = [];
	
	nearbyStores = uniqueArr(nearbyStores);

	for (var i = 0; i < nearbyStores.length; i++) {

		var currentStore = nearbyStores[i];
	       	
	       	if (currentStore.getAttribute(selectedCategory) == 'YES') {

	        	selectedStores.push(currentStore);
		   
	        	//break;

	       	}	       	     	   

     	} 


     	sortSelectedStores();	     
       
        
        if(selectedStores.length <1){

	     	map.clearOverlays();	     	
	     	map.addOverlay(userCICMarker);
	     	GEvent.trigger(userCICMarker,"click");
	     	showSelectedStores();         	

        }
     	else{
     	    
	     	map.clearOverlays();	     	
	     	map.addOverlay(userMarker);
	     	GEvent.trigger(userMarker,"click");
	     	showSelectedStores(); 
     	
     	}


   }

   

   function sortSelectedStores() {

	//alert('sortSelectedStores() ==== SORTING SELECTED STORES CALLED');

	var highPriorityStores = [];

	var lowPriorityStores = [];

     	     	
	for (var i = 0; i < selectedStores.length; i++) {

		var currentStore = selectedStores[i];

		//if (currentStore.getAttribute("type") == highPriorityStoreType) {
		if (currentStore.getAttribute("type") == specialMarkerStoreType) {

			highPriorityStores.push(currentStore);

		} else {

			lowPriorityStores.push(currentStore);	 
         	}

     	}   	

     	selectedStores = [];

     	for (var h = 0; h < highPriorityStores.length; h++) {

     		selectedStores.push(highPriorityStores[h]);

     	}      	


     	for (var l = 0; l < lowPriorityStores.length; l++) {

     		selectedStores.push(lowPriorityStores[l]);

     	}      		
	

   } 


   function showSelectedStores() {
   
   	//alert('showSelectedStores() ==== SHOW SELECTED STORES CALLED');

     	selectedStoreMarkers = [];
        //DBL
     	if(categoryNamevalue=='BTV' || dsSlection == 1){     	   

     	   	html_selected_stores = ''; 

     	}
     	else{

	        html_selected_stores = '<b>Servicers close by</b><br><ul>';
	        
	
	     	to_htmls = [];
	
	     	from_htmls = [];
	    	
	
	     	for (var i = 0; i < selectedStores.length; i++) { 
	
	       		var currentStore = selectedStores[i];
	
	         	var storeMarker = createStoreMarker(currentStore, i);
	
	         	var linkClass = '';
	         	
	
	         	if (currentStore.getAttribute("type") == specialMarkerStoreType) 
	
	             		linkClass = 'red_text'; 
		         	
	         	
	         	html_selected_stores += '<li><a href="javascript:onStoreClick(' + i + ')" class="' + linkClass + '">' + currentStore.getAttribute("name") + '</a>' + '</li>';
	
	         	map.addOverlay(storeMarker);
	
	     	}
	}
     
     	// alert(html_selected_stores);

	document.getElementById("selected_store_list").innerHTML = html_selected_stores + '</ul>';

   } 

   
   function createStoreMarker(store, displayIndex) {

	//alert('createStoreMarker() ==== CREATE STORE MARKER CALLED');
     
     	var point = new GLatLng(store.getAttribute("lat"), store.getAttribute("lng"));

     	var markerIcon = gicon_store;

     	if (store.getAttribute("type") == specialMarkerStoreType) 

        	markerIcon = gicon_store_red;

        
     	var marker = new GMarker(point, markerIcon);
       

     	GEvent.addListener(marker, "click", function() {

		map.setCenter(point);

		var store_html = '<h5><u>The servicer you clicked: </u></h5>'

			      + '<P><b>' + store.getAttribute("name") + '</b><br>'

			      + store.getAttribute("address") + ", " + store.getAttribute("city") + ", " + store.getAttribute("province") + "<br>"

			      + store.getAttribute("postalcode") + "<br>"

			      + 'Phone: ' + store.getAttribute("phone") + "<br>"

			      + 'Fax: ' + store.getAttribute("fax") + "<br>"

			      + 'Type: ' + store.getAttribute("type") + "<br>"

			      + '<br>Hours of Operation: <br>' + store.getAttribute("hours") + "<br>"
			      
			      + store.getAttribute("hours1") + "<br>"			   
			      
			      + store.getAttribute("hours2") + "<br></p>";



	       var emailUrl = 'email.html?storeEmail=' + store.getAttribute("email") 
			       + '&senderInterests=' + getSelectedCategory();                      



	       var emailLink = 'javascript:openPopup(\'' + emailUrl + '\',\'locator_email\',\'800\',\'575\',\'yes\',\'yes\',\'no\', true);';

	       // store_html += '<a href="' + emailLink + '">Send Email</a>'; 



	       var to_html = store_html + '<br>Directions: <b>To here</b> - <a href="javascript:fromhere(' + displayIndex + ')">From here</a>' +

		   '<br>Start address:<form action="javascript:getDirections()">' +

		   '<input type="text" SIZE=40 MAXLENGTH=40 name="saddr" id="saddr" value="' + document.getElementById('address').value + '" /><br>' +

		   '<INPUT value="Get Directions" TYPE="SUBMIT">' +

		   '<input type="hidden" id="daddr" value="' + store.getAttribute("name") + "@" + point.lat() + ',' + point.lng() + 

		   '"/>' +

		   '</form>';

	       to_htmls[displayIndex] = to_html;



	       var from_html = store_html + '<br>Directions: <a href="javascript:tohere(' + displayIndex + ')">To here</a> - <b>From here</b>' +

		   '<br>End address:<form action="javascript:getDirections()">' +

		   '<input type="text" SIZE=40 MAXLENGTH=40 name="daddr" id="daddr" value="" /><br>' +

		   '<INPUT value="Get Directions" TYPE="SUBMIT">' +

		   '<input type="hidden" id="saddr" value="' + store.getAttribute("name") + "@" + point.lat() + ',' + point.lng() +

		   '"/>' +

		   '</form>';

	       from_htmls[displayIndex] = from_html;



	       // The inactive version of the direction info

	       // store_html += '<br>Directions: <a href="javascript:tohere(' + displayIndex + ')" style="color:#b90000"><strong>To here</strong></a> or <a href="javascript:fromhere(' + displayIndex + ')" style="color:#b90000"><strong>From here</strong></a><br><br>';

	       	store_html += '<br>Directions: <a href="javascript:toStore(\'' + store.getAttribute("name") + '\',' + store.getAttribute('lat') + ',' + store.getAttribute('lng') + ')" style="color:#b90000"><strong>To this servicer</strong></a><br><br>';
		


	       marker.openInfoWindowHtml(store_html);

     	});       
      

     	selectedStoreMarkers.push(marker);
     	

     	return marker;

   } 



   function tohere(i) {

     	//alert('tohere() ==== TO HERE CALLED');

     	selectedStoreMarkers[i].openInfoWindowHtml(to_htmls[i]);

   }
   
   
   
   function toStore(name, lat, lng) {
    
    	//alert('toStore() ==== TO STORE CALLED');

	var saddr = document.getElementById('address').value;

	var daddr = name + "@" + lat + ',' + lng;

	gdir.load("from: "+saddr+" to: "+daddr);

	//document.getElementById('user_input').style.display = "none";

	document.getElementById('directions').style.display = "block";

   }   

  

   function fromhere(i) {

     	//alert('fromhere() ==== FROM HERE CALLED');

     	selectedStoreMarkers[i].openInfoWindowHtml(from_htmls[i]);

   }



   function getDirections() {

	//alert('getDirections() ==== GET DIRECTION CALLED');

	var saddr = document.getElementById("saddr").value

	var daddr = document.getElementById("daddr").value

	gdir.load("from: "+saddr+" to: "+daddr);

	//document.getElementById('user_input').style.display = "none";

	document.getElementById('directions').style.display = "block";

   }

   

   function close_loc_path() {
   
	//alert('close_loc_path() ==== CLOSE LOCATION PATH CALLED');
	
	document.getElementById('directions').style.display = "none";
	
	//document.getElementById('user_input').style.display = "block";	

	showUserAddress(document.getElementById('address').value);
   }   

       

   function addMarkerToMap(lat, lng) {

	//alert('addMarkerToMap() ==== ADD MARKER TO MAP CALLED');

	point = new GLatLng(lat, lng);

	marker = new GMarker(point);

	map.addOverlay(marker);

   }



   function onStoreClick(i) {

     	GEvent.trigger(selectedStoreMarkers[i],"click");

   }   



   function calculateDistance(lat1, lng1, lat2, lng2) {

	var gPoint1 = new GLatLng(lat1, lng1);

	var gPoint2 = new GLatLng(lat2, lng2);

	//alert(gPoint1 + " - " + gPoint2 + " = " + gPoint1.distanceFrom(gPoint2)/1000 + "KM");

	var realDistance = gPoint1.distanceFrom(gPoint2)/1000;

	var roundDistance = Math.round(100*realDistance)/100;
	
	return roundDistance;

   }

           

   function isWithRange(lat1, lng1, lat2, lng2) {

     	return calculateDistance(lat1, lng1, lat2, lng2) <= maxDistance;

   }

 
 
   function getSelectedCategories() {

     	return selectedCategories;

   }
   
   
   function getSelectedCategory(){
   	
   	return selectedCategory;
   }

 
 
   function singleSelect(regex,current){
  
    	re = new RegExp(regex);
    	
        
	for(i = 0; i < document.getElementsByTagName('input').length; i++) {
	
		//elm = document.forms[0].elements[i];
		
              	elm = document.getElementsByTagName('input')[i];
              
               	if (elm.type == 'checkbox') {

                  	if (re.test(elm.name)) {                  
                     		elm.checked = false;
                  	}
               	}
       	}
       
       	current.checked = true;

       
   } 
 


   function clearAllCategories() {

	document.getElementById('dscdiv').style.display = "none";  
	document.getElementById('dsc').value = '';
	document.getElementById('address').value = "Type here";

	if(selectedFlag!=null){
        	
        	
		selectedFlag.checked = false;
		selectedFlag=null;
	   	
	
	     	selectedCategories = [];
	        
	        selectedStores = [];
	        showSelectedStores();
	        
		categoryNamevalue = null;
		selectedCategory = "xAz";        
	     
	     	if (!isInitTime) {
	
	     		//filterStores();
	
	     	}
	     
	     
	      	if (GBrowserIsCompatible()) { 
	
	        	map = new GMap2(document.getElementById("map_canvas"));
	
	        	map.setCenter(new GLatLng(defaultLat, defaultLng), initZoom);
	
	        	map.addControl(new GSmallMapControl());
	
	        	map.addControl(new GMapTypeControl());
	
	      	}
   
	}
     

   }


