﻿var Htab=16;
var T;
var voirvent=true;
var voirtemps=true;
var WINDS = new Array()
var Vmax=0;
var compteur=0

var _CouleurVent="#0066CC";
var _CouleurTemp="#8C4600";
var _CouleurTaf="#0000FF";
var _CouleurPression="#333333";
var Largeur=18;
var Hauteur=20;
var GVmin=0;
var GVmax=50;
var GTmin=-20;
var GTmax=35;
var GPmin=900;
var GPmax=1040;
var _LeGraphique;

function callcourbe(IDX)
{
	document.courbe.aeroport.value=IDX;
	tracecourbe()
}
function tracecourbe(Retour)
{
	if(Retour)
	{
	//0   1     2       3     4      5    6        TAF
	//"h",heure,secteur,noeud,rafale,temp,pression @ h,secteur,noeud
	if (RETOURHTML!="")
	{
		
		var RETOUR=RETOURHTML.split("@")
		var DATA=RETOUR[0].split(",")
		var TAF=RETOUR[1].split(",")
		var txtp=""
		var txtt=""
		var txtv=""
		var txtr=""
		var txttaf="";
		var LastHeure=0;
		if(DATA.length>5)
		{
		for(var i=0;i<DATA.length;i+=7)
		{
		txtp+=((txtp=="") ? '' : ',')+DATA[i+1]+','+DATA[i+6]
		txtt+=((txtt=="") ? '' : ',')+DATA[i+1]+','+DATA[i+5]
		txtv+=((txtv=="") ? '' : ',')+DATA[i+1]+','+DATA[i+3]+',"'+DATA[i+2]+'"'
		txtr+=((txtr=="") ? '' : ',')+DATA[i+1]+','+DATA[i+4]
		lastHeure=DATA[i+1]
		}
		if (RETOUR[1]!="")
			for(var i=0;i<TAF.length;i+=3)
				if (TAF[i]>lastHeure) txttaf+=((txttaf=="") ? '' : ',')+TAF[i]+','+TAF[i+2]+',"'+TAF[i+1]+'"'
		drawPression(txtp)
		drawTemp(txtt)
		drawRafale(txtr)
		drawVent(txtv)
		if (RETOUR[1]!="") drawTaf(txttaf)
		}
	}
	}
	else
	{
		makeGraphique("graphique","abscisse","ordonnee","ordonnee2")
		CallBackFunction="tracecourbe('<XMLHTTP>')"
		QueueXML("meteocarte.asp?action=updatecourbe&code="+document.courbe.aeroport.value+"&periode="+document.courbe.periode.value+"&random="+(Math.random()),CallBackFunction);
		return false;
	}

}

function tzoom(div)
{
	var reg=new RegExp("tablo", "g");
	id=div.id.replace(reg,"");
	zoom(document.getElementById(id))
}

function zoom(div)
{
	if (div)
	{
	i=document.getElementById("infos")
	document.getElementById("infotxt").innerHTML=div.txt
	i.style.top=(parseInt(div.style.top)-100)+"px"
	i.style.left=(parseInt(div.style.left)+30)+"px"
	i.style.display=""
	}
}
function unzoom(div)
{
	i=document.getElementById("infos")
	i.style.display="none"
}

function MakeSpot(ID,vent,temps,infos)
{
	S=document.getElementById(ID)
	if (S)
	{
		S.temps=temps
		S.style.backgroundImage=(voirtemps) ? ("url('"+temps+"')") : ("url('/images/blank.gif')")
		S.getElementsByTagName("img")[0].src=voirvent ? vent : "/images/blank.gif"
		S.txt=infos
		S.onclick=function(){callcourbe(this.id)}
		S.onmouseover=function(){zoom(this)}
		S.onmouseout=function(){unzoom(this)}
		img=S.getElementsByTagName("img")[0]
		img.style.width="48px"
		img.style.height= "48px"
	}
}

function swichtemps(img)
{
	voirtemps=!voirtemps
	img.src=voirtemps ? "/images/meteo/tempsko.jpg" : "/images/meteo/tempsok.jpg"
	redraw()
}

function swichvent(img)
{
	voirvent=!voirvent
	img.src=voirvent ? "/images/meteo/ventko.jpg" : "/images/meteo/ventok.jpg"
	redraw()
}

function redraw()
{
	for(i=0;i<WINDS.length;i++)
	{
		S=document.getElementById(WINDS[i].idx)
		if (S)
		{
		S.style.backgroundImage=(voirtemps) ? ("url('"+S.temps+"')") : ("url('/images/blank.gif')")
		S.getElementsByTagName("img")[0].style.display=(voirvent) ? "" : "none"
		}
	}
}

function MakeMeteo()
{
	if (compteur<=0)
	{
		compteur=5
		misajourcarte()
		tracecourbe()
	}
	compteur--
	setTimeout(MakeMeteo,60000)
}

function misajourcarte(Retour)
{	
	if(Retour)
	{
		WINDS = new Array()
		spots=RETOURHTML.split("<@@>")
		for(i=0;i<spots.length-1;i++)
		{
			spot=spots[i].split(",")
			WINDS.push({idx:spot[0],ville:spot[1],vent:spot[2],rafale:spot[3],secteur:spot[4],icovent:spot[5],icotemps:spot[6],ALT:spot[7]})
			MakeSpot(spot[0],spot[5],spot[6],spot[7])
		}
		if(WINDS.length>0)misajourtable()
	}
	else
	{
		CallBackFunction="misajourcarte('<XMLHTTP>')"
		QueueXML("meteocarte.asp?action=updatecarte&random="+(Math.random()),CallBackFunction);
	}
}

function tritablo()
{
	var nb=0;
	for(i=0;i<WINDS.length;i++)
	{
	P=document.getElementById("tablo"+WINDS[i].idx)
	Y=parseInt(P.style.top)
	Z=(i)*Htab
	
	if(Math.abs(Y-Z)>2)
		{P.style.top=parseInt((Y+Z)/2)+"px";nb++;if(P.className=="tablo") P.className="tabloon"}
	else
		{
		P.style.top=Z+"px"
		if(P.className=="tabloon") P.className="tablo"
		}
	}
	if (nb>0) setTimeout(tritablo,100) 
}

function triparvent(a, b) 
{
    var x = parseInt(a.vent);
    var y = parseInt(b.vent);
    return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}

function misajourtable(Retour)
{	
	{
		//affichage de la table
		//document.getElementById("tableau").innerHTML=RETOURHTML
		if(1==1)
		{
		WINDS.sort(triparvent);
		Vmax=WINDS[0].vent
		Vmax=(parseInt(Vmax/10)+1)*10
		for(i=0;i<WINDS.length;i++)
		{
			DIV=document.getElementById("tablo"+WINDS[i].idx)
			V=parseInt((WINDS[i].vent/Vmax)*250)
			if (DIV)
			{
			DIV.innerHTML='<span class="tablo" style="width:100px">'+WINDS[i].ville+'</span><span class="wind" style="width:'+V+'px;">&nbsp;</span>'
			DIV.title=WINDS[i].ville+ " "+WINDS[i].vent+" Nds secteur "+WINDS[i].secteur
			}
			else
			{
			DIV= document.createElement("DIV");
			DIV.style.position="absolute"
			DIV.style.top=(i*Htab)+"px"
			DIV.id="tablo"+WINDS[i].idx
			DIV.title=WINDS[i].ville+ " "+WINDS[i].vent+" Nds secteur "+WINDS[i].secteur
			DIV.style.width="100%";
			DIV.style.height="16px";
			DIV.style.zIndex=210+i;
			DIV.className="tablo"
			DIV.innerHTML='<span style="width:100px">'+WINDS[i].ville+'</span><span class="wind" style="width:'+V+'px;">&nbsp;</span>'
			DIV.onmouseover=function(){tzoom(this)}
			DIV.onmouseout=function(){unzoom(this)}
			DIV.style.cursor="pointer"
			document.getElementById("tableau").appendChild(DIV);
			}
		}

		setTimeout(tritablo,100);
		}
	}
}

//GRILLE

function makeGraphique(divid,divabs,divordo,divordo2)
{
	var grille=document.getElementById(divid);
	_LeGraphique=grille;
	
	do
	{var div=grille.firstChild;
	if (div)	grille.removeChild(div);}
	while (div)
	
	do
	{var div=document.getElementById(divabs).firstChild;
	if (div) document.getElementById(divabs).removeChild(div);}
	while (div)

	do
	{var div=document.getElementById(divordo).firstChild;
	if (div) document.getElementById(divordo).removeChild(div);}
	while (div)
	
	do
	{var div=document.getElementById(divordo2).firstChild;
	if (div) document.getElementById(divordo2).removeChild(div);}
	while (div)
	
	
	for(var i=0;i<20;i++)
	{
		var div = document.createElement("DIV");
		//div.id=(i==15 || i==10) ? "or" : "o";
		div.id="o";
		div.style.top=i*Hauteur+"px";
		div.style.left="0px";
		div.style.height=Hauteur+"px";
		grille.appendChild(div);
	}
	
	for(var i=0;i<=47;i++)
	{
		var div = document.createElement("DIV");
		
		div.id="h";
		div.style.left=i*Largeur+"px";
		grille.appendChild(div);
	}
	
	//Heures
	var grille=document.getElementById(divabs);
	for(var i=0;i<=47;i++)
	{
		var div = document.createElement("DIV");
		div.style.left=i*Largeur+"px";
		div.style.position="absolute"
		div.style.width=Largeur;
		div.innerHTML=(parseInt(i/2)==(i/2)) ? "<b>"+i/2+"</b>" : "<span>30</span>";
		grille.appendChild(div);
	}

	var grille=document.getElementById(divordo);
	for(var i=GVmin;i<=(GVmax);i++)
	{
		var div = document.createElement("DIV");
		div.style.position="absolute";
		div.id="y";
		div.style.top=400-i*(400/(GVmax-GVmin))+"px";
		div.style.left="0px";
		div.style.height=400/(GVmax-GVmin)+"px";
		div.innerHTML=i;
		grille.appendChild(div);
		i+=(2-1);
	}
	
	var grille=document.getElementById(divordo2);
	for(var i=GTmin;i<=(GTmax);i++)
	{
		var div = document.createElement("DIV");
		div.style.position="absolute";
		div.id="y";
		div.style.top=400-i*(400/(GTmax-GTmin))+((GTmin-1)/(GTmax-GTmin)*400)+"px";
		div.style.left="0px";
		div.style.height=400/(GTmax-GTmin)+"px";
		div.innerHTML=i;
		grille.appendChild(div);
		i+=(2-1);
	}
	
}

function drawVent(args)
{
	var Xpoints = new Array()
	var Ypoints = new Array()
	var Opoints = new Array()
	var V=args.split(",")
	var last=""
	var dessous=-1

	var cnv = document.getElementById("graphique");
	var jg = new jsGraphics(cnv);
	jg.setColor(_CouleurVent);
	jg.setStroke(3);
	jg.setFont("arial","10px",Font.BOLD); 
	
	for(var i=0;i<V.length;i++)
	{
		Xpoints.push((V[i]/100)*2*Largeur+Largeur/2)
		Ypoints.push(400-V[i+1]/50*400)
		Opoints.push(V[i+2])
		if(last!=V[i+1])
		{
		last=V[i+1]
		jg.drawString(last, (V[i]/100)*2*Largeur+Largeur/2-5, 400-(V[i+1]-GVmin)/(GVmax-GVmin)*400+dessous*20-5); 
		}
		i+=2;
	}

	eval("var Xpoints = new Array("+Xpoints.join()+")")
	eval("var Ypoints = new Array("+Ypoints.join()+")")
	eval("var Opoints = new Array("+Opoints.join()+")")
	
	jg.drawPolyline(Xpoints,Ypoints);
	jg.paint();
	
	for(i=0;i<Xpoints.length;i++)
	{
  		var _div = document.createElement("DIV");
 		//_img.onload=function(){checksize(this)}
 		_div.style.position="absolute"
 		_div.style.left=Xpoints[i]-12+"px"
 		_div.style.top=Ypoints[i]-12+"px"
 		_div.style.width="25px"
 		_div.style.height="25px"
 		_div.style.backgroundImage='url(../images/meteo/grille/vent'+Opoints[i]+'.png)';
  		_div.style.verticalAlign="middle";
  		_LeGraphique.appendChild(_div);
	}
}

function drawRafale(args)
{
	var Xpoints = new Array()
	var Ypoints = new Array()
	var Opoints = new Array()
	var V=args.split(",")
	var last=""
	var dessous=-1

	var cnv = document.getElementById("graphique");
	var jg = new jsGraphics(cnv);
	jg.setColor(_CouleurVent);
	jg.setStroke(3);
	jg.setFont("arial","10px",Font.BOLD); 
	
	for(var i=0;i<V.length;i++)
	{
		Xpoints.push((V[i]/100)*2*Largeur+Largeur/2)
		Ypoints.push(400-V[i+1]/50*400)
		//Opoints.push(V[i+2])
		if(last!=V[i+1])
		{
		last=V[i+1]
		jg.drawString(last, (V[i]/100)*2*Largeur+Largeur/2-5, 400-(V[i+1]-GVmin)/(GVmax-GVmin)*400+dessous*20-5); 
		}
		i+=1;
	}

	if (Xpoints.length>0)
	{
	eval("var Xpoints = new Array("+Xpoints.join()+")")
	eval("var Ypoints = new Array("+Ypoints.join()+")")
	//eval("var Opoints = new Array("+Opoints.join()+")")
	
	jg.drawPolyline(Xpoints,Ypoints);
	jg.paint();
	
	for(i=0;i<Xpoints.length;i++)
	{
  		var _div = document.createElement("DIV");
 		//_img.onload=function(){checksize(this)}
 		_div.style.position="absolute"
 		_div.style.left=Xpoints[i]-12+"px"
 		_div.style.top=Ypoints[i]-12+"px"
 		_div.style.width="25px"
 		_div.style.height="25px"
 		//_div.style.backgroundImage='url(../images/meteo/grille/vent'+Opoints[i]+'.png)';
  		_div.style.verticalAlign="middle";
  		_LeGraphique.appendChild(_div);
	}
	}
}
function drawTaf(args)
{
	var Xpoints = new Array()
	var Ypoints = new Array()
	var Opoints = new Array()
	var V=args.split(",")
	var dessous=1

	var cnv = document.getElementById("graphique");
	var jg = new jsGraphics(cnv);
	jg.setColor(_CouleurTaf);
	jg.setStroke(3);
	jg.setFont("arial","10px",Font.BOLD); 
	
	for(var i=0;i<V.length;i++)
	{
		if(i==0) jg.drawString("Evolution prévue", (V[i]/100)*2*Largeur+Largeur/2-10, 400-V[i+1]/50*400+20); 
		Xpoints.push((V[i]/100)*2*Largeur+Largeur/2)
		Ypoints.push(400-V[i+1]/50*400)
		Opoints.push(V[i+2])
		i+=2;
	}


	eval("var Xpoints = new Array("+Xpoints.join()+")")
	eval("var Ypoints = new Array("+Ypoints.join()+")")
	eval("var Opoints = new Array("+Opoints.join()+")")
	
	jg.drawPolyline(Xpoints,Ypoints);
	jg.paint();
	
	for(i=0;i<Xpoints.length;i++)
	{
  		var _div = document.createElement("DIV");
 		//_img.onload=function(){checksize(this)}
 		_div.style.position="absolute"
 		_div.style.left=Xpoints[i]-12+"px"
 		_div.style.top=Ypoints[i]-12+"px"
 		_div.style.width="25px"
 		_div.style.height="25px"
 		_div.style.backgroundImage='url(../images/meteo/grille/taf'+Opoints[i]+'.png)';
  		_div.style.verticalAlign="middle";
  		_LeGraphique.appendChild(_div);
	}
}


function drawTemp(args)
{
	var dessous=1;
	var last=""
	var Xpoints = new Array()
	var Ypoints = new Array()
	var V=args.split(",")
	var cnv = document.getElementById("graphique");
	var jg = new jsGraphics(cnv);
	jg.setColor(_CouleurTemp);
	jg.setFont("arial","10px",Font.BOLD); 
	
	for(var i=0;i<V.length;i++)
	{
		if(V[i+1]!="")
		{
		Xpoints.push((V[i]/100)*2*Largeur+Largeur/2)
		Ypoints.push(400-(V[i+1]-GTmin)/(GTmax-GTmin)*400)
		dessous*=-1
		if (last!=(V[i+1]+" °C"))
		{
		last=V[i+1]+" °C"
		jg.drawString(last, (V[i]/100)*2*Largeur+Largeur/2-10, 400-(V[i+1]-GTmin)/(GTmax-GTmin)*400+dessous*14-5); 
		}
		}
		i+=1;
	}

	jg.setStroke(3);

	if (Xpoints.length>0)
	{
	eval("var Xpoints = new Array("+Xpoints.join()+")")
	eval("var Ypoints = new Array("+Ypoints.join()+")")
	
	jg.drawPolyline(Xpoints,Ypoints);
	jg.paint();
	
	for(i=0;i<Xpoints.length;i++)
	{
  		var _div = document.createElement("DIV");
 		_div.style.position="absolute"
 		_div.style.left=Xpoints[i]-4+"px"
 		_div.style.top=Ypoints[i]-4+"px"
 		_div.style.width="10px"
 		_div.style.height="10px"
 		_div.style.backgroundImage='url(../images/meteo/grille/temperature.png)';
  		_div.style.verticalAlign="middle";
  		_LeGraphique.appendChild(_div);
	}
	}
}

function drawPression(args)
{
		

	var dessous=1;
	var last="";
	var Xpoints = new Array()
	var Ypoints = new Array()
	var V=args.split(",")
	var cnv = document.getElementById("graphique");
	var jg = new jsGraphics(cnv);
	jg.setColor(_CouleurPression);
	jg.setFont("arial","10px",Font.BOLD); 
	for(var i=0;i<V.length;i++)
	{
		if(V[i+1]!="")
		{
			Xpoints.push((V[i]/100)*2*Largeur+Largeur/2)
			Ypoints.push(400-(V[i+1]-GPmin)/(GPmax-GPmin)*400)
			dessous*=-1
			if (last!=(V[i+1]+" hpa"))
			{
				last=V[i+1]+" hpa"
				jg.drawString(last, (V[i]/100)*2*Largeur+Largeur/2-20, 400-(V[i+1]-GPmin)/(GPmax-GPmin)*400+dessous*14-5); 
			}
		}
		i+=1;
	}
	jg.setStroke(3);

	if (Xpoints.length>0)
	{
	eval("var Xpoints = new Array("+Xpoints.join()+")")
	eval("var Ypoints = new Array("+Ypoints.join()+")")
	
	jg.drawPolyline(Xpoints,Ypoints);
	jg.paint();
	
	
	for(i=0;i<Xpoints.length;i++)
	{
  		var _div = document.createElement("DIV");
 		_div.style.position="absolute"
 		_div.style.left=Xpoints[i]-4+"px"
 		_div.style.top=Ypoints[i]-4+"px"
 		_div.style.width="10px"
 		_div.style.height="10px"
 		_div.style.backgroundImage='url(../images/meteo/grille/pression.png)';
  		_div.style.verticalAlign="middle";
  		_LeGraphique.appendChild(_div);
	}
	}
}