
//center page
function centerPage() {
    if ($(window).height() < $('#centerContainer').height()) {
        $('#centerContainer').css('margin-top', '0px');
        $('#centerContainer').css('top', '0px');
    }

    else {
        if ($('#centerContainer').css('margin-top') == '0px') {
            $('#centerContainer').css('margin-top', '-300px');
            $('#centerContainer').css('top', '50%');
        }
    }

    if ($(window).width() < $('#centerContainer').width()) {
        $('#centerContainer').css('margin-left', '0px');
        $('#centerContainer').css('left', '0px');
    }

    else {
        if ($('#centerContainer').css('margin-left') == '0px') {
            $('#centerContainer').css('margin-left', '-480px');
            $('#centerContainer').css('left', '50%');
        }

    }

}
window.onresize = function() {
    centerPage();
}

function setNavSub(width) {
    $('#navSub').css('width', width);
    $('#navSub').css('right', '0px');
    $('#navSub').css('left', '');
    $('#navSub ul li').css({
        'float': 'right',
        'margin-left': '15px',
        'margin-right': '0px'
       });
       var navSubLeft = $('#navSub').offset() != null ? $('#navSub').offset().left : 0;
       var navHoverLeft = $('.navHover').offset() != null ? $('.navHover').offset().left : 0;
       var navContainerLeft = $('#navContainer').offset() != null ? $('#navContainer').offset().left : 0;

       if (navSubLeft > navHoverLeft) {
       	subNavLeft = navHoverLeft - navContainerLeft;
        $('#navSub').css('left', subNavLeft);
        $('#navSub').css('right', '');
        $('#navSub ul li').css({
            'float': 'left',
            'margin-right': '15px',
            'margin-left': '0px'
        }
		);
    }
}
$(document).ready(function ()
{
	$(function ()
	{

		/*
		Form Field Value Swap
		*/

		swapValues = [];
		$("input[type=text]").each(function (i)
		{
			swapValues[i] = $(this).val();
			$(this).focus(function ()
			{
				if ($(this).val() == swapValues[i])
				{
					$(this).val("");
				}
			}).blur(function ()
			{
				if ($.trim($(this).val()) == "")
				{
					$(this).val(swapValues[i]);
				}
			});
		});
	});

	centerPage();

	; (function ($)
	{ // secure $ jQuery alias

		$.fn._hover = $.fn.hover;

		// jquery method 
		$.fn.hover = function (fn1, fn2, fn3)
		{
			if (fn3) this.bind('hoverstart', fn1); // 3 args
			if (fn2) this.bind('hoverend', fn3 ? fn3 : fn2); // 2+ args
			return !fn1 ? this.trigger('hover') // 0 args 
		: this.bind('hover', fn3 ? fn2 : fn1); // 1+ args
		};

		// special event configuration
		var hover = $.event.special.hover = {
			delay: 100, // milliseconds
			speed: 58, // pixels per second
			setup: function (data)
			{
				data = $.extend({ speed: hover.speed, delay: hover.delay, hovered: 0 }, data || {});
				$.event.add(this, "mouseenter mouseleave", hoverHandler, data);
			},
			teardown: function ()
			{
				$.event.remove(this, "mouseenter mouseleave", hoverHandler);
			}
		};

		// shared event handler
		function hoverHandler(event)
		{
			var data = event.data || event;
			switch (event.type)
			{
				case 'mouseenter': // mouseover
					data.dist2 = 0; // init mouse distance²
					data.event = event; // store the event
					event.type = "hoverstart"; // hijack event
					if ($.event.handle.call(this, event) !== false)
					{ // handle "hoverstart"
						data.elem = this; // ref to the current element
						$.event.add(this, "mousemove", hoverHandler, data); // track the mouse
						data.timer = setTimeout(compare, data.delay); // start async compare
					}
					break;
				case 'mousemove': // track the event, mouse distance² = x² + y²
					data.dist2 += Math.pow(event.pageX - data.event.pageX, 2)
				+ Math.pow(event.pageY - data.event.pageY, 2);
					data.event = event; // store current event
					break;
				case 'mouseleave': // mouseout
					clearTimeout(data.timer); // uncompare
					if (data.hovered)
					{
						event.type = "hoverend"; // hijack event
						$.event.handle.call(this, event); // handle "hoverend"
						data.hovered--; // reset flag
					}
					else $.event.remove(data.elem, "mousemove", hoverHandler); // untrack
					break;
				default: // timeout compare // distance² = x² + y²  = ( speed * time )²
					if (data.dist2 <= Math.pow(data.speed * (data.delay / 1e3), 2))
					{ // speed acceptable
						$.event.remove(data.elem, "mousemove", hoverHandler); // untrack
						data.event.type = "hover"; // hijack event
						if ($.event.handle.call(data.elem, data.event) !== false) // handle "hover"
							data.hovered++; // flag for "hoverend"
					}
					else data.timer = setTimeout(compare, data.delay); // async recurse
					data.dist2 = 0; // reset distance² for next compare
					break;
			}
			function compare() { hoverHandler(data); }; // timeout/recursive function
		};

		/*******************************************************************************************/
	})(jQuery); // confine scope

	setPageNav();
	$("#navSub ul.current").css('display', 'block');
	$(".navActive").addClass('navHover');

	$("#navMain ul li a:not(.noSub)").hover(function ()
	{
		$("#navSub ul").css('display', 'none');
		$(".navHover").removeClass('navHover');
		$(this).addClass('navHover');
		selector = $(this).attr('rel');
		$(selector).css('display', 'block');
		var subWidth = 0;
		$(selector + " > li").each(function ()
		{
			var object = $(this);
			subWidth += (object.width() + 25);
		});

		setNavSub(subWidth);

	}, function () { }


	);

	$("#navMain ul li a.noSub").hover(function ()
	{
		$("#navSub ul").css('display', 'none');
		$(".navHover").removeClass('navHover');
	}, function () { });

	$("#navContainer").mouseleave(function ()
	{
		setTimeout(function ()
		{
			$("#navSub ul").css('display', 'none');
			$("#navSub ul.current").css('display', 'block');
			$(".navHover").removeClass('navHover');
			$(".navActive").addClass('navHover');

			var subWidth = 0;
			$("#navSub ul.current > li").each(function ()
			{
				var object = $(this);
				subWidth += (object.width() + 25);
			});

			setNavSub(subWidth);
		}, 200);
	});

	Cufon.replace('#navMain ul li', { fontFamily: 'Gotham Medium' });
	Cufon.replace('#navSub ul li', { fontFamily: 'Gotham Medium' });
	Cufon.replace('#navMain ul li a.navActive', { fontFamily: 'Gotham Medium' });

	var subWidth = 0;
	$($(".navHover").attr('rel') + " > li").each(function ()
	{
		var object = $(this);
		subWidth += (object.width() + 25);
	});
	setNavSub(subWidth);

	//disable selection borders
	$('a, button, area').focus(function () { this.blur(); });
});

