function getFormElement(frm, name) {

  var elementsLength = frm.elements.length;

  var objElement = null;

  for (j = 0; j < elementsLength; j++) {

    if (frm.elements[j].name == name) {
      objElement = frm.elements[j];

      break;
    }
  }
  return objElement
}

function getChecked(form, name) {
  var elementsLength = form.elements.length;
  var bChecked = false;

  for (k = 0; k < elementsLength; k++) {
    if (form.elements[k].checked) {
      bChecked = true;
    }
  }
  return bChecked;
}

function checkMandatories(form, alertText) {
  var elementsLength = form.elements.length;
  var result = true;
  for (i = 0; i < elementsLength; i++) {
    if (form.elements[i].type == "hidden") {

      var elementName = form.elements[i].value;
      var obj = getFormElement(form, elementName);

      if (obj != null) {

        switch (obj.type) {

        case "select-one":
          if (obj.options.selectedIndex == 0) {
            result = false;

          }
          break;

        case "checkbox":
          var bChecked;
          bChecked = getChecked(frm, elementName);
          if (bChecked == false) {
            result = false;

          }
          break;
        case "radio":

          var bChecked;
          bChecked = getChecked(frm, elementName);

          if (bChecked == false) {

            result = false;

          }
          break;

        case "text":
          if (obj.value.trim() == "") {
            result = false;

          }
          break;

        case "file":
          if (obj.value.trim() == "") {
            result = false;

          }
          break;

        }
      }
    } else {

      var el = form.elements[i];
      if (el.className.indexOf("obbligatorio") >= 0) {

        if (form.elements[i].type == "text") {
          if (form.elements[i].value.trim() == "") {
            result = false;
          }
        } else if (form.elements[i].type == "checkbox") {
          var bChecked2;
          var elementName2 = form.elements[i].value;
          bChecked2 = getChecked(form, elementName2);
          if (bChecked2 == false) {

            result = false;
          }
        }

        else if (form.elements[i].type == "radio") {
          var bChecked;

          if (el.className.indexOf("checkthis") >= 0) {
            if (!el.checked) {
              result = false;
            }
          } else {
            bChecked = getChecked(form, form.elements[i].name);
            if (bChecked == false) {
              result = false;
            }
          }

        }

        else {

          if (form.elements[i].value.trim() == "") {
            result = false;
          }

        }
      }
    }

  }
  if (result == false) {
    alert(alertText);
    return false;
  } else {
    return true;
  }
}

