function ltrim(str) { 
	for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
	return str.substring(k, str.length);
}

function rtrim(str) {
	for(var j=str.length-1; j>=0 && isWhitespace(str.charAt(j)) ; j--) ;
	return str.substring(0,j+1);
}

function trim(str) {
	return ltrim(rtrim(str));
}

function isWhitespace(charToCheck) {
	var whitespaceChars = ' \\t\\n\\r\\f';
	return (whitespaceChars.indexOf(charToCheck) != -1);
}

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.substr( lat-1, lat )==dot || str.substr( 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 phoneCheck(phone_number) {
	phone_number = phone_number.replace(/\s+/g, ""); 
	return phone_number.length > 9 &&
		phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
}

function checkForm() {
	var dateFormat = 'M/d/yyyy';
	
	var interests = document.getElementById('interests');
	var mailmethod = document.getElementById('mailmethod');

	var student = document.getElementById('student').checked;
	var host = document.getElementById('host').checked;
	var educator = document.getElementById('educator').checked;
	var volunteer = document.getElementById('volunteer').checked;
	var ccp = document.getElementById('ccp').checked;
	var firstname = document.getElementById('firstname');
	var lastname = document.getElementById('lastname');
	var street1 = document.getElementById('street1');
	var city = document.getElementById('city');
	var state = document.getElementById('st');
	var zip = document.getElementById('zip');
	var email = document.getElementById('email');
	var phoneH = document.getElementById('phoneH');
	var phoneW = document.getElementById('phoneW');
	var gender = document.getElementById('gender');
	var dob = document.getElementById('dob');
	
	if ( !student && !host && !educator && !volunteer && !ccp ) {
		alert( 'You must select at least one check box at the top of the form. Please press \'OK\' and check at least one box.' );
		location.href="#ints";
		document.getElementById('student').focus();
		return false;
	}
	
	if ( trim(firstname.value).length == 0 ) {
	     alert( 'You must enter your First name in the form. Please press \'OK\' and enter your First name.' );
	     firstname.focus();
	     return false;
	}
	
	if ( trim(lastname.value).length == 0 ) {
	     alert( 'You must enter your Last name in the form. Please press \'OK\' and enter your Last name.' );
	     lastname.focus();
	     return false;
	}
	
	if ( trim(street1.value).length == 0 ) {
	     alert( 'You must enter your Street Address in the form. Please press \'OK\' and enter your Street Address.' );
	     street1.focus();
	     return false;
	}
	
	if ( trim(city.value).length == 0 ) {
	     alert( 'You must enter your City in the form. Please press \'OK\' and enter your City.' );
	     city.focus();
	     return false;
	}
	
	if ( trim(state.value).length == 0 ) {
	     alert( 'You must enter your State in the form. Please press \'OK\' and enter your State.' );
	     state.focus();
	     return false;
	}
	
	if ( trim(zip.value).length == 0 ) {
	     alert( 'You must enter your Zip Code in the form. Please press \'OK\' and enter your Zip Code.' );
	     zip.focus();
	     return false;
	}
	
	if ( trim(email.value).length == 0 || !echeck(trim(email.value))) {
	     alert( 'Email Address is not in the correct format. Please press \'OK\' and correct this entry.' );
	     email.focus();
	     return false;
	}
	
	if ( trim(phoneH.value).length == 0 || !phoneCheck(trim(phoneH.value))) {
	     alert( 'Home Phone is not in the correct format. Please press \'OK\' and correct this entry.' );
	     phoneH.focus();
	     return false;
	}
	
	if ( trim(phoneW.value).length != 0 ) {
		if ( !phoneCheck(trim(phoneW.value)) ) {
		     alert( 'Work Phone is not in the correct format. Please press \'OK\' and correct this entry.' );
		     phoneW.focus();
		     return false;
		}
	}
	
	if ( trim(gender.value).length == 0 ) {
	     alert( 'You must enter your Gender in the form. Please press \'OK\' and enter your Gender.' );
	     gender.focus();
	     return false;
	}
	
	// birth date
	if ( dob.value.length == 0 || !isDate(dob.value,dateFormat) ) {
		dob.focus();
		alert( 'Birthdate is not in the correct format. Please press \'OK\' and correct this entry.');
		return false;
	}
	
	var temp = "";
	
	if (student)
		temp += "student";
	
	if (host) {
		if (temp.length > 0)
			temp += ",";
		temp += "host";
	}
	
	if (educator) {
		if (temp.length > 0)
			temp += ",";
		temp += "educator";
	}
	
	if (volunteer) {
		if (temp.length > 0)
			temp += ",";
		temp += "volunteer";
	}
	
	if (ccp) {
		if (temp.length > 0)
			temp += ",";
		temp += "ccp";
	}
	
	interests.value = temp;
	
	// set the form action dynamically
	document.forms[1].action ='http://yfuusa.org/admin/forms/process.php';
	return true;
}

function highlight(element_id) {
	var element = document.getElementById(element_id);
	var li = new Array("foli1","foli3","foli4","foli5","foli6","foli7","foli8","foli9","foli11","foli12","foli13");
	var id;
	for (id in li) {
		if (li[id] == element.id) {
			if (element.className.length > 0) {
				if (!element.className.match("focused"))
					element.className += " focused";
			} else {
				element.className = "focused";
			}
		} else 
			document.getElementById(li[id]).className = document.getElementById(li[id]).className.replace(/focused/, "");
	}
}
