/*
 * canalvie.js
 * © 2007 canalvie.com
 */

// Form validation
var imgExts = new Array();
imgExts[0] = '.jpg';
imgExts[1] = '.jpeg';
imgExts[2] = '.gif';

var vidExts = new Array();
vidExts[0] = '.3g2';
vidExts[1] = '.avi';
vidExts[2] = '.mov';
vidExts[3] = '.mp4';
vidExts[4] = '.mpg';
vidExts[5] = '.mpeg';
vidExts[6] = '.wmv';

var txtExts = new Array();
txtExts[0] = '.txt';
txtExts[1] = '.doc';
txtExts[2] = '.rtf';

function hasValidExt(file, exts) {
	var validExt = false;
	for (i=0; i<exts.length; i++) {
		if ((file.toLowerCase().lastIndexOf(exts[i]) + exts[i].length) == file.length) {
			validExt = true;
			break;
		}
	}
	return validExt;
}

function isDrawMail(address) {
	var filterRegExp =/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/;
	return filterRegExp.test(address)
}

function checkDrawCoordinates() {
	var errorMsg = "Erreur :<br>\n";
	if ($("input[@name='genderId']:checked").val() == undefined) errorMsg += "Vous devez choisir votre genre.<br>\n";
	if (jQuery.trim($("#firstName").val()) == '') errorMsg += "Vous devez entrer votre prénom.<br>\n";
	if (jQuery.trim($("#lastName").val()) == '') errorMsg += "Vous devez entrer votre nom.<br>\n";
	if (jQuery.trim($("#address").val()) == '') errorMsg += "Vous devez entrer votre adresse.<br>\n";
	if ($("#town").length == 0) {
		// Quebec : we use an ajax drop down so there is no "town" element in form
		if ($("#regionId").val() == 0) errorMsg += "Vous devez choisir votre région.<br>\n";
		if ($("#municipalityId").val() == 0) errorMsg += "Vous devez choisir votre ville.<br>\n";
	} else {
		// Canada : we use a plain vanilla text input
		if (jQuery.trim($("#town").val()) == '') errorMsg += "Vous devez entrer votre ville.<br>\n";
	}
	if (jQuery.trim($("#postalCode").val()) == '') errorMsg += "Vous devez entrer votre code postal.<br>\n";
	if (jQuery.trim($("#telephone_1").val()) == '' || jQuery.trim($("#telephone_2").val()) == '' || jQuery.trim($("#telephone_3").val()) == '') errorMsg += "Vous devez entrer votre numéro de téléphone au complet.<br>\n";
	if (jQuery.trim($("#email").val()) == '') {
		errorMsg += "Vous devez entrer votre adresse de courriel.<br>\n";
	} else if (!isDrawMail(jQuery.trim($("#email").val()))) {
		errorMsg += "Votre adresse de courriel n'est pas valide.<br>\n";
	}
	if (errorMsg != "Erreur :<br>\n") {
		$("#errorContainer").html("<font color=\"red\">" + errorMsg + "</font>");
		$("#errorContainer").show();
		return false;
	} else {
		$("#errorContainer").hide();
		$("#go").attr("disabled", "true"); 
		return true;
	}
}

function checkSendToFriend() {
	var errorMsg = "Erreur :<br>\n";
	var friendEmails = $(".sendToFriend");
	// Check for empty fields
	var emptyFields = true;
	for (var i=0; i<friendEmails.length; i++) {
		if (jQuery.trim(friendEmails[i].value) != '') {
			emptyFields = false;
			break;
		}
	}
	if (emptyFields) {
		errorMsg += "Vous devez entrer au moins une adresse de courriel.<br>\n";
	} else {
		// Check for valid addresses
		var validAddresses = true;
		for (var i=0; i<friendEmails.length; i++) {
			if ((jQuery.trim(friendEmails[i].value) != '') && !isDrawMail(jQuery.trim(friendEmails[i].value))) {
				validAddresses = false;
				break;
			}
		}
		if (!validAddresses) {
			errorMsg += "Au moins une adresse de courriel n'est pas valide.<br>\n";
		}
	}
	if (errorMsg != "Erreur :<br>\n") {
		$("#errorContainer").html("<font color=\"red\">" + errorMsg + "</font>");
		$("#errorContainer").show();
		return false;
	} else {
		$("#errorContainer").hide();
		$("#go").attr("disabled", "true"); 
		return true;
	}
}


function clearMunicipality() {
	$("#municipalityId").removeOption(/./);
	$("#municipalityId").addOption("0", "---");
}


function loadMunicipality(regionId, selectedMunicipalityId) {

	// Max characters for option
	var maxChar = 25;

	if (regionId == 0) {
		clearMunicipality();
	} else {

		var ieRant = Math.floor(Math.random()*1000001); // Generate random so that this f***ing IE browser does not cache xml response
		$.ajax({
			type: "GET",
			url:"/_dyn/getMunicipalities.jsp",
			data: "regionId=" + regionId + "&ieRant=" + ieRant,
			dataType: "xml",
			success: function(xml){
				// Clear the list
				$("#municipalityId").removeOption(/./);

				$(xml).find("municipality").each(function(){

					// Get values from XML
					var municipalityId = $(this).attr("id");
					var municipalityName = $(this).text();
					var municipalitySelected = false;
					if (municipalityId == selectedMunicipalityId) {
						municipalitySelected = true;
					}

					// Truncate name
					if (municipalityName.length > maxChar) {
						municipalityName = municipalityName.substring(0, maxChar) + "...";
					}

					// Add option to select
					$("#municipalityId").addOption(municipalityId, municipalityName, municipalitySelected);

				});
			}
		});

	}

}

function submitConcours() {

	$("#formLoader").hide();
	$("#errorContainer").hide();

	// validate fields
	if ( !checkDrawCoordinates() ) {

		return false;

	// validate captcha
	} else {
		
		
		$("#formLoader").show();

		// Get form data
		var captchaText = $("#captchaAnswer").val();

		var ieRant = Math.floor(Math.random()*1000001); // Generate random so that this f***ing IE browser does not cache xml response
		$.ajax({
			type: "POST",
			url: "/_dyn/validateCaptchaXml.jsp",
			data: {
				ieRant: ieRant,
				captchaAnswer: captchaText
			},
			success: function(xml) {

				if ($(xml).find("processed").text() == "true") {

					$("#formLoader").hide(2000);

					$("#errorContainer").hide();
					$("#go").attr("disabled", "true"); 
					
					// trigger the form submit
					$("form#contestForm").submit();

				} else {

					$("#formLoader").hide(500);

					$("#errorContainer").html("<font color=\"red\">" + $(xml).find("error").text() + "</font>");
					$("#errorContainer").show();

					return false;
				}
			}
		});
	}
}
