//=============================================================================================
//déclaration des Variables globales

//position de la souris
var mouseX=0;
var mouseY=0;
//position du rectangle de selection
var x1=0;
var x2=0;
var y1=0;
var y2=0;
//variable d'etat de la selection: 10=>aucun clic sur l'image, 0=>un clic, rectangle en phase de dessin, 1=>2 clics, rectangle dessiné
var state=10;

var DaysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];//Nombre de jours des mois d'une annee non bissectile, utilisé pour le controle des params date
var server=top.location.host;

var version="globprocess";

//=============================================================================================
/*Fonction getMouseXY
*Cette fonction écoute le déplacement de la souris, affiche les coordonnées dans les textbox et appel la fonction de dessin de la zone en cas de clic
*/
function getMouseXY(aEvent)	//deplacement de l'element draguer
{
	var temp;
  	var myEvent = aEvent ? aEvent : window.event; //recuperation de l'evenement selon le navigateur
	//on recupere cible de l'evenemet
	var target= myEvent.target ? myEvent.target : myEvent.srcElement;
	if(myEvent.offsetX)
	{
		mouseX=myEvent.clientX+document.body.scrollLeft;
		mouseY=myEvent.clientY+document.body.scrollTop;
	}
	else
	{
		mouseX=myEvent.pageX;
		mouseY=myEvent.pageY;
	}
	
	//ATTENTION: x1 y1 dependent de la position du cadre definit dans style.css (.square)

	if(state==10){//Aucun clic sur la carte
		x1=mouseX-332;
		y1=mouseY-110;
		if(90-y1<0) north=-(90-y1)+"°S";
		else north=90-y1+"°N";
		if(180-x1<0) west=-(180-x1)+"°E";
		else west=180-x1+"°W";

	}
	
	if(state==0){//clic sur la carte
		x1=mouseX-332;
		y1=mouseY-110;
	}
	if(state==1){//relaché du clic
		x2=mouseX-332;
		y2=mouseY-110;
	
		if(x1>x2){
		temp=x2;
		x2=x1;
		x1=temp;
		}
		if(y1>y2){
			temp=y2;
			y2=y1;
			y1=temp;
		}
		if(90-y1<0) north=-(90-y1)+"°S";
		else north=90-y1+"°N";
		if(90-y2<0) south=-(90-y2)+"°S";
		else south=90-y2+"°N";
		if(180-x1<0) west=-(180-x1)+"°E";
		else west=180-x1+"°W";
		if(180-x2<0) east=-(180-x2)+"°E";
		else east=180-x2+"°W";
		document.select.north.value=north;
		document.select.south.value=south;
		document.select.west.value=west;
		document.select.east.value=east;
		drawSquare(x1,y1,x2,y2,"red","square");
	}
	
}

//=============================================================================================
/* Fonction captureclick
* qui change la valeur de la variable d'etat state en fonction du clic
*/
function captureClick(clic)
{
	if (clic==0) state=1;
	else{
		state=0;
		listSite();
	}
}

//=============================================================================================
/*Fonction reset_coords
* qui efface la zone dessinee sur la carte et les textbox de coordonnees
*/
function reset_coords(){
	state=10;
	document.getElementById("square").innerHTML=" ";
	document.getElementById("list").innerHTML=" ";
	document.select.north.value="90°N";
	document.select.south.value="90°S";
	document.select.west.value="180°W";
	document.select.east.value="180°E";
	
}

//=============================================================================================
/*Fonction drawSquare
* fonction de dessin de la zone de selection
*/
 function drawSquare(x1,y1,x2,y2,color,divId)
 {
	var height=y2-y1;
	var strNewPoints='';
	for(i=0;i<height;i++){
		strNewPoints+='<div style="font-size:1px; width:1px; height:1px; background-color:'+color+';position:absolute;  top:'+(y1+i)+'px; left:'+x1+'px; ">&nbsp;</div>';
		strNewPoints+='<div style="font-size:1px; width:1px; height:1px; background-color:'+color+';position:absolute; top:'+(y1+i)+'px; left:'+x2+'px; ">&nbsp;</div>';
	}

	strNewPoints+='<div style="font-size:1px; width:'+(x2-x1)+'px; height:1px; background-color:'+color+';position:absolute; top:'+y1+'px; left:'+x1+'px; ">&nbsp;</div>';
	strNewPoints+='<div style="font-size:1px; width:'+(x2-x1)+'px; height:1px; background-color:'+color+'; position:absolute; top:'+y2+'px; left:'+x1+'px; ">&nbsp;</div>';
	//on suprimme tous les points actuels et on mets les nouveaux div en place
	//obj container des points
	document.getElementById(divId).innerHTML=strNewPoints;
	//alert(strNewPoints);

 } 
 
 //=============================================================================================
 /*Fonction updateSquare
 * qui met a jour la zone dessinée en fonction des coordonnées dans les textbox
 */
 function updateSquare(){

	var elem = document.select.north.value.split('°');
	/*if(elem[1]=='N') y1=90-parseInt(elem[0]);
	else y1=90+parseInt(elem[0]);
	elem = document.select.south.value.split('°');
	if(elem[1]=='N') y2=90-parseInt(elem[0]);*/
	if(elem[1]=='S') y1=90+parseInt(elem[0]);
	else y1=90-parseInt(elem[0]);
	elem = document.select.south.value.split('°');
	if(elem[1]=='S') y2=90+parseInt(elem[0]);
	else y2=90-parseInt(elem[0]);
	elem = document.select.east.value.split('°');
	if(elem[1]=='W') x2=180-parseInt(elem[0]);
	else x2=180+parseInt(elem[0]);
	elem = document.select.west.value.split('°');
	if(elem[1]=='W') x1=180-parseInt(elem[0])
	else x1=180+parseInt(elem[0]);
	
	if((document.select.west.value)&&(document.select.east.value)&&(document.select.north.value)&&(document.select.south.value)){
		drawSquare(x1,y1,x2,y2,"red","square");
		listSite();
	}
	
	 
 }

 //=============================================================================================
 /*Fonction updateSquare
 * qui met a jour la zone dessinée en fonction des coordonnées dans les textbox
 * ListeSite() mis en commentaire
 */
 function updateSquare2(){

	var elem = document.select.north.value.split('°');
	/*if(elem[1]=='N') y1=90-parseInt(elem[0]);
	else y1=90+parseInt(elem[0]);
	elem = document.select.south.value.split('°');
	if(elem[1]=='N') y2=90-parseInt(elem[0]);*/
	if(elem[1]=='S') y1=90+parseInt(elem[0]);
	else y1=90-parseInt(elem[0]);
	elem = document.select.south.value.split('°');
	if(elem[1]=='S') y2=90+parseInt(elem[0]);
	else y2=90-parseInt(elem[0]);
	elem = document.select.east.value.split('°');
	if(elem[1]=='W') x2=180-parseInt(elem[0]);
	else x2=180+parseInt(elem[0]);
	elem = document.select.west.value.split('°');
	if(elem[1]=='W') x1=180-parseInt(elem[0])
	else x1=180+parseInt(elem[0]);
	
	if((document.select.west.value)&&(document.select.east.value)&&(document.select.north.value)&&(document.select.south.value)){
		drawSquare(x1,y1,x2,y2,"red","square");
		//listSite();
	}
	
	 
 }

 //=============================================================================================
 // La fonction renvoit un tableau "lecadre" contenant les coordonnées de la zone de selection
 // avec convention du signe - pour West et Sud
 //MODIF janv2008 : ajout de la fonction
 
 function cadre(){
 var lecadre= new Array();
 var elem;
 
    elem=document.select.north.value.split('°');
    
    if(elem[1]=='S') lecadre["north"]=-parseInt(elem[0]);
    else lecadre["north"]=parseInt(elem[0]);
    
    elem=document.select.south.value.split('°');
    if(elem[1]=='S') lecadre["south"]=-parseInt(elem[0]);
    else lecadre["south"]=parseInt(elem[0]);
    
    elem=document.select.west.value.split('°');
    if(elem[1]=='W') lecadre["west"]=-parseInt(elem[0]);
    else lecadre["west"]=parseInt(elem[0]);

    elem=document.select.east.value.split('°');
    if(elem[1]=='W') lecadre["east"]=-parseInt(elem[0]);
    else lecadre["east"]=parseInt(elem[0]);
    
 return(lecadre);
 }
 
//=============================================================================================
//la fonction convertit un angle de degrés en radians
//MODIF janv2008: ajout de la fonction

function degtorad(lonlat){
 
 var teta=lonlat*(Math.PI/180);
 return(teta);
 }
 
 //=============================================================================================
 /* Fonction btnSearch
 *  Fonction qui gère l'appui sur le bouton Search
 */

 function btnSearch(){
 
	if(checkForm()){
							
	
//alert("1- : "+document.select.nbres.value);

//var str2='<br><table><tr><td><img src="Image/terreglob_little_mess.gif" align="left"><br><br></td></tr>';
var str2='<table>';
str2+='<tr><td><pmess><br>Please, enter your email address to confirm your query.</b><br><br>';
str2+='<table><tr><td width=50></td><td width=300>';
str2+='e-mail:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=textbox value="" name="email">';
str2+='</td><td> <input type=button value="Send" onClick="javascript:validQuery(0)"> </td></tr><tr><td></td><td>';
str2+='Company:&nbsp;&nbsp;&nbsp;&nbsp<input type=textbox value="" name="company">';
str2+='</td><td><input type=button value="Cancel" onClick="javascript:gotoo()">';
str2+='</td>';
str2+='</tr></table>If you want to go back for a new request, refresh this page.</pmess>';
str2+='</pmess></td></tr></table>';

	document.getElementById('splashConfirm').innerHTML=str2;
	document.getElementById('splashConfirm').style.visibility='visible';


	}
 }

//=============================================================================================
 /* Fonction gotoo
 *  Fonction qui revient a l interface
 */

function gotoo(){

history.go(0);
}




//=============================================================================================
 /* Fonction buildParamAVW
 *  Fonction qui cherche les parametres associes au couple (sensor,algo)
 */

function buildParamAVW(){


   var id_sensor;
   var id_algo;

//alert("arrivee ds buildParam");

	for(i=0;i<document.select.sensor.length;i++)
		if(document.select.sensor[i].checked==true){
			//alert(document.select.sensor[i].value);
			id_sensor=document.select.sensor[i].value;
		}

	
	id_algo=1;
	
//alert("entree ds ajax");

    var xhr=null;
    
    if (window.XMLHttpRequest) { 
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) 
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    //on définit l'appel de la fonction au retour serveur
    xhr.onreadystatechange = function() { responseBuildParam(xhr); };

    var target="http://"+server+"/"+version+"/findParam.php";

    xhr.open("POST", target, true);
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xhr.send("id_sensor="+id_sensor+"&id_algo="+id_algo+"&version="+version);


}

//=============================================================================================
 /* Fonction buildParam
 *  Fonction qui cherche les parametres associes au couple (sensor,algo)
 */

function buildParam(){


   var id_sensor;
   var id_algo;

//alert("arrivee ds buildParam");

	for(i=0;i<document.select.sensor.length;i++)
		if(document.select.sensor[i].checked==true){
			//alert(document.select.sensor[i].value);
			id_sensor=document.select.sensor[i].value;
		}

	for(i=0;i<document.select.algo.length;i++)
		if(document.select.algo[i].checked==true){
			//alert(document.select.algo[i].value);
			id_algo=document.select.algo[i].value;
		}

//alert("entree ds ajax");


    var xhr=null;
    
    if (window.XMLHttpRequest) { 
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) 
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    //on définit l'appel de la fonction au retour serveur
    xhr.onreadystatechange = function() { responseBuildParam(xhr); };

    var target="http://"+server+"/"+version+"/findParam.php";

    xhr.open("POST", target, true);
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xhr.send("id_sensor="+id_sensor+"&id_algo="+id_algo+"&version="+version);


}
//=============================================================================================
 /* Fonction responseBuildParam
 *  Fonction qui affiche les parametres associes au couple (sensor,algo)
 */

function responseBuildParam(xhr){

    if (xhr.readyState==4) 
    	{

	//alert("arrivee dans responseBuildparam");

	var i;
	var j;
	var str='<table><tr><td colspan=3><div align="left"><b>Weighted averaging method</b></div></b><tr><td style="text-align: left;width:30%">';

    	var docXML= xhr.responseXML;
	var list_id_param= docXML.getElementsByTagName("id_param");
	var list_name_param= docXML.getElementsByTagName("name_param");

	//cas MODIS AVW - aucun parametre de retour - on test sur cette condition
	if(list_id_param.length==0){
		str+='<br><br>...';
	}

	for (j=0;j<list_id_param.length;j++) {
		
		//nbparam impossible a utiliser (document.select.nbparam.value) en retour d AJAX!
		str+='<input type=hidden name=\"nbparam\" value=\"'+list_id_param.length+'\">';

		if (j==0) str+='<input type=checkbox name=\"parameter\" value=\"'+list_id_param.item(j).firstChild.data+'\" checked>'+list_name_param.item(j).firstChild.data;
		else
		str+='<input type=checkbox name=\"parameter\" value=\"'+list_id_param.item(j).firstChild.data+'\">'+list_name_param.item(j).firstChild.data;
		
		if (j==5 || j==11 || j==16 || j==21) str+='</td><td valign="top" style="text-align:left;width:30%">';
		else str+='<br>';
	}

	str+='</td></tr></table>';

	document.getElementById('form_up_r').innerHTML=str;

	}

}






//=============================================================================================
 /* Fonction btnConsult
 *  Fonction qui gère l'appui sur le bouton consult
 */

 function btnConsult(){
 

//alert("1- : "+document.select.nbres.value);

//var str2='<br><table><tr><td><img src="Image/terreglob_little_mess.gif" align="left"><br><br></td></tr>';
var str2='<table>';
str2+='<tr><td><pmess><br>Please, enter the following information to identify your request.</b><br><br>';
str2+='<table>';
/*
str2+='<tr><td width=50></td><td width=300>';
str2+='e-mail:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=textbox value="" name="email">';
str2+='</td><td> <input type=button value="Send" onClick="javascript:consult()"> </td></tr>';
*/
str2+='<tr><td></td><td>';
str2+='User ID:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=textbox value="" name="users_id">';

str2+='</td><td> <input type=button value="Send" onClick="javascript:consult()"> </td></tr>';

str2+='<tr><td></td><td>';
str2+='Request ID:&nbsp;&nbsp;<input type=textbox value="" name="request_id">';
str2+='</td><td> <input type=button value="Cancel" onClick="javascript:gotoo()">';
str2+='</td>';
str2+='</tr>';
str2+='</table>';
//str2+='If you want to go back for a new request, refresh this page.</pmess>';
//str2+='</pmess></td></tr></table>';

	document.getElementById('splashConfirm').innerHTML=str2;
	document.getElementById('splashConfirm').style.visibility='visible';

 }

//=============================================================================================

function consult(){

	//alert('request_id:'+document.select.request_id.value);
	//alert('users_id:'+document.select.users_id.value);
   var request_id=document.select.request_id.value;
   var users_id=document.select.users_id.value;


    var xhr=null;
    
    if (window.XMLHttpRequest) { 
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) 
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    //on définit l'appel de la fonction au retour serveur
    xhr.onreadystatechange = function() { responseConsult(xhr); };

    var target="http://"+server+"/"+version+"/consult.php";

    xhr.open("POST", target, true);
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xhr.send("request_id="+request_id+"&users_id="+users_id+"&version="+version);

}

//=============================================================================================
function responseConsult(xhr)

{

    if (xhr.readyState==4) 
    	{

	var i;
	var j;

    	var docXML= xhr.responseXML;
    	var datemax = docXML.getElementsByTagName("datemax");
    	var datemin = docXML.getElementsByTagName("datemin");

    	var format = docXML.getElementsByTagName("format");
    	var resolution = docXML.getElementsByTagName("resolution");


    	var sensor = docXML.getElementsByTagName("sensor");
    	var algo = docXML.getElementsByTagName("algo");


    	var parameter = docXML.getElementsByTagName("parameter");
    	var frequency = docXML.getElementsByTagName("frequency");
    	var day = docXML.getElementsByTagName("day");
    	var average = docXML.getElementsByTagName("average");
    	var north = docXML.getElementsByTagName("north");
    	var south = docXML.getElementsByTagName("south");
    	var east = docXML.getElementsByTagName("east");
    	var west = docXML.getElementsByTagName("west");
	var list_fileparam= docXML.getElementsByTagName("list_fileparam");
	var request_id = docXML.getElementsByTagName("request_id");

	var error_flag = docXML.getElementsByTagName("error_flag");
	var error_mess = docXML.getElementsByTagName("error_mess");


	var list_id_param= docXML.getElementsByTagName("id_param");
	var list_name_param= docXML.getElementsByTagName("name_param");

	//teste si requete existe en base
	if(error_flag.item(0).firstChild.data=="TRUE"){

		alert(error_mess.item(0).firstChild.data);
	
	}
      

	document.select.datemax.value=datemax.item(0).firstChild.data;
	document.select.datemin.value=datemin.item(0).firstChild.data;

	document.select.north.value=north.item(0).firstChild.data;	
	document.select.south.value=south.item(0).firstChild.data;	
	document.select.east.value=east.item(0).firstChild.data;	
	document.select.west.value=west.item(0).firstChild.data;

	document.select.list_fileparam.value=list_fileparam.item(0).firstChild.data;
	document.select.request_num.value=request_id.item(0).firstChild.data;
	

	for (j=0;j<format.length;j++)
	for(i=0;i<document.select.format.length;i++)
		if(document.select.format[i].value==format.item(j).firstChild.data) 
			document.select.format[i].checked=true;
	
	for (j=0;j<resolution.length;j++)
	for(i=0;i<document.select.resolution.length;i++)
		if(document.select.resolution[i].value==resolution.item(j).firstChild.data) 
			document.select.resolution[i].checked=true;




	for (j=0;j<sensor.length;j++)
	for(i=0;i<document.select.sensor.length;i++)
		if(document.select.sensor[i].value==sensor.item(j).firstChild.data) 
			document.select.sensor[i].checked=true;

	for (j=0;j<algo.length;j++)
	for(i=0;i<document.select.algo.length;i++)
		if(document.select.algo[i].value==algo.item(j).firstChild.data) 
			document.select.algo[i].checked=true;



	//----------------il faut afficher ici le bon panneau de paramètre-----------------------

	var str='<table><tr><td colspan=3><div align="left"><b>Weighted averaging method</b></div><tr><td style="text-align: left;width:30%">';

	for (j=0;j<list_id_param.length;j++) {
		
		//nbparam impossible a utiliser (document.select.nbparam.value) en retour d AJAX!
		str+='<input type=hidden name=\"nbparam\" value=\"'+list_id_param.length+'\">';

		if (j==0) str+='<input type=checkbox name=\"parameter\" value=\"'+list_id_param.item(j).firstChild.data+'\" checked>'+list_name_param.item(j).firstChild.data;
		else
		str+='<input type=checkbox name=\"parameter\" value=\"'+list_id_param.item(j).firstChild.data+'\">'+list_name_param.item(j).firstChild.data;
		
		if ( j==5 || j==11 || j==16 || j==21 ) str+='</td><td valign="top" style="text-align:left;width:30%">';
		else str+='<br>';
	}

	str+='</td></tr></table>';

	document.getElementById('form_up_r').innerHTML=str;


	//---------------------------------------------------------------------------------------


	
	//initialise a aucune case cochee
	for(i=0;i<document.select.parameter.length;i++) document.select.parameter[i].checked=false;

    	for (j=0;j<parameter.length;j++)
	for(i=0;i<document.select.parameter.length;i++)
		if(document.select.parameter[i].value==parameter.item(j).firstChild.data)
			document.select.parameter[i].checked=true;
	
	//initialise a aucune case cochee
	for(i=0;i<document.select.frequency.length;i++) document.select.frequency[i].checked=false;

    	for (j=0;j<frequency.length;j++)
	for(i=0;i<document.select.frequency.length;i++)
		if(document.select.frequency[i].value==frequency.item(j).firstChild.data)
			document.select.frequency[i].checked=true;
		
	
	plot_days();  //affiche les options custom si besoin

	if (document.select.frequency[3].checked==true) //si on a custom
	{
		//initialise a aucune case cochee
		for(i=0;i<document.select.day.length;i++) document.select.day[i].checked=false;
    		for (j=0;j<day.length;j++)
			for(i=0;i<document.select.day.length;i++)
				if(document.select.day[i].value==day.item(j).firstChild.data)
					document.select.day[i].checked=true;
	}

	
    	for (j=0;j<average.length;j++)
	for(i=0;i<document.select.average.length;i++)
	{
		if(document.select.average[i].value==average.item(j).firstChild.data)
			document.select.average[i].selected=true;

	}

	var str='';

	str+='<table>';
	str+='<tr>';
	str+='<td width=300><b></b></td>';
	str+='<td>';
	str+=' <input type=button value="Validate modifications" onClick="javascript:btnModify();">';
	str+='</td>';
	str+='<td>';
	str+=' <input type=button value="Remove query" onClick="javascript:btnRemove();">';
	str+='</td>';
	str+='<td>';
	str+='<input type=button value="Cancel" onClick="javascript:gotoo()">';
	str+='</td>';
	str+='<td width=300></td>';
	str+='</tr>';
	str+='</table>';

	document.getElementById('splashConfirm').style.visibility='hidden';
	document.getElementById('splashConsult').style.visibility='hidden';
	document.getElementById("bottombar").innerHTML=str;

	updateSquare2();

 	}//fin xhr
}//fin function


//=============================================================================================
/*
*  Apres consultation d une requete deja soumise, suite du bouton modify
*/
function btnModify() {

	var string='<table><tr><td><br></td></tr>';
	string+='<tr><td><pmess> The deliveries associated to this request will be modified!<br>';
	string+='Please, confirm this action</pmess><br><br></td></tr>';
	string+='<tr><td>  <input type=button value="Confirm" onClick="javascript:validQuery(1);"> ';
	string+='&nbsp;&nbsp;&nbsp;&nbsp;  <input type=button value="Cancel" onClick="javascript:gotoo()">  </td></tr>';
	string+='</table>';


	document.getElementById('splashConfirm').innerHTML=string;
	document.getElementById('splashConfirm').style.visibility='visible';

}

//=============================================================================================
/*
*  Apres consultation d une requete deja soumise, suite du bouton remove
*/

function btnRemove() {


	var string='<table><tr><td><br></td></tr>';
	string+='<tr><td><pmess> All the deliveries associated to this request will be removed!<br>';
	string+='Please, confirm this action</pmess><br><br></td></tr>';
	string+='<tr><td>  <input type=button value="Confirm" onClick="javascript:RemoveRequest();"> ';
	string+='&nbsp;&nbsp;&nbsp;&nbsp;  <input type=button value="Cancel" onClick="javascript:gotoo()">  </td></tr>';
	string+='</table>';

	document.getElementById('splashConfirm').innerHTML=string;
	document.getElementById('splashConfirm').style.visibility='visible';


}

//=============================================================================================
/*
*  Apres consultation d une requete deja soumise, suppression d une requete
*  par appel AJAX a removeRequest.php
*/

function RemoveRequest() {

    var flag_modify=0;
    var xhr=null;
    
    if (window.XMLHttpRequest) { 
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) 
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    //on définit l'appel de la fonction au retour serveur
    xhr.onreadystatechange = function() { responseRemoved(xhr); };

    var target="http://"+server+"/"+version+"/removeRequest.php";

    xhr.open("POST", target, true);
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xhr.send("list_fileparam="+document.select.list_fileparam.value+"&request_id="+document.select.request_num.value+"&flag_modify="+flag_modify+"&version="+version);


}

//=============================================================================================
/*
*  retour AJAX de suppression d une requete - retour de removeRequest.php
*/

function responseRemoved(xhr)

{

    if (xhr.readyState==4) 
    	{

	var string='<table><tr><td><br></td></tr>';
	string+='<tr><td><pmess> All the deliveries associated to this request have been removed <br>';
	string+='</td></tr>';
	string+='</table>';

	document.getElementById('splashConfirm').innerHTML=string;
	document.getElementById('splashConfirm').style.visibility='visible';

	}
}

//=============================================================================================
/*
 * La fonction verifie la validite de la forme d une adresse mail
 *
*/

function validateEmail(addr,db) {

	if (addr == '') {
   		if (db) alert('email address is mandatory');
   		return false;
	}

	var invalidChars = '\/\'\\ ";:?!()[]\{\}^|';
	for (i=0; i<invalidChars.length; i++) {
   		if (addr.indexOf(invalidChars.charAt(i),0) > -1) {
      			alert('email address contains invalid characters');
      			return false;
   		}
	}

	for (i=0; i<addr.length; i++) {
   	if (addr.charCodeAt(i)>127) {
      		if (db) alert("email address contains non ascii characters.");
      		return false;
  		 }
	}

	var atPos = addr.indexOf('@',0);
	if (atPos == -1) {
   		if (db) alert('email address must contain an @');
   		return false;
	}
	if (atPos == 0) {
   		if (db) alert('email address must not start with @');
   		return false;
	}
	if (addr.indexOf('@', atPos + 1) > - 1) {
   		if (db) alert('email address must contain only one @');
   		return false;
	}
	if (addr.indexOf('.', atPos) == -1) {
   		if (db) alert('email address must contain a period in the domain name');
   		return false;
	}
	if (addr.indexOf('@.',0) != -1) {
   		if (db) alert('period must not immediately follow @ in email address');
   		return false;
	}
	if (addr.indexOf('.@',0) != -1){
   		if (db) alert('period must not immediately precede @ in email address');
   		return false;
	}
	if (addr.indexOf('..',0) != -1) {
   		if (db) alert('two periods .. must not be adjacent in email address');
   		return false;
	}

return true;
}



//=============================================================================================
/*
 * La fonction verifie la validite du formulaire
 *
*/


function validQuery(flag_remove)
{
 var i;
 var j;
 var la_zone=new Array();
 var east;
 var west;
 var north;
 var south;
 var moy;
 var res;
 var form;
 var param;
 var id_algo;
 var id_sensor;
 var datemin;
 var datemax;
 var list_param="";
 var list_day="";
 var list_freq="";
 var company="";

//alert("arrive ds validQuery");


if(checkForm()){



la_zone=cadre();
east=la_zone["east"];
west=la_zone["west"];
north=la_zone["north"];
south=la_zone["south"];

//verification de l'adresse mail

if(flag_remove==0)
{
	company=document.select.company.value; 

	var testmail=validateEmail(document.select.email.value,1);

	if(!testmail) return -1;
}


  for(i=0;i<document.select.sensor.length;i++){
  	if(document.select.sensor[i].checked)
		{		
		id_sensor=document.select.sensor[i].value; 		
		}
  }

  for(i=0;i<document.select.algo.length;i++){
  	if(document.select.algo[i].checked)
		{		
		id_algo=document.select.algo[i].value; 		
		}
  }

  i=0;
  while(i<document.select.nbres.value)
	{
  	if(document.select.resolution[i].checked)
		{		
		res=document.select.resolution[i].value; 		
		}
	i++;
	}

  i=0;
  j=0;
  for(i=0;i<document.select.parameter.length;i++)
	{
  	if(document.select.parameter[i].checked)
		{	
		if (j==0) list_param+=document.select.parameter[i].value;
		else  list_param+=","+document.select.parameter[i].value;
		j++;			
		}
	}

  i=0;
  j=0;
  while(i<document.select.nbfreq.value)
	{
  	if(document.select.frequency[i].checked)
		{	
		if (j==0) list_freq+=document.select.frequency[i].value;
		else  list_freq+=","+document.select.frequency[i].value;
		j++;			
		}
	i++;
	}

//alert("list_freq: "+list_freq);

 i=0;
  j=0;

  if(document.select.frequency[3].checked) //si on a selectionne custom
  {
  while(i<document.select.nbdays.value)
	{
  	if(document.select.day[i].checked)
		{	
		if (j==0) list_day+=document.select.day[i].value;
		else  list_day+=","+document.select.day[i].value;
		j++;			
		}
	i++;
	}
  }
  else
  {

   list_day+="0";
  }


  i=0;
  while(i<2/*document.select.nbformat.value*/)
	{
  	if(document.select.format[i].checked)
		{	
		form=document.select.format[i].value;

		}
	i++;
	}

  moy=document.select.average.value;


  datemin=document.select.datemin.value;
  datemax=document.select.datemax.value;
  if(flag_remove==0) { email=document.select.email.value; }

  

    var xhr=null;
    
    if (window.XMLHttpRequest) { 
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) 
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    //on définit l'appel de la fonction au retour serveur
    xhr.onreadystatechange = function() { responseValidQuery(xhr); };

    var target="http://"+server+"/"+version+"/submitQuery.php";

    xhr.open("POST", target, true);
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

//alert("res="+res+"&list_param="+list_param+"&list_freq="+list_freq+"&list_day="+list_day+"&form="+form+"&moy="+moy+"&north="+north+"&south="+south+"&east="+east+"&west="+west+"&datemin="+datemin+"&datemax="+datemax+"&email="+email+"&company="+company+"&flag_remove="+flag_remove+"&request_id="+document.select.request_num.value+"&version="+version);


if(flag_remove==0)
{

    xhr.send("res="+res+"&id_sensor="+id_sensor+"&id_algo="+id_algo+"&list_param="+list_param+"&list_freq="+list_freq+"&list_day="+list_day+"&form="+form+"&moy="+moy+"&north="+north+"&south="+south+"&east="+east+"&west="+west+"&datemin="+datemin+"&datemax="+datemax+"&email="+email+"&company="+company+"&flag_remove="+flag_remove+"&request_id="+document.select.request_num.value+"&version="+version);
}
else
{

    xhr.send("res="+res+"&id_sensor="+id_sensor+"&id_algo="+id_algo+"&list_param="+list_param+"&list_freq="+list_freq+"&list_day="+list_day+"&form="+form+"&moy="+moy+"&north="+north+"&south="+south+"&east="+east+"&west="+west+"&datemin="+datemin+"&datemax="+datemax+"&flag_remove="+flag_remove+"&request_id="+document.select.request_num.value+"&version="+version);
}


} //fin de if(checkForm())



}

//=============================================================================================
/*  
*   retour AJAX de submitQuery.php
*/
function responseValidQuery(xhr)

{

    if (xhr.readyState==4) 
    	{
	//alert("responseValidQuery: retour d AJAX");

	var string='<table><tr><td><br><br></td></tr>';
	string+='<tr><td><pmess> Your query has been submitted.<br><br>Click <a href="http://hermes.acri.fr/'+version+'/index.php"> HERE </a> to come back to the interface.</pmess></td></tr>';

	string+='</table>';

	document.getElementById('splashConfirm').innerHTML=string;
	document.getElementById('splashConfirm').style.visibility='visible';

 	}
}


//=============================================================================================
/*  Fonction checkAllParams
*   qui coche/décoche toutes les cases "parameter"
*/
function checkAllParams(){
	var i=0;
	while(document.select.parameter[i]){
		document.select.parameter[i].checked=document.select.parameterAll.checked;
		i++;
	}
}


//=============================================================================================
/* Fonction checkForm
*  qui verifie la validité du formulaire
*/
function checkForm(){

	//on verifie les parametres du formulaire
	var error=0;

	//verification des coordonnees

	var coord;

	coord=document.select.north.value;
	//la coordonnee commence "^" par 1 ou 2 "{1,2}" chiffres "[0-9]" suivi de "°" et finit "$" par S ou N "[SN]"
	Expression=new RegExp("^[0-9]{1,2}°[SN]$");
	if(!Expression.test(coord)) 
	{
		alert("problem of syntax on the north coordinate. Must be X°N or X°S with 1<X<90");
		return(0);
	}

	coord=document.select.south.value;
	Expression=new RegExp("^[0-9]{1,2}°[SN]$");
	if(!Expression.test(coord)) 
	{
		alert("problem of syntax on the south coordinate. Must be X°N or X°S with 1<X<90");
		return(0);
	}

	coord=document.select.east.value;
	Expression=new RegExp("^[0-9]{1,3}°[EW]$");
	if(!Expression.test(coord)) 
	{
		alert("problem of syntax on the east coordinate. Must be X°E or X°W with 1<X<180");
		return(0);
	}

	coord=document.select.west.value;
	Expression=new RegExp("^[0-9]{1,3}°[EW]$");
	if(!Expression.test(coord)) 
	{
		alert("problem of syntax on the west coordinate. Must be X°E or X°W with 1<X<180");
		return(0);
	}


	//verification de l'ordre des coordonnees

	var elem;
	var y1;
	var y2;
	var x1;
	var x2;

	elem=document.select.north.value.split('°');
    	if(elem[1]=='S') y2=-parseInt(elem[0]);
    	else y2=parseInt(elem[0]);
    	elem=document.select.south.value.split('°');
    	if(elem[1]=='S') y1=-parseInt(elem[0]);
    	else y1=parseInt(elem[0]);
    	elem=document.select.west.value.split('°');
    	if(elem[1]=='W') x1=-parseInt(elem[0]);
    	else x1=parseInt(elem[0]);
    	elem=document.select.east.value.split('°');
    	if(elem[1]=='W') x2=-parseInt(elem[0]);
    	else x2=parseInt(elem[0]);

	if(y2<=y1) 
	{
		alert("south:"+y1+" > or = north:"+y2+" !");
		return(0);
	}

	if(x2<=x1) 
	{
		alert("west:"+x1+" > or = east:"+x2+" !");
		return(0);
	}


	//verification de l etendu de la zone
	//1km : 10x10 deg
	//4km : 40x40 deg

	var res_chosen;

	surface=(y2-y1)*(x2-x1);

	for(i=0;i<document.select.nbres.value;i++)
	{
  		if(document.select.resolution[i].checked)
		{
      			res_chosen=document.select.resolution[i].value;
  		}
	}


	if(res_chosen==1){
		if(surface > 100){
			alert("area ~ "+surface+" deg2\n area too big for the resolution "+res_chosen+" km\n max. equivalent to 10x10 deg ");
			return(0);
		}
	}	

	if(res_chosen==4){
		if(surface > 1600){
			alert("area ~ "+surface+" deg2\n area too big for the resolution "+res_chosen+" km\n max. equivalent to 40x40 deg ");
			return(0);
		}
	}


	//verification des dates
	var date1=document.select.datemin.value.split('/');
	var date2=document.select.datemax.value.split('/');
	if(isNaN(parseInt(date1[0]))||isNaN(parseInt(date1[1]))||isNaN(parseInt(date1[2]))) error+=1;
	if(parseInt(date1[1])>12) error+=1;
	if(parseInt(date1[0])>DaysInMonth[parseInt(date2[1])-1]) error+=1;
	if(isNaN(parseInt(date2[0]))||isNaN(parseInt(date2[1]))||isNaN(parseInt(date2[2]))) error+=1;

	if(date2[0].length<2){
		alert('The format for the day must be: dd');
		return(0);	
	}

	if(date2[1].length<2){
		alert('The format for the month must be: mm');
		return(0);	
	}

	if(parseInt(date2[1])>12) error+=1;
	if(parseInt(date2[0])>DaysInMonth[parseInt(date2[1])-1]) error+=1;
	
	if (error>0){
		alert('Invalid date! \n\n(date format must be: dd/mm/yyyy)');
		return(0);
	}


	//verification de l'ordre chronologique dans la periode
	d1 = new Date(0);
	d1.setFullYear(date1[2],date1[1]-1,date1[0]);
	d2 = new Date(0);
	d2.setFullYear(date2[2],date2[1]-1,date2[0]);
	if(d1>d2) {
		   alert("Invalid chronological order in date or period (date_min > date_max)\n(date format must be: dd/mm/yyyy)");
		   return(0);
		   }
	  
	today=new Date;
	tdD=today.getDate();
	tdY=today.getFullYear();
	tdM=today.getMonth();

	period=document.select.limit_date.value;

	//rajout du nbr de jour de la periode
	tdDP=parseInt(tdD)+parseInt(period);

	d_limit=new Date(0);
	d_limit.setFullYear(tdY,tdM,tdDP);

	ddlim=d_limit.getDate(); if (ddlim<10) { ddlim='0'+ddlim; }
	mmlim=(d_limit.getMonth()+1); if (mmlim<10) { mmlim='0'+mmlim; }

	chainedate=ddlim+"/"+mmlim+"/"+d_limit.getFullYear();

	if(d2>d_limit) {

		alert("Problem for the End of delivery: period too long \n (max: "+period+" days => date: "+d_limit);
		document.select.datemax.value=chainedate;
		return(0);

	}

	//verification des "parameter"
	var i=0;
	var j=0;

	for(i=0;i<document.select.parameter.length;i++){

		if(document.select.parameter[i].checked){j++;}
	}
	if(j==0) {
		alert('Choose at least one parameter!');
		return(0);
	}

	//verification des "resolution"
	i=0;
	j=0;
	
		if(document.select.nbres.value>1){
			while(i<document.select.nbres.value){
				if(document.select.resolution[i].checked){
					j++;
				}
				i++;
			}
		}else if((document.select.nbres.value==1)&&(document.select.resolution.checked)) j++;
		if(j==0) {
			alert('Choose at least one resolution!');
			return(0);
		}
	

	//verification des "frequences"
	i=0;
	j=0;
	var flag_daily=0;
	
		if(document.select.nbfreq.value>1){
			while(i<document.select.nbfreq.value){
				if(document.select.frequency[i].checked){
					// si frequence daily
					if(document.select.frequency[i].value==0) {flag_daily=1;}
					j++;
				}
				i++;
			}
		}else if((document.select.nbfreq.value==1)&&(document.select.frequency.checked)) j++;
		if(j==0) {
			alert('Choose at least one frequency!');
			return(0);
		}

	i=0;
	j=0;
	if(flag_daily==1)
	{
		if(document.select.nbdays.value>1){ 
			while(i<document.select.nbdays.value){
				if(document.select.day[i].checked){
					j++; 
				}
				i++;
			}
		}else if((document.select.day.value==1)&&(document.select.day.checked)) j++;
		if(j==0) {
			alert('Choose at least one day');
			return(0);
		}	



	}
	
	return(1);
}

//=============================================================================================
/*
* fonction gère l affichage des options pour le cas frequency: custom
*/
function plot_days(){
	//reset_coords();
	var i=0;
	if(document.select.frequency[4].checked)
	{ 
		document.getElementById('listsite').style.visibility='visible';
	}
	else
	document.getElementById('listsite').style.visibility='hidden';
}


//=============================================================================================
/* Fonction globCheck
*  qui gere l'affichage en fonction de la selection FPS ou DDS
*/
function globCheck(){
	//reset_coords();
	var i=0;
	if(document.select.global[1].checked){/*DDS checked*/
		ch=true; 
		document.getElementById('listsite').style.visibility='visible';
		document.getElementById('square').style.backgroundImage="url('Worldmap_dds.jpg')";
		
		document.select.bp[0].checked=true;
		document.select.bp[1].checked=false;
		document.select.bp[2].checked=false;
		document.select.bp[3].checked=false;

		document.select.bp[0].disabled=false;
		document.select.bp[1].disabled=false;
		document.select.bp[2].disabled=true;
		document.select.bp[3].disabled=true;

		document.select.resolution[0].disabled=false;
		document.select.resolution[2].disabled=true;
		document.select.resolution[3].disabled=true;

		document.select.resolution[0].checked=true;
		document.select.resolution[1].checked=false;
		document.select.resolution[2].checked=false;
		document.select.resolution[3].checked=false;

		document.select.north.value="33°N";
		document.select.south.value="1°N";
		document.select.east.value="6°W";
		document.select.west.value="42°W";
		updateSquare();
	}else {/*FPS checked*/
		ch=false;
		document.getElementById('listsite').style.visibility='hidden';
		document.getElementById('square').style.backgroundImage="url('Worldmap.jpg')";
		document.select.bp[0].disabled=true;
		document.select.bp[1].disabled=false;
		document.select.bp[2].disabled=false;
		document.select.bp[3].disabled=false;
		
		document.select.bp[0].checked=false;
		document.select.bp[1].checked=false;
		document.select.bp[2].checked=false;
		document.select.bp[3].checked=true;

		document.select.resolution[0].disabled=true;
		document.select.resolution[1].disabled=false;
		document.select.resolution[2].disabled=false;
		document.select.resolution[3].disabled=false;

		document.select.resolution[0].checked=false;
		document.select.resolution[1].checked=true;
		document.select.resolution[2].checked=false;
		document.select.resolution[3].checked=false;

		document.select.north.value="90°N";
		document.select.south.value="90°S";
		document.select.east.value="180°E";
		document.select.west.value="180°W";
		updateSquare();
	}


	while(document.select.parameter[i]){
		document.select.parameter[i].disabled=ch;
		i++;
	}
	i=0;
	//while(document.select.resolution[i]){
	//	document.select.resolution[i].disabled=ch;
	//	i++;
	//}
}


//=============================================================================================
/*  Fonction check_reset
*   qui verifie la concordance des champs du formulaire apres un reset
*/
function check_reset()
{
	var i=0;
	//document.getElementById('listsite').innerHTML='<table><tr><td><b>Selected DDS list</b><br><font style="text-align:left;"><hr></td></tr><tr><td style="text-align: left;">No selected DDS<input type=hidden name=nbsite value=0></td></tr></table>';
/*
	if(document.select.global[0].checked){
		ch=false;
		document.getElementById('listsite').style.visibility='hidden';
		document.getElementById('square').style.backgroundImage="url('Worldmap.jpg')";
		
	}else{
		ch=true;
		document.getElementById('listsite').style.visibility='visible';
		document.getElementById('square').style.backgroundImage="url('Worldmap_dds.jpg')";
	}
*/
	plot_days();


}

//=============================================================================================

function principale_URL()
{

	window.location.replace("http://hermes.acri.fr/"+version+"/index.php");

}

//=============================================================================================








