		
	var joinedMailingList = false;
	var thisdomain = document.domain;
	
	if (thisdomain == 'test.shipsandtripstravel.com') {
		var TESTING = 1;
	} else {
		var TESTING = 0;
	}
	
	// *** Functions ***
	//
	function initContact() {
		
		Cufon.replace(".contactCufon"); 
		$("#contactFormHeading").show();
		Cufon.replace("#contactProcessing"); 
		
		var joinCookie = $.cookie("shipsandtripstravel.com");
		if (joinCookie != null) {
			joinedMailingList = true;
		}
		
		// Map enter key on contact fields to the SEND button action
/*
*/
		$('#contactForm input:text').keyup(function(e) {
			if(e.keyCode == 13) {
				setTimeout("submitContact('enter');",50);
			}
		});
		
		// Map SEND button to the SEND button action
		//$("#btnContactSubmit").click(function() {
		//	setTimeout("submitContact('btnContactSubmit');",50);
		//});

		// set focus to first field
		$("#contactFirstName").focus();
	}
	

	
	function validEmail(emailAddress) {

		var at="@"
		var dot="."
		var lat=emailAddress.indexOf(at)
		var lstr=emailAddress.length
		var ldot=emailAddress.indexOf(dot)
		if (emailAddress.indexOf(at)==-1){
		  // alert("Invalid E-mail ID")
		   return false
		}

		if (emailAddress.indexOf(at)==-1 || emailAddress.indexOf(at)==0 || emailAddress.indexOf(at)==lstr){
		   //alert("Invalid E-mail ID")
		   return false
		}

		if (emailAddress.indexOf(dot)==-1 || emailAddress.indexOf(dot)==0 || emailAddress.indexOf(dot)==lstr){
		    //alert("Invalid E-mail ID")
		    return false
		}

		 if (emailAddress.indexOf(at,(lat+1))!=-1){
		    //alert("Invalid E-mail ID")
		    return false
		 }

		 if (emailAddress.substring(lat-1,lat)==dot || emailAddress.substring(lat+1,lat+2)==dot){
		   // alert("Invalid E-mail ID")
		    return false
		 }

		 if (emailAddress.indexOf(dot,(lat+2))==-1){
		    //alert("Invalid E-mail ID")
		    return false
		 }
		
		 if (emailAddress.indexOf(" ")!=-1){
		    //alert("Invalid E-mail ID")
		    return false
		 }

 		 return true					
	}
	
	function submitContact(trigger) {
		
		
		$('html, body').scrollTop(0);
		
		var error = "";
		var error_focus = "";
		
		var name_error = 0;
		var email_error = 0;
		var phone_error = 0;
		
		var first_name = $("#contactFirstName").val();
		var last_name = $("#contactLastName").val();

		var phone_area = $("#contactPhoneHomeArea").val();
		var phone_prefix = $("#contactPhoneHomePrefix").val();
		var phone_number = $("#contactPhoneHomeNumber").val();
		
		var email_address =  $("#contactEmailAddress").val();
		
		var phone = phone_area + phone_prefix + phone_number;
		var name = first_name + last_name;
		
		if ($("#contactJoinEnewsletter").is(':checked')) {	//Checkbox
			var joining_list = true;
		} else {
			var joining_list = false;
		}
		
		$("#nameErrorIndicator").hide();
		$("#emailErrorIndicator").hide();
		$("#phoneErrorIndicator").hide();
		
		// make sure name and at least one form of contact info (email or phone) is entered
		if (name == "") {
			error = error + "<img class='errorIndicator' src='../images/utility/btn-error.png' />Missing Name.&nbsp;&nbsp;";
			$("#nameErrorIndicator").show();
			name_error = 1;
		}
		if (phone == "") {
			error = error + "<img class='errorIndicator' src='../images/utility/btn-error.png' />Missing Phone.&nbsp;&nbsp;";
			$("#phoneErrorIndicator").show();
			phone_error = 1;
		} else {
			
			// Phone Validations (Error Conditions):
			// - All must be numeric and completely filled
			
			// - Area Code:
			//   - Allowed range of [2-9] for the first digit, [0-8] for the second, and [0-9] for the third digit. (Per Albert)
			//   - Can't be 911 or 000

			// - Prefix:
			//	 - Allowed ranges [2-9] for the first digit, and [0-9] for both the second and third digits. (Per Albert)
			//   - Can't be 555


			if (!isNumeric(phone_number) || phone_number.length != 4) {
				$("#phoneErrorIndicator").show();
				phone_error = 3;
			}
			if (!isNumeric(phone_prefix) || phone_prefix.length != 3 || phone_prefix == "555") { 
				$("#phoneErrorIndicator").show();
				phone_error = 2;
			} else {
				if (parseInt(phone_prefix.substring(0,1)) < 2 ) {
					$("#phoneErrorIndicator").show();
					phone_error = 2; 
				}
			}
			if (!isNumeric(phone_area) || phone_area.length != 3 || phone_area == "000" || phone_area == "911") {
				$("#phoneErrorIndicator").show();
				phone_error = 1; 
			} else {
				if (parseInt(phone_area.substring(0,1)) < 2 ) {
					$("#phoneErrorIndicator").show();
					phone_error = 1; 
				}
				if (parseInt(phone_area.substring(1,2)) > 8 ) {
					$("#phoneErrorIndicator").show();
					phone_error = 1; 
				}
			}
			if (phone_error > 0) {
				error = error + "<img class='errorIndicator' src='../images/utility/btn-error.png' />Invalid Phone.&nbsp;&nbsp;";
			}
		}
		
		// if joining mailing list, email must be supplied...
		if (joining_list && email_address == "") {
			$("#emailErrorIndicator").show();
			error = error + "<img class='errorIndicator' src='../images/utility/btn-error.png' />Email required to join mailing list.&nbsp;&nbsp;";
			email_error = 1;
		} 
		if (email_address != "") {
			if (!validEmail(email_address)) {
				error = error + "<img class='errorIndicator' src='../images/utility/btn-error.png' />Invalid Email.&nbsp;&nbsp;";
				error_focus = "#contactEmailAddress";
				$("#emailErrorIndicator").show();
				email_error = 1;
			}
		}
		
		
		if (error != "") {
			$("#contactFormMessage").html("<img class='errorFinger' src='../images/contact/error-finger.png' /> " + error);
			$("#contactFormMessage").css("color","#8C1A19");
			$("#contactFormMessage").css("margin-top","-15px");
			$("#contactFormMessage").css("margin-bottom","15px");
			Cufon.replace("#contactFormMessage"); 
			$("#errorIndicator").show();
			
			if (name_error == 1) {
				error_focus = "#contactFirstName";
			} else {
				if (phone_error == 1) {
					error_focus = "#contactPhoneHomeArea";
				} else {
					if (phone_error == 2) {
						error_focus = "#contactPhoneHomePrefix";
					} else {
						if (phone_error == 3) {
							error_focus = "#contactPhoneHomeNumber";
						} else {
							if (email_error == 1) {
								error_focus = "#contactEmailAddress";
							}
						}
					}
				}
			}
			$(error_focus).focus();

			//alert("Error[" + error + "]");
			return false;
		} else {
			$("#contactFormElements").hide();
			$(".btnSend").hide();
			$("#contactProcessing").show();
			logContact();
		}
		return false;
	}
	
	function isNumeric(sText) {
		var ValidChars = "0123456789";
		var IsNumber=true;
		var Char;
		
		for (i = 0; i < sText.length && IsNumber == true; i++) { 
			Char = sText.charAt(i); 
			if (ValidChars.indexOf(Char) == -1) {
				IsNumber = false;
			}
		}
		return IsNumber;
	}
	
	function logContact() {
		
		var postData = "";
		
		var email_address = $("#contactEmailAddress").val();
		var first_name = $("#contactFirstName").val();
		var last_name = $("#contactLastName").val();
		var phone = "(" + $("#contactPhoneHomeArea").val() + ")" + $("#contactPhoneHomePrefix").val() + "-" + $("#contactPhoneHomeNumber").val();
		if (phone == "()-") {
			var display_phone = "-";
		} else {
			var display_phone = "(" + $("#contactPhoneHomeArea").val() + ") " + $("#contactPhoneHomePrefix").val() + "-" + $("#contactPhoneHomeNumber").val();
		}
		if ($("#contactJoinEnewsletter").is(':checked')) {	//Checkbox
			var join_list = true;
			var mailing_list = "X";
		} else {
			var join_list = false;
			var mailing_list = "";
		}
		var message = $("#contactAdditionalInfo").val();
		
		showThanks(first_name, last_name, mailing_list, email_address, display_phone, message);
		
		postData += "email_address=" + email_address;
		postData += "&first_name=" + first_name;
		postData += "&last_name=" + last_name;
		if (join_list) {
			postData += "&join_list=1";
		} else {
			postData += "&join_list=0";
		}
		postData += "&source=contact";
		
		
		postData += "&phone=" + phone;
		postData += "&additional_info=" + message;
		logClick("$ Submit Contact $");

		$.ajax({
   			type: "POST",
			url: "/contact/log-contact.php",
			data: postData,
			async: false,
			cache: false,
			success: function(status){
					logClick("Contact saved successfully");
			},
			error: function(status){
				logClick("Error adding contact[" + postData + "]");
			}
		});
		
		if (join_list) {
			addToContactBeacon(first_name,last_name,phone,email_address)
		}
	}	
	
	function urlencode(str) {
		return escape(str).replace(/\+/g,'%2B').replace(/\*/g, '%2A').replace(/\//g, '%2F').replace(/@/g, '%40');
	}	

	function addToContactBeacon(firstname,lastname,phone,email) {
		
		// Real List ID: ru3v5msmfetw02eda0g4x8oox7mue7
		// Integration Test List: u7y756wts2xjxof6af18dg26k3pqr0
		if (TESTING == 1) {
			var contactListID = "u7y756wts2xjxof6af18dg26k3pqr0"; //u7y756wts2xjxof6af18dg26k3pqr0
		} else {
			var contactListID = "b2kpuwv4zd4sj74f737q8psov9rb28"; //b2kpuwv4zd4sj74f737q8psov9rb28 //OLD??? ru3v5msmfetw02eda0g4x8oox7mue7
			
		}
		
		var beaconURL = "http://contactbeacon.com/crm/public/subscribe.php";
		var postData = "?lastname=" + lastname;
		postData = postData + "&firstname=" + firstname;
		postData = postData + "&email=" + email;
		postData = postData + "&phone=" + phone;
		postData = postData + "&view_id=z61uljys3cjob05mf994d546ygvlz4" //z61uljys3cjob05mf994d546ygvlz4
		postData = postData + "&contact_list_id[]=" + contactListID;
		
		var proxy = '../inc/ba-simple-proxy.php',
		url = proxy + "?url=" + urlencode(beaconURL + postData + "&full_headers=1&full_status=1");
		//alert(url);

		// Make JSON request.
		$.getJSON( url, function(data){
								 
			var http_code = data.status.http_code;	
			var return_contents = data.contents;
			
			if (return_contents.indexOf("You have been added!") > -1) {
				var status="SUCCESS";
				//alert ("SUCCESS! HTTP[" + http_code + "] JSON: [" + JSON.stringify( data, null, 2 ) + "]");
			} else {
				var status="ERROR";
				//alert ("ERROR! HTTP[" + http_code + "] JSON: [" + JSON.stringify( data, null, 2 ) + "]");
			}
			
			//alert("HTTP[" + http_code + "] JSON: [" + JSON.stringify( data, null, 2 ) + "]");			
		});
    
		return false;
	}
	
	function showThanks(first_name, last_name, mailing_list, email_address, phone, message) {
		
		if (email_address == "") {
			email_address = "-";
		}

		$("#contactFormMessage").hide(); 
		$("#contactProcessing").hide();
		$("#contactInfoConfirmationName").html(first_name + " " + last_name);
		$("#contactInfoConfirmationEmail").html(email_address);
		$("#contactInfoConfirmationPhone").html(phone + "");
		$("#contactInfoConfirmationJoin").html(mailing_list);
		$("#contactInfoConfirmationMsg").html(message);
		Cufon.replace("#confirmationInfoContainer", { fontFamily: "Amanda's Hand"}); //
		
		/*
		
		Amanda's Hand
		HansHand (small)
		KARINE
		Vaguely Repulsive
		*/
		
		$("#confirmationInfoContainer").show();
		
		if (first_name != "") {
			display_name = first_name;
		} else {
			display_name = last_name;
		}
			
		var msg = "Thanks " + display_name.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } ) + "! ";
		
		if (email_address != "-") {
			msg = msg + "You should receive an email confirmation soon. ";
		} else {
			msg = msg + "We will be contacting you soon. ";
		}
		
		if (TESTING == 1) {
			msg = msg + " [TESTING]";
		}
		$("#thankYouText").hide().html(msg);
		Cufon.replace("#thankYouText"); 
		$("#thankYouText").show();
		$("#contactThankYou").effect("bounce", { times:1, direction:"down", distance:20 }, 300); //show(); 
		$("#contactFormElements").hide();
	}
	
	function logError(funct, error) {

		var contactEmail = $("#contactEmail").val();
		var postData = "funct=" + funct + "&err=" + error + "&email=" + contactEmail;
		
		$.ajax({
			type: "POST",
			url: "/contact/log-contact.php",
			data: postData,
			cache: false,
			async: false,
			success: function(status){
			}
		});
	}
	

	
