	String.prototype.trim = function() {
		return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
	}
	
	function get( form, name ){
		return form.elements[ name ];
	}
	
	function validate( form ){
		element = get( form, "entity[last_name]" );
		if ( element.value.trim() == '' ){
			alert( 'Please enter your last name in the appropiate field.' );
			element.focus();
			return false;
		}
		element = get( form, "entity[first_name]" );
		if ( element.value.trim() == '' ){
			alert( 'Please enter your first name in the appropiate field.' );
			element.focus();
			return false;
		}
		element = get( form, "entity[title]" );
		if ( element.value.trim() == '' ){
			alert( 'Please enter your title in the appropiate field.' );
			element.focus();
			return false;
		}
		element = get( form, "entity[organization]" );
		if ( element.value.trim() == '' ){
			alert( 'Please enter your organization/affiliation in the appropiate field.' );
			element.focus();
			return false;
		}
		element = get( form, "entity[address]" );
		if ( element.value.trim() == '' ){
			alert( 'Please enter your mailing address in the appropiate field.' );
			element.focus();
			return false;
		}
		element = get( form, "entity[city]" );
		if ( element.value.trim() == '' ){
			alert( 'Please enter your mailing city in the appropiate field.' );
			element.focus();
			return false;
		}
		element = get( form, "entity[state]" );
		if ( element.value.trim() == '' ){
			alert( 'Please enter your mailing state in the appropiate field.' );
			element.focus();
			return false;
		}
		element = get( form, "entity[zip_code]" );
		if ( !element.value.match( /^\d{5}$/ ) ){
			alert( 'Please enter your 5 digit mailing zip code in the appropiate field.' );
			element.focus();
			return false;
		}
		element = get( form, "entity[telephone]" );
		if ( !element.value.match( /^\d{10}$/ ) ){
			alert( 'Please enter your 10 digit telephone number in the appropiate field.\nDo not use parenthesis, dashes or spaces.' );
			element.focus();
			return false;
		}
		element = get( form, "entity[fax]" );
		if ( element.value.trim() != '' && !element.value.match( /^\d{10}$/ ) ){
			alert( 'Please enter your 10 digit fax number in the appropiate field.\nDo not use parenthesis, dashes or spaces.' );
			element.focus();
			return false;
		}
		element = get( form, "entity[email]" );
		if ( !element.value.match( /^([a-zA-Z0-9_'+*$%\^&!\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9:]{2,4})+$/ ) ){
			alert( 'Please enter a valid email address in the appropiate field.' );
			element.focus();
			return false;
		}
		
		hotel = get(form,'entity[reserve_july_24]').checked || 
		        get(form,'entity[reserve_july_25]').checked; 
			
		if ( !hotel && get(form,'reservation_needed').checked == false ){
			alert( 'If you do not require hotel reservation please check the box named:\n"No hotel reservation needed"' );
			return false;
		}
		/*if ( !hotel ){
			alert( 'Please select at least one day for the hotel room reservation' );
			return false;
		}*/
		
		element = get(form,"entity[room_capacity]");
		if ( hotel && element.value.trim() == '' ){
			 alert( "Please enter the number of people that will stay on the same room.");
			 element.focus();
			 return false;
		 }
		
		element = get( form, "entity[cc_number]" );
		if ( hotel && get(form,"entity[extra_nights]").value.trim() != '' 
		     && !element.value.match( /^\d{13,16}$/ ) ){
			alert( "Your credit card number is required for extra nights at the hotel.\nPlease do not use dashes or spaces." );
			element.focus();
			return false;     
		}
		
		element = get( form, "entity[cc_expiration]" );
		if ( hotel && get(form,"entity[extra_nights]").value.trim() != '' 
		     && !element.value.match( /^\d{4}$/ ) ){
			alert( "Please enter your credit card expiration date using the specified format." );
			element.focus();
			return false; 
		}
		
		element = get( form, "entity[cc_name]" );
		if ( hotel && get(form,"entity[extra_nights]").value.trim() != '' 
		     && element.value.trim() == "" ){
			alert( "Please enter the name of your credit card in the appropiate field." );
			element.focus();
			return false; 
		}
		
		events = get( form, 'entity[executive_session]' ).checked ||
		         get( form, 'entity[executive_meeting]' ).checked 
		         ;
		if ( !events ){
			alert( "You must at least select ONE event from the schedule." );
			return false;
		}
		
		if ( !get( form, 'i_agree' ).checked ){
			alert( 'You must agree the terms and conditions of this registration to proceed.\n' );
			return false;
		}
		return true;
	}