﻿/// <reference path="jquery-1.5.1-vsdoc.js" />
/*$(function () {
    $('ul.dropdown').each(function () {
        $(this).parent().eq(0).hover(function () {
            $('ul.dropdown:first', this).show(400);
        }, function () {
            $('ul.dropdown:first', this).hide(1);
        });
    });
});
// top menu, no longer needed
*/

$(function () {
    //Set custom configurations
    var config = {
        sensitivity: 2, // number = sensitivity threshold (must be 1 or higher)
        interval: 100, // number = milliseconds for onMouseOver polling interval
        over: megaHoverOver, // function = onMouseOver callback (REQUIRED)
        timeout: 500, // number = milliseconds delay before onMouseOut
        out: megaHoverOut // function = onMouseOut callback (REQUIRED)
    };

    $("ul#topnav li .sub").css({ 'opacity': '0' }); //Fade sub nav to 0 opacity on default
    $("ul#topnav li").hoverIntent(config); //Trigger Hover intent with custom configurations

    $("li.notactive a").click(function () {
        $(this).menuActivate();
    });

});


$.fn.menuActivate = function () {
    var $a = $(this);
    var complete = false;
    $a.closest(".sub").find(".activepanel").fadeOut(function () {
        if (!complete) {
            complete == true;
            var index = $a.attr("rel");
            $a.closest(".sub").find(".panel:eq(" + index + ")").fadeIn("normal").removeClass("notactivepanel").addClass("activepanel")
                .siblings().addClass("notactivepanel").removeClass("activepanel");
            //swap actives
            $a.parent().siblings().removeClass("active").addClass("notactive");
            $a.parent().removeClass("notactive").addClass("active");
            $("li.notactive a").unbind("click").bind("click", function () {
                $(this).menuActivate();
            });
        }
    });
};




$(function () {
    $('ul.dropdownleft').each(function () {

        var config = {
            sensitivity: 2, // number = sensitivity threshold (must be 1 or higher)
            interval: 100, // number = milliseconds for onMouseOver polling interval
            over: leftOver, // function = onMouseOver callback (REQUIRED)
            timeout: 300, // number = milliseconds delay before onMouseOut
            out: leftOut // function = onMouseOut callback (REQUIRED)
        };

        $(this).parent().eq(0).hoverIntent(config);

        /* $(this).parent().eq(0).hover(function () {
        $('ul.dropdownleft:first', this).show(400);
        }, function () {
        $('ul.dropdownleft:first', this).hide(1);
        });*/
    });
});

function leftOver() {
    $('ul.dropdownleft:first', this).fadeIn(400);
}

function leftOut() {
    $('ul.dropdownleft:first', this).fadeOut(200);
}


$(function () {

    var config = {
        sensitivity: 2, // number = sensitivity threshold (must be 1 or higher)
        interval: 100, // number = milliseconds for onMouseOver polling interval
        over: leftIntOver, // function = onMouseOver callback (REQUIRED)
        timeout: 300, // number = milliseconds delay before onMouseOut
        out: leftIntOut // function = onMouseOut callback (REQUIRED)
    };

    $('ul.dropdownleftinternal').each(function () {

        $(this).parent().eq(0).hoverIntent(config);

        /*$(this).parent().eq(0).hover(function () {
        $('ul.dropdownleftinternal:first', this).show(400);
        }, function () {
        $('ul.dropdownleftinternal:first', this).hide(1);
        });*/
    });
});


function leftIntOver() {
    $('ul.dropdownleftinternal:first', this).fadeIn(400);
    $(this).addClass("hover");
}

function leftIntOut() {
    $('ul.dropdownleftinternal:first', this).fadeOut(200);
    $(this).removeClass("hover");
}



//On Hover Over
function megaHoverOver() {
    $(this).find(".sub").stop().fadeTo('fast', 1).show(); //Find sub and fade it in
    $(this).find(".subnavli").equalHeights(true);
}

//On Hover Out
function megaHoverOut() {
    $(this).find(".sub").stop().fadeTo('fast', 0, function () { //Fade to 0 opactiy
        $(this).hide();  //after fading, hide it
    });
}


/*-------------------------------------------------------------------- 
* JQuery Plugin: "EqualHeights"
* by:	Scott Jehl, Todd Parker, Maggie Costello Wachs (http://www.filamentgroup.com)
*
* Copyright (c) 2008 Filament Group
* Licensed under GPL (http://www.opensource.org/licenses/gpl-license.php)
*
* Description: Compares the heights or widths of the top-level children of a provided element 
and sets their min-height to the tallest height (or width to widest width). Sets in em units 
by default if pxToEm() method is available.
* Dependencies: jQuery library, pxToEm method	(article: 
http://www.filamentgroup.com/lab/retaining_scalable_interfaces_with_pixel_to_em_conversion/)							  
* Usage Example: $(element).equalHeights();
Optional: to set min-height in px, pass a true argument: $(element).equalHeights(true);
* Version: 2.0, 08.01.2008
--------------------------------------------------------------------*/

$.fn.equalHeights = function (px) {
    $(this).each(function () {
        var currentTallest = 0;
        $(this).children().each(function (i) {
            if ($(this).height() > currentTallest) { currentTallest = $(this).height(); }
        });
        if (!px || !Number.prototype.pxToEm) currentTallest = currentTallest.pxToEm(); //use ems unless px is specified
        // for ie6, set height since min-height isn't supported
        if ($.browser.msie) { $(this).children().css({ 'height': currentTallest }); }
        $(this).children().css({ 'min-height': currentTallest }).css({ '_height': currentTallest });
    });
    return this;
};



/*-------------------------------------------------------------------- 
* jQuery plugins: toEm() and toPx()
* by Scott Jehl (scott@filamentgroup.com), http://www.filamentgroup.com
* Copyright (c) Filament Group
* Dual licensed under the MIT (filamentgroup.com/examples/mit-license.txt) and GPL (filamentgroup.com/examples/gpl-license.txt) licenses.
* Article: http://www.filamentgroup.com/lab/update_jquery_plugin_for_retaining_scalable_interfaces_with_pixel_to_em_con/
* Options:  	 								
scope: string or jQuery selector for font-size scoping		  
* Usage Example: $(myPixelValue).toEm(); or $(myEmValue).toPx();
--------------------------------------------------------------------*/

$.fn.toEm = function (settings) {
    settings = jQuery.extend({
        scope: 'body'
    }, settings);
    var that = parseInt(this[0], 10);
    var scopeTest = jQuery('<div style="display: none; font-size: 1em; margin: 0; padding:0; height: auto; line-height: 1; border:0;">&nbsp;</div>').appendTo(settings.scope);
    var scopeVal = scopeTest.height();
    scopeTest.remove();
    return (that / scopeVal).toFixed(8) + 'em';
};


$.fn.toPx = function (settings) {
    settings = jQuery.extend({
        scope: 'body'
    }, settings);
    var that = parseFloat(this[0]);
    var scopeTest = jQuery('<div style="display: none; font-size: 1em; margin: 0; padding:0; height: auto; line-height: 1; border:0;">&nbsp;</div>').appendTo(settings.scope);
    var scopeVal = scopeTest.height();
    scopeTest.remove();
    return Math.round(that * scopeVal) + 'px';
};



/*-------------------------------------------------------------------- 
* javascript method: "pxToEm"
* by:
Scott Jehl (scott@filamentgroup.com) 
Maggie Wachs (maggie@filamentgroup.com)
http://www.filamentgroup.com
*
* Copyright (c) 2008 Filament Group
* Dual licensed under the MIT (filamentgroup.com/examples/mit-license.txt) and GPL (filamentgroup.com/examples/gpl-license.txt) licenses.
*
* Description: Extends the native Number and String objects with pxToEm method. pxToEm converts a pixel value to ems depending on inherited font size.  
* Article: http://www.filamentgroup.com/lab/retaining_scalable_interfaces_with_pixel_to_em_conversion/
* Demo: http://www.filamentgroup.com/examples/pxToEm/	 	
*							
* Options:  	 								
scope: string or jQuery selector for font-size scoping
reverse: Boolean, true reverses the conversion to em-px
* Dependencies: jQuery library						  
* Usage Example: myPixelValue.pxToEm(); or myPixelValue.pxToEm({'scope':'#navigation', reverse: true});
*
* Version: 2.0, 08.01.2008 
* Changelog:
*		08.02.2007 initial Version 1.0
*		08.01.2008 - fixed font-size calculation for IE
--------------------------------------------------------------------*/

Number.prototype.pxToEm = String.prototype.pxToEm = function (settings) {
    //set defaults
    settings = jQuery.extend({
        scope: 'body',
        reverse: false
    }, settings);

    var pxVal = (this == '') ? 0 : parseFloat(this);
    var scopeVal;
    var getWindowWidth = function () {
        var de = document.documentElement;
        return self.innerWidth || (de && de.clientWidth) || document.body.clientWidth;
    };

    /* When a percentage-based font-size is set on the body, IE returns that percent of the window width as the font-size. 
    For example, if the body font-size is 62.5% and the window width is 1000px, IE will return 625px as the font-size. 	
    When this happens, we calculate the correct body font-size (%) and multiply it by 16 (the standard browser font size) 
    to get an accurate em value. */

    if (settings.scope == 'body' && $.browser.msie && (parseFloat($('body').css('font-size')) / getWindowWidth()).toFixed(1) > 0.0) {
        var calcFontSize = function () {
            return (parseFloat($('body').css('font-size')) / getWindowWidth()).toFixed(3) * 16;
        };
        scopeVal = calcFontSize();
    }
    else { scopeVal = parseFloat(jQuery(settings.scope).css("font-size")); };

    var result = (settings.reverse == true) ? (pxVal * scopeVal).toFixed(2) + 'px' : (pxVal / scopeVal).toFixed(2) + 'em';
    return result;
};




