// vaildate-input.js
// functions to validate form input

/*** TEXT OBJECTS ***/
function emptyTextValue(textObj) {
  //ActivEdit enters this text by default, so nix it
  if (textObj == "<P>&nbsp;</P>")
    textObj = '';
    
  if (textObj.length == 0) 
    return true;  // it is empty
  
  for (var i=0; i<textObj.length; i++) {
    var ch = textObj.charAt(i);
    if (ch != ' ' && ch != '\t') 
      return false;  // it's not empty
  }
  
  return true;  // default: it is empty
}

function validateRequiredText(formObj) {

  var kValid = true;    /* assume no error */
  
  if (emptyTextValue(formObj.value)) {
      kValid = false;
  }

  return kValid;
}

/*** SELECT OBJECTS ***/
function emptySelectValue(selectObj) {
  var kHasValue = false;  /* assume no value */
  
  for (var i=0; i < selectObj.length; i++) {
    if (selectObj.options[i].selected) {
      kHasValue = true; 
    }
  }
  
  if (kHasValue) return false; // it's not empty
  else return true;  // it's not empty
}

function validateRequiredSelect(formObj) {

  var kValid = true;    /* assume no error */
  
  if (emptySelectValue(formObj)) {
    kValid = false;
  }
  
  return kValid;
}

/*  for select boxes where the 1st element is a selection instruction, not a valid option */
function validateRequiredSelect2(selectObj) {

  var kValid = true;    /* assume no error */
  
  if (selectObj.options[0].selected) {
    kValid = false;
  }
  
  return kValid;
}
	
/*** RADIO OBJECTS ***/
function emptyRadioValue(radioObj) {
  var kHasValue = false;  /* assume no value */
  
  if (radioObj.length) { // checks if object array exists
		for (var i = 0; i < radioObj.length; i++) {
		  if (radioObj[i].checked) {
		    kHasValue = true; 
		  }
		}
  } else if (!radioObj.length) {
		if (radioObj.checked == true) {
			kHasValue = true;
		} else {
			kHasValue = false;
		}
  }
  
  if (kHasValue) return false; // it's not empty
  else return true;  // it's not empty
}

function validateRequiredRadio(formObj) {

  var kValid = true;    /* assume no error */

  if (emptyRadioValue(formObj)) {
    kValid = false;
  }
  
  return kValid;
}

/* check whether the passed index is check or not */
function validateRequiredRadioIndex(radioObj, index) {

  var kValid = true;    /* assume no error */
  
  if (! (radioObj[index].checked)) {
    kValid = false;
  }
  
  return kValid;
}

/**** CHECKBOXES ****/
function emptyCheckBox(CheckBoxObj) {
  if (!CheckBoxObj.checked) {
    return true;  // it is checked
  }
  
  return false;  // default: it is not checked
}

function validateRequiredCheckbox(formObj) {

  var kValid = true;    /* assume no error */
  
  if (emptyCheckBox(formObj)) {
    kValid = false;
  }
  
  return kValid;
}

/**** TEXT FORMAT VALIDATION ***/
function validatePhone(formObj) {
  var kValid = false;  /* assume no error */
  
  if (emptyTextValue(formObj.value))
    kValid = true;
  if (formObj.value == "[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]")
    kValid = true;
  if (formObj.value == "([0-9][0-9][0-9])[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]")
    kValid = true;    
  if (formObj.value == "([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]")
    kValid = true;    
  if (formObj.value == "[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]")
    kValid = true;    
    
  if (!kValid) {
    alert("Incorrect format for " + formObj.name + ".");
    formObj.focus();
  }

  return kValid;
}

/**** TEXT FORMAT VALIDATION ***/

/**** START Date validation ***/
function validRequired(formField,fieldLabel)
{
	var result = true;
	
	if (formField.value == "")
	{
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
	return result;
}

function validNum(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
 	if (result)
 	{
 		var num = parseInt(formField.value);
 		if (isNaN(num))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	return result;
}

// relies on cf_ValidateDate.js
function validDate(formField,fieldLabel,required)
{
	var result = true;
   
	if (required && !validateRequiredText(formField))
		result = false;
    // if there's text, be sure it's in correct date format
    else if (validateRequiredText(formField)) {
        if (required && !_CF_checkdate(formField.value))
        {
        alert('Please enter a date in the format MM/DD/YYYY for the "' + fieldLabel +'" field.');
        formField.focus();		
        }
    }
	return result;
}

/**** END Date validation ***/



