String.prototype.toProperCase = function(){
     return this.toLowerCase().replace(/\w+/g,function(s){
          return s.charAt(0).toUpperCase() + s.substr(1);
     })
}

function _trim(str){

	return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');

}


function _popup(url){
	
	window.open(url, "_blank", "toolbar=1,scrollbars=1,location=0,statusbar=0,menubar=1,resizable=1,width=800,height=600");
	return false; // so we can use on links
}


function _preload(rotate){

	if(!document.images)
		return;

	var i;
	var arr;
	var img;

	// nav
	arr = new Array("nav_home_on.gif", "nav_cruise_info_on.gif", "nav_about_us_on.gif", "nav_contact_us_on.gif", "nav_registration_on.gif", "nav_general_info_on.gif");
	for(i = 0; i < arr.length; i++){
		var img = new Image();
		img.src = "images/" + arr[i];
	}

	if(rotate){
		//arr = new Array("home_2.jpg", "home_3.jpg", "home_4.jpg", "home_5.jpg");
		_rotate();
	}

}


var image_num = 1;

function _rotate(){
   if(!document.images)
	   return;
   image_num++;
   document.images['home'].src = "images/home_" + image_num + ".jpg";
   if(image_num == 6)
	   image_num = 0;
   setTimeout('_rotate()', 2000); 

}


var passenger_num = 1;

function _passenger(num){

	passenger_num = num;

	for(var i = 1; i <= 4; i++)
		if(i == num){
			document.getElementById("passenger_" + i).style.display = "inline";
			document.getElementById("passenger_tab_" + i).className = "tab_active";
		}
		else{
			document.getElementById("passenger_" + i).style.display = "none";
			document.getElementById("passenger_tab_" + i).className = "tab";
		}
}


function _registration(){

	// way too complicated way to validate 
	var list = "legal_name_on_passport,citizen_of_what_country,address,city,state,zip,email,phone_number,birth_date_month,birth_date_day,birth_date_year,gender,t_shirt_size,travel_protection";
	var arr = list.split(",");
	var i = 0;
	var num = 1; // passengers 1-4
	var field_name = "";
	var field_value = "";
	var title = "";
	var msg = "";
	var obj;
	var error_count = 0;

	for(num = 1; num <= 4; num++){

		for(i = 0; i < arr.length; i++){

			field_name = arr[i];
			title = field_name.replace(/_/g, " ");
			title = title.toProperCase();
			title = title.replace(/ On /, " on ");
			title = title.replace(/ Of /, " of ");

			obj = eval("document.registration." + field_name + "_" + num);
			if(!obj)
				continue;

			if(obj.type == "select-one")
				field_value = obj.options[obj.selectedIndex].value; 
			else	
				field_value = obj.value; 

			field_value = _trim(field_value + ""); 

			if(field_value.length == 0){
				msg = msg + "Passenger " + num + ": " + title + " is required\n";
				error_count++;
				if(error_count == 1)
					obj.focus();
				if(error_count == 1 && num != passenger_num)
					_passenger(num);
					
			}
			else if(field_name == "email")
				if(!field_value.match(/^([a-z0-9_\.\-])+\@(([a-z0-9\-])+\.)+([a-z0-9]{2,4})+$/i)){
					msg = msg + "Passenger " + num + ": Email appears to be invalid\n";
					error_count++;
					if(error_count == 1)
						obj.focus();
					if(error_count == 1 && num != passenger_num)
						_passenger(num);
				}
		}

		// input is optional on passengers 2, 3 & 4 
		if(error_count == arr.length && num > 1)
			msg = "";
		error_count = 0;

		if(msg.length > 0){
			alert(msg);
			return false;
		}
	}

	return true;

}