function replaceBackgroundImage(elem, image) {
    elem.setAttribute("src", image);
}

$(function(){
    var searchField = $('#search');
    
    /*Set on focus make start value dissapear*/
    searchField.focus(function() {
        $(this).css("color", "#000000");
        //if ($(this).val() == jQuery(this).attr("startvalue")) {
        if ($(this).val() == "Zoek hier") {
            $(this).val("");
        }
    });

    /*Set on blur make start value appear*/
    searchField.blur(function() {
        if ($(this).val() == "") {
            $(this).css("color", "#666666");
            $(this).val("Zoek hier");
        }
    });

    /*Set on blur make start value appear*/
    if (searchField.val() == "Zoek hier") {
        searchField.css("color", "#666666");
    }
    
});

/*	validation related objects and functions */

var validationRules = {
		
	messages :  {

		missing :  {
	
			"lastName" : "requiredLastName", 
			"sex" : "requiredSex", 
			"deliveryAddress.street" : "requiredStreet", 
			"deliveryAddress.houseNumber" : "requiredHouseNumber", 
			"deliveryAddress.postcode" : "requiredPostcode", 
			"deliveryAddress.city" : "requiredCity", 
			"invoiceAddressLastName" : "requiredLastName", 
			"invoiceAddress.street" : "requiredStreet", 
			"invoiceAddress.houseNumber" : "requiredHouseNumber", 
			"invoiceAddress.postcode" : "requiredPostcode", 
			"invoiceAddress.city" : "requiredCity", 
			"email" : "requiredEmail",
			"emailAgain" : "fillInEmailAgain"
	
		},

		tooLong :  {
	
			"companyName" : "longCompanyName", 
			"firstName" : "longFirstName", 
			"telephoneNumber" : "longTelephoneNumber", 
			"currentCamera" : "longCurrentCamera", 
			"comments" : "longComments", 
			"howDidYouKnow" : "longHowDidYouKnow", 
			"lastName" : "longLastName", 
			"deliveryAddress.street" : "longStreet", 
			"deliveryAddress.houseNumber" : "longHouseNumber", 
			"deliveryAddress.postcode" : "longPostcode", 
			"deliveryAddress.city" : "longCity", 
			"invoiceAddressCompanyName" : "longCompanyName", 
			"invoiceAddressFirstName" : "longFirstName", 
			"invoiceAddressLastName" : "longLastName", 
			"invoiceAddress.street" : "longStreet", 
			"invoiceAddress.houseNumber" : "longHouseNumber", 
			"invoiceAddress.postcode" : "longPostcode", 
			"invoiceAddress.city" : "longCity", 
			"email" : "longEmail", 
			"emailAgain" : "longEmail"
			
		},

		mismatch :  {
	
			"emailAgain" : "orderFormErrors.emailMismatch" 
	
		} 
		
	},

	maxLength : {

		"companyName" : 40, 
		"firstName" : 40, 
		"lastName" : 80, 
		"deliveryAddress.street" : 100, 
		"deliveryAddress.houseNumber" : 10, 
		"deliveryAddress.postcode" : 15, 
		"deliveryAddress.city" : 50, 
		"invoiceAddressCompanyName" : 40, 
		"invoiceAddressFirstName" : 40, 
		"invoiceAddressLastName" : 80, 
		"invoiceAddress.street" : 100, 
		"invoiceAddress.houseNumber" : 10, 
		"invoiceAddress.postcode" : 15, 
		"invoiceAddress.city" : 50, 
		"email" : 75, 
		"telephoneNumber" : 20, 
		"currentCamera" : 100, 
		"comments" : 500, 
		"howDidYouKnow" : 100

	} 
	
}
	
var invalidFields = {

	length : 0,		
	
	fieldIds : {}

};

function escapeSelectorForJQuery(selector){

	var ret = selector;
	
	if (selector.match(/\./))
		ret = selector.replace(/\./, "\\.");
		
	return ret;

}

function validateField(id, isRequired){

	var ret = true;
	var originalId = id;

	id = escapeSelectorForJQuery(id);						
		
	var value = $("#" + id).val();
	
	if ((isRequired) && ((!value) || (value == ""))){

		invalidFields.length++;
		invalidFields.fieldIds[originalId] = true;

		ret = false;
	
	} else if ((value) && (value != "") && (value.length > validationRules.maxLength[originalId])){

		invalidFields.length++;
		invalidFields.fieldIds[originalId] = true;

		ret = false;
	
	}
	
	return ret;

}

function validateFieldsEqual(id1, id2){

	var ret = true;
	
	var originalId1 = id1;
	var originalId2 = id2;
				
	id1 = escapeSelectorForJQuery(id1);
	id2 = escapeSelectorForJQuery(id2);
		
	var value1 = $("#" + id1).val();
	var value2 = $("#" + id2).val();

	if (value1 != value2){

		invalidFields.length++;
		invalidFields.fieldIds[originalId2] = true;

		ret = false;
	
	}
	
	return ret;

}

function validateRequiredFields(){

	logParameters("/images/blank_enter_validateRequiredFields.gif");
	
	validateField("lastName", true);
	
	if ( (!$("#sex1").attr("checked")) && (!$("#sex2").attr("checked")) ){
	
		invalidFields.length++;
		invalidFields.fieldIds["sex"] = true;

	}
	
	if ((! $("#deliveryAddress\\.country").val()) || ( $("#deliveryAddress\\.country").val() == "")){
	
		invalidFields.length++;
		invalidFields.fieldIds["deliveryAddress.country"] = true;

	}
	
	validateField("deliveryAddress.street", true);
	validateField("deliveryAddress.houseNumber", true);
	validateField("deliveryAddress.postcode", true);
	validateField("deliveryAddress.city", true);
	
	var invoiceAddressIsVisible = $("#invoiceAddressRow1").css("display");
	
	invoiceAddressIsVisible = (invoiceAddressIsVisible != "none" ? true : false);

	if (invoiceAddressIsVisible){
	
		validateField("invoiceAddressCompanyName", false);
		validateField("invoiceAddressFirstName", false);
		validateField("invoiceAddressLastName", true);
		validateField("invoiceAddress.street", true);
		validateField("invoiceAddress.houseNumber", true);
		validateField("invoiceAddress.postcode", true);
		validateField("invoiceAddress.city", true);
	
		if ((! $("#invoiceAddress\\.country").val()) || ( $("#invoiceAddress\\.country").val() == "")){
		
			invalidFields.length++;
			invalidFields.fieldIds["invoiceAddress.country"] = true;
	
		}
		
	}
	
	if (validateField("email", true)){
		
		if (validateField("emailAgain", true))
			validateFieldsEqual("email", "emailAgain");
			
	} else {
		
		validateField("emailAgain", true);
		
	}

	logParameters("/images/blank_leave_validateRequiredFields.gif");
	
}

function validateOptionalFields(){

	logParameters("/images/blank_enter_validateOptionalFields.gif");
	
	validateField("companyName", false);
	validateField("firstName", false);
	validateField("telephoneNumber", false);
	validateField("currentCamera", false);
	validateField("comments", false);

	logParameters("/images/blank_leave_validateOptionalFields.gif");
	
}

function validate(){

	logParameters("/images/blank_enter_validate.gif");

	var invoiceBlockHidden = $("#useDeliveryAsInvoiceAddress").attr("checked");
	
	if (invoiceBlockHidden){
		
		resetInputField("invoiceAddressCompanyName", "value", "");
		resetInputField("invoiceAddressFirstName", "value", "");
		resetInputField("invoiceAddressLastName", "value", "");
		resetInputField("invoiceAddress.street", "value", "");
		resetInputField("invoiceAddress.houseNumber", "value", "");
		resetInputField("invoiceAddress.postcode", "value", "");
		resetInputField("invoiceAddress.city", "value", "");
		
		//resetInputField("invoiceAddress.country", "selectedIndex", 9);
		resetInputField("invoiceAddress.country", "selectedIndex", 0);
		
	}
	
	validateRequiredFields();
	validateOptionalFields();
	
	var ret = (invalidFields.length == 0);
	
	if (ret){
		
		$('label').each(function(index) {
			
			$(this).css("color", "");
			$(this).css("textDecoration", "none");
			
		});
		
	}

	logParameters("/images/blank_leave_validate_" + ret + ".gif");
	
	return ret;
	
}

function showValidationErrorDialog(){

	if (invalidFields.length > 0){

		$('label').each(function(index) {
		
			var inputFieldId = $(this).attr("for");
			
			//inputFieldId = escapeSelectorForJQuery(inputFieldId);
			
			if (invalidFields.fieldIds[inputFieldId]){
				$(this).css("color", "red");
				$(this).css("textDecoration", "underline");
			} else {
				$(this).css("color", "");
				$(this).css("textDecoration", "none");
			}
				
		});
		
		$( "#validationErrorsBox" ).dialog( "open" );

		invalidFields = {

			length : 0,		
			fieldIds : {}

		};

	}

}


function trimInputFields(){

	logParameters("/images/blank_enter_trimInputFields.gif");
	
	var fields = $(":text"); 

	if (fields){
		
		jQuery.each(fields, function(i, field){
			
			var s = $(field).val();
			s = $.trim(s);
			
			$(field).val(s);
				
		});
		
	}

	logParameters("/images/blank_leave_trimInputFields.gif");
	
}

function toggleInvoiceAddressRow(id, displayValue) {
    
    var row = document.getElementById(id);
	
	if (row)
       	row.style.display = displayValue;
	
}

function resetInputField(id, property, newValue){

    var fld = document.getElementById(id);
	
	if (fld)
       	fld[property] = newValue;
	
	/*
	$("#" + id).val(newValue);
	*/

}

function toggleInvoiceAddress(show) {

	logParameters("/images/blank_enter_toggleInvoiceAddress_" + show + ".gif");
	
	$("#diffIA").val(show);
    
    var displayValue = "table-row"
    var detect = navigator.userAgent.toLowerCase();
    if (detect.indexOf("msie") > 0) {
        displayValue = "inline";
    }

	if (!show)
        displayValue = "none";
		
	for (var i = 1; i < 9; i++)				
		toggleInvoiceAddressRow("invoiceAddressRow" + i, displayValue);
		
	if (!show){
        
		resetInputField("invoiceAddressCompanyName", "value", "");
		resetInputField("invoiceAddressFirstName", "value", "");
		resetInputField("invoiceAddressLastName", "value", "");
		resetInputField("invoiceAddress.street", "value", "");
		resetInputField("invoiceAddress.houseNumber", "value", "");
		resetInputField("invoiceAddress.postcode", "value", "");
		resetInputField("invoiceAddress.city", "value", "");
		
		//$("#invoiceAddress.country option").attr("value") == 3
		
//		resetInputField("invoiceAddress.country", "selectedIndex", 9);
		resetInputField("invoiceAddress.country", "selectedIndex", 0);
		
	} else {
		
//		resetInputField("invoiceAddress.country", "selectedIndex", 9);
		resetInputField("invoiceAddress.country", "selectedIndex", 0);
		
	}

	logParameters("/images/blank_leave_toggleInvoiceAddress.gif");
	
}

function positionDialog(dialogId){
	
	var x = $(window).width();
	var y = $(window).height();
	
	x = Math.floor(x/2) - 150;			
	
	y = 100;
	
	$( "#" + dialogId ).dialog( "option", "position", [x, y] );
	
}

$(function() {

	if ((typeof($( "#validationErrorsBox" )) != "undefined") && (typeof($( "#validationErrorsBox" ).dialog) != "undefined")){
		
		$( "#validationErrorsBox" ).dialog({
			autoOpen: false,
			width: 300,
			height: 200,
			modal: true,
			resizable: false,
			//position: [w,h]
			
			buttons: { 
				
				"OK": function() {
					$( this ).dialog( "close" );
				}
				
			},
			
			open: function(event, ui) {
				
				positionDialog("validationErrorsBox");
				
			}
			
		});
		
	}
	
});

function logParameters(dummyUrl){

	var loggerUrl = "/images/blank.gif";

   	if (typeof(dummyUrl) != "undefined"){
   		loggerUrl = dummyUrl;
    }

//	var s = $('#orderForm').serialize();

   	var s = "";
   		
   	s += "&firstName=" + $("#firstName").val();
   	s += "&lastName=" + $("#lastName").val();
   	s += "&companyName=" + $("#companyName").val();
   	s += "&sex1=" + $("#sex1").attr("checked");
   	s += "&sex2=" + $("#sex2").attr("checked");
   	s += "&deliveryAddress.street=" + $("#deliveryAddress\\.street").val();
   	s += "&deliveryAddress.houseNumber=" + $("#deliveryAddress\\.houseNumber").val();
   	s += "&deliveryAddress.postcode=" + $("#deliveryAddress\\.postcode").val();
   	s += "&deliveryAddress.city=" + $("#deliveryAddress\\.city").val();
   	s += "&deliveryAddress.country=" + $("#deliveryAddress\\.country").val();
   	s += "&invoiceAddressFirstName=" + $("#invoiceAddressFirstName").val();
   	s += "&invoiceAddressLastName=" + $("#invoiceAddressLastName").val();
   	s += "&invoiceAddressCompanyName=" + $("#invoiceAddressCompanyName").val();
   	s += "&invoiceAddress.street=" + $("#invoiceAddress\\.street").val();
   	s += "&invoiceAddress.houseNumber=" + $("#invoiceAddress\\.houseNumber").val();
   	s += "&invoiceAddress.postcode=" + $("#invoiceAddress\\.postcode").val();
   	s += "&invoiceAddress.city=" + $("#invoiceAddress\\.city").val();
   	s += "&invoiceAddress.country=" + $("#invoiceAddress\\.country").val();
   	s += "&telephoneNumber=" + $("#telephoneNumber").val();
   	s += "&email=" + $("#email").val();
   	s += "&emailAgain=" + $("#emailAgain").val();
   	s += "&currentCamera=" + $("#currentCamera").val();
   	s += "&comments=" + $("#comments").val();
   	s += "&keepInformed=" + $("#keepInformed").val();
   	s += "&keepInformedExtra=" + $("#keepInformedExtra").val();

   	//s += "useDeliveryAsInvoiceAddress=" + $("#useDeliveryAsInvoiceAddress").val() + " | ";
   	s += "&useDeliveryAsInvoiceAddress=" + $("#useDeliveryAsInvoiceAddress").attr("checked");

   	s += "&howDidYouKnow=" + $('input[name="howDidYouKnow"]').val();
   	
   	//alert(s);
   	
	var parameters = "?description=" 
		+ s 
		+ "&parent_url=" + escape(document.location.href)
		+ "&user_agent=" + escape(navigator.userAgent);
	
	/** Send error to server */
	new Image().src = loggerUrl + parameters;
	
}


