if (navigator.appName.indexOf('Microsoft') != -1)
  document.write("<style type=\"text/css\">.section{border: 2px solid #dfdfdf;}</style>");

/*

RootEnergyTime    = (RootLightEnergy * (RootLightOnTime/1000)) * RootTime
VegEnergyTime     = (VegLightEnergy * (VegLightOnTime/1000)) * VegTime
FlowerEnergyTime  = (FlowerLightEnergy * (FlowerLightOnTime/1000)) * FlowerTime
Overgrow Index     = DryYield / FlowerEnergyTime 
Energy Efficiency = DryYield / (RootEnergyTime + VegEnergyTime + FlowerEnergyTime)
Space Efficiency  = (DryYield / ((RootGrowArea + VegGrowArea + FlowerGrowArea) * (RootTime + VegTime + FlowerTime)))
Garden Efficiency = (Energy Efficiency + Space Efficiency) / 2

*/


function calc() {

  f=document.forms.ge;
  w=parseInt(f.totalWeight.value);

  rootEnergyTime = (parseInt(f.rootWatts.value) * (parseInt(f.rootHours.value) / 1000)) * parseInt(f.rootDays.value);
  vegEnergyTime = (parseInt(f.vegWatts.value) * (parseInt(f.vegHours.value) / 1000)) * parseInt(f.vegDays.value);
  bloomEnergyTime = (parseInt(f.bloomWatts.value) * (parseInt(f.bloomHours.value) / 1000)) * parseInt(f.bloomDays.value);

  overgrowIndex = w / bloomEnergyTime;
  energyEff = w / (rootEnergyTime + vegEnergyTime + bloomEnergyTime);

  spaceUsed = ((parseFloat(f.rootArea.value) + parseFloat(f.vegArea.value) + parseFloat(f.bloomArea.value))* 10.76) * (parseInt(f.rootDays.value) + parseInt(f.vegDays.value) +  parseInt(f.bloomDays.value));
  spaceEff = w / spaceUsed;
  gardenEff = (energyEff + spaceEff) / 2;

  if(!isNaN(overgrowIndex))
    f.overgrowIndex.value = round(overgrowIndex,2);
  else f.overgrowIndex.value = '';

  if(!isNaN(gardenEff))
    f.gardenEff.value = round(gardenEff,2);
  else
    f.gardenEff.value = '';

  if(!isNaN(energyEff))
    f.energyEff.value = round(energyEff,2);
  else
    f.energyEff.value = '';

  if(!isNaN(spaceEff))
    f.spaceEff.value = round(spaceEff,2);
  else
    f.spaceEff.value = '';

}
function round (n, d) {
  n = n - 0;
  d = d || 2;
  var f = Math.pow(10, d);
  n = Math.round(n * f) / f;
  n += Math.pow(10, - (d + 1));
  n += '';
  return d == 0 ? n.substring(0, n.indexOf('.')) :
      n.substring(0, n.indexOf('.') + d + 1);
}


function info (d) {

  if (d==1) {
    alertText="Overgrow Index предоставляет простой подсчет показателей цветения. В нем учтены: общая площадь, мощность ламп, кол-во дней затраченных на цветение, что позволяет точнее сравнить два разных сада, даже если в одном установлена лампа 85 ватт ЭСЛ и растение цвело 45 дней против 1000 ватт ДНАТ и растние цвело 90 дней. Если вы интересуетесь только тем как хорошо ваше растение цвело, то смотрите рейтинг ниже.\n\nЕсли ваш рейтинг равен 1.0, значит, вы опытный садовод. А рейтинг 2.0 соответствует суперагроному.\n\nТекущие рекорды (сайта ovewrgrow.com):\n\nOldtimer: 1.89\nMedMan: 1.84\nCobber: 1.75\nSharrina: 1.63\nQuimik: 1.58";
  } else if (d==2) {
    alertText="Эффективность сада. Это наиболее полная оценка, учитывающая все этапы роста растения. Если вы не озабочены эффективностью клонов или рассады, то Overgrow Index будет для вас более полезен. В целом \"Эффективность сада\" лучше подходит для сравнения садов с радикально разными методами выращивания. Этот рейтинг учитывает всевозможные параметры.";
  } else if (d==3) {
    alertText="Эффективность освещения используется в ситуации, когда критичным фактором является количество потребляемой энергии, которую вы бы хотели использовать.\n\nЭто верно для большинства садов - они проектируются под использование с лампами определенной мощности, будь это 70 или 1000 ватт. После того как садовник определился с лампами, необходимо определить рабочую площадь сада для использования этих ламп с максимальной эффективностью.\n\nДля SCROG-садов, у которых, как правило, площадь является ограничивающим фактором используется индекс эффективности площади.";
  } else if (d==4) {
    alertText="Эффективность площади. Этот рейтинг позволяет сравнивать сады, такие как SCROG, где площадь является определяющим фактором. Если вы растите на малой площади и свет удовлетворяет требованиям пространства, то вы получите более высокую эффективность площади.";
  } else if (d==5) {
    alertText="RootEnergyTime    = (RootLightEnergy * (RootLightOnTime/1000)) * RootTime\n";
    alertText+="VegEnergyTime      = (VegLightEnergy * (VegLightOnTime/1000)) * VegTime\n";
    alertText+="FlowerEnergyTime  = (FlowerLightEnergy * (FlowerLightOnTime/1000)) * FlowerTime\n\n";
    alertText+="Overgrow Index     = DryYield / FlowerEnergyTime \n";
    alertText+="Energy Efficiency  = DryYield / (RootEnergyTime + VegEnergyTime + FlowerEnergyTime)\n";
    alertText+="Space Efficiency  = (DryYield / ((RootGrowArea + VegGrowArea + FlowerGrowArea) * (RootTime + VegTime + FlowerTime)))\n";
    alertText+="Garden Efficiency = (Energy Efficiency + Space Efficiency) / 2";
  } else if (d==6) {
    alertText="1 кв. м = 100 кв. дм. Например площадь 0,25 кв. м = 25 кв. дм";
  }

  alert(alertText);
}

// Validate keypresses as they happen
function inString (cChar, sString) {
    //This function returns a true if character is in string
    var iLength = sString.length
    
    //Loop through, return true if found
    for (var iCounter=0; iCounter<sString.length; iCounter++)
    {
      if (cChar==sString.charAt(iCounter)) return true
    }

    return false
}

// Check to see if the entry is numeric, or with a dash.
// Usage: onKeyPress="return checkItNumeric(event);"
function checkItNumeric(e) {
  var sNumChars = "0123456789-.";
  var charCode = (navigator.appName =="Netscape") ? e.which : e.keyCode;

  charCode = String.fromCharCode (charCode);
  return inString (charCode, sNumChars);

}

// Usually called with onBlur, this function will re-focus the field if the value
// is greater than max
function checkTooHigh(field,max) {

  if (field.value > max)   {
    field.focus();
    field.select();
  }
}
