var geo_init=false;
var nomicone="";
function getHorloge(){
	var obdi =$('georesultat').getDimensions();
	var HTML_horloge="<html xmlns='http://www.w3.org/1999/xhtml' lang='en' xml:lang='en'>\n"+
	"	<head>" +
	"	<title>Horloge Phxim</title>\n"+
	"	<script type='text/javascript' language='Javascript'>alert('L affichage de l horloge peut prendre un peu de temps, veuillez patienter un moment.');</script>\n"+
	"	</head>\n"+
	"	<frameset>\n"+
	"		<frame src='"+siteencours+"geo_webservice.php?Hwidth="+obdi.width+"&amp;Hheight="+obdi.height+"&amp;Hmargeleft=40&amp;Hmargetop=40&amp;Bblack=1' name='frame1'></frame>\n"+
	"	</frameset>\n"+
	"</html>\n";
	return HTML_horloge;	
}

var myrules = {
	
	'.geo_btn_information' : function(bouton_information){//btn pour afficher information de lhorloge
		bouton_information.onclick=function(){
			new Effect.Grow($('geo_information'),{
				direction:'top-left'
			});
		}
	},
	'#geo_btn_fermer' : function(btninfo){
		btninfo.onclick=function(){
			new Effect.Fade($('geo_information'),{
				direction:'top-left'
			});
		}
	},
	'.geo_btn_autresvilles':function(bouton_villes){//apres choix de la ville dans liste deroulante
		bouton_villes.onchange=function(){
			clearTimeout(nomicone);
			scrollTo(0,0);
			new Effect.Fade($('soleil'));
			new Effect.Fade($('lune'));
			new Effect.Fade($('nuage'));
			new Effect.Fade($('pluie'));
			new Effect.Fade($('neige'));
			new Effect.Fade($('eclair'));
			new Effect.Fade($('grele'));		
			new Effect.Fade($('geolocal_1_5'));
			new Effect.Fade($('geolocal_1_6'));
			new Effect.Fade($('geolocal_2'));
			new Effect.Fade($('geolocal_3'),{
				afterFinish:function(){
					$('stopattente1_4').style.backgroundImage = "url(media/image/commnun/attente_noir.gif)";
					$('stopattente1_5').style.backgroundImage = "url(media/image/commnun/attente_noir.gif)";
					$('stopattente1_6').style.backgroundImage = "url(media/image/commnun/attente_noir.gif)";
					$('stopattente2').style.backgroundImage = "url(media/image/commnun/attente_noir.gif)";
					$('stopattente3').style.backgroundImage = "url(media/image/commnun/attente_noir.gif)";
					var ville = $('autres');
					ville = '&villegeo='+ville.value;
					geo_testville(ville);
				}
			});	
			new Effect.Fade($('georesultat'));
			$('nomville').update();
		}
	},
		
	'.horloge' : function(btn_horloge){//demos geo code exp horloge
		btn_horloge.onclick=function(){
			//$('codeexport').update(getHorloge());
			$('codeexport').value = getHorloge();
			new Effect.Appear($('codehorloge'));
			new Effect.Fade($('horloge'));
		}
	},
	'.geo' : function(){
		if(!geo_init)
		{
			geo_init = true;
			lancementgeo();
		}
	}
};

function lancementgeo(){//tache maxmind : ip-ville
	if($('contentgeo'))
	{
		new Effect.Appear($('geolocal_1_1'),{
			afterFinish:function(){
				if($('contentgeo'))
				{
					//MAXMIND
					new Ajax.Request(urltask, {//recupere la ville par rapport a l ip
						asynchronous: 'true',
						postBody: 'tache=demo/geo/maxmind',
						onComplete: function(xhr)
						{
							if(xhr.responseText.substring(0,13) == '{EXE_SUCCESS}')
							{
								var ville = xhr.responseText.substr(13);
								var villegeo="&villegeo="+ville;
								$('stopattente1_1').style.backgroundImage = "url(media/image/demo/geo/ok.png)";
								geo_testville(villegeo);
							}else{
								$('contentgeo').update("<b>Votre adresse ip n'est pas valide</b>");
							}
						}
					}); 
					/*
					var villegeo="&villegeo=aigueperse";
					$('stopattente1_1').style.backgroundImage = "url(media/image/demo/commun/ok.png)";
					geo_testville(villegeo);
					*/
				}
			}
		});
	}
}

function geo_testville(villegeo){//test existance de la ville dans vignettes
	if($('contentgeo'))
	{
		new Effect.Appear($('geolocal_1_2'),{
			afterFinish:function(){
				if($('contentgeo'))
					phxAjaxCall(true,urltask,'tache=demo/geo/testville'+villegeo,geo_testville_callback,AJAX_error_handler,{villegeo:villegeo});
			}
		});
	}
}

function geo_testville_callback(response,param)
{
	if($('contentgeo'))
	{
		var ville = response.substr(13);
		if(ville)//si oui
		{
			$('imageresultat').src = "media/image/demo/geo/vignettes/"+ville+".png";
			geo_traitementcanvas(param.villegeo,ville);
			$('stopattente1_2').style.backgroundImage = "url(media/image/demo/commun/ok.png)";
		}else{//si non recupere les images et traitement des vignettes
			$('temps').update("cette étape prend plusieurs secondes");
			phxAjaxCall(true,urltask,'tache=demo/geo/photoville'+param.villegeo,geo_testville_callback_2,AJAX_error_handler,{villegeo:param.villegeo});
		}
	}
}

function geo_testville_callback_2(response,param)
{
	if($('contentgeo'))
	{
		var ville = response.substr(13);
		$('imageresultat').src = "media/image/demo/geo/vignettes/"+ville+".png";
		geo_traitementcanvas(param.villegeo,ville);
		$('stopattente1_2').style.backgroundImage = "url(media/image/demo/commun/ok.png)";
	}
}
function geo_traitementcanvas(villegeo,ville){//demos geo appel canvas
	if($('contentgeo'))
	{
		new Effect.Appear($('geolocal_1_3'),{
			afterFinish:function(){
				if($('contentgeo'))
				{
					$('stopattente1_3').style.backgroundImage = "url(media/image/demo/commun/ok.png)";
					geo_insertionimage(villegeo,ville);
				}
			}
		});
	}
}

function geo_insertionimage(villegeo,ville){//demos geo appel temp
	if($('contentgeo'))
	{
		new Effect.Appear($('geolocal_1_4'),{						
			afterFinish:function(){
				if($('contentgeo'))
				{
					$('stopattente1_4').style.backgroundImage = "url(media/image/demo/commun/ok.png)";
					geo_temperature(villegeo,ville);
				}
			}
		});
	}
}

function geo_temperature(villegeo,ville){	//demos geo tache temperature
	if($('contentgeo'))
	{
		new Effect.Appear($('geolocal_1_5'),{					
			afterFinish:function(){
				if($('contentgeo'))
				{
					//enleve les diff temps pour les nouveau
					$('soleil').style.backgroundImage = "url()";
					$('lune').style.backgroundImage = "url()";
					$('nuage').style.backgroundImage = "url()";
					$('pluie').style.backgroundImage = "url()";
					$('neige').style.backgroundImage = "url()";
					$('eclair').style.backgroundImage = "url()";
					$('grele').style.backgroundImage = "url()";	
					new Ajax.Request(urltask, {//recupere la temperature de la ville
						asynchronous: 'true',
						postBody: 'tache=demo/geo/demos'+villegeo,
						onComplete: function(xhr)
						{
							if($('contentgeo'))
							{
								var weath=xhr.responseText.substr(13);
								var tabweath = weath.split("|");
								if(tabweath && tabweath.length>=2)
								{
									var tabpartps = tabweath[1].split(",");
									for(i=0;i<tabpartps.length;i++){
										if(tabpartps[i]){
											$(tabpartps[i]).style.backgroundImage = "url(media/image/demo/geo/temps/"+tabpartps[i]+".png)";
										}
									}
									
									geo_calques(tabweath[0],ville);
									$('stopattente1_5').style.backgroundImage = "url(media/image/demo/commun/ok.png)";
								}
							}
						}
					});
				}
			}
		});
	}
}

function geo_calques(temperature,ville){//demos geo tache calques
	if($('contentgeo'))
	{
		var temper="&temperature="+temperature;
		if($('contentgeo'))
		{
			new Effect.Appear($('geolocal_1_6'),{						
				afterFinish:function(){
					if($('contentgeo'))
					{
						new Ajax.Request(urltask, {//creer les differents transparents suivant la temperature
							asynchronous: 'true',
							postBody: 'tache=demo/geo/zonegeo'+temper,
							onComplete: function(xhr)
							{
								if($('contentgeo'))
								{
									var couleur=xhr.responseText.substr(13);
									$('stopattente1_6').style.backgroundImage = "url(media/image/demo/commun/ok.png)";
									geo_timestamp(ville,couleur,temperature);
								}
							}
						});
					}
				}
			});
		}
	}
}

function geo_timestamp(ville,couleur,temperature){//demos geo timestamp
	if($('contentgeo'))
	{
		new Effect.Appear($('geolocal_2'),{						
			afterFinish:function(){
				if($('contentgeo'))
				{
					$('stopattente2').style.backgroundImage = "url(media/image/demo/commun/ok.png)";
					new Effect.Appear($('geolocal_3'),{					
						afterFinish:function(){
							if($('contentgeo'))
							{
								geo_calqcouleur(couleur); //avec 1 calque par vignette
								var nomville=ville.toUpperCase();
								$('nomville').update(nomville+" / "+temperature+"°");
								geo_rafraichittimestamp();
								geo_rafraichiticone(ville);
								geo_affiche();
							}
							$('stopattente3').style.backgroundImage = "url(media/image/demo/commun/ok.png)";
						}
					});
				}
			}
		});
	}
}

function geo_affiche(){	//demos geo affiche

	if($('contentgeo'))
	{
		contenu='<option value="" class="texte"></option>';
		new Ajax.Request(urltask, {
			asynchronous: 'true',
			postBody: 'tache=demo/geo/autresvilles',
			onComplete: function(xhr)
			{
				if($('contentgeo'))
				{
					villes=(xhr.responseText.substr(13));
					var tab = villes.split("_");
					for(i=1;i<(tab.length);i++){
						contenu=contenu+'<option value="'+tab[i]+'" class="texte">'+tab[i]+'</option>';
					}
					$('stopattente3').style.backgroundImage = "url(media/image/demo/commun/ok.png)";
					$('autres').update(contenu);
					if($('geo_option').style.display == "none")
					{
						new Effect.Appear($('geo_optioncode'));
						new Effect.Appear($('geo_information'));
						new Effect.Appear($('geo_option'),{
						afterFinish:function(){
							scrollTo(0,400);
							new Effect.Opacity('georesultat', { from: 0, to:1, duration: 3 });
							Behaviour.apply();
						}
					});
					}else
					{
						new Effect.Appear('georesultat',{duration: 3 });
						Behaviour.apply();
					}
				}
			}
		});
	}
}
function geo_rafraichiticone(ville){ //demos geo tte les 5 minutes maj iconetemps
	if($('contentgeo'))
	{
		new Effect.Fade($('lune'));
		new Effect.Fade($('nuage'));
		new Effect.Fade($('pluie'));
		new Effect.Fade($('neige'));
		new Effect.Fade($('eclair'));
		new Effect.Fade($('soleil'));
		new Effect.Fade($('grele'),{
			afterFinish:function(){		
				new Ajax.Request(urltask, {
					asynchronous: 'true',
					postBody: 'tache=demo/geo/demos&villegeo='+ville,
					onComplete: function(xhr)
					{
						if($('contentgeo'))
						{
							var weath=xhr.responseText.substr(13);
							var tabweath = weath.split("|");
							var tabpartps = tabweath[1].split(",");
							for(i=0;i<tabpartps.length;i++){
								if(tabpartps[i]){
									$(tabpartps[i]).style.backgroundImage = "url(media/image/demo/geo/temps/"+tabpartps[i]+".png)";
									new Effect.Appear($(tabpartps[i]));
								}
							} 
							var nomville=ville.toUpperCase();
							$('nomville').update(nomville+" / "+tabweath[0]+"°");
							var temperature=tabweath[0];
							geo_rafraichitcouleurcalq(temperature);
							nomicone=setTimeout(function () { geo_rafraichiticone(ville); }, 300000);
							geo_rafraichiticoneposition(tabpartps);
						}
					}
				});
			}
		});
	}
}
function geo_rafraichitcouleurcalq(temperature){					
	if($('contentgeo'))
	{
		new Ajax.Request(urltask, {
			asynchronous: 'true',
			postBody: 'tache=demo/geo/zonegeo&temperature='+temperature,
			onComplete: function(xhr)
			{
				if($('contentgeo'))
				{
					var couleur=xhr.responseText.substr(13);
					for(numcalqu=0;numcalqu<12;numcalqu++){
						var numimagecalq=Math.floor(Math.random()*13);
						var image="media/image/demo/geo/calque/couleur"+numimagecalq+".png";
						var calq_image = '<img src="'+image+'" alt="" />';
						$('calq'+numcalqu).update(calq_image);
					}
				}
			}
		});
	}
}
function geo_rafraichiticoneposition(tabpartps){//tte les 5 minutes mouvements
	if($('contentgeo'))
	{
		var aujourdhui=new Date();
		var heure = aujourdhui.getHours();
		var minutes = aujourdhui.getMinutes();
		var secondes = aujourdhui.getSeconds();
		var totalsecondes = heure * 3600;
		var totalsecondes = totalsecondes + ( minutes * 60 );
		var totalsecondes = totalsecondes + secondes
		var pi=Math.PI;
		var x=pi*(totalsecondes/86400);
		var xpi=400/(pi/x);

		var ypi=Math.sin(x);
		var lefticone = xpi;
		var topicone = 0-(ypi*156)+130;
		for(i=0;i<tabpartps.length;i++){
			if(tabpartps[i]){
				$(tabpartps[i]).style.left = lefticone+"px";
				$(tabpartps[i]).style.top = topicone+"px";
			}
		}
		setTimeout(function () { geo_rafraichiticoneposition(tabpartps); }, 5000);	
	}
}

function geo_rafraichittimestamp(){ //demos geo tte seconde maj timestamp
	if($('contentgeo') && $('timeheure'))
	{
		var dat = new Date();
		//$('geotimestamp').innerHTML = dat.toLocaleTimeString();
		$('timeheure').innerHTML = dat.getHours()+" : ";
		$('timeminute').innerHTML = dat.getMinutes()+" : ";
		$('timesecond').innerHTML = dat.getSeconds();
		setTimeout(function () { geo_rafraichittimestamp(); }, 1000);
	}
}

function geo_calqcouleur(couleur){ //demos geo recuperation des calques
	for(numcalq=0;numcalq<12;numcalq++){
		var numimagecalq=Math.floor(Math.random()*13);
		var image="media/image/geo/calque/couleur"+numimagecalq+".png";
		var calq_image = '<img src="'+image+'" alt="" />';
		$('calq'+numcalq).update(calq_image);
	}
	geo_mvtcalq('');
	$('contour').style.backgroundImage = "url(media/image/demo/geo/couleurs/"+couleur+"/contour.png)";
	$('timeheure').className = "geotimestamp heure color"+couleur;
	$('timeminute').className = "geotimestamp minute color"+couleur;
	$('timesecond').className = "geotimestamp second color"+couleur;
}

function geo_mvtcalq(tab){//demos geo tte les secondes changement aleatoire de la place des calques 
	if($('contentgeo') && $('resultat'))
	{
		var margeleft=$('resultat').offsetLeft;
		var margetop=$('resultat').offsetTop;
		if(!tab){
			var tab = new Array();
			for(i=0;i<12;i++){ tab[i]=i; }
		}
		tab.sort(function() { return 0.5 - Math.random() });
		var j=0;
		var l=0;
		var k=0;
		for(var numcalq=0;numcalq<12;numcalq++){
			if(tab[numcalq]<4){
				var imgleft=(j*166)+margeleft;
				var imgtop=margetop;
				j=j+1;
			}
			if(4<=tab[numcalq] && tab[numcalq]<8){
				var imgleft=(l*166)+margeleft;
				var imgtop=104+margetop;
				l=l+1;
			}
			if(8<=tab[numcalq]){
				var imgleft=(k*166)+margeleft;
				var imgtop=208+margetop;
				k=k+1;
			}
			$('calq'+tab[numcalq]).style.left=imgleft+"px";
			$('calq'+tab[numcalq]).style.top=imgtop+"px";
		}
		setTimeout(function () { geo_mvtcalq(tab); }, 1000);
	}
}
// Enregistrement des regles definies ci dessus dans Behaviour
Behaviour.register(myrules);
