
jQuery.jGlideMenu = { useDropShadow: new Boolean(), useDragDrop: new Boolean(), defaultScrollSpeed: new Number(0), defaultScrollBackSpeed: new Number(0), slideRight: new Boolean(), useSmoothScrolling: new Boolean(), easeFx: new String(''), closeLinkMarkUp: new String(''), menuShowFx: new String(''), menuHideFx: new String(''), tileWidth: new Number(0), tileInset: new Number(0), itemsToDisplay: new Number(20), useTileURL: new Boolean(), tileSource: new String(''), URLParams: new Object(), loadImage: new String(''), loadImageStyle: new Object(), initialTile: new String(''), alertOnError: new Boolean(), captureLinks: new Boolean(), imagePath: new String(), tileCount: new Number(0), animation: new Boolean(), helperImage: new Boolean(), currentElement: new Object(), currentElementID: new String(''), hasDragDropSupport: new Boolean(), hasShadowSupport: new Boolean(), displayToggle: new Boolean(), tileScrollPosition: new Array(), smoothScrollTimer: new Array(), mouseHover: new Boolean(), demoMode: new Boolean(), initialize: function(o) {
    return this.each(function() {
        jQuery.jGlideMenu.animation = false; jQuery.jGlideMenu.helperImage = false; jQuery.jGlideMenu.hasDragDropSupport = false; jQuery.jGlideMenu.hasShadowSupport = false; jQuery.jGlideMenu.tileCount = 0; jQuery.jGlideMenu.displayToggle = false; jQuery.jGlideMenu.mouseHover = false; jQuery.jGlideMenu.demoMode = false; jQuery.jGlideMenu.currentElement = jQuery(this); if (this.id) jQuery.jGlideMenu.currentElementID = this.id; var s = { itemsToDisplay: 20, tileInset: 5, tileWidth: 227, useDropShadow: false, slideRight: true, useDragDrop: true, useSmoothScrolling: true, useTileURL: false, defaultScrollSpeed: 750, defaultScrollBackSpeed: 800, tileSource: 'myTiles', URLParams: {}, closeLinkMarkUp: 'Close', menuShowFx: 'fadeIn', menuHideFx: 'fadeOut', easeFx: 'linear', loadImage: 'img/ajax.gif', initialTile: 'tile_001', alertOnError: false, captureLinks: true, loadImageStyle: { 'position': 'absolute', 'bottom': '10px', 'left': '10px', 'z-index': '999' }, imagePath: 'img/', demoMode: false }; if (o) jQuery.extend(s, o); jQuery.jGlideMenu.checkFeatures(); if (s.closeLinkMarkUp.length < 1) s.closeLinkMarkUp = 'x Close'; if (parseInt(s.itemsToDisplay) < 1) s.itemsToDisplay = 1; if (s.initialTile.length < 0) jQuery.jGlideMenu.errorTrap('Invalid Configuration'); for (i in s) jQuery.jGlideMenu[i] = s[i]; if (jQuery.jGlideMenu.useTileURL == false && jQuery.jGlideMenu.tileSource.length > 0)
        { jQuery(jQuery.jGlideMenu.tileSource).css('display', 'none'); jQuery(jQuery.jGlideMenu.currentElement).children().not(jQuery.jGlideMenu.tileSource).remove(); }
        else jQuery(jQuery.jGlideMenu.currentElement).html(''); jQuery(jQuery.jGlideMenu.currentElement).append('<div class="jGM_header"><a href="#">' + jQuery.jGlideMenu.closeLinkMarkUp + '</a></div>').append('<div class="jGM_wrapper" id="jGM_wrapper_' + this.id + '"></div>'); var img = document.createElement('img'); img.src = jQuery.jGlideMenu.loadImage; img.style.display = 'none'; img.id = 'jGM_helper' + jQuery.jGlideMenu.currentElementID; jQuery(jQuery.jGlideMenu.currentElement).append(img); jQuery('img#' + img.id).css(jQuery.jGlideMenu.loadImageStyle); jQuery.jGlideMenu.helperImage = true; if (jQuery.jGlideMenu.hasDragDropSupport == true && jQuery.jGlideMenu.useDragDrop == true) {
            if (jQuery.isFunction(jQuery('body').Draggable))
                jQuery(this).Draggable({ handle: '.jGM_header' }); else
                jQuery(this).draggable({ handle: '.jGM_header' });
        }
        if (jQuery.jGlideMenu.hasShadowSupport == true && jQuery.jGlideMenu.useDropShadow == true) {
            if (jQuery.isFunction(jQuery('body').dropShadow))
                jQuery(this).dropShadow(); else
                jQuery(this).shadow({ color: '#cccccc' });
        }
        jQuery(jQuery.jGlideMenu.currentElement).find('div.jGM_header a').bind('click', function() { if (jQuery.jGlideMenu.displayToggle == true) return false; jQuery.jGlideMenu.toggleDisplay(true); return false; }); jQuery(this).hover(function() { jQuery.jGlideMenu.mouseHover = true; }, function() { jQuery.jGlideMenu.mouseHover = false; }); jQuery(document).keydown(function(e) {
            return false; var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0; if (key == 32 && jQuery.jGlideMenu.mouseHover == false) { jQuery.jGlideMenu.toggleDisplay(); return; }
            if (jQuery.jGlideMenu.mouseHover == false) return false; switch (key)
            { case 37: break; case 38: break; case 39: break; case 40: break; case 13: break; case 32: jQuery.jGlideMenu.toggleDisplay(); return; break; } 
        }); jQuery.jGlideMenu.loadTile(jQuery.jGlideMenu.initialTile, jQuery.jGlideMenu.URLParams);
    });
}, toggleDisplay: function(r) {
    jQuery.jGlideMenu.displayToggle = true; jQuery.jGlideMenu.mouseHover == false; if (jQuery(jQuery.jGlideMenu.currentElement).css('display') == 'block')
        var toggle_value = 0; else
        var toggle_value = 1; jQuery(jQuery.jGlideMenu.currentElement).animate({ opacity: toggle_value }, 'slow', function() {
            if (r == true)
            { jQuery.jGlideMenu.scrollToTile(0, jQuery.jGlideMenu.defaultScrollBackSpeed); jQuery.jGlideMenu.tileScrollPosition[0] = 0; }
            if (toggle_value > 0)
                jQuery(this).css('display', 'block'); else
                jQuery(this).css('display', 'none'); jQuery.jGlideMenu.displayToggle = false;
        });
}, checkFeatures: function() {
    jQuery.jGlideMenu.hasDragDropSupport = jQuery.isFunction(jQuery('body').Draggable); if (jQuery.jGlideMenu.hasDragDropSupport == false)
        jQuery.jGlideMenu.hasDragDropSupport = jQuery.isFunction(jQuery('body').draggable); jQuery.jGlideMenu.hasShadowSupport = jQuery.isFunction(jQuery('body').dropShadow); if (jQuery.jGlideMenu.hasShadowSupport == false)
        jQuery.jGlideMenu.hasShadowSupport = jQuery.isFunction(jQuery('body').shadow); return;
}, parseURL: function(u) {
    if (!$.browser.msie)
    { return u; }
    if (u.indexOf('#tile_') < 0)
    { return u; }
    var bits = u.split('#'); return '#' + bits[(bits.length - 1)];
}, countTiles: function() { jQuery.jGlideMenu.tileCount = parseInt(jQuery('div.jGM_tile').size()); }, loadTile: function(u, p) {
    var ptr = document.createElement('div'); var ctr = jQuery.jGlideMenu.tileCount + 1; ptr.id = 'jGM_tile_' + jQuery.jGlideMenu.currentElementID + '_' + ctr; if (jQuery.jGlideMenu.slideRight == true)
        var off = jQuery.jGlideMenu.tileWidth * jQuery.jGlideMenu.tileCount + jQuery.jGlideMenu.tileInset; else
        var off = jQuery.jGlideMenu.tileWidth * jQuery.jGlideMenu.tileCount * -1 + jQuery.jGlideMenu.tileInset; jQuery('#jGM_wrapper_' + jQuery.jGlideMenu.currentElementID).append(ptr); jQuery('#' + ptr.id).addClass('jGM_tile').css({ top: 0, left: off + 'px', height: 'auto', width: '195px', position: 'absolute', overflow: 'hidden', margin: 0, padding: 0, border: 0, display: 'block' }); var tmpl = '<div style="height:100%;margin:0;border:0;width:100%;padding:0;text-align:center;">'
+ '<h3>Missing Tile</h3><p>Unable to locate the requested Tile</p></div>'; if (jQuery.jGlideMenu.useTileURL == false) {
        if (jQuery('ul#' + u).size() < 1)
        { jQuery.jGlideMenu.errorTrap('Invalid Tile Request'); return false; }
        var title = jQuery('ul#' + u).attr('title'); var desc = jQuery('ul#' + u).attr('alt'); var items = jQuery('ul#' + u + ' li').size(); var links = []; jQuery('ul#' + u + ' li').each(function() {
            if (jQuery('a', this).size() > 0)
                links[links.length] = [jQuery('a', this).attr('href'), jQuery('a', this).text(), 1]; else
                links[links.length] = [jQuery(this).attr('rel'), jQuery(this).text(), 0];
        }); var tmpl = jQuery.jGlideMenu.buildTile(title, desc, links);
    }
    else {
        if (jQuery.jGlideMenu.tileSource.length < 1)
        { jQuery.jGlideMenu.errorTrap('Invalid AJAX Request'); return false; }
        var mon = 'img#jGM_helper' + jQuery.jGlideMenu.currentElementID; jQuery(mon).ajaxStart(function() { jQuery(this).animate({ opacity: 'show' }, 'fast'); }).ajaxStop(function() { jQuery(this).animate({ opacity: 'hide' }, 'slow'); }); p.tile = u; jQuery.ajax({ type: "POST", url: jQuery.jGlideMenu.tileSource, data: p, async: false, success: function(xhtml) {
            jQuery('body').append('<div id="jGM_temp_' + jQuery.jGlideMenu.currentElementID + p.tile + '" style="display:none;">' + xhtml + '</div>'); if (jQuery('#jGM_temp_' + jQuery.jGlideMenu.currentElementID + p.tile + ' ul#' + u).size() < 1)
            { jQuery.jGlideMenu.errorTrap('AJAX: Invalid Tile Request'); return false; }
            var title = jQuery('#jGM_temp_' + jQuery.jGlideMenu.currentElementID + p.tile + ' ul#' + u).attr('title'); var desc = jQuery('#jGM_temp_' + jQuery.jGlideMenu.currentElementID + p.tile + ' ul#' + u).attr('alt'); var items = jQuery('#jGM_temp_' + jQuery.jGlideMenu.currentElementID + p.tile + ' ul#' + u + ' li').size(); var links = []; jQuery('#jGM_temp_' + jQuery.jGlideMenu.currentElementID + p.tile + ' ul#' + u + ' li').each(function() {
                if (jQuery('a', this).size() > 0)
                    links[links.length] = [jQuery('a', this).attr('href'), jQuery('a', this).text(), 1]; else
                    links[links.length] = [jQuery(this).attr('rel'), jQuery(this).text(), 0];
            }); jQuery('#jGM_temp_' + jQuery.jGlideMenu.currentElementID + p.tile).remove(); tmpl = jQuery.jGlideMenu.buildTile(title, desc, links); jQuery(mon).ajaxStart(function() { }).ajaxStop(function() { });
        }, error: function(rslt) { jQuery.jGlideMenu.errorTrap('Invalid AJAX Tile Request'); jQuery(mon).ajaxStart(function() { }).ajaxStop(function() { }); } 
        });
    }
    jQuery('#' + ptr.id).html(tmpl); jQuery('#' + ptr.id + ' div.jGM_content a').bind('click', function() {
        var target = ''; target = jQuery.jGlideMenu.parseURL(jQuery(this).attr('href')); if (target.length < 1) { return false; }
        if (target.substr(0, 1) == '#')
        { if (jQuery.jGlideMenu.animation == true) return false; var dest = target.substr(1, target.length - 1); jQuery.jGlideMenu.loadTile(dest, jQuery.jGlideMenu.URLParams); return false; }
        else {
            if (jQuery.jGlideMenu.demoMode)
            { alert('Navigation Requestion: ' + target); }
            else
            { 
            //window.location.href = target;
            document.getElementById('mainframe').src = target;
             }
            if (jQuery.jGlideMenu.captureLinks == true) return false;
        }
        return true;
    }); jQuery.jGlideMenu.countTiles(); if (jQuery.jGlideMenu.tileCount > 1) {
        jQuery('#' + ptr.id).append('<div class="jGM_back"><a href="#"><img src="images/arrow1.gif" style="border:none;"> Back</a></div>'); jQuery('#' + ptr.id + ' div.jGM_back').bind('click', function() { if (jQuery.jGlideMenu.animation == true) return false; jQuery.jGlideMenu.scrollToTile((ctr - 1), jQuery.jGlideMenu.defaultScrollBackSpeed); return false; }); if (jQuery.jGlideMenu.tileCount > 2)
        { jQuery('#' + ptr.id).append('<div class="jGM_reset"><a href="#"><img src="images/arrow1.gif" style="border:none;"> Home</a></div>'); jQuery('#' + ptr.id + ' div.jGM_reset').bind('click', function() { if (jQuery.jGlideMenu.animation == true) return false; jQuery.jGlideMenu.scrollToTile(1, jQuery.jGlideMenu.defaultScrollBackSpeed); return false; }); } 
    }
    jQuery.jGlideMenu.tileScrollPosition[ctr] = 0; jQuery.jGlideMenu.drawPagers(ptr.id, jQuery('#' + ptr.id + ' .jGM_content a').size()); if (jQuery.jGlideMenu.useSmoothScrolling == false)
    { jQuery('#' + ptr.id + ' .jGM_pager a').click(function() { var dir = 1; if (jQuery(this).attr('rel') == 'Up') dir = 0; jQuery.jGlideMenu.scrollItems(dir); }); }
    else {
        jQuery('#' + ptr.id + ' .jGM_pager a').hover(function() {
            var dir = 1; if (jQuery(this).attr('rel') == 'Up')
                dir = 0; jQuery.jGlideMenu.smoothScrollTimer[jQuery.jGlideMenu.tileCount] = window.setInterval('jQuery.jGlideMenu.scrollItems(' + dir + ')', 250);
        }, function() { window.clearInterval(jQuery.jGlideMenu.smoothScrollTimer[jQuery.jGlideMenu.tileCount]); });
    }
    jQuery.jGlideMenu.scrollToTile(ctr, jQuery.jGlideMenu.defaultScrollSpeed);
}, scrollItems: function(d) {
    var x = '#jGM_tile_' + jQuery.jGlideMenu.currentElementID + '_' + jQuery.jGlideMenu.tileCount; var s = jQuery(x + ' .jGM_content a'); var c = jQuery.jGlideMenu.tileScrollPosition[jQuery.jGlideMenu.tileCount]; if (c <= 0 && d == 0) return; if (c + jQuery.jGlideMenu.itemsToDisplay >= jQuery(s).size() && d == 1) return; if (d == 0)
        jQuery.jGlideMenu.tileScrollPosition[jQuery.jGlideMenu.tileCount]--; else
        jQuery.jGlideMenu.tileScrollPosition[jQuery.jGlideMenu.tileCount]++; jQuery(s).show(); jQuery(x + ' .jGM_content').children('a:lt(' + jQuery.jGlideMenu.tileScrollPosition[jQuery.jGlideMenu.tileCount] + ')').hide(); jQuery.jGlideMenu.drawPagers(x.substr(1, x.length), jQuery(s).size());
}, drawPagers: function(p, c) {
    jQuery('#' + p + ' .jGM_pager').find('a').each(function() {
        if (jQuery(this).attr('rel') == 'Up') {
            if (jQuery.jGlideMenu.tileScrollPosition[jQuery.jGlideMenu.tileCount] > 0)
                jQuery(this).css('display', 'block'); else
                jQuery(this).css('display', 'none');
        }
        else {
            if (jQuery.jGlideMenu.tileScrollPosition[jQuery.jGlideMenu.tileCount] + jQuery.jGlideMenu.itemsToDisplay < jQuery('#' + p + ' .jGM_content a').size())
                jQuery(this).css('display', 'block'); else
                jQuery(this).css('display', 'none');
        } 
    });
}, cleanTiles: function(n) {
    var start = n + 1; var stop = jQuery.jGlideMenu.tileCount; if (n >= stop) return false; for (var i = start; i <= stop; i++)
    { jQuery('#jGM_tile_' + jQuery.jGlideMenu.currentElementID + '_' + i).remove(); jQuery.jGlideMenu.tileScrollPosition[i] = 0; }
    jQuery.jGlideMenu.countTiles(); return;
}, scrollToTile: function(n, s) {
    jQuery.jGlideMenu.countTiles(); var t = jQuery.jGlideMenu.tileCount; if (n > t) n = t; if (n < 1) n = 1; if (!s) s = jQuery.jGlideMenu.defaultScrollSpeed; var b = (jQuery.jGlideMenu.tileWidth * n) - jQuery.jGlideMenu.tileWidth; var a = (jQuery.jGlideMenu.slideRight == true) ? b * -1 : b; jQuery.jGlideMenu.animation = true; jQuery('div#jGM_wrapper_' + jQuery.jGlideMenu.currentElementID).animate({ 'left': a }, s, jQuery.jGlideMenu.easeFx, function() {
        if (n < t)
            jQuery.jGlideMenu.cleanTiles(n); if (a != 0) a += 'px'; jQuery(this).css({ 'left': a }); jQuery.jGlideMenu.animation = false;
    });
}, buildTile: function(t, d, l) {
    if (jQuery.jGlideMenu.imagePath.length > 1 && jQuery.jGlideMenu.imagePath.substr(-1, 1) != '/')
        jQuery.jGlideMenu.imagePath += '/'; var template = new String(''); template = '<div class="jGM_cats"><h1>' + t + '</h1><p class="jGM_desc">' + d + '</p></div>'; template += '<div class="jGM_pager"><a href="#" rel="Up" title="Scroll Up" style="display:none"><img src="'
+ jQuery.jGlideMenu.imagePath + 'arrow_up.gif" alt="Scroll Up"/></a></div>'; template += '<div class="jGM_content">'; for (var i = 0; i < l.length; i++)
    { var hash = (l[i][2] == 1) ? '' : '#'; var type = (l[i][2] == 1) ? '' : ' class="jGM_more"'; template += '<a href="' + hash + l[i][0] + '"' + type + '>' + l[i][1] + '</a>'; }
    template += '</div>'; template += '<div class="jGM_pager"><a href="#" rel="Down" title="Scroll Down" style="display:none"><img src="'
+ jQuery.jGlideMenu.imagePath + 'arrow_dn.gif" alt="Scroll Up"/></a></div>'; return template;
}, errorTrap: function(m) {
    if (jQuery.jGlideMenu.alertOnError == true)
        alert(m); return;
} 
}
jQuery.fn.jGlideMenu = jQuery.jGlideMenu.initialize; jQuery.fn.jGlideMenuToggle = jQuery.jGlideMenu.toggleDisplay; jQuery.fn.reverse = function() { return this.pushStack(this.get().reverse(), arguments); };
