/**
       ///////////////////////////////////////////////////////////////////////////
       // UnitConverter, Version 1.1, 2005/12       (approximately 700 units)   //
       // Copyright (C) 2005 by Hans Bauer, Schillerstr. 30, D-73072 Donzdorf   //
       //                       http://www.h-bauer.de                           //
       //                                                                       //
       // This program is free software; you can redistribute it and/or modify  //
       // it under the terms of the GNU General Public License as published by  //
       // the Free Software Foundation. No warranty is given for accuracy.      //
       ///////////////////////////////////////////////////////////////////////////
          Basic websites (for imformations only):
          - http://www.convert-me.com
          - http://www.onlineconversion.com
          - http://www.sengpielaudio.com/RechnerEinheitenumrechnung.htm
          - http://en.wikipedia.org/wiki/Conversion_of_units
          - http://de.wikipedia.org/wiki/Angloamerikanisches_Ma%C3%9Fsystem
          - http://de.wikipedia.org/wiki/Druck_(Physik)

          To open the UnitConverter in a popup-window:
          -> Type 'popup' into the 'value'-field and press 'enter'.

       //  Changes Version 1.0 -> 1.1:
       //  - Conversion for 'millibar' in 'force per area' added
       //  - Erroneous conversions in 'volume flux' for m^3, dm^3, cm^2 rectified
      //Modificat per Marc Zulet per a ADA Consultors | Modificado por Marc Zulet para ADA Consultores. http://www.ada-c.com
**/

function initialize() {                                                         //>Initialize
 fillLists();                                                                   // FillLists (base, target)
 document.getElementById("value").value = " "; 								    // Write 'Introducir Valor | Introduir Valor' into value-field
 document.getElementById("value").focus();                                      // Set focus to value-field
 document.getElementById("value").select();                                     // Select 'Introducir Valor | Introduir Valor' in value field
 calculate();  }                                                                // Calculate -> '- - - - -' in result

function newType()   { clearLists();                 fillLists();               //>NewType
                       calculate();                  setFocus();  }             //
function newValue()  { calculate();                  setFocus();  }             //>NewValue
function newBase()   { calculate();                  setFocus();  }             //>NewBase
function newTarget() { calculate();                  setFocus();  }             //>NewTarget
function setFocus()  { document.getElementById("value").focus();  }             //>SetFocus

function clearLists() {                                                         //>ClearLists (base, target)
 var base   = document.getElementById("base");                                  // Get Html-element of the base
 var target = document.getElementById("target");                                // Get Html-element of the target
 for (var i=base.length-1; i>=0; i--) {                                         // Loop: content of the lists
   base.options[i]   = null;                                                    //   Void base-item
   target.options[i] = null;  } }                                               //   Void target-item

function enter() {                                                              //>Enter pressed
 var input = document.getElementById("value").value;                            // Value of the input-field
 if (input=="Introducir Valor | Introduir Valor")                               // On 'Introducir Valor | Introduir Valor'
   var pop = window.open("conversor-co2.html","",                               // -> Open converter in a Introducir Valor | Introduir Valor
       "resizable=yes,scrollbars=no,width=365,height=180,left=50,top=8"); }     //    with several window options

function calculate() {                                                          //>Calculate
 var type        = document.getElementById("type");                             // Html-Element of type (category)
 var typeID      = type.options[type.selectedIndex].id;                         // ID of the choosen type
 var input       = document.getElementById("value").value;                      // Content (text) of input-value
 var white       = input.match(/\s*/);                                          // White spaces in input (for opera)
 var value       = parseFloat(input.replace(/,/,'.'));                          // Parsed string with ','->'.' or NaN
 var baseValue   = document.getElementById("base").value;                       // Base-value
 var targetValue = document.getElementById("target").value;                     // Target-value
 if (typeID=="numbersystem") {                                                  // On Numbersystem:
     calculateNumbersystem(input, baseValue, targetValue);    return; }         //    -> Calculate Numbersystem
 if (isNaN(value) || (white && input==white)) {                                 // No valid number or only whitespaces
     document.getElementById("result").value="- - - - - -";   return; }         //    -> Clear result value
 if (typeID=="temperature") {                                                   // On Temperature:
     calculateTemperature(value, baseValue, targetValue);     return; }         //    -> Calculate Temperature
 var result = value * baseValue;                              				    // Else: Convert value to result
 document.getElementById("result").value = result;  }                           //       Write result in text-field

function calculateNumbersystem(input, base, target) {                           //>CalculateNumbersystem
 var valid   = validateInput(input, base);                                      // Validate the input-field (value)
 var decimal = parseInt(valid, base);                                           // Convert input-value to decimal
 var result  = decimal.toString(target);                                        // Convert decimal-value to target syst.
 document.getElementById("result").value = result;  }                           // Write target-value to result field

function validateInput(input, base) {                                           //>ValidateInput (for number systems)
 var decimal = parseInt(input, base);                                           // Convert input-value->decimal-integer
 if (isNaN(decimal)) decimal = "";                                              // No decimal number  ->void input-field
 var valid = decimal.toString(base);                                            // Convert decimal back to base-system
 document.getElementById("value").value = valid;                                // Write validated value to input field
 return valid; }                                                                // Return validated value

function calculateTemperature(value, base, target) {                            //>CalculateTemperature
 var tco2 = Number.NaN;                                                      	// Convert base to celsius
 if      (base=="[GLPM3]") tco2 =  (value/431)*2.50;                            //     [GLPM^3] -> [TC02]
 else if (base=="[TCO2]")   tco2 =  value;                                      //     [TC02 -> [TC02]
 else if (base=="[GLPK]")   tco2 = (value/900)*2.50;                            //     [GLPK] -> [TC02]
 else if (base=="[FL]")     tco2 = (value/1010)*3.29;                           //     [FL] -> [TC02]
 else if (base=="[FK]")     tco2 = (value/960)*3.29;                            //     [FK] -> [TC02]
 else if (base=="[G]")      tco2 = (value/1150)*3.06;                           //     [G] -> [TC02]
 else if (base=="[GN]")     tco2 = (value/1075)*2.34;                           //     [GN] -> [TC02]
 else if (base=="[E]")      tco2 = (value/11620)*5.39;                          //     [E] -> [TC02]
 
 var result = Number.NaN;                                                       // Convert celsius to target
 if      (target=="[TCO2]")  result  = tco2;                         			//     [C] -> [F]
 else if (target=="[TCO2]")  result  =  tco2;                                   //     [C] -> [C]

 document.getElementById("result").value = result;  }                           // Write result in text-field

function enlist(text, value) {                                                  //>Enlist given items to base & target
 var base   = document.getElementById("base");                                  // Html-Element for Base-Unit
 var target = document.getElementById("target");                                //                  Target-Unit
 base.options[base.length]     = new Option(text, value);                       // Set Html-Properties to base
 target.options[target.length] = new Option(text, value); }                     //                        target

function fillLists() {                                                          //>FillLists
 var type   = document.getElementById("type");                                  // Get Html-Element of the 'type'
 var typeID = type.options[type.selectedIndex].id;                              // Get the ID of the selected type
 
 if      (typeID=="temperature") {                                              // Temperatures:
   enlist("[TCO2] Toneladas CO2",                   "[TCO2]");                  //   [TCO2] és la base
   enlist("[E] Kwh Electricitat",                   "[E]");                     //   [E] 
   enlist("[GN] m3 Gas Natural",                    "[GN]");                    //   [GN] 
   enlist("[G] Litros de Gasóleo",                  "[G]");                     //   [G]  
   enlist("[FL] Litros de Fuel-oil ",               "[FL]");                    //   [F] 
   enlist("[FK] Kilos de Fuel-oil ",                "[FK]");                    //   [F] 
   enlist("[GLPK] Kilos de GLP ",        		    "[GLPK]");                  //   [GLP] 
   enlist("[GLPM3] m3 GLP",              		    "[GLPM3]"); }    }           //   [GLP] 
   
   
 
