
var saisie = true;
var resultat = false;

function changeStyleSelonClasse (nomClass, tag, styleElement, value) {
	if (null != nomClass && null != styleElement && '' != nomClass && '' != styleElement) {
		var classElements = document.getElementsByTagName(tag);
		for(var i=0, taille=classElements.length; i < taille; i+=1){
			if (classElements[i].className && classElements[i].className == nomClass){
				eval("classElements[i].style." + styleElement + "=" + value);
			}
		}
	}
}

function initialisation () {
	/*
	changeStyleSelonClasse("divResultat","div","display","'none'");
	changeStyleSelonClasse("divResultat","div","visibility","'hidden'");
	changeStyleSelonClasse("error","div","visibility","'hidden'");
	masquerAttente();
	masquerOption();
	cacherDistancier();
	*/
	// il est utile de passer dynamiquement la visibility des resultats a hidden pour que l animation sache quand disparaitre
	changeStyleSelonClasse("divResultat","div","visibility","'hidden'");
	changerConteneur ();
}

function retourSaisie () {
	saisie = true;
	resultat = false;
	faireDisparaitreImmediat("cadreResultat");
	faireDisparaitreImmediat("contenuResultatInterieur");
	faireDisparaitreImmediat("titreResultat");
	faireDisparaitreImmediat("titrePortResultat");
	faireDisparaitreImmediat("titrePageResultat");
	faireApparaitreSaisieRapide("contenuSaisie");
}

function calculer (contexte) {

	var verif = controlerForm();
	if (verif == true){
		// on met un curseur d'attente
		document.body.style.cursor='wait';
		// on rend le message d erreur invisible
		changeStyleSelonClasse("error","div","visibility","'hidden'");
		// on fait disparaitre les blocs de saisie
		faireDisparaitreSaisieRapide()
		// on fait apparaitre le div attente
		faireApparaitreAttente();
		// on lance la requete ajax
		lanceRequeteAjaxAdmin(contexte);
	} else {
	// on rend visible le message d erreur
		changeStyleSelonClasse("error","div","visibility","'visible'");
	}
	// permet de ne jamais executer le submit du form
	return false;
}

function controlerForm () {
	
	var res = true;
	var form = document.forms[0];
	for(var taille = form.length, i = taille - 1 ; i >= 0 ; i--){
		var champ = form.elements[i];
		if (champ.value.length < 1) {
			champARenseigner (champ);
			res = false;
		} else {
			if (champ.type == 'text') {
				// on fait un controle de formatage sur les champs texte
				if (is_numeric(remplacerVirguleParPoint(champ.value))) {
						if (champ.value.indexOf(".")>0 || champ.value.indexOf(",")>0) {
						champARenseigner (champ);
						res = false;
						}
						else {
							champOK (champ);
						}
							
				} else {
					champARenseigner (champ);
					res = false;
				}
			} else {
				champOK (champ);
			}
		}
	}
	
	return res;
}

function champARenseigner (champ) {
	champ.style.borderWidth = "3px";
	champ.style.borderColor = '#FF0033';
	champ.style.borderStyle = 'solid';
	champ.value='';
	champ.focus();
}

function champOK (champ) {
	champ.style.borderWidth = '';
	champ.style.borderColor = '';
	champ.style.borderStyle = '';
}

function is_numeric(num) {
		var exp = new RegExp("^[0-9-.]*$","g");
		return exp.test(num);
}

function remplacerVirguleParPoint(source)
{

	var poinDecimal = "." ;
	var pointAmodifier = "," ;
	if (parseFloat("1,5")> 1)
	{
		poinDecimal = "," ;
		pointAmodifier ="." ;
	}

	var resultat = source ;
	if (source.indexOf(pointAmodifier) > 0)
	{
		var tabdeb = source.split(pointAmodifier);
		resultat = tabdeb[0] + poinDecimal + tabdeb[1] ;
	}
	return  resultat ;
}

function faireApparaitre(id, alpha){

	alpha = (!alpha ? 0 : alpha);
	var target = document.getElementById(id);
	target.style.opacity = (alpha/100);
	target.style.filter = 'alpha(opacity='+alpha+')';
	target.style.display = 'block';
	target.style.visibility = 'visible';
	if(alpha < 100){
		setTimeout('faireApparaitre("'+id+'", '+(alpha+5)+')', 200);
	}
}

function faireDisparaitre(id, alpha){
	alpha = (!alpha && alpha != 0 ? 100 : alpha);
	var target = document.getElementById(id);
	target.style.opacity = (alpha/100);
	target.style.filter = 'alpha(opacity='+alpha+')';
	
	if(alpha > 0){
		setTimeout('faireDisparaitre("'+id+'", '+(alpha-5)+')', 200);
	/*
	} else {
		if(id=="titreSaisie"){
			afficherAttente();
		}
		*/
	}
}

function faireDisparaitreRapide(id, alpha){
	alpha = (!alpha && alpha != 0 ? 100 : alpha);
	var target = document.getElementById(id);
	target.style.opacity = (alpha/100);
	target.style.filter = 'alpha(opacity='+alpha+')';
	
	if(alpha > 0){
		setTimeout('faireDisparaitreRapide("'+id+'", '+(alpha-5)+')', 100);
	} 
}

function faireApparaitreRapide(id, alpha){
	alpha = (!alpha ? 0 : alpha);
	var target = document.getElementById(id);
	target.style.opacity = (alpha/100);
	target.style.filter = 'alpha(opacity='+alpha+')';
	target.style.display = 'block';
	target.style.visibility = 'visible';
	if(alpha < 100){
		setTimeout('faireApparaitre("'+id+'", '+(alpha+10)+')', 100);
	}
}

/** Fonction pour resoudre le probleme d'IE car celui-ci utilise l'attribut ID au lieu de NAME
 * @param tag tag de la balise HTML (ex: input, option, ...)
 * @param name nom de l'element (<input name="le_nom_cherche" />)
 * @return tableau comprenant tous les elements trouves
*/
function getElementsByName_iefix(tag, name) {
	var elem=document.getElementsByTagName(tag);
	var arr=new Array();
	for(i=0,iarr=0; i < elem.length; i++) {
		att=elem[i].getAttribute("name");
		if(att == name) {
			arr[iarr]=elem[i];
			iarr++;
		}
	}
	return arr;
}


function faireDisparaitreSaisieRapide() {
	faireDisparaitreRapide("contenuSaisie");
	faireDisparaitreRapide("contenuSaisieInterieur");
	//faireDisparaitreRapide("contenuSaisiePostTable");
	faireDisparaitreRapide("titreSaisie");
}

function faireApparaitreSaisieRapide() {
	saisie = true;
	resultat = false;
	faireApparaitreSaisRapide("contenuSaisie");
	faireApparaitreSaisRapide("contenuSaisieInterieur");
	faireApparaitreSaisRapide("titreSaisie");
}

function faireApparaitreResultat() {
	saisie = false;
	resultat = true;

	faireApparaitreRes("cadreResultat");
	faireApparaitreRes("contenuResultatInterieur");
	faireApparaitreRes("titreResultat");
	faireApparaitreRes("titrePageResultat");
	if
	//DEBUT - TWOD - 04/02/2011 - affichage ports dans le resultat
	//les valeurs renvoyees dans la liste deroulante sont les ID
	//avant : (document.getElementById("conteneur").options[document.getElementById("conteneur").selectedIndex].value == "Conteneurs ISO")
	(document.getElementById("conteneur").options[document.getElementById("conteneur").selectedIndex].value == "2")
	//FIN - TWOD - 04/02/2011 - affichage ports dans le resultat
	{
		faireApparaitreRes("titrePortResultat");
	}
}



function faireApparaitreSaisRapide(id, alpha){
	if (resultat == false) {
		alpha = (!alpha ? 0 : alpha);
		var target = document.getElementById(id);
		target.style.opacity = (alpha/100);
		target.style.filter = 'alpha(opacity='+alpha+')';
		target.style.display = 'block';
		target.style.visibility = 'visible';
		if(alpha < 100){
			setTimeout('faireApparaitreSaisRapide("'+id+'", '+(alpha+10)+')', 100);
		}
	} else {
		faireDisparaitreImmediat(id);
	}
}

function faireApparaitreRes(id, alpha){
	if (saisie == false) {
		alpha = (!alpha ? 0 : alpha);
		var target = document.getElementById(id);
		target.style.opacity = (alpha/100);
		target.style.filter = 'alpha(opacity='+alpha+')';
		target.style.display = 'block';
		target.style.visibility = 'visible';
		if(alpha < 100){
			setTimeout('faireApparaitreRes("'+id+'", '+(alpha+5)+')', 200);
		}
	} else {
		faireDisparaitreImmediat(id);
	}
}

function faireDisparaitreImmediat(id) {
	// reinitialiser le filter est utile pour IE
	var target = document.getElementById(id);
	document.getElementById(id).style.filter = 'alpha(opacity=0)';
	document.getElementById(id).style.display = 'none';
	document.getElementById(id).style.visibility = 'hidden';
}

function afficherOption () {
	document.getElementById("methode").style.display = 'inline';
	document.getElementById("methode").style.visibility = 'visible';
	document.getElementById("libelleMethode").style.display = 'inline';
	document.getElementById("libelleMethode").style.visibility = 'visible';
}

function masquerOption () {
	document.getElementById("methode").style.display = 'none';
	document.getElementById("methode").style.visibility = 'hidden';
	document.getElementById("libelleMethode").style.display = 'none';
	document.getElementById("libelleMethode").style.visibility = 'hidden';
}

function inverserOption () {
	if(document.getElementById("methode").style.visibility == 'visible') {
		masquerOption ();
	} else {
		afficherOption ()
	}
}

function calculerDistanceFluviale (contexte) {
	document.body.style.cursor='wait';
	document.getElementById('portdepart').disabled=true;
	document.getElementById('portarrivee').disabled=true;
	document.getElementById('distancefluviale').readOnly=true;
	document.getElementById('boutoncalculerinput').disabled = true;
	lanceRequeteAjaxDistance(contexte);
	
}

function cacherDistancier(){
	document.getElementById("distancier").style.display = 'none';
	document.getElementById("distancier").style.visibility = 'hidden';
	document.getElementById("ligneBassinSaisie").style.display = '';
	document.getElementById("ligneBassinSaisie").style.visibility = 'visible';
}

function afficherDistancier(){
	document.getElementById("distancier").style.display = 'inline';
	document.getElementById("distancier").style.visibility = 'visible';
	document.getElementById("ligneBassinSaisie").style.display = 'none';
	document.getElementById("ligneBassinSaisie").style.visibility = 'hidden';
}

function afficherAttente () {
	document.getElementById("divAttente").style.display = '';
	document.getElementById("divAttente").style.visibility = 'visible';
}

function masquerAttente () {
	document.getElementById("divAttente").style.display = 'none';
	document.getElementById("divAttente").style.visibility = 'hidden';
}

function faireApparaitreAttente(alpha){
	alpha = (!alpha ? 0 : alpha);
	var target = document.getElementById("divAttente");
	target.style.opacity = (alpha/100);
	target.style.filter = 'alpha(opacity='+alpha+')';
	target.style.display = 'block';
	target.style.visibility = 'visible';
	
	// le div attente continue d'augmenter son alpha tant que le div resultat n a pas commence a apparaitre
	// une fois que c est le cas il disparait
	if(document.getElementById("titreResultat").style.visibility=='hidden'){
		if (alpha < 100){
			setTimeout('faireApparaitreAttente('+(alpha+5)+')', 200);
		} else {
			setTimeout('faireApparaitreAttente('+(alpha)+')', 200);
		}
	} else {
		faireDisparaitreRapideAttente();
	}
}

function faireDisparaitreRapideAttente(alpha){
	alpha = (!alpha && alpha != 0 ? 100 : alpha);
	var target = document.getElementById("divAttente");
	target.style.opacity = (alpha/100);
	target.style.filter = 'alpha(opacity='+alpha+')';
	
	if(alpha > 0){
		setTimeout('faireDisparaitreRapideAttente('+(alpha-5)+')', 100);
	} else {
		target.style.display = 'none';
		target.style.visibility = 'hidden';
	}
}

/**
* Exporte le resultat du formulaire sous format pdf
* 05/02/2010
*/
function exportResultatPdf(){
	//Initialiser port depart et port arrivee
	var portDepart = '';
	var portArrivee = '';
	if(!(document.getElementById('titrePortResultat').style.display == 'none'
			|| document.getElementById('titrePortResultat').style.visibility == 'hidden')){
		portDepart = document.getElementById('portDepartChoisi').innerHTML;
		portArrivee = document.getElementById('portArriveeChoisi').innerHTML;
	}
	document.getElementById('portDepartPdfForm').value = portDepart;
	document.getElementById('portArriveePdfForm').value = portArrivee;
	//Initialiser unite
	document.getElementById('uniteResultatPdfForm').value = document.getElementById('uniteResultat').innerHTML; 
	
	//Submit form
	var form = document.getElementById('ecocalculateur_generationPdfForm');
	form.submit();
}
