
/*  _____________________________________________
   |  CONVERTISSEUR - Changer d'unités
	 ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ */
function changerConvertisseur(unite) {
	var bloc = new Array("poids","longueur","liquides","solides","temperatures","reperes");
	
	if(unite==""){
		
	}
	else{
		for (x=0;x<=5;x++)
		{
			document.getElementById(bloc[x]).style.display = "none";
		}
		document.getElementById(unite).style.display = "block";
	}
}


/*  _____________________________________________
   |  CONVERTISSEUR
	 ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ */
function convertir(section) { 
	var u1     = document.getElementById(section+'_unite_de').options[document.getElementById(section+'_unite_de').selectedIndex].value;
	var u2     = document.getElementById(section+'_unite_en').options[document.getElementById(section+'_unite_en').selectedIndex].value;
	var val    = document.getElementById(section+'_valeur_de').value.replace(',','.');
	var output = document.getElementById(section+'_valeur_en');
	
	// check unités
	if (u1 == u2) {
		alert('Vous devez choisir deux unités différentes'); 
		return false;
	}
	
	// check val
	if (!(/^\-?[0-9]+(\.?[0-9]+)?$/.test(val))) {
		alert('Votre valeur n\'est pas numérique'); 
		return false;
	}
	
	var newval;
	switch (section) {

		// poids
		// -------------------------
		case 'poids':
		switch (u1) {
			
			// gramme
			case 'gramme': 
				switch (u2) {
					case 'once'       : newval = val * 0.0352746; break;
					case 'livre'      : newval = val * 0.0022046; break;
					case 'kilogramme' : newval = val * 0.001;     break;
				}
			break; 
			
			// once
			case 'once': 
				switch (u2) {
					case 'gramme'     : newval = val * 28.349;   break;
					case 'livre'      : newval = val * 0.0625;   break;
					case 'kilogramme' : newval = val * 0.028349; break;
				}
			break; 
			
			// livre
			case 'livre': 
				switch (u2) {
					case 'gramme'     : newval = val * 453.592;  break;
					case 'once'       : newval = val * 16;       break;
					case 'kilogramme' : newval = val * 0.453592; break;
				}
			break; 
			
			// kilogramme
			case 'kilogramme': 
				switch (u2) {
					case 'gramme'     : newval = val * 1000;      break;
					case 'once'       : newval = val * 35.274612; break;
					case 'livre'      : newval = val * 2.2046244; break;
				}
			break; 
		}
		break;

		// longueur
		// -------------------------
		case 'longueur':
		switch (u1) {
				
			// centimètre
			case 'centimetre': 
				switch (u2) {
					case 'pouce'      : newval = val * 0.3937;       break;
					case 'pied'       : newval = val * 0.0328084;    break;
					case 'verge'      : newval = val * 0.0109361;    break;
					case 'metre'      : newval = val * 0.01;         break;
					case 'kilometre'  : newval = val * 0.00001;      break;
					case 'mille'      : newval = val * 0.0000062137; break;
				}
			break; 
			
			// pouce
			case 'pouce': 
				switch (u2) {
					case 'centimetre' : newval = val * 2.54;        break;
					case 'pied'       : newval = val * (1/12);      break;
					case 'verge'      : newval = val * 0.027778;    break;
					case 'metre'      : newval = val * 0.025;       break;
					case 'kilometre'  : newval = val * 0.0000254;   break;
					case 'mille'      : newval = val * 0.000015783; break;
				}
			break; 

			// pied
			case 'pied': 
				switch (u2) {
					case 'centimetre' : newval = val * 30.48;       break;
					case 'pouce'      : newval = val * 12;          break;
					case 'verge'      : newval = val * (1/3);       break;
					case 'metre'      : newval = val * 0.305;       break;
					case 'kilometre'  : newval = val * 0.0003048;   break;
					case 'mille'      : newval = val * 0.000189394; break;
				}
			break; 
			
			// verge
			case 'verge': 
				switch (u2) {
					case 'centimetre' : newval = val * 91.44;       break;
					case 'pouce'      : newval = val * 36;          break;
					case 'pied'       : newval = val * 3;           break;
					case 'metre'      : newval = val * 0.914;       break;
					case 'kilometre'  : newval = val * 0.0009144;   break;
					case 'mille'      : newval = val * 0.000568182; break;
				}
			break; 
			
			// mètre
			case 'metre': 
				switch (u2) {
					case 'centimetre' : newval = val * 100;         break;
					case 'pouce'      : newval = val * 39.37;       break;
					case 'pied'       : newval = val * 3.281;       break;
					case 'verge'      : newval = val * 1.094;       break;
					case 'kilometre'  : newval = val * 0.001;       break;
					case 'mille'      : newval = val * 0.000621371; break;
				}
			break; 
			
			// kilomètre
			case 'kilometre': 
				switch (u2) {
					case 'centimetre' : newval = val * 100000;   break;
					case 'pouce'      : newval = val * 39370;    break;
					case 'pied'       : newval = val * 3280.84;  break;
					case 'verge'      : newval = val * 1093.613; break;
					case 'metre'      : newval = val * 1000;     break;
					case 'mille'      : newval = val * 0.621;    break;
				}
			break; 
			
			// mille
			case 'mille': 
				switch (u2) {
					case 'centimetre' : newval = val * 160934.4; break;
					case 'pouce'      : newval = val * 63360;    break;
					case 'pied'       : newval = val * 5280;     break;
					case 'verge'      : newval = val * 1760;     break;
					case 'metre'      : newval = val * 1609.344; break;
					case 'kilometre'  : newval = val * 1.6093;   break;
				}
			break; 
		}
		break;

		// liquides
		// -------------------------
		case 'liquides':
		switch (u1) {
				
			// once
			case 'once': 
				switch (u2) {
					case 'tasse'      : newval = val * 0.125;     break;
					case 'pinte'      : newval = val * 0.0625;    break;
					case 'quart'      : newval = val * 0.03125;   break;
					case 'gallonus'   : newval = val * 0.0078125; break;
					case 'gallonimp'  : newval = val * 0.0065359; break;
					case 'litre'      : newval = val * 0.0295595; break;
					case 'millilitre' : newval = val * 29.411764; break;
				}
			break; 
	
			// tasse
			case 'tasse': 
				switch (u2) {
					case 'once'       : newval = val * 8;         break;
					case 'pinte'      : newval = val * 0.5;       break;
					case 'quart'      : newval = val * 0.25;      break;
					case 'gallonus'   : newval = val * 0.0625;    break;
					case 'gallonimp'  : newval = val * 0.0522875; break;
					case 'litre'      : newval = val * 0.2364765; break;
					case 'millilitre' : newval = val * 235.29411; break;
				}
			break; 
	
			// pinte
			case 'pinte': 
				switch (u2) {
					case 'once'       : newval = val * 16;        break;
					case 'tasse'      : newval = val * 2;         break;
					case 'quart'      : newval = val * 0.5;       break;
					case 'gallonus'   : newval = val * 0.125;     break;
					case 'gallonimp'  : newval = val * 0.1045751; break;
					case 'litre'      : newval = val * 0.472953;  break;
					case 'millilitre' : newval = val * 470.58823; break;
				}
			break; 
	
			// quart
			case 'quart': 
				switch (u2) {
					case 'once'       : newval = val * 32;        break;
					case 'tasse'      : newval = val * 4;         break;
					case 'pinte'      : newval = val * 2;         break;
					case 'gallonus'   : newval = val * 0.25;      break;
					case 'gallonimp'  : newval = val * 0.2091503; break;
					case 'litre'      : newval = val * 0.945906;  break;
					case 'millilitre' : newval = val * 941.17647; break;
				}
			break; 
	
			// gallon (us)
			case 'gallonus': 
				switch (u2) {
					case 'once'       : newval = val * 128;       break;
					case 'tasse'      : newval = val * 16;        break;
					case 'pinte'      : newval = val * 8;         break;
					case 'quart'      : newval = val * 4;         break;
					case 'gallonimp'  : newval = val * 0.8366013; break;
					case 'litre'      : newval = val * 3.783624;  break;
					case 'millilitre' : newval = val * 3764.7058; break;
				}
			break; 
	
			// gallon (imp)
			case 'gallonimp': 
				switch (u2) {
					case 'once'       : newval = val * 153;       break;
					case 'tasse'      : newval = val * 19.125;    break;
					case 'pinte'      : newval = val * 9.5625;    break;
					case 'quart'      : newval = val * 4.78125;   break;
					case 'gallonus'   : newval = val * 1.1953125; break;
					case 'litre'      : newval = val * 4.5226130; break;
					case 'millilitre' : newval = val * 4500;      break;
				}
			break; 
	
			// litre
			case 'litre': 
				switch (u2) {
					case 'once'       : newval = val * 33.83;       break;
					case 'tasse'      : newval = val * 4.22875;     break;
					case 'pinte'      : newval = val * 2.114375;    break;
					case 'quart'      : newval = val * 1.0571875;   break;
					case 'gallonus'   : newval = val * 0.264296875; break;
					case 'gallonimp'  : newval = val * 0.221111111; break;
					case 'millilitre' : newval = val * 1000;        break;
				}
			break; 
	
			// millilitre
			case 'millilitre': 
				switch (u2) {
					case 'once'       : newval = val * 0.034;       break;
					case 'tasse'      : newval = val * 0.00425;     break;
					case 'pinte'      : newval = val * 0.002125;    break;
					case 'quart'      : newval = val * 0.0010625;   break;
					case 'gallonus'   : newval = val * 0.000265625; break;
					case 'gallonimp'  : newval = val * 0.000222222; break;
					case 'litre'      : newval = val * 0.001;       break;
				}
				break; 
			}
		break;

		// solides
		// -------------------------
		case 'solides':
		switch (u1) {
				
			// cuillère à thé
			case 'cthe': 
				switch (u2) {
					case 'csoupe'     : newval = val * (1/3);     break;
					case 'gramme'     : newval = val * 4.761904;  break;
					case 'once'       : newval = val * (1/6);     break;
					case 'tasse'      : newval = val * (1/48);    break;
					case 'livre'      : newval = val * (1/96);    break;
					case 'kilogramme' : newval = val * 0.0047238; break;
				}
				break; 
	
			// cuillère à soupe
			case 'csoupe': 
				switch (u2) {
					case 'cthe'       : newval = val * 3;         break;
					case 'gramme'     : newval = val * 14.285714; break;
					case 'once'       : newval = val * 0.5;       break;
					case 'tasse'      : newval = val * 0.0625;    break;
					case 'livre'      : newval = val * 0.03125;   break;
					case 'kilogramme' : newval = val * 0.0141716; break;
				}
			break; 
	
			// gramme
			case 'gramme': 
				switch (u2) {
					case 'cthe'       : newval = val * 0.21;      break;
					case 'csoupe'     : newval = val * 0.0699999; break;
					case 'once'       : newval = val * 0.0352746; break;
					case 'tasse'      : newval = val * 0.0043749; break;
					case 'livre'      : newval = val * 0.0022046; break;
					case 'kilogramme' : newval = val * 0.001;     break;
				}
			break; 
					
			// once
			case 'once': 
				switch (u2) {
					case 'cthe'       : newval = val * 6;        break;
					case 'csoupe'     : newval = val * 2;        break;
					case 'gramme'     : newval = val * 28.349;   break;
					case 'tasse'      : newval = val * 0.125;    break;
					case 'livre'      : newval = val * 0.0625;   break;
					case 'kilogramme' : newval = val * 0.028349; break;
				}
			break; 
					
			// tasse
			case 'tasse': 
				switch (u2) {
					case 'cthe'       : newval = val * 48;         break;
					case 'csoupe'     : newval = val * 16;         break;
					case 'gramme'     : newval = val * 228.571428; break;
					case 'once'       : newval = val * 8;          break;
					case 'livre'      : newval = val * 0.5;        break;
					case 'kilogramme' : newval = val * 0.226746;   break;
				}
			break; 
	
			// livre
			case 'livre': 
				switch (u2) {
					case 'cthe'       : newval = val * 96;       break;
					case 'csoupe'     : newval = val * 32;       break;
					case 'gramme'     : newval = val * 453.592;  break;
					case 'once'       : newval = val * 16;       break;
					case 'tasse'      : newval = val * 2;        break;
					case 'kilogramme' : newval = val * 0.453592; break;
				}
			break; 
					
			// kilogramme
			case 'kilogramme': 
				switch (u2) {
					case 'cthe'       : newval = val * 211.69;    break;
					case 'csoupe'     : newval = val * 70.563333; break;
					case 'gramme'     : newval = val * 1000;      break;
					case 'once'       : newval = val * 35.274612; break;
					case 'tasse'      : newval = val * 4.4102083; break;
					case 'livre'      : newval = val * 2.2046244; break;
				}
				break; 
			}
		break;

		// température
		// -------------------------
		case 'temperature':
			switch (u1) {
				case 'celsius'   : newval = (val * 1.8) + 32; break; 
				case 'farenheit' : newval = (val - 32) / 1.8; break;
			}
		break;
	}

	// clean up decimals
	var nums = newval.toString().split('.');
	var decimals;
	
	if (nums.length > 1) {
		for (i=2; i>0; --i) {
			var digit = nums[1].substr((i-1),1);
			if (Number(digit)) {
				break;
			}
		}
		decimals = nums[1].substr(0,i);
	}
	output.innerHTML = nums[0]+(decimals ? ','+decimals : '');
	
	return false;
}

/*  _____________________________________________
   |  CONVERTISSEUR - Effacer
	 ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ */
function effacer(section) { 
	document.getElementById(section+'_valeur_de').value     = '';
	document.getElementById(section+'_valeur_en').innerHTML = '';

	return false;
}
