function isValidDate(dateStr) {
  // Checks for the following valid date formats:
  // DD/MM/YYYY
     
  var datePat = /^(\d{2})\/(\d{2})\/(\d{4})$/; // requires 4 digit year
  
  var matchArray = dateStr.match(datePat); // is the format ok?
  if (matchArray == null) {
    alert("'" + dateStr + "' non e\' una data valida");
    return false;
  }
  month = matchArray[2]; // parse date into variables
  day = matchArray[1];
  year = matchArray[3];
  if (month < 1 || month > 12) { // check month range
    alert("Il mese deve essere tra 01 e 12.");
    return false;
  }
  if (day < 1 || day > 31) {
    alert("Il giorno deve essere tra 01 e 31");
    return false;
  }
  if ((month==4 || month==6 || month==9 || month==11) && day==31) {
    alert("Il mese " + month + " non ha 31 giorni!")
    return false;
  }
  if (month == 2) { // check for february 29th
    var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
    if (day>29 || (day==29 && !isleap)) {
      alert("Febbraio del " + year + " non ha " + day + " giorni!");
      return false;
    }
  }
  return true;
}

function getElementsByClass(searchClass,node,tag) {
  var classElements = new Array();
  if (node == null)
    node = document;
  if (tag == null)
    tag = '*';
  var els = node.getElementsByTagName(tag);
  var elsLen = els.length;
  var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
  for (i = 0, j = 0; i < elsLen; i++) {
    if (pattern.test(els[i].className) ) {
      classElements[j] = els[i];
      j++;
    }
  }
  return classElements;
}

