/*
-----------------------------------------------
Ferries.com
Script: vdwUtil.js
Author: Steve Van Etten
Organization: Vermont Design Works
Created: 1 December 2011
----------------------------------------------- */

vdwUtil = {
	ajaxHandler : '/user-ajax',
	initLoginFormRun : false,
	loggedIn : false,
	init:function() {
		vdwUtil.mailtoFix('REMOVETHISBEFORESENDING');
		vdwUtil.preparePopups();
		vdwUtil.prepareImages();
		vdwUtil.validateEmail();
		vdwUtil.prepareSecondaryNavigation();
		// setTimeout fix allows the page to load before firing the equalizeCols function (tabs) //
		if ($('#secondary-content').length) { setTimeout("$('.equalize').equalizeCols()", 100); }
		if ($('#rates-chart').length) { $('#rates-chart').tabs(); }
		$('iframe .connect_widget_facebook_favicon').css( { 'display' : 'none' } );
		$('#nav-explore').expando({
			loadCallback : function($trigger, $targets, opts) {
				if (!$targets.length) {
					$trigger.hide();
					return false;
				}
				var height = 0;
				$targets.each(function() {
					var pHeight = $(this).parent().height();
					if (pHeight > height) { height = pHeight; }
				});
				$trigger.data('targetHeight', height);
			},
			toggleCallback : function($trigger, $targets, $this, opts) {
				var targetHeight = $trigger.hasClass(opts.openClass) ? $trigger.data('targetHeight') : 'auto';
				$('#nav-explore-content > li').height(targetHeight);
			}
		});
		vdwUtil.autoPopulate('input.populate');
	},
	mailtoFix:function(stringToRemove) {
		var links = document.getElementsByTagName('a');
		var removeText = new RegExp(stringToRemove);
		for (var i = 0; i < links.length; i++) {
			if (links[i].href.indexOf('mailto:') != -1) {
				links[i].href = links[i].href.replace(removeText, '');
				links[i].firstChild.nodeValue = links[i].firstChild.nodeValue.replace(removeText, '');
				links[i].firstChild.nodeValue = links[i].firstChild.nodeValue.replace(/mailto:/, '');
			}
		}
	},
	popUp:function(winURL, name, parameters) {
		window.open(winURL, name, parameters);
	},
	preparePopups:function() {
		if (!document.getElementsByTagName) return false;
		var lnks = document.getElementsByTagName("a");
		for (var i=0; i<lnks.length; i++) {
			if (lnks[i].className == "popup") {
				lnks[i].title+= " (opens in a new window)";
				lnks[i].onclick = function() {
					vdwUtil.popUp(this.href, "popup", "width=480,height=480");
					return false;
				}
			}
			else if (lnks[i].className == "external") {
				lnks[i].title+= " (opens in a new window)";
				lnks[i].onclick = function() {
					vdwUtil.popUp(this.href, "external", "");
					return false;
				}
			}
			else if (lnks[i].href != null && lnks[i].href.indexOf('.pdf') != -1) {
				lnks[i].title += " (opens in a new window)";
				lnks[i].onclick = function() {
					vdwUtil.popUp(this.href, "pdf", "");
					return false;
				}
			}
		}
	},
	trimString:function(str) {
		return str.replace(/^\s*\n*\r*|\s*\n*\r*$/g,'');
	},
	fadeUp:function(element, red, green, blue) {
		if (element.fade) {
			clearTimeout(element.fade);
		}
		element.style.backgroundColor = 'rgb('+red+','+green+','+blue+')';
		if (red == 255 && green == 255 && blue == 255) {
			return;
		}
		var newred = red + Math.ceil((255-red)/10);
		var newgreen = green + Math.ceil((255-green)/10);
		var newblue = blue + Math.ceil((255-blue)/10);
		var repeat = function() {
			vdwUtil.fadeUp(element, newred, newgreen, newblue);
		}
		element.fade = setTimeout(repeat, 100);
	},
	prepareImages : function() {
		$('.image-right, .image-left').wrapInner('<div class="image_wrapper"></div>');
		$('.caption').each(function() {
			$(this).width($(this).parent().find('img').width());
		});
	},
	prepareSecondaryNavigation : function() {
		if ($('#secondary-navigation ul li.current ul li.current').length) { 
			$('#secondary-navigation ul li.parent').removeClass('current').addClass('active');		
		}
	},
	validateEmail:function(emailField, errorMsg) {
		var errorMsg = "Please submit a valid email address."; 
		var emailField = document.getElementById("newsletter_signup_email");
			$("#newsletter_signup_form").submit(function() {
				emailpat = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$/;
					if(!emailpat.test(emailField.value)) {
						alert(errorMsg);
						emailField.focus();
						emailField.select();
						return false;
					 }
					return true;
			});
	},
	initLoginForm : function(validation_options) {
		if (this.initLoginFormRun) { return false; }
		validation_options.showErrors = jQuery.validator.prototype.defaultShowErrors;
		validation_options.submitHandler = $.proxy(this.ajaxLoginHandler, this);
		$('#user-login-form').validate(validation_options);	
		this.initLoginFormRun = true;
	},
	ajaxLoginHandler : function(form) {
		var self = this;
		var data = $(form).serialize();
		data += '&user_mode=login';
		$.getJSON(vdwUtil.ajaxHandler, data, function(data, textStatus, jqXHR) {
			if (!data.errors) {
					window.location.href = data.login_url;
			} else {
				$errors = $(form).find('.errors');
				if ($errors.length) {
					$errors.html($(data.errors_html).html());
				} else {
					$errors = $(data.errors_html);
					if ($('.login-form #error-container')) { $('.login-form #error-container').remove(); }
					$(form).prepend($errors);
				}
				$errors.slideDown('fast');
			}
		});
	},
	autoPopulate:function(input_sel) {	
		$(input_sel).each(function() {
			var populate_text = $('label[for="' + $(this).attr('id') + '"]').text();
			if (populate_text) {
				$(this).val(populate_text).data('populate_text', populate_text);				
				$(this).focus(function() {
					if ($(this).val() == $(this).data('populate_text')) {
						$(this).val('');
					}
				});
				$(this).blur(function() {
					if ($(this).val() == '') {
						$(this).val($(this).data('populate_text'));
					}
				});
			}
		});
	}
};


$.preloadImages = function(images) {
	for(var i = 0; i < images.length; i++) {
		$("<img>").attr("src", images[i]);
	}
};

jQuery.fn.equalizeCols = function(){
  var height = 0;
  return this.css("height","auto").each(function(){
  	$this = jQuery(this);
    height = Math.max( height, ($this.outerHeight() - parseInt($this.css('padding-top')) - parseInt($this.css('padding-bottom'))));
  }).css("height", height);

}; 


sfHover = function() {
	if (document.getElementById('navigation')) {
		var sfEls = document.getElementById("navigation").getElementsByTagName("LI");
		for (var i=0; i<sfEls.length; i++) {
			sfEls[i].onmouseover=function() {
				this.className+=" sfhover";
			}
			sfEls[i].onmouseout=function() {
				this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
			}
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);


(function($) {
	// Expando Plugin by Ben Glassman
	$.fn.expando = function(options) {
		var opts = $.extend({}, $.fn.expando.defaults, options);
		return this.each(function() {
			$this = $(this);
			var o = opts;
			var $targets = $('.' + o.targetClass, $this);
			var $status = $('.' + o.statusClass, $this);
			var $trigger = $('.' + o.triggerClass, $this).bind('click', function(e) {
				e.preventDefault();
				if ($trigger.hasClass(o.openClass)) {
					$status.text(o.closedStatus);
					$targets.hide();
					$trigger.removeClass(o.openClass).addClass(o.closedClass);
				} else {
					$status.text(o.openStatus);
					$targets.show();
					$trigger.removeClass(o.closedClass).addClass(o.openClass);
				}
				if (o.toggleCallback) { o.toggleCallback($trigger, $targets, $(this), o); }
			});
			if (o.loadCallback) { o.loadCallback($trigger, $targets, o); }
			if (o.autoClose) { $trigger.trigger('click'); }
		});
	};
	$.fn.expando.defaults = {
		triggerClass : 'trigger',
		targetClass : 'target',
		statusClass : 'status',
		openClass : 'expanded',
		closedClass : 'collapsed',
		openStatus : 'Collapse',
		closedStatus : 'Expand',
		autoClose : 1,
		loadCallback : null,
		toggleCallback : null
	};
})(jQuery);

var RecaptchaOptions = { theme : 'clean' };

$(document).ready(function() {
	vdwUtil.init();
	
	if ($('#wp-blog').length) { 
		$('#nav-announcements').addClass('current');	
	}
	
});
