
function checkYes (checkvalue, label){
	var error="";
    if (checkvalue == "") {
		error = "Please enter a value for "+label+" field.\n";
    }
	return error;
}

function checkLength (checkvalue, label, minLength, maxLength){
	var error="";
	if (checkvalue == ""){
		return error;
	}
	if (checkvalue.length < minLength && checkvalue.length > 0){
		error = label+" field must be at least "+minLength+" characters long.\n";
	}
	if (checkvalue.length > maxLength && checkvalue.length > 0){
		error = label+" field must be "+maxLength+" characters or less.\n";
	}
	return error;
}

function checkEmail (checkvalue, label){
	var error="";
	if (checkvalue == ""){
		return error;
	}
	if (!emailCheck(checkvalue)) {
		error = label+" field is not a valid email address\n";
	}
	return error;
}

function checkPhone(checkvalue, label){
	var error="";
	if (checkvalue == ""){
		return error;
	}
	var stripped = checkvalue.replace(/[\(\)\.\-\ ]/g, '');
	if (isNaN(parseInt(stripped))) {
	   error = label+" field contains illegal characters.";
	   return error;
	}

	if (stripped.length < 10) {
	error = label+" field has too few numbers. 10 Digit Phone Number needed.\n";
	}
	if (stripped.length > 10) {
	error = label+" field has too many numbers. 10 Digit Phone Number needed.\n";
	}
	return error;
}

function checkCreditCard (checkvalue, label){
	var error="";
	if (checkvalue == ""){
		return error;
	}
	if (!ccCheck(checkvalue)) {
		error = label+" field is not a valid credit card.\n";
	}
	return error;
}

function checkNumeric (checkvalue, label){
	var error="";
	if (checkvalue == ""){
		return error;
	}
	if (isNaN(checkvalue)) {
		error = label+" field must contain numbers only.\n";
	}
	return error;
}

function checkValidChars (checkvalue, label){
	var error="";
	if (checkvalue == ""){
		return error;
	}
	var illegalChars = /\W/;
    if (illegalChars.test(checkvalue)) {
       error = label+" field contains illegal characters.\n";
    }
	return error;
}

//Need to implement this yet.
function checkURL (checkvalue, label){
	var error="";
	if (checkvalue == ""){
		return error;
	}
	//Need URL Validation stuff
	return error;
}

function checkSelectYes (checkvalue, label){
	var error="";
    if (checkvalue == "") {
		error = "Please make a selection for "+label+" field.\n";
    }
	return error;
}

function checkRadioSelect (checkvalue, label){
var error = "";
   if (!(checkvalue)) {
       error = "Please make a selection for "+label+" field.\n";
    }
return error;    
}

function checkTerms (checkvalue, label){
	var error="";
    if (checkvalue == "") {
		error = "You must agree to the "+label+" to continue.\n";
    }
	return error;
}

function checkMulti (checkvalue, label){
	var error="";
	error = "checkDropDown is enabled.\n";
	return error;
}

function checkIP (checkvalue, label) {
var error="";

var ipPattern = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
var ipArray = checkvalue.match(ipPattern); 

if (checkvalue == "0.0.0.0")
error = label + ': '+checkvalue+' is a special IP address and cannot be used here.\n';
else if (checkvalue == "255.255.255.255")
error = label + ': '+checkvalue+' is a special IP address and cannot be used here.\n';
if (ipArray == null)
error = label + ': '+checkvalue+' is not a valid IP address.\n';
else {
for (i = 0; i < 4; i++) {
thisSegment = ipArray[i];
if (thisSegment > 255) {
error = label + ': '+checkvalue+' is not a valid IP address.\n';
i = 4;
}
if ((i == 0) && (thisSegment > 255)) {
error = label + ': '+checkvalue+' is a special IP address and cannot be used here.\n';
i = 4;
      }
   }
}
extensionLength = 3;
return error;
}

//Helper Functions

function emailCheck (emailStr) {
var emailPat=/^(.+)@(.+)$/
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
var validChars="\[^\\s" + specialChars + "\]"
var quotedUser="(\"[^\"]*\")"
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
var atom=validChars + '+'
var word="(" + atom + "|" + quotedUser + ")"
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
	return false
}
var user=matchArray[1]
var domain=matchArray[2]

if (user.match(userPat)==null) {
    return false
}

var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
		return false
	    }
    }
    return true
}
var doFrontendArray=domain.match(domainPat)
if (doFrontendArray==null) {
    return false
}

var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 ||
    domArr[domArr.length-1].length>3) {
   return false
}

if (len<2) {
   return false
}

return true;
}

function ccCheck(s) {

  var i, n, c, r, t;

  r = "";
  for (i = 0; i < s.length; i++) {
    c = parseInt(s.charAt(i), 10);
    if (c >= 0 && c <= 9)
      r = c + r;
  }

  if (r.length <= 1)
    return false;

  t = "";
  for (i = 0; i < r.length; i++) {
    c = parseInt(r.charAt(i), 10);
    if (i % 2 != 0)
      c *= 2;
    t = t + c;
  }
  
  n = 0;
  for (i = 0; i < t.length; i++) {
    c = parseInt(t.charAt(i), 10);
    n = n + c;
  }

  if (n != 0 && n % 10 == 0)
    return true;
  else
    return false;
}
