/**
 * @brief	Fonctions utilisées pour gérer les pompiers de la caserne
 * @author	Renan
 * @since	13/07/2010
 * @version	1
 */
function Pompier()
{
	// METHODE : recruter ses 3 premier sapeurs
	this.recruter = function()
	{
		if( $('input[name=pompierName1]').val() == "" || $('input[name=pompierName2]').val() == "" || $('input[name=pompierName3]').val() == "" )
		{
			jAlert('Chacune de tes recrues doit avoir un nom !', 'Erreur');
		}
		else{
			var element_pompier_1 	= escape($('input[name=pompierElements1]').val());
			var sexe_pompier_1 		= escape($('input[name=pompierSexe1]').val());
			var name_pompier_1 		= escape($('input[name=pompierName1]').val());
			var element_pompier_2 	= escape($('input[name=pompierElements2]').val());
			var sexe_pompier_2 		= escape($('input[name=pompierSexe2]').val());
			var name_pompier_2 		= escape($('input[name=pompierName2]').val());
			var element_pompier_3 	= escape($('input[name=pompierElements3]').val());
			var sexe_pompier_3 		= escape($('input[name=pompierSexe3]').val());
			var name_pompier_3 		= escape($('input[name=pompierName3]').val());
			
			
			$.post('/fr/game/pages/evenements/ajax.php', { 	action:'recrutement', 
															nom1:name_pompier_1, sexe1:sexe_pompier_1, element1:element_pompier_1,
															nom2:name_pompier_2, sexe2:sexe_pompier_2, element2:element_pompier_2,
															nom3:name_pompier_3, sexe3:sexe_pompier_3, element3:element_pompier_3
															 }, function(data){
				
				if( data != false)
				{					
					message(data);
					pageLoad('/fr/game/#/pompiers');
				}
				else
					jAlert('Une erreur est survenue !', 'Erreur');
				
			},'json' );
			
		}
		
	}
}

function Specialite()
{
	this.specialite = 0;
	this.niveau 	= 0;
	this.sapeur 	= 0;
	
	/* lister les pompiers qui peuvent faire cette formation */
	this.recherche = function(idSpecialite,niveau)
	{
		this.specialite = idSpecialite;
		this.niveau = niveau;
		
		$('#specialite-listeSapeur').html('<em>Recherche des pompiers ...</em>');
		$.post('/fr/game/pages/administration/ajax.php?action=specialite', { appel:'recherche', id:idSpecialite, niv:niveau }, function(data){
			
			$('#specialite-listeSapeur').html(data);
			specialite.getSpe();
			
		},'json' );
	}
	
	/* récupérer les 2 spécialité du sapeur */
	this.getSpe = function() 
	{
		this.sapeur = $('select[name=selectSapeur] option:selected').val();
		$.post('/fr/game/pages/administration/ajax.php?action=specialite', { appel:'getSpe', id:this.sapeur }, function(data){
			
			$('#specialitePrincipale').html('('+data[0]+')');
			$('#specialiteSecondaire').html('('+data[1]+')');
			
		},'json' );
	}
	
	/* valider une formation */
	this.former = function()
	{
		var priority = $('input[name=specialitePriority]:checked').val();
		$.post('/fr/game/pages/administration/ajax.php?action=specialite', { appel:'former', id:this.specialite, niv:this.niveau, priority:priority, sapeur:this.sapeur }, function(data){
			
			fermerPopupAjax();
			message(data);
			
		},'json' );
	}
}


/* RENOMMER UN POMPIER */
function renamePompier( ){
	var newName 	= escape( $('input[name=newNamePompier]').val() );
	var idPompier 	= $('input[name=idPompier]').val();
	$.post('/fr/game/pages/pompier/ajax.php?action=renommer', { id:idPompier, newName:newName }, function(data){
		
		$('#monPompier' + idPompier ).html( data );
		fermerPopupAjax();
		
	},'json' );
}


/* GENERATEUR DE POMPIER */
function generateurPompier( o )
{
	this.pompierId	= 0;
	this.elements 	= new Array();
	this.path		= '/fr/static/images/avatarPompier/';
	this.name		= null;
	this.sexe		= 'homme';
	this.reload		= false;
	this.buttonValidate = 'Enregistrer';
	this.hash		= '#';
	
	
	//mise à jour des paramètres envoyé lors de la déclaration de l'objet
	for ( var cle in o){ this[cle] = o[cle]; }
	
	/**
	 * METHODE : charger un avatar
	 * @param {Object} id	identifiant du pompier (0 si pas existant)
	 * @param {Object} sexe	sexe du pompier
	 */
	this.view = function( id, sexe ){
		if( isNaN(id) ) 	id = 0;
		if( sexe !='f' && sexe!='h' ) 	sexe = 0;
		
		this.pompierId 	= id;
		this.elements 	= new Array();
		
		$.post('/fr/game/pages/pompier/ajax.php?action=loadAvatar', { id:id, sexe:sexe }, function(data){
			
			if(data!=0)
			{
				var zoneEdition = '';
				var apercu		= '';
				generator.elements 		= data[0];
				generator.name			= data[1];
				generator.sexe			= data[2]=='f' ? 'femme':'homme';
				
				for( var i in generator.elements )
				{
					var nameId = generator.elements[i]['name-id'];
					zoneEdition += '<div class="generateur-elements"><span class="title">'+generator.elements[i]['name']+'</span>';
					if(generator.elements[i]['cat'] > 0) 
						zoneEdition += '<div id="'+nameId+'-cat">'+ generator.buttonNavig('prev', i, 1 ) +'<span>couleur <b>'+generator.elements[i]['selectCat']+'</b>/'+generator.elements[i]['cat']+'</span>'+ generator.buttonNavig('next', i, 1) +'</div>';
					
					zoneEdition += '<div id="'+nameId+'">'+ generator.buttonNavig('prev', i, 0) +'<span>modele <b>'+generator.elements[i]['select']+'</b>/'+generator.elements[i]['modele']+ '</span>' + generator.buttonNavig('next', i, 0) +'</div>';
					zoneEdition += '</div>';
				}
				//affichage
				$('#listeElements').html(zoneEdition);
				$('#apercuPompier').html( data[3] );
				$('#apercuPompier').append( '<p><img src="'+generator.path+data[2]+'.png" align="absmiddle" /> <input name="generateur-name" type="text" value="'+generator.name+'" size="20" maxlength="25"  /></p>' );
				$('#apercuPompier').append( '<p>Choix du sexe : <a href="'+generator.hash+'" onclick="generator.genre(\'h\');">Homme</a> ou <a  href="'+generator.hash+'" onclick="generator.genre(\'f\');">Femme</a></p>' );
				$('#apercuPompier').append( '<p><a href="' + generator.hash + '" onclick="generator.save();" class="bouton"><b>'+generator.buttonValidate+'</b></a></p>' );
				
			}
			
		},'json' );
		
	}
	
	/**
	 * METHODE : élément suivant
	 */
	this.next = function(element, category){
		//on gère si c'est un catégorie ou non
		if (category == 1) {
			var selectTotal 	= 'cat';
			var selectModele 	= 'selectCat';
			var nameId			= this.elements[element]['name-id']+'-cat';
		}
		else{
			var selectTotal	 	= 'modele';
			var selectModele 	= 'select';
			var nameId			= this.elements[element]['name-id'];
		}
		
		//+1 classique
		if( this.elements[element][selectModele] < this.elements[element][selectTotal]  )
		{
			this.elements[element][selectModele]++;
		}
		//limit > on redirige soit vers 0 soit vers 1
		else if(  this.elements[element][selectModele] == this.elements[element][selectTotal] )
		{
			if( this.elements[element]['vide'] == 1 && category == 0  )
				this.elements[element][selectModele] = 0;
			else
				this.elements[element][selectModele] = 1;
		}
		
		//modification de l'affichage
		this.changeAvatar(element);
		
		//on affiche
		$('div#'+nameId+' > span > b').html( this.elements[element][selectModele] );
	}
	
	/**
	 * METHODE : élément précédent
	 */
	this.prev = function(element, category){
		//on gère si c'est un catégorie ou non
		if (category == 1) {
			var selectTotal 	= 'cat';
			var selectModele 	= 'selectCat';
			var nameId			= this.elements[element]['name-id']+'-cat';
		}
		else{
			var selectTotal	 	= 'modele';
			var selectModele 	= 'select';
			var nameId			= this.elements[element]['name-id'];
		}
		
		//-1 classique
		if( this.elements[element][selectModele] > 1  )
		{
			this.elements[element][selectModele]--;
		}
		//limit > on redirige soit vers 0 soit vers le max
		else if(  this.elements[element][selectModele] <= 1 )
		{
			if( this.elements[element]['vide'] == 1 && category == 0 && this.elements[element][selectModele] == 1  )
				this.elements[element][selectModele] = 0;
			else
				this.elements[element][selectModele] = this.elements[element][selectTotal];
		}
		
		//modification de l'affichage
		this.changeAvatar(element, category);
		
		//on affiche
		$('div#'+nameId+' > span > b').html( this.elements[element][selectModele] );
	}

	
	/**
	 * METHODE : Affiche l'élément en cours de l'avatar
	 */ 
	this.changeAvatar = function (element, stopSearch )
	{
		var image 		= $('#apercuPompier > div.avatarPompier > div#'+this.elements[element]['name-id']+'_'+this.pompierId+' > img').attr('src');
		var categorie	= 0;
		var modele		= 0;
		var dependance	= 0;
		var activeSearch = typeof(stopSearch)=='undefined' ? true:false;
		var search 		= 0;
		var new_src 	= this.path;
		
		//on reconstitue l'image souhaité
		if( this.elements[element]['select'] == 0 )
				new_src += 'vide.png';
		else
		{
			new_src += this.sexe+'/'+this.elements[element]['name-id']+'/';
			if( this.elements[element]['cat'] > 0 )
				new_src += this.num(this.elements[element]['selectCat'])+'/';
			
			if( is_numeric( this.elements[element]['dependance'] ) )
			{
				search = this.elements[element]['dependance'];
				new_src += this.num( this.elements[this.elements[element]['dependance']]['select'] )+'-';
			}
			
			new_src += this.num(this.elements[element]['select'])+'.png';
		}
		
		//chargement de l'image actuelle
		$('#apercuPompier > div.avatarPompier > div#'+this.elements[element]['name-id']+'_'+this.pompierId+' > img').attr('src', new_src);
		
		//mise à jour de tous les éléments dépendant de l'élément actuel modifié (par récursivité)
		//+ affichage ou non du grade
		if(activeSearch)
		{	
			//this.cacher_grade = false;
			for (var i in this.elements) {
				if( this.elements[i]['dependance'] == search )
					this.changeAvatar( i , 1); //on indique bien de ne pas chercher la dépendance cette fois pour éviter les boucles infinis
			}
		}
		
		//afficher ou non le grade
		this.viewGrade();
	}
	
	/**
	 * METHODE : choix du sexe du pompier
	 */
	this.genre = function (sexe){
		this.view( this.pompierId, sexe );
	}


	this.viewGrade = function(){
		var viewGrade = false;
		
		for (var i in this.elements) {
			if( this.elements[i]['hideGrade']!= null )
			{
				var modeleHide = this.elements[i]['hideGrade'];
				var listeModeleHide = modeleHide.split(',');
				for (var j in listeModeleHide){
					if( listeModeleHide[j] == this.elements[i]['select']) viewGrade = true;
				}
			}
		}
		
		//on cache le grade si necessaire
		if(viewGrade == true)
			$('#apercuPompier > div.avatarPompier > div:last').addClass('cacher');
		else
			$('#apercuPompier > div.avatarPompier > div:last').removeClass('cacher');
	}

	/**
	 * METHODE : enregistrement de l'avatar en cours
	 */
	this.save = function(){
		var myElements 	= new Array();
		
		for(var i in this.elements){
			if( this.elements[i]['cat'] > 0 )	myElements[i] = this.elements[i]['selectCat']+'/'+this.elements[i]['select'];
			else								myElements[i] = this.elements[i]['select'];
		}
		var myAvatar 	= myElements.join('-');
		var sexe		= (this.sexe == 'femme') ? 'f':'h';
		var name		= escape( $('input[name=generateur-name]').val() );
		//on passe le résultat au traitement php
		$.post('/fr/game/pages/pompier/ajax.php?action=saveAvatar', { id:this.pompierId, sexe:sexe, elements:myAvatar, name:name }, function(data){

			//affichage de la réussite ou non
			if( generator.reload == false)
				message(data);
		}, 'json');
		if(this.reload)
		{
			fermerPopupAjax();
			pageLoad(this.hash);
		}
	}
	
	
	/**
	 * METHODE : formate les chiffres en leur imposant un 0 devant
	 * @param {Object} i
	 */
	this.num = function (i)
	{
		return (i <10 ? '0'+i:i);
	}
	
	
	/**
	 * METHODE : boutons de navigation entre les différents éléments
	 */
	this.buttonNavig = function( sens, element, category )
	{
		if(sens == 'next')
			var button = '<span class="navigation navigNext" onclick="generator.next(\''+element+'\','+category+')" ></span>';
		else
			var button = '<span class="navigation navigPrev" onclick="generator.prev(\''+element+'\','+category+')"></span>';
		
		return button;
	}
	
}
