function nombreFormate (nombre) {
	var sNombre  = String(nombre);
	var signeIN  = ".";
	var signeOUT = ",";

	var reg=new RegExp("\\"+signeOUT, "g");
	sNombre = sNombre.replace(reg, signeIN);

	reg=new RegExp("\\"+signeIN, "g");
	var retour = sNombre.replace(reg, signeOUT);

	var offdec = retour.indexOf(signeOUT);
	if (offdec == -1)
		retour = retour + signeOUT+"00";
	else if ((retour.length-offdec) != 3)
		retour = retour + "0";

	return retour;
}	

var field, fieldresult, searchTO, hiderTO;
var searching = false;

function refreshAccessoires() {
	var nombre_colis = document.form1.nombre_colis;

	var elts = document.form1.elements;
	var one = false;
	for(var i=0; i<elts.length; i++) {
		if(elts[i].name.substr(0, 11) != 'accessoire_') continue;
		if(elts[i].checked) {
			one = true;
			break;
		}
	}

	if (one) {
		nombre_colis[0].disabled = true;
		nombre_colis[1].disabled = false;
		nombre_colis[2].disabled = false;
		if (nombre_colis[0].checked) nombre_colis[1].checked = true;
	} else {
		nombre_colis[0].disabled = false;
		nombre_colis[1].disabled = true;
		nombre_colis[2].disabled = true;
		nombre_colis[0].checked = true;
	}
}

function refreshFlagsD_A() {
	var fd = document.forms.form1.flag_depart;
	var fa = document.forms.form1.flag_arrivee;

	var refresh = false;
	fd[1].disabled = false;
	fa[1].disabled = false;
	if (samepf) {
		if (fd[1].checked && fa[1].checked) {
			fa[1].checked = false;
			refresh = true;
		}
		if (fd[1].checked) {
			fa[1].disabled = true;
			fa[0].checked = true;
		} else {
			if (fa[1].checked) {
				fd[1].disabled = true;
				fd[0].checked = true;
			}
		}
	}

	return refresh;
}

function getFields () {
	var arrfields = new Array();
	// les champs obligatoires
	arrfields["cp_depart"]     = "";
	arrfields["ville_depart"]  = "";
	arrfields["cp_arrivee"]    = "";
	arrfields["ville_arrivee"] = "";
	arrfields["marque_1"]      = "";
	arrfields["modele_1"]      = "";
	
	retour = ""
	for (fldstr in arrfields) {
		var fld = document.getElementById(fldstr);
		if (fld.value == "" || fld.value == "0") {
			return false;
		} else {
			retour += "&"+fldstr+"="+fld.value;
		}
	}
	// enlevement / livraison
	var fld = document.forms.form1.flag_depart;
	retour += "&flag_depart="+((fld[0].checked) ? "domicile" : "plateforme");
	var fld = document.forms.form1.flag_arrivee;
	retour += "&flag_arrivee="+((fld[0].checked) ? "domicile" : "plateforme");
	
	// véhicules
	for (i=2;i<=4;i++) {
		fldstr = "modele_"+i;
		var fld = document.getElementById(fldstr);
		retour += "&"+fldstr+"="+fld.value;
	}

	// assurance
	var fld = document.forms.form1.assurance;
	if (fld[0].checked) {
		var fld = document.getElementById("valeur_vehicule");
		assu = parseInt(fld.value);
		var fld = document.getElementById("valeur_accessoires");
		assu += parseInt(fld.value);
		retour += "&assurance="+assu;
	}

	return retour;
}

function estimateResults () {
//	hiderTO = setTimeout("hideHelpers()", 3000);
	var btvalid = document.getElementById("btvalider");
	btvalid.style.visibility = "hidden";

	var prix = document.getElementById("ajax_tarif");
	var post = getFields();
	// si pas assez de champs remplis
	if ( post === false ) {
		prix.innerHTML = "";
		return;
	}

	calculTarif( post );
	//btvalid.style.visibility = "visible";
}

function hideHelpers () {
	clearTimeout (hiderTO);
	delete hiderTO;
	if(!document.getElementById) return;
	var hlps = document.getElementsByTagName('ul');
	for(var i=0; i<hlps.length; i++) {
		if(hlps[i].id.substr(0, 7) != "helper_") continue;
		hlps[i].setAttribute('class', '');
		hlps[i].style.display = "none";
	}
	var div_modeles = document.getElementById("div_modeles");
	div_modeles.style.visibility = "visible";
}
/*
		OBJETS AJAX
*/
// calcul du tarif
var tarifconnection = new AjaxConnection("/common/ajax.cotation.tarif.php", "tarifcallBack");
function calculTarif ( post ) {
	if (!document.getElementById) return;

	clearTimeout (searchTO);
	delete searchTO;
	if (searching) {
		searchTO = setTimeout("calculTarif('"+post+"')", 200);
		return;
	}
	searching = true;
	tarifconnection.connect("&lang=<?php echo $lang; ?>"+post);
	var btvalid = document.getElementById("btvalider");
	btvalid.style.visibility = "hidden";
}
samepf = false;
function tarifcallBack(returnCode, content) {
	searching = false;
	if (!document.getElementById) return;
	var prix = document.getElementById("ajax_tarif");
	var btvalid = document.getElementById("btvalider");
	if (returnCode==200) {
		var reg = new RegExp(" ", "g");
		var prix_retour = parseFloat(content.replace(reg, ""));
		samepf = false;
		if (prix_retour < 0) samepf = true;
		if (refreshFlagsD_A()) {
			estimateResults();
			return;
		}
		if (prix_retour == -1) {
			prix.innerHTML  = "";
			btvalid.style.visibility = "hidden";
		} else {
			prix_retour = Math.abs(prix_retour);
			prix.innerHTML = nombreFormate(prix_retour)+" &euro; TTC";
			btvalid.style.visibility = "visible";
		}
	} else {
		prix.value = "Erreur de connection ...";
		btvalid.style.visibility = "hidden";
	}
}

// recherche de villes à partir des codes postaux
// ou en complétant
var villeconnection = new AjaxConnection("/common/ajax.cotation.ville.php", "villecallBack");
function setVille( dest, valueVille, valueCP ) {
	inputfld = document.getElementById('ville_'+dest);
	inputfld.value = valueVille;
	inputfld = document.getElementById('cp_'+dest);
	inputfld.value = valueCP;
	estimateResults();
	hideHelpers();
}
function getVille( dest, from ) {
	//hideHelpers();
	if (!document.getElementById) return;
	field = document.getElementById(from+"_"+dest);

	if ( from == "cp" && isNaN(field.value) ) {
		setVille(dest, '', '');
		return;
	}
	if ((field.value).length <2) {
		if ( from == "cp" )
			setVille(dest, '', field.value);
		else
			setVille(dest, field.value, '');
		return;
	}

	clearTimeout (searchTO);
	delete searchTO;
	if (searching) {
		searchTO = setTimeout("getVille('"+dest+"','"+from+"')", 200);
		return;
	}
	searching = true;
	fieldresult = document.getElementById('helper_'+dest);
	villeconnection.connect("&lang=<?php echo $lang; ?>&"+from+"="+field.value+'&type='+dest);
}
function villecallBack(returnCode, content) {
	searching = false;
	if (!document.getElementById) return;
	if (returnCode==200) {
		fieldresult.innerHTML = content;
		var div_modeles = document.getElementById("div_modeles");
		div_modeles.style.visibility = "hidden";
		fieldresult.setAttribute('class', 'helper');
		fieldresult.style.display = "block";
	} else {
		fieldresult.innerHTML = "Erreur de connection ...";
	}
	estimateResults();
}

// modèles de motos
var modeleconnection = new AjaxConnection("/common/ajax.cotation.modele.php", "modelecallBack");
function setModele ( vehic_num, marque_id ) {
	hideHelpers();
	if (!document.getElementById) return;

	clearTimeout (searchTO);
	delete searchTO;
	if (searching) {
		searchTO = setTimeout("setModele("+vehic_num+","+marque_id+")", 200);
		return;
	}
	searching = true;
	fieldresult = document.getElementById('ajax_modele_'+vehic_num);
	modeleconnection.connect("&lang=<?php echo $lang; ?>&marque_id="+marque_id+"&num="+vehic_num);
}
function modelecallBack(returnCode, content) {
	searching = false;
	if (!document.getElementById) return;
	if (returnCode==200) {
		fieldresult.innerHTML = content;
		estimateResults();
	} else {
		fieldresult.value = "Erreur de connection ...";
	}
}
