
// Copyright © 2001 by Apple Computer, Inc., All Rights Reserved.
//
// You may incorporate this Apple sample code into your own code
// without restriction. This Apple sample code has been provided "AS IS"
// and the responsibility for its operation is yours. You may redistribute
// this code, but you are not permitted to redistribute it as
// "Apple sample code" after having made changes.
// 

/* 

Modified by Tom Petrovic, Biomedical Multimedia Unit, University of Melbourne
t.petrovic@unimelb.edu.au
23 january 2003

*/

function checkEmail ( inputStr ) {
var error = "";
  if ( inputStr == "" ) {
    error = "Please enter an email address.\n";
  }

var emailFilter=/^.+@.+\..{2,3}$/;
  if (!(emailFilter.test( inputStr ))) { 
    error = "Please ensure the email address is valid.\n";
  }
  else {
//test email for illegal characters
var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/
  if (inputStr.match( illegalChars )) {
    error = "The email address contains illegal characters.\n";
  }
  }
return error;
}


// phone number - strip out delimiters and check for 10 digits

function checkPhone ( inputStr ) {
var error = "";
  if (inputStr == "") {
     error = "Please enter a phone number.\n";
  }

var stripped = inputStr.replace(/[\(\)\.\-\ ]/g, ''); //strip out acceptable non-numeric characters
  if (isNaN(parseInt(stripped))) {
    error = "The phone number contains illegal characters.";
  
  }
  if (!(stripped.length == 11)) {
    error = "The phone number is the wrong length. Make sure you included an area code.\n";
  } 
return error;
}


// password - between 6-8 chars, uppercase, lowercase, and numeral

function checkPassword (inputStr) {
var error = "";
  if (inputStr == "") {
     error = "You didn't enter a password.\n";
  }

var illegalChars = /[\W_]/; // allow only letters and numbers
    
  if ((inputStr.length < 6) || (inputStr.length > 8)) {
     error = "The password is the wrong length.\n";
  }
  else if (illegalChars.test(inputStr)) {
    error = "The password contains illegal characters.\n";
  } 
  else if (!((inputStr.search(/(a-z)+/)) && (inputStr.search(/(A-Z)+/)) && (inputStr.search(/(0-9)+/)))) {
     error = "The password must contain at least one uppercase letter, one lowercase letter, and one numeral.\n";
  }  
return error;
}


// username - 4-10 chars, uc, lc, and underscore only.

function checkUsername (inputStr) {
var error = "";
if (inputStr == "") {
   error = "You didn't enter a username.\n";
}


var illegalChars = /\W/; // allow letters, numbers, and underscores
  if ((inputStr.length < 4) || (inputStr.length > 10)) {
    error = "The username is the wrong length.\n";
  }
  else if (illegalChars.test( inputStr )) {
    error = "The username contains illegal characters.\n";
  } 
return error;
}


// non-empty textbox
// modified by T. Petrovic, added field name to point to field

function isEmpty( inputStr, fldName ) {
var error = "";
  if (inputStr.length == 0) {
     error = "Please enter a " + fldName + ".\n";
  }
return error;
}

// was textbox altered

function isDifferent( inputStr ) {
var error = ""; 
  if (inputStr != "Can\'t touch this!") {
    error = "You altered the inviolate text area.\n";
  }
return error;
}

// exactly one radio button is chosen
/*
function checkRadio( checkvalue ) {
var error = "";
  if (!(checkvalue)) {
    error = "Please check a radio button.\n";
  }
return error;
}
*/

//Rewritten by Tom Petrovic to validate many radio button groups on form to handle many radio button groups

function checkRadio( radioGroup, fldName ) {
var error = "";
  for (i=0, n=radioGroup.length; i<n; i++) {
   if (radioGroup[i].checked) {
      var checkvalue = radioGroup[i].value;
      break;
   }
 }

  if (!(checkvalue)) {
    error = "Please check a radio button for " + fldName + ".\n";
  }
return error;
}

// valid selector from dropdown list
// modified by T. Petrovic, added field name to point to field

function checkDropdown( choice, fldName ) {
var error = "";
  if (choice == 0) {
    error = "Please choose a " + fldName + " from the drop-down list.\n";
  }    
return error;
}