/*
UTILS: 
	- valid email
	- is numeric
	- prevent enter key
	- form validation
	- strip dashes and periods from string
*/

//FORM VALIDATION 
//test a field on various criteria return 1 if error 0 if no errors
//available test types are:
// - empty
// - is valid email
// - is numeric
//if resolves in an error, will show an error div (must be in the html)
//labeled with an ID in the format ElementName_error
//where ElementName is the form element being tested 
//the class "hidden" must be defined and applied to these error fields
//returns 1 if there is an error and 0 if not
//so that a form validation script can determine if it should send or not

function test_field(testType,myEl){
	var showThisError=false;
	var myErrorHandle=myEl+"_error";
	switch (testType){
		case "empty":
			if(isEmpty($(myEl))){showThisError=true;}
			break;
		case "email":
			if(!isValidEmail($(myEl).getValue())){showThisError=true;}
			break;
		case "numeric":
			if(!IsNumeric($(myEl).getValue())){showThisError=true;}
			break;
	}
	if (showThisError){
		showError(myErrorHandle);
		return 1;
	}else{
		hideError(myErrorHandle);
		return 0;
	}
}
//hide and show errors
function showError(errorFieldID){
	console.log('showError',errorFieldID);
	if ($(errorFieldID).hasClass('hidden')){
		$(errorFieldID).removeClass('hidden');
	}
}
function hideError(errorFieldID){
	console.log('hideError',errorFieldID);
	if (!($(errorFieldID).hasClass('hidden'))){
		$(errorFieldID).addClass('hidden');
	}
}
//check if a field is empty
function isEmpty(myEl){
	 return ((myEl.getValue() == null) || (myEl.getValue().length == 0));
}
// ---END FORM VALIDATION ---


//PREVENT ENTER KEY
function prevent_enter_key(){
	document.onkeydown = KeyCheck;
}
//function to trap return key
	function KeyCheck(e){
		var KeyID = (window.event) ? event.keyCode : e.keyCode;
  		if (KeyID == 13){
			console.log('return clicked');
			return false;
  		}else{
    		return true;
		}
	}

//STRIP DASHES AND PERIODS
function stripPhoneNum(incoming_num){
   var myNewNum= incoming_num.replaceAll("-", "");
   return myNewNum;
 }

//IS NUMERIC
function IsNumeric(sText){
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
 }
   

//VALID EMAIL
/*
Copyright 2005, 4word systems
All rights reserved.

This software may not be reproduced or distributed in any form without the express 
written consent of 4word systems or it's designee.

Revision 1.1:  20050729 Added underscore to list of valid characters
*/
function isValidEmail(email, required) {
    if (required==undefined) {   // if not specified, assume it's required
        required=true;
    }
    if (email==null) {
        if (required) {
            return false;
        }
        return true;
    }
    if (email.length==0) {  
        if (required) {
            return false;
        }
        return true;
    }
    if (! allValidChars(email)) {  // check to make sure all characters are valid
        return false;
    }

    if (email.indexOf("@") < 1) { //  must contain @, and it must not be the first character
        return false;
    } else if (email.lastIndexOf(".") <= email.lastIndexOf("@")) {  // last dot must be after the @
        return false;
    } else if (email.lastIndexOf("@") == email.length-1) {  // @ must not be the last character
        return false;
    } else if (email.indexOf("..") >=0) { // two periods in a row is not valid
	return false;
    } else if (email.lastIndexOf(".") == email.length-1) {  // . must not be the last character
	return false;
    }
    return true;
}

function allValidChars(email) {
  var parsed = true;
  var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
  for (var i=0; i < email.length; i++) {
    var letter = email.charAt(i).toLowerCase();
    if (validchars.indexOf(letter) != -1)
      continue;
    parsed = false;
    break;
  }
  return parsed;
}



   