/*----------------------------------------------------------------------------- 
rodparsley.com Intersite Navigation Script

version:   1.1
date:      2011-04-07
author:    Jay Baldwin IV
email:     webmaster at rodparsley dot com
website:   rodparsley.com

version history: 

DATE         AUTHOR     CHANGES
2011-04-07   JJBIV      Initial version
-----------------------------------------------------------------------------*/


function fncUserMenuToggle() {
	var um = $('#user-menu');
	var lnk = $('.signin-link');
	
	if (um.css('display') != 'none')
	{
		um.css('display', 'none');
		if (lnk.html() == 'Close Sign In') {
			lnk.html('Sign In');
		}
		return;
	}
	
	var spos = lnk.offset();
	um.css('top', (spos.top + (27)) + 'px'); // Changed top offset from 35 to 20 to accomodate new nav.
	
	um.css('display', 'block');
	fncPositionSignInForm();
	if (lnk.html() == 'Sign In') {
		lnk.html('Close Sign In');
		$('.login-field-email').focus();
	}
}

function fncPositionSignInForm() {
	var um = $('#user-menu');
	var lnk = $('.signin-link');
	if (um.css('display') == 'none') return;
	um.css('left', 0);
	var o = (lnk.offset().left + lnk.outerWidth()) - um.outerWidth();
	um.css('left', o);
}

$(window).resize(function() {
	fncPositionSignInForm();
});

function fncSetupDocumentClick() {
	$(document).bind('click', function(e) {
		if (e.target == null || e.target == undefined || !e.target) return;
		if ($('#user-menu').css('display') == 'none') return;
		var obj = e.target;
		var cont = true;
		while(obj.parentNode != null && obj.parentNode != undefined && cont)
		{
			if ($(obj).is('#user-menu')) cont = false;
			if ($(obj).is('.signin-link')) cont = false;
			obj = obj.parentNode;
		}
		if (!cont) return;
		if ($('#user-menu').css('display') == 'block') 
		{
			fncUserMenuToggle();
		}
	});
}

fncSetupDocumentClick();



// Declare variables to exist in the scope of the entire site.
isnOpenMenu = '';
isnMenuPreventClose = 'null';


// Open a menu if its not already open.
function isnMenuNow(id, id2, blnInterSite) {
    var NewIsnOpenMenu = id;

    isnMenuPreventClose = NewIsnOpenMenu;

    if (isnOpenMenu == NewIsnOpenMenu) return; // Stop. It's trying to open itself again.

    if (isnOpenMenu.length > 0) {
        var menuOpen = $("#" + isnOpenMenu);
        if (!menuOpen.is(":hidden")) {
            menuOpen.hide();
        }
        var menuOpen1 = document.getElementById(isnOpenMenu);
        if (menuOpen1.style.display == "none") menuOpen1.style.display = 'none';
    }

    isnOpenMenu = NewIsnOpenMenu;

    var Source = $("#" + id2);
    var Menu = $("#" + isnOpenMenu);

    var spos = Source.offset();

    var objMenu = document.getElementById(isnOpenMenu);
    objMenu.style.left = (spos.left - (!blnInterSite ? 15 : 8)) + 'px';
    objMenu.style.top = (spos.top + (!blnInterSite ? 35 : 27)) + 'px'; // Changed top offset from 35 to 20 to accomodate new nav.

    Menu.slideDown("500").css('display', 'block').css('z-index',$.topZIndex()+1);
}


// Excute the closing of a menu.
function isnMenuCloseDo(id) {
    if (isnMenuPreventClose == id) return;

    var menuOpen = $("#" + id);
    if (menuOpen.is(":hidden")) return;

    menuOpen.hide();
    if (isnOpenMenu == id) isnOpenMenu = '';
}


// Used on mouseout... schedules the close execution function.
function isnMenuClose(id) {
    // We don't want to immediately close, because they user may have 
    // moused out by accident, and moused back in.  We'll give them 500
    // miliseconds (1/2 second) to correct any mouse errors.  

    // Technical translation: Clear the close-prevention token and
    // schedule a check for 500 ms from now.

    isnMenuPreventClose = 'null';
    setTimeout("isnMenuCloseDo('" + id + "');", 500);
}
