/**
 * @author Jon Ege Ronnenberg
 */

// general javascript functions:

// validate function (depend on jQuery)
function validate(formData, jqForm){
	// prepare the response div to show errors	
	$("#response").removeClass();
	$("#response").addClass("error");
	// the submitted form
	var form = jqForm[0];
	// an instance Validator
	var objValidator = new Validator();
	// placeholder for an error message
	var error = "";
	// private method for firsname and lastname validation
	this.NameValidation = function(data){
		var firstName = form.FirstName.value;
		var lastName = form.LastName.value;
		if(!objValidator.OnlyChars(firstName))
		{
			error = "Fornavn skal bestå af bogstaver.";
			$("#txtFirstName").focus();
			return false;
		} else if(objValidator.Trim(firstName)=='' || form.FirstName.defaultValue == firstName){
			error = "Fornavn skal udfyldes.";
			$("#txtFirstName").focus();
			return false;
		}
		if(!objValidator.OnlyChars(lastName))
		{
			error = "Efternavn skal bestå af bogstaver.";
			$("#txtLastName").focus();
			return false;
		} else if(lastName=='' || form.LastName.defaultValue == lastName){
			error = "Efternavn skal udfyldes.";
			$("#txtLastName").focus();
			return false;
		}
		return true;
	};
	// validation logic
	var email = form.Email.value;
	if(email == "" || form.Email.defaultValue == email){
		error = "E-Mail'en skal udfyldes.";
		$('#txtEmail').focus();
	}
	if(!objValidator.EmailAddress(email)){
		error = "E-Mail'en ser ikke ægte ud. Tjek venligst igen.";
		$('#txtEmail').focus();
	}
	if(!this.NameValidation()) {
	}

	if(error.length > 0)
	{
		$("#response", jqForm).html(error);
		return false;
	} else {
	//	$("#response", jqForm).html($("#txtFirstName").fieldValue());
	//	return false;
		// put the load animation on top
		$("body").prepend("<div id='NewsLetter_load'><img src='images/loadingAnimation.gif' /></div>").fadeIn("fast");
	
		// hide all input boxes
		$("#divRealMail div,#personal_info, #divCityGroup, #txtCellPhone, #txtEmail, #txtMobile, #description_top, #description_end, #divfields, #interests").hide();
	}	
}

/*
 * jQuery functions
 */
// wait for the DOM to be loaded 
$(document).ready(function() { 
	//#region Form submitting
	var options = {
		target: '#response',
		beforeSubmit: validate,
		success: showResponse,
		resetForm: true,
		timeout: 3000
	};
	
	// bind 'frmNewsLetter' and provide an option object with callback function 
    $('#frmNewsLetter').ajaxForm(options);
	
	// post-submit callback 
	function showResponse(responseText, statusText){
		if(responseText.indexOf('EJL:')>0){
			$("#response").removeClass();
			$("#response").addClass("error");
		} else {
			$("#response").removeClass();
			$("#response").addClass("congratz");
		}
		// remove the loader image
		$("#NewsLetter_load").remove();
	}
	//#end region
	
	// #region Text fields
		var fields = '#txtFirstName,#txtLastName,#txtEmail';
		$(fields).bind('blur', function() {
		   toogleDefaultValue(this);
		}).bind('focus', function() {
		   toogleDefaultValue(this);
		});
	// #end region
});
function toogleDefaultValue(elem)
{
	//alert(elem.value +"\n"+elem.defaultValue);
	// write text again if no value is typed 
	if(elem.value == '' && elem.value != elem.defaultValue)
	{
		elem.value = elem.defaultValue;	
	}
	// empty the input box
	else if(elem.value == elem.defaultValue)
	{
		elem.value = '';
	}
}