// JavaScript Document

// email

function checkEmail (strng, fieldLabel, required) {
	var error="";
	if(strng != "" || required == true){
		var emailFilter=/^.+@.+\..{2,3}$/;
		if (!(emailFilter.test(strng))) { 
		   error = "Please enter a valid email address in the field " + fieldLabel + ".\n";
		}else {
		//test email for illegal characters
		   var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]\*]/
			 if (strng.match(illegalChars)) {
			  error = "The email address in the field " + fieldLabel + " contains illegal characters.\n";
		   }
		}
	}
return error;    
}


// phone number - strip out delimiters and check for 10 digits

function checkPhone (strng, fieldLabel, required) {
	var error = "";
	if(strng != "" || required == true){
		if (strng == "") {
		   error = "You didn't enter a phone number.\n";
		}
		
		var stripped = strng.replace(/[\(\)\.\-\ ]/, ''); //strip out acceptable non-numeric characters
		if (isNaN(parseInt(stripped))) {
		   error = "The phone number contains illegal characters.";
	  
		}
	}
    /*if (!(stripped.length == 10)) {
	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 (strng, fieldLabel) {
	var error = "";
	if (strng == "") {
	   error = "You didn't enter a password in the field " + fieldLabel + ".\n";
	}
    var illegalChars = /[\W_]/; // allow only letters and numbers
    
    if ((strng.length < 6) || (strng.length > 12)) {
       error = "The password field " + fieldLabel + " is the wrong length.\n";
    }
    else if (illegalChars.test(strng)) {
      error = "The password " + fieldLabel + " contains illegal characters.\n";
    } 
    //else if (!((strng.search(/(a-z)+/)) && (strng.search(/(A-Z)+/)) && (strng.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 (strng) {
var error = "";
if (strng == "") {
   error = "You didn't enter a username.\n";
}


    var illegalChars = /\W/; // allow letters, numbers, and underscores
    if ((strng.length < 4) || (strng.length > 10)) {
       error = "The username is the wrong length.\n";
    }
    else if (illegalChars.test(strng)) {
    error = "The username contains illegal characters.\n";
    } 
return error;
}       


// non-empty textbox

function isEmpty(strng, fieldLabel) {
	var error = "";
  if (strng.length == 0) {
     error = "The "+ fieldLabel +" text area has not been filled in.\n"
  }
return error;	  
}

// was textbox altered

function isDifferent(strng) {
	var error = ""; 
  if (strng != "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;
}

// valid selector from dropdown list

function checkDropdown(choice) {
	var error = "";
    if (choice == 0) {
    error = "You didn't choose an option from the drop-down list.\n";
    }    
return error;
}

// Illegal characters

function isIllegal(strng, fieldLabel) {
	var error = "";
	var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]\*]/
	 if (strng.match(illegalChars)) {
	  error = "The " + fieldLabel +" text field contains illegal characters. Please enter alphanumeric characters only.\n";
   }
return error;	  
}

// compare 2 fileds

function isTheSame(strng1, strng2, fieldLabel1, fieldLabel2){
	var error = "";
	if (strng1 != strng2){
		error = "Please ensure the " + fieldLabel1 +" text field has the same value as the " + fieldLabel2 + " text field.\n";
	}
return error;
}

// is a number

function isNumber (strng, fieldLabel, required) {
	var error = "";
	if(strng != "" || required == true){
	var stripped = strng.replace(/[\ ]/g, ''); //strip out acceptable non-numeric characters
		stripped_int = parseInt(stripped)
		stripped_str = "" + stripped_int;
		if (isNaN(stripped_int) || stripped_str.length != stripped.length) {
		   error = "The field " + fieldLabel + " must contain only numbers.\n";
	  
		}
	}
return error;
}

// is an abn

function isABN (strng, fieldLabel, required) {
	var error = "";
	if(strng != "" || required == true){
		error += isNumber(strng, fieldLabel);
		if (!(stripped_str.length == 11)) {
			error += "The field " + fieldLabel + " must contain 11 numbers only.\n";
		}
	}
	return error;
}

// check the length of a field

function checkLengthInt (strng, fieldLabel, length, required) {
	var error = "";
	if(strng != "" || required == true){
		error += isNumber(strng, fieldLabel);
		if (!(stripped_str.length == length)) {
			error += "The field " + fieldLabel + " must contain " + length + " numbers only.\n";
		}
	}
	return error;
}

// check if check box checked
function checkCheckbox(checkvalue, fieldLabel){
	var error = "";
	if (!(checkvalue)) {
       error = "Please check the '"+ fieldLabel + " check box.\n";
    }
	return error;
}
