/**
 * GESTION DE LA PAGE HEBERGEMENT CUSTOM
 */

 /**
  * Format un nombre
  */
 function formatPrice(price) {
 	price = Math.round(price) / 100.0;
	if (price - Math.floor(price) == 0) {
		price = price + ".00";
	} else {
		var string = price.toString();
		var parts = string.split(".");
		var cents = parts[1];
		if (cents.length == 1) {
			price = price + "0";
		}
	}
	return price;
 }

 /**
  * On met à jour les totaux
  */
  function updateTotal() {

	// On récupère le prix de tout les sous totals
	var total_ht = 0.0;
	var start_price_input = document.getElementById('start_price_input');
	if (start_price_input != null) {
		total_ht = parseFloat(start_price_input.value);
	}
	var total_types = ['web','email','domain','service'];
	for (var i=0;i < total_types.length;++i) {

		// On récupère si le bloc est affiché ou non
		var elem = document.getElementById('hosting_'+total_types[i]);
		if (elem != null) {
			var isDisplayed = (elem.style.display == '');
	
			// Si il est affiché
			if (isDisplayed == true) {
	
				// On récupère le prix du bloc
				var label = document.getElementById('price_'+total_types[i]+'_total').innerHTML;
				
				// S'il existe
				if (label != "") {
				
					// On l'ajoute au total
					total_ht += parseFloat(label);
				}
			}
		}
	}

	// On met à jour le prix total HT
	document.getElementById('total_ht').innerHTML = formatPrice(total_ht*100);

	// On met à jour la TVA
	document.getElementById('total_tva').innerHTML = formatPrice(((total_ht*19.6)/100.0)*100);

 	// On met à jour le TTC
	document.getElementById('total_ttc').innerHTML = formatPrice(total_ht * 119.6);
  }

 /**
  * On met à jour ce qui concerne un champ
  */
  function updateField(selectId, json) {
 
 	 // Si on ne possède pas le tableau des prix on le récupère
 	 if (json==null) { 
 	 	json = eval('(' + document.getElementById('json').value + ')');
 	 }
 	 
 	 var prices = json[selectId.id][selectId.value];

 	 // On update le prix du champs
 	 document.getElementById('price_'+selectId.id).innerHTML = formatPrice(prices[0]);
 	 
 	 if (prices[0] == prices[1]) {
	 	document.getElementById('old_price_'+selectId.id).innerHTML = '';
	 } else {
	 	document.getElementById('old_price_'+selectId.id).innerHTML = formatPrice(prices[1]) + ' &euro;';
	 }

	 // On récupère le nom du tableau à traiter pour le calcul
	 var splits = selectId.id.split('_');
	 var tab_name = 'hosting_'+splits[0]+'_subtotal';

 	 // On initialise le prix du sous total à 0
 	 var subtotal = 0.0;

 	 // On récupère les labels de tout les prix de notre sous partie
 	 var elements = document.getElementById(tab_name).getElementsByTagName('label');

 	 // On additione le prix de chacun d'eux au sous total
 	 var nb_elements = elements.length;
 	 for (var i = 0; i < nb_elements; ++i) {
 		if ((elements[i].id.substr(0, 4) != 'old_') && (elements[i].innerHTML != '')) {
 	 		subtotal += parseFloat(elements[i].innerHTML);
 	 	}
 	 }
	
	// On met à jour le prix du sous total
	document.getElementById('price_'+splits[0]+'_total').innerHTML = formatPrice(subtotal*100);
	
	// On met à jour le total
	updateTotal();
  }

 /**
  * On met à jour le type du nom de domaine
  */
  function updateDomainType(selectId) {
 
  	// On récupère l'index du select
  	var splits = selectId.id.split('_');
  	var idx = splits[2];
  	
  	// On met à jour le champs
  	updateDomainField(document.getElementById('domain_number_'+idx), null);
  }

 /**
  * On met à jour ce qui concerne un champ de type noms de domaine
  */
 function updateDomainField(selectId, json) {

 	 // Si on ne possède pas le tableau des prix on le récupère
 	 if (json==null) { 
 	 	json = eval('(' + document.getElementById('json').value + ')');
 	 }

	// On récupère l'index du select
	var splits = selectId.id.split('_');
	var idx = splits[2];

	// On récupère le nom du TLD
	var tld = document.getElementById('domain_tld_'+idx).value;

 	 // On update le prix du champs
 	 document.getElementById('price_domain_'+idx).innerHTML = formatPrice(json['domain_'+tld][selectId.value]);

	 // On récupère le nom du tableau à traiter pour le calcul
	 var tab_name = 'hosting_domain_subtotal';

 	 // On initialise le prix du sous total à 0
 	 var subtotal = 0.0;

 	 // On récupère les labels de tout les prix de notre sous partie
 	 var elements = document.getElementById(tab_name).getElementsByTagName('label');

 	 // On additione le prix de chacun d'eux au sous total
 	 var nb_elements = elements.length;
 	 for (var i = 0; i < nb_elements; ++i) {
 		if (elements[i].innerHTML != '') {
 	 		subtotal += parseFloat(elements[i].innerHTML);
 	 	}
 	 }

	// On met à jour le prix du sous total
	document.getElementById('price_domain_total').innerHTML = formatPrice(subtotal*100);
	
	// On met à jour le total
	updateTotal();
 }

 /**
  * On met à jour l'affichage des blocs
  */
 function displayBloc(type) {
 
 	// On affiche ou masque le bloc
 	document.getElementById('hosting_'+type).style.display = (document.getElementById('has_'+type).checked)?(''):('none');

 	// On met à jour les totaux
 	updateTotal();
 }
 
 /**
  * On initialise les labels de la page
  */
 function initFields() {
 
 	 // On récupère le tableau des prix
 	 var json = eval('(' + document.getElementById('json').value + ')');

	// On initialise les différents types
	var types = ['web','email','domain','service'];

	// Pour chaque types
	for (var i = 0; i < types.length; ++i) {

		// On récupère tout les selects^
		var elem = document.getElementById('hosting_'+types[i]);
		
		if (elem != null) {
			var selects = elem.getElementsByTagName('select');
			
			// Pour chaque select
			for (var j = 0; j < selects.length; ++j) {
			
				// Si c'est un select de type nom de domaine
				if (types[i] == 'domain') {
				
					// Si le select correspond à la valeur et non au type du domaine
					if (selects[j].id.match(/domain_number_(\d+)/)) {
					// On met son prix à jour
						updateDomainField(selects[j], json);
					}
	
					// Si ce n'est pas de type nom de domaine
				} else {
	
					// On met son prix à jour
				 	updateField(selects[j], json);
				 }
			}
		}

	}
 }
 
