function validateNull(a_ColumnElement, a_value, a_NullsAllowed) {
var regexp = /_/g
if (!a_NullsAllowed && a_value == '') {
  validatePrompt(a_ColumnElement, a_ColumnElement.name.replace(regexp,' ') + ' is required');
  return false;
}
return true;
}

function ValidEmail(as_Email) {
	if (as_Email == '' || as_Email == null) return true;

  if (as_Email.indexOf('@') == -1) return false;
  if (as_Email.indexOf('.') == -1) return false;    

	return (true) 
}

function ValidPhone(as_Phone) {
	var l_phoneRegExpress 
	var l_matches 

	if (as_Phone == '' || as_Phone == null) return true;

	l_phoneRegExpress = /\d{3}[-]\d{3}[-]\d{4}/
	l_matches = l_phoneRegExpress.exec(as_Phone);
	return (l_matches != null) 
}

// **BEGIN GENERIC VALIDATION FUNCTIONS**
// general purpose function to see if an input value has been entered at all
function isEmpty(inputStr) {
	if (inputStr == "" || inputStr == null) {
		return true
	}
	return false
}

// function to determine if value is in acceptable range for this application
function inRange(inputStr, lo, hi) {
	var num = parseInt(inputStr, 10)
	if (num < lo || num > hi) {
		return false
	}
	return true
}
// **END GENERIC VALIDATION FUNCTIONS**

function validateMonth(mm) {
	var input = parseInt(mm.value, 10)
	if (isEmpty(input)) {
		validatePrompt(mm,"Be sure to enter a month value.")
		return false
	} else {
		if (isNaN(input)) {
			validatePrompt(mm,"Please enter a valid month value.")
			return false
		} else {
			if (!inRange(input,1,12)) {
				validatePrompt(mm,"Enter a number between 1 (January) and 12 (December).")
				return false
			}
		}
	}
	return true
}

function isLeapYear(aYear) {
	// 1.Years divisible by four are leap years, unless...
	// 2.Years also divisible by 100 are not leap years, except...
	// 3.Years divisible by 400 are leap years.
	if ( ((aYear % 4 == 0) && (aYear % 100 != 0)) || (aYear % 400 == 0) )
		return true;
	 else 
		return false;
}


function validateDate(mm,dd,yy) {
	var day = parseInt(dd.value, 10)
	if (!validateMonth(mm)) return false
	if (isEmpty(day)) {
		validatePrompt(dd,"Be sure to enter a day value.")
		return false
	} else {
		if (isNaN(day)) {
			validatePrompt(dd,"Entries must be numbers only.")
			return false
		} else {
			var monthVal = parseInt(mm.value, 10)
			var monthMax = new Array(31,29,31,30,31,30,31,31,30,31,30,31)
			var top = monthMax[monthVal-1]
			if (!inRange(day,1,top)) {
				validatePrompt(dd,"Enter a number between 1 and " + top + ".")
				return false
			} else if (!validateYear(yy)) {
			  return false
			} else if (monthVal == 2 && day == 29 && !isLeapYear(parseInt(yy.value,10))) {
				validatePrompt(dd,"This date is not valid in non Leap Years.")
				return false;
		  }
		}
	}
	return true
}

function validateYear(yy) {
	var input = parseInt(yy.value, 10)
	if (isEmpty(input)) {
		validatePrompt(yy,"Be sure to enter a year value.")
		return false
	} else {
		if (isNaN(input)) {
			validatePrompt(yy,"Entries must be numbers only.")
			return false
		} else {
			if (!inRange(input,1900,2100)) {
				validatePrompt(yy,"Enter a number between 1900 and 2100.")
				return false
			}
		}
	}
	return true
}

function calcDate(mm,dd,yy) {
	mm = parseInt(mm, 10)
	dd = parseInt(dd, 10)
	yy = parseInt(yy, 10)
	return mm + "/" + dd + "/" + yy
}

function genNumber(inString) {

    retVal = 0.0;
    retVal_x = "";

    for (i = 0; i < inString.length; i++)
    {
  			var oneChar = inString.charAt(i);

      if (oneChar == ",")
      {  
         continue    
      }
      retVal_x = retVal_x + oneChar;          
    } 

    retVal = parseFloat(retVal_x); 
    return (retVal);
}

function isNumber (inString) {
    oneDec = false;
    oneComma = false;
    retVal = 0;
    postComma = 0;

    for (var i=0; i<inString.length; i++) {
 			  var oneChar = inString.charAt(i);
      if (oneComma) { 
         if (!oneDec) {
				++postComma;
			}
         if ((oneChar == "." && postComma < 4) ||
             (oneChar == "." && postComma > 4)) {
           retVal = 6;
           return (retVal);    
         }
         if (oneChar == "."){
           postComma = 0;
         }
         if (postComma > 4) {
           retVal = 7;
           return (retVal);    
         }
      }
      if ((i == 0 && oneChar == ".") ||
          (i == 0 && oneChar == ",")) {
         retVal = 1;
         return (retVal);
      }
      if (oneChar == "." && !oneDec){  
			oneDec = true
         continue    
      }
      if (oneChar == "," && oneDec) { 
         retVal = 4;
         return (retVal);
      }
      if (oneChar == "," && !oneComma){
			oneComma = true
         continue    
      }
      if (oneChar == "." && oneDec) { 
         retVal = 2;
         return (retVal);
      }
      if (oneChar == "," && oneComma) { 
         retVal = 3;
         return (retVal);
      }
      if (oneChar < "0" || oneChar > "9") { 
         retVal = 5;
         return (retVal);
      }
    } 
    if (oneComma){ 
       if ((postComma < 3 && postComma > 0) ||
           (postComma > 3) ||
           (oneChar == ",")) {
         retVal = 9;
         return (retVal);    
       }
    }
    return (retVal);
}

function validatePrompt(Ctrl, PromptStr) {
    alert (PromptStr)
    Ctrl.focus();
    return;
} 

