var now = new Date();
                     
function fillListbox(items, itemsID, listboxname, selectedItemsID)
{
    for (i=0; i<items.length; i++) {
      newOption = new Option(items[i]);
      document.control[listboxname].options[i]       = newOption;
      document.control[listboxname].options[i].value = itemsID[i];
    }
    for (i=0; i<itemsID.length; i++) {
      for (j=0; j<selectedItemsID.length; j++) {
          if (itemsID[i] == selectedItemsID[j]) {
              document.control[listboxname].options[i].selected = true;
          }
      }
    }
}

function emptyListbox(listboxname)
{
    lenght = document.control[listboxname].length;
    for (i=0; i<lenght; i++) document.control[listboxname].options[0] = null;
}

function resetListbox(listboxname)
{
    lenght = document.control[listboxname].length;
    for (i=1; i<lenght; i++) document.control[listboxname].options[i].selected = false;
    document.control[listboxname].options[0].selected = true;
}


function selectItemByValue(elementname, thevalue)
{
    for (i=0; i<document.control[elementname].length; i++) {
      if (document.control[elementname].options[i].value == thevalue) {
          document.control[elementname].options[i].selected = true;
      }
    }
}

function changeTownLocationListbox(listbox)
{
    emptyListbox('lbPlace[]');
    selItem = new Array("0");
    if (listbox == "location") fillListbox(locations, locationsID, 'lbPlace[]', selItem);
    if (listbox == "town")     fillListbox(towns,     townsID,     'lbPlace[]', selItem);
}

function checkSelections(listname)
{
    for (i=1; i<document.control[listname].length; i++) {
        if (document.control[listname].options[i].selected == true) {
            document.control[listname].options[0].selected = false;
        }
    }
}

function getDateString(date)
{
    dateDay   = date.getDate();
    dateMonth = date.getMonth() + 1;
    dateYear  = date.getYear();
    if (dateYear < 1000) dateYear += 1900;
    return(dateDay + "." + dateMonth + "." + dateYear);
}

function getDatesFromOffsets(offset1, offset2)
{
    startDay   = now.getDate();
    startMonth = now.getMonth() + 1;
    startYear  = now.getYear();
    if (startYear < 1000) startYear += 1900;
    startDateS = now.getTime();
    
    // select only one certain day
    if (offset1 == offset2) {
      date1 = new Date(startDateS + offset1 * 86400 * 1000);
      document.control.textDate1.value = getDateString(date1);
      document.control.textDate2.value = getDateString(date1);
    }
    
    // select a range between two days
    if (offset1 != offset2) {
      date1 = new Date(startDateS + offset1 * 86400 * 1000);
      date2 = new Date(startDateS + offset2 * 86400 * 1000);
      document.control.textDate1.value = getDateString(date1);
      document.control.textDate2.value = getDateString(date2);
    }
    
    // select from a certain day on
    if (offset2 == null) {
      date1 = new Date(startDateS + offset1 * 86400 * 1000);
      document.control.textDate1.value = getDateString(date1);
      document.control.textDate2.value = "";
    }
}

function onSelectDateRange()
{
    daysFromWeekend = 5 - now.getDay();
    
    switch (document.control.sbDateRange.options[document.control.sbDateRange.selectedIndex].value) {
    case "all":
      document.control.textDate1.value = "";
      document.control.textDate2.value = "";
      break;
    
    case "TWE": getDatesFromOffsets(daysFromWeekend, daysFromWeekend + 2);           break;
    case "NWE": getDatesFromOffsets(daysFromWeekend + 7, daysFromWeekend + 7 + 2);   break;
    case "0D":  getDatesFromOffsets(0, 0);                                           break;
    case "1D":  getDatesFromOffsets(1, 1);                                           break;
    case "2D":  getDatesFromOffsets(2, 2);                                           break;
    case "1W":  getDatesFromOffsets(0, 7);                                           break;
    case "2W":  getDatesFromOffsets(0, 14);                                          break;
    case "1M":  getDatesFromOffsets(0, 30);                                          break;
    case "2M":  getDatesFromOffsets(0, 60);                                          break;
    case "3M":  getDatesFromOffsets(0, 120);                                         break;
    case "6M":  getDatesFromOffsets(0, 240);                                         break;
    case "1Y":  getDatesFromOffsets(0, 365);                                         break;
    case "2Y":  getDatesFromOffsets(0, 730);                                         break;
    case "3Y":  getDatesFromOffsets(0, 1095);                                        break;
    case "5Y":  getDatesFromOffsets(0, 1825);                                        break;
    }
}

function clearSbDateRange()
{
    if (document.control.sbDateRange.selectedIndex != 16) document.control.sbDateRange.selectedIndex = 16;
}
