/* $Id: signup_functions.js,v 1.7 2010/08/02 17:31:29 adamgleiss Exp $ */

function setError(pName, errorText){
	var errorSection = document.getElementById(pName);
	if(errorSection != null){
		errorSection.innerHTML = errorText;
	}
}


function clearError(pName){
	var errorSection = document.getElementById(pName);
	if(errorSection != null){
		errorSection.innerHTML = '';
	}
}

function setVisibility(element, value){
	var x = document.getElementById(element);
	x.style.display = value;
}

function isDigit(num) {
	if (num.length>1){return false;}
	var string="1234567890";
	if (string.indexOf(num)!=-1){return true;}
	return false;
}

function validateRadio(buttonGroup, errorMsg){
	clearError('errorMsg');
	var index = getSelectedRadio(buttonGroup);
	if( index < 0){
		setError('errorMsg',errorMsg);
		return false;
	}
	return true;
}

function validateUsername(){
	
	clearError('errorMsg');
	var username = document.getElementById("username").value;
	
	if (username == "") {
		setError('errorMsg', 'You must enter a username.');
		return false;
	}
	if (username.length < 5 || username.length > 10) {
		setError('errorMsg', "Username must be between 5 and 10 characters long.");
		return false;
	}
	
	// make sure we have an appropriate number of digits
	var ctr = 0;
	for(x = 0; x < username.length; x++) {
		if (isDigit(username.charAt(x)))
			ctr++;
	}

	if (ctr > 7) {
		setError('errorMsg', 'Your username has too many numbers in it.');
		return false;
	}
	
	return true;
}

function validateHeight(){
	var rv = true;
	clearError('errorMsg');
	var heightFt = document.getElementById('height_ft').value;
	var heightIn = document.getElementById('height_in').value;
	var error = '';
	if(heightFt < 4 || heightFt > 8){
		error = 'Please select your height in feet.'
		setError('errorMsg', error);
		rv = false;
	}
	if(heightIn < 0 || heightIn > 11){
		error = error + '<br />Please select your height in inches.';
		setError('errorMsg', error);
		rv = false;
	}
	return rv;
}

function validateCountry(){
	var rv = true;
	clearError('errorMsg');
	var country= document.getElementById('country').value;
	if(country > 4 || country < 1){
		setError('errorMsg','Please select a country.');
		return false;
	}
	return true;
}

function validatePostal(){
	clearError('errorMsg');
	var postal = document.getElementById('postalCode').value;
	if(postal ==  ''){
		setError('errorMsg', 'You must enter a postal code.');
		return false;
	}
	return true;
}

function validateBirthday(){
	
	clearError('errorMsg');
	var rv 		= true;
	var year 	= document.getElementById('year').value;
	var month 	= document.getElementById('month').value;
	var day 	= document.getElementById('day').value;
	var error 	= '';
	if(year < 1920 || year > 2009){
		error = 'Please select your year of birth.';
		rv = false;
	}
	if(month > 12 || month < 1){
		error = error + '<br />Please select your month of birth.';
		rv = false;
	}
	if(day > 31 || day < 1){
		error = error + '<br />Please select your day of birth.';
		rv = false;
	}
	if( (day == 31 && ((month == 2) || (month == 4) || (month == 6) || (month == 9) || (month == 11))) || (day == 30 && month == 2) ){
		error = error + '<br />Please enter a valid date.';
		rv = false;
	}
	setError('errorMsg', error);
	return rv;
}

function validateEmail(){
	clearError('errorMsg');
	var email = document.getElementById('email').value;
	
	if(!echeck(email)){
		setError('errorMsg', 'You must enter a valid email.');
		return false;
	}
	return true;
}

function validatePassword(){
	
	clearError('errorMsg');
	var pattern = /^[a-zA-Z0-9]{5,20}$/;
	var agree = document.getElementById('agreement');
	if(!agree.checked){
		setError('errorMsg', 'Please check the box to agree with the terms & conditions.');
		return false;
	}

	var pass = document.getElementById("password").value;
	if (pass.length == 0) {
		setError('errorMsg', 'Please enter a password.');
		return false;
	}

	if(pass.match(pattern) == null ){
		setError('errorMsg', 'Password must be between 5 and 20 characters. Letters and numbers only, no special characters.');
		return false;
	}
	
	return true;
}

function echeck(str) {

	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	
	if (str.indexOf(at)==-1){
	   return false
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    return false
	}

	 if (str.indexOf(at,(lat+1))!=-1){
	    return false
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    return false
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
	    return false
	 }
	
	 if (str.indexOf(" ")!=-1){
	    return false
	 }

	 return true					
}
	
function getSelectedRadio(buttonGroup) {
   if(buttonGroup == null){ return -1; }
   // returns the array number of the selected radio button or -1 if no button is selected

   if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   // if we get to this point, no radio button is selected
   return -1;
}