//form validation
//variables for form validation checks
var form = "";
var submitted = false;
var error = false;
var error_message = "";

//check if input is an integer
//input: the value to check
//output: if it is integer => true, otherwise => false
function _isInteger(val) 
{
  var digits = "1234567890";
  for (var i = 0; i < val.length; i ++) 
	{
    if (digits.indexOf(val.charAt(i)) == -1) { 
	  	return false; 
		}
  }
  return true;
}

//check if two passwords match
//will pass if both fields are empty (for optional changes)
//conditions check only invoked if first field is not empty!
//input: 
// - pw1, pw2: names of the password fields to match
//output:
// - if condition passes: nothing is done
// - else: error message variable is updated.
function check_pw(pw1, pw2) 
{
  if (form.elements[pw1].value != "" && form.elements[pw2].value == "") 
	{
		error_message = error_message + "* " + "Passwords missing." + "\n";
		error = true;
  }
  if (form.elements[pw1].value != form.elements[pw2].value) 
	{
		error_message = error_message + "* " + "Passwords not matching." + "\n";
		error = true;
  }
}

//check if two new passwords match
//no empty passwords are accepted!
//input: 
// - pw1, pw2: names of the new password fields to match
//output:
// - if condition passes: nothing is done
// - else: error message variable is updated.
function check_newpw(pw1, pw2) 
{
  if (form.elements[pw1].value == "" || form.elements[pw2].value == "") 
	{
		error_message = error_message + "* " + "Passwords missing." + "\n";
		error = true;
  }
  if (form.elements[pw1].value != form.elements[pw2].value) 
	{
		error_message = error_message + "* " + "Passwords not matching." + "\n";
		error = true;
  }
}

//check if the user name is "admin"
//input: 
// - field_name: name of the user name field
//output:
// - if condition passes: nothing is done
// - else: error message variable is updated.
function check_name(field_name) 
{
  var name = form.elements[field_name].value;
  name = name.toLowerCase();
  if (name == "admin") 
	{
		error_message = error_message + "* " + "Reserved User Name. Please enter a new one." + "\n";
		error = true;
  }
}

//check if at least 1 checkbox is checked
//format for the checkboxes in question: name[]
//input: 
// - field_name: name of the checkboxes group
// - message: the error message to use
//output:
// - if at least one box is checked: nothing is done
// - else: error message variable is updated.
function check_boxes(field_name, message) 
{
  var checkboxes = document.getElementsByName(field_name);
  var boxchecked = false;
  for (var i = 0; i < checkboxes.length; i++) 
	{
    if (checkboxes[i].checked) 
		{
      boxchecked = true;
      break;
    }
  }
  if (!boxchecked) 
	{
    error_message = error_message + "* " +  message + "\n";
    error = true;
  }
}

//check if input field is empty or not
//if empty: throws out error message
//input: 
// - field_name: name of the input field
// - field_size: the minimum size of the input
// - message: the error message to use
//output:
// - if condition passes: nothing is done
// - else: error message variable is updated.
function check_input(field_name, field_size, message) 
{
  if (form.elements[field_name] && (form.elements[field_name].type != "hidden")) 
	{
    var field_value = form.elements[field_name].value;
    if (field_value == "" || field_value.length < field_size) 
		{
	  	error_message = error_message + "* " + message + "\n";
	  	error = true;
    }
  }
}

//check if input field is an integer
//input: 
// - field_name: name of the input field
// - message: the error message to use
//output:
// - if condition passes: nothing is done
// - else: error message variable is updated.
function check_integer(field_name, message) 
{
  if (form.elements[field_name] && (form.elements[field_name].type != "hidden")) 
	{
    var field_value = form.elements[field_name].value;
		//_isInteger(val)
    if (!(_isInteger(field_value))) 
		{
	  	error_message = error_message + "* " + message + "\n";
	  	error = true;
    }
		else if (field_value < 0) 
		{
	 	 	error_message = error_message + "* " + message + "\n";
	  	error = true;
    }	
  }
}

//check if email address input is valid
//input: 
// - field_name: name of the email input field
// - message: the error message to use
//output:
// - if condition passes: nothing is done
// - else: error message variable is updated.
function check_email(field_name, message) 
{
  if (form.elements[field_name] && (form.elements[field_name].type != "hidden")) 
	{
    var field_value = form.elements[field_name].value;
    if (field_value == "") 
		{
	  	error_message = error_message + "* " + message + " Required." + "\n";
	  	error = true;
    }
		else if (field_value.indexOf("@") == -1 || field_value.indexOf(".") == -1) 
		{
      error_message = error_message + "* " + message + " Invalid." + "\n";
	  	error = true;
		}
  }
}

function confirm_logout()  //customer logout confirmation prompt
{
  if (confirm("Are you sure you want to logout?")) {
    return true;
  }
  return false;
}

//area show/hide script
//input: 
// - name: ID attribute value for a DIV tag
//output: show/hide area identified with the given ID value
function expandarea(name) 
{
  styleObj = document.getElementById(name).style;
  if (styleObj.display == "none") {
    styleObj.display = "";
  }
  else { 
    styleObj.display = "none";
  }
}
