$(document).ready(function() {
	/*
	// ========== RESIZE IFRAME ==========
	function getPageHeight() {
		var b = document.getElementsByTagName("body")[0];
		var frameHeight = b.offsetHeight || b.clientHeight || 0;
		// on ajoute x pixels de marge de sécurité (affichage des erreurs)
		frameHeight = frameHeight + 75;
		// appel de la fonction se trouvant dans la page openContent d'Interwoven
		window.parent.resizeIframe(frameHeight);
	}
	// on lance une première fois pour redimensionner l'iFrame d'emblée
	getPageHeight();
	*/
	// ========== DOWNLOAD/BROCHURES ==========
	if (document.getElementById("downloadform")) {
		$("#downloadform").validate({
			rules: {
				downloads: {
					required: true,
					minlength: 1
				}
			}
		});
	}
	// ========== CONTACT ==========
	if (document.getElementById("contactform")) {
		$("#contactform").validate();
	}
	// ========== FLEET ==========
	if (document.getElementById("fleetform")) {
		$("#fleetform").validate();
	}
	// ========== TEST DRIVE ==========
	if (document.getElementById("testdriveform")) {
		$("#testdriveform").validate();
	}
	// ========== DIPLOMATIC ==========
	if (document.getElementById("diplomaticform")) {
		$("#diplomaticform").validate();
	}
	// ========== CAPTCHA ==========
	if (document.getElementById("captcha_code")) {
		// bouton "refresh"
		$("#captcha_refresh").click(function() {
			$("#captcha").attr("src", "securimage/securimage_show.php?" + Math.random());
			$("#captcha_code").val("");
			$("#captcha_check").empty();
		});
		// check du captcha on blur
		$("#captcha_code").blur(function() {
			// envoi de la requête AJAX
			$.ajax({
				type: "POST",
				url: "request/req_captcha.php",
				data: "code=" + document.getElementById("captcha_code").value,
				success: function(result) {
					if (result) {
						$("#captcha_check").html(' <img src="images/icon_wrong.gif" align="absmiddle" />');
						$("#captcha_code").val("");
						$("#captcha").attr("src", "securimage/securimage_show.php?" + Math.random());
					} else {
						$("#captcha_check").html(' <img src="images/icon_correct.gif" align="absmiddle" />');
					}
				}
			});
		});
	}
	// ========== DEALER LOCATOR ==========
	if (document.getElementById("dealerinfo")) {
		// init
		$("#dealerinfo").hide();
		$("#searchLoc").hide();
		// fonctions
		function afficheListe() {
			// envoi de la requête AJAX
			$.ajax({
				type: "POST",
				url: "request/req_dealers_list.php",
				data: "zipcode=" + document.getElementById("zipdealer").value,
				success: function(result) {
					$("#dealerlist").html(result);
					// si on sélectionne un autre dealer
					$("#dealer").change(function() {
						// si pas vide
						if ($("#dealer").val() != "") {
							afficheInfos();
						} else {
							$("#dealerinfo").empty().hide();
						}
					}).change();
				}
			});
		}
		//
		function afficheInfos() {
			// envoi de la requête AJAX
			$.ajax({
				type: "POST",
				url: "request/req_dealers_infos.php",
				data: "dealercode=" + document.getElementById("dealer").value + "&mapview=" + document.getElementById("mapview").value,
				success: function(result) {
					$("#dealerinfo").html(result);
					$("#dealerinfo").show();
					//
					$("#searchLoc").show();
					$("#dealer_map").hide();
					$("#dealer_list").hide();
					// resize iFrame
					//getPageHeight();
					
					// changement du zip dans le champ texte
					$("#zipdealer").val($("#dealer_hidden_zip").val());
					
					// gmap api v3 launch
					loadScript();
				}
			});
		}
		// premier affichage
		afficheListe();
		// action sur click
		$("#btn_zipdealer").click(function() {
			afficheListe();
			var zipdealer = document.getElementById("zipdealer").value;
			if (document.getElementById("zipcode")) {
				$("#zipcode").val(zipdealer);
			}
		});
		// action sur 'enter'
		$("#zipdealer").keypress(function(e) {
			if (e.keyCode == 13) {
				afficheListe();
				var zipdealer = document.getElementById("zipdealer").value;
				if (document.getElementById("zipcode")) {
					$("#zipcode").val(zipdealer);
				}
			}
		});
	}
	// ===== STORE MAP =====
	if ($("#searchLoc").length) {
	
		var map;
		var markers = [];
		var infoWindow;
		
		// click sur "searchLoc"
		$("#searchLoc").click(function() {
			var address = $("#zipdealer").val();
			if (address) searchLocations(address);
			//
			//$("#dealerinfo").hide();
			$("#dealerinfo_content").remove();
			//
			loadMap();
		});

		
		function loadMap() {
			map = new google.maps.Map(document.getElementById("map_dealer"), {
				center: new google.maps.LatLng(50.7935688, 4.308041600000024),
				zoom: 8,
				mapTypeId: google.maps.MapTypeId.ROADMAP
			});
			infoWindow = new google.maps.InfoWindow();
		}
		
		function searchLocations(address) {
			//alert(address);
			var geocoder = new google.maps.Geocoder();
			geocoder.geocode({
				address: address,
				region: 'BE'
			}, function(results, status) {
				if (status == google.maps.GeocoderStatus.OK) {
					//$("#dealer_map").show();
					$("#dealer_list").show();
					searchLocationsNear(results[0].geometry.location);
				} else {
					$("#dealer_list").html(no_result);
				}
			});
		}

		function clearLocations() {
			infoWindow.close();
			for (var i = 0; i < markers.length; i++) {
				markers[i].setMap(null);
			}
			markers.length = 0;
			
		}

		function searchLocationsNear(center) {
			clearLocations();
			//alert(center);
			
			var radius = 50;
			var searchUrl = 'scripts/map_genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;
			downloadUrl(searchUrl, function(data) {
				var xml = parseXml(data);
				var markerNodes = xml.documentElement.getElementsByTagName("marker");
				var bounds = new google.maps.LatLngBounds();
				for (var i = 0; i < markerNodes.length; i++) {
					var name = markerNodes[i].getAttribute('name');
					var address = markerNodes[i].getAttribute('address');
					var notes = markerNodes[i].getAttribute('notes');
					var tel = markerNodes[i].getAttribute('tel');
					var sales = markerNodes[i].getAttribute('sales');
					var aftersales = markerNodes[i].getAttribute('aftersales');
					var distance = parseFloat(markerNodes[i].getAttribute("distance"));
					var latlng = new google.maps.LatLng(
					parseFloat(markerNodes[i].getAttribute("lat")),
					parseFloat(markerNodes[i].getAttribute("lng")));
					
					createMarker(latlng, name, distance, address, notes, tel, sales, aftersales);
					bounds.extend(latlng);
				}
				map.fitBounds(bounds);
			});
		}
		
		function createMarker(latlng, name, distance, address, notes, tel, sales, aftersales) {
			var html = "<b>" + name + "</b> <br/>" + address;
			var marker = new google.maps.Marker({
				map: map,
				icon: 'images/map_marker_new.png',
				position: latlng
			});
			google.maps.event.addListener(marker, 'click', function() {
				infoWindow.setContent(html);
				infoWindow.open(map, marker);
			});
			
			// icon aftersales sales
			if(sales == 'TRUE') {
				var sales = '<img src="images/picto_sales_Jeep_small.gif" alt="' + txt_96 + '" title="' + txt_96 + '" style="margin-right:5px;" align="absmiddle" /><span class="verysmall" style="margin-right:15px;">' + txt_96 +'</span>';
			} else {
				var sales = '';	
			}
			if(aftersales == 'TRUE') {
				var aftersales = '<img src="images/picto_aftersales_Jeep_small.gif" alt="' + txt_97 + '" title="' + txt_97 + '" style="margin-right:5px;" align="absmiddle" /><span class="verysmall">' + txt_97 +'</span>';
			} else {
				var aftersales = '';	
			}

			var listitem = '<strong>' + name + '</strong> <span class="verysmall">(' + distance + ' km)</span><br />' + address +'<div style="margin-top:7px;">' + sales + aftersales + '</div>';
			$('<li class="maplist" />')
				.html(listitem)
				.click(function() {
					var markerNum = $(this).index();
					if (markerNum != "none"){
						google.maps.event.trigger(markers[markerNum], 'click');
					}
				})
				.appendTo("#dealer_list ul");
			
			//
			markers.push(marker);
			
		}
		
		function downloadUrl(url,callback) {
			var request = window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest;
			
			request.onreadystatechange = function() {
				if (request.readyState == 4) {
					request.onreadystatechange = doNothing;
					callback(request.responseText, request.status);
				}
			};
			
			request.open('GET', url, true);
			request.send(null);
		}
		
		function parseXml(str) {
			if (window.ActiveXObject) {
				var doc = new ActiveXObject('Microsoft.XMLDOM');
				doc.loadXML(str);
				return doc;
			} else if (window.DOMParser) {
				return (new DOMParser).parseFromString(str, 'text/xml');
			}
		}
		
		function doNothing() {}
		
		/*
		// draw map
		var map = new GMap2(document.getElementById('dealer_map'));
		map.setCenter(new GLatLng(50.846281,4.354727), 8);
		map.addControl(new GLargeMapControl3D());
		map.addControl(new GMapTypeControl());
		//map.enableScrollWheelZoom();
		
		// init geocoder
		var geocoder = new GClientGeocoder();
		//
		
		// Hide div if no address
		$("#dealer_map").hide();
		$("#dealer_list").hide();
		
		// recherche lat/lng sur addresse fournie
		function searchLocations(address) {
			geocoder.getLatLng(address + "+belgium", function(latlng) {
				if (!latlng) {
					$("#dealer_list").html(no_result);
				} else {
					// Show div if address
					$("#dealer_map").show();
					$("#dealer_list").show();
					searchLocationsNear(latlng);
				}
			});
		}

		
		// recherche des markers dans le rayon de recherche (=> radius en km)
		function searchLocationsNear(center) {
			var radius = 50;
			var searchUrl = 'scripts/map_genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;
			GDownloadUrl(searchUrl, function(data) {
				var xml = GXml.parse(data);
				var markers = xml.documentElement.getElementsByTagName('marker');
				map.clearOverlays();
				
				$("#dealer_list").html("<ul></ul>");
			
				if (markers.length == 0) {
					$("#dealer_list").html(no_result);
					map.setCenter(new GLatLng(50.846281,4.354727), 8);
					return;
				}
				
				var bounds = new GLatLngBounds();
				for (var i = 0; i < markers.length; i++) {
					var name = markers[i].getAttribute('name');
					var address = markers[i].getAttribute('address');
					var notes = markers[i].getAttribute('notes');
					var tel = markers[i].getAttribute('tel');
					var sales = markers[i].getAttribute('sales');
					var aftersales = markers[i].getAttribute('aftersales');
					var distance = parseFloat(markers[i].getAttribute('distance'));
					var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')), parseFloat(markers[i].getAttribute('lng')));
					
					var marker = createMarker(point, name, distance, address, notes, tel, sales, aftersales);
					map.addOverlay(marker);
					//var sidebarEntry = createSidebarEntry(marker, name, address, distance);
					//$("#dealer_list ul").append(sidebarEntry);
					
					bounds.extend(point);
				}
				map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
			});
		}

		// création des markers
		function createMarker(point, name, distance, address, notes, tel, sales, aftersales) {
			// custom icon
			var rm_icon = new GIcon(); 
			rm_icon.image = 'images/map_marker.png';
			rm_icon.shadow = 'images/map_shadow.png';
			rm_icon.iconSize = new GSize(44,30);
			rm_icon.shadowSize = new GSize(44,35);
			rm_icon.iconAnchor = new GPoint(11,20);
			rm_icon.infoWindowAnchor = new GPoint(15, 2);
			//
			var marker = new GMarker(point, rm_icon);
			var html = '<h3><span class="boldcolor">' + name + ' <span class="verysmall">(' + distance + ' km)</span></span></h3><p>' + address + '</p><p>Tel: ' + tel + '</p><p class="small grey"><i>' + notes + '</i></p>';
			
			GEvent.addListener(marker, 'click', function() {
				marker.openInfoWindowHtml(html);
			});
			
			// icon aftersales sales
			if(sales == 'TRUE') {
				var sales = '<img src="images/picto_sales_Jeep_small.gif" alt="' + txt_96 + '" title="' + txt_96 + '" style="margin-right:5px;" align="absmiddle" /><span class="verysmall" style="margin-right:15px;">' + txt_96 +'</span>';
			} else {
				var sales = '';	
			}
			if(aftersales == 'TRUE') {
				var aftersales = '<img src="images/picto_aftersales_Jeep_small.gif" alt="' + txt_97 + '" title="' + txt_97 + '" style="margin-right:5px;" align="absmiddle" /><span class="verysmall">' + txt_97 +'</span>';
			} else {
				var aftersales = '';	
			}

			var listitem = '<strong>' + name + '</strong> <span class="verysmall">(' + distance + ' km)</span><br />' + address +'<div style="margin-top:7px;">' + sales + aftersales + '</div>';
			$('<li class="maplist" />')
				.html(listitem)
				.click(function() {
					map.panTo(marker.getLatLng()); 
					marker.openInfoWindowHtml(html);
				})
				.appendTo("#dealer_list ul");
			
			return marker;
		}
		*/
		
	}
});

