/* * * * * * * * * *     SUNFORM SCRIPT    * * * * * * * * * *\
*                                                             *
*  Uses input from a form to computes Sun rise/set times,     *
*  start/end of twilight, using the SUNRISET script.          *
*                                                             *
*  In English (lCode = 0) or Swedish (lCode = 1)              *
*                                                             *
*  --  Written by Bo Johansson  1998-05-24 , 1998-06-29  --   *
*      Minor corrections  2000-03-27                          *
*  --  Opera 4 bug fix  2000-10-14                            *
*                                                             *
*  --  http://w1.545.telia.com/%7Eu54504162/index_e.htm   --  *
\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

function checkInt(item, min, max, bText, lCode)
{
  var checkVal = parseInt(item.value)
  var returnVal = false

  var aText1 = "Please enter a number"
  var aText2 = "Please enter a number >= " + min
  var aText3 = "Please enter a number <= " + max

  if(lCode == 1)
  {
    aText1 = "Skriv in ett heltal"
    aText2 = "Skriv in ett tal >= " + min
    aText3 = "Skriv in ett tal <= " + max
  }

  if ( isNaN(checkVal) ) 
     alert(bText + ":\n" + aText1)

  else if (checkVal < min) 
    alert(bText + ":\n" + aText2)

  else if (checkVal > max) 
    alert(bText + ":\n" + aText3)

  else 
    returnVal = true

  return returnVal
  
} //================= checkInt() ===========================


function checkFloat(item, min, max, bText, lCode)
{
  var checkVal = parseFloat(item.value)
  var returnVal = false

  var aText1 = "Please enter a number"
  var aText2 = "Please enter a number >= " + min
  var aText3 = "Please enter a number <= " + max

  if(lCode == 1)
  {
    aText1 = "Skriv in ett tal"
    aText2 = "Skriv in ett tal >= " + min
    aText3 = "Skriv in ett tal <= " + max
  }

  if ( isNaN(checkVal) ) 
      alert(bText + ":\n" + aText1)

  else if (checkVal < min) 
      alert(bText + ":\n" + aText2)

  else if (checkVal > max) 
      alert(bText + ":\n" + aText3)

  else 
      returnVal = true

  return returnVal
  
} //================= checkFloat() =========================


function formValues(form, lCode)
{
  var latText = "Latitude"
  var lonText = "Longitude"
  var yearText = "Year"
  var monthText = "Month"
  var dayText = "Date"

  if(lCode == 1)
  {
    latText = "Latitud"
    lonText = "Longitud"
    yearText = "År"
    monthText = "Månad"
    dayText = "Dag"
  }

  if( !checkFloat(form.inpLat, -90.0, 90.0, latText, lCode) )
    return
    
  var lat = parseFloat(form.inpLat.value)

  if( (lat >= 0) && (form.inpLat.value.indexOf("-") != -1) )
  {
     lat = -lat;    // *** Hack for Opera 4.0  2000-10-14
  }

  var absLat = Math.abs(lat)


  if( !checkFloat(form.inpLon, -180.0, 180.0, lonText, lCode) )
    return 

  var lon = parseFloat(form.inpLon.value)

  if( (lon >= 0) && (form.inpLon.value.indexOf("-") != -1) )
  {
     lon = -lon;    // *** Hack for Opera 4.0  2000-10-14
  }

  var absLon = Math.abs(lon)


  if( !checkInt(form.inpYear, 1901, 2099, yearText, lCode) )
    return
    
  var year = parseInt(form.inpYear.value)


  if( !checkInt(form.inpMonth, 1, 12, monthText, lCode) )
    return
    
  var month = parseInt(form.inpMonth.value)

  var monthMax

  if(month == 2 && (year % 4) == 0)
    monthMax = 29

  else if(month == 2) 
    monthMax = 28

  else if( (month == 4) || (month == 6) || (month == 9) ||
           (month == 11) ) 
    monthMax = 30

  else
    monthMax = 31


  if( !checkInt(form.inpDay, 1, monthMax, dayText, lCode) )
    return
    
  var day = parseInt(form.inpDay.value)

  
  sunRiseSet(year,month,day,lat,lon);

  civTwilight(year,month,day,lat,lon);


  var resultText = ""

  var twsText = "Twilight starts: "
  var tweText = "Twilight ends: "
  var twAllText = "Twilight all night"
  var twNoText = "No twilight this day"

  var srText = "Sunrise: "
  var ssText = "Sunset: "
  var sAllText = "Sun is up 24 hrs"
  var sNoText = "Sun is down 24 hrs"


  if(lCode == 1)
  {
    twsText = "Gryning: "
    tweText = "Skymning: "
    twAllText = "Gryning/skymning\nhela natten"
    twNoText = "Ingen gryning/skymning\ndetta dygn"

    srText = "Soluppgång: "
    ssText = "Solnedgång: "
    sAllText = "Solen uppe 24 tim."
    sNoText = "Solen nere 24 tim."
  }


  resultText += absLat

  if(lat < 0)
    resultText += "S "

  else
    resultText += "N "

  resultText += absLon

  if(lon < 0)
    resultText += "W\n"

  else
    resultText += "E\n"

  resultText += year + "-"

  if(month < 10)
    resultText += "0"

  resultText += month + "-"

  if(day < 10)
    resultText += "0"

  resultText += day + "\n"


  var twst_h = Math.floor(twStartT)
  var twst_m = Math.floor((twStartT - twst_h)*60)

  var sris_h = Math.floor(sRiseT)
  var sris_m = Math.floor((sRiseT - sris_h)*60)

  var sset_h = Math.floor(sSetT)
  var sset_m = Math.floor((sSetT - sset_h)*60)

  var twen_h = Math.floor(twEndT)
  var twen_m = Math.floor((twEndT - twen_h)*60)

  if(twStatus == 0)
  {
    resultText += twsText

    if(twst_h < 10)
      resultText += "0"

    resultText += twst_h + "."

    if(twst_m < 10)
      resultText += "0"

    resultText += twst_m + "\n"
  }

  else if(twStatus > 0 && srStatus <= 0)
  {
    resultText += twAllText + "\n"
  }

  else
  {
    resultText += twNoText + "\n"
  }


  if(srStatus == 0)
  {
    resultText += srText
    
    if(sris_h < 10)
      resultText += "0"

    resultText += sris_h + "."

    if(sris_m < 10)
      resultText += "0"

    resultText += sris_m + "\n"
    
    resultText += ssText

    if(sset_h < 10)
      resultText += "0"

    resultText += sset_h + "."

    if(sset_m < 10)
      resultText += "0"

    resultText += sset_m + "\n"
  }

  else if(srStatus > 0)
  {
    resultText += sAllText + "\n"
  }

  else
  {
    resultText += sNoText + "\n"
  }

  if(twStatus == 0)
  {
    resultText += tweText

    if(twen_h < 10)
      resultText += "0"

    resultText += twen_h + "."

    if(twen_m < 10)
      resultText += "0"

    resultText += twen_m
  }

  form.outpResult.value = resultText

}  //================= formValues() ========================= 

/* * * * * * * * *   SUNFORM SCRIPT - END -  * * * * * * * * */

