// Declarations

	var carouselStarted = false;
	var currentCarouselSlide = "";
	var currentSlideURL = "";
	var currentSlideOffSite = "0";
	
	var mailingListDialogShown = false;
	var joinedMailingList = false;
	var featureState = "playing";
	
	
	// *** Functions ***
	//	
	function initHome() {
		
		var qs = GetQueryString(); 
//		alert("a: " + qs["agent"]); 

		loadHomeImages();
		Cufon.replace('#subscribeNow', {
			hover: true, textShadow: '1px 1px rgba(0, 0, 0, 0.2)'
		});
		
		Cufon.replace("#agentContainer", { fontFamily: "FUTURA"} );
		$("#agentName").show();
		$("#agentTitle").show();
		$("#agentContact").show();
		
		getFeatures(agentID);
		getSpecials(agentID);
		getTestimonial(agentID);
		getDestinationofTheMonth(agentID);
		getLatestBlogEntry(agentID);
	
		var joinCookie = $.cookie("shipsandtripstravel.com");
		if (joinCookie != null) {
			joinedMailingList = true;
		}
		setupLinks(agentID);	

				var thisHref;
				$("a").each(function() { 
					thisHref = this.href;
					if (thisHref.indexOf(agentID) < 0) {
						if (thisHref != "/" && thisHref != "http://shipsandtripstravel.com" && thisHref != "http://shipsandtripstravel.com/" && thisHref != "http://www.shipsandtripstravel.com" && thisHref != "http://www.shipsandtripstravel.com/") {
							if (thisHref.indexOf("?") < 0) {
								this.href = this.href + "?agent=" + agentID;
							} else {
								this.href = this.href + "&agent=" + agentID;
							}
						} else {
//alert('tweak href from [' + thisHref + '] to [http://shipsandtripstravel.com/' + agent + ']');
							if (thisHref == "/" || thisHref == "http://www.shipsandtripstravel.com/" || thisHref == "http://shipsandtripstravel.com/") {
								this.href = this.href + agentID;
							} else {
								this.href = this.href + "/" + agentID;
							}
						}
					}
				});
		
	/* NOT NEEDED? done in clickstream.js
		// update main and sub nav links to reflect agent context
		$("#mainnav a[href]").each(function() {
			if (thisHref != "/" && thisHref != "http://shipsandtripstravel.com" && thisHref != "http://shipsandtripstravel.com/") {
				if (thisHref.indexOf("?") < 0) {
					this.href = this.href + "?agent=" + agentID;
				} else {
					this.href = this.href + "&agent=" + agentID;
				}
			} else {
				this.href = "http://shipsandtripstravel.com/" + agentID + "";
			}
			
     		 //this.href = this.href + "?agent=" + agentID;
		});
		$("#subnav a[href]").each(function() {
			if (thisHref != "/" && thisHref != "http://shipsandtripstravel.com" && thisHref != "http://shipsandtripstravel.com/") {
				if (thisHref.indexOf("?") < 0) {
					this.href = this.href + "?agent=" + agentID;
				} else {
					this.href = this.href + "&agent=" + agentID;
				}
			} else {
				if (thisHref == "/" || thisHref == "http://www.shipsandtripstravel.com/" || thisHref == "http://shipsandtripstravel.com/") {
					this.href = this.href + agent;
				} else {
					this.href = this.href + "/" + agent;
				}
			}
//     		 this.href = this.href + "?agent=" + agentID;
		});
		
		logClick("page(" + document.location.pathname + ")");
		
	$("a[href]").each(function(){ 
     		 this.href = this.href.append("?agent=albert");
   		});
		
		
		

	*/	
		
		
	}
	

	
	function GetQueryString() 
	{ 
		return function(a) 
			{ 
				if (a == "") return {}; 
				var b = {}; 
				for (var i = 0; i < a.length; ++i) 
				{ 
					var p=a[i].split('='); 
					b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " ")); 
				} 
				return b; 
		   }(window.location.search.substr(1).split('&')) 
	} 
	
	
	function setupLinks(agentID) {
		$("#whoWeAre").html('<a href="/about/?agent=' + agentID + '"><img src="/images/utility/clear.gif" alt="Who We Are" height="50px" width="180px" border="0"/></a>').show();
		$("#checkOutOurSpecials").html('<a href="/specials/?agent=' + agentID + '"><img src="/images/home/check-out-our-specials.png" alt="Check Out Our Specials!" border="0"/></a>').show();
		$("#findLandVacations").html('<a href="/land/?agent=' + agentID + '"><img src="/images/home/find-land-vacations.png" alt="Find Land Vacations!" border="0"/></a>').show();
		$("#findCruiseVacations").html('<a href="/cruises/?agent=' + agentID + '"><img src="/images/home/find-cruise-vacations.png" alt="Find Cruise Vacations!" border="0"/></a>').show();
		$("#subscribeNow").html('<a href="javascript:showSubscribeDialog();"><img src="/images/home/join-mailing-list.png" alt="Join Our Mailing List!" border="0"/></a>').show();
		$("#termsLink").html('<a href="/terms/?agent=' + agentID + '"><img src="/images/utility/clear.gif" alt="Terms and Conditions" height="28px" width="260px" border="0"/></a>').show();
		$("#privacyPolicyLink").html('<a href="/privacy/?agent=' + agentID + '"><img src="/images/utility/clear.gif" alt="Privacy Policy" height="28px" width="137px" border="0"/></a>').show();
	}
	
	function loadHomeImages() {
		// Load non-essential images after page loads...
		$('#dialogEnvelope').css("background-image", "url(/images/utility/dialog-bg.png)");
		$("#getDetails img").attr({src:'/images/utility/btn-click-for-details.png'});
		$("#pause-play img").attr({src:'/images/utility/btn-pause.png'});
		$("#feature1 img").attr({src:'/images/utility/btn-1-dim.png'});
		$("#feature2 img").attr({src:'/images/utility/btn-2-dim.png'});
		$("#feature3 img").attr({src:'/images/utility/btn-3-dim.png'});
		$("#feature4 img").attr({src:'/images/utility/btn-4-dim.png'});
		$("#feature5 img").attr({src:'/images/utility/btn-5-dim.png'});
		$("#feature6 img").attr({src:'/images/utility/btn-6-dim.png'});
		$("#feature7 img").attr({src:'/images/utility/btn-7-dim.png'});
		$("#feature8 img").attr({src:'/images/utility/btn-8-dim.png'});
		$("#feature9 img").attr({src:'/images/utility/btn-9-dim.png'});
		$("#prevSlide img").attr({src:'/images/utility/btn-prev.png'});
		$("#nextSlide img").attr({src:'/images/utility/btn-next.png'});
		$("#testimonialLink img").attr({src:'/images/utility/clear.gif'});
	}
	
	function getNoteText(id) {
		
		$("#welcomeNote").slideUp(100, function () {
			var postData = "id=" + id;
			
			$.ajax({
				type: "POST",
				url: "/get-note.php",
				data: postData,
				cache: false,
				async: false,
				success: function(html){
					$("#welcomeNote").html(html);
					Cufon.replace("#welcomeNote"); 
					$("#welcomeNote").slideDown(100);
				}
			});
      	});
	}

	function getTestimonial(agentID) {
		
		$.ajax({
			type: "GET",
			url: "/inc/get-random-testimonial.php",
			cache: false,
			async: true,
			success: function(testimony){
				$("#testimonial").html(testimony);
				$("#testimonialLink").html('<a href="/about/testimonials.html?agent=' + agentID + '" alt="Testimonials"><img height="30px" width="280px" src="/images/utility/clear.gif" border="0" alt="spacer"/></a>');
				Cufon.replace('#testimonial', {hover: true});
				$("#testimonial").fadeIn(700);
			}
		});
	}
	
	function getDestinationofTheMonth(agentID) {
		
		$.ajax({
			type: "GET",
			url: "/inc/get-destination-of-the-month.php",
			cache: false,
			async: true,
			success: function(destination){
				$("#destinationOfTheMonth").html(destination);
				$("#destinationOfTheMonth").fadeIn(700);
			}
		});
	}
	
	function getLatestBlogEntry(agentID) {
		var blogLink = '<a href="http://shipsandtripstravel.com/lagniappe/?agent=' + agentID + '" alt="Our Travel Blog: Lagniappe" target="blank"><img src="/images/utility/clear.gif" height="320px" width="270px" border="0" alt="spacer"/></a>';
		
		$.ajax({
			type: "GET",
			url: "/inc/get-blog-entry.php",
			cache: false,
			async: true,
			success: function(blogEntry){
				$("#blogEntryContainer").html(blogLink).append(blogEntry);
/*
				Cufon.replace('#blogEntryTitle', {
					hover: true,
					fontFamily: 'Myriad Pro'
				});
				Cufon.replace('#blogEntryContent', {
					hover: true,
					fontFamily: 'Myriad Pro'
				});
				$("#blogEntryContainer").fadeIn(700);
*/
			}
		});
	}

	function getSpecials(agentID) {
		var postData = "agent=" + agentID;
		$.ajax({
			type: "GET",
			data: postData,
			url: "/inc/agent-home-specials.php",
			cache: false,
			async: true,
			success: function(featureData){
//alert('got features - postData[' + postData + '][' + featureData + ']');
				$("#homeSpecials").html(featureData);
				Cufon.replace('.homeSpecialsTitle', {
   				    hover: true,
					fontFamily: 'Myriad Pro',
					textShadow: '2px 2px rgba(0, 0, 0, 0.4)'
				});
			
				Cufon.replace('.homeSpecialsSubtitle', {
   				    hover: true,
					fontFamily: 'Myriad Pro'
				});
			
				Cufon.replace('.homeSpecialsPrice', {
   				    hover: true,
					fontFamily: 'Myriad Pro'//,
					//textShadow: '2px 2px rgba(0, 0, 0, 0.25)'
				});
				$("#homeSpecials").fadeIn(1400);
	
			}
		});
	}

	var mycarousel_itemList = [];
	
	function getFeatures() {
		var postData = "agent=" + agentID;
		$.ajax({
			type: "GET",
			data: postData,
			dataType: "json",
			url: "/features/get-features-json.php",
			cache: false,
			async: true,
			success: function(featureData){
				//alert('got features[' + featureData + ']');
				mycarousel_itemList = featureData;
				showCarousel();
			},
			error: function(status){
				//alert('error: ' + status);
			}
		});

	}
/*
function showFeature(featureIndex) {
	}
*/
	function setFeatureTitleFont() {
			Cufon.replace('#carouselPicTitle', {
				fontFamily: 'Myriad Pro',
				textShadow: '2px 2px rgba(0, 0, 0, 0.35)'
			});
			Cufon.replace('#carouselPicSubTitle', {
				fontFamily: 'Myriad Pro',
				textShadow: '1px 1px rgba(0, 0, 0, 0.35)'
			});
			$('#carouselPicTitle').show();
	}
	function mycarousel_initCallback(carousel)
	{
		$("#prevSlide").show();
		$("#nextSlide").show();
		$("#pause-play").show();
		var ndx;
		var hoverTitle;
		for (var i=0; i<mycarousel_itemList.length; i++) {
			ndx = i+1;
			hoverTitle = mycarousel_itemList[i].title;
			if (hoverTitle == "") {
				hoverTitle = "Click for details...";
			}
			$("#feature" + ndx).show();
			$("#feature" + ndx).attr({title:hoverTitle,alt:hoverTitle});
		}
		
		$('#carouselWrapper a').bind('click', function() {
			var btn = jQuery(this).attr("rel");
			if (btn=='NEXT') {
				carousel.next();
			} else {
				if (btn=='PREV') {
					carousel.prev();
				} else {
					if (btn=='PAUSE') {
						if (featureState=="playing") {
							carousel.stopAuto();
							featureState = "paused"
							// pause-play
							$("#pause-play img").attr({src:'/images/utility/btn-play.png'});
						} else {
							carousel.startAuto();
							featureState = "playing"
							$("#pause-play img").attr({src:'/images/utility/btn-pause.png'});
						}
					} else {
						carousel.scroll(jQuery.jcarousel.intval(jQuery(this).attr("rel")));
					}
				}
			}
			return false;
		});
	
		$('#closeCarousel').bind('click', function() {
			hideCarousel(carousel);
			return false;
		});
		
/*
$('#getDetails').bind('click', function() {
			getDetails();
			setFeatureTitleFont();
			return false;
		});
*/		
		$(".homeSlide").unbind('click');
		$(".homeSlide").bind('click', function() {
			showCarousel(this.id,carousel);
			return false;
		});
		
		
	};
	
	function mycarousel_itemLoadCallback(carousel, state)
	{

		for (var i = carousel.first; i <= carousel.last; i++) {
			if (carousel.has(i)) {
				continue;
			}
	 
			if (i > mycarousel_itemList.length) {
				break;
			}
	 
			carousel.add(i, mycarousel_getItemHTML(mycarousel_itemList[i-1]));
			setFeatureTitleFont();
		}
	};
	 
	function mycarousel_itemVisibleInCallback(carousel, item, i, state, evt)
	{
		// The index() method calculates the index from a
		// given index who is out of the actual item range.

		if (state=="prev" && i==0) {
			i= mycarousel_itemList.length;
		}

		var idx = carousel.index(i, mycarousel_itemList.length);
		carousel.add(i, mycarousel_getItemHTML(mycarousel_itemList[idx - 1]));
		setFeatureTitleFont();

		var btnSrc;
		for (var i=0; i<=mycarousel_itemList.length; i++) {
			btnSrc = '/images/utility/btn-' + i + '-dim.png';
			$("#feature" + i + " img").attr({src:btnSrc});
		}
		
		btnSrc = '/images/utility/btn-' + idx + '.png';
		$("#feature" + idx + " img").attr({src:btnSrc}).focus();

		$('.featurePicture').hover(
			function(){
				$(this).css({cursor:"pointer"});
			},
			function(){
			}
		);
		
		$('.featurePicture').bind('click', function() {
			currentCarouselSlide = this.id;
			getDetails();
			return false;
		});
	};
	 
	function mycarousel_itemVisibleOutCallback(carousel, item, i, state, evt)
	{
		carousel.remove(i);
		setFeatureTitleFont();
	};
	 
	/**
	 * Item html creation helper.
	 */
	function mycarousel_getItemHTML(item)
	{
		var itmPhotoURL;
		var itmLinkURL;
		var itmTitle;
		var itmSubTitle;
		var itmName;
		var sql;
		var offsite=0;
		
		if (item==undefined) {
			itmPhotoURL = mycarousel_itemList[mycarousel_itemList.length-1].photo_url;
			itmTitle = mycarousel_itemList[mycarousel_itemList.length-1].title;
			itmSubTitle = mycarousel_itemList[mycarousel_itemList.length-1].subtitle;
			itmLinkURL = mycarousel_itemList[mycarousel_itemList.length-1].link_url;
			itmName = mycarousel_itemList[mycarousel_itemList.length-1].name;
			offsite = mycarousel_itemList[mycarousel_itemList.length-1].off_site;
			sql = mycarousel_itemList[mycarousel_itemList.length-1].sql;
		} else {
			itmPhotoURL = item.photo_url;
			itmTitle = item.title;
			itmSubTitle = item.subtitle;
			itmLinkURL = item.link_url;
			itmName = item.name;
			offsite = item.off_site;
			sql = item.sql;
		}
		currentSlideURL = itmLinkURL;
		currentCarouselSlide = itmName;
		currentSlideOffSite = offsite;
		
		$('#getDetails').unbind('click');
		$('#getDetails').bind('click', function() {
			currentSlideURL = itmLinkURL;
			currentCarouselSlide = itmName;
			currentSlideOffSite = offsite
			getDetails();
			setFeatureTitleFont();
			return false;
		});
		
		
		var htmlReturn = '<div id="carouselPicGroup"><img class="featurePicture" id="' + itmLinkURL + '" src="' + itmPhotoURL + '" name="' + itmName + '"';
		//htmlReturn = htmlReturn + '<img class="featurePictureTag" id="tag' + itmName + '" src="' + itmTagURL + '" width="200" height="46" title="' + itmTitle + '"  alt="' + itmTitle + '"/></div>';
		if (itmSubTitle != "" || itmTitle != "") {
			if (itmTitle != "") {
				htmlReturn = htmlReturn +  '" title="' + itmTitle + '" alt="' + itmTitle + '"/>';
				htmlReturn = htmlReturn + '<div id="carouselPicTitle"><a href="' + itmLinkURL + '">' + itmTitle + '</a></div>';
			}
			if (itmSubTitle != "") {
				if (itmTitle == "") {
					htmlReturn = htmlReturn +  '" title="' + itmSubTitle + '" alt="' + itmSubTitle + '"/>';
					htmlReturn = htmlReturn + '<div id="carouselPicTitleEmpty"></div>';
				}
				htmlReturn = htmlReturn + '<div id="carouselPicSubTitle"><a href="' + itmLinkURL + '" targe="_self">' + itmSubTitle + '</a></div>';
			}
		} else {
			htmlReturn = htmlReturn +  '" title="Click for details..." alt="Click for details..."/>';
		}
		htmlReturn = htmlReturn + '</div>';
		

		return htmlReturn;
	};

	function showCarousel(startSlideName,carousel) {
	
		var startSlideNdx=1;	// default if startSlideName not found or not passed in
		var slideName="";
		var slideNdx=0;
		for (var i=0; i<mycarousel_itemList.length; i++) {
			slideNdx = mycarousel_itemList[i].index;
			slideName = mycarousel_itemList[i].name;
			
			if ('slide'+slideName == startSlideName) {
				startSlideNdx = i+1;
				break;
			}
		}
	
		$("#carouselContainer").show();

		if (carouselStarted) {
			getNoteText(slideName);

			$("#carouselContainer").show();
			carousel.scroll(startSlideNdx);
		} else {
			$('#mycarousel').jcarousel({
				size: mycarousel_itemList.length,
				itemLoadCallback: {onBeforeAnimation: mycarousel_itemLoadCallback},
				itemVisibleInCallback: {onBeforeAnimation: mycarousel_itemVisibleInCallback},
				itemVisibleOutCallback: {onAfterAnimation: mycarousel_itemVisibleOutCallback},
				start: startSlideNdx,
				scroll: 1,	// Items to scroll each time (default was 3)
				wrap: 'both', // 'circular' doesn't wrap automatically...
				auto:6,
				//easing: 'easeInExpo',
				//easing: 'easeInOutBack',
				animation: 1500,
				initCallback: mycarousel_initCallback,
				 // This tells jCarousel NOT to autobuild prev/next buttons
				buttonNextHTML: null,
				buttonPrevHTML: null
			});
			carouselStarted = true;		
		}	

		//closeSubscribeDialog();		
	}
	function getDetails() {
		showPage(currentSlideURL,currentSlideOffSite);
	}
	function showPage(pg,offsite) {
		logClick("carousel-click(url:" + pg + ",offsite:" + offsite + ")");
		
		if (offsite!=1) {
			// if on our site and not HTML or PHP, open new window (PDF, etc.)
			if (pg.indexOf('.html') > -1 || pg.indexOf('.php') > -1) {
				document.location.href = pg;
			} else {
				window.open(pg);
			}
		} else {
		// if not on our site, open new window
			window.open(pg);
		} 
	}
	
	function hideCarousel() {
		currentCarouselSlide = "";
		$("#carouselContainer").hide();
		getNoteText('WELCOME');
	}
	
	// **** Mailing List ****

	function showSubscribeDialog() {
		
		//hideCarousel();
		logClick("open-subscribe-dialog");
		
		if (joinedMailingList) {
			document.location.href="/contact/";
		} else {
			$("#busyIndicator").hide();
			getNoteText('SUBSCRIBE');
	
			// dynamically load postcard image for data entry form
			$('#subscribePostcard').css('backgroundImage', 'url(/images/home/postcard/subscribe-form.png)');

			// Fade in so postcard has a chance to already be loaded...			
			$("#dialogEnvelope").fadeIn("fast");
			setUpSubscribeValidations();
	
			if (!mailingListDialogShown) {
				$('.quickflip-wrapper').quickFlip();
				mailingListDialogShown = true;
			}
			setSubscribeInstructions();
			// set focus to first field
			$('#subscribeFirstName').focus();
			$('#subscribeThankYou').css('backgroundImage', 'url(/images/home/postcard/postcard-thanks.png)');
		}
	}

	function setUpSubscribeValidations() {
		// clear any previous errors and field values
		$("#subscribeErrors").val(""); 
		$("#subscribeErrorSource").val("");
		$('#subscribeFirstName').val("");
		$('#subscribeLastName').val("");
		$('#subscribeEmail').val("");
		$('#subscribeEnterCaptcha').val("");
		
		var validator = $("#subscribeForm").validate({ 
			rules: { 
				subscribeFirstName: {required: true, minlength:1}, 
				subscribeLastName: {required: true, minlength:1}, 
				subscribeEmail: {required: true, email: true},
				subscribeEnterCaptcha: {required: true, minlength:5}
			}, 
			messages: { 
				subscribeFirstName: {required: "Missing first name;"}, 
				subscribeLastName: {required: "Missing last name;"}, 
				subscribeEmail: {required: "Missing email address;", email: "Invalid email address;"},
				subscribeEnterCaptcha: {required: "Missing code;"}
			}, 
			errorLabelContainer: "#subscribeErrors",
			invalidHandler: function(form, validator) {
				updateErrorDisplay();
			},
			success: function(label) {
				updateErrorDisplay();
			} //,debug: true
		}); 

		// Map enter key on subscribe fields to the SEND button action
		$('#subscribeForm input:text').keyup(function(e) {
			if(e.keyCode == 13) {
				submitContact();
			}
		});
		
		// Map SEND button to the SEND button action
		$("#btnSubscribeSubmit").click(function() {
			submitContact('btnSubscribeSubmit');
		});
	}

	function updateErrorDisplay() {
		if (joinedMailingList) {
			return;
		}
		// Previous validation routines will populate div subscribeErrors before calling this routine. (semi-colon delimited)
		// If the error was a system error (not user fault), the hidden field subscribeErrorSource will be set to 'SYSTEM'
		$("#errorIndicator").show();
		$("#busyIndicator").hide();
		$("#subscribeFormInstructions").hide();	// hide instructions
		$("#subscribeFormErrorsDisplay").hide(); // hide so we can cufon it - then show it
		$("#subscribeErrors").hide();
		
		// populate the div subscribeFormErrorsDisplay...
		var errorList = $("#subscribeErrors").text().split(';');
		var errorsLen=errorList.length-1;
		
		if (errorsLen>0) {
			var errorsFmt = "<br/><ul>";
			
			for ( var i=0, len=errorsLen; i<len; ++i ){
				errorsFmt = errorsFmt + "<li>* " + errorList[i] + "</li>";
			}
			errorsFmt = errorsFmt + "</ul><br/>";
	
			var fault = $("#subscribeErrorSource").val();
	
			if (fault!='SYSTEM') {
				$("#subscribeFormErrorsDisplay").html("<p>Please fix the following:</p><p>" + errorsFmt + "</p>");
			} else {
				$("#subscribeFormErrorsDisplay").html("<h2>We're Sorry!</h2><p>There was a problem registering your information.</p><p>Please <a href='/contact/'>contact us</a> to join our mailing list.</p>");
				$("#subscribeForm").hide();
				$("#btnSubscribeSubmit").hide();
				$("#subscribeCaptchaControls").hide();
			}
			Cufon.replace("#subscribeFormErrorsDisplay"); 
			$("#subscribeFormErrorsDisplay").show();
		} else {
			setSubscribeInstructions();
		}
		
		$(".btnSend").show();
		return false;
	}
	
	function submitContact(trigger) {

		if (joinedMailingList) {
			return;
		}
		
		if (!$("#subscribeForm").valid()) {
			updateErrorDisplay();
			return false;
		}

		$("#errorIndicator").hide();
		$(".btnSend").hide();
		$("#subscribeFormErrorsDisplay").hide();
		$("#busyIndicator").show();
		$("#subscribeFormInstructions").hide();
		$("#subscribeFormInstructions").html("<h2>One moment</h2><br/><p>Please wait while we process your request . . .</p>");
		Cufon.replace("#subscribeFormInstructions"); 
		$("#subscribeFormInstructions").show();

		// Make sure Code matches and Email isn't already registered before submitting...
		var subscribeEmail = $("#subscribeEmail").val();
		var captchaCode = $("#subscribeEnterCaptcha").val();
		
		if (subscribeEmail != "") {
			if (!contactIsNew()) {
				return false;
			}
		}
		
		if (captchaCode != "") {
			if (!captchaMatches()) {
				return false;
			}
		}
		
		var errors = $("#subscribeErrors").val();
		
		if (errors=="") {
			// if we get here, we are good to go...
			$("#subscribeFormErrorsDisplay").hide();
			$("#subscribeFormInstructions").hide();
			$("#subscribeFormInstructions").html("<h2>One moment</h2><br/><p>Please wait while we process your request . . .</p>");
			Cufon.replace("#subscribeFormInstructions"); 
			$("#subscribeFormInstructions").show();
			$("#subscribeForm input").css({'color':'#C0C0C0'});
			
			addContact();

 			// Check for errors -- if empty, then success! (Say Thank You)
			errors = $("#subscribeErrors").val();
 
			if (errors=="") {
				thankYou();
			} else {
				updateErrorDisplay();
				return false;
			}
		} else {
			updateErrorDisplay();
			return false;
		}
	}
	
	function thankYou() {
		joinedMailingList = true;
		$.cookie("shipsandtripstravel.com", 'joinedMailingList', { path: '/' });
		$("#subscribeFormInstructions").hide();
		$("#subscribeFormErrorsDisplay").hide(); 
		$("#busyIndicator").hide();
		$("#errorIndicator").hide();
		getNoteText('JOINTHANKS');
		$("#subscribeWrapper").quickFlipper();
		$("#subscribeFormErrorsDisplay").hide(); 
		$("#subscribeFormInstructions").hide();
	}
	
	function logError(funct, error) {
		var subscribeEmail = $("#subscribeEmail").val();
		var postData = "funct=" + funct + "&err=" + error + "&email=" + subscribeEmail;
		
		$.ajax({
			type: "POST",
			url: "/contact/log-contact.php",
			data: postData,
			cache: false,
			async: false,
			success: function(status){
			}
		});
	}
	
	// Custom Validations: Captcha Match & Email Not Registered Yet

	function captchaMatches() {
		var errors = "Code does not match;";
		// check captcha
		var captchaCode = $("#subscribeEnterCaptcha").val();
		var postData = "code=" + captchaCode;
		
		$.ajax({
			type: "POST",
			url: "/securimage/securimage_check.php",
			data: postData,
			cache: false,
			async: false,
			success: function(status){
				if (status=='VALID') {
					errors = "";
				} 
			},
			error: function(status){
				errors = "problem verifying the code;";
				logError('[captchaValid]',errors);
				$("#subscribeErrorSource").val('SYSTEM');
			}
		});

		if (errors != "") {
			$("#subscribeErrors").text(errors);
			updateErrorDisplay();
			refreshCaptcha(true);
			return false;
		} else {
			return true;
		}
	}
	
	function contactIsNew() {
		var errors = "Email already registered;";
		// check to see if email is already registered
		var subscribeEmail = $("#subscribeEmail").val();
		var postData = 'email=' + subscribeEmail;
		$.ajax({
			type: "POST",
			url: "/contact/get-contact.php",
			data: postData,
			dataType: "json",
			cache: false,
			async: false,
			success: function(contactJSON){
				var firstname = contactJSON.first_name;
				var lastname = contactJSON.last_name;
				var email = contactJSON.email;
				var timestamp = contactJSON.timestamp;
				var status = contactJSON.cc_status;
				var id = contactJSON.contact_id;

				// If we get a null, it means the address hasn't been registered yet.
				if (id==null) {
					errors = "";
				}
			},
			error: function(status){
				errors = "problem verifying your email;";
				logError('[checkContact]',errors);
				$("#subscribeErrorSource").val('SYSTEM');
			}
		});
		if (errors != "") {
			$("#subscribeErrors").text(errors);
			updateErrorDisplay();
			$("#subscribeEmail").focus();
			return false;
		} else {
			return true;
		}
	}

	function addContact() {
		var errors = "problem processing your request;";
		var subscribeEmail = $("#subscribeEmail").val();
		var subscribeFirstName  = $("#subscribeFirstName").val();
		var subscribeLastName  = $("#subscribeLastName").val();

		var postData = "join_list=1&source=home&email_address=" + subscribeEmail + "&first_name=" + subscribeFirstName + "&last_name=" + subscribeLastName;

		$.ajax({
   			type: "POST",
			url: "/contact/add-contact.php",
			data: postData,
			async: false,
			cache: false,
			success: function(status){
				if (status=='SUCCESS') {
					errors = "";
				}
			},
			error: function(status){
				errors = "problem processing your request;";
			}
		});
		if (errors != "") {
			$("#subscribeErrorSource").val('SYSTEM');
			var existingErrors = $("#subscribeErrors").val();
			$("#subscribeErrors").val(existingErrors + errors);
		} else {
			// make sure we clear out errors so calling routine will know when successful
			$("#subscribeErrors").val(""); 
			$("#subscribeErrorSource").val("");
		}
	}
	
	function refreshCaptcha(setFocus) {
		logClick("refresh-captcha");
		$('#captcha').attr('src','/securimage/securimage_show.php?' + Math.random());
		$('#subscribeEnterCaptcha').val('');
		if (setFocus) {
			$('#subscribeEnterCaptcha').focus();
		}
	}
	
	function closeSubscribeDialog() {
		logClick("close-subscribe-dialog");

		if (mailingListDialogShown) {
			$("#dialogEnvelope").hide();
			getNoteText('WELCOME');
		}
		$("#errorIndicator").hide();
		$("#subscribeFormErrorsDisplay").hide();
		$("#subscribeFormInstructions").hide();
	}

	function setSubscribeInstructions() {
	
		$("#errorIndicator").hide();
		$("#subscribeFormErrorsDisplay").hide();
		var postData = "id=SUBSCRIBEINSTRUCTION";
		
		$.ajax({
			type: "POST",
			url: "/get-note.php",
			data: postData,
			cache: false,
			async: false,
			success: function(html){
				$("#subscribeFormInstructions").html(html);
			}
		});
		Cufon.replace("#subscribeFormInstructions"); 
		$("#subscribeFormInstructions").show();
	}


