/*
*****************************************************************************************************/

var tabPrix= new Array();
var tabPrixAffiche= new Array();
var tabDevise= new Array();
var tabDeviseAffiche= new Array();
var currenciesTab = new Array();



document.write('<script type="text/javascript" src="/scripts-v66/getElementsByClassName.js"></script>');
document.write('<script type="text/javascript" src="/scripts-v66/fct_diverses.js"></script>');



/*
* Recupere la valeur d'un cookie
* @cookieName		    : Nom du cookie
*****************************************************************************************************/
var getCookie = function(cookieName) {
var userLocalization = 'fr';
//var cookieName = "userLocalization";
var cookies = document.cookie.split(';');
	if(cookies!=null){
		for (var i = 0; i < cookies.length; i++) {
				var cookie = cookies[i];
				while (cookie.charAt(0) == ' ') cookie = cookie.substring(1, cookie.length);
				if (cookie.indexOf(cookieName) == 0) {
					userLocalization = cookie.substring(cookieName.length + 1, cookie.length);
				}
			}
	}
	return userLocalization;
};


/*
* Arrondie le prix convertie à l' entier superieur
* @nombre		    : Prix à convertir
*****************************************************************************************************/
function truncate(nombre) {
	var nombre_tronque = Number(nombre);	
	return Math.ceil(nombre_tronque);
	
	
}


/*
* Récupère les éléments du json en fonction du type
* @json				: json
* @type				: type du json
************************************************************************/
var getJSONFragment = function(json, type) {
	return (typeof json == 'object' && json[type]) ? json[type] : null;
};


function Createdevise(devise,taux,symbole) {
      this.devise=devise;
	  this.taux=taux;
      this.symbole=symbole;
}

/*
* Gère la création du menu déroulant contenant les devises
* @idSelect		    : ID du Select
* @currenciesJson   : Tableau de l'ensemble des devises =json
* @defaultCurrency  : Valeur à sélectionner par défaut = Userlocalisation
*****************************************************************************************************/

function writeSelectCurrencies(idSelect, currenciesJson, defaultCurrency){

	var select = getElement(idSelect);
	var j = 0;

		if (select && select.nodeName== "SELECT") {
				select.options.length 	= 0;
				for(var count = 0; count < currenciesJson.length-1;count++){
					
					if (currenciesJson[count].devise != currenciesJson[count+1].devise) {
						select.options[j] = new Option(currenciesJson[count].devise, currenciesJson[count].devise);
						currenciesTab[j] = new Createdevise(currenciesJson[count].devise,currenciesJson[count].taux,currenciesJson[count].symbole);
						
					j++;
					}

					if (count+2 == currenciesJson.length) {
						select.options[j] = new Option(currenciesJson[count+1].devise, currenciesJson[count+1].devise);
						currenciesTab[j] = new Createdevise(currenciesJson[count+1].devise,currenciesJson[count+1].taux,currenciesJson[count+1].symbole);
					}
					
				}
				
				for (var j = 0; j < currenciesTab.length;j++) {
					if(currenciesTab[j].devise == defaultCurrency){
							select.options[j].selected = true;
					}
					
				}
		}
}

/*
* Fonction permettant de convertir les prix en fonction de la devise sélectionnée
* @idSelect		    : ID du Select
* @defaultCurrency  : 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, oElm, strTagName, oClassNames){
	
	
	var selectedCurrency = getElement(idSelect).value;//Devise à afficher


	var deviseTo= new Array();  // Valeur de la devise a convertir
	var prixConv = 0;
	var prixDepart=0;
	var prixEuros=0;
	var formaTtaux=0;
	var symbole="";

	for(var i = 0; i < currenciesTab.length; i++) {
		if(currenciesTab[i].devise==selectedCurrency){
		formaTtaux=currenciesTab[i].taux;
		
		}
		
		if(currenciesTab[i].devise==selectedCurrency){
				symbole=currenciesTab[i].symbole;
		}
	}
	
	
	for(i=0;i<tabDevise.length;i++){
	
	tabDevise[i].style.display="none";
	tabPrix[i].style.display="none";
	
	
	
		if(tabDevise[i].innerHTML==selectedCurrency){
	
				if(tabPrixAffiche[i].innerHTML){
					
					
							tabPrixAffiche[i].innerHTML = tabPrix[i].innerHTML;
							tabDeviseAffiche[i].innerHTML = symbole;
				}
		}else{
		

			for(var j = 0; j < currenciesTab.length; j++) {
			
				
				if(tabDevise[i].innerHTML==currenciesTab[j].devise){
				
					deviseTo[j]=currenciesTab[j].taux;
				
					prixDepart=tabPrix[i].innerHTML;
					prixEuros=tabPrix[i].innerHTML / deviseTo[j];
					prixConv= prixEuros * formaTtaux;
					
					
					if(prixConv != 0){
					
						if(tabPrixAffiche[i].innerHTML){
						
							tabPrixAffiche[i].innerHTML = truncate(prixConv);

							tabDeviseAffiche[i].innerHTML = symbole;
							
								
						}else if(tabPrix[i].document && tabPrix[i].document != window.document){
						
							tabPrix[i].document.open();
							tabPrix[i].document.write(truncate(prixConv));
							tabPrix[i].document.close();
						}
					}
					
					
				}
			}
		}
	}
	//alert("ok");
	
}


/*
* Actualise l'affichage et exécute la conversion des devises
* @oElm				: par défaut : document
* @defaultCurrency	: devise par defaut (au depart cookie puis liste)
* @classContainer	: la classe contenant 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, strTagName, tmpClassPrix, tmpClassDevise, oldClassPrix, oldClassDevise){
//alert("test"+oldClassDevise);

	tabDevise=getElementsByClassName(oElm, strTagName, oldClassDevise);
	tabDeviseAffiche=getElementsByClassName(oElm, strTagName, tmpClassDevise);
	tabPrix =getElementsByClassName(oElm, strTagName, oldClassPrix);
	tabPrixAffiche =getElementsByClassName(oElm, strTagName, tmpClassPrix);
	
	convertToCurrency(idSelect, defaultCurrency,oElm, strTagName, oldClassPrix);
	
}














/*
* Fonction pour lire le json et appeler les autres fonctions
* @options			: options du json
************************************************************************/
var addTemplateToPage = function(options) {
var dom = options.insertTo;

if (dom != null) {

			new Ajax.Request(options.url + '?day=' + new Date().getDay(), {
						method: 'get',
						onSuccess: function(request) {
						

		
							var json = request.responseText;
		
							if (typeof json == 'string') {
								json = eval('(' + json + ')');
							} 
							
							if (typeof json == 'object') {
						
							var fragment = getJSONFragment(json, options.type);
							var tmp=options.code_pays;
							var defaultCurrencyFrom=0;
							
								for(var i = 0; i < fragment.length; i++){
									if (fragment[i].symbole == tmp){
										defaultCurrencyFrom=fragment[i].devise;
										deviseFrom=fragment[i].taux;
									}
								}
								
								defaultCurrency=defaultCurrencyFrom;
								
								for (var i = 0; i < fragment.length; i++) {
									if (fragment[i].codepays.toLowerCase() == options.code_pays) defaultCurrency=fragment[i].devise;
								}
							
	
							writeSelectCurrencies(options.insertTo,fragment, defaultCurrency);
			
							updatePricesAndCurrencies(options.insertTo,defaultCurrency,document,"span", "amount","currency","origAmount","origCurrency");
								
								Event.observe(options.insertTo, "change",
										function(){
										
											
											defaultCurrency= getElement(options.insertTo).value;
											updatePricesAndCurrencies(options.insertTo,defaultCurrency,document,"span", "amount","currency","origAmount","origCurrency");
											
										}
									)
							
							}
							

						},
						onComplete: function(){ 
						
						}
					
				});
}
};
