  function popDialog (name) {
    document.getElementById (name+"_popup").style.display= "block";
  }

  function setupCalendar (block, past) {
    past= typeof (past) != 'undefined' ? past : false;

    var select= document.main_form[block+"_calendar_month"];

    options= select.options;
    while (options.length > 0) {
      options[0]= null;
    }

    var months= new Array (12);
    months[0]  = "January";
    months[1]  = "February";
    months[2]  = "March";
    months[3]  = "April";
    months[4]  = "May";
    months[5]  = "June";
    months[6]  = "July";
    months[7]  = "August";
    months[8]  = "September";
    months[9]  = "October";
    months[10] = "November";
    months[11] = "December";

    var today= new Date ();
    if (past) {
      var current= new Date (2009, 0, 1);
      do {
        var year= current.getYear ();
        if (year < 1900) {
          year+= 1900;
        }

        select.options[select.options.length]= new Option (months[current.getMonth()]+" "+year, year+"_"+current.getMonth());

        current.setMonth (current.getMonth()+1);
      } while (current < today);

      select.selectedIndex= select.options.length - 1;
    } else {
      for (var i= 0; i < 12; i++) {
        var year= today.getYear ();
        if (year < 1900) {
          year+= 1900;
        }

        select.options[select.options.length]= new Option (months[today.getMonth()]+" "+year, year+"_"+today.getMonth());

        today.setMonth (today.getMonth()+1);
      }
    }

    updateCalendar (block, select.value, past);
  }

  function updateCalendar (block, value, past) {
    past= typeof (past) != 'undefined' ? past : false;

    var month= value.substring (5);
    var year= value.substring (0, 4);

    writeCalendar (block, month, year, past);
  }

  function writeCalendar (block, month, year, past) {
    past= typeof (past) != 'undefined' ? past : false;

    var today= new Date ();

    var day= new Date (year, month, 1, 22);

    if (block == 'delivery' && !document.srq) {
      today.setDate (today.getDate()+1);
    }

    var html= '<table class="calendar"><tr>'

    day.setDate (day.getDate()-day.getDay());
    while (true) {
      if (day.getDay() == 0) {
        html+= "</tr><tr>";
      }

      var classString= ' class="day"';
      if (day.getMonth() != month) {
        classString= '';
      }

      if (day >= today || past) {
        html+= '<td'+classString+'>'+writeDateLink(day, block)+"</td>";
      } else {
        html+= '<td'+classString+'>'+day.getDate()+"</td>";
      }

      day.setDate (day.getDate()+1);

      if (day.getDay() == 0 && day.getMonth() != month) {
        break;
      }
    }

    if (day.getDay < 6) {
      for (var i= day.getDay(); i < 7; i++) {
        html+= '<td>&nbsp;</td>';
      }
    }

    html+= "</tr></table>";

    document.getElementById (block+"_calendar").innerHTML= html;
  }

  function writeDateLink (day, block) {
    var year= day.getYear ();
    if (year < 1900) year+= 1900;
    return '<a href="javascript:updateDate (\''+block+'\', '+year+', '+(day.getMonth()+1)+', '+day.getDate()+');">'+day.getDate()+'</a>';
  }

  function updateDate (block, year, month, day) {
    document.main_form[block+"_date_month"].value= month;
    document.main_form[block+"_date_year"].value= year;
    updateMonth (block+"_date");
    document.main_form[block+"_date_day"].value= day;

    showCalendar (block, false);
    if (document.forceDateCheck) checkAllDates ();
  }

  function showCalendar (block, shown, srq) {
    var selectDisplay;
    var time;

    if (shown) {
      popDialog (block+"_date");

      selectDisplay= "none";
    } else {
      document.getElementById (block+"_date_popup").style.display= "none";

      selectDisplay= "inline";
    }

    if (block == 'delivery') {
      addressBlock= 'to';
      time= 'delivery_time';
    } else {
      addressBlock= 'from';
      time= 'pickup_ready_time';
    }

    if (document.srq) {
      document.getElementById (block+"_date_selects").style.display= selectDisplay;
      document.main_form[time].style.display= selectDisplay;
    } else {

    }
  }

  function showAddressPopup (block, shown) {
    var selectDisplay;

    if (shown) {
      popDialog (block+"_address");

      selectDisplay= "none";
    } else {
      document.getElementById (block+"_address_popup").style.display= "none";

      selectDisplay= "inline";
    }

    document.main_form[block+"_state"].style.display= selectDisplay;
  }

  function checkNotificationForm(select) {
    var value= select.options[select.selectedIndex].value;
    var input= document.getElementById('notification_other');
    if (value == '') {
        input.style.display= 'block';
    } else {
        input.value= value;
        input.style.display= 'none';
    }
  }

  function addNotificationAddress() {
    var select= document.main_form.cc_list_select;
    var value= select.options[select.selectedIndex].value;
    var input= document.main_form.cc_list;

    if (value == '') {
        return false;
    }

    if (input.value == '') {
      input.value= value;
    } else if (input.value.indexOf(value) !== -1) {
      return false;
    } else {
      input.value+= ', ' + value;
    }

    return false;
  }

