/*---------------------------------------------------------------------------------------------------
* Script de conversion de devise Accor Reservation
* @der.mod : 04/01/2007
*/

var devises				= new Array();
var tarifListByPriceClass	= new Array();
var tarif_ref			= null;
var indexEUR			= 28;
var compteur=0;

function truncate(nombre) {
	nombre_tronque = ""+nombre;	
	if (nombre_tronque.indexOf(".",0) !=-1) {
		return(Number(nombre_tronque.substring(0,Number(nombre_tronque.indexOf(".",0)+3))));
	} else {
		return(Number(nombre));	
	}
}

/*
* Gère la conversion des devises
* @idSelect mDevise	: Id du SELECT contenant la liste des devises (pour selection de celle en cours)
* @defaultCurrency  : la devise par défaut.
* @oElm				: par défaut : document
* @strTagName		: Type d'élément à traiter DIV, SPAN, A
* @oClassNames		: Classe à gérer "mClasse" ou ["mClasse1", "mClasse2"]
*****************************************************************************************************/
function convertToCurrency(idSelect, defaultCurrency, pricesTab, oElm, strTagName, oClassNames){
	var selectedCurrency                    = getElement(idSelect).value;
	var valDevise							= d_currencies[selectedCurrency];					// Valeur de la devise en cours
	var valDeviseRef						= d_currencies[defaultCurrency];					// Valeur de la devise de reference
	var tabPrix								= getElementsByClassName(oElm, strTagName, oClassNames);
	var prixConv							= 0;
	var mPrix								= 0;
	
	for(var i = 0; i < tabPrix.length; i++){
		// Calcul de la nouvelle devise
		//-------------------------------------------------------------------------------------------
		prixConv						= pricesTab[i];
		// calcul du ratio multiplicateur entre la devise de référence et la devise demandée
		ratioConv = valDevise / valDeviseRef;
		// calcul nouveau montant
		prixConv = truncate(prixConv / ratioConv);

		prixConv = ""+prixConv;
		if (prixConv.indexOf(".",0)==-1) prixConv = prixConv +".00";
		else {
			nb_decimale = prixConv.length-prixConv.indexOf(".",0)-1;
			if (nb_decimale==1) prixConv = prixConv +"0";
			}
		/*
		if (Math.floor(prixConv) == prixConv) {
			prixConv					= Math.floor(prixConv) + ".00";
		}else{
			if (Math.floor(10 * prixConv) == 10 * prixConv) {
				prixConv				+= "0";
			}
		}
	    */
		// Affichage
		//-------------------------------------------------------------------------------------------
		if(prixConv != 0){
		    if(tabPrix[i].innerHTML){
				tabPrix[i].innerHTML	= prixConv;
			}else if(tabPrix[i].document && tabPrix[i].document != window.document){
				tabPrix[i].document.open();
				tabPrix[i].document.write(prixConv);
				tabPrix[i].document.close();
			}
		}
	}
}

function convert() {
    
}

/*
* Gère l'affichage de la devise en cours
* idSelect          : l'id du select des devises.
* @oElm				: par défaut : document
* @strTagName		: Type d'élément à traiter DIV, SPAN, A
* @oClassNames		: Classe à gérer "mClasse" ou ["mClasse1", "mClasse2"]
*****************************************************************************************************/
function writeCurrency(idSelect, oElm, strTagName, oClassNames){
	var selectedCurrency						= getElement(idSelect).value;
	var tabDevise						= getElementsByClassName(oElm, strTagName, oClassNames);
	
	for(var i = 0; i < tabDevise.length; i++){
		if(tabDevise[i].innerHTML){
			tabDevise[i].innerHTML		= selectedCurrency;
		}else if(tabDevise[i].document && tabDevise[i].document != window.document){
			tabDevise[i].document.open();
			tabDevise[i].document.write(selectedCurrency);
			tabDevise[i].document.close();
		}
	}
}

/*
* Actualise l'affichage et exécute la conversion des devises
* @oElm				: par défaut : document
* @strTagNameP		: Type d'élément à traiter DIV, SPAN, A pour les prix
* @oClassPrix		: Classe à gérer "mClasse" ou ["mClasse1", "mClasse2"] pour les prix
* @strTagNameD		: Type d'élément à traiter DIV, SPAN, A pour les devises
* @oClassDevise		: Classe à gérer "mClasse" ou ["mClasse1", "mClasse2"] pour les devises
************************************************************************/
function updatePricesAndCurrencies(idSelect, defaultCurrency, oElm, strTagNameP, oClassPrix, strTagNameD, oClassDevise, mInit){
		// récupération de la liste de tarifs de référence pour la classe de prix en cours
		var tarif_ref = tarifListByPriceClass[oClassPrix];
		// si on a pas pu trouver la liste de tarifs pour cette classe, ou si on force la regérénation (mInit=1) on la regénère avec les valeurs dans le HTML
    if(!tarif_ref || (mInit!=null && mInit==1) ) {
        var tabPrix	= getElementsByClassName(oElm, strTagNameP, oClassPrix);
        tarif_ref = new Array();
        for(var i = 0; i < tabPrix.length; i++){
            if(isNaN(tabPrix[i].innerHTML)) {
			    		mPrix = 0;
						}
						else {
         			mPrix = tabPrix[i].innerHTML;
						}
						tarif_ref[i] = truncate(mPrix);
      	}
      	tarifListByPriceClass[oClassPrix]=tarif_ref;
    }
    // Convertion des prix dans la nouvelle devise
	convertToCurrency(idSelect, defaultCurrency, tarif_ref, oElm, strTagNameP, oClassPrix);
	// Ecriture du code de la nouvelle devise
	writeCurrency(idSelect, oElm, strTagNameD, oClassDevise);
}

/*
* Gère la création du menu déroulant contenant les devises
* @idSelect		    : ID du Select
* @currenciesTab    : Tableau de l'ensemble des devises
* @defaultCurrency  : Valeur à sélectionner par défaut
*****************************************************************************************************/
function writeSelectCurrencies(idSelect, currenciesTab, defaultCurrency){
	getElement(idSelect).options.length 	= 0;
	var count = 0;
	for(var currency in currenciesTab){
	      if(currenciesTab.hasOwnProperty(currency)) {
          getElement(idSelect).options[count] = new Option(currency, currency);
          if(defaultCurrency == currency)
              getElement(idSelect).options[count].selected = true;
          count++
        }
    }
}

/*
* Méthode permettant de surcharger la devise par défaut par une autre devise (du profil par exemple).
* @idSelect		    : ID du Select
* @currency         : la nouvelle devise à surcharger dans le menu déroulant.
*****************************************************************************************************/
function overrideCurrency(idSelect, currency) {
    var select= getElement(idSelect);
    var size = select.options.length;
    var stop = false
    // faire optimisation si currency == defaultcurrency
    for(var count = 0; count < size && !stop; count++) {
        if(select.options[count].value == currency) {
            getElement(idSelect).options[count].selected = true;
            stop = true;
        }
        
    }
}
