/*************************************************************************************************/
/******************************************************************************VARIABLES GLOBALES*/
/*************************************************************************************************/
// version minimale et maximal du player Unity
var majorVersion		= 3;
var minorVersion		= 0;
// largeur et hauteur de l'objet Unity3D
var largeurU3D			= 800;
var hauteurU3D			= 600;
// tableau des identifiants de bloc (annonceur)
var idBlocsAnnonceurs	= [];
// objet de référence pour accéder à l'objet unity (pour SendMessage)
var dname				= "unity";
// la requete XMLhttpRequest
var requete				= {};
// la position de départ pour la carte Mappy
var adresse;
var latitude;
var longitude;
// les infos de compte
var login				= "";
var jour				= ["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"];
var avatarLibel			= ["Homme","Femme","Robot"];


/*************************************************************************************************/
/**********************************************************************INITIALISATION DES DONNEES*/
/*************************************************************************************************/
jQuery(document).ready(function(){
	// CHARGEMENT DE UNITY
	if(isUnityInstalled()){
		if(checkVersion()){
			// objet unity
			embbed("loader.unity3d", dname, largeurU3D, hauteurU3D);
			jQuery("#progress").hide();
			configLink();
		}else{
			getPlugin();
		}
	}else{
		getPlugin();
	}

	// LANCEMENT DE UNITY
	jQuery("#initialiser").click(function(){
		login	= jQuery("#login").attr("value");
		showUnity();
	});

	// MAINTENANT !
	jQuery(".now").click(function(){
		var now	= new Date();
		var j	= now.getDay();
		jQuery("#jour").val(j);
		var h	= now.getHours();
		jQuery("#heure").val(h);
		var m	= now.getMinutes();
		jQuery("#minute").val(m);
	});
	
	// CHAMP LOGIN
	jQuery("#login").focus(function(){
		if(jQuery(this).val()=="Visiteur")
			jQuery(this).val("");
	});
	jQuery("#login").blur(function(){
		if(jQuery.trim(jQuery(this).val())=="")
			jQuery(this).val("Visiteur");
	});

	// POINT D'ENTRÉE
	jQuery("input[name=qarr]:radio").click(function(){
		jQuery("#depart select").each(function(){
			jQuery(this).css("display","none");
		});
		var select	= jQuery("#select_"+jQuery(this).attr("id"));
		select.css("display","block");
		select.trigger("change");
	});
	jQuery("select").change(function(){
		var coordonnees	= jQuery(this).find("option:selected").val().split("|");
		latitude		= coordonnees[0];
		longitude		= coordonnees[1];
		adresse			= jQuery(this).find("option:selected").html();
	});
	jQuery("#select_qarr_m").trigger("change");

	// MISE A JOUR DE LA HAUTEUR
	jQuery(window).trigger("resize");
});
jQuery(window).resize(function(){
	var h	= jQuery(window).height()-170;
	if(h<405)
		h	= 405;
	jQuery("#main .content").height(h);
});

// lancement de Unity
function launchInterface(){
	jQuery(window).unbind('resize');
	jQuery(".content").hide();
	jQuery(".header").hide();
	jQuery("#main").width(largeurU3D);
	jQuery("#main").height(hauteurU3D);
	jQuery("body,html").css("background","#000 none");
	show();

	var avatar	= jQuery("input[name=avatar]:checked").val();
	var heure	= parseInt(jQuery("#heure option:selected").val())*3600+parseInt(jQuery("#minute option:selected").val())*60;
	var jourSem	= jour[jQuery("#jour option:selected").val()];

	// envoi les paramètres login
	callUnityFunction(dname, "Interface", "SetInfoLogin", login+"|"+avatar+"|"+jourSem+"|"+heure+"|"+longitude+"|"+latitude);

	// la météo de la ville de paris
	callMeteo();
	// se recharge toutes les 10 minutes
	window.setInterval("callMeteo()", 600*1000);

	return false;
}

// affiche Unity
function showUnity(){
	jQuery(".parametrage").hide();
	if(jQuery(".download .num").html()=="100"){
		jQuery("#progress").hide();
		launchInterface();
	}else{
		jQuery("#progress .info").html(
			'<span class="libelle">Avatar</span><span class="champ">'+avatarLibel[parseInt(jQuery("input[name=avatar]:checked").val())]+'</span><br class="clear"/>'+
			'<span class="libelle">Jour et heure</span><span class="champ">Le '+jour[jQuery("#jour option:selected").val()]+" à "+jQuery("#heure option:selected").html()+':'+jQuery("#minute option:selected").html()+'</span><br class="clear"/>'+
			(adresse!=""?'<span class="libelle">Adresse de départ</span><span class="champ">'+adresse+' à Paris</span><br class="clear"/>':"")+
			'<span class="libelle">Pseudo</span><span class="champ">'+login+'</span>'
		);
		jQuery("#progress").show();
	}
}


/*************************************************************************************************/
/******************************************************************PRINCIPAUX APPELS DEPUIS UNITY*/
/*************************************************************************************************/

// progression du téléchargement d'unity
function u3d_progress(progress){
	jQuery(".download .progress .barre").width(parseInt(progress)+"%");
	jQuery(".download .num").empty();
	jQuery(".download .num").append(parseInt(progress));

	// téléchargement de unity terminé
	if(progress==100 && jQuery("#progress").css("display")=="block"){
		jQuery("#progress").hide();
		launchInterface();
	}
}


// check la version d'unity depuis le navigateur !
function getPlugin(){
	jQuery(".plugin").html('<a href="'+getPluginPath()+'" target="_blank" title="Installer le dernier plugin Unity3D"><img src="img/logoUnity.png" alt="" style="float:left;padding:0 20px 0 30px;"/><h1 style="padding: 2em 0 0 0; font-size: 1.5em">Veuillez installer le dernier plug-in Unity3D...</h1><strong>L\'application n&eacute;cessite une version '+majorVersion+'.'+minorVersion+' minimum.</strong></a>');
	jQuery(".plugin").show();
	jQuery(".parametrage").hide();
	jQuery("#config").hide();
	jQuery("#progress").hide();
}
function getVersion(){
	if(this.browser == "MSIE_win")	{
		return DetectUnityWebVersionActiveX();
	}else if (navigator.mimeTypes && navigator.plugins){
		if( navigator.mimeTypes["application/vnd.unity"] && navigator.mimeTypes["application/vnd.unity"].enabledPlugin && navigator.plugins["Unity Player"]){
			if(jQuery("#UnityVersionCheck").length==0){
				if (navigator.appVersion.toLowerCase().indexOf("safari") != -1){
					jQuery(document.body).append( "<embed id='UnityVersionCheck' type='application/vnd.unity' width='1' height='1'> </embed>" );
				}else{
					jQuery(document.body).append( "<object id='UnityVersionCheck' type='application/vnd.unity'> </object>" );
				}
			}
			var gPluginVersion	= '';
			try {
				gPluginVersion = document.getElementById("UnityVersionCheck").GetPluginVersion();
			} catch(e) { 
				setTimeout('getVersion()', 500);
			}
			if( gPluginVersion == undefined || gPluginVersion == '' )
				gPluginVersion = '';
			return gPluginVersion;
/*
			var plugin	= navigator.plugins["Unity Player"];
			var descr	= plugin.description.split(' ');
			return descr[descr.length-1];*/
		}
	}
	return '';
}
function checkVersion(){
	var version		= getVersion();
	if(version!=''){
		version			= version.split('.');
		var actuelle	= 0;
		if(version.length>=1)
			actuelle	= parseInt(version[0])*100+parseInt(version[1])*10;
		var requis		= majorVersion*100+minorVersion*10;
		if(actuelle>=requis){
			return true;
		}
	}
	return false;
}

/*************************************************************************************************/
/***************************************************************FENETRES D'ALERT ET DE CHARGEMENT*/
/*************************************************************************************************/

// fenêtre d'erreur
function erreur(str){
	if(str!=""){
		callUnityFunction(dname, "Interface", "AddAlert", str);
	}
}
// fenêtre d'attente
function showWait(){
	callUnityFunction(dname, "Interface", "ShowWait");
}
function hideWait(){
	callUnityFunction(dname, "Interface", "HideWait");
}


/*************************************************************************************************/
/***********************************************************************************REQUETES AJAX*/
/*************************************************************************************************/

/****************************************************************************************************************************/
/**********************************************************************************************************************METEO*/
/****************************************************************************************************************************/
// récupère la météo à partir d'une ville
function callMeteo(){
	if(requete.meteo)
		requete.meteo.abort();
	requete.meteo	= jQuery.ajax({
		url			: "xml/meteo.php",
		type		: "GET",
		cache		: true,
		dataType	: 'json',
		complete	: function(XMLHttpRequest, textStatus){
			if(textStatus=="success"){
				eval('var json = '+XMLHttpRequest.responseText+';');

				// la température actuelle
				var temperature	= json.meteo.temp;

				// l'heure actuelle
				var heure		= json.heure.actuel;

				// l'heure de lever
				var lever		= json.heure.lever;
				var l			= lever.split(":");
				lever			= parseInt(l[0])*3600+parseInt(l[1])*60;

				// l'heure de coucher
				var coucher		= json.heure.coucher;
				var c			= coucher.split(":");
				coucher			= parseInt(c[0])*3600+parseInt(c[1])*60;

				// l'icone du temps
				var icone		= json.meteo.ico;
				callUnityFunction(dname, "Interface", "ReceiveMeteo", String(temperature)+"|"+String(icone)+"|"+String(heure)+"|"+String(lever)+"|"+String(coucher));
			}
		}
	});
}


/*************************************************************************************************/
/********************************************************************FENETRE D'INFO CONFIGURATION*/
/*************************************************************************************************/
function configLink(){
	jQuery("#config").click(function(){
		if(jQuery("#configInfo").css("display")=="none"){
			jQuery("#configInfo").css("display","block");
		}else{
			jQuery("#configInfo").css("display","none");
		}
	});
}


