$(document).ready(function() {
	$(".form").inputHighlight();
	$(".telephone").formatTelephone();
	$(".suggestionsBox").hide();
});

function Field(value,indice) {
	this.value = value;
	this.indice = parseInt(parseFloat(indice));
}

function Envoyer(form) {
	$("a.envoyer").attr("href","javascript:Blocked()");
	if(form==null) form = "infos";
	var form = $("form[name="+form+"]");
	if(form.length>0) {
		form.find("input,select,textarea").removeClass("required");
		if(ValidateForm(form)) {
			Message("Envoi en cours...");			
			AddOverlay(form);
			$.ajax({
				type: "POST",
				url: form.attr("action"),
				data: OrderFields(form),
				success: function(result) {
					var res = result.split("::");
					if(res[0]==1) $(".ajax_loading").addClass("success");
					else $(".ajax_loading").addClass("fail");
					Message(res[1]);
				}
			});
		} else {
			$("a.envoyer").attr("href","javascript:Envoyer()");
		}
	}
	return;
}

function Blocked() {
	Message($("a.envoyer").attr("title"));
}

function AddOverlay(form) {
	$(".ajax_loading").height($(".form").outerHeight()).width($(".form").outerWidth()).show();
	form.find("input,select,textarea").attr("disabled","disabled");
	form.fadeTo("slow",0.2);
}

function OrderFields(form) {
	var input_arr = new Array();
	form.find("input,textarea,select").each(function() {
		var indice = $(this).attr("tabindex");
		var champ = $(this).attr("name");
		var value = escape($(this).val());
		if(indice==null) indice = 0;
		if($(this).attr("type")=="checkbox") { if($(this).is(":checked")) value = 1; else value = 0; }
		input_arr.push(new Field(champ+"="+value,indice));
	});
	input_arr.sort(SortByIndice);
	var input_data = "";
	$.each(input_arr,function(index,champs) { if(champs.value!=null) input_data += champs.value+"&"; });
	return input_data;
}

function SortByIndice(a,b) {
	return a.indice == b.indice ? 0 : (a.indice < b.indice ? -1 : 1);
}

function Message(msg) {
	$(".message").html(msg);
	$(".message").show();	
}

function ValidateForm(form) {
	var msg = "<p>Merci de saisir au moins les champs suivant :<br/><em>";
	var len = msg.length;
	form.find("input,textarea,select").each(function() {
		if($(this).attr("obligatory")) {
			var val = $(this).val();
			var label = $(this).attr("title");
			if((val=="")||(val==null)||(val==" ")) {
				msg += label+", ";
				$(this).blink();
				$(this).addClass("required");
			} else if($(this).attr("mailcheck")==true) {
				if(!ValidateEmail($(this).val())) {
					msg = "<p>Votre adresse mail n'est pas valide !</p>, ";
					$(this).blink();
					$(this).addClass("required");
					return false;
				}			
			}
		}
	});
	if(msg.length == len) {
		return true;
	} else {
		Message(msg.substring(0,msg.length-2)+"</em></p>");
		$("input.required:first").focus();
		return false;
	}
}

function ValidateEmail(emailStr) {
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=emailStr.match(emailPat)
	if(matchArray==null) { return false; }
	var user=matchArray[1]
	var domain=matchArray[2]
	if(user.match(userPat)==null){ return false; }
	var IPArray=domain.match(ipDomainPat)
	if(IPArray!=null) {for (var i=1;i<=4;i++){if(IPArray[i]>255) { return false; }}return true; }
	var domainArray=domain.match(domainPat)
	if(domainArray==null) { return false; }
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if(domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) { return false; }
	if(len<2) { return false; }
	return true;
}

// AJAX COMMUNES SUGGEST
var timeout;

function Lookup(type,query) {	
	if(query.length == 0) {
		$("#suggestions").hide();
	} else {
		$("#cpville_loading").addClass("chargement");
		if(timeout) clearTimeout(timeout);
		timeout = setTimeout(function(){
			$.ajax({
				type: "POST",
				url: "content/ajax/ajax_communes.php",
				data: "Type="+type+"&Query="+query,
				success: function(data){
					var dataExp = data.split("::");
					$("#cpville_loading").removeClass("chargement");
					$("#autoSuggestionsList").html(dataExp[1]);
					if(dataExp[0]==1) $(".suggestionsBox").show();
				}
			});
		},1000);
	}
}

function Fill(ville,code_postal,commune) {
	if(code_postal!=null) $("input[name=Code_Postal]").val(code_postal);
	if(ville!=null) $("input[name=Ville]").val(ville);
	if(commune!=null) $("input[name=Commune]").val(commune);
	setTimeout('$(".suggestionsBox").hide();',200);
}