function checkAppForm(formObj) {
  var FormOK = true;
  initWarningList();
  document.getElementById('warning').innerHTML = '';
  document.getElementById('warning').style.display = 'none';
  var CheckStatus = '';
  var Msg = '';
  var labels = formObj.getElementsByTagName('label');
  if (checkAgreement('declareAuth1') == false) { FormOK = false; }
  if (checkAgreement('declareAuth2') == false) { FormOK = false; }
  if (checkAgreement('declareAuth3') == false) { FormOK = false; }
  for (var i = 0; i < labels.length; i++) {
    if (labels[i].className) {
      if (labels[i].className.indexOf('required') > -1) {
        if (document.getElementById(labels[i].htmlFor)) {
          CheckStatus = checkFormElement(document.getElementById(labels[i].htmlFor));
          if (CheckStatus != 'OK') {
            FormOK = false;
            addWarning(getInnerText(labels[i]).replace(':', ''));
            
            document.getElementById(labels[i].htmlFor).className += ' required';
          } else {
            document.getElementById(labels[i].htmlFor).className = document.getElementById(labels[i].htmlFor).className.replace(' required', '');
          }
        }
      }
    }
  }
  

  if (FormOK == false) {
    document.getElementById('warning').style.display = 'block';
    var warnMsg = 'Some required fields have not been filled in. They have been highlighted.'
    var warnP = document.createElement('p');
    var warnText = document.createTextNode(warnMsg);
    warnP.appendChild(warnText);
    warnP.id = 'warningText';
    document.getElementById('warning').appendChild(warnP);
//    document.getElementById('warning').appendChild(warningList);
    alert(warnMsg);
    return false;
  } else {
    return true;
  }
}

function checkAgreement(CheckBoxID) {
  var thisOK = true;
  if (document.getElementById(CheckBoxID)) {
    thisOK = document.getElementById(CheckBoxID).checked;
    if (!thisOK) {
      alert('Before proceeding, you must authorise our use of the information you are supplying in this form. \n\n Please click the checkbox under "declaration"');
      document.getElementById('declaration').className += ' required';
    } else {
      document.getElementById('declaration').className = document.getElementById('declaration').className.replace(' required', '');
    }
  }
  return thisOK;
}

function checkFormElement(FormElm) {
  switch(FormElm.type)
  {
    case "text":
      if (FormElm.value.length == 0) return FormElm.id ;
      break;
    case "select-one":
      if (FormElm.options[FormElm.selectedIndex].value.length == 0) return FormElm.id ;
      break;
    case "textarea":
      if (FormElm.value.length == 0) return FormElm.id ;
      break;
  }
  return "OK";
}

function getInnerText(el) {
	if (el.innerText) return el.innerText;	//Not needed but it is faster

	var str = "";

	var cs = el.childNodes;
	var l = cs.length;
	for (var i = 0; i < l; i++) {
		switch (cs[i].nodeType) {
			case 1: //ELEMENT_NODE
				str += getInnerText(cs[i]);
				break;
			case 3:	//TEXT_NODE
				str += cs[i].nodeValue;
				break;
		}

	}

	return str;
}