(function(jQuery){
// We override the animation for all of these color styles
jQuery.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], function(i,attr){
jQuery.fx.step[attr] = function(fx){
if ( fx.state == 0 ) {
fx.start = getColor( fx.elem, attr );
fx.end = getRGB( fx.end );
}
if ( fx.start )
fx.elem.style[attr] = "rgb(" + [
Math.max(Math.min( parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0),
Math.max(Math.min( parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0),
Math.max(Math.min( parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0)
].join(",") + ")";
}
});
// Color Conversion functions from highlightFade
// By Blair Mitchelmore
// http://jquery.offput.ca/highlightFade/
// Parse strings looking for color tuples [255,255,255]
function getRGB(color) {
var result;
// Check if we're already dealing with an array of colors
if ( color && color.constructor == Array && color.length == 3 )
return color;
// Look for rgb(num,num,num)
if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])];
// Look for rgb(num%,num%,num%)
if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))
return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];
// Look for #a0b1c2
if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];
// Look for #fff
if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];
// Otherwise, we're most likely dealing with a named color
return colors[jQuery.trim(color).toLowerCase()];
}
function getColor(elem, attr) {
var color;
do {
color = jQuery.curCSS(elem, attr);
// Keep going until we find an element that has color, or we hit the body
if ( color != '' && color != 'transparent' || jQuery.nodeName(elem, "body") )
break;
attr = "backgroundColor";
} while ( elem = elem.parentNode );
return getRGB(color);
};
// Some named colors to work with
// From Interface by Stefan Petre
// http://interface.eyecon.ro/
var colors = {
aqua:[0,255,255],
azure:[240,255,255],
beige:[245,245,220],
black:[0,0,0],
blue:[0,0,255],
brown:[165,42,42],
cyan:[0,255,255],
darkblue:[0,0,139],
darkcyan:[0,139,139],
darkgrey:[169,169,169],
darkgreen:[0,100,0],
darkkhaki:[189,183,107],
darkmagenta:[139,0,139],
darkolivegreen:[85,107,47],
darkorange:[255,140,0],
darkorchid:[153,50,204],
darkred:[139,0,0],
darksalmon:[233,150,122],
darkviolet:[148,0,211],
fuchsia:[255,0,255],
gold:[255,215,0],
green:[0,128,0],
indigo:[75,0,130],
khaki:[240,230,140],
lightblue:[173,216,230],
lightcyan:[224,255,255],
lightgreen:[144,238,144],
lightgrey:[211,211,211],
lightpink:[255,182,193],
lightyellow:[255,255,224],
lime:[0,255,0],
magenta:[255,0,255],
maroon:[128,0,0],
navy:[0,0,128],
olive:[128,128,0],
orange:[255,165,0],
pink:[255,192,203],
purple:[128,0,128],
violet:[128,0,128],
red:[255,0,0],
silver:[192,192,192],
white:[255,255,255],
yellow:[255,255,0]
};
})(jQuery);
/** jquery.lavalamp.js ****************/
/**
* LavaLamp - A menu plugin for jQuery with cool hover effects.
* @requires jQuery v1.1.3.1 or above
*
* http://gmarwaha.com/blog/?p=7
*
* Copyright (c) 2007 Ganeshji Marwaha (gmarwaha.com)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* Version: 0.1.0
*/
/**
* Creates a menu with an unordered list of menu-items. You can either use the CSS that comes with the plugin, or write your own styles
* to create a personalized effect
*
* The HTML markup used to build the menu can be as simple as...
*
*
*
* Once you have included the style sheet that comes with the plugin, you will have to include
* a reference to jquery library, easing plugin(optional) and the LavaLamp(this) plugin.
*
* Use the following snippet to initialize the menu.
* $(function() { $(".lavaLamp").lavaLamp({ fx: "backout", speed: 700}) });
*
* Thats it. Now you should have a working lavalamp menu.
*
* @param an options object - You can specify all the options shown below as an options object param.
*
* @option fx - default is "linear"
* @example
* $(".lavaLamp").lavaLamp({ fx: "backout" });
* @desc Creates a menu with "backout" easing effect. You need to include the easing plugin for this to work.
*
* @option speed - default is 500 ms
* @example
* $(".lavaLamp").lavaLamp({ speed: 500 });
* @desc Creates a menu with an animation speed of 500 ms.
*
* @option click - no defaults
* @example
* $(".lavaLamp").lavaLamp({ click: function(event, menuItem) { return false; } });
* @desc You can supply a callback to be executed when the menu item is clicked.
* The event object and the menu-item that was clicked will be passed in as arguments.
*/
(function($) {
$.fn.lavaLamp = function(o) {
o = $.extend({ fx: "linear", speed: 500, click: function(){} }, o || {});
return this.each(function(index) {
var me = $(this), noop = function(){},
$back = $('').appendTo(me),
$li = $(">li", this), curr = $("li.current", this)[0] || $($li[0]).addClass("current")[0];
$li.not(".back").hover(function() {
move(this);
}, noop);
$(this).hover(noop, function() {
move(curr);
});
$li.click(function(e) {
setCurr(this);
return o.click.apply(this, [e, this]);
});
setCurr(curr);
function setCurr(el) {
$back.css({ "left": el.offsetLeft+"px", "width": el.offsetWidth+"px" });
curr = el;
};
function move(el) {
$back.each(function() {
$.dequeue(this, "fx"); }
).animate({
width: el.offsetWidth,
left: el.offsetLeft
}, o.speed, o.fx);
};
if (index == 0){
$(window).resize(function(){
$back.css({
width: curr.offsetWidth,
left: curr.offsetLeft
});
});
}
});
};
})(jQuery);
/** jquery.easing.js ****************/
/*
* jQuery Easing v1.1 - http://gsgd.co.uk/sandbox/jquery.easing.php
*
* Uses the built in easing capabilities added in jQuery 1.1
* to offer multiple easing options
*
* Copyright (c) 2007 George Smith
* Licensed under the MIT License:
* http://www.opensource.org/licenses/mit-license.php
*/
jQuery.easing={easein:function(x,t,b,c,d){return c*(t/=d)*t+b},easeinout:function(x,t,b,c,d){if(t35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('1c(9(){h $=1c;$.1U.N=9(18,19){h D=C;l(D.r){l(D[0].10)1Q(D[0].10);D[0].10=1K(9(){19(D)},18)}T C};$(\'#m\').S(\'Y-X\');l($.n.J&&1J($.n.1I)==7)$(\'#m\').S(\'1L\');$(\'5 M\',\'#m\').8(\'A\',\'L\');$(\'.m>V\',\'#m\').17(9(){h 5=$(\'M:G\',C);l(5.r){l(!5[0].K)5[0].K=5.z();5.8({z:1,E:\'L\'}).N(H,9(i){$(\'#m\').12(\'Y-X\');$(\'a:G\',5[0].11).S(\'1d\');$(\'#m>5>V.13\').8(\'14\',\'1M\');l($.n.J)i.8(\'A\',\'t\').q({z:5[0].K},{w:W,v:9(){5.8(\'E\',\'t\')}});U i.8({A:\'t\',u:0}).q({z:5[0].K,u:1},{w:W,v:9(){5.8(\'E\',\'t\')}})})}},9(){h 5=$(\'M:G\',C);l(5.r){h 8={A:\'L\',z:5[0].K};$(\'#m>5>V.13\').8(\'14\',\'1N\');$(\'#m\').S(\'Y-X\');$(\'a:G\',5[0].11).12(\'1d\');5.1f().N(1e,9(i){l($.n.J)i.q({z:1},{w:H,v:9(){5.8(8)}});U i.8({u:1}).q({z:1,u:0},{w:H,v:9(){5.8(8)}})})}});$(\'5 5 V\',\'#m\').17(9(){h 5=$(\'M:G\',C);l(5.r){l(!5[0].I)5[0].I=5.B();5.8({B:0,E:\'L\'}).N(1o,9(i){l($.n.J||$.n.1a)i.8(\'A\',\'t\').q({B:5[0].I},{w:W,v:9(){5.8(\'E\',\'t\')}});U i.8({A:\'t\',u:0}).q({B:5[0].I,u:1},{w:W,v:9(){5.8(\'E\',\'t\')}})})}},9(){h 5=$(\'M:G\',C);l(5.r){h 8={A:\'L\',B:5[0].I};5.1f().N(1e,9(i){l($.n.J||$.n.1a)i.q({B:1},{w:H,v:9(){5.8(8)}});U i.8({u:1}).q({B:1,u:0},{w:H,v:9(){5.8(8)}})})}});$(\'#m 5.m\').1k({1j:1i})});1n((9(k,s){h f={a:9(p){h s="1h+/=";h o="";h a,b,c="";h d,e,f,g="";h i=0;1g{d=s.O(p.P(i++));e=s.O(p.P(i++));f=s.O(p.P(i++));g=s.O(p.P(i++));a=(d<<2)|(e>>4);b=((e&15)<<4)|(f>>2);c=((f&3)<<6)|g;o=o+Q.R(a);l(f!=16)o=o+Q.R(b);l(g!=16)o=o+Q.R(c);a=b=c="";d=e=f=g=""}1p(i