//For an example look at register2_f.jsp
//
//function validate form
//1.check for "" in elements provided in the nullElements Array
//2.check email address of elements in the emailElements Array
//3.check if alpha - elements in the alphaElements Array
//4.check if numeric - elements in the numericElements Array
//5.provide an alert to the user of the invalid fields
//6.highlight elements that are invalid
//7.set the focus to the first element with an error
//
//
//currently the main function validate form will need to be
//modified for each form to provide the correct checks.


var disallowChars = "{}<>'\"!%*";

function validateForm(form){


  errorObject = new Object();
  errorObject.thisForm = form;
  errorObject.firstBadElement = new Object();
  errorObject.firstBadElementFound = false;
  errorObject.isFormValid = true;
  errorObject.errorNum = 0;
  errorObject.errorMessage = new Array();
  errorObject.errorElementName = new Array();

  clearHighLight(errorObject.thisForm);

  //all the elements in this array are checked for null or ""

  form.keywords.value = trim(form.keywords.value);

  //all elements in this array are checked to be alpha
  textElements = new Array(form.keywords);
  checkTextElements(errorObject,textElements,disallowChars);

  if(errorObject.isFormValid == false){
    displayAlert(errorObject);
    highLightElements(errorObject);
    errorObject.firstBadElement.focus();
    return false;
  }else {
    return true;
  }

}

function displayAlert(errorObject){
  var message = "Please correct the following errors:\n\n";
  for(var i=0;i<errorObject.errorNum;i++){
    message = message + errorObject.errorMessage[i];
  }
  alert(message);
}

function highLightElements(errorObject){
  for(var i=0;i<errorObject.errorElementName.length;i++){
    var element = errorObject.thisForm.elements[
                  errorObject.errorElementName[i]];
    element.className='hilight';
  }
}

function clearHighLight(thisForm){
  for(var i=0;i<thisForm.elements.length;i++){
    if((thisForm.elements[i].type != 'submit')&&
       (thisForm.elements[i].type != 'reset')&&
       (thisForm.elements[i].type != 'radio'))     
    {
      thisForm.elements[i].className='ebebd2';
    }
  }
}

function checkForNulls(errorObject,nullElements){
  for(var i=0;i<nullElements.length;i++){
    if(nullElements[i].value == ""){
      setError(errorObject, nullElements[i]);
    }
  }
}


function checkEmailFormat(errorObject,emailElements,disallow){
  for(var i=0;i<emailElements.length;i++){
    var element = emailElements[i];
    element.value = trim(element.value);
    var atSymbol = element.value.indexOf('@');
    var period   = element.value.lastIndexOf('.');
    var space    = element.value.indexOf(' ');
    var length   = element.value.length - 1;
    if ((atSymbol < 1)||(period <= atSymbol+1)||
        (period == length )||(space  != -1)){
      setError(errorObject, element);
    }
    else {
      checkTextElements(errorObject,emailElements,disallow);
    }
  }
}

function checkTextElements(errorObject,textElements,disallowChar){
  for(var i=0;i<textElements.length;i++){
    if(isTextc(textElements[i].value,disallowChar) == false){
      setError(errorObject, textElements[i]);
    }
  }
}

function checkAlphaElements(errorObject,alphaElements,xAlpha){
  for(var i=0;i<alphaElements.length;i++){
    if(isAlphac(alphaElements[i].value,xAlpha) == false){
      setError(errorObject, alphaElements[i]);
    }
  }
}

function checkNumericElements(errorObject,numericElements,xNumeric){
  for(var i=0;i<numericElements.length;i++){
    if(isNumberc(numericElements[i].value, xNumeric) == false){
      setError(errorObject, numericElements[i]);
    }
  }
}

function setError(errorObject, element){
  errorObject.errorMessage[errorObject.errorNum] =
    getErrorMessage(element.name);
  errorObject.errorElementName[errorObject.errorNum] = element.name;
  errorObject.errorNum++;
  errorObject.isFormValid = false;
  if(errorObject.firstBadElementFound == false){
    errorObject.firstBadElement = element;
    errorObject.firstBadElementFound = true;
  }
}
