// Copyright 2004 (c) Zator Systems SL. All Rights Reserved.
// *** PLEASE NOTE: THIS IS NOT FREE SOFTWARE, IT MUST BE LICENSED FOR ALL USE ***
var uLng = new Array("metro","decímetro","centímetro","milímetro","braza Esp","braza US",
   "chain Gu","link Gu","chain Eng", "estadio US",
   "milla Te UK","milla Te US","milla Na Int","milla Na UK","milla Na US","milla St UK","milla St US",
   "pié UK", "pié US", "pulgada UK","pulgada US", "rod UK", "rod US", "yarda UK","yarda US");
//var xLng = new Array(1, 10, 100, 1000, 1/1.67, 0.5468066,
//   1/0.9144/22, (1/0.9144/22)*100, 39.37/1200, 0.004970959,
//   (1/0.9144)/1760, (39.37/36)/1760, 1/1852, (3/0.9144)/6080, (39.37/12)/6080, (1/0.9144)/1760, (39.37/36)/1760,
//   3/0.9144, 39.37/12, 36/0.9144, 39.37, 1/0.9144/5.5, 39.37/36/5.5, 1/0.9144, 39.37/36);

var xLng = new Array(10, 100, 1000, 10000, 10/1.67, 5.468066,
   10/0.9144/22, (10/0.9144/22)*100, 39.37/120, 0.04970959,
   (10/0.9144)/1760, (393.7/36)/1760, 10/1852, (30/0.9144)/6080, (30/0.9144)/6080.20, (10/0.9144)/1760, (393.7/36)/1760,
   30/0.9144, 393.7/12, 360/0.9144, 393.7, 10/0.9144/5.5, 393.7/36/5.5, 10/0.9144, 393.7/36);

var uLngS = new Array("yard", "foot", "inch", "line", "rod, pole, perch",
   "furlong", "mile", "Gunter's chain", "Engineer's chain", "link");
var xLngS = new Array(1760, 5280, 63360, 760320, 320,
   8, 1, 80, 52.8, 8000);

var uSup = new Array("metro2","centiárea","área","hectarea",
    "acre UK","acre US","chain2 Gu","link2 Gu","milla2 UK",
	"milla2 US","pie2 UK","pie2 US","pulg2 UK","pulg2 US","rod2 UK","rod2 US","yarda2 UK","yarda2 US");
var xSup = new Array(1, 1, 0.01, 0.0001,
    0.0002471061,0.0002471054,0.002471044,24.71044,3.861034E-7,
    3.861007E-7, 10.76394, 10.76391, 1550.0079, 1550.003, 0.039537,0.0395367, 1.195994, 1.195985);

var uVol = new Array("litros","m3","dm3","cm3","bushel UK","bushel US","drachm UK","dram US",
    "galón UK","galón US ar","galón US lq","gill UK","gill US","minim US","onza UK fl","onza US fl",
    "pie3 UK","pie3 US","pinta UK","pinta US ar","pinta US lq",
    "pulg3 US","quart UK","quart US ar","quart US lq","yarda3");
var xVol = new Array(1,0.001000028,1.000028,1000.028,0.02749697,0.02837819,281.5688,270.5181,
     0.2199756,0.2270258,0.2641779,7.039219,8.45368,16231.11,35.19609,33.81475,
     0.03531583,0.03531544,1.759809,1.816195,2.113423,
     61.02509,0.8799022,0.9081026,1.056711,0.001307979);

var uVolS = new Array("minim", "drachm fl", "ounce fl", "gill", "pint",
    "quart", "gallon", "peck", "bushel", "sack", "quarter", "chaldron");
var xVolS = new Array(22118400, 368640, 46080, 9216, 2304,
     1152, 288, 144, 36, 12, 4.5, 1);

var uMas = new Array("Kilogramo", "gramo", "miligramo", "dina", "dram Ap/Tr", "dram Av",
    "grain Av/Tr", "libra Ap/Tr", "libra UK Av", "libra US av", "onza Ap/Tr", "onza Av",
    "pennyweight","poundal","quintal me","slug", "scruple Ap", "tonelada me");
var xMas = new Array(1, 1000, 1000000, 980665, 257.205972549, 564.383391193,
    15432.3583529, 2.67922888072, 2.20462262185, 2.20462234141, 32.1507465686, 35.2739619496,
    643.014931373, 70.93152, 0.01, 0.6852178, 771.617917647 ,0.001);

var uMasS = new Array("grain", "dram (dr)", "ounce (oz)", "pound (lb)", "stone",
    "quarter", "hundredweight (cwt)", "ton");
var xMasS = new Array(15680000, 573440, 35840, 2240, 160,
    80, 20, 1);

var uFza = new Array("Kilopondio","Kg-fuerza","gr-fuerza","dina","newton",
   "grain UK","onza UK","libra UK","libra US","poundal UK");
var xFza = new Array(1, 1,1000, 980665,9.80665,
   7000/0.45359237, 16/0.45359237, 1/0.45359237, 1/0.4535924277,70.93152);

var uVel = new Array("Km/h", "Km/min", "Km/s", "m/h", "m/min", "m/s", "braza/h US", "braza/min US",
   "yarda/h UK", "yarda/min UK", "yarda/s UK", "yarda/h US", "yarda/m US", "yarda/s US",
   "milla/h Te UK","milla/h Te US","nudo (MN Int/h)","milla/h Na UK","milla/h Na US","milla/h St UK", "milla/h St US",
   "pié/h UK", "pié/min UK","pié/s UK", "pié/h US", "pié/min US", "pié/s US");
var xVel = new Array(1, 1/60, 1/3600, 1000, 1000/60, 1000/3600, 546.8066, 546.8066/60,
   1093.615, 1093.615/60, 1093.615/3600, 1093.613, 1093.613/60, 1093.613/3600,
   0.6213722, 0.6213712, 0.5399568, 0.5396127, 0.539593, 0.6213722, 0.6213712,
   3280.845, 3280.845/60, 3280.845/3600, 3280.840, 3280.840/60, 3280.840/3600);

var uPr = new Array("Kg/cm2", "Kg/m2", "dina/cm2", "pascal", "newton/cm2", "newton/m2",
    "libr/pulg2  UK", "libr/pié2 UK", "onza/pulg2 UK", "onza/pié2 UK",
    "milibar", "bar",
    "atmósfera Std","atmósfera Tec","mm Hg 0gC", "mm H20 4gC");
var xPr = new Array(1, 10000, 980665, 98066.5, 9.80665, 98066.5,
    (91.44*91.44)/(0.45359237*1296),(91.44*91.44)/(0.45359237*9),(91.44*91.44)/(0.45359237*81),(16*91.44*91.44)/(0.45359237*9),
    98066.5/100, 98066.5/100000,
    1/1.0332276, 1, 760/1.0332276, 10000.28);

var uPot = new Array("cv", "Kg.m/s", "hp me", "hp UK", "hp US", "julio/s", "vatio (W)" );
var xPot = new Array(1/7.35499, 75/7.35499, 1/7.35499, 1/7.35499, 0.1341022, 100, 100);

var uTra = new Array("BTU", "Kg.m", "newton.m", "cal gramo", "cal term.", "cal Int", "Cal (Kcal)",
    "julio", "ergio", "w.h" );
var xTra = new Array(1/10.55056, 75/7.35499, 100, 100/4.1858, 100/4.184, 100/4.1868, 1/41.868,
    100, 1e9, 1/36);

var uTmp = new Array("Kelvin", "Celsius", "Fahrenheit");
var xTmp = new Array(1, 1, 9/5);

function creaOpt () {
    var itMag = document.forms['F1'].elements['tMag'].selectedIndex;	// Numero de opcion seleccionada
	var matriz = document.forms['F1'].elements['tMag'].options[itMag].value
	switch (matriz) {
		case "vacio":
        	alert('Debe seleccionar algún tipo!');
            break;
		case "uLng":
        	creaOx(uLng); break;
		case "uLngS":
        	creaOx(uLngS); break;
		case "uSup":
        	creaOx(uSup); break;
        case "uVol":
        	creaOx(uVol); break;
        case "uVolS":
        	creaOx(uVolS); break;
        case "uMas":
        	creaOx(uMas); break;
        case "uMasS":
        	creaOx(uMasS); break;
        case "uFza":
        	creaOx(uFza); break;
        case "uVel":
        	creaOx(uVel); break;
        case "uPr":
        	creaOx(uPr); break;
        case "uPot":
        	creaOx(uPot); break;
        case "uTra":
        	creaOx(uTra); break;
        case "uTmp":
        	creaOx(uTmp); break;
    }
}

function creaOx (matriz) {
//	borrar elementos anteriores
	var lngIni = document.forms['F1'].elements['uIni'].length;
	if (lngIni > 0) {
		var sIni = document.getElementById('uIni');
	    for (i = 0; i < lngIni; i++) { sIni.remove(0); }
	}
	var lngFin = document.forms['F1'].elements['uFin'].length;
	if (lngFin > 0) {
		var sFin = document.getElementById('uFin');
	    for (i = 0; i < lngFin; i++) { sFin.remove(0); }
	}
//	Añadir nuevos elementos
	var lng = matriz.length;
    for (i = 0; i < lng; i++) {
	    var nOpt = document.createElement("OPTION");
		nOpt.text = matriz[i];
		nOpt.value= i;
		document.forms['F1'].elements['uIni'].options.add(nOpt);
    }
    for (i = 0; i < lng; i++) {
	    var nOpt = document.createElement("OPTION");
		nOpt.text = matriz[i];
		nOpt.value= i;
		document.forms['F1'].elements['uFin'].options.add(nOpt);
    }
}

function convert (tUd) {
	if (!document.forms['F1'].elements['cIni'].value)  {
        alert('Debe indicar alguna magnitud inicial!');
        document.forms['F1'].elements['cIni'].focus();
        return;
    }
    var iIni  = document.forms['F1'].elements['uIni'].selectedIndex;
    var iFin  = document.forms['F1'].elements['uFin'].selectedIndex;
    var itMag = document.forms['F1'].elements['tMag'].selectedIndex;	// tipo de unidad seleccionada
	var matriz = document.forms['F1'].elements['tMag'].options[itMag].value
	var cIni = parseFloat(document.forms['F1'].elements['cIni'].value);
    if (cIni == 0 && matriz != "uTmp") {
        alert('La magnitud inicial debe ser distinta de cero!');
        document.forms['F1'].elements['cIni'].focus();
        return;
    }
	switch (matriz) {
		case "vacio":
        	alert('Debe seleccionar algún tipo!'); return;
		case "uLng":
			var factIni = xLng[iIni];
			var factFin = xLng[iFin];
            break;
		case "uLngS":
			var factIni = xLngS[iIni];
			var factFin = xLngS[iFin];
            break;
		case "uSup":
			var factIni = xSup[iIni];
			var factFin = xSup[iFin];
            break;
		case "uVol":
			var factIni = xVol[iIni];
			var factFin = xVol[iFin];
            break;
		case "uVolS":
			var factIni = xVolS[iIni];
			var factFin = xVolS[iFin];
            break;
        case "uMas":
			var factIni = xMas[iIni];
			var factFin = xMas[iFin];
            break;
        case "uMasS":
			var factIni = xMasS[iIni];
			var factFin = xMasS[iFin];
            break;
        case "uFza":
			var factIni = xFza[iIni];
			var factFin = xFza[iFin];
            break;
        case "uVel":
			var factIni = xVel[iIni];
			var factFin = xVel[iFin];
            break;
        case "uPr":
			var factIni = xPr[iIni];
			var factFin = xPr[iFin];
            break;
        case "uPot":
			var factIni = xPot[iIni];
			var factFin = xPot[iFin];
        	break;
        case "uTra":
			var factIni = xTra[iIni];
			var factFin = xTra[iFin];
        	break;
        case "uTmp":
			var factIni = xTmp[iIni];
			var factFin = xTmp[iFin];
			if (iIni == 0) {
            	if (iFin == 0) cFin = cIni;
            	if (iFin == 1) cFin = cIni - 273.15;
                if (iFin == 2) cFin = ((cIni-273.15)*factFin)+32;
            }
			if (iIni == 1) {
            	if (iFin == 0) cFin = (cIni*factFin)+273.15;
            	if (iFin == 1) cFin = cIni;
                if (iFin == 2) cFin = (cIni*factFin)+32;
            }
			if (iIni == 2) {
            	if (iFin == 0) cFin = ( (cIni - 32)/ factIni )+ 273.15;
                if (iFin == 1) cFin = (cIni - 32)/ factIni;
                if (iFin == 2) cFin = cIni;
            }
		    document.forms['F1'].elements['cFin'].value = cFin;
        	return;
	}
	var cFin = (cIni * factFin) / factIni;
    document.forms['F1'].elements['cFin'].value = cFin;
}

function foo() { window.status='Conversión de unidades'; return true; }

function onlydigits(e) {
	var key, keychar;
	if (window.event) key = window.event.keyCode;
	else if (e) key = e.which;
	else key = null;
	if (key == null) return true;
	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();
	var digits = 'Ee0123456789.-';
	if (digits.indexOf(keychar) != -1) return true;
	if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 ) return true;
	return false;
}
