﻿// JavaScript Document
(function($) {
    $.fn.hoverIntent = function(f, g) {
        // default configuration options
        var cfg = {
            sensitivity: 3,
            interval: 150,
            timeout: 0
        };
        // override configuration options with user supplied object
        cfg = $.extend(cfg, g ? { over: f, out: g} : f);

        // instantiate variables
        // cX, cY = current X and Y position of mouse, updated by mousemove event
        // pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
        var cX, cY, pX, pY;

        // A private function for getting mouse position
        var track = function(ev) {
            cX = ev.pageX;
            cY = ev.pageY;
        };

        // A private function for comparing current and previous mouse position
        var compare = function(ev, ob) {
            ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
            // compare mouse positions to see if they've crossed the threshold
            if ((Math.abs(pX - cX) + Math.abs(pY - cY)) < cfg.sensitivity) {
                $(ob).unbind("mousemove", track);
                // set hoverIntent state to true (so mouseOut can be called)
                ob.hoverIntent_s = 1;
                return cfg.over.apply(ob, [ev]);
            } else {
                // set previous coordinates for next time
                pX = cX; pY = cY;
                // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
                ob.hoverIntent_t = setTimeout(function() { compare(ev, ob); }, cfg.interval);
            }
        };

        // A private function for delaying the mouseOut function
        var delay = function(ev, ob) {
            ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
            ob.hoverIntent_s = 0;
            return cfg.out.apply(ob, [ev]);
        };

        // A private function for handling mouse 'hovering'
        var handleHover = function(e) {
            // next three lines copied from jQuery.hover, ignore children onMouseOver/onMouseOut
            var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget;
            while (p && p != this) { try { p = p.parentNode; } catch (e) { p = this; } }
            if (p == this) { return false; }

            // copy objects to be passed into t (required for event object to be passed in IE)
            var ev = jQuery.extend({}, e);
            var ob = this;

            // cancel hoverIntent timer if it exists
            if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }

            // else e.type == "onmouseover"
            if (e.type == "mouseover") {
                // set "previous" X and Y position based on initial entry point
                pX = ev.pageX; pY = ev.pageY;
                // update "current" X and Y position based on mousemove
                $(ob).bind("mousemove", track);
                // start polling interval (self-calling timeout) to compare mouse coordinates over time
                if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout(function() { compare(ev, ob); }, cfg.interval); }

                // else e.type == "onmouseout"
            } else {
                // unbind expensive mousemove event
                $(ob).unbind("mousemove", track);
                // if hoverIntent state is true, then call the mouseOut function after the specified delay
                if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout(function() { delay(ev, ob); }, cfg.timeout); }
            }
        };

        // bind the function to the two event listeners
        return this.mouseover(handleHover).mouseout(handleHover);
    };
})(jQuery);

/*** 
DIV Slideshow
Written by Jon Sinclair 2/19/09 using:
Simple jQuery Slideshow Script
Released by Jon Raasch (jonraasch.com) under FreeBSD license: free to use or modify, not responsible for anything, etc.  Please link out to me if you like it :)
***/
var a = 1500;   // fade speed
var b = 6000;  // slide "up" time
var playSlideshow = setInterval("slideSwitch()", b);
var state = "playing";

// randomize the starting slide if active is not set
function initSlide() {
    var $test = $('#slideshow').children('.active');
    if ($test.length <= 0) {
        var $kids = $('#slideshow').children('.slide');
        var rndNum = Math.floor(Math.random() * $kids.length);
        $($kids[rndNum]).addClass('active');
    }
}

function slideSwitch() {
    var $active = $('#slideshow DIV.active');

    if ($active.length == 0) $active = $('#slideshow DIV:last');

    // use this to pull the divs in the order they appear in the markup
    var $next = $active.next('div.slide').length ? $active.next('div.slide')
        : $('#slideshow DIV:first');

    $active.fadeOut(a, function() {
        $active.removeClass('active');
        $next.addClass('active').hide().fadeIn(a);
    });
}

function playpause() {
    if (state == "playing") {
        clearInterval(playSlideshow);
        state = "paused";
        $('img#imgPlayPause').attr("src", "/Images/default-slideshow-play.gif");
        $('img#imgPlayPause').attr("alt", "Click to play");
    } else {
        playSlideshow = setInterval("slideSwitch()", b);
        state = "playing";
        $('img#imgPlayPause').attr("src", "/Images/default-slideshow-pause.gif");
        $('img#imgPlayPause').attr("alt", "Click to pause");
        slideSwitch();
    }
}

$(function() {
    $('#slideshow DIV.active').fadeIn(a);
});

// Custom sliding navigation: Jon Sinclair, December 27, 2008
// Feel free to use this as needed, please leave the credit 
// if don't change the code, or just change the variables.
$(document).ready(function() {
    //for slideshow
    initSlide();

    //for top tier of nav
    $("#nav").find("ul li").hoverIntent(
		function() {
		    if (this._timerID)
		        clearTimeout(this._timerID)
		    $("ul.tier1", this).fadeIn("fast");
		    $("ul.tier1 li ul", this).hide();
		},
		function() {
		    var self = this;
		    var fadespeed = 200;
		    this._timerID = window.setTimeout(function() {
		        // jQuery fade out the UL of the calling li
		        $("ul.tier1", self).fadeOut("fast");
		    }, fadespeed);
		}
	);
    $("#nav").find("ul li ul li").hover(
	    function() {
	        $("ul.tier2", this).fadeIn("fast");
	    },
	    function() {
	        $("ul.tier2", this).fadeOut("fast");
	    }
	);
    //Slider navigation
    $('#slider-nav').find('.collapse').hide().end().find('dt').click(function() {
        $(this).next().slideToggle(); if (this.className == "slider-active") { this.className = "" } else { this.className = "slider-active" }
    });
    //Slide in animation
    $(".slidein").slideToggle("slow");
});

// For printing the page.
function PrintThisPage() {
    var sOption = "toolbar=yes,location=no,directories=yes,menubar=yes,";
    sOption += "scrollbars=yes,width=750,height=600,left=100,top=25";

    var sWinHTML = document.getElementById('print-content').innerHTML;

    var winprint = window.open("", "", sOption);
    winprint.document.open();
    winprint.document.write('<html><LINK href="../App_Themes/an2010-950/StyleSheet.css" rel="stylesheet" type="text/css"><LINK href="../CSS/NormalFonts.css" rel="stylesheet" type="text/css"><style type="text/css"><!--div#printimg { margin: 0px 20px 0px 5px; display: none;}--></style><body style="background-color: #FFFFFF; padding: 10px;text-align:left;">');
    winprint.document.write(sWinHTML);
    winprint.document.write('</body></html>');
    winprint.document.close();
    winprint.focus();
}

// For search on enter key
function submitenter(myfield,e)
{
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;

if (keycode == 13)
   {
       document.getElementById(searchsubmitID).click();
    return false;
   }
else
   return true;
}
