/*
 *
 * File: validator.js
 *
 * Contains a list of function for field validations.
 *
 * Author: Terry Chen
 * Date: June12, 2006
 *
 */

function isCreditCard(textObj) {
 /*
  *  This function validates a credit card entry.
  *  If the checksum is ok, the function returns true.
  */

   var ccNum;
   var odd = 1;
   var even = 2;
   var calcCard = 0;
   var calcs = 0;
   var ccNum2 = "";
   var aChar = '';
   var cc;
   var r;
   
   ccNum = textObj.value;
   for(var i = 0; i != ccNum.length; i++) {
      aChar = ccNum.substring(i,i+1);
      if(aChar == '-') {
         continue;
      }

      ccNum2 = ccNum2 + aChar;
   }
   
   cc = parseInt(ccNum2);
   if(cc == 0) {
      return false;
   }
   r = ccNum.length / 2;
   if(ccNum.length - (parseInt(r)*2) == 0) {
      odd = 2;
      even = 1;
   }
   
   for(var x = ccNum.length - 1; x > 0; x--) {
      r = x / 2;
      if(r < 1) {
         r++;
      }
      if(x - (parseInt(r) * 2) != 0) {
         calcs = (parseInt(ccNum.charAt(x - 1))) * odd;
      }
      else {
         calcs = (parseInt(ccNum.charAt(x - 1))) * even;
      }
      if(calcs >= 10) {
         calcs = calcs - 10 + 1;
      }
      calcCard = calcCard + calcs;
   }
   
   calcs = 10 - (calcCard % 10);
   if(calcs == 10) {
      calcs = 0;
   }
   
   if(calcs == (parseInt(ccNum.charAt(ccNum.length - 1)))) {
      return true;
   }
   else {
      return false;
   }
}

function checkRequiredRadioField(radioObj,errMssg) {
	if(!radioObj){
		return true;
	}
	
	var selected = false;
	var radioLength = radioObj.length;

	if(radioLength){
		for(var i = 0; i < radioLength; i++) {
			if(radioObj[i].checked) {
				selected = true;
			}
		}
	}
	else{
		if(radioObj.checked) {
			selected = true;
		}
	}
	if(selected){
		return true;	
	}
	else{
		alert(errMssg);
		return false;
	}
}


function checkRequiredField(object, errMssg)
{
	var Elem = document.getElementById(object);
	
	if (Elem)
	{
		if (Elem.value == "")
		{
			alert(errMssg);
			Elem.focus();
			return false;	
		}
		
		return true;
	}
	
	return true;
}

function validateUsername(object, errMssg){
	var usernameElem = document.getElementById(object);
	if(usernameElem){
		var username = usernameElem.value;
		var num = username.substr((username.length-4),username.length);
		
		if(isInteger(num)){
			return true;
		}
		else{
			alert(errMssg);
			usernameElem.focus();
			return false;
		}
	}
	
	return true;
}

function validateEmail(object){
	var emailElem = document.getElementById(object);
	
	if (emailElem) {
		if(emailElem.value == ""){
			alert("Please enter the email address.");
			emailElem.focus();
			return false;		
		}
		
		var emailPat = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
    	var matchArray = emailElem.value.match(emailPat);
		if (matchArray == null) {
    		alert("Please enter a valid email address.");
			emailElem.focus();
			return false;
    	}
		
		return true;
	}
	
	return true;
}


function compareTheString(object1, object2, mssg){
	var str1 = document.getElementById(object1);
	var str2 = document.getElementById(object2);
	
	if (str1 && str2){
		if(str1.value == str2.value){
			return true;
		}
		else{
			alert(mssg);
			str2.focus();
			return false;	
		}
	}
	
	return true;
}

function checkMinChars(object, minLength, mssg){
	var Elem = document.getElementById(object);
	
	if (Elem){
		if (Elem.value.length < minLength){
			alert(mssg);
			Elem.focus();
			return false;
		}
		else{
			return true;
		}
	}
	
	return true;
	
}

function validateChars(object, mssg){
	var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
	var Elem = document.getElementById(object);

	if (Elem){
  		for (var i = 0; i < Elem.value.length; i++) {
  			if (iChars.indexOf(Elem.value.charAt(i)) != -1) {
  				alert (mssg);
				Elem.focus();
  				return false;
  			}
  		}
	}
	
	return true;
}


function checkExtension(object, ext, mssg)
{
	var allowed = false;
	var ext_array = ext.split("-");

	
	var Elem = document.getElementById(object);
	
	if (Elem) 
	{
		if (Elem.value != ""){
			var theExt = Elem.value.toLowerCase();
		
			for (var i=0; i<ext_array.length; i++){
				if(Elem.value.lastIndexOf(ext_array[i].toLowerCase())!=-1) {
					allowed = true;
				}
			}
		
			if (!allowed){
				alert(mssg);
				Elem.focus();
   				return false;
			}
		}
		
		return true;
	}
	
	return true;
}


function checkPositiveInt(object){
	var Elem = document.getElementById(object);
	
	var thisint = parseInt(Elem.value);
   	var thisfloat = parseFloat(Elem.value);

   	if (thisint != thisfloat) {
    	alert("You didn't enter an integer!")
    	Elem.focus()
    	return false;
	}
	else if (thisint <= 0){
		alert("Please enter a value greater than zero.");
		return false;
	}
	
	
	return true;
}

function isInteger(s)
{
      var i;
	s = s.toString();
      for (i = 0; i < s.length; i++)
      {
         var c = s.charAt(i);
         if (isNaN(c)) 
	   {
		return false;
	   }
      }
      return true;
}

/*
function checkExtension(object, ext, mssg)
{
	var Elem = document.getElementById(object);
	
	if (Elem) 
	{
		var theExt = Elem.value.toLowerCase();
		if(Elem.value.lastIndexOf(ext.toLowerCase())==-1) {
  	 		alert(mssg);
			Elem.focus();
   			return false;
		}
		return true;
	}
	
	return true;
}
*/