/**
 * VALIDATION FUNCTIONS javascript
 *
 * @author 	Peter Funke
 * @since 	October 6, 2009
 */

/* ************************************* */
function validate_form(form_name)
{
	// clear previous errors
	error_text = "";
	for (t = 0; t < validate_fields.length; t++)
	{
		// changed item to val_item because item is a reserved word in IE8!! dec 29, 2009
		val_item = $("#" + validate_fields[t].field_id);
		val_item.css('border', '');

		type = validate_fields[t].val_type;
		if (type == "equal" || type == "or" || type == "and")
		{
			val_item2 = $("#" + validate_fields[t].field_id2);
			val_item2.css('border', '');

			val_item3 = $("#" + validate_fields[t].field_id3);
			val_item3.css('border', '');
		}
	}

	

	// loop trough each field flagged for validation
	for (t = 0; t < validate_fields.length; t++)
	{
		error_found = false;
		val_item = $("#" + validate_fields[t].field_id);
		item_to_check = val_item.val();
		type = validate_fields[t].val_type;
		
		requiered = validate_fields[t].requiered;
		
		if (type == "and") {
			val_item2 = $("#" + validate_fields[t].field_id2);
			item_to_check2 = val_item2.val();

			val_item3 = $("#" + validate_fields[t].field_id3);
			item_to_check3 = val_item3.val();
		}
		if (type == "not_equal_to_last") {
			val_item_last = $("#" + validate_fields[t].field_id4);
			item_to_check_last = val_item_last.val();
		}
			
		// check all error types
		if (requiered && item_to_check == "")
			error_found = true;

		else if (type == "text" && item_to_check == "")
			error_found = true;

		else if (type == "select" && item_to_check == "0")
			error_found = true;

		else if (type == "checkbox" && !val_item.is(':checked'))
			error_found = true;

		else if (type == "number" && !isNumeric(item_to_check) )
			error_found = true;
		
		else if (type == "positive_number" && item_to_check < 0 )
			error_found = true;
			
		else if (type == "email" && item_to_check != "") 
		{
			if (!isEmail(item_to_check)) 
	    		error_found = true;
		}

		else if (type == "and")
		{
			if (item_to_check == "" && item_to_check2 == "" && item_to_check3 == "")
				error_found = false;
			else if (item_to_check != "" && item_to_check2 != "" && item_to_check3 != "")
				error_found = false;
			else
				error_found = true;
		}

		else if (type == "not_equal")
		{
			if ((item_to_check == item_to_check2) && item_to_check != "")
				error_found = true;
			else if ((item_to_check == item_to_check3) && item_to_check != "")
				error_found = true;
			else if ((item_to_check2 == item_to_check3) && item_to_check2 != "")
				error_found = true;
		}

		else if (type == "not_equal_to_last")
		{
			if ((item_to_check_last == item_to_check) && item_to_check != "")
				error_found = true;
			else if ((item_to_check_last == item_to_check2) && item_to_check2 != "")
				error_found = true;
			else if ((item_to_check_last == item_to_check3) && item_to_check3 != "")
				error_found = true;
		}
		if(validate_fields[t].field_id == "code_postal" && item_to_check != "")
		{
			if(!isPostalCode(item_to_check.toUpperCase()))
				error_found=true;
		}
	
		
		// error was found
		if (error_found)
		{
			// add the error message and highlight the field
			error_text = error_text + "- " + validate_fields[t].msg + "<br/>";
			val_item.css('border', '1px solid #FF9FA3');
			if (type == "and" || type == "not_equal") {
				val_item.css('border', '1px solid #FF9FA3');
				val_item2.css('border', '1px solid #FF9FA3');
				val_item3.css('border', '1px solid #FF9FA3');
			}
		}
	}
	
	// if form is valid check if promotional code is valid
	if (error_text == "") 
	{
		$.ajax({
			type: "POST",
			url: "ajax_code.php",
			data: { code_promo: $("#code_promo").val(), lan: $("#lan").val(), courriel: $("#courriel").val() }, 
			dataType: "text",
			success: function(data){ fjs_verify_error(data); }
		});
	}
	else
	{
		$("div.edit_error span").empty();
		$("div.edit_error span").html(error_text);
		$("div.edit_error").fadeIn();
	}
	return false;
}

// verifier le resultat de l'appel ajax
function fjs_verify_error(error_text)
{
	//alert("reply received = " + error_text);
	if (error_text != "")
	{
		$("div.edit_error span").empty();
		$("div.edit_error span").html(error_text);
		$("div.edit_error").fadeIn();
		$("#code_promo").css('border', '1px solid #FF9FA3');
		$("#courriel").css('border', '1px solid #00351a');
		return false;
	}
	else
	{
		$("div.edit_error").hide('fast');
		$("#concours_form").submit();
	}
}

// check if a value is a valid email
function isEmail(value) 
{
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	if(reg.test(item_to_check) == false)
		return false;
	else
		return true;
}

// check if a value is a numeric or decimal
function isNumeric(value) 
{
  	if (!value.toString().match(/^[-]?\d*\.?\d*$/)) 
		return false;
  	else
		return true;
}

function isPostalCode(value)
{
	if(!value.toString().match(/^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}$/))
		return false;
	else
		return true;
}
