﻿var $isIE8 = navigator.userAgent.match(/\(compatible.*\s+MSIE\s+8.*\s+\(compatible/);
var $isIE7 = navigator.userAgent.match(/\(compatible.*\s+MSIE\s+7.*\s+\(compatible/);
var $isIE6OrBelow = (!$isIE8 && !$isIE7 && $.browser.msie);

(function($){

$.fn.extend({

	/**
	 * Stores the original version of offset(), so that we don't lose it
	 */
	_offset : $.fn.offset,

	/**
	 * Set or get the specific left and top position of the matched
	 * elements, relative the the browser window by calling setXY
	 * @param {Object} newOffset
	 */
	offset : function(newOffset){
	    return !newOffset ? this._offset() : this.each(function(){
			var el = this;

			var hide = false;

			if($(el).css('display')=='none'){
				hide = true;
				$(el).show();
			};

			var style_pos = $(el).css('position');

			// default to relative
			if (style_pos == 'static') {
				$(el).css('position','relative');
				style_pos = 'relative';
			};

			var offset = $(el).offset();

			if (offset){
				var delta = {
					left : parseInt($(el).css('left'), 10),
					top: parseInt($(el).css('top'), 10)
				};

				// in case of 'auto'
				if (isNaN(delta.left))
					delta.left = (style_pos == 'relative') ? 0 : el.offsetLeft;
				if (isNaN(delta.top))
					delta.top = (style_pos == 'relative') ? 0 : el.offsetTop;

				if (newOffset.left || newOffset.left===0)
					$(el).css('left',newOffset.left - offset.left + delta.left + 'px');

				if (newOffset.top || newOffset.top===0)
					$(el).css('top',newOffset.top - offset.top + delta.top + 'px');
			};
			if(hide) $(el).hide();
		});
	}

});

})(jQuery);


/*
drop shadow effects
*/
$(document).ready(function() {
    var opts = {
        left: 0,
        top: 2,
        blur: 2,
        opacity: 0.5,
        color: 'black',
        swap: false
    }

    var photoOpts = {
        left: -2,
        top: 2,
        blur: 2,
        opacity: 0.5,
        color: 'black',
        swap: false
    }

    $('.hhnHomeArticleLink .hhnPhoto').dropShadow(photoOpts);
    $('#hhnTopNav ul li a').dropShadow(opts);
});

/*
    rollover images
    Needed to add stdImage becuase of ie png fix.  Could not accurately time the value of the src in the img in html.
*/
var hhnHomePageRollovers = [
            { selector: '#hhnDiaryButtons ul li a img:eq(0)', stdImage: '/images/ReadDiaryButton.png', hoverImage: '/images/ReadDiaryButtonGrn.png' },
            { selector: '#hhnDiaryButtons ul li a img:eq(1)', stdImage: '/images/ListenDiaryButton.png', hoverImage: '/images/ListenDiaryButtonGrn.png' }
        ];

function initRolovers(definitions) {
    for (var i = 0; i < definitions.length; i++) {
        $(definitions[i].selector).each(function() {
            var imgFile = definitions[i].stdImage;
            var preloadImage = new Image();
            preloadImage.src = definitions[i].hoverImage;

            $(this).hover(function() {
                $(this).attr('src', preloadImage.src);
            },
            function() {
                $(this).attr('src', imgFile);
            });
        });
    }
}

$(document).ready(function() {
    initRolovers(hhnHomePageRollovers);
});

var $activeMenu = null;
var $menuTimeout = null;
var $cancelHide = null;

var $cancelHideComplete = false;

function cancelTimeoutAndWait()
{
	$cancelHide = true;
	clearTimeout($menuTimeout);
	for (var i = 0; i < 1000; i++) {}
	$cancelHide = false;
}

function showMenu(menu)
{
	if ($activeMenu == menu)
	{
		cancelTimeoutAndWait();
		return;
	}
	
	$canceHide = false;
		
	if ($activeMenu != null)
	{
		hideMenu($activeMenu, true);
	}
		
	$activeMenu = menu;
	menu.button.addClass('active');
	menu.element.show();
	menu.element.dropShadow();
}

function hideMenu(menu, immediate)
{
	if (immediate)
	{
		cancelTimeoutAndWait();
		$activeMenu = null;
		menu.button.removeClass('active');
		//menu.element.slideUp('fast');
		menu.element.removeShadow();
		menu.element.hide();
	}
	else
	{
		$cancelHide = false;
		$menuTimeout = setTimeout(function()
		{
			$cancelHideComplete = true;
			if ($cancelHide)
			{
				$cancelHide = false;
				return;
			}
			
			$activeMenu = null;
			menu.button.removeClass('active');
			//menu.element.slideUp('fast');
			menu.element.removeShadow();
			menu.element.hide();
		}, 300);
	}
}

function newInitMenu()
{
	var $recording = [];
	
	$('#hhnMenu a').each(function()
	{
		var menu = 
		{
			button: $(this),
			element: $('#' + $(this).attr('rel')),
			active: false
		};
		
		$(this).hover(function()
		{
			showMenu(menu);
		},
		function()
		{
			hideMenu(menu);
		});
		
		menu.element.hover(function()
		{
			showMenu(menu);
		},
		function()
		{
			hideMenu(menu);
		});
	});
}

/*
Menu initialization
*/
function initMenu() 
{
	$('#hhnMenu a').each(function() {
		var itemId = '#' + $(this).attr('rel');
		$(itemId).hide();
		
		$(this).hover(function() {
			$(itemId).show(300);
		}, function() {
			setTimeout(function() { $(itemId).hide(300); }, 500);
		});
		
		$(itemId).hover(function() {
			$(this).show(300);
		}, function() {
			$(this).hide(300);
		});
	});
}

/*
    Load Header 
*/
$(document).ready(function() {
	$('#hhnHeader').load('/snipets/header.htm', null, function() {
        newInitMenu();
		initTopNav();
    });
});

$(document).ready(function() {
	if (!$isIE6OrBelow)
		$('#hhnWrap').append('<div id=\'hhnWrapLeftBorder\'></div>\n<div id=\'hhnWrapRightBorder\'></div>');
});
