/**
 * 
 * $Header$
 *
 */

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> changer la valeur d'un champ cache contenu dans le formulaire 
 * "geosolForm" de la page index.php
 *
 * EN ENTREE :
 * - fieldName : le nom du champs a modifier
 * - newFieldValue : la valeur a placer dans le champs
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function updateHTMLField(fieldName,newFieldValue)
{
	string = "document.forms[0]." + fieldName + ".value = '" + newFieldValue + "'";
	eval(string);
//	document.geosolForm[fieldName].value = newFieldValue;
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> obtenir la valeur d'un champs dans le formulaire
 *
 * EN ENTREE :
 * - fieldName : le nom du champs dont on veut recuperer la valeur
 *
 * EN SORTIE :
 * - une chaine de caracteres
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function getHTMLField(fieldName)
{
	return document.geosolForm[fieldName].value;
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> met la valeur du champ fieldName a "yes" et les autres
 * valeurs du meme formulaire a "no"
 *
 * EN ENTREE :
 * - formName : le nom du formulaire
 * - fieldName : le nom du champs dans le formulaire
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function checkField(formName,fieldName)
{
	var index = 0;
	var i = 0;
	for ( i = 0; i < document.forms.length; i++ )
	{
		if ( document.forms[i].name == formName )
		{
			index = i;
			break;
		}
	}
	
	document.forms[index].getInfo.value = "no";
	document.forms[index].zoomPlus.value = "no";
	document.forms[index].zoomMinus.value = "no";
	document.forms[index].center.value = "no";
	document.forms[index].initExtent.value = "no";
	document.forms[index].box.value = "no";
	
	for ( i = 0; i < document.forms[index].length; i++ )
	{
		if ( document.forms[index].elements[i].name == fieldName )
		{
			document.forms[index].elements[i].value = "yes";
		}
	}
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> changer d'images pour passer d'un bouton non selectionne a un bouton
 * selectionner et vice versa
 *
 * EN ENTREE :
 * - imageName : le nom de l'image que l'on veut changer
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function rollImage(imageName)
{
	var i = 0;
	for ( i = 0; i < document.images.length; i++ )
	{
		if ( document.images[i].name != imageName )
		{
			continue;
		}
		
		switch ( document.images[i].name )
		{
			case "center" :
				document.center.src = "images/pan_select.jpg";
				document.zoomPlus.src = "images/zoom.jpg";
				document.zoomMinus.src = "images/unzoom.jpg";
				document.getInfo.src = "images/identifier.jpg";
				document.box.src = "images/box.jpg";
				break;
			
			case "zoomPlus" :
				document.center.src = "images/pan.jpg";
				document.zoomPlus.src = "images/zoom_select.jpg";
				document.zoomMinus.src = "images/unzoom.jpg";
				document.getInfo.src = "images/identifier.jpg";
				document.box.src = "images/box.jpg";
				break;
				
			case "zoomMinus" :
				document.center.src = "images/pan.jpg";
				document.zoomPlus.src = "images/zoom.jpg";
				document.zoomMinus.src = "images/unzoom_select.jpg";
				document.getInfo.src = "images/identifier.jpg";
				document.box.src = "images/box.jpg";
				break;
				
			case "getInfo" :
				document.center.src = "images/pan.jpg";
				document.zoomPlus.src = "images/zoom.jpg";
				document.zoomMinus.src = "images/unzoom.jpg";
				document.getInfo.src = "images/identifier_select.jpg";
				document.box.src = "images/box.jpg";
				break;
				
			case "box" :
				document.center.src = "images/pan.jpg";
				document.zoomPlus.src = "images/zoom.jpg";
				document.zoomMinus.src = "images/unzoom.jpg";
				document.getInfo.src = "images/identifier.jpg";
				document.box.src = "images/box_select.jpg";
				break;
				
			default :
				document.center.src = "images/pan.jpg";
				document.zoomPlus.src = "images/zoom.jpg";
				document.zoomMinus.src = "images/unzoom.jpg";
				document.getInfo.src = "images/identifier.jpg";
				document.box.src = "images/box.jpg";
				break;
		}
	}
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> changer la valeur du champ locateElement de no a yes et vice versa.
 * Ce champs sert a signifier au systeme si l'on desire afficher les elements
 * de reperage ou non.
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function checkLocateField()
{
	if ( document.forms[0].locateElements.value.match("yes") )
	{
		document.forms[0].locateElements.value = "no";
	}
	else
	{
		document.forms[0].locateElements.value = "yes";
	}
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> changer l'image du bouton d'affichage des elements de localisation
 * de l'etat selectionne a non selectionne et vice versa.
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function rollLocateImage()
{
	var string = document.locateElements.src;
	
	if (  string.match("reper.jpg") )
	{
		document.locateElements.src = "images/reper_select.jpg";
	}
	else
	{
		document.locateElements.src = "images/reper.jpg";
	}
}


/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> ouverture d'une nouvelle fenetre
 *
 * EN ENTREE :
 * - url : l'url de la page a afficher dans la nouvelle fenetre
 * - windowName : le nom de la nouvelle fenetre
 * - features : les options de configuration de la nouvelle fenetre (voir aide
 *   javascript)
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/

function openNewWindow(url,windowName,features)
{
	 Fenetre=window.open(url,windowName,features);
	 Fenetre.creator=self;
	 Fenetre.focus();
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> ouverture de la fenetre d'information lorsque l'on a clique sur un canton
 *
 * EN ENTREE :
 * - formName : le nom du formulaire a passer a la nouvelle fenetre
 *   d'information
 * - actionFile : le nom de la page a afficher dans la nouvelle fenetre
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/

function openInformationWindow(formName,actionFile)
{
	var index = 0;
	var i = 0;
	for ( i = 0; i < document.forms.length; i++ )
	{
		if ( document.forms[i].name == formName )
		{
			index = i;
			break;
		}
	}
	
	var url = "";
	url += actionFile + "?";
	for ( i = 0; i < document.forms[index].length; i++ )
	{
		if ( i != 0 )
		{
			url += "&";
		}
		
		url += document.forms[index].elements[i].name + "=" + document.forms[index].elements[i].value;
	}

	var features = "top=60,left=60,width=450,height=400,scrollbars=1,resizable=0,status=0";
	
	openNewWindow(url,formName,features);
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> ouverture de la fenetre ou est affichee la carte au format pdf
 *
 * EN ENTREE :
 * - ok : un booleen, qui signifie si une carte a deja ete dessinee ou non
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function openGeoPDF(ok)
{
	if ( ok == '' )
	{
		alert("Dessinez d'abord une carte avant de l'exporter en PDF");
		return;
	}
	
	var url = "includes/geoPDF.php";
	
	var features = "top=60,left=60,width=800,height=600,scrollbars=1,resizable=1,status=0";

	openNewWindow(url,"geoPDFWindow",features);
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> ouverture de la fenetre ou sont affichees les donnees attributaires au
 * format html des zones rmqs dessinés sur la carte
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function openData(ok)
{
	if ( ok == '' )
	{
		alert("Dessinez d'abord une carte avant de consulter les données");
		return;
	}
	
	var url = "includes/dataHTML.php";
	
	var features = "top=60,left=60,width=800,height=600,scrollbars=1,resizable=1,status=0";

	openNewWindow(url,"dataWindow",features);
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> ouverture de la fenetre ou sont affichees les donnees attributaires au
 * format pdf des cantons dessinés sur la carte
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function openDataPDF()
{
	var url = "dataPDF.php";
	
	var features = "top=100,left=100,width=800,height=600,scrollbars=1,resizable=1,status=0";

	openNewWindow(url,"dataPDFWindow",features);
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> ouverture de la fenetre ou est affichee la liste des cantons pour
 * localisation
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function openLoc()
{
	var url = "includes/localize.php";
	
	var features = "top=60,left=60,width=550,height=400,scrollbars=1,resizable=0,status=0";

	openNewWindow(url,"localizeWindow",features);
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> ouverture de la fenetre d'aide
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function openHelp()
{
	var url = "includes/help.php";
	
	var features = "top=80,left=80,width=800,height=600,scrollbars=1,resizable=1,status=0";

	openNewWindow(url,"helpWindow",features);
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> ouverture de la fenetre de description des grands domaines
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function openDomainInfo(domainId)
{
	var url = "http://indiquasol.gissol.fr/geoindiquasol/descriptions/" + domainId + ".php";
	
	var features = "top=80,left=80,width=640,height=480,scrollbars=1,resizable=1,status=0";

	openNewWindow(url,"descriptionWindow",features);
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> ouverture de la fenetre auteurs
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function openAuthors()
{
	var url = "authors.php";
	
	var features = "top=80,left=80,width=450,height=400,scrollbars=1,resizable=1,status=0";

	openNewWindow(url,"authorWindow",features);
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> Reinitialiser les valeurs des bornes de classes de la legende à leur
 * valeurs par defaut
 *
 * EN ENTREE :
 * - maxClasses : le nombre maximal de classes autorise par l'application
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function initialValues(maxClasses)
{
	var i = 0;
	for ( i = 0; i < maxClasses; i++ )
	{
		var string = "document.forms[0].class_inf_" + i + ".value = ''";
		eval(string);
		var string = "document.forms[0].class_sup_" + i + ".value = ''";
		eval(string);
	}
	
	document.forms[0].getInfo.value = "";
	document.forms[0].center.value = "yes";
	document.forms[0].zoomMinus.value = "";
	document.forms[0].zoomPlus.value = "";
	document.forms[0].box.value = "";
	updateHTMLField("modifiedClasses","no");
	
	validate();
	
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> redessiner la carte apres que des modifications aient
 * ete faites dans la legende ou dans les menus de choix
 * par l'utilisateur
 *
 * EN ENTREE :
 * - numberOfClasses : le nombre de classes composant la legende. Utilise pour
 *   verfier la coherence du decoupage dans la legende
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/

function redraw(numberOfClasses)
{
	document.forms[0].getInfo.value = "";
	document.forms[0].center.value = "yes";
	document.forms[0].zoomMinus.value = "";
	document.forms[0].zoomPlus.value = "";
	
	var myBoolean = checkLegend(numberOfClasses);
	
	if ( myBoolean )
	{
		validate();
	}
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> verifier quel bouton a ete selectionne pour que ce dernier
 * apparaisse sous sa forme "selectionne"
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function checkSelectedButton()
{
	if ( document.forms[0].getInfo.value == "yes" )
	{
		rollImage('getInfo');
	}
	
	if ( document.forms[0].center.value == "yes" )
	{
		rollImage('center');
	}
	
	if ( document.forms[0].zoomMinus.value == "yes" )
	{
		rollImage('zoomMinus');
	}
	
	if ( document.forms[0].zoomPlus.value == "yes" )
	{
		rollImage('zoomPlus');
	}
	
	if ( document.forms[0].box.value == "yes" )
	{
		rollImage('box');
	}
	
	if ( document.forms[0].locateElements.value == "yes" )
	{
		document.locateElements.src = "images/reper_select.jpg";
	}
	else
	{
		document.locateElements.src = "images/reper.jpg";
	}
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> dans la legende interactive, reporter une automatiquement une valeurs
 * d'une borne superieure de classe à la borne inferieure de la classe
 * suivante
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function reportValue(fieldNumber,maxFieldNumber)
{
	var myRightValue = "";
	
	var string = "myRightValue = document.forms[0].class_sup_" + fieldNumber + ".value";
	eval(string);
	
	var myCheck = checkNumericValue(myRightValue);
	
	if ( ! myCheck )
	{
		alert("Saisissez une valeur numerique ou bien +INF ou bien -INF");
		return;
	}
	
	if ( myRightValue != "+INF" && fieldNumber != maxFieldNumber)
	{	
		newFieldNumber = fieldNumber + 1;
		string = "document.forms[0].class_inf_" + newFieldNumber + ".value = " + myRightValue;
		eval(string);
	}

	string = "document.forms[0].modifiedClasses.value='yes'";
	eval(string);

}


/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> verifier la coherence du decoupage en classes de l'utilisateur dans la
 * legende
 *
 * EN ENTREE :
 * - numberOfClasses : le nombre de classes composant la legende
 *
 * EN SORTIE :
 * - un booleen : 1 si la legende parait correcte, 0 sinon
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function checkLegend(numberOfClasses)
{
	var to_return = true;
	
	/* creer un tableau qui contient ttes les valeurs entrees par l'utilisateur
	   dans l'ordre ... */
	var myArray = new Array();
	var myValue = "";
	var i = 0;
	var j = 0;
	for ( i = 0; i < numberOfClasses; i++ )
	{
		var string = "myValue = document.forms[0].class_inf_" + i + ".value";
		eval(string);
		if ( trim(myValue) != "" )
		{
			myArray[j] = myValue;
		}
		j += 1;
		
		var string = "myValue = document.forms[0].class_sup_" + i + ".value";
		eval(string);
		if ( trim(myValue) != "" )
		{
			myArray[j] = myValue;
		}
		j += 1;
	}
	
//	alert(myArray);
	
	/* ... puis verifier si le tableau est ordonne */
	i = 1;
	for ( i = 1; i < myArray.length; i++ )
	{
		var minValue = myArray[i-1];
		var maxValue = myArray[i];
		
		if ( minValue == "+INF" )
		{
			minValue = Number.MAX_VALUE;
		}

		if ( maxValue == "+INF" )
		{
			maxValue = Number.MAX_VALUE;
		}
		
		if ( minValue == "-INF" )
		{
			minValue = Number.MIN_VALUE;
		}

		if ( maxValue == "-INF" )
		{
			maxValue = Number.MIN_VALUE;
		}
		
//		alert("min : " + minValue + ", max : " + maxValue);
		
		if ( parseFloat(minValue) > parseFloat(maxValue) )
		{
			alert("Une erreur est apparue dans votre decoupage\nVérifiez la cohérence de vos limites de classes");
			to_return = false;
			break;
		}
	}
	
	return to_return;
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> placer dans les champs caches du formulaire geosolForm l'identifiant
 * et le nom correspondant d'une region
 *
 * EN ENTREE :
 * - id : l'identifiant de la region
 * - shortName : le nom de la region
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function selectRegion(id,shortName)
{
	updateHTMLField("regionId",id);
	updateHTMLField("departementId","");
	updateHTMLField("geoName",shortName);
	closeAllMenus();
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> placer dans les champs caches du formulaire geosolForm l'identifiant
 * et le nom correspondant d'un departement
 *
 * EN ENTREE :
 * - id : l'identifiant du departement
 * - shortName : le nom du departement
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function selectDepartement(id,shortName)
{
	updateHTMLField("departementId",id);
	updateHTMLField("regionId","");
	updateHTMLField("geoName",shortName);
	closeAllMenus();
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> placer dans les champs caches du formulaire geosolForm l'identifiant
 * et le nom correspondant d'un indicateur
 *
 * EN ENTREE :
 * - domainId : l'identifiant du grand domaine cartographie
 * - elementId : l'identifiant de l'indicateur cartographié
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function selectElement(domainId,elementId)
{
	/* redessiner les menus d'origine */
	redrawMenus();
	
	if ( arguments.length > 2 )
	{
		updateHTMLField("modifiedClasses","no");
	}
	
	updateHTMLField("domainId",domainId);
	updateHTMLField("elementId",elementId);
	updateHTMLField("elementNameForMenu",elementId);
	
	closeAllMenus();
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> placer dans les champs caches du formulaire geosolForm l'identifiant
 * et le nom correspondant d'un canton
 *
 * EN ENTREE :
 * - id : l'identifiant du canton
 * - shortName : le nom du canton
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/

function selectCanton(id)
{
	window.opener.document.forms[0].rmqsId.value = id;
	window.opener.document.forms[0].submit();
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> placer dans les champs caches du formulaire geosolForm l'identifiant
 * et le nom correspondant d'une commune
 *
 * EN ENTREE :
 * - id : l'identifiant du commune
 * - shortName : le nom du commune
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/

function selectCommune(id)
{
	window.opener.document.forms[0].communeId.value = id;
	window.opener.document.forms[0].regionId.value = "";
	window.opener.document.forms[0].submit();
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> valider les choix faits par l'utilisateur a l'aide du menu
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function validate()
{
	var regionId = document.forms[0].regionId.value;
	var departementId = document.forms[0].departementId.value;
	var domainId = document.forms[0].domainId.value;
	var elementId = document.forms[0].elementId.value;
	
	if ( elementId == "" )
	{
		alert("Selectionnez un élément du menu \"Domaine\"\nSi vous ne choisissez pas d'entité géographique dans le menu \"Région\",\nla carte s'étendra sur la france entière")
		return;
	}

	
/*	if ( ( periodId == "" || periodId == "none" ) && domainId != "lflg" && 
		 domainId != "argi" && domainId != "limf" && domainId != "limg" && 
		 domainId != "limt" && domainId != "sabf" && domainId != "sabg" && 
		 domainId != "sabt" && domainId != "fao" && domainId != "geppasimp" )
	{
		alert("Vous devez sélectionner une période");
		return;
	}
*/	
	document.forms[0].submit();
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> initialiser les valeurs des champs du formulaires geosolForm
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function initAllValues()
{
	document.forms[0].getInfo.value = "";
	document.forms[0].center.value = "yes";
	document.forms[0].zoomMinus.value = "";
	document.forms[0].zoomPlus.value = "";
	document.forms[0].departementId.value = "";
	document.forms[0].regionId.value = "";
	document.forms[0].geoName.value = "";
	document.forms[0].box.value = "";	
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> retourner la position du curseur en abscisse sur une image
 *
 * EN ENTREE :
 * - obj : l'objet javascript de type image sur lequel on a clique
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> retourner la position du curseur en ordonnee sur une image
 *
 * EN ENTREE :
 * - obj : l'objet javascript de type image sur lequel on a clique
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> translation de la carte
 * 
 * EN ENTREE : 
 * - xTranslationRate : tx de translation en x, flottant compris entre -1 et 1
 * - yTranslationRate : tx de translation en y, flottant compris entre -1 et 1
 * - imageMapWidth : largeur de l'image en pixels
 * - imageMapHeight : hauteur de l'image en pixels
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function translateMap(xTranslationRate,yTranslationRate,mapWidth,mapHeight)
{
	updateHTMLField("regionId","");
	updateHTMLField("departementId","");

	var xCenter = mapWidth / 2;
	var yCenter = mapHeight / 2;
	
	xCenter += mapWidth * xTranslationRate;
	yCenter += mapHeight * yTranslationRate;
	
	updateHTMLField("map_x",xCenter);
	updateHTMLField("map_y",yCenter);
	
	initAllValues();
	document.forms[0].submit();
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> reaffichage du menu Period et du menu Type
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/

function redrawMenus()
{
/*	mm_changeItemProperty('Period','de 1995 à 1999',8,'#515151',1);
	mm_changeItemProperty('Period','de 1990 à 1994',8,'#515151',1);
	mm_changeItemProperty('Period','de 2000 à 2004 (incomplète)',8,'#515151',1);
	mm_changeItemProperty('Period','de 1990 à 2000',8,'#515151',1);
	
	mm_changeItemProperty('Period','de 1995 à 1999',62,"selectPeriod('9599','1995-99')",1);
	mm_changeItemProperty('Period','de 1990 à 1994',62,"selectPeriod('9094','1990-94')",1);
	mm_changeItemProperty('Period','de 2000 à 2004 (incomplète)',62,"selectPeriod('0004','2000-04')",1);
	mm_changeItemProperty('Period','de 1990 à 2000',62,"selectPeriod('9000','1990-00')",1);
	
	mm_changeItemProperty('Type','Médiane',8,'#515151',1);
	mm_changeItemProperty('Type','Premier quartile',8,'#515151',1);
	mm_changeItemProperty('Type','Dernier quartile',8,'#515151',1);
	mm_changeItemProperty('Type','Premier décile',8,'#515151',1);
	mm_changeItemProperty('Type','Dernier décile',8,'#515151',1);
	mm_changeItemProperty('Type','Texture dominante',8,'#FFFFFF',1);
	mm_changeItemProperty('Type','Texture secondaire',8,'#FFFFFF',1);
	
	mm_changeItemProperty('Type','Médiane',62,"selectType('med','Médiane','modifiedClassesToNo')",1);
	mm_changeItemProperty('Type','Premier quartile',62,"selectType('pqua','1er Quart.','modifiedClassesToNo')",1);
	mm_changeItemProperty('Type','Dernier quartile',62,"selectType('dqua','Der Quart.','modifiedClassesToNo')",1);
	mm_changeItemProperty('Type','Premier décile',62,"selectType('pdec','1er Déc.','modifiedClassesToNo')",1);
	mm_changeItemProperty('Type','Dernier décile',62,"selectType('ddec','Der Déc.','modifiedClassesToNo')",1);
	mm_changeItemProperty('Type','Texture dominante',62,"doNothing()",1);
	mm_changeItemProperty('Type','Texture secondaire',62,"doNothing",1);
*/
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> la fonction qui ne fait rien
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/

function doNothing()
{
	return;
}	

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> affichage des valeurs contenues dans un formulaire
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/

function displayFormValues(formName)
{
	var index = 0;
	var i = 0;
	for ( i = 0; i < document.forms.length; i++ )
	{
		if ( document.forms[i].name == formName )
		{
			index = i;
			break;
		}
	}
	
	var string = "";
	for ( i = 0; i < document.forms[index].length; i++ )
	{
		if ( i != 0 )
		{
			string += "\n";
		}
		
		string += document.forms[index].elements[i].name + " = " + document.forms[index].elements[i].value;
	}
	
	alert(string);
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> trim d'une chaine de caracteres (enlever les espaces superflus en
 * debut et fin de chaine de caractere
 *
 * EN ENTREE :
 * - string : la chaine de caractere a trimer
 *
 * EN SORTIE :
 * - une chaine de caracteres trimees
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/

function trim(string) 
{ 
	return string.replace(/(^\s*)|(\s*$)/g,"");
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> verification d'une valeur numerique entree par l'utilisateur dans la 
 * legende de l'application. Sont acceptees les valeurs suivantes :
 * - +INF
 * - -INF
 * - les entiers
 * - les reels avec le point comme separateur decimal
 *
 * EN ENTREE :
 * - string : la chaine de caractere a verfier
 *
 * EN SORTIE :
 * - un booleen : true ou false
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/

function checkNumericValue(string)
{
	/* un entier, ou un reel (. est le delimiteur) ou +INF ou -INF */
	return string.match(/^\s*[0-9]+\.?[0-9]*\s*$|^\s*\+INF\s*$|^\s*\-INF\s*$/);
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> afficher, masquer un bloc
 *
 * EN ENTREE :
 * - blockToShow : l'id du bloc a afficher, peut etre ''
 * - blockToHide : l'id du bloc a cacher, peut etre ''
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/

function showHide(blockToShow,blockToHide)
{
	if ( blockToHide != "" )
	{
		document.getElementById(blockToHide).style.display = "none";
	}
	
	if ( blockToShow != "" )
	{
		document.getElementById(blockToShow).style.display = "";
	}	
}

/* =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
 *
 * >>> valider le formulaire de localisation.
 *
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~*/
 
function validateLocalizer()
{
	var valid = false;
	var fieldNum = 0;
	var localizeName = trim(document.getElementById("localizeName").value);
	var localizeInsee = trim(document.getElementById("localizeInsee").value);
	var localizeCellNum = trim(document.getElementById("localizeCellNum").value);
	
	/* verifier qu'un seul champ a ete saisi */
	if ( localizeName != "" )
	{
		fieldNum++;
	}
	
	if ( localizeInsee != "" )
	{
		fieldNum++;
	}
	
	if ( localizeCellNum != "" )
	{
		fieldNum++;
	}
	
	if ( fieldNum > 1)
	{
		alert("Ne renseignez qu'un seul champ");
		return;
	}
	
	if ( fieldNum == 0 )
	{
		alert("Renseignez au moins un champ");
		return;
	}
	
	/* majuscules, minuscules, caractères accentués et le signe - */
	if ( localizeName.match(/^\s*[A-Za-zéàèìòùèâêûîôäëÿüïöÀÈÌÒÙÄËÜÏÂÊÛÎÔç-]*\s*$/) )
	{
		valid = true;
	}
	
	/* un code à 5 chiffres*/
	if ( ! localizeInsee.match(/^\s*[0-9]{5}\s*$/) )
	{
		valid = true;
	}
	
	/* un code entre 1 et 4 chiffres */
	if ( ! localizeCellNum.match(/^\s*[0-9]{1,4}\s*$/) )
	{
		valid = true;
	}
	
	if ( valid )
	{
//		window.opener.document.forms[0].localizeInsee.value = trim(localizeInsee);
//		window.opener.document.forms[0].localizeName.value = trim(localizeName);
//		window.opener.document.forms[0].localizeCellNum.value = trim(localizeCellNum);
		document.forms[0].submit();
	}
	else
	{
		alert("Vérifier les informations que vous avez saisies");
	}
}

