// variables
var map;
var geocoder;
var loc;

// listeners
$(document).ready(function() {
	$("#ajaxloader").hide();
	loadGM();
	setNavigation();
	loadMediabox();
	setFAQ();
	checkChequesCount();
	IE6warning();
	setTooltips();
	setFooter();
});
$(window).resize(function() {
	setFooter();
});

// functions
function checkChequesCount() {
	$('#chequescount input:first').bind( {
		change : function() {
			setChequesTotal()
		},
		blur : function() {
			setChequesTotal()
		},
		keydown : function() {
			setChequesTotal()
		},
		keypress : function() {
			setChequesTotal()
		},
		keyup : function() {
			setChequesTotal()
		},
		focus : function() {
			setChequesTotal()
		},
		hover : function() {
			setChequesTotal()
		}
	});
	setChequesTotal();
}
function setChequesTotal() {
	var inp = $('#chequescount input:first');
	var tot = $('#chequestotal span');
	var inpVal = parseInt(inp.val());
	if (isNaN(inpVal)) {
		inpVal = 0;
	}
	tot.html(inpVal * 100);
}
function setFAQ() {
	var i = 1;
	$('div.faq div.sand dt').each(function() {
		var dt = $(this);
		var dd = dt.next('dd');
		dd.hide();
		dt.addClass('closed').css('cursor', 'pointer').click(function() {
			var dt = $(this);
			var dd = dt.next('dd');
			dt.siblings('dt.open').removeClass('open').addClass('closed');
			dt.removeClass('closed').addClass('open');
			dd.siblings('dd').slideUp();
			dd.slideDown('normal', function() {
				setFooter();
			});
		});
		setFooter();
	});
}

function loadMediabox() {
	var params = {
		menu : "false",
		bgcolor : "#dededed",
		wmode : "transparent"
	};

	var attributes = {};
	var flashvars = {};

	swfobject.embedSWF(baseUrl + "swf/head_be.swf", "mediabox_be", "972",
			"300", "10.0.0", baseUrl + "swf/ei.swf", flashvars, params,
			attributes);

	swfobject.embedSWF(baseUrl + "swf/head_nl.swf", "mediabox_nl", "972",
			"300", "10.0.0", baseUrl + "swf/ei.swf", flashvars, params,
			attributes);

	swfobject.embedSWF(baseUrl + "swf/head_fr.swf", "mediabox_fr", "972",
			"300", "10.0.0", baseUrl + "swf/ei.swf", flashvars, params,
			attributes);

	swfobject.embedSWF(baseUrl + "swf/head_shops_be.swf", "mediabox_shops_be",
			"972", "300", "10.0.0", baseUrl + "swf/ei.swf", flashvars, params,
			attributes);
	
	swfobject.embedSWF(baseUrl + "swf/head_shops_nl.swf", "mediabox_shops_nl",
			"972", "300", "10.0.0", baseUrl + "swf/ei.swf", flashvars, params,
			attributes);

	swfobject.embedSWF(baseUrl + "swf/head_shops_fr.swf", "mediabox_shops_fr",
			"972", "300", "10.0.0", baseUrl + "swf/ei.swf", flashvars, params,
			attributes);
}

function setNavigation() {
	var drop = $("ul#navi>li:has(ul)");
	drop.append("<span/>");
	drop.children('a:first-child').css("padding-right", "10px");
	drop.hover(function() {
		var li = $(this);
		var lia = li.find('a:first');
		li.css("background-color", "#e6e3d5");
		lia.css("color", "#000");
	}, function() {
		var li = $(this);
		var lia = li.find('a:first');
		li.css("background-color", "transparent");
		if (li.attr('class') == "active") {
			lia.css("color", "#fff");
		} else {
			lia.css("color", "#999");
		}
	});

	if ($.browser.msie && $.browser.version == "6.0") {

		$('#results div:hover').css('cursor', 'pointer');

		$('ul#navi li').hover(function() {
			var sub = $(this).children('ul');
			sub.css('margin-left', '-10px');
			sub.children('li').children('a').css('padding', '0');
			sub.children('li').children('a').css('color', '#e00000');
			sub.css('left', 'auto');

		}, function() {
			var sub = $(this);
			sub.children('ul').css('left', '-9999px');
		})
	}

	$('ul#navi li').hover(function() {
		var sub = $(this).children('ul');
		sub.show()
	}, function() {
		var sub = $(this).children('ul');
		sub.hide();
	});

	if ($.browser.msie
			&& ($.browser.version == "6.0" || $.browser.version == "7.0")) {
		$('ul#navi>li ul, ul#navi>li:has(ul)').hover(function() {
			$('ul#navi li.active a').css('border', 'none');
		}, function() {
			$('ul#navi li.active a').css('border-bottom', '5px solid red');
		});
	}
}

function loadGM() {
	if ($('body').hasClass('mapInit')) {
		if (GBrowserIsCompatible()) {
			geocoder = new GClientGeocoder();
			map = new GMap2(document.getElementById('map'));
			map.addControl(new GSmallMapControl());
			// map.addControl(new GMapTypeControl());
			map.setCenter(new GLatLng(51, 4), 7);
		}
		$('#map').hide();
		$('#mapbox').hide();
		$('#legend').hide();
		$('#addresstomap').hide();
		$(window).unload(function() {
			GUnload();
		});
	}
}

function searchLocations() {

	$('#ajaxloader').fadeIn();

	var pc = document.getElementById('postalcode').value;
	// var sc = document.getElementById('selectcity').value;
	loc = document.getElementById('country').value;

	var address;
	/*
	 * if (sc == "") { address = pc; } else { address = sc; }
	 */

	address = pc;
	geocoder.getLatLng(loc + " " + address, function(latlng) {
		if (!latlng) {
			$("#ajaxloader").fadeOut();
			$('#dialog').dialog( {
				resizable : false,
				close : function(event, ui) {
					$(this).dialog('destroy');
				}
			});
		} else {
			searchLocationsNear(latlng);
		}
	});
}

function searchLocationsNear(center) {

	var radius = document.getElementById('radius').value;

	var shop = $('input#shop').attr('checked');
	var sandwiches = $('input#sandwiches').attr('checked');
	var lpg = $('input#lpg').attr('checked');
	var carwash = $('input#carwash').attr('checked');
	var rentals = $('input#rentals').attr('checked');
	var internet = $('input#internet').attr('checked');
	
	var searchUrl = baseUrl + 'locations.php?lat=' + center.lat() + '&lng='
			+ center.lng() + '&radius=' + radius + '&shop=' + shop
			+ '&sandwiches=' + sandwiches + '&lpg=' + lpg + '&carwash='
			+ carwash + '&rentals=' + rentals + '&internet=' + internet;
	GDownloadUrl(searchUrl, function(data) {
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName('marker');
		map.clearOverlays();

		var sidebar = document.getElementById('results');
		sidebar.innerHTML = '';
		if (markers.length == 0) {
			sidebar.innerHTML = '';
			map.setCenter(new GLatLng(51, 4), 9);
			$("#ajaxloader").fadeOut();
			$('#dialog').dialog( {
				resizable : false,
				close : function(event, ui) {
					$(this).dialog('destroy');
					$("#map").fadeOut();
					$('#legend').fadeOut();
					$('#addresstomap').fadeOut();
				}
			});
			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 city = markers[i].getAttribute('city');
			var country = markers[i].getAttribute('country');
			var zip = markers[i].getAttribute('zip');
			var alwaysopen = markers[i].getAttribute('alwaysopen');
			var addblue = markers[i].getAttribute('addblue');
			var lpg = markers[i].getAttribute('lpg');
			var euroxl = markers[i].getAttribute('euroxl');
			var dieselxl = markers[i].getAttribute('dieselxl');
			var highspeedpump = markers[i].getAttribute('highspeedpump');
			var carwash = markers[i].getAttribute('carwash');
			var shop = markers[i].getAttribute('shop');
			var servedbakery = markers[i].getAttribute('servedbakery');
			var nonservedbakery = markers[i].getAttribute('nonservedbakery');
			var rentals = markers[i].getAttribute('rentals');
			var internet = markers[i].getAttribute('internet');

			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, address, city, country, zip,
					alwaysopen, addblue, lpg, euroxl, dieselxl, highspeedpump,
					carwash, shop, servedbakery, nonservedbakery, rentals, internet);
			map.addOverlay(marker);
			var sidebarEntry = createSidebarEntry(marker, name, address, city,
					zip, distance);
			sidebar.appendChild(sidebarEntry);
			bounds.extend(point);
		}
		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	});
	$('#map').fadeIn();
	$('#addresstomap').fadeIn();
	window.location = '#search';
}

function createMarker(point, name, address, city, country, zip, alwaysopen,
		addblue, lpg, euroxl, dieselxl, highspeedpump, carwash, shop,
		servedbakery, nonservedbakery, rentals, internet) {

	var baseIcon = new GIcon(G_DEFAULT_ICON);
	var texicon = new GIcon(baseIcon);
	texicon.image = baseUrl + "img/pointer.png";

	markerOptions = {
		icon : texicon
	};
	var marker = new GMarker(point, markerOptions);

	if (alwaysopen == 1) {
		icon1 = '<img src="' + baseUrl + 'img/alwaysopen.gif" class="shoplegendlink" alt="24h" title="24h" /> ';
	} else {
		icon1 = "";
	}
	if (addblue == 1) {
		icon2 = '<img src="' + baseUrl + 'img/addblue.gif" class="shoplegendlink" alt="AddBlue" title="AddBlue" /> ';
	} else {
		icon2 = "";
	}
	if (lpg == 1) {
		icon3 = '<img src="' + baseUrl + 'img/lpg.gif" class="shoplegendlink" alt="LPG" title="LPG" /> ';
	} else {
		icon3 = "";
	}
	if (euroxl == 1) {
		icon4 = '<img src="' + baseUrl + 'img/euroxl.gif" class="shoplegendlink" alt="Euro XL" title="Euro XL" /> ';
	} else {
		icon4 = "";
	}
	if (dieselxl == 1) {
		icon5 = '<img src="' + baseUrl + 'img/dieselxl.gif" class="shoplegendlink" alt="Diesel XL" title="Diesel XL" /> ';
	} else {
		icon5 = "";
	}
	if (highspeedpump == 1) {
		icon6 = '<img src="' + baseUrl + 'img/highspeedpump.gif" class="shoplegendlink" alt="High Speed Pump" title="High Speed Pump" /> ';
	} else {
		icon6 = "";
	}
	if (carwash == 1) {
		icon7 = '<img src="' + baseUrl + 'img/carwash.gif" class="shoplegendlink" alt="Carwash" title="Carwash" /> ';
	} else {
		icon7 = "";
	}
	if (shop == 1) {
		icon8 = '<img src="' + baseUrl + 'img/shop.gif" class="shoplegendlink" alt="Shop" title="Shop" /> ';
	} else {
		icon8 = "";
	}
	if (servedbakery == 1) {
		icon9 = '<img src="' + baseUrl + 'img/servedbakery.gif" class="shoplegendlink" alt="Served Bakery" title="Served Bakery" /> ';
	} else {
		icon9 = "";
	}
	if (nonservedbakery == 1) {
		icon10 = '<img src="' + baseUrl + 'img/nonservedbakery.gif" class="shoplegendlink" alt="Non-Served Bakery" title="Non-Served Bakery" /> ';
	} else {
		icon10 = "";
	}
	if (rentals == 1) {
		icon11 = '<img src="' + baseUrl + 'img/rentals.gif" class="shoplegendlink" alt="Rentals" title="Rentals" /> ';
	} else {
		icon11 = "";
	}
	if (internet == 1) {
		icon12 = '<img src="' + baseUrl + 'img/internet.gif" class="shoplegendlink" alt="Internet" title="Internet" /> ';
	} else {
		icon12 = "";
	}

	iconset = icon1 + icon2 + icon3 + icon4 + icon5 + icon6 + icon7 + icon8
			+ icon9 + icon10 + icon11 + icon12;

	var html = '<b>' + name + '</b> <br/> <p>' + iconset + '</p><p><br />&nbsp;<br /></p>';

	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
	});
	return marker;
}

function createSidebarEntry(marker, name, address, city, zip, distance) {
	var div = document.createElement('div');
	var html = address + ', ' + zip + ' ' + '<strong>' + city + '</strong>'
			+ ' (' + distance.toFixed(1) + ' KM) ';
	div.innerHTML = html;

	GEvent.addDomListener(div, 'click', function() {
		GEvent.trigger(marker, 'click');
		$('#legend').fadeIn();
	});
	$('#ajaxloader').fadeOut();
	return div;
}

// GOSHOP LOCATIONS

function searchShopLocations() {

	$('#ajaxloader').fadeIn();

	var pc = document.getElementById('postalcode').value;
	// var sc = document.getElementById('selectcity').value;
	loc = document.getElementById('country').value;

	var address;
	/*
	 * if (sc == "") { address = pc; } else { address = sc; }
	 */

	address = pc;
	geocoder.getLatLng(loc + " " + address, function(latlng) {
		if (!latlng) {
			$("#ajaxloader").fadeOut();
			$('#dialog').dialog( {
				resizable : false,
				close : function(event, ui) {
					$(this).dialog('destroy');
				}
			});
		} else {
			searchShopLocationsNear(latlng);
		}
	});
}

function searchShopLocationsNear(center) {

	var radius = document.getElementById('radius').value;

	var searchUrl = baseUrl + 'shoplocations.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();

		var sidebar = document.getElementById('results');
		sidebar.innerHTML = '';
		if (markers.length == 0) {
			sidebar.innerHTML = '';
			map.setCenter(new GLatLng(51, 4), 9);
			$("#ajaxloader").fadeOut();
			$('#dialog').dialog( {
				resizable : false,
				close : function(event, ui) {
					$(this).dialog('destroy');
					$("#map").fadeOut();
					$('#legend').fadeOut();
					$('#addresstomap').fadeOut();
				}
			});

			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 city = markers[i].getAttribute('city');
			var country = markers[i].getAttribute('country');
			var zip = markers[i].getAttribute('zip');

			var goshop = markers[i].getAttribute('goshop');
			var gobakery = markers[i].getAttribute('gobakery');

			var distance = parseFloat(markers[i].getAttribute('distance'));
			var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
					parseFloat(markers[i].getAttribute('lng')));

			var marker = createShopMarker(point, name, address, city, country,
					zip, goshop, gobakery);
			map.addOverlay(marker);
			var sidebarEntry = createSidebarEntry(marker, name, address, city,
					zip, distance);
			sidebar.appendChild(sidebarEntry);
			bounds.extend(point);
		}
		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	});
	$('#map').show();
	$('#mapbox').fadeIn();
	$('#addresstomap').fadeIn();
	window.location = '#search';
}

function createShopMarker(point, name, address, city, country, zip, goshop,
		gobakery) {

	var baseIcon = new GIcon(G_DEFAULT_ICON);
	var texicon = new GIcon(baseIcon);
	texicon.image = baseUrl + "img/gopointer.png";

	markerOptions = {
		icon : texicon
	};
	var marker = new GMarker(point, markerOptions);

	if (goshop == 1) {
		icon1 = '<img src="' + baseUrl + 'img/goshop.gif" alt="GO Shop" title="GO Bakery" /> ';
	} else {
		icon1 = "";
	}
	if (gobakery == 1) {
		icon2 = '<img src="' + baseUrl + 'img/gobakery.gif" alt="GO Bakery" title="GO Bakery" /> ';
	} else {
		icon2 = "";
	}

	iconset = icon1 + icon2;

	var html = '<b>' + name + '</b> <br /><br /> <p>' + iconset + '</p>';

	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
	});
	return marker;
}

function setFooter() {

	var wHeight = $(window).height();

	var cHeight;
	
	if($('#content').offset().top>300)
	{
		cHeight = $('#content').height() + 463;
	} else {
		cHeight = $('#content').height() + 163;
	}

	if (wHeight > cHeight) {
		var pBottom = wHeight - cHeight;
		$('#content').css( {
			'padding-bottom' : pBottom
		});
	} else {
		$('#content').css( {
			'padding-bottom' : 0
		});
	}
}

function IE6warning() {
	if (jQuery.browser.msie && jQuery.browser.version.substr(0, 1) == '6') {
		var warningText;
		if (siteLng == "nl") {
			warningText = 'U gebruikt een verouderde browser. Update hier voor een optimaal en veiliger surfgenot.'
		}
		if (siteLng == "fr") {
			warningText = 'Vous utilisez un navigateur obsolète. Cliquez ici pour un plaisir optimal et une navigation plus sûre.'
		}
		$('body').prepend($('<a/>', {
			id : 'IE6warning',
			text : warningText,
			href : 'http://www.browserchoice.eu/',
			target : '_blank'
		}));

		$('html').css('background-position', '0 24px');
		$('#IE6warning').css('display', 'block');
	}
}

function setTooltips() {
	$('#map img[title]').qtip( {
		style : {
			name : 'dark',
			tip : true
		}
	});
}