var basket = new Basket();

$(document).ready(function(){
	if ($.cookie("discount") && basket.getActiveDiscount() == ""){
		$.cookie("discount", null);
	}
	
	$(".wrappedlink").click(function(){
		window.location = $("a", this).eq(0).attr("href");
	});
	
	if ($.url.attr("file") == "kurv.php"){
		// Enable action mail
		$(":input[name=lemail]").change(function(){
			var email = $(this).val();
			var url = "funktioner/ajax.mc.php";
			$.get(url, {
				sid: Math.random(),
				e: email
			}, function(){} );
		});
		
		var $zip = $(":input[name=lzip]");
		var $address = $(":input[name=lgade1]");
		if ($($zip).val()){
			$(":input[name=lcity]").val(getCity($zip.val()));
		}

		var $zip = $(":input[name=lzip]");
		var $address = $(":input[name=lgade1]");
		$("#dialog_address").dialog({
			bgiframe: true,
			autoOpen: false,
			draggable: false,
			resizable: false,
			width: 450,
			title: "BEMÆRK!",
			modal: true,
			buttons: {
				"Bibehold adressen" : function(event){
					basket.disableDiscount($.cookie("discount").split("|")[0], $.cookie("discount").split("|")[1], function(result){
						if ($.cookie("discount")) {
							$.cookie("discount", null);
						}
						$("form[name=info]").attr("action", "kurv.php");
						$("form[name=info]").submit();
					});
					$(this).dialog("close");
				},
				"Indtast ny adresse" : function(event){
					$address.val("");
					$zip.val("");
					$.cookie("customer", null);
					$.cookie("customer_name", null);
					$.cookie("customer_address", null);
					$.cookie("customer_zip", null);
					$.cookie("customer_phone", null);
					$.cookie("customer_email", null);
					$(this).find("#defaultchoice").remove();
					$(this).dialog("close");
				}
			},
			close: function(event, ui){
				if ($("#defaultchoice", this).size() > 0){
					basket.disableDiscount($.cookie("discount").split("|")[0], $.cookie("discount").split("|")[1], function(result){
						$("form[name=info]").attr("action", "kurv.php");
						$("form[name=info]").submit();
					});
				}
			}
		});
		
		$address.add($zip).change(function(event){
			if ($address.val() != "" && $zip.val() != ""){
				var jCustomer = getCustomer($address.val(), $zip.val());
				var activeDiscount = basket.getActiveDiscount();
				if (jCustomer['new'] == false && activeDiscount != "") {
					$("#dialog_address").html($("#dialogtemplate_address").html());
					$("#dialog_address").dialog("open");
				} else {
					$.cookie("customer", jCustomer.id, { expires: 730 });
					$.cookie("customer_name", jCustomer.name, { expires: 730 });
					$.cookie("customer_address", jCustomer.address, { expires: 730 });
					$.cookie("customer_zip", jCustomer.zip, { expires: 730 });
					$.cookie("customer_phone", jCustomer.phone, { expires: 730 });
					$.cookie("customer_email", jCustomer.email, { expires: 730 });
				}
			}
		});	
		
		$('#kundetype-privat').add('#kundetype-erhverv').click(function(event){
			if ($(event.target).val() == 'privat'){
				$(document.forms.info).attr('action', 'kurv.php?u=p#recipient');
			} else {
				$(document.forms.info).attr('action', 'kurv.php?u=b#recipient');
			}
			document.forms.info.submit();
		});
		
		
		// GLS delivery options
		if ( $('#lgade1').val() != '' && $('#lzip').val() != '') {
			updateGLSoption();
		}
		$('#lname').change(function(e){ $('#delivery-option-door .address .name strong').text($(e.target).val()); });		
		$('#lzip').change(function(e){ 
			$('#delivery-option-door .address .zipcode').text($(e.target).val()); 
			$('#delivery-option-door .address .city').text($('#lcity').val());
		});
		
		$('#lcity').change(function(e){ $('#delivery-option-door .address .city').text($(e.target).val()); });
		$('#lgade1').change(function(e){ $('#delivery-option-door .address .street').text($(e.target).val()); });
		
		$('#lzip').add('#lgade1').change(function(){
			updateGLSoption();
		});
		
		// Continue payment
		$('#kreditkort').add('#edankort').add('#efterkrav').click(function(e){
			var deliveryoption = this;
			var payment_metod = $(this).attr('paymentmethod');
			$('input[name=paymentmethod]').val(payment_metod);
			if (payment_metod == 'topay' || payment_metod == 'topayedankort') {
				if (validatorkredit(document.forms.info)) {
					document.forms.info.submit();
					return false;
				}				
			} else if (payment_metod == 'topaycod') {
				valid = validatorkredit(document.forms.info);
				if ($('#cod-notice-displayed').length == 1 && valid) {
					document.forms.info.submit();
				} else if(valid) {
					displayPaymentSuggestion();
					return false;
				}
			}
			return false;
		});
	}
	
	if ($.url.attr("file") == "bestilling.php"){
		$("input[name=buy]").each(function(i){
			if ($(this).parents(".product").find(".discount").size()){
				$(this).click(function(event){	
					var discountCookie = $.cookie("discount");
					var customerCookie = $.cookie("customer");
					var $dialogDiscount = $("#dialog_discount");
					var $product = $(this).parents(".product").eq(0);
					var number = $($product).find("input[name=number]").val();
					var productId = $($product).attr("id");
					var discountId = $(".discount", $product).eq(0).attr("id");
					if (discountCookie){
						var discountArray = discountCookie.split("|");
						if (discountArray[0] == discountId && discountArray[1] == productId){
							basket.add(productId, number, function(){});
							basket.applyDiscount(discountId, productId, function(){ // shouldnt be necessary but if host name is changed a new session is created without a discount.
								basket.update(function(updatedBasket){
									updateBasket($("#smallbasket"), updatedBasket, productId);
								});
							});
						} else {
							var $dialogChoice = $("#dialog_discountchoice");
							$($dialogChoice).html($("#dialogtemplate_choose").html());
							$($dialogChoice).find("form").prepend("<input type='hidden' name='quantity' id='quantity' value='" + number + "'/>");
							$($dialogChoice).find("form").prepend("<input type='hidden' name='discountId' id='discountId' value='" + discountId + "'/>");
							$($dialogChoice).find("form").prepend("<input type='hidden' name='productId' id='productId' value='" + productId + "'/>");		$($dialogChoice).find("form").prepend("<input type='hidden' name='oldDiscountId' id='oldDiscountId' value='" + discountArray[0] + "'/>");
							$($dialogChoice).find("form").prepend("<input type='hidden' name='oldProductId' id='oldProductId' value='" + discountArray[1] + "'/>");
							$($dialogChoice).dialog("open");						
						}
					} else {
						$($dialogDiscount).html($("#dialogtemplate_form").html());
						$($dialogDiscount).find("form").prepend("<input type='hidden' name='quantity' id='quantity' value='" + number + "'/>");
						$($dialogDiscount).find("form").prepend("<input type='hidden' name='discountId' id='discountId' value='" + discountId + "'/>");
						$($dialogDiscount).find("form").prepend("<input type='hidden' name='productId' id='productId' value='" + productId + "'/>");
						$($dialogDiscount).dialog('open');
					}
					event.preventDefault();
				});
			} else {
				activateBuyButton($(this).parents(".product").eq(0));
			}
		});
	}
	
	var elSmallbasket = $("#smallbasket");
	activateAddOne(elSmallbasket);
	activateRemoveOne(elSmallbasket);
	
	var discountButtons = {
		"Ja tak!": function(event) {
			var tips = $("#tips", this), address = $("#address", this), zip = $("#zip", this), bothFields = $([]).add(address).add(zip);
			tips.text("");
			var bValid = true;
			bothFields.removeClass('ui-state-error');
			if (address.val().length < 5){
				address.addClass('ui-state-error');
				tips.append("Addressefeltet skal indholde mindst 5 tegn.<br/>").effect("highlight",{},1500);
				bValid = false;
			}
			if (!(/^([0-9]){4}$/.test(zip.val()))){
				zip.addClass('ui-state-error');
				tips.append("Ugyldigt postnummer (Ex. på postnr: 2200)<br/>").effect("highlight",{},1500);
				bValid = false;
			}	
			if(bValid){
				var jCustomer = getCustomer(address.val(), zip.val());
				var discountId = $(this).find("#discountId").val();
				var productId = $(this).find("#productId").val();
				var quantity = $(this).find("#quantity").val();
				basket.add(productId, quantity, function(){});
				if (jCustomer['new'] == false) {
					$(this).html($("#dialogtemplate_warning").html());
					$(this).dialog('option', 'buttons', { 
						"Ok": function() { 
							$(this).dialog("close"); 
						}
					});
					$(this).dialog('option', 'title', 'BEMÆRK!');
					$.cookie("customer", jCustomer.id, { expires: 730 });
					$.cookie("customer_name", jCustomer.name, { expires: 730 });
					$.cookie("customer_address", jCustomer.address, { expires: 730 });
					$.cookie("customer_zip", jCustomer.zip, { expires: 730 });
					$.cookie("customer_phone", jCustomer.phone, { expires: 730 });
					$.cookie("customer_email", jCustomer.email, { expires: 730 });
					$("input[name=buy]").each(function(i){ // unbind discount dialog and activate normal behaviour
						if ($(this).parents(".product").find(".discount").size()){
							$(this).unbind("click");
							activateBuyButton($(this).parents(".product").eq(0));
						}
					});
					// remove discounts
					$(".product .discount").each(function(){
						$(this).fadeOut(3000, function(){
							$(this).remove();
						});
					});
				} else {
					// set new customer cookie
					$.cookie("discount", discountId + "|" + productId, { expires: 1 });
					$.cookie("customer", "new", { expires: 730 });
					$.cookie("customer_address", $(this).find("#address").eq(0).val(), { expires: 730 });
					$.cookie("customer_zip", $(this).find("#zip").eq(0).val(), { expires: 730 });
					basket.applyDiscount(discountId, productId, function(){});
					$(this).dialog('close');
				}
			}
		},
		"Nej": function(event) {
			var productId = $(this).find("#productId").val();
			var quantity = $(this).find("#quantity").val();
			basket.add(productId, quantity, function(){});
			$(this).dialog("close");
		}
	};
	$("#dialog_discount").dialog({
			bgiframe: true,
			autoOpen: false,
			draggable: false,
			resizable: false,
			title: "TILBUD",
			modal: true,
			width: 450,
			buttons: discountButtons,
			close: function() {
				$(this).html($("#dialogtemplate_form").html());
				$(this).dialog('option', 'buttons', discountButtons);
				$(this).dialog('option', 'title', 'TILBUD');
				basket.update(function(updatedBasket){
					updateBasket($("#smallbasket"), updatedBasket, null);
				});
			}
		});
		
	var choiceButtons = {
		"Ja tak!": function(event) {
			var discountId = $(this).find("#discountId").val();
			var productId = $(this).find("#productId").val();
			var quantity = $(this).find("#quantity").val();
			
			$.cookie("discount", discountId + "|" + productId, { expires: 1 });
			basket.add(productId, quantity, function(){});
			basket.applyDiscount(discountId, productId, function(){});
			$(this).dialog("close");
		},		
		"Nej, læg varen i varekurven til normalpris": function(event) {
			var productId = $(this).find("#productId").val();
			var quantity = $(this).find("#quantity").val();
			basket.add(productId, quantity, function(){});
			$(this).dialog("close"); 
		}
	};
	
	$("#dialog_discountchoice").dialog({
			bgiframe: true,
			autoOpen: false,
			draggable: false,
			resizable: false,
			minHeight: 50,
			width: 450,
			title: "ÆNDRE TILBUDET",
			modal: true,
			buttons: choiceButtons,
			close: function() {
				$(this).html($("#dialogtemplate_choose").html());
				$(this).dialog('option', 'buttons', choiceButtons);
				$(this).dialog('option', 'title', 'ÆNDRE TILBUDET');
				basket.update(function(updatedBasket){
					updateBasket($("#smallbasket"), updatedBasket, null);
				});
			}
	});

});

function displayPaymentSuggestion(){
	if ($('#cod-notice-displayed').length == 0) {
		result = $('#cod-modal-template').html();
		$('#cod-modal-template').remove();
		var height = 290;
		var width = 420;
		var modal = "";
		modal += '<div class="modal-overlay"></div>';  
		modal += '<div class="modal-window" id="cod-modal" style="z-index:100; width:' + width + 'px; height:' + height + 'px; margin-top:-' + (height / 2) + 'px; margin-left:-' + (width / 2) + 'px;">';
		modal += result;
		modal += "</div>";
		
		$("body").append(modal);
		$('<div style="display:none;" id="cod-notice-displayed"></div>').appendTo("body");
		
		// Activate continue
		$('#cod-continue').click(function(e){
			setTimeout("continueCod()", 1000);
			return false;
		});
		$('#credit-continue').click(function(e){
			closeModal();
			setTimeout("continueCredit()", 1000);
			return false;
		});
		valid = false;
	}
}
function continueCredit(){
	//$('#cod-notice-displayed').remove();
	$('#kreditkort').click();
}
function continueCod(){
	$('#efterkrav').click();
}
function closeModal()
{
	$(".modal-overlay").remove(); $(".modal-window").remove();
}
function activateBuyButton(elProduct){
	$(":input[name=buy]", elProduct).click(function(event){
		event.preventDefault();
		var number = $(elProduct).find("input[name=number]").val();
		var id = $(elProduct).attr("id");
		basket.add(id, number, function(){
			basket.update(function(updatedBasket){
				updateBasket($("#smallbasket"), updatedBasket, id);
			});
		});
	});
}
function activateAddOne(elBasket){
	$(":input[name=addone]", elBasket).each(function(i){
		$(this).click(function(event){
			event.preventDefault();
			var elId = $(this).prev();
			var id = $(elId).val();
			basket.add(id, 1, function(){
				basket.update(function(updatedBasket){
					updateBasket($("#smallbasket"), updatedBasket, id);
				});
			});
		});
	});
}
function activateRemoveOne(elBasket){
	$(":input[name=subtractone]", elBasket).each(function(i){
			$(this).click(function(event){
			event.preventDefault();
			var elId = $(this).prev().prev();
			var id = $(elId).val();
			basket.remove(id, 1, function(){
				basket.update(function(updatedBasket){
					updateBasket($("#smallbasket"), updatedBasket, id);
				});
			});
		});
	});
}
function updateBasket(elBasket, updatedBasket, id){
	$(elBasket).html(updatedBasket);
	if (id && $("input[value=" + id + "]", elBasket).size()) {
		$("input[value=" + id + "]", elBasket).parents("tr").stop().effect("highlight", {color:"#fd1842"}, 5000);
	} else {
		$(elBasket).stop().effect("highlight", {color:"#fd1842"}, 5000);
	}
	activateAddOne(elBasket);
	activateRemoveOne(elBasket);
}
function getCustomer(address, zip){
	var customer = eval($.ajax({
		url: "funktioner/ajax.customer.php",
		dataType: "json",
		data: ({
			action: "lookup",
			address: address,
			zip: zip
			}),
		async: false
	}).responseText);
	return customer;
}


function checkAll(formId, cName, check ) {
    for (i=0,n=formId.elements.length;i<n;i++)
        if (formId.elements[i].className.indexOf(cName) !=-1)
            formId.elements[i].checked = check;
}
function toggleKommune(formId, kval, check ) {
    for (i=0,n=formId.elements.length;i<n;i++)
        if (formId.elements[i].value.indexOf(kval) !=-1) {
            if (formId.elements[i].checked == false) {
                    formId.elements[i].checked = check;
            }
            else formId.elements[i].checked = false;
            }
}
function pop(url, name, w, h) {
        window.open(url, name, "fullscreen=no,toolbar=no,status=no,menubar=no,scrollbars=yes,resizable=no,directories=no,location=no,width="+w+",height="+h+",left=8,top=8");
}
function validatePhone(phoneNumber){
	if (phoneNumber.charAt(0) == "0") {
		return false;
	} else if (parseInt(phoneNumber,10) < 10000000) {
		return false;
	}
	return true;
}
function validateForm(f)
{
 var x = f.elements;
 var valid = true;
 var emailvalid = true;
 var cm;
 for (var i=0;i<x.length;i++)
 {
  cm = x[i].className;
  //document.write(cm.substring(0, 8));
  if (cm.indexOf("required") >= 0 && !x[i].value) {
          x[i].style.border = "1px solid red";
          if (valid) alert('Alle felter markeret med * skal udfyldes');
          valid = false;
  }
  if (cm.indexOf("email_val") >= 0 && !isValidEmail(x[i].value)) {
          x[i].style.border = "1px solid red";
          if (valid) alert('Den indtastede emailadresse er ikke gyldig');
          valid = false;
  }
  if (cm.indexOf("requiredrb") >= 0) {
      var cnt = -1;
      var group = f[x[i].name];
      for (var rbi=group.length-1; rbi > -1; rbi--) {
        if (group[rbi].checked) {cnt = rbi; rbi = -1;}
      }
      if (cnt < 0){
          x[i].style.border = "1px solid red";
          if (valid) alert('Alle felter markeret med * skal udfyldes');
          valid = false;
      }
  }
 }
   var phone = x.lphone.value;
  if (phone && !validatePhone(phone)) {
  	alert('Ugyldight telefonnummer');
  	valid = false;
  }
  
  	// If COD delivery site does not apply
	if ($('input[name=paymentmethod]').val() != 'topaycod') {
		if ($('#checkout-delivery .delivery_site:checked').length == 0){
			$.scrollTo('#step-delivery', 300);
			alert('Du skal udfylde leveringinformation før du går videre');
			valid = false;
		}
	}
 return valid;
}

function isValidEmail(str) {
   return (str.indexOf("@") > 0);
}
function minus(id) {
  var el = document.getElementById("number"+id.name);
  var antal = el.value;
  antal = parseInt(antal,10)-1;
  if (antal<0) {
    antal=0;
  }
  el.value = antal;
}
function plus(id) {
  var el = document.getElementById("number"+id.name);
  var antal = el.value;
  antal = (parseInt(antal,10)+1);
  if (antal<0) {
    antal=0;
  }
  el.value = antal;
}
function validatorkredit(theForm)
{
	var valid = validateForm(theForm);
	return valid;
}
function validatorcvr(theForm)
{

  if (theForm.cvrnr.value =="")
  {
    alert("Indtast CVR-nummer");
    theForm.cvrnr.focus();
    return (false);
  }
  else if (theForm.cvrnr.value.length !=8)
  {
    alert("CVR-nummer skal være 8 cifre. Du har kun indtastet "+theForm.cvrnr.value.length);
    theForm.cvrnr.focus();
    return (false);
  }
  var val=parseInt(theForm.cvrnr.value,10);
  if (isNaN(val))
  {
          alert("CVR-nummer må kun indeholde tal");
    theForm.cvrnr.focus();
    return (false);
        }
        var valid = validatorkredit(theForm);
  return (valid);
}
function validatoroff(theForm)
{

  if (theForm.offean.value =="")
  {
    alert("Indtast EAN-nummer");
    theForm.offean.focus();
    return (false);
  }
  else if (theForm.offean.value.length !=13)
  {
    alert("EAN-nummer skal være 13 cifre. Du har kun indtastet "+theForm.offean.value.length);
    theForm.cvrnr.focus();
    return (false);
  }
  if (theForm.offkontakt.value =="")
  {
    alert("Indtast kontaktperson");
    theForm.offkontakt.focus();
    return (false);
  }
  if (theForm.offreknr.value =="")
  {
    alert("Indtast ordre-/rekvisitionsnummer");
    theForm.offreknr.focus();
    return (false);
  }

        var valid = validatorkredit(theForm);
  return (valid);
}

/**
 * Constructs a new Basket object
 */
function Basket(sid){
	this.sid = sid;
	this.url = "funktioner/ajax.basket.php";
}

/**
 * Adds an item to the basket.
 */
Basket.prototype.add = function(id, quantity, callback){
	$.post(this.url, 
		{
			sid: this.sid,
			add: id,
			quantity: quantity
		}, 
		function(result){ callback(result); }
	);
};
Basket.prototype.addOne = function(id, callback){
	this.add(id, 1, callback);
};

/** 
 * Removes an item from the basket.
 */
Basket.prototype.remove = function(id, quantity, callback){
	$.post(this.url, 
		{
			sid: this.sid,
			remove: id,
			quantity: quantity
		}, 
		function(result){ callback(result); }
	);	
};
Basket.prototype.removeOne = function(id, callback){
	this.remove(id, 1, callback);
};
Basket.prototype.removeAll = function(id, callback){
		$.post(this.url, 
		{
			sid: this.sid,
			remove: id,
			quantity: "all"
		}, 
		function(result){ callback(result); }
	);	
};

/**
 * Clears the content of the basket.
 */
Basket.prototype.clear = function(callback){
	$.post(this.url, 
		{ 
			sid: this.sid,
			clear: 1 
		}, 
		function(result){ callback(result); }
	);
};

/**
 * Resets the basket but does not clear the items.
 */
Basket.prototype.reset = function(callback){
	$.post(this.url,
		{
			sid: this.sid,
			reset: 1
		},
		function(result){ callback(result); }
	);
};
Basket.prototype.update = function(callback){
	$.post(this.url,
		{
			sid: this.sid,
			update: 1
		},
		function(result){ callback(result); }
	);
};
Basket.prototype.applyDiscount = function(discountId, productId, callback){
	$.post(this.url,
		{
			sid: this.sid,
			discount: discountId,
			product: productId			
		},
		function(result){ callback(result); }		
	);
};
Basket.prototype.disableDiscount = function(discountId, productId, callback){
	$.post(this.url,
		{
			sid: this.sid,
			disable: discountId,
			product: productId
		},
		function(result){ callback(result); }
	);	
};
Basket.prototype.getActiveDiscount = function(){
	return $.ajax({
		url: this.url,
		type: "POST",
		data: ({
			sid: this.sid,
			activediscount: 1
			}),
		async: false
	}).responseText;
};

// returns longlat and name of options
function activateGLSOptions(street, zipcode, callback) {
		$.get(
			'funktioner/gls_proxy.php', 
			{
				street: street,
				zipcode: zipcode,
				Amount: 3
			},
			function(json){
				if (json == false) {
					// TODO redirect to error page
					alert('Beklager der opstod en fejl - prøv venligst igen om et øjeblik (GLS)');
					return;
				}

				// Build options HTML
				var options = '';
				for (var i = 0, json_len = json.length; i < json_len; i++) {
					var shop = json[i];
					var option_value = shop.Number;
					var option_content = '<strong>' + shop.CompanyName + '</strong><br/>';
					option_content += shop.Streetname + '<br/>';
					option_content += shop.Streetname2 + '<br/>';
					option_content += shop.ZipCode + ' ' + shop.CityName + '<br/>';
					option_content += '<input type="hidden" name="possible_delivery_address_name" value="'+shop.CompanyName+'" class="possible_delivery_address_name">';
					option_content += '<input type="hidden" name="possible_delivery_address_id" value="'+shop.Number+'" class="possible_delivery_address_id">';
					option_content += '<input type="hidden" name="possible_delivery_address_street1" value="'+shop.Streetname+'" class="possible_delivery_address_street1">';
					option_content += '<input type="hidden" name="possible_delivery_address_street2" value="'+shop.Streetname2+'" class="possible_delivery_address_street2">';
					option_content += '<input type="hidden" name="possible_delivery_address_zipcode" value="'+shop.ZipCode+'" class="possible_delivery_address_zipcode">';
					option_content += '<input type="hidden" name="possible_delivery_address_city" value="'+shop.CityName+'" class="possible_delivery_address_city">';
					option_content += '<input type="hidden" name="possible_delivery_address_phone" value="'+shop.Telephone+'" class="possible_delivery_address_phone">' + "\n";
					
					var ohs = shop.OpeningHours;
					var openinghours_content = '';
					for(var j = 0, ohs_len = ohs.length; j < ohs_len; j++){
						var oh = ohs[j];
						openinghours_content += "<span class='day'>" + oh.days + "</span><span class='hours'>" + oh.hours + "</span><br/>\n";
					}
					
					options += ('<input type="radio" tabindex="17" name="delivery_site" class="delivery_site" value="{value}"><img src="gfx/google_map_markers/red_Marker' + String.fromCharCode(i+65) + '.png" /><div class="address"><div class="addressdata">{content}</div><div class="openinghours">{openinghours}</div></div><br/><br/>').replace("{value}", option_value).replace("{content}", option_content).replace("{openinghours}", openinghours_content);
				}
				$('#gls-data .notice').remove();
				$('#parcel-shop-list').html(options);
				$('<div id="point_data" style="display:none">' + escape(JSON.stringify(json).replace(/(\s{2,})/g, '')) + '</div>').appendTo('#parcel-shop-list');
				
				// FIXME: eventhough inputs have same name the group seems to be different so checked will be removed manually.
				var delivery_site_elements = $('#checkout-delivery .delivery_site');
				$('#checkout-delivery .delivery_site').click(function(e){
					for (var i = 0; i < delivery_site_elements.length; i++) {
						if ($(e.target).val() != $(delivery_site_elements[i]).val()) {
							$(delivery_site_elements[i]).removeAttr('checked');
						}
					}
					if ($(e.target).val() == 'door') {
						$('#delivery_address_name').val('');
						$('#delivery_address_id').val('');
						$('#delivery_address_street1').val('');
						$('#delivery_address_street2').val('');
						$('#delivery_address_zipcode').val('');
						$('#delivery_address_city').val('');
						$('#delivery_address_phone').val('');
					} else {
						var delivery_address = $(e.target).nextAll('.address').eq(0);
						$('#delivery_address_id').val($('.possible_delivery_address_id', delivery_address).val());
						$('#delivery_address_name').val($('.possible_delivery_address_name', delivery_address).val());
						$('#delivery_address_street1').val($('.possible_delivery_address_street1', delivery_address).val());
						$('#delivery_address_street2').val($('.possible_delivery_address_street2', delivery_address).val());
						$('#delivery_address_zipcode').val($('.possible_delivery_address_zipcode', delivery_address).val());
						$('#delivery_address_city').val($('.possible_delivery_address_city', delivery_address).val());
						$('#delivery_address_phone').val($('.possible_delivery_address_phone', delivery_address).val());		
					}
				});
				
				callback(json);
			},
			'json'
		);
}

function updateGLSoption() {
	var street = $('#lgade1').val();
	var zipcode = $('#lzip').val();
	if (street != '' && zipcode != '') {
		activateGLSOptions(street, zipcode, function(pointData){
			activateGoogleMap(
					street, 
					zipcode, 
					'google-map', // id of element
					pointData
					
			);	
			var map = $('#map');
			if ($('#map-link', map).length==0)	{
				$('<strong id="map-link"><a href="map.php?data=' + $('#point_data').text() + '&street=' + escape(street) + '&zipcode=' + zipcode + '"><img style="vertical-align: middle;" alt="" src="gfx/linkpil.jpg"> Vis på stort kort</a></strong>').appendTo('#map');
	
				$('#map #map-link a').popupWindow({
					centerBrowser:1,
					height:430,
					width:530
				});	
			}
		});
		
		// update door option
		$('#delivery-option-door .address .name strong').text($('#lname').val());
		$('#delivery-option-door .address .zipcode').text($('#lzip').val()); 
		$('#delivery-option-door .address .city').text($('#lcity').val());
		$('#delivery-option-door .address .street').text($('#lgade1').val());
	}
}

function activateGoogleMap(street, zipcode, googleMap, pointData){	
	// Build google map
	var mcs_home  = new google.maps.LatLng(55.488592648080264, 8.465802669525146);
	var myOptions = {
		zoom: 11,
		center: mcs_home,
		//disableDefaultUI: true,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	}
	var map    = new google.maps.Map(document.getElementById(googleMap), myOptions);
	var bounds = new google.maps.LatLngBounds();
	
	$('#google-map').css({border: '4px solid #BCD782', height: '235px'});

	// Find location of customer address
    geocoder = new google.maps.Geocoder();
  	geocoder.geocode( { 'address': street + ', ' + zipcode + ', Danmark'}, function(results, status) {
  		var image = 'gfx/google_map_markers/green_MarkerA.png';
		if (status == google.maps.GeocoderStatus.OK) {
		    var marker = new google.maps.Marker({
		        map: map, 
		        icon: image,
		        title: 'Her bor du',
		        position: results[0].geometry.location
		    });
		    bounds.extend(results[0].geometry.location);
		} else {
			//alert("Geocode was not successful for the following reason: " + status);
		}
	});
  	
	// Build markers for shops
  	for (i = 0; i < pointData.length; i++) {
  		image = 'gfx/google_map_markers/red_Marker' + String.fromCharCode(i+65) + '.png';
  		var parcel_loc = new google.maps.LatLng(pointData[i].Latitude, pointData[i].Longitude); // MCS Data Falkevej 3A, Esbjerg
		var marker = new google.maps.Marker({
	    	map: map,
	    	position: parcel_loc,
	    	icon: image,
	    	title: pointData[i].CompanyName
	    });
	    bounds.extend(marker.getPosition());
	}
	map.fitBounds(bounds);
}

