function checkPasswords(){
	var password = $j(".form-large").find("#UserPassword");
	var password2 = $j(".form-large").find("#UserPassword2");

	var error = false;

	if( password.val() != password2.val() ){
		hasError( password );
		hasError( password2 );
		displayError( password, "Passwords did not match" );
		error = true;
	} else {
		clearError( password );
		clearError( password2 );
		displayError( password, "");
		error = false;
	}
}

function filterUsername(){
	var val = $j(".form-large").find("#UserUsername").val();

	if( !isValidAlphaNum(val) ){
		$j(".form-large").find("#UserUsername").val( val.substr(0,val.length-1) );
	}
}

function checkUsername(){
	var username = $j(".form-large").find("#UserUsername");

	if( !empty.test( username.val() ) ){
		if( !isValidUsername( username.val() ) ){
			hasError( username );
			displayError(username, "Username is not valid" );
			error = true;
		} else {
			clearError( username );
			displayError( username, "");
		}
	}
}

function checkEmail(){
	var email = $j("#UserEmail");

	if( !empty.test(email.val())){

		if( !isValidEmail( email.val() ) ){
			hasError( email );
			displayError( email, "Email is not valid" );
			error = true;
		} else {
			displayError( email, "");
			clearError( email );
		}
	}
}

function isValidPassword(val){
	return (val.length >= 6);
}

function isValidEmail(val){
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return filter.test(val);
}

function isValidAlphaNum(val){
	var filter = /^[a-zA-Z0-9_]+$/;
	return filter.test(val);
}

function isValidUsername(val){
	var filter = /^[a-zA-Z0-9_]{3,}$/;
	return filter.test(val);
}	

function isValidPhone(val){
	var filter = /^\([1-9]\d{2}\)\s?\d{3}\-\d{4}$/;
	return filter.test(val);
}

function isValidCanadianPostalCode(val){
	var filter = /^\D{1}\d{1}\D{1}\-?\s?\d{1}\D{1}\d{1}$/;
	return filter.test(val);
}

function isValidNumber(val){
	var filter = /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/; 
	return filter.test(val);
}

function isValidInteger(val){
	var filter = /(^-?\d\d*$)/;
	return filter.test(val);
}

function isValidUSZipCode(val){
	var filter = /(^\d{5}$)|(^\d{5}-\d{4}$)/;
	return filter.test(val);
}

function isValidUSDate( strValue ) {
  var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/;
 
  //check to see if in correct format
  if(!objRegExp.test(strValue)){
    return false; //doesn't match pattern, bad date
  }
  else{
    var strSeparator = strValue.substring(2,3) 
    var arrayDate = strValue.split(strSeparator); 
    //create a lookup for months not equal to Feb.
    var arrayLookup = { '01' : 31,'03' : 31, 
                        '04' : 30,'05' : 31,
                        '06' : 30,'07' : 31,
                        '08' : 31,'09' : 30,
                        '10' : 31,'11' : 30,'12' : 31}
    var intDay = parseInt(arrayDate[1],10); 

    //check if month value and day value agree
    if(arrayLookup[arrayDate[0]] != null) {
      if(intDay <= arrayLookup[arrayDate[0]] && intDay != 0)
        return true; //found in lookup table, good date
    }
    
    //check for February (bugfix 20050322)
    //bugfix  for parseInt kevin
    //bugfix  biss year  O.Jp Voutat
    var intMonth = parseInt(arrayDate[0],10);
    if (intMonth == 2) { 
       var intYear = parseInt(arrayDate[2]);
       if (intDay > 0 && intDay < 29) {
           return true;
       }
       else if (intDay == 29) {
         if ((intYear % 4 == 0) && (intYear % 100 != 0) || 
             (intYear % 400 == 0)) {
              // year div by 4 and ((not div by 100) or div by 400) ->ok
             return true;
         }   
       }
    }
  }  
  return false; //any other values, bad date
}

function isValidTime(val){
	var filter  = /^([1-9]|1[0-2]):[0-5]\d(:[0-5]\d(\.\d{1,3})?)?$/; 
	return filter.test(val);
}

function isValidIP(val){
	var filter = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
	return filter.test(val);
}

function isValidCanadianSIN(val){
	var filter = /^\d{9}$/;
	return filter.test(val);
}

function isValidUSSSN(val){
	var filter = /^\d{9}$/;
	return filter.test(val);
}
