var codesPromo = ['8f1bcf22facef9fa644614fcb20ca0ce', 'f199c8d216d881571a77b56cd041dfb9', '24528bd81b0df6e0381170b44ef810d2', '8102e83eff619fc0a87d2d5fca2a803d', 'c054046e0d19d1c922f520aa737ec8c9', '9ceefef8ec5e9935c5d386e4d68f3be0','e7f7391a747c6bdf634645ee3b7ee86c', '030dd4773d769b306422e578cac177ec', '296d27f5284cf59c6cdfe856c74b939d', 'f5acf96c2817074eab7662c4c3be7182', '89796f6bd586cd5fb4fafc3e4476985c', '84424f7602ea005e2701b02d13b17568', 'be548848f0a972056370e57d1e6ecf0b'];

Event.observe(window, 'load', function()
{
	updatePrix();
	$('3_mois').observe('click', eventChangeRadio);
	$('6_mois').observe('click', eventChangeRadio);
	$('12_mois').observe('click', eventChangeRadio);
	
	$('offre_promo').observe('change', function()
	{
		if ($F('offre_promo') != '')
		{
			$('3_mois').checked = false;
			$('6_mois').checked = false;
			$('12_mois').checked = false;
			
			if (!isCodePromoValide($F('offre_promo')))
			{
				$('erreur_offres').update('<img src="css_img/warning.png" alt=""/>Vous devez sélectionner un forfait ou saisir un code promotionnel valide.');
			}
			else
			{
				$('erreur_offres').update('');
			}
		}
		else
		{
			$('erreur_offres').update('');
		}
		updatePrix();
	});
	
	$('form_inscription').observe('submit', function(event)
	{
		if (!validFormulaire()) 
			Event.stop(event);
	});
	
	$('vlogiciel').observe('change', function(e)
	{
		passerelleOuLogiciel(e.target);
		updatePrix();
	});
	$('vannonces').observe('change', updatePrix);
	$('vsite').observe('change', updatePrix);
	$('vlogo').observe('change', updatePrix);
	$('logiciel').observe('change', function(e)
	{
		passerelleOuLogiciel(e.target);
		updatePrix();
	});
	$('vbanniere').observe('change', updatePrix);
});

function passerelleOuLogiciel(elt)
{
	if (elt == $('vlogiciel'))
	{
		if ($('logiciel').checked == true)
		{
			$('logiciel').style.backgroundPosition = '0 0';
			$('logiciel').checked = false;
		}
	}
	else if (elt == $('logiciel'))
	{
		if ($('vlogiciel').checked == true)
		{
			$('vlogiciel').style.backgroundPosition = '0 0';
			$('vlogiciel').checked = false;
		}
	}
}

function updatePrix()
{
	var nbMois = 0;
	var prix = 0;
	
	if (hex_md5($F('offre_promo')) == codesPromo[0])
		nbMois = 0;
	else if (hex_md5($F('offre_promo')) == codesPromo[1]) 
	{
		nbMois = 3;
		prix = 87;
	}
	else if (hex_md5($F('offre_promo')) == codesPromo[2]) 
		nbMois = 0;
	else if (hex_md5($F('offre_promo')) == codesPromo[3]) 
	{
		nbMois = 3;
		prix = 87;
	}
	else if (hex_md5($F('offre_promo')) == codesPromo[4]) 
		nbMois = 0;
	
	if ($('3_mois').checked)
	{
		prix = 87;
		nbMois = 3;
	}
	else if ($('6_mois').checked) 
	{
		prix = 145;
		nbMois = 6;
	}
	else if ($('12_mois').checked) 
	{
		prix = 261;
		nbMois = 12;	
	}
	if ($('vlogiciel').checked)
		prix += 9 * nbMois;
	if ($('vannonces').checked)
		prix += 9 * nbMois;
	if ($('vsite').checked)
		prix += 5 * nbMois;
	if ($('vlogo').checked)
		prix += 5 * nbMois;
	if ($('logiciel').checked)
		prix += 19 * nbMois;
	if ($('vbanniere').checked)
		prix += 19 * nbMois;
	prix += '&euro; ht';
	$('prix').update(prix);
}
function eventChangeRadio()
{
	$('offre_promo').setValue('');
	$('erreur_offres').update('');
	updatePrix();
}

function isForfaitChoisis()
{
	if ($('3_mois').checked || $('6_mois').checked || $('12_mois').checked)
		return true;
	return false;
}

function isCodePromoValide(code)
{
	var codeUpper = code.toUpperCase();
	if (codesPromo.indexOf(hex_md5(codeUpper)) != -1)
		return true;
	return false;
}

function validFormulaire()
{
	$('erreur_offres').update('');
	$('erreur_coordonnees').update('');
	
	var societeNom = $F('rs').strip();
	var enseigne = $F('enseigne').strip();
	var adresse1 = $F('adresse1').strip();
	var adresse2 = $F('adresse2').strip();
	var codePostal = $F('cp').strip();
	var ville = $F('ville').strip();
	var telephone = $F('tel').strip();
	var fax = $F('fax').strip();
	var email = $F('email2').strip();
	var rcs = $F('rcs').strip();
	var gerant = $F('gerant').strip();
	var responsable = $F('directeur').strip();
	var logicielGestion1 = $F('log_gest_immo1').strip();
	var logicielGestion2 = $F('log_gest_immo2').strip();
	var siteInternet = $F('url').strip();
	var captcha = $F('captcha').strip();
	
	// Forfait et code promos
	if (!isForfaitChoisis() && !isCodePromoValide($F('offre_promo')))
	{
		$('erreur_offres').update('<img src="css_img/warning.png" alt=""/> Vous devez sélectionner un forfait ou saisir un code promotionnel valide.');
		$('3_mois').focus();
		return false;
	}
	// Société/Personne physique
	if (societeNom.empty() || societeNom.length > 100)
	{
		$('erreur_coordonnees').update('<img src="css_img/warning.png" alt=""/> Champs "Société/Personne physique" incorrect.');
		$('rs').focus();
		return false;
	}
	// Enseigne
	if (enseigne.empty() || enseigne.length > 100)
	{
		$('erreur_coordonnees').update('<img src="css_img/warning.png" alt=""/> Champs "Enseigne" incorrect.');
		$('enseigne').focus();
		return false;
	}
	// Adresse 1
	if (adresse1.empty() || adresse1.length > 100)
	{
		$('erreur_coordonnees').update('<img src="css_img/warning.png" alt=""/> Champs "Adresse" incorrect.');
		$('adresse1').focus();
		return false;
	}
	// Adresse 2
	if (adresse2.length > 100)
	{
		$('erreur_coordonnees').update('<img src="css_img/warning.png" alt=""/> Champs "Adresse" incorrect.');
		$('adresse2').focus();
		return false;
	}
	// Code Postal
	var regExp = new RegExp('^[0-9]{5}$', 'g');
	if (!regExp.match(codePostal))
	{
		$('erreur_coordonnees').update('<img src="css_img/warning.png" alt=""/> Champs "Code Postal" incorrect.');
		$('cp').focus();
		return false;
	}
	// Ville
	if (ville.empty() || ville.length > 35)
	{
		$('erreur_coordonnees').update('<img src="css_img/warning.png" alt=""/> Champs "Ville" incorrect.');
		$('ville').focus();
		return false;
	}
	// Téléphone
	if (telephone.length > 20)
	{
		$('erreur_coordonnees').update('<img src="css_img/warning.png" alt=""/> Champs "Téléphone" incorrect.');
		$('tel').focus();
		return false;
	}
	// Fax
	if (fax.length > 20)
	{
		$('erreur_coordonnees').update('<img src="css_img/warning.png" alt=""/> Champs "Fax" incorrect.');
		$('fax').focus();
		return false;
	}
	// Email
	var regExp = new RegExp('^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z0-9]{2,4}$', 'g');
	if (!regExp.match(email))
	{
		$('erreur_coordonnees').update('<img src="css_img/warning.png" alt=""/> Champs "Email" incorrect.');
		$('email2').focus();
		return false;
	}
	// RCS
	if (rcs.empty() || rcs.length > 12)
	{
		$('erreur_coordonnees').update('<img src="css_img/warning.png" alt=""/> Champs "RCS" incorrect.');
		$('rcs').focus();
		return false;
	}
	// Gérant
	if (gerant.empty() || gerant.length > 255)
	{
		$('erreur_coordonnees').update('<img src="css_img/warning.png" alt=""/> Champs "Gérant" incorrect.');
		$('gerant').focus();
		return false;
	}
	// Responsable/directeur
	if (responsable.empty() || responsable.length > 255)
	{
		$('erreur_coordonnees').update('<img src="css_img/warning.png" alt=""/> Champs "Responsable/Directeur" incorrect.');
		$('directeur').focus();
		return false;
	}
	// Logiciel de gestion d'annonces 1
	if (logicielGestion1.length > 75)
	{
		$('erreur_coordonnees').update('<img src="css_img/warning.png" alt=""/> Champs "Logiciel de gestion d\'annonces 1" incorrect.');
		$('log_gest_immo1').focus();
		return false;
	}
	// Logiciel de gestion d'annonces 2
	if (logicielGestion2.length > 75)
	{
		$('erreur_coordonnees').update('<img src="css_img/warning.png" alt=""/> Champs "Logiciel de gestion d\'annonces 2" incorrect.');
		$('log_gest_immo2').focus();
		return false;
	}
	// Site internet
	if (siteInternet.length > 100)
	{
		$('erreur_coordonnees').update('<img src="css_img/warning.png" alt=""/> Champs "Adresse de votre site internet" incorrect.');
		$('url').focus();
		return false;
	}
	// CGV
	if (!$('condition_gene').checked)
	{
		$('erreur_coordonnees').update('<img src="css_img/warning.png" alt=""/> Vous devez avoir lu et accepté les Conditions Générales de Vente.');
		return false;
	}
	// Captcha
	if (captcha.empty())
	{
		$('erreur_coordonnees').update('<img src="css_img/warning.png" alt=""/> Code de sécurité manquant.');
		$('captcha').focus();
		return false;
	}
	return true;
}