function validateForms() {
  var elementsForms;

  if (!document.getElementsByTagName) return false;
  elementsForms = document.getElementsByTagName("form");
  for (var intCounter = 0; intCounter < elementsForms.length; intCounter++)	{
    return validateForm(elementsForms[intCounter]);
  }
}

function validateForm(currentForm) {
  var blnvalidate = true;
  var elementsInputs;
  var error = "";

  elementsInputs = currentForm.getElementsByTagName("input");

  for(var intCounter = 0; intCounter < elementsInputs.length; intCounter++) {
    var classes = elementsInputs[intCounter].className.split(" ");
    for(var classCounter = 0; classCounter < classes.length; classCounter++) {
      if(classes[classCounter] == "required") {
        if(elementsInputs[intCounter].getAttribute("type") == "text" || elementsInputs[intCounter].getAttribute("type") == "password") {
          if(validateText(elementsInputs, intCounter)) {
            blnvalidate = false;
            var label = elementsInputs[intCounter].getAttribute("id")+'_label';
            if(document.getElementById(label)) {
              error += document.getElementById(label).innerHTML + ' saknas\n';
            } else {
              error += elementsInputs[intCounter].getAttribute("id") + ' saknas\n';
            }
//            error += "TEXT saknas.\n";
          }
        } else if(elementsInputs[intCounter].getAttribute("type") == "checkbox") {
          if(validateCheckbox(elementsInputs, intCounter)) {
            blnvalidate = false;
            var label = elementsInputs[intCounter].getAttribute("id")+'_label';
            if(document.getElementById(label)) {
              error += document.getElementById(label).innerHTML + ' är ej ikryssad\n';
            } else {
              error += elementsInputs[intCounter].getAttribute("id") + ' är ej ikryssad\n';
            }
//            error += "CHECKBOX saknas.\n";
          }
        }
      } else if(classes[classCounter] == "requiredemail") {
        if(validateEmail(elementsInputs, intCounter)) {
          blnvalidate = false;
          var label = elementsInputs[intCounter].getAttribute("id")+'_label';
          if(document.getElementById(label)) {
            error += document.getElementById(label).innerHTML + ' saknas eller är felaktig\n';
          } else {
            error += elementsInputs[intCounter].getAttribute("id") + ' saknas eller är felaktig\n';
          }
//          error += "Epostadress saknas.\n";
        }
      }
    }
  }

  if(error != "") {
    alert("Följande fel uppstod när du fylde i formuläret\n\n"+error);
  }

  return blnvalidate;
}

function validateEmail(elementsInputs, intCounter) {
  var emailFilter=/^.+@.+\..{2,3}$/;
  if(!emailFilter.test(elementsInputs[intCounter].value)) {
    return true;
  }
}

function validateText(elementsInputs, intCounter) {
  if(elementsInputs[intCounter].value == "") {
    return true;
  }
}

function validateCheckbox(elementsInputs, intCounter) {
  if(elementsInputs[intCounter].checked == false) {
    return true;
  }
}

function applyOnSubmitToForms() {
  elementsForms = document.getElementsByTagName("form");
  for(var intCounter = 0; intCounter < elementsForms.length; intCounter++)	{
    elementsForms[intCounter].onsubmit = function () {
      if(!validateForms()) {
        return false;
      }
    }
  }
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if(typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

addLoadEvent(applyOnSubmitToForms);
