//=============================================================================================
//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 annÃ©e non bissectile, utilisé pour le controle des params date
var server=top.location.host;

var version="GlobColour/";

//=============================================================================================
/*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;
	}
	
	if(state==10){//Aucun clic sur la carte
		x1=mouseX-332;
		y1=mouseY-100;
		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";
//		document.select.north.value=north;
//		document.select.west.value=west;
	}
	
	if(state==0){//clic sur la carte
		x1=mouseX-332;
		y1=mouseY-100;
	}
	if(state==1){//relaché du clic
		x2=mouseX-332;
		y2=mouseY-100;
	
		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();
	}
	
	 
 }
 
 
 
 //=============================================================================================
 // 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);
 }
 
 
//=============================================================================================
 //la fonction calcule le rapport entre la surface de la Terre supposée sphérique et la surface
 //de la zone sélectionnée dans le formulaire
 //MODIF janv2008: ajout de la fonction

 function f_ratio(){
 
 var la_zone=new Array();
 var surfzone;
 var rapport=1;
 var R=6365000;
 var surfearth=4*Math.PI*R*R;
 var lon2;
 var lon1;
 var lat2;
 var lat1;
 
 //si le produit est de type FPS
 if(document.select.global[0].checked){
	la_zone=cadre();
	lon2=la_zone["east"];
	lon1=la_zone["west"];
	lat2=la_zone["north"];
	lat1=la_zone["south"];
 
	surfzone=R*R*(degtorad(lon2)-degtorad(lon1))*(Math.sin(degtorad(lat2))-Math.sin(degtorad(lat1)));
	rapport=surfearth/surfzone;
	}
	
 return (rapport);
 }
 
 
 //=============================================================================================
 /* Fonction btnSearch
 *  Fonction qui gère l'appui sur le bouton Search
 */
 function btnSearch(){
 
 
	if(checkForm()){
		
		//alert('le rapport est de: '+f_ratio());
		buildQuery();
	}
  
 }
 
 
 
 //=============================================================================================
// Fonctions AJAX pour gérer la liste des sites
/* Fonction listSite
*  génère dynamiquement la liste des sites selectionnnés (en appelant la page list_site.php)
*/
 function listSite()
{
    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() { alert_listSite(xhr); };

    
    //on appelle le fichier reponse.txt
    var elem=document.select.north.value.split('°');
    var str="http://"+server+"/"+version+"list_site.php";
    if(elem[1]=='S') str+="?north=-"+parseInt(elem[0]);
    else str+="?north="+parseInt(elem[0]);
    elem=document.select.south.value.split('°');
    if(elem[1]=='S') str+="&south=-"+parseInt(elem[0]);
    else str+="&south="+parseInt(elem[0]);
    elem=document.select.west.value.split('°');
    if(elem[1]=='W') str+="&west=-"+parseInt(elem[0]);
    else str+="&west="+parseInt(elem[0]);
    elem=document.select.east.value.split('°');
    if(elem[1]=='W') str+="&east=-"+parseInt(elem[0]);
    else str+="&east="+parseInt(elem[0]);
    xhr.open("GET", str, true);
    xhr.send(null);
}


//=============================================================================================
/* Fonction alert_listSite
*  qui affiche le resultat de la fonction ajax (affiche la liste des sites)
*/
function alert_listSite(xhr)
{
    if (xhr.readyState==4) 
    {
	var str='<table><tr><td><b>Selected DDS list</b><br><font style="text-align:left;"><input type=checkbox name=siteAll onClick="javascript:checkAllSite();" checked>Check/Uncheck All</font><hr></td></tr><tr><td style="text-align: left;">';
    	var docXML= xhr.responseXML;
    	var id = docXML.getElementsByTagName("id");
	var name = docXML.getElementsByTagName("name");
    	//on fait juste une boucle sur chaque element "site" trouvé
	str+='<input type=hidden name=nbsite value='+id.length+'>';

    	for (i=0;i<id.length;i++)
    	{
		str+='<input type=checkbox name=site value="'+id.item(i).firstChild.data+'" checked>'+name.item(i).firstChild.data+'<br>';
    	}
	str+='</td></tr></table>';
	document.getElementById('listsite').innerHTML=str;
    }
}


//=============================================================================================
/*  Fonction buildQuery
*   qui construit la requete de recherche en fonction des parametres entrés
*/
function buildQuery(){

	var query='select distinct(P.ID),P.name,P.size from globcolour.product P';
	
	
	var j=0;
	var i=0;

	
	if(document.select.global[1].checked){ //DDS search
		if(document.select.nbsite.value>1){
			query+=' where (';
			while(i<document.select.nbsite.value){
				if(document.select.site[i].checked){
					if(j!=0) query+='or ';
					query+='P.site='+document.select.site[i].value+' ';
					j++;
				}
				i++;
			}
			query+=') ';
		}else if(document.select.nbsite.value==1) query+=' where P.site='+document.select.site.value+' ';
	}
	else{//FPS search
		query+=', globcolour.product_x_parameter PXP ';
		query+='where PXP.product=P.id ';
		query+='and P.site=0 ';
		
		j=0;
		i=0;
		if(document.select.nbparam.value>1){
			query+='and (';
			while(i<document.select.nbparam.value){
				if(document.select.parameter[i].checked){
					if(j!=0) query+='or ';
					query+='PXP.parameter='+document.select.parameter[i].value+' ';
					j++;
				}
				i++;
			}
			query+=') ';
		}else if(document.select.nbparam.value==1) query+='and PXP.parameter='+document.select.parameter.value+' ';
		
		i=0;
		j=0;
		if(document.select.nbres.value>1){
			query+='and (';
			while(i<document.select.nbres.value){
				if(document.select.resolution[i].checked){
					if(j!=0) query+='or ';
					query+='P.resolution='+document.select.resolution[i].value+' ';
					j++;
				}
				i++;
			}
			query+=') ';
		}else if(document.select.nbres.value==1) query+='and P.resolution='+document.select.resolution.value+' ';
	}
	
	i=0;
	j=0;
	if(document.select.nbbp.value>1){
		query+='and (';
		while(i<document.select.nbbp.value){
			if(document.select.bp[i].checked){
				if(j!=0) query+='or ';
				query+='P.binningperiod='+document.select.bp[i].value+' ';
				j++;
			}
			i++;
		}
		query+=') ';
	}else if(document.select.nbbp.value==1) query+='and P.binningperiod='+document.select.bp.value+' ';
	

	query+='and P.format=\'nc\' ';

	
	query+='and P.mindate<=\''+document.select.datemax.value+'\' and P.maxdate>=\''+document.select.datemin.value+'\'';

	query+='ORDER BY P.name;';

	//document.getElementById("listsite").style.background-color='red';
	document.getElementById("listsite").className='listsiteleft';
	execQuery(query);	
}



//=============================================================================================
/* Fonction execQuery
*  qui lance l'execution de la requete 
*/
 function execQuery(query)
{
    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() { responseQuery(xhr); };

    document.getElementById("list").innerHTML="<i>Searching...Please wait</i>";
    document.getElementById('list').style.visibility='visible';
    //on appelle le fichier reponse.txt

    var str="http://"+server+"/"+version+"execSearch.php";
    //alert('str:'+str);

    xhr.open("POST", str, true);
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xhr.send("query="+query);

}


//=============================================================================================
/* Fonction responseQuery
*  qui affiche le resultat de la fonction ajax (affiche la liste des produits selectionnes)
*/
function responseQuery(xhr)
{
    if (xhr.readyState==4) 
    {

	var str2='';
    	var docXML= xhr.responseXML;
    	var id = docXML.getElementsByTagName("id");
	var name = docXML.getElementsByTagName("name");
	var size = docXML.getElementsByTagName("size");

	//si un seul produit est recupere, pas de checkall possible
	if(id.length==1)
	{
	var str='<table><tr><td>Selected product&nbsp&nbsp&nbsp&nbsp&nbsp</td></tr><tr><td style="text-align": justify;>';
	}
	else
	{
	var str='<table><tr><td><bw>Selected products list</bw>&nbsp&nbsp&nbsp&nbsp&nbsp<tw><input type=checkbox name=prodAll onClick="javascript:checkAllProd();" checked>Check/Uncheck All<hr></td></tr><tr><td style="text-align": justify;></tw>';
	}

    	//on fait juste une boucle sur chaque element "site" trouvé
	str2+='<table><tr><td style="width: 100%;text-align:left"><input type=hidden name=nbproducts value='+id.length+'>';
	str2+='&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
	str2+='&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>';
	
	//MODIF janv2008: la taille du fichier tient compte de la zone selectionnee .../f_ratio()
	for (i=0;i<id.length;i++)
    	{
		if (i==0) 
		{	str2+='<input type=checkbox name=product value="'+id.item(i).firstChild.data+'" checked>'+name.item(i).firstChild.data+' &nbsp;&nbsp;&nbsp;# '+(i+1)+'<input type=hidden name="prodsize" value="'+Math.round(size.item(i).firstChild.data/f_ratio())+'" ><input type=hidden name="prodname" value="'+name.item(i).firstChild.data+'"><br>';
			//pour palier au dysfonctionnement losqu un seul produit sort, on double le checkbox
			if(id.length==1)
			   {
str2+='<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>';
str2+='<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>';
str2+='<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>';
str2+='<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>';
str2+='<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>';
str2+='<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>';
				
				str2+='<input type=checkbox name=product value="'+id.item(i).firstChild.data+'" >'+name.item(i).firstChild.data+'<input type=hidden name="prodsize" value="'+Math.round(size.item(i).firstChild.data/f_ratio())+'">';
			    }
		}
		else
		{	str2+='<input type=checkbox name=product value="'+id.item(i).firstChild.data+'" checked>'+name.item(i).firstChild.data+' &nbsp;&nbsp;&nbsp;# '+(i+1)+'<input type=hidden name="prodsize" value="'+Math.round(size.item(i).firstChild.data/f_ratio())+'"><input type=hidden name="prodname" value="'+name.item(i).firstChild.data+'"><br>';
		}
		
	}
	str+='</td></tr></table>';
	str2+='</td></tr></table>';

//alert('str2_list: '+str2);

	document.getElementById('list').innerHTML=str2;
	document.getElementById('list').style.visibility='visible';
	document.getElementById('list_header').innerHTML=str;
	document.getElementById('list_header').style.visibility='visible';
//	str='<input type=button value="Order Products" onClick="javascript:splashUser()">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=button value="New search" onClick="btnSearch();">';

if(document.select.global[1].checked){ //DDS search - no visualize

	str='<input type=button value="Order Products" onClick="javascript:splashUser()">&nbsp;&nbsp;&nbsp;<input type=button value="New search" onClick="btnSearch();">&nbsp;&nbsp;&nbsp;<input type=button accesskey="w" value="Download list" onClick="getList()">&nbsp;&nbsp;&nbsp;<input type=button accesskey="u" value="Upload a list" onClick="javascript:uploadList();">';
	}

else{ //FPS case

	str='<input type=button value="Order Products" onClick="javascript:splashUser()">&nbsp;&nbsp;&nbsp;<input type=button value="New search" onClick="btnSearch();">&nbsp;&nbsp;&nbsp;<input type=button value="Visualize" onClick="javascript:splashUser2()">&nbsp;&nbsp;&nbsp;<input type=button accesskey="w" value="Download list" onClick="getList()">&nbsp;&nbsp;&nbsp;<input type=button accesskey="u" value="Upload a list" onClick="javascript:uploadList();">';
	}
		document.getElementById("bottombar").innerHTML=str;
    }
}

//=============================================================================================
/* Fonction splashUser2
*  qui affiche la boite de dialogue "enter email address"
*/
function splashUser2(){
	var i=0;
	var j=0;
	var str='';

	var strnumsession='';
	strnumsession=document.select.numsession.value;


	//on verifie si au moins un produit est coché
	if(document.select.product){
		while(document.select.product[i]){
			if(document.select.product[i].checked){
				if(j==0) {str+=document.select.product[i].value;}
				else {str+=','+document.select.product[i].value;}
				j++;
			}
			i++;
		}
	}
	if(j==0){
		alert('Select products to order');
		return 0;
	}

// teste si le nbr de quicklook demandes n est pas trop important
// car les quicklooks sont deplaces du disque archive sur /www/.../tmp

	if(j>512){
		alert('Too much products selected to visualize (max:512)');
		return 0;
	}
	else{
		var str2='<br><table><tr><td><img src="Image/terreglob_little_mess.gif" align="left"><br><br></td></tr>';
		str2+='<tr><td><pmess><br>You have ordered <b>'+j+' images(s).</b><br><br>';
		str2+='Hermes is going to transfer the images to the interface.<br><br>';
		str2+='Please, click on the following link to start the process:<br><br>';
		str2+="<a href=\"prepare_visu.php?idprod="+str+"&numsession="+strnumsession+"&version="+version+"\">ACCESS the IMAGES</a>";
		str2+='</pmess></td></tr></table>';
		document.getElementById('splashConfirm').innerHTML=str2;
		document.getElementById('splashConfirm').style.visibility='visible';
	}
}

//=============================================================================================
/*  Fonction getList
*   qui construit la liste des produits affiches dans liste
*/

function getList(){

var i=0;
var str='';
var strnumsession='';

	while(document.select.prodname[i]){
		str+=document.select.prodname[i].value+'\n';
		i++;
	}

strnumsession=document.select.numsession.value;

formList(str,strnumsession);
}

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

function formList(strprod,strnumsession){


//alert(strprod);
    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() { responseListprod(xhr); };

    //document.getElementById("list").innerHTML="<i>Searching...Please wait</i>";
    //document.getElementById('list').style.visibility='visible';
    //on appelle le fichier reponse.txt

    var target="http://"+server+"/"+version+"creerList.php";

    xhr.open("POST", target, true);
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xhr.send("strprod="+strprod+"&numsession="+strnumsession+"&version="+version);

}

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

function responseListprod(xhr){

    if (xhr.readyState==4) 
    	{
	//alert("responselistProd: retour d AJAX");

    	var docXML= xhr.responseXML;
    	var nom=docXML.getElementsByTagName("nom");	
	
	var repfichier=nom.item(0).firstChild.data
	//alert("nom_fichier= "+repfichier);

	//creer un lien vers le fichier cree

	var string='<table><tr><td><br><br><br></td></tr>';
	string+='<tr><td><pmess><A HREF="'+repfichier+'"><b>Download file</b></A> </pmess></td></tr>';
	string+='</table>';

	document.getElementById('splashConfirm').innerHTML=string;
	document.getElementById('splashConfirm').style.visibility='visible';

 	}
}


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


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


//=============================================================================================
/*  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 coordonnees de la zone

	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 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(parseInt(date2[1])>12) error+=1;
	if(parseInt(date2[0])>DaysInMonth[parseInt(date2[1])-1]) error+=1;
	
	if (error>0){
		alert('Invalid date!');
		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)");
		   return(0);
		   }
	  
	//verification des "parameter"
	var i=0;
	var j=0;
	if(document.select.global[0].checked){//FPS
		if(document.select.nbparam.value>1){
			while(i<document.select.nbparam.value){
				if(document.select.parameter[i].checked){
					j++;
				}
				i++;
			}
		}else if((document.select.nbparam.value==1)&&(document.select.parameter.checked)) j++;
		if(j==0) {
			alert('Choose at least one parameter!');
			return(0);
		}
	}
	
	//verification des "binning period"
	i=0;
	j=0;
	if(document.select.nbbp.value>1){
		while(i<document.select.nbbp.value){
			if(document.select.bp[i].checked){
				j++;
			}
			i++;
		}
	}else if((document.select.nbbp.value==1)&&(document.select.bp.checked)) j++;
	if(j==0) {
		alert('Choose at least one binning period!');
		return(0);
	}
	
	//verification des "resolution"
	i=0;
	j=0;
	if(document.select.global[0].checked){//FPS
		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 sites
	if(document.select.global[1].checked){//DDS
		i=0;
		j=0;

		if(parseInt(document.select.nbsite)==0) {
			alert('Choose at least one site or check FPS');
			return(0);
		}
		else{
			if(document.select.nbsite.value>1){
				while(i<document.select.nbsite.value){
					if(document.select.site[i].checked){
						j++;
					}
					i++;
				}
			}
			else if((document.select.nbsite.value==1)&&(document.select.site.checked)) j++;
		}
		if(j==0) {
			alert('Choose at least one site or check FPS!');
			return(0);
		}
	}
	return(1);
}


//=============================================================================================
/* 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 splashUser
*  qui affiche la boite de dialogue "enter email address"
*/
function splashUser(){
	var i=0;
	var j=0;
	var str='';

  if(checkForm()){

	//on verifie si au moins un produit est coché
	if(document.select.product){
		while(document.select.product[i]){
			if(document.select.product[i].checked){
				j++;
				str+=document.select.product[i].value+',';
			}
			i++;
		}
	}
	if(j==0){
		alert('Select products to order');
		return 0;
	}
	var string='<br><table><tr><td><img src="Image/terreglob_little_mess.gif" align="left"><br><br></td></tr><tr><td><pmess><br>You have ordered <b>'+j+' product(s).</b><br><br>An email will be sent to you in order to confirm your order.<br> You will find the instructions for confirmation in the email <br><br>Please, enter your email address:&nbsp;&nbsp;&nbsp;<input type=textbox value="" name="email"><br><br> <br><input type=button value="Send address" onClick="javascript:order()"><br><br>If you want to stop the order and go back for a new request, refresh this page.</pmess></td></tr></table>';
	document.getElementById('splashConfirm').innerHTML=string;
	document.getElementById('splashConfirm').style.visibility='visible';
	
  }
}


//=============================================================================================
/* Fonction order
*  qui construit la liste des produits a commander et qui l'envoi au fichier confirm.php
*/
function order(){
	var i=0;
	var str='';
	var error=0;

//modif janv2008
	var flagFPS=0;
 	var lon2=180;
 	var lon1=-180;
 	var lat2=90;
 	var lat1=-90;
 	var la_zone=new Array();

 //si le produit est de type FPS alors une zone peut etre selectionnee
 if(document.select.global[0].checked){
	la_zone=cadre();
	lon2=la_zone["east"];
	lon1=la_zone["west"];
	lat2=la_zone["north"];
	lat1=la_zone["south"];
	//si la selection n'est pas toute la terre...il faudra faire une extraction
	if( !((lon2==180) && (lon1==-180) && (lat2==90) && (lat1==-90)) ){
		flagFPS=1;
	}
 }

	//on verifie la validité de l'adresse email
	if(document.select.email.value){
		var mail=document.select.email.value.split('@');
		if((!mail[0])||(!mail[1])) error=1;
		else {
			var mail2=mail[1].split('.');
			if((!mail2[0])||(!mail2[1])) error=1;
		}
	}else error=1;
	if(error==1){
		alert("Invalid email address");
		return -1;
	}

//alert('passe');

	//on construit la liste des produits et leur taille
	//remarque: la taille du fichier tient compte du ratio eventuel introduit dans ResponseQuery() - cas FPS one extraite
	if(document.select.product){
		while(document.select.product[i]){
			if(document.select.product[i].checked){
				if(str=='') str=document.select.product[i].value+','+document.select.prodsize[i].value;
				else str+=';'+document.select.product[i].value+','+document.select.prodsize[i].value;
			}
			i++;
		}
	}
	
	
//alert('liste constituee par order: '+str);
	
	
	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() { responseOrder(xhr); };

	var target="http://"+server+"/"+version+"confirm.php";
	//alert('str:'+str);

	xhr.open("POST", target, true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.send("list="+str+"&type=1&email="+document.select.email.value+"&est="+lon2+"&ouest="+lon1+"&nord="+lat2+"&sud="+lat1+"&flagFPS="+flagFPS+"&version="+version);
	
	var string="<pmess><br><br><br>Sending confirmation email and storing your order...please wait...<br><br>This can take a lot of time depending of the number of products ordered</pmess>";
	document.getElementById('splashConfirm').innerHTML=string;
	//alert('str'+str);	

}


//=============================================================================================
/*  Fonction responseOrder
*   qui informe de l'enregistrement de la commande
*/
function responseOrder(xhr)
{
    if (xhr.readyState==4) 
    {
	document.getElementById('splashConfirm').innerHTML="<br><img src=\"Image/terreglob_little_mess.gif\" align=\"left\"><br><pmess><br><br>Email sent.<br><br>See instructions in this email to confirm your order<br><br><br><input type=button value=\"Close\" onClick=\"javascript:history.go(0);\"></pmess>";
	}
}


//=============================================================================================
/*  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){//FPS
		ch=false;
		document.getElementById('listsite').style.visibility='hidden';
		document.getElementById('square').style.backgroundImage="url('Worldmap.jpg')";
		
	}else{//DDS
		ch=true;
		document.getElementById('listsite').style.visibility='visible';
		document.getElementById('square').style.backgroundImage="url('Worldmap_dds.jpg')";
	}
	//while(document.select.resolution[i]){
	//	document.select.resolution[i].disabled=ch;
	//	i++;
	//}
}

//=============================================================================================
function jsUpload(upload_field)
{
    var re_text = /\.txt|\.asc|\.text/i;
    var filename = upload_field.value;
    if (filename.search(re_text) == -1)
    {
        alert("File does not have text(txt, asc, text) extension");
        upload_field.form.reset();
        return false;
    }
    upload_field.form.submit();
    upload_field.disabled = true;
    return true;
}
//=============================================================================================

function uploadList(){


	var string='<form method="post" enctype="multipart/form-data">';
	
	string+='<input type="hidden" name="upload" value="true">';
	string+='<label for="file"></label><br>';
	string+='<dd><input type="file" name="file" id="file" onChange="jsUpload(this)">';
	string+='</form>';

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


}
