jQuery(document).ready(function($) { 
 $("#dealer_name").autocomplete("/en-us/dealers/index/results/",{ 
          minChars:3,
	  cacheLength: 0,
	  max: 5,
	  extraParams: {
	  autoc:'on',
	  nc:$("#name_country").val(),
          ns:$("#name_state").val()
	} });

	$("#name_country").bind("change", function(j){
	  $("#name_state").html('<option value="">Retrieving values...</option>');
	  $.getJSON('/en-us/dealers/index/results',
	          {fillstate: $("#name_country").val()}, 
		  function(json){
			options='';
			$.each(json,function(i,code){
				options = options + '<option value="' + code + '">' + code + '</option>';
			});
		        $("#name_state").html('<option value="">Any State</option>' + options);
   		  }
	  );
	});


	myIcon = Mapifies.createIcon({
			iconImage: "http://maps.google.com/mapfiles/ms/icons/red-dot.png",
			iconShadow: "http://www.google.com/mapfiles/shadow50.png",
			iconSize: new GSize(25, 26),
			iconShadowSize: new GSize(25, 26),
			iconPrintImage: "http://www.google.com/mapfiles/shadow50.png",
			iconMozPrintImage: "http://www.google.com/mapfiles/shadow50.png",
			iconPrintShadow: "http://www.google.com/mapfiles/shadow50.png",
			iconTransparent: "http://www.google.com/mapfiles/shadow50.png"
	});	
	

	var locale = $('#footer .locale').text();
	

	if ($('.lat').size() == 1 && $('.lng').size() == 1) {
		var lat = $(".lat").text();
		var lng = $(".lng").text();
		var zoom = 9;
	} else if ($('.lat').size() == 0 && $('.lng').size() == 0 && !locale) {
		var nomap = true;
	} else {
		if (locale) {
			switch(locale)
			{
			case "us":
				var lat = 39.59024;
				var lng = 0
				var zoom = 2;
			  break;
			case "ca":
				var lat = 50.130366;
				var lng = -106.346771;
				var zoom = 3;
			  break;
			case "fr":
				var lat = 46.227638;
				var lng = 2.213749;
				var zoom = 4;
			  break;
			case "uk":
				var lat = 55.378051;
				var lng = -3.435973;
				var zoom = 4;
			  break;
			case "de":
				var lat = 51.165691;
				var lng = 10.451526;
				var zoom = 5;
			  break;
			case "jp":
				var lat = 36.204824;
				var lng = 138.252924;
				var zoom = 5;
			  break;
			default:
				var lat = 45;
				var lng = -122;
				var zoom = 2;
			}
		};
	}
	

try {

    $('div.map').each(function(index) {
	jQuery('div.map').jmap('init', {
			'pointIcon': myIcon,
			'mapType':'sat',
			"mapEnableDragging":true,
			"mapEnableType":true, 
			'mapCenter':[lat, lng], 
			"mapZoom":zoom, 
			"mapEnableDoubleClickZoom":true,
			"mapEnableSmoothZoom":true,
			"mapShowjMapsIcon":false,
			"centerMap":true,
			"mapEnableScaleControl":true,
			"centerMoveMethod":"pan"
		});
	});

} catch (err) {
}


		

	function doSomething() {
		var size = jQuery(".map").parent().width() + 'px';
		jQuery('div.map').animate({'width': size, 'height': "263px"}, 0, function(){
			jQuery(this).jmap('CheckResize');
		});
	};

	var resizeTimer = null;

try {

	$(window).bind('resize', function() {
	    if (resizeTimer) clearTimeout(resizeTimer);
	    resizeTimer = setTimeout(doSomething, 10);
	});

} catch (err) {

}


try {

	$('ul.latest_entries li').each(function(index) {

		lat = $(this).find(".lat").text();
		lng = $(this).find(".lng").text();
		
		contents = $(this).clone(true).find(".meta, .breadcrumb, p").remove().end().html();
		contents = jQuery.trim(contents);
		
		title = "<div class='mapdetail'>"+ contents+ "<div class='clear'></div></div>";

		jQuery('#map1').children(".map").jmap('AddMarker', {
			'pointIcon': myIcon,
			'pointHTML': title,
			'pointLatLng': [lat,lng]
		});
	});
	

} catch (err) {
}


try {
	$('#article_map').each(function(index) {
		lat = $(this).children(".lat").text();
		lng = $(this).children(".lng").text();

		jQuery('#article_map .map').jmap('AddMarker', {
				'pointIcon': myIcon,
				'pointLatLng': [lat,lng]
			}, function( marker, options){
				jQuery('.remove-marker').click(function(){
				jQuery('#article_map .map').jmap('RemoveMarker', marker);
			});
		});	
	});

} catch (err) {

}
		
try {
		
	$('div.dealer_left').each(function(index) {
		var dealer = jQuery('div.dealer_right').children("div.dealer_map")

		dealer.jmap('init', {
			'pointIcon': myIcon,
			'mapType':'map',
			"mapEnableDragging":true,
			"mapEnableType":true, 
			'mapCenter':[lat, lng], 
			"mapZoom":zoom, 
			"mapEnableDoubleClickZoom":true,
			"mapEnableSmoothZoom":true,
			"mapShowjMapsIcon":false,
			"centerMap":true,
			"mapControl":"large",
			"mapEnableScaleControl":true,
			"centerMoveMethod":"pan"
		});
		

		if ($('#address input#address_address').not('.default').val()) {
			var address = $('#address input#address_address').val() + ", " + $('#address select#address_country').val();
			//alert(address);

			dealer.jmap('SearchAddress', {
	            'query': address,
	            'returnType': 'getLatLng'
	        }, 	function(result, options) {
			if (result != null) {
				dealer.jmap('MoveTo', {
					"mapZoom" : 11,
					"mapEnableSmoothZoom":true,
					"mapCenter" : [result.y,result.x],
					"mapType" : "map"
				})
			};


			});
		}


		if ($('#dealers .store').size() > 0) {
			assessDealers();
		};

		$('div.dealer_left form#name_search button').click(function() {
			loadDealersName();
			return false;
		});

		$('div.dealer_left form#address button').click(function() {
			loadDealersAddress();
			return false;
		});

		$('div.dealer_left form#country_search button').click(function() {
			loadDealersCountry();
			return false;
		});

	})
	

} catch (err) {

}
	

	if($('#address_autorun').val()=="loadDealersAddress"){
	 loadDealersAddress();
	}

function assessDealers () {
	var stores = new Object();
	var bounds = new GLatLngBounds(); 
	var dealer = jQuery('div.dealer_right').children(".dealer_map")
	var zoomlevel= 10; /* maximum zoom value */

	dealer.jmap('CreateMarkerManager',{'pointMinZoom':'1'});
	thismap=Mapifies.MapObjects.Get(dealer);
	thismap.clearOverlays();

	$('#dealers table tr.store').each(function(index) {
                var i = 0;	
		if(i > 99){
		   return false; /* do not exceed 100 icons */
		}
		i = i + 1;
		dealerlat = $(this).find('.lat').text();
		dealerlng = $(this).find('.lng').text();

		dealerhtml = $(this).find(".physical").html() + "<p>" + $(this).find(".physical").next().html() +"</p>";
				
		stores[index] = [dealerlat, dealerlng];
				
		letter = $(this).find(".letter").text()
		
		var letterIcon = Mapifies.createIcon({

                iconImage: 'http://' + document.domain + '/themes/frontend/blackdiamond/images/mapicons/m' + letter + '.png'
		});



	if(dealerlat && dealerlng){ 
		var point = new GLatLng(dealerlat,dealerlng); 
		bounds.extend(point); 
        	dealer.jmap('AddMarker',{
			'pointIcon': letterIcon,
			'pointLatLng':stores[index],
			'pointHTML':dealerhtml,
                         'pointMinZoom':1
        	});
	}
	  });	
	thiszoom=(thismap.getBoundsZoomLevel(bounds)- 1);
	if(zoomlevel > thiszoom ){
	  zoomlevel=thiszoom;
	}
	thismap.setZoom(zoomlevel);
	thismap.setCenter(bounds.getCenter());

}


function clearAddressSearch(){
	$('#address_address').val(' ');
	$('#address_country').val(' ');
}
function clearCountrySearch(){
	$('#country_country').val(' ');
}

function clearNameSearch(){
	$('#dealer_name').val(' ');
	$('#name_country').val(' ');
	$('#name_state').val(' ');
}

function loadDealersAddress () {
	var dealer = jQuery('div.dealer_right').children(".dealer_map")
	var address = $('#address input[name=address]').val() + " " + $('#address select[name=country]').val();
	clearNameSearch();
	clearCountrySearch();	
	dealer.jmap('SearchAddress', {
        'query': address,
        'returnType': 'getLatLng'
    }, 	function(result, options) {
			if (!result) {
				alert(address + " not found.");
			} else {
			
				$('div.dealer_left form input[name=lat]').val(result.y)
				$('div.dealer_left form input[name=lng]').val(result.x)
				
				var data = $('div.dealer_left form#address').serialize()
				var dealerUrl = $('form#address').attr("action");
				$('div#ajax_loading').fadeIn(300);	
				$.ajax({
				  	url: dealerUrl,
				  	type: "POST",
				  	dataType: "html",
					data: data,
					complete: function() {
					   $('div#ajax_loading').fadeOut(300); 
			
					},
				
					success: function( html ) {
						$('#dealers').html(html);
						assessDealers();
					},
				
					error: function() {
						alert("We couldn't find any locations.  Something may be broken.  Please try again later.")
					}
				});
			}
		});
};	

function loadDealersCountry () {
	var dealer = jQuery('div.dealer_right').children(".dealer_map");
	clearNameSearch();
	clearAddressSearch();
	dealer.jmap('SearchAddress', {
        'query': name,
        'returnType': 'getLatLng'
    }, 	function(result, options) {

				var data = $('div.dealer_left form#country_search').serialize()
				var dealerUrl = $('form#country_search').attr("action");

				$('div#ajax_loading').fadeIn(300);

				$.ajax({
				  	url: dealerUrl,
				  	type: "POST",
				  	dataType: "html",
					data: data,
					complete: function() {
					   $('div#ajax_loading').fadeOut(300); 
					},
				
					success: function( html ) {
						$('#dealers').html(html);
						assessDealers();
					},
				
					error: function() {
						alert("We couldn't find any locations.  Something may be broken.  Please try again later.")
					}
				});

			
		});
};


function loadDealersName () {
	var dealer = jQuery('div.dealer_right').children(".dealer_map")
	var name = $('#name_search input[name=dealer_name]').val();
	clearAddressSearch();
        clearCountrySearch();		
	if($("#dealer_name").val().indexOf("option") > 0){
	   $("#dealer_name").val(null);
        }
	dealer.jmap('SearchAddress', {
        'query': name,
        'returnType': 'getLatLng'
    }, 	function(result, options) {

				var data = $('div.dealer_left form#name_search').serialize()
				var dealerUrl = $('form#name_search').attr("action");

				$('div#ajax_loading').fadeIn(300);

				$.ajax({
				  	url: dealerUrl,
				  	type: "POST",
				  	dataType: "html",
					data: data,
					complete: function() {
					   $('div#ajax_loading').fadeOut(300); 
					},
				
					success: function( html ) {
						$('#dealers').html(html);
						assessDealers();
					},
				
					error: function() {
						alert("We couldn't find any locations.  Something may be broken.  Please try again later.")
					}
				});

			
		});
};	
	
});
