/**
 *
 * Page de fonction Java Script commune au site.
 * Nous retrouverons les fonctions de control pour les formulaires de contact et du panier.
 */


/**
 *
 * Fonction de validation de formulaire via son ID.
 */

function valid_form(form_id)
{
	frm = $(form_id);
	frm.submit();
}


/**
 *
 * Fonction de confirmation avec comme paramètre le message de confirmation a afficher, 
 * puis la destination de l'utilisateur après avoir confirmé.
 */

function confirmation(msg, location)
{
	if(confirm(msg))
	{
		window.location = location;
	}
}


/**
 *
 * Fonction d'affichage automatique d'un élément DIV utilisé comme popup à titre informatif.
 * On utilise une fonction de prototype scriptaculous pour un effet d'apparition.
 */

function customInfoAlert(msg)
{
	var error_cont = $('error_cont');
	var error_text = $('error_text');
	
	/*
	error_cont.style.top = getScrollHeight()+"px";
	*/
	
	if(error_text)
	{
		error_text.innerHTML = msg;
		error_cont.style.left = ((getFrameWidth() - 550) / 2) + "px";
		
		new Effect.SlideDown('error_cont');
		
		window.setTimeout('Effect.SlideUp(\'error_cont\');', 10000);
	}
}


/**
 *
 * Fonction d'affichage automatique d'un élément DIV utilisé comme popup à titre informatif.
 * On utilise une fonction de prototype scriptaculous pour un effet d'apparition.
 */

function customErrorAlert(msg)
{
	var error_text = document.getElementById('error_text');
	
	if(error_text)
	{
	   error_text.innerHTML = msg;
	   Effect.Appear('error_cont', {duration: 0.3, queue: 'front' });
	}
}


/**
 *
 * Fonction de limitation d'écriture pour les champs de formulaire.
 * La limitation ne laisse pas l'utilisateur écrire autre chose que des chiffres.
 */

function chiffres(event)
{
	// Compatibilité IE / Firefox
	if(!event&&window.event)
	{
		event=window.event;
	}
	
	
	if(event.keyCode != 8 && event.keyCode != 9 && event.keyCode != 37 && event.keyCode != 39 && event.keyCode != 46)
	{
		// IE
		if(event.keyCode < 48 || event.keyCode > 57)
		{
			event.returnValue = false;
			event.cancelBubble = true;
		}
		
		// DOM
		if(event.which < 48 || event.which > 57)
		{
			event.preventDefault();
			event.stopPropagation();
		}
	}
}


/**
 *
 * Fonction de validation du code postal saisie.
 * Si aucune ville n'est sélectionné, cela signifie que aucune ville n'est disponible, ce qui signifie que le code postal saisie n'est pas correct.
 */

function controlVille(select_id)
{
	var ville = $(select_id);
	
	if(ville.value == '')
	{
		ville.style.border = '1px solid #0096a9';
		
		$('alert_' + select_id).innerHTML = 'Le code postal saisi est invalide.';
		$('alert_' + select_id).style.display = 'block';
	}
	else
	{
		ville.style.border = '1px solid #95c14a';
			
		$('alert_' + select_id).style.display = 'none';
		$('alert_' + select_id).innerHTML = '';
	}
}


/**
 *
 * Fonction de validation du code postal saisie.
 * Nous allons valider le département du code postal saisie. Le département 20 (corse) est interdit.
 */

function controlCp(cp_id)
{
	var cp = $(cp_id).value;
	var departement = cp.substring(0, 2);
			
	if(departement == '20')
	{
		$(cp_id).style.border = '1px solid #0096a9';
		
		$('alert_' + cp_id).innerHTML = 'Oh!..Poivrier ne couvre pas le département saisi.';
		$('alert_' + cp_id).style.display = 'block';
		
		return false;
	}
	else
	{
		$(cp_id).style.border = '1px solid #95c14a';
		
		$('alert_' + cp_id).style.display = 'none';
		$('alert_' + cp_id).innerHTML = '';
		
		return true;
	}
}


/**
 *
 * Fonction de sélection de la ville en fonction du code postal saisie.
 * Par le biais d'une fonctionnalité AJAX (prototype scriptaculous), nous allons faire appel à un fichier PHP qui va rechercher la ou les villes correspondantes au code postal.
 * Puis nous vérifirons que le nombre de ville retourné est supérieur à zéro.
 */

function selectVille(cp_id, ville_id)
{
	var cp = $(cp_id).value;
	var phpFile = site_url+'ajax/form_cp.ajx';
	var params = '?cp='+cp;
	
	if(cp.length >= 1)
	{
		if(cp.length >= 2)
		{
			controlCp(cp_id);
		}
	}
	
	
	if(cp.length == 5)
	{
		var aj = new Ajax.Updater(ville_id, phpFile+'.php'+params, {onComplete: window.setTimeout('controlVille(\'' + ville_id + '\')', 500)});
	}
	else if(cp.length < 5)
	{
		$(ville_id).innerHTML = '';
	}
}


/**
 *
 * Fonction de déplacement de curseur, dédiée aux champs de date d'anniversaire.
 * Nous vérifions tous d'abord que le nombre de caractères (chiffres) demandé est respecté, puis nous switchons vers le champ suivant.
 */

function AppFocus(input_id, maxlength, focus_id)
{
	var input_lenght = $(input_id).value.length;
	
	if(input_lenght == maxlength)
	{
		$(focus_id).focus();
	}
}


/**
 *
 * Fonction de control du jour de naissance saisie.
 * Nous vérifions le chiffres fournie, qui devra être inférieur ou égal à 31.
 * Nous vérifions le nombre de caractères saisie, qui devra être égal à 2.
 */

function controlDay(input_id, maxlength)
{
	var input_lenght = $(input_id).value.length;
	
	var input_value = $(input_id).value;
	var input_value = parseInt(input_value);
	
	var maxDay = 31;
	
	if(input_lenght >= 1)
	{
		if(input_lenght == 1 && input_value > 3)
		{
			$(input_id).style.border = '1px solid #0096a9';
			
			$('alert_'+input_id).innerHTML = 'Le jour ne peut être plus grand que 31.';
			$('alert_'+input_id).style.display = 'block';
			
			return false;
		}
		else if(input_value > maxDay)
		{
			$(input_id).style.border = '1px solid #0096a9';
			
			$('alert_'+input_id).innerHTML = 'Le jour ne peut être plus grand que 31.';
			$('alert_'+input_id).style.display = 'block';
			
			return false;
		}
		else if(input_lenght < maxlength)
		{
			$(input_id).style.border = '1px solid #0096a9';
			
			$('alert_'+input_id).innerHTML = 'Le jour doit se composer de ' + maxlength + ' chiffres.';
			$('alert_'+input_id).style.display = 'block';
			
			return false;
		}
		else
		{
			$(input_id).style.border = '1px solid #95c14a';
			
			$('alert_'+input_id).style.display = 'none';
			$('alert_'+input_id).innerHTML = '';
			
			return true;
		}
	}
}


/**
 *
 * Fonction de control du mois de naissance saisie.
 * Nous allons controler que le chiffre saisie est inférieur ou égal à 12.
 * Nous vérifions le nombre de caractères saisie, qui devra être égal à 2.
 */

function controlMounth(input_id, maxlength)
{
	var input_lenght = $(input_id).value.length;
	
	var input_value = $(input_id).value;
	var input_value = parseInt(input_value);
	
	var maxMounth = 12;
	
	
	if(input_lenght >= 1)
	{
		if(input_lenght == 1 && input_value > 1)
		{
			$(input_id).style.border = '1px solid #0096a9';
			
			$('alert_'+input_id).innerHTML = 'Le mois ne peut être plus grand que 12.';
			$('alert_'+input_id).style.display = 'block';
			
			return false;
		}
		else if(input_value > maxMounth)
		{
			$(input_id).style.border = '1px solid #0096a9';
			
			$('alert_'+input_id).innerHTML = 'Le mois ne peut être plus grand que 12.';
			$('alert_'+input_id).style.display = 'block';
			
			return false;
		}
		else if(input_lenght < maxlength)
		{
			$(input_id).style.border = '1px solid #0096a9';
			
			$('alert_'+input_id).innerHTML = 'Le mois doit se composer de ' + maxlength + ' chiffres.';
			$('alert_'+input_id).style.display = 'block';
			
			return false;
		}
		else
		{
			$(input_id).style.border = '1px solid #95c14a';
			
			$('alert_'+input_id).style.display = 'none';
			$('alert_'+input_id).innerHTML = '';
			
			return true;
		}
	}
}


/**
 *
 * Fonction de control de l'année de naissance saisie.
 * Nous vérifions le chiffres fournie, qui devra être inférieur à la date limite pour que l'utilisateur est 18 ans.
 * Nous vérifions le nombre de caractères saisie, qui devra être égal à 4.
 * Nous vérifions la totalité de la date saisie depuis le début et vérifions l'âge que cela indique.
 */

function controlYear(input_id, maxlength, date_min, date_id)
{
	var input_lenght = $(input_id).value.length;
	
	var input_day = $('day_' + date_id).value;
	var input_mounth = $('mounth_' + date_id).value;
	var input_year = $('year_' + date_id).value;
	
	var date_selected = input_year + input_mounth + input_day;
	var date_selected = parseInt(date_selected);
	
	var date_min = parseInt(date_min);
	
	
	if(input_lenght >= 1)
	{
		if(date_selected > date_min)
		{
			$(input_id).style.border = '1px solid #0096a9';
			
			$('alert_'+input_id).innerHTML = 'Vous devez saisir une année valide.';
			$('alert_'+input_id).style.display = 'block';
			
			return false;
		}
		else if(input_lenght < maxlength)
		{
			$(input_id).style.border = '1px solid #0096a9';
			
			$('alert_'+input_id).innerHTML = 'L\'année doit se composer de ' + maxlength + ' chiffres.';
			$('alert_'+input_id).style.display = 'block';
			
			return false;
		}
		else
		{
			$(input_id).style.border = '1px solid #95c14a';
			
			$('alert_'+input_id).style.display = 'none';
			$('alert_'+input_id).innerHTML = '';
			
			//AppFocus(input_id, maxlength, focus_id);
			return true;
		}
	}
}


/**
 *
 * Fonction de déplacement de curseur, dédiée au calendrier lors de la sélection de la date.
 */

function AppCalendar(cheat_id)
{
	$(cheat_id).focus();
}


/**
 *
 * Fonction de control du numéro de téléphone.
 * Nous vérifions que le nombre de chiffres saisie est égal à 10.
 * Nous vérifions également l'indicateur du numéro de téléphone pour une conformité minimum.
 */

function controlTel(tel_id)
{
	var tel_length = $(tel_id).value.length;
	var tel_deb = $(tel_id).value.substring(0, 2);
	
	
	if(tel_length >= 1)
	{
		if(tel_length < 10)
		{
			$(tel_id).style.border = '1px solid #0096a9';
			
			$('alert_'+tel_id).innerHTML = 'Le téléphone doit comporter 10 chiffres.';
			$('alert_'+tel_id).style.display = 'block';
			
			return false;
		}
		else if(tel_deb != '01' && tel_deb != '02' && tel_deb != '03' && tel_deb != '04' && tel_deb != '05' && tel_deb != '06' && tel_deb != '08' && tel_deb != '09')
		{
			$(tel_id).style.border = '1px solid #0096a9';
			
			$('alert_'+tel_id).innerHTML = tel_deb + ' n\'est pas un indicatif valide.';
			$('alert_'+tel_id).style.display = 'block';
			
			return false;
		}
		else
		{
			$(tel_id).style.border = '1px solid #95c14a';
			
			$('alert_'+tel_id).style.display = 'none';
			$('alert_'+tel_id).innerHTML = '';
			
			return true;
		}
	}
}


/**
 *
 * Fonction de control de l'adresse email saisie.
 * Nous vérifions la nomenclature de l'email, via une expression régulière.
 */

function controlMail(email_id)
{
	var email_length = $(email_id).value.length;
	
	var email = $(email_id).value;
	var verif = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]{2,}[.][a-zA-Z]{2,3}$/
	
	if(email_length >= 1)
	{
		if (verif.exec(email) == null)
		{
			$(email_id).style.border = '1px solid #0096a9';
			
			$('alert_'+email_id).innerHTML = 'Votre email est incomplet ou incorrect.';
			$('alert_'+email_id).style.display = 'block';
			
			return false;
		}
		else
		{
			$(email_id).style.border = '1px solid #95c14a';
			
			$('alert_'+email_id).style.display = 'none';
			$('alert_'+email_id).innerHTML = '';
			
			return true;
		}
	}
	else
	{
		$(email_id).style.border = '1px solid #95c14a';
		
		$('alert_'+email_id).style.display = 'none';
		$('alert_'+email_id).innerHTML = '';
		
		return false;
	}
}


/**
 *
 * Fonction de control de l'adresse email de confirmation.
 * Nous vérifions tout simplement qu'elle est égal à l'email précédement saisie.
 */

function controlConfMail(conf_id, reel_id)
{
	var email_length = $(conf_id).value.length;
	
	var email = $(reel_id).value;
	var conf_e = $(conf_id).value;
	
	
	if(email_length >= 1)
	{
		if(email != conf_e)
		{
			$(conf_id).style.border = '1px solid #0096a9';
			
			$('alert_'+conf_id).innerHTML = 'La confirmation est incomplète ou incorrecte.';
			$('alert_'+conf_id).style.display = 'block';
			
			return false;
		}
		else
		{
			$(conf_id).style.border = '1px solid #95c14a';
			
			$('alert_'+conf_id).style.display = 'none';
			$('alert_'+conf_id).innerHTML = '';
			
			return true;
		}
	}
	else
	{
		$(conf_id).style.border = '1px solid #95c14a';
		
		$('alert_'+conf_id).style.display = 'none';
		$('alert_'+conf_id).innerHTML = '';
		
		return false;
	}
}


/**
 *
 * Fonction de control de l'adresse email de confirmation.
 * Nous vérifions tout simplement qu'elle est égal à l'email précédement saisie.
 */

function controlConfMDP(conf_id, reel_id)
{
	var mdp_length = $(conf_id).value.length;
	
	var mdp = $(reel_id).value;
	var conf_m = $(conf_id).value;
	
	
	if(mdp_length >= 1)
	{
		if(mdp != conf_m)
		{
			$(conf_id).style.border = '1px solid #0096a9';
			
			$('alert_'+conf_id).innerHTML = 'La confirmation est incomplète ou incorrecte.';
			$('alert_'+conf_id).style.display = 'block';
			
			return false;
		}
		else
		{
			$(conf_id).style.border = '1px solid #95c14a';
			
			$('alert_'+conf_id).style.display = 'none';
			$('alert_'+conf_id).innerHTML = '';
			
			return true;
		}
	}
	else
	{
		$(conf_id).style.border = '1px solid #95c14a';
		
		$('alert_'+conf_id).style.display = 'none';
		$('alert_'+conf_id).innerHTML = '';
		
		return false;
	}
}


/**
 *
 * Fonction de control du type de permis saisie.
 * Nous vérifions que le type de permis saisie n'est pas égal à un permis probatoire.
 */

function controlPermisType(select_id)
{
	var select_v = $(select_id).value;
	
	if(select_v == 'probatoire')
	{
		$(select_id).style.border = '1px solid #0096a9';
		
		$('alert_'+select_id).innerHTML = 'Le permis probatoire n\'est pas pris en charge par Keep-cool.';
		$('alert_'+select_id).style.display = 'block';
		
		return false;
	}
	else
	{
		$(select_id).style.border = '1px solid #95c14a';
		
		$('alert_'+select_id).style.display = 'none';
		$('alert_'+select_id).innerHTML = '';
		
		return true;
	}
}


function controlCaptcha(input_obj)
{
	var input_id = input_obj.id;
	var value = $(input_id).value;
	var captcha = input_obj.getAttribute('secure');
	
	
	if(value == captcha)
	{
		$(input_id).style.background = 'white';
		$(input_id).style.color = '#C34851';
		
		return true;
	}
	else
	{
		$(input_id).style.background = '#ED8894';
		$(input_id).style.color = 'white';
		
		return false;
	}
}


/**
 *
 * Fonction pour copier les valeurs d'un champ texte à un autre.
 */

function valueAs(copie_id, copieur_id)
{
	var valeur = $(copie_id).value;
	var as = $(copieur_id);
	
	as.value = valeur;
}


/**
 *
 * Fonction de chargement destiné au calendrier à son chargement.
 * Nous chargeons via une fonction AJAX prototype scriptaculous les éléments <select> du calendrier.
 * Ces éléments <select> sont utilisés pour la sélection du mois ou de l'année désirée.
 */

function chargeSelectCalendar(calendar_id, className, type, value)
{
	var pp = $(calendar_id);
	
	var phpFile = site_url + 'ajax/slc_year.ajx.php?' + type + '=' + value;
	if(type == 'm')
	{
		var value = parseInt(value) + 1;
		var phpFile = site_url + 'ajax/slc_mounth.ajx.php?' + type + '=' + value;
	}
	
	if(pp.getElementsByClassName(className)) 
	{
		input_dir = pp.getElementsByClassName(className);
		for(i=0; i < input_dir.length; i++)
		{
			var aj = new Ajax.Updater(input_dir[i].id, phpFile);
		}
	}
}


/**
 *
 * Fonction de control total à la validation d'un formulaire.
 * Nous reprenons la totalité des fonctions citées plus haut et exécutons un control sur chaque élément voulu.
 */

function FormRequired(form_id, date_min)
{
	var reel_id = '';
	var submit = true;
	var ss = $(form_id);
	
	
	var inputs = ss.getElementsByTagName('textarea');
	//var msg = 'Tous les champs colorés doivent être mentionné.';
	
	var i = 0;
	if(inputs)
	{
		while (i < inputs.length)
		{
			if(inputs[i].getAttribute('required'))
			{
				if($(inputs[i].id).value == '')
				{
					var submit = false;
					$(inputs[i].id).style.border = '1px solid #0096a9';
				}
				else
				{
					$(inputs[i].id).style.border = '1px solid #95c14a';
				}
			}

		   i++;
		}
	}
	
	
	var inputs = ss.getElementsByTagName('select');
	//var msg = 'Tous les champs colorés doivent être mentionné.';
	
	var i = 0;
	if(inputs)
	{
		while (i < inputs.length)
		{
			if(inputs[i].getAttribute('required'))
			{				
				if($(inputs[i].id).value == '')
				{
					var submit = false;
					$(inputs[i].id).style.border = '1px solid #0096a9';
					
					
					if(inputs[i].getAttribute('selected_city'))
					{
						controlVille(inputs[i].id);
					}
				}
				else
				{
					$(inputs[i].id).style.border = '1px solid #95c14a';
					
					
					if(inputs[i].getAttribute('changed'))
					{
						if(controlPermisType(inputs[i].id) == false)
						{
							var submit = false;
						}
					}
					else if(inputs[i].getAttribute('selected_city'))
					{
						controlVille(inputs[i].id);
					}
				}
			}

		   i++;
		}
	}
	
	var inputs = ss.getElementsByTagName('input');
	//var msg = 'Tous les champs colorés doivent être mentionné.';
	
	var i = 0;
	if(inputs)
	{
		var radio_name = '';
		var radio_submit = false;
		
		while (i < inputs.length)
		{
			input_type = inputs[i].getAttribute('type');
			
			if(input_type == 'radio' && radio_name != '' && radio_name != inputs[i].getAttribute('name'))
			{
				if(radio_submit == false)
				{
					var submit = false;
				}
				
				var radio_submit = false;
			}
			
			if(input_type == 'radio' && radio_name == inputs[i].getAttribute('name'))
			{
				if(inputs[i].checked == true)
				{
					var radio_submit = true;
				}
			}
			
			if(input_type == 'radio')
			{
				var radio_name = inputs[i].getAttribute('name');
				
				if(inputs[i].checked == true)
				{
					var radio_submit = true;
				}
			}
			
			/*****/
			
			if(inputs[i].getAttribute('required') && $(inputs[i].id).disabled == false)
			{
				if($(inputs[i].id).value == '')
				{
					var submit = false;
					
					if(inputs[i].getAttribute('secure'))
					{
						$(inputs[i].id).style.background = '#ED8894';
						$(inputs[i].id).style.color = 'white';
					}
					else
					{
						$(inputs[i].id).style.border = '1px solid #0096a9';
					}
				}
				else
				{
					$(inputs[i].id).style.border = '1px solid #95c14a';
					
					
					if(inputs[i].getAttribute('formatday'))
					{
						var mounth_id = String($(inputs[i].id).readAttribute('id')).replace('day', 'mounth');
						
						if(controlDay(inputs[i].id, 2, inputs[i].id) == false)
						{
							var submit = false;
						}
					}
					
					if(inputs[i].getAttribute('formatmounth'))
					{				
						if(controlMounth(inputs[i].id, 2, inputs[i].id) == false)
						{
							var submit = false;
						}
					}
					
					if(inputs[i].getAttribute('formatyear'))
					{
						var date_id = String($(inputs[i].id).readAttribute('id')).replace('year_', '');
						
						if(controlYear(inputs[i].id, 4, date_min, date_id, inputs[i].id) == false)
						{
							var submit = false;
						}
					}
					
					if(inputs[i].getAttribute('formatyear'))
					{
						var date_id = String($(inputs[i].id).readAttribute('id')).replace('year_', '');
						
						if(controlYear(inputs[i].id, 4, date_min, date_id, inputs[i].id) == false)
						{
							var submit = false;
						}
					}
					
					if(inputs[i].getAttribute('code_postal'))
					{
						var cp_id = inputs[i].id;
						
						if(controlCp(cp_id) == false)
						{
							var submit = false;
						}
					}
					
					if(inputs[i].getAttribute('telephone'))
					{
						var tel_id = inputs[i].id;
						
						if(controlTel(tel_id) == false)
						{
							var submit = false;
						}
					}
					
					if(inputs[i].getAttribute('email'))
					{
						var reel_id = inputs[i].id;
						
						if(controlMail(reel_id) == false)
						{
							var submit = false;
						}
					}
					
					if(inputs[i].getAttribute('conf_email'))
					{
						if(controlConfMail(inputs[i].id, reel_id) == false)
						{
							var submit = false;
						}
					}
					
					if(inputs[i].getAttribute('mdp'))
					{
						var mdp_id = inputs[i].id;
					}
					
					if(inputs[i].getAttribute('conf_mdp'))
					{
						if(controlConfMDP(inputs[i].id, mdp_id) == false)
						{
							var submit = false;
						}
					}
					
					if(inputs[i].getAttribute('secure'))
					{
						$(inputs[i].id).style.border = '1px solid #C34851';
						
						if(controlCaptcha(inputs[i]) == false)
						{
							var submit = false;
						}
					}
				}
			}

		   i++;
		}
	}
	
	
	if(!submit)
	{
		//customAlert(msg);
	}
	else
	{
		ss.submit();
	}
}

/*******/

var init_deroul = 300;

function AddTimeDeroul()
{
	if(init_deroul < 300)
	{
		init_diff = 300 - init_deroul;
		init_deroul += init_diff;
	}
}

function DelTimeDeroul(elmts_id)
{
	if(init_deroul > 0)
	{
		init_deroul--;
		window.setTimeout('DelTimeDeroul(\''+elmts_id+'\');', init_deroul);
	}
	else
	{
		if($(elmts_id).style.display != 'none')
		{
			Effect.SlideUp(elmts_id);
		}
	}
}

function Deroul(parent_id, elmts_id, className)
{
	//boucle des jumo pour effacer
	var ss = $(parent_id);
	var divs = ss.getElementsByTagName('div');
	
	var i = 0;
	if(divs)
	{
		while (i <divs.length)
		{
			if(divs[i].id)
			{
				if($(divs[i].id).hasClassName(className))
				{
					if($(divs[i].id).style.display != 'none' && divs[i].id != elmts_id)
					{
						Effect.SlideUp(divs[i].id);
					}
					else if(divs[i].id == elmts_id)
					{
						Effect.SlideDown(divs[i].id);
						
						init_diff = 300 - init_deroul;
						init_deroul += init_diff;
					}
				}
			}

		    i++;
		}
	}
	
	//initialisation du compte à rebour pour effacer
	DelTimeDeroul(elmts_id);
}
