﻿/*
jQuery plugin:	cssWatermark(className)
Purpose:		Creates a watermark effect using only css classes.
Copyright:		© 2010 by Canvas On Demand, LLC.
License:		Not authorized for redistribution or third-party use.
Author:			Elijah Taylor (elijah(-at-)canvasondemand(-dot-)com)
*/
jQuery.fn.cssWatermark = function (className) {

	return this.each(function () {
		var $obj = $(this);
		$obj.bind('focus', function () {
			$(this).removeClass(className);
		});
		$obj.bind('blur', function () {
			if ($(this).val() == '') {
				$(this).addClass(className);
			}
			else {
				$(this).removeClass(className);
			}
		});
		// Always clear it while they're typing
		$obj.bind('keydown', function () {
			$(this).removeClass(className);
		});
		// Initial check
		if ($obj.val() == '') {
			$obj.addClass(className);
		}
		else {
			$obj.removeClass(className);
		}
	});
}

/*
jQuery plugin:	sniffCardType(settings)
Purpose:		Detects credit card type and changes an element's CSS class name based on the result.
Parameters:		spanId, visaClass, mcClass, amexClass, discoverClass, defaultClass
Returns:        jQuery
Copyright:		© 2010 by Canvas On Demand, LLC.
License:		Not authorized for redistribution or third-party use.
Author:			Elijah Taylor (elijah(-at-)canvasondemand(-dot-)com)
*/
jQuery.fn.sniffCardType = function (settings) {

	settings = jQuery.extend({
		spanId: 'ccType',
		visaClass: 'card_visa',
		mcClass: 'card_mc',
		amexClass: 'card_amex',
		discoverClass: 'card_disc',
		allClass: 'card_all',
		noneClass: 'card_invalid',
		inputId: ''
	}, settings);

	this.each(function () {
		$(this).keyup(function () {
			var finish = function (span, className) {
				span.attr('class', className);
				$('#' + settings.inputId).val(className);
			}
			var span = jQuery('#' + settings.spanId);
			var val = $(this).val();
			if (val.length < 2) {
				finish(span, settings.allClass);
				return;
			}
			var firstTwo = val.substr(0, 2);
			if (firstTwo.substr(0, 1) == 4) {
				finish(span, settings.visaClass);
			}
			else if (firstTwo >= 51 && firstTwo <= 55) {
				finish(span, settings.mcClass);
			}
			else if (firstTwo == 34 || firstTwo == 37) {
				finish(span, settings.amexClass);
			}
			else {
				if (
					val.substring(0, 4) == 6011
					 || (val.substring(0, 6) >= 622126 && val.substring(0, 6) <= 622925)
					 || (val.substring(3, 0) >= 644 && val.substring(0, 3) <= 649)
					 || firstTwo == 65) {
					finish(span, settings.discoverClass);
				}
				else {
					finish(span, settings.noneClass);
				}
			}
		});
	});
	return this;
};

/*
jQuery plugin:	rolloverImage(url)
Purpose:		Automatically sets up image rollover
Parameters:		url
Returns:        jQuery
Copyright:		© 2010 by Canvas On Demand, LLC.
License:		Not authorized for redistribution or third-party use.
Author:			Elijah Taylor (elijah(-at-)canvasondemand(-dot-)com)
*/
jQuery.fn.rolloverImage = function (url, delay) {
	if (!delay) delay = 500;
	return this.each(function () {
		$(this).data('originalImage', $(this).attr('src'));
		$(this).bind('mouseover', function () {
			var target = $(this);
			if (target.data('timeoutId') > 0) window.clearTimeout(target.data('timeoutId'));
			target.attr('src', url);
		});
		$(this).bind('mouseout', function () {
			$(this).data('timeoutId', window.setTimeout("$('#" + this.id + "').attr('src', '" + $(this).data('originalImage') + "');", delay));
		});
	});
};

function enable_smooth_scroll() {
	function filterPath(string) {
		return string
                .replace(/^\//, '')
                .replace(/(index|default).[a-zA-Z]{3,4}$/, '')
                .replace(/\/$/, '');
	}

	var locationPath = filterPath(location.pathname);

	var scrollElement = 'html, body';
	$('html, body').each(function () {
		var initScrollTop = $(this).attr('scrollTop');
		$(this).attr('scrollTop', initScrollTop + 1);
		if ($(this).attr('scrollTop') == initScrollTop + 1) {
			scrollElement = this.nodeName.toLowerCase();
			$(this).attr('scrollTop', initScrollTop);
			return false;
		}
	});

	$('a[href*=#]').each(function () {
		var thisPath = filterPath(this.pathname) || locationPath;
		if (locationPath == thisPath
                && (location.hostname == this.hostname || !this.hostname)
                && this.hash.replace(/#/, '')
            ) {
			if ($(this.hash).length) {
				$(this).click(function (event) {
					var targetOffset = $(this.hash).offset().top;
					var target = this.hash;
					event.preventDefault();
					$(scrollElement).animate(
                            { scrollTop: targetOffset },
                            500,
                            function () {
                            	location.hash = target;
                            });
				});
			}
		}
	});
}

String.prototype.format = function () {
	var replaceArg = function (value, index, arg) {
		var re = new RegExp('\\{' + (index) + '\\}', 'gm');
		return value.replace(re, arg);
	};

	var result = this;
	for (var i = 0; i < arguments.length; i++) {
		result = replaceArg(result, i, arguments[i]);
	}

	return result;
}


var originalMenuUl;
var menuTimerId = 0;

$(document).ready(function () {
	originalMenuUl = $('.nav ul > li.s').attr('rel', 'ori').find('ul');
	var i = 0;
	$('.nav ul li[rel!=ori]')
			.mouseenter(function () {
				clearTimeout(menuTimerId);
				var $this = $(this);
				$this.siblings('[rel!=ori]').removeClass('s').find('ul').hide();
				originalMenuUl.hide();
				$this.addClass('s')
				$this.find('ul').show();
			})
			.mouseleave(function () {
				menuTimerId = setTimeout('hideMenu("' + $(this).attr('id') + '");', 500);
			})
			.attr('id', function () { return "menuli" + i++ })
			.find('ul')
			.css('display', 'none');
	originalMenuUl.parent().mouseenter(function () {
		$(this).siblings().each(function () {
			$(this).removeClass('s').find('ul').hide();
		});
		$(this).find('ul').show();
	});
	$('.nav ul li ul li').unbind();
});
function hideMenu(id) {
	clearTimeout(menuTimerId);
	$('#' + id).removeClass('s').find('ul').hide();
	originalMenuUl.show();
}
