﻿/* Copyright (c) 2007 Paul Bakaus (paul.bakaus@googlemail.com) and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
*
* $LastChangedDate: 2007-12-20 08:43:48 -0600 (Thu, 20 Dec 2007) $
* $Rev: 4257 $
* Version: 1.2
*
* Requires: jQuery 1.2+
*/
(function ($) { $.dimensions = { version: '1.2' }; $.each(['Height', 'Width'], function (i, name) { $.fn['inner' + name] = function () { if (!this[0]) return; var torl = name == 'Height' ? 'Top' : 'Left', borr = name == 'Height' ? 'Bottom' : 'Right'; return this.is(':visible') ? this[0]['client' + name] : num(this, name.toLowerCase()) + num(this, 'padding' + torl) + num(this, 'padding' + borr); }; $.fn['outer' + name] = function (options) { if (!this[0]) return; var torl = name == 'Height' ? 'Top' : 'Left', borr = name == 'Height' ? 'Bottom' : 'Right'; options = $.extend({ margin: false }, options || {}); var val = this.is(':visible') ? this[0]['offset' + name] : num(this, name.toLowerCase()) + num(this, 'border' + torl + 'Width') + num(this, 'border' + borr + 'Width') + num(this, 'padding' + torl) + num(this, 'padding' + borr); return val + (options.margin ? (num(this, 'margin' + torl) + num(this, 'margin' + borr)) : 0); }; }); $.each(['Left', 'Top'], function (i, name) { $.fn['scroll' + name] = function (val) { if (!this[0]) return; return val != undefined ? this.each(function () { this == window || this == document ? window.scrollTo(name == 'Left' ? val : $(window)['scrollLeft'](), name == 'Top' ? val : $(window)['scrollTop']()) : this['scroll' + name] = val; }) : this[0] == window || this[0] == document ? self[(name == 'Left' ? 'pageXOffset' : 'pageYOffset')] || $.boxModel && document.documentElement['scroll' + name] || document.body['scroll' + name] : this[0]['scroll' + name]; }; }); $.fn.extend({ position: function () { var left = 0, top = 0, elem = this[0], offset, parentOffset, offsetParent, results; if (elem) { offsetParent = this.offsetParent(); offset = this.offset(); parentOffset = offsetParent.offset(); offset.top -= num(elem, 'marginTop'); offset.left -= num(elem, 'marginLeft'); parentOffset.top += num(offsetParent, 'borderTopWidth'); parentOffset.left += num(offsetParent, 'borderLeftWidth'); results = { top: offset.top - parentOffset.top, left: offset.left - parentOffset.left }; } return results; }, offsetParent: function () { var offsetParent = this[0].offsetParent; while (offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && $.css(offsetParent, 'position') == 'static')) offsetParent = offsetParent.offsetParent; return $(offsetParent); } }); function num(el, prop) { return parseInt($.curCSS(el.jquery ? el[0] : el, prop, true)) || 0; }; })(jQuery);


/*
* positionBy 1.0.7 (2008-01-29)
*
* Copyright (c) 2006,2007 Jonathan Sharp (http://jdsharp.us)
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
* http://jdsharp.us/
*
* Built upon jQuery 1.2.2 (http://jquery.com)
* This also requires the jQuery dimensions plugin
*/
(function ($) { var Range = function (x1, y1, x2, y2) { this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2 }; Range.prototype.contains = function (range) { return (this.x1 <= range.x1 && range.x2 <= this.x2) && (this.y1 <= range.y1 && range.y2 <= this.y2) }; Range.prototype.transform = function (x, y) { return new Range(this.x1 + x, this.y1 + y, this.x2 + x, this.y2 + y) }; $.fn.positionBy = function (args) { var date1 = new Date(); if (this.length == 0) { return this } var args = $.extend({ target: null, targetPos: null, elementPos: null, x: null, y: null, positions: null, addClass: false, force: false, container: window, hideAfterPosition: false }, args); if (args.x != null) { var tLeft = args.x; var tTop = args.y; var tWidth = 0; var tHeight = 0 } else { var $target = $($(args.target)[0]); var tWidth = $target.outerWidth(); var tHeight = $target.outerHeight(); var tOffset = $target.offset(); var tLeft = tOffset.left; var tTop = tOffset.top } var tRight = tLeft + tWidth; var tBottom = tTop + tHeight; return this.each(function () { var $element = $(this); if (!$element.is(':visible')) { $element.css({ left: -3000, top: -3000 }).show() } var eWidth = $element.outerWidth(); var eHeight = $element.outerHeight(); var position = []; var next = []; position[0] = new Range(tRight, tTop, tRight + eWidth, tTop + eHeight); next[0] = [1, 7, 4]; position[1] = new Range(tRight, tBottom - eHeight, tRight + eWidth, tBottom); next[1] = [0, 6, 4]; position[2] = new Range(tRight, tBottom, tRight + eWidth, tBottom + eHeight); next[2] = [1, 3, 10]; position[3] = new Range(tRight - eWidth, tBottom, tRight, tBottom + eHeight); next[3] = [1, 6, 10]; position[4] = new Range(tLeft, tBottom, tLeft + eWidth, tBottom + eHeight); next[4] = [1, 6, 9]; position[5] = new Range(tLeft - eWidth, tBottom, tLeft, tBottom + eHeight); next[5] = [6, 4, 9]; position[6] = new Range(tLeft - eWidth, tBottom - eHeight, tLeft, tBottom); next[6] = [7, 1, 4]; position[7] = new Range(tLeft - eWidth, tTop, tLeft, tTop + eHeight); next[7] = [6, 0, 4]; position[8] = new Range(tLeft - eWidth, tTop - eHeight, tLeft, tTop); next[8] = [7, 9, 4]; position[9] = new Range(tLeft, tTop - eHeight, tLeft + eWidth, tTop); next[9] = [0, 7, 4]; position[10] = new Range(tRight - eWidth, tTop - eHeight, tRight, tTop); next[10] = [0, 7, 3]; position[11] = new Range(tRight, tTop - eHeight, tRight + eWidth, tTop); next[11] = [0, 10, 3]; position[12] = new Range(tRight - eWidth, tTop, tRight, tTop + eHeight); next[12] = [13, 7, 10]; position[13] = new Range(tRight - eWidth, tBottom - eHeight, tRight, tBottom); next[13] = [12, 6, 3]; position[14] = new Range(tLeft, tBottom - eHeight, tLeft + eWidth, tBottom); next[14] = [15, 1, 4]; position[15] = new Range(tLeft, tTop, tLeft + eWidth, tTop + eHeight); next[15] = [14, 0, 9]; if (args.positions !== null) { var pos = args.positions[0] } else if (args.targetPos != null && args.elementPos != null) { var pos = []; pos[0] = []; pos[0][0] = 15; pos[0][1] = 7; pos[0][2] = 8; pos[0][3] = 9; pos[1] = []; pos[1][0] = 0; pos[1][1] = 12; pos[1][2] = 10; pos[1][3] = 11; pos[2] = []; pos[2][0] = 2; pos[2][1] = 3; pos[2][2] = 13; pos[2][3] = 1; pos[3] = []; pos[3][0] = 4; pos[3][1] = 5; pos[3][2] = 6; pos[3][3] = 14; var pos = pos[args.targetPos][args.elementPos] } var ePos = position[pos]; var fPos = pos; if (!args.force) { $window = $(window); var sx = $window.scrollLeft(); var sy = $window.scrollTop(); var container = new Range(sx, sy, sx + $window.width(), sy + $window.height()); var stack; if (args.positions) { stack = args.positions } else { stack = [pos] } var test = []; while (stack.length > 0) { var p = stack.shift(); if (test[p]) { continue } test[p] = true; if (!container.contains(position[p])) { if (args.positions === null) { stack = jQuery.merge(stack, next[p]) } } else { ePos = position[p]; break } } } $element.parents().each(function () { var $this = $(this); if ($this.css('position') != 'static') { var abs = $this.offset(); ePos = ePos.transform(-abs.left, -abs.top); return false } }); var css = { left: ePos.x1, top: ePos.y1 }; if (args.hideAfterPosition) { css['display'] = 'none' } $element.css(css); if (args.addClass) { $element.removeClass('positionBy0 positionBy1 positionBy2 positionBy3 positionBy4 positionBy5 ' + 'positionBy6 positionBy7 positionBy8 positionBy9 positionBy10 positionBy11 ' + 'positionBy12 positionBy13 positionBy14 positionBy15').addClass('positionBy' + p) } }) } })(jQuery);


/* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
*
* $LastChangedDate: 2007-07-21 18:45:56 -0500 (Sat, 21 Jul 2007) $
* $Rev: 2447 $
*
* Version 2.1.1
*/
(function ($) { $.fn.bgIframe = $.fn.bgiframe = function (s) { if ($.browser.msie && /6.0/.test(navigator.userAgent)) { s = $.extend({ top: 'auto', left: 'auto', width: 'auto', height: 'auto', opacity: true, src: 'javascript:false;' }, s || {}); var prop = function (n) { return n && n.constructor == Number ? n + 'px' : n; }, html = '<iframe class="bgiframe"frameborder="0"tabindex="-1"src="' + s.src + '"' + 'style="display:block;position:absolute;z-index:-1;' + (s.opacity !== false ? 'filter:Alpha(Opacity=\'0\');' : '') + 'top:' + (s.top == 'auto' ? 'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')' : prop(s.top)) + ';' + 'left:' + (s.left == 'auto' ? 'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')' : prop(s.left)) + ';' + 'width:' + (s.width == 'auto' ? 'expression(this.parentNode.offsetWidth+\'px\')' : prop(s.width)) + ';' + 'height:' + (s.height == 'auto' ? 'expression(this.parentNode.offsetHeight+\'px\')' : prop(s.height)) + ';' + '"/>'; return this.each(function () { if ($('> iframe.bgiframe', this).length == 0) this.insertBefore(document.createElement(html), this.firstChild); }); } return this; }; })(jQuery);


/*
* jdMenu 1.4.1 (2008-03-31)
*
* Copyright (c) 2006,2007 Jonathan Sharp (http://jdsharp.us)
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
* http://jdsharp.us/
*
* Built upon jQuery 1.2.1 (http://jquery.com)
* This also requires the jQuery dimensions >= 1.2 plugin
*/
$(function () { $('ul.jd_menu').jdMenu() }); (function ($) { function addEvents(ul) { var settings = $.data($(ul).parents().andSelf().filter('ul.jd_menu')[0], 'jdMenuSettings'); $('> li', ul).bind('mouseenter.jdmenu mouseleave.jdmenu', function (evt) { $(this).toggleClass('jdm_hover'); var ul = $('> ul', this); if (ul.length == 1) { clearTimeout(this.$jdTimer); var enter = (evt.type == 'mouseenter'); var fn = (enter ? showMenu : hideMenu); this.$jdTimer = setTimeout(function () { fn(ul[0], settings.onAnimate, settings.isVertical) }, enter ? settings.showDelay : settings.hideDelay) } }).bind('click.jdmenu', function (evt) { var ul = $('> ul', this); if (ul.length == 1 && (settings.disableLinks == true || $(this).hasClass('accessible'))) { showMenu(ul, settings.onAnimate, settings.isVertical); return false } if (evt.target == this) { var link = $('> a', evt.target).not('.accessible'); if (link.length > 0) { var a = link[0]; if (!a.onclick) { window.open(a.href, a.target || '_self') } else { $(a).trigger('click') } } } if (settings.disableLinks || (!settings.disableLinks && !$(this).parent().hasClass('jd_menu'))) { $(this).parent().jdMenuHide(); evt.stopPropagation() } }).find('> a').bind('focus.jdmenu blur.jdmenu', function (evt) { var p = $(this).parents('li:eq(0)'); if (evt.type == 'focus') { p.addClass('jdm_hover') } else { p.removeClass('jdm_hover') } }).filter('.accessible').bind('click.jdmenu', function (evt) { evt.preventDefault() }) } function showMenu(ul, animate, vertical) { var ul = $(ul); if (ul.is(':visible')) { return } ul.bgiframe(); var li = ul.parent(); ul.trigger('jdMenuShow').positionBy({ target: li[0], targetPos: (vertical === true || !li.parent().hasClass('jd_menu') ? 1 : 3), elementPos: 0, hideAfterPosition: true }); if (!ul.hasClass('jdm_events')) { ul.addClass('jdm_events'); addEvents(ul) } li.addClass('jdm_active').siblings('li').find('> ul:eq(0):visible').each(function () { hideMenu(this) }); if (animate === undefined) { ul.show() } else { animate.apply(ul[0], [true]) } } function hideMenu(ul, animate) { var ul = $(ul); $('.bgiframe', ul).remove(); ul.filter(':not(.jd_menu)').find('> li > ul:eq(0):visible').each(function () { hideMenu(this) }).end(); if (animate === undefined) { ul.hide() } else { animate.apply(ul[0], [false]) } ul.trigger('jdMenuHide').parents('li:eq(0)').removeClass('jdm_active jdm_hover').end().find('> li').removeClass('jdm_active jdm_hover') } $.fn.jdMenu = function (settings) { var settings = $.extend({ showDelay: 200, hideDelay: 500, disableLinks: false }, settings); if (!$.isFunction(settings.onAnimate)) { settings.onAnimate = undefined } return this.filter('ul.jd_menu').each(function () { $.data(this, 'jdMenuSettings', $.extend({ isVertical: $(this).hasClass('jd_menu_vertical') }, settings)); addEvents(this) }) }; $.fn.jdMenuUnbind = function () { $('ul.jdm_events', this).unbind('.jdmenu').find('> a').unbind('.jdmenu') }; $.fn.jdMenuHide = function () { return this.filter('ul').each(function () { hideMenu(this) }) }; $(window).bind('click.jdmenu', function () { $('ul.jd_menu ul:visible').jdMenuHide() }) })(jQuery);
