var TIMEZONEOFFSET = 0;
var STARTDATEOFFSETMIN = 4;
var STARTDATEOFFSETMAX = 185;
var PROBURL = "/tools/getprob";
var PRICEURL = "/quote";
var WINDOWTARGET = "_blank";
var INITIALVALUES = {'temp':65, 'location': 840023234, 'tempIndex':4, 'tempType':4};

function Calendar()
{
  this.getToday = function()
  {
    var today = new Date();
    var utc = today.getTime() + (today.getTimezoneOffset() * 60000);
    return new Date(utc + (3600000 * TIMEZONEOFFSET));
  };

  this._LZ = function(x)
  {
    return ((x < 0 || x > 9) ? "" : "0") + x
  }

  this._formatDate0 = function(y, m, d)
  {
    return this._LZ(m) + '/' + this._LZ(d) + '/' + this._LZ(y);
  }

  this.formatDate = function(date)
  {
    var year = date.getFullYear();

    if (year >= 2000)
    {
      year = year - 2000;
    }
    else
    {
      year = year - 1900;
    }

    return this._formatDate0(year, date.getMonth() + 1, date.getDate());
  }

  var _monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];

  this.getMonthName = function(month)
  {
    return _monthNames[month - 1];
  }

  this.toJulianDate = function(date)
  {
    var month = date.getMonth() + 1;
    var a = parseInt((14 - month) / 12);
    var y = date.getFullYear() + 4800 - a;
    var m = month + 12 * a - 3;
    return date.getDate() + parseInt((153 * m + 2) / 5) + 365 * y + parseInt(y / 4) - parseInt(y / 100) + parseInt(y / 400) - 32045;
  };

  this.fromJulianDate = function(julianDate)
  {
    var L = julianDate + 68569;
    var N = parseInt(4 * L / 146097);
    L = L - parseInt((146097 * N + 3) / 4);
    var I = parseInt(4000 * (L + 1) / 1461001);
    L = L - parseInt(1461 * I / 4) + 31;
    var J = parseInt(80 * L / 2447);
    var K = L - parseInt(2447 * J / 80);
    L = parseInt(J / 11);
    J = J + 2 - 12 * L;
    I = 100 * (N - 49) + I + L;

    return new Date(I, J - 1, K, 0, 0, 0);
  }

  this.parseDate = function(string)
  {
    var fields = string.split('/');
    var year = parseInt(fields[2].replace(/^0/, ''));
    if (year < 100)
    {
      if (year >= 70)
      {
        year = year + 1900;
      }
      else
      {
        year = year + 2000;
      }
    }

    return new Date(year, parseInt(fields[0].replace(/^0/, '')) - 1, parseInt(fields[1].replace(/^0/, '')));
  }

  this.getDayOfWeek = function(julian)
  {
    return (julian - 6) % 7;

  }

  this.setup = function(year, month)
  {
    year = parseInt(year);
    month = parseInt(month);

    this.year = year;
    this.month = month;

    this.firstDayThisMonthJulian = this.toJulianDate(new Date(year, month - 1, 1));

    this.firstDayThisMonthDayOfWeek = this.getDayOfWeek(this.firstDayThisMonthJulian);

    this.firstSundayJulian = this.firstDayThisMonthJulian - this.firstDayThisMonthDayOfWeek;

    this.nextMonth = (month < 12) ? month + 1 : 1;
    this.nextYear = (month == 1) ? year + 1 : year;

    this.prevMonth = (month > 1) ? month - 1 : 12;
    this.prevYear = (month == 1) ? year - 1 : year;

    this.firstDayPrevMonthJulian = this.toJulianDate(new Date(this.prevYear, this.prevMonth - 1, 1));

    this.prevMonthDays = this.firstDayThisMonthJulian - this.firstDayPrevMonthJulian;

    this.firstDayNextMonthJulian = this.toJulianDate(new Date(this.nextYear, this.nextMonth - 1, 1));

    this.thisMonthDays = this.firstDayNextMonthJulian - this.firstDayThisMonthJulian;


    this.lastDayThisMonthJulian = this.firstDayNextMonthJulian - 1;

    this.firstDayNextMonthDayOfWeek = this.getDayOfWeek(this.firstDayNextMonthJulian);
    this.lastDayThisMonthDayOfWeek = this.getDayOfWeek(this.lastDayThisMonthJulian);

    this.lastSundayJulian = this.lastDayThisMonthJulian - this.lastDayThisMonthDayOfWeek;

    this.weeks = (this.lastSundayJulian - this.firstSundayJulian) / 7 + 1;

    this.lastSaturdayJulian = this.lastSunday + 6;
  }

  this.setDateString = function(dateString)
  {
     var date = this.parseDate(dateString);
     this.setup(date.getFullYear(), date.getMonth() + 1);
     this.dateJulian = this.toJulianDate(date);
  }
}

function WeatherPlanner(url, params)
{
  this.calendar = new Calendar();

  this.params = params;

  this.requestURL = PROBURL;
  this.targetURL = PRICEURL;
  this.targetTarget = WINDOWTARGET;

  this._xmlhttpPost = function(strURL, callback, queryString)
  {
    var self = this;
    var xmlHttpReq = false;
    if (window.XMLHttpRequest)
    {
      xmlHttpReq = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
      xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlHttpReq.open('POST', strURL, true);
    xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlHttpReq.onreadystatechange = function()
    {
      if (xmlHttpReq.readyState == 4)
      {
        callback(xmlHttpReq, self);
      }
    }

    xmlHttpReq.send(queryString);
  };

  this.hideCalendar = function()
  {
    this.div.shade.style.visibility = 'hidden';
    this.div.date.style.visibility = 'hidden';
  }

  this.showCalendar = function(dateString, year, month)
  {
    var table = this.table.calendar;
    var c = this.calendar;

    if (dateString == null)
    {
      c.setup(year, month);
    }
    else
    {
      c.setDateString(dateString);
    }

    var todayJulian = c.toJulianDate(c.getToday());
    var startDateJulian = todayJulian + STARTDATEOFFSETMIN;
    var endDateJulian = todayJulian + STARTDATEOFFSETMAX - 1;
    var dateJulian = c.dateJulian;

    var trs = table.getElementsByTagName('tr');

    var tr = trs[0];
    var tds = tr.getElementsByTagName('td');

    tds[0].innerHTML = '<a class="clinkWeekday" href="#" onclick="weatherPlanner.showCalendar(null, ' + c.prevYear + ',' + c.prevMonth + ')">&laquo;</a>';
    tds[1].innerHTML = c.getMonthName(c.month) + ' ' + c.year;
    tds[2].innerHTML = '<a class="clinkWeekday" href="#" onclick="weatherPlanner.showCalendar(null, ' + c.nextYear + ',' + c.nextMonth + ')">&raquo;</a>';

    for (var w = 0; w < 6; w ++)
    {
      var tr = trs[w + 2];
      var tds = tr.getElementsByTagName('td');

      for (var d = 0; d < 7; d ++)
      {
        var td = tds[d];
        var k = c.firstSundayJulian + w * 7 + d;
        var j = c.fromJulianDate(k);

        if ((k < startDateJulian) || (k > endDateJulian))
        {
          td.innerHTML = '<span class="clinkInactive">' + j.getDate() + '</span>';
        }
        else
        {
          var clinkClass = '';

          if (k == dateJulian)
          {
            clinkClass = 'clinkSelected';
          }
          else if ((k < c.firstDayThisMonthJulian) || (k > c.lastDayThisMonthJulian))
          {
            clinkClass = 'clinkNotThis';
          }
          else
          {
            var dayOfWeek = c.getDayOfWeek(k);

            if ((dayOfWeek == 0) || (dayOfWeek == 6))
            {
              clinkClass = 'clinkWeekend';
            }
            else
            {
              clinkClass = 'clinkWeekday';
            }
          }

          td.innerHTML = '<a class="' + clinkClass + '" href="#" onclick="weatherPlanner.setDate(\'' + c.formatDate(j) + '\');">' + j.getDate() + '</a>';
        }
      }
    }

    this.div.shade.style.visibility = 'visible';
    this.div.date.style.visibility = 'visible';
    this.table.calendar.focus();
  }

  this.getObject = function(name)
  {
    var object = this[name];

    if ((typeof object) == 'undefined')
    {
      object = new Object();
      this[name] = object;
    }

    return object;
  }

  this.parseParams = function(url, params)
  {
    var ps = url.split('?');

    if (ps[1])
    {
      var pairs = ps[1].split('&');

      for (var i = 0; i < pairs.length; i ++)
      {
        var pair = pairs[i].split('=');

        if (pair.length == 2)
        {
          params[unescape(pair[0])] = unescape(pair[1]).replace(/[^a-zA-Z0-9\-.\/ ]/g, '');
        }
      }
    }

    return params;
  }

  this.showRain = function()
  {
    this.div.rain.style.display = 'block';
    this.div.temp.style.display = 'none';
  }

  this.showTemp = function()
  {
    this.div.temp.style.display = 'block';
    this.div.rain.style.display = 'none';
  }

  this.showError = function()
  {
    alert('please try again');
  }

  this.doneRainProb = function(r, requestor)
  {
    var ui = requestor;
    var isDone = false;

    try
    {
      var response = eval('(' + r.responseText + ')');

      var prob = response.prob;

      if ((typeof prob) != 'undefined')
      {
        ui.span.rainProb.innerHTML = parseInt(prob) + '%';
        ui.div.rainProb.style.display = 'block';
        ui.div.rainGetProb.style.display = 'none';

        var date = ui.calendar.parseDate(ui.date.rain.value);
        var mo = ui.calendar.getMonthName(date.getMonth() + 1);
        var dy = date.getDate();
        var yr = date.getFullYear();

        var targetParams = '?indust=none&type=RainyDay' + '&s_mo=' + mo + '&s_dy=' + dy + '&s_yr=' + yr + '&e_mo=' + mo + '&e_dy=' + dy + '&e_yr=' + yr + '&rmsid=' + ui.location.rain.value;

        ui.a.rainLink.href = ui.targetURL + targetParams;
        ui.a.rainLink.target = ui.targetTarget;
        isDone = true;
      }
    }
    catch (error)
    {
      isDone = false;
    }

    if (!isDone)
    {
      ui.showError();
    }
  }

  this.getRainProb = function()
  {
    var date = this.date.rain.value.split('/');
    var rmsid = this.location.rain.value;

    var s_mo = this.calendar.getMonthName(parseInt(date[0].replace(/^0/, '')));
    var s_dy = parseInt(date[1].replace(/^0/, ''));
    var s_yr = parseInt(date[2].replace(/^0/, '')) + 2000;
    var meas = 1;
    var dv = 4;
    var unit = "in";

    var params = 's_mo=' + s_mo + '&s_dy=' + s_dy + '&s_yr=' + s_yr +
                 '&rmsid=' + rmsid + '&meas=' + meas + '&dv=' + dv +
                 '&unit=' + unit;

    this._xmlhttpPost(this.requestURL, this.doneRainProb, params);
  }

  this.doneTempProb = function(r, requestor)
  {
    var ui = requestor;
    var isDone = false;

    try
    {
      var response = eval('(' + r.responseText  + ')');

      var prob = response.prob;

      if ((typeof prob) != 'undefined')
      {
        ui.span.tempProb.innerHTML = parseInt(prob) + '%';
        ui.div.tempProb.style.display = 'block';
        ui.div.tempGetProb.style.display = 'none';

        var date = ui.calendar.parseDate(ui.date.temp.value);
        var mo = ui.calendar.getMonthName(date.getMonth() + 1);
        var dy = date.getDate();
        var yr = date.getFullYear();

        var contractType = (ui.select.tempType.value == 4) ? 'HotDay' : 'ColdDay';

        var targetParams = '?indust=none&type=' + contractType + '&s_mo=' + mo + '&s_dy=' + dy + '&s_yr=' + yr + '&e_mo=' + mo + '&e_dy=' + dy + '&e_yr=' + yr + '&rmsid=' + ui.location.rain.value + '&dv_t=' + ui.select.tempTemp.value + '&meas=' + ui.select.tempIndex.value;
        ui.a.tempLink.href = ui.targetURL + targetParams;
        ui.a.tempLink.target = ui.targetTarget;
        isDone = true;
      }
    }
    catch (error)
    {
      isDone = false;
    }

    if (!isDone)
    {
      ui.showError();
    }
  }

  this.getTempProb = function() {
    var date = this.date.rain.value.split('/');
    var rmsid = this.location.rain.value;

    var s_mo = this.calendar.getMonthName(parseInt(date[0].replace(/^0/, '')));
    var s_dy = parseInt(date[1].replace(/^0/, ''));
    var s_yr = parseInt(date[2].replace(/^0/, '')) + 2000;
    var meas = this.select.tempIndex.value;
    var dv_t = this.select.tempTemp.value;
    var dv = this.select.tempType.value;
    var unit = "degf";

    var params = 's_mo=' + s_mo + '&s_dy=' + s_dy + '&s_yr=' + s_yr +
                 '&rmsid=' + rmsid + '&meas=' + meas + '&dv_t=' +
                 dv_t + '&dv=' + dv + '&unit=' + unit;

    this._xmlhttpPost(this.requestURL, this.doneTempProb, params);
  }

  this.modifiedRain = function(source) {
    this.div.rainProb.style.display = 'none';
    this.div.rainGetProb.style.display = 'block';
  }

  this.modifiedTemp = function(source)
  {
    this.div.tempProb.style.display = 'none';
    this.div.tempGetProb.style.display = 'block';
  }

  this.onChangeTemp = function()
  {
    this.weatherPlanner.modifiedTemp(this);
  }

  this.setLocation = function(value)
  {
    for (var key in this.location)
    {
      var select = this.location[key];

      if (select.options[0].value == '')
      {
        select.options[0] = null;
      }

      select.value = value;
    }
  }

  this.onLocationChange = function()
  {
    this.weatherPlanner.setLocation(this.value);
    this.weatherPlanner.modifiedRain(this);
    this.weatherPlanner.modifiedTemp(this);
  }

  this.setDate = function(dateString)
  {
    this.div.shade.style.visibility = 'hidden';
    this.div.date.style.visibility = 'hidden';

    this.date.rain.value = dateString;
    this.date.temp.value = dateString;

    this.modifiedRain(this);
    this.modifiedTemp(this);
  }

  this.init = function(url)
  {
    var components = ['div_shade', 'div_date', 'table_calendar', 'a_rain', 'a_temp', 'div_rain', 'div_temp', 'date_rain', 'location_rain', 'date_temp', 'location_temp', 'select_tempIndex', 'select_tempType', 'select_tempTemp', 'div_rainProb', 'span_rainProb', 'div_rainGetProb', 'a_rainGetProb', 'div_tempProb', 'span_tempProb', 'div_tempGetProb', 'a_tempGetProb', 'a_rainLink', 'a_tempLink'];

    for (var i = 0; i < components.length; i ++)
    {
      var name = components[i];
      var element = document.getElementById(name);
      element.weatherPlanner = this;
      var names = name.split('_');
      var type = names[0];
      var key = names[1];
      this.getObject(type)[key] = element;

      if (type == 'location')
      {
        element.onchange = this.onLocationChange;
      }
    }

    this.a.rain.onclick = function()
    {
      this.weatherPlanner.showRain();
    };

    this.a.temp.onclick = function()
    {
      this.weatherPlanner.showTemp();
    };

    this.a.rainGetProb.onclick = function()
    {
      this.weatherPlanner.getRainProb();
    };

    this.a.tempGetProb.onclick = function()
    {
      this.weatherPlanner.getTempProb();
    };

    this.date.rain.onclick = function()
    {
      this.blur();
      this.weatherPlanner.showCalendar(this.value);
    };

    this.date.rain.onfocus = function()
    {
      this.blur();
      this.weatherPlanner.showCalendar(this.value);
    };

    this.date.temp.onclick = function()
    {
      this.blur();
      this.weatherPlanner.showCalendar(this.value);
    };

    this.date.temp.onfocus = function()
    {
      this.blur();
      this.weatherPlanner.showCalendar(this.value);
    };

    this.div.shade.onclick = function()
    {
      this.weatherPlanner.hideCalendar();
    };

    this.select.tempIndex.onchange = this.onChangeTemp;
    this.select.tempType.onchange = this.onChangeTemp;
    this.select.tempTemp.onchange = this.onChangeTemp;

    if ((typeof this.params.date) == 'undefined')
    {
      this.params.date = this.calendar.formatDate(this.calendar.fromJulianDate(this.calendar.toJulianDate(this.calendar.getToday()) + STARTDATEOFFSETMIN));
    }

    this.params = this.parseParams(url, this.params);

    this.date.rain.value = this.params.date;
    this.date.temp.value = this.params.date;
    this.location.rain.value = this.params.location;
    this.location.temp.value = this.params.location;
    this.select.tempType.value = this.params.tempType;
    this.select.tempIndex.value = this.params.tempIndex;
    this.select.tempTemp.value = this.params.temp;

    if (this.params.show == 'temp')
    {
      this.showTemp();
    }
    else
    {
      this.showRain();
    }
  }

  this.init(url);
}

var STATIONS = [
[840013876,"Birmingham","AL"]
,[840003856,"Huntsville","AL"]
,[840013894,"Mobile","AL"]
,[840013895,"Montgomery","AL"]
,[840013964,"Fort Smith","AR"]
,[840013963,"Little Rock","AR"]
,[840003103,"Flagstaff","AZ"]
,[840023183,"Phoenix","AZ"]
,[840023160,"Tucson","AZ"]
,[840023194,"Winslow","AZ"]
,[840023155,"Bakersfield","CA"]
,[840093193,"Fresno","CA"]
,[840023129,"Long Beach","CA"]
,[840093134,"Los Angeles (USC)","CA"]
,[840023174,"Los Angeles (Intl)","CA"]
,[840023232,"Sacramento","CA"]
,[840023188,"San Diego","CA"]
,[840023234,"San Francisco","CA"]
,[840023237,"Stockton","CA"]
,[840093037,"Colorado Springs","CO"]
,[840023066,"Grand Junction","CO"]
,[840093058,"Pueblo","CO"]
,[840094702,"Bridgeport","CT"]
,[840014740,"Hartford","CT"]
,[840013781,"Wilmington","DE"]
,[840012834,"Daytona Beach","FL"]
,[840012835,"Fort Myers","FL"]
,[840013889,"Jacksonville","FL"]
,[840012836,"Key West","FL"]
,[840012839,"Miami","FL"]
,[840012815,"Orlando","FL"]
,[840013899,"Pensacola","FL"]
,[840093805,"Tallahassee","FL"]
,[840012842,"Tampa","FL"]
,[840012844,"West Palm Beach","FL"]
,[840013873,"Athens","GA"]
,[840013874,"Atlanta","GA"]
,[840003820,"Augusta","GA"]
,[840093842,"Columbus","GA"]
,[840003813,"Macon","GA"]
,[840003822,"Savannah","GA"]
,[840014933,"Des Moines","IA"]
,[840094908,"Dubuque","IA"]
,[840014943,"Sioux City","IA"]
,[840094910,"Waterloo","IA"]
,[840024131,"Boise","ID"]
,[840024149,"Pocatello","ID"]
,[840024156,"Lewiston","ID"]
,[840014819,"Chicago (Midway)","IL"]
,[840094846,"Chicago (O'Hare)","IL"]
,[840014923,"Moline","IL"]
,[840014842,"Peoria","IL"]
,[840094822,"Rockford","IL"]
,[840093822,"Springfield","IL"]
,[840093817,"Evansville","IN"]
,[840014827,"Fort Wayne","IN"]
,[840093819,"Indianapolis","IN"]
,[840014848,"South Bend","IN"]
,[840013985,"Dodge City","KS"]
,[840023065,"Goodland","KS"]
,[840013996,"Topeka","KS"]
,[840003928,"Wichita","KS"]
,[840093814,"Covington","KY"]
,[840093820,"Lexington","KY"]
,[840093821,"Louisville","KY"]
,[840013970,"Baton Rouge","LA"]
,[840013976,"Lafayette","LA"]
,[840003937,"Lake Charles","LA"]
,[840012916,"New Orleans","LA"]
,[840013957,"Shreveport","LA"]
,[840014739,"Boston","MA"]
,[840094746,"Worcester","MA"]
,[840093721,"Baltimore","MD"]
,[840014607,"Caribou","ME"]
,[840014764,"Portland","ME"]
,[840094849,"Alpena","MI"]
,[840094847,"Detroit","MI"]
,[840014826,"Flint","MI"]
,[840094860,"Grand Rapids","MI"]
,[840014836,"Lansing","MI"]
,[840014840,"Muskegon","MI"]
,[840014847,"Sault Ste Marie","MI"]
,[840014913,"Duluth","MN"]
,[840014918,"International Falls","MN"]
,[840014922,"Minneapolis","MN"]
,[840014925,"Rochester","MN"]
,[840014926,"Saint Cloud","MN"]
,[840003945,"Columbia","MO"]
,[840003947,"Kansas City","MO"]
,[840013995,"Springfield","MO"]
,[840013994,"St. Louis","MO"]
,[840003940,"Jackson","MS"]
,[840013865,"Meridian","MS"]
,[840024033,"Billings","MT"]
,[840094008,"Glasgow","MT"]
,[840024143,"Great Falls","MT"]
,[840094012,"Havre","MT"]
,[840024144,"Helena","MT"]
,[840024146,"Kalispell","MT"]
,[840024153,"Missoula","MT"]
,[840003812,"Asheville","NC"]
,[840013881,"Charlotte","NC"]
,[840013723,"Greensboro","NC"]
,[840093729,"Hatteras","NC"]
,[840013722,"Raleigh","NC"]
,[840013748,"Wilmington","NC"]
,[840024011,"Bismarck","ND"]
,[840014914,"Fargo","ND"]
,[840014916,"Grand Forks","ND"]
,[840014935,"Grand Island","NE"]
,[840024023,"North Platte","NE"]
,[840014942,"Omaha","NE"]
,[840024032,"Valentine","NE"]
,[840014745,"Concord","NH"]
,[840093730,"Atlantic City","NJ"]
,[840014734,"Newark","NJ"]
,[840023050,"Albuquerque","NM"]
,[840024121,"Elko","NV"]
,[840023154,"Ely","NV"]
,[840023169,"Las Vegas","NV"]
,[840023185,"Reno","NV"]
,[840024128,"Winnemucca","NV"]
,[840014735,"Albany","NY"]
,[840004725,"Binghamton","NY"]
,[840014733,"Buffalo","NY"]
,[840094728,"NYC (Central Park)","NY"]
,[840094789,"NYC (JFK)","NY"]
,[840014732,"NYC (Laguardia)","NY"]
,[840014768,"Rochester","NY"]
,[840014771,"Syracuse","NY"]
,[840014895,"Akron","OH"]
,[840093812,"Cincinnati","OH"]
,[840014820,"Cleveland","OH"]
,[840014821,"Columbus","OH"]
,[840093815,"Dayton","OH"]
,[840094830,"Toledo","OH"]
,[840014852,"Youngstown","OH"]
,[840013967,"Oklahoma City","OK"]
,[840013968,"Tulsa","OK"]
,[840024221,"Eugene","OR"]
,[840024225,"Medford","OR"]
,[840024155,"Pendleton","OR"]
,[840024229,"Portland","OR"]
,[840024232,"Salem","OR"]
,[840014737,"Allentown","PA"]
,[840014860,"Erie","PA"]
,[840013739,"Philadelphia","PA"]
,[840094823,"Pittsburgh","PA"]
,[840014777,"Avoca","PA"]
,[840014778,"Williamsport","PA"]
,[840014765,"Providence","RI"]
,[840013880,"Charleston","SC"]
,[840013883,"Columbia","SC"]
,[840003870,"Greer","SC"]
,[840014929,"Aberdeen","SD"]
,[840014936,"Huron","SD"]
,[840024090,"Rapid City","SD"]
,[840014944,"Sioux Falls","SD"]
,[840013877,"Bristol","TN"]
,[840013882,"Chattanooga","TN"]
,[840013891,"Knoxville","TN"]
,[840013893,"Memphis","TN"]
,[840013897,"Nashville","TN"]
,[840013962,"Abilene","TX"]
,[840023047,"Amarillo","TX"]
,[840013958,"Austin","TX"]
,[840012919,"Brownsville","TX"]
,[840012924,"Corpus Christi","TX"]
,[840013960,"Dallas (Love Field)","TX"]
,[840003927,"Dallas (Fort Worth)","TX"]
,[840023044,"El Paso","TX"]
,[840012960,"Houston (Bush)","TX"]
,[840012918,"Houston (Hobby)","TX"]
,[840023042,"Lubbock","TX"]
,[840023023,"Midland","TX"]
,[840012917,"Port Arthur","TX"]
,[840023034,"San Angelo","TX"]
,[840012921,"San Antonio","TX"]
,[840013959,"Waco","TX"]
,[840013966,"Wichita Falls","TX"]
,[840093129,"Cedar City","UT"]
,[840024127,"Salt Lake City","UT"]
,[840013733,"Lynchburg","VA"]
,[840013737,"Norfolk","VA"]
,[840013740,"Richmond","VA"]
,[840013741,"Roanoke","VA"]
,[840093738,"Dulles","VA"]
,[840013743,"Washington","VA"]
,[840014742,"Burlington","VT"]
,[840024227,"Olympia","WA"]
,[840024233,"Seattle","WA"]
,[840024157,"Spokane","WA"]
,[840024243,"Yakima","WA"]
,[840014898,"Green Bay","WI"]
,[840014837,"Madison","WI"]
,[840014839,"Milwaukee","WI"]
,[840013866,"Charleston","WV"]
,[840003860,"Huntington","WV"]
,[840024089,"Casper","WY"]
,[840024018,"Cheyenne","WY"]
];

function stationselect(id)
{
  document.write('<select id="' + id + '" style="font-size:11px">');
  for (var i = 0; i < STATIONS.length; i ++)
  {
    var station = STATIONS[i];
    document.write('<option value="' + station[0] + '">' + station[2] + ' - ' + station[1] + '</option>');
  }
  document.write('</select>');
}

var weatherPlanner = null;

function initPage()
{
  weatherPlanner = new WeatherPlanner(location.href, INITIALVALUES);
}
