jQuery.extend({  fxQueues: {      queues: [],      enqueue: function(queueName, scopeName, animation, queuePosition) {            queuePosition = queuePosition || "end";            var queue = this.createIfNotExists(queueName, scopeName, queuePosition);            var usersCallback = (jQuery.isFunction(animation.callback))? animation.callback: function(){};            animation.callback = function() {                jQuery.fxQueues.dequeue(queueName, scopeName, animation.who);                usersCallback();            };            animation.stopped = false;            if (queue.items && animation.who && animation.properties && animation.speed) {                if (scopeName) {                    animation.finished = false;                    var scope = this.getScope(queueName, scopeName);                    scope.items.push(animation);                } else {                    if (queuePosition == "end" || queue.items.length == 0) {                         queue.items.push(animation);                    } else if (queuePosition == "front") {                        queue.items.splice(1, 0, animation);                    }                }            }            if (queue.items.length == 1                    || (queue.items[0].name && queue.items[0].name == scopeName)) {                 this.start(queueName);            }            return true;      },      dequeue: function(queueName, scopeName, caller) {            var queue = jQuery.fxQueues.getQueue(queueName);            if (queue.items)  {                // a counter to check later if the scope (if it is a scope) is done                var scopesFinishedAnimations = 0;                // if the current queue item ti play is a scope                if (queue.items[0].items && queue.items[0].items.length) {                    var found = false;                    // walk the scope's items                    for (var i = 0; i < queue.items[0].items.length; i++) {                        // if callback's element is found...                        if (!found || caller == queue.items[0].items[i].who) {                            queue.items[0].items[i].finished = true; // this scope's animation is done                            found = true;                        }                        if (queue.items[0].items[i].finished) {                            scopesFinishedAnimations++;                        }                    }                }                // if (it's a scope and scope's items length equals the scopes finished animations)                //   or (it's not a scope)                if ((queue.items[0].items && queue.items[0].items.length == scopesFinishedAnimations)                        || (queue.items[0].who == caller)) {                    queue.items.shift();                    if (queue.items.length == 0) {                        jQuery.fxQueues.clear(queueName);                    } else {                        jQuery.fxQueues.start(queueName);                    }                }            }      },      clear: function(queue) {          for(var i=0; i < this.queues.length; i++)             if(this.queues[i].name == queue)                this.queues.splice(i, 1);          return true;      },      createIfNotExists: function(queueName, scopeName, scopePosition) {          var queue = this.getQueue(queueName);          if (!queue) {              this.queues.push({name: queueName, items: []});              queue = this.queues[this.queues.length - 1];          }          if (scopeName) {              var scope = this.getScope(queueName, scopeName);              if (!scope) {                  if (queue.items.length == 0 || scopePosition == "end") {                      queue.items.push({name: scopeName, items: []});                  } else if (scopePosition == "front") {                      queue.items.splice(1, 0, {name: scopeName, items: []});                  }              }          }          return queue;      },      getQueue: function(queueName) {          for(var i=0; i < this.queues.length; i++) {             if(this.queues[i].name == queueName) {                return this.queues[i];             }          }          return false;      },      getScope: function(queueName, scopeName) {          for(var i=0; i < this.queues.length; i++) {             if(this.queues[i].name == queueName) {                for(var j=0; j < this.queues[i].items.length; j++) {                    if (this.queues[i].items[j].name == scopeName) {                        return this.queues[i].items[j];                    }                }             }          }          return false;      },      start: function(queueName) {            var queue = this.getQueue(queueName);            if (queue.items) {                var item = queue.items[0];                if (item.who) {                    item.stopped = false;                    item.who.performAnimation(item);                } else if (item.items) {                        for (var i=0; i < item.items.length; i++) {                        if (!item.items[i].finished) {                            item.items[i].stopped = false;                            item.items[i].who.performAnimation(item.items[i]);                        }                    }                }            }            return true;      },      stop: function(queueName) {            var queue = this.getQueue(queueName);                        if (queue.items) {                var item = queue.items[0];                if (item.who) {                    item.stopped = true;                    item.who.stop();                } else if (item.items) {                    for (var i=0; i < item.items.length; i++) {                        if (!item.items[i].finished) {                            item.items[i].stopped = true;                            item.items[i].who.stop();                        }                    }                }            }      }  }});jQuery.fn.extend({	animate: function( prop, speed, easing, callback, queue, scope, queuePosition, wait) {        if (speed && speed.constructor == Object) {            easing = speed.easing || null;            callback = speed.callback || null;            queue = speed.queue || null;            scope = speed.scope || null;            queuePosition = speed.queuePosition || null;            wait = speed.wait || null;            speed = speed.speed || null;        }        //if a queue name is not provided, then we perform the queueing on the element        queue = queue || this;        jQuery.fxQueues.enqueue(queue, scope, {who: this,                                                  properties: prop,                                                  speed: speed,                                                  easing: easing,                                                  callback: callback,                                                  wait: wait},                                              queuePosition);        return this;    },    //the good old animate    performAnimation: function( target ) {        var prop = target.properties;        var speed = target.speed;        var easing = target.easing;        var callback = target.callback;        var wait = target.wait;		var opt = jQuery.speed(speed, easing, callback);		return this.each(function(){			opt = jQuery.extend({}, opt);			var hidden = jQuery(this).is(":hidden"), self = this;			for ( var p in prop ) {				if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )					return jQuery.isFunction(opt.complete) && opt.complete.apply(this);				if ( p == "height" || p == "width" ) {					// Store display property					opt.display = jQuery.css(this, "display");					// Make sure that nothing sneaks out					opt.overflow = this.style.overflow;				}			}			if ( opt.overflow != null )				this.style.overflow = "hidden";			opt.curAnim = jQuery.extend({}, prop);			jQuery.each( prop, function(name, val){				var e = new jQuery.fx( self, opt, name );				if ( /toggle|show|hide/.test(val) ) {                    setTimeout(function() {                                    if(!target.stopped)					                   e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop );                                }, wait);				} else {					var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),						start = e.cur(true) || 0;					if ( parts ) {						var end = parseFloat(parts[2]),							unit = parts[3] || "px";						// We need to compute starting value						if ( unit != "px" ) {							self.style[ name ] = (end || 1) + unit;							start = ((end || 1) / e.cur(true)) * start;							self.style[ name ] = start + unit;						}						// If a +=/-= token was provided, we're doing a relative animation						if ( parts[1] )							end = ((parts[1] == "-=" ? -1 : 1) * end) + start;                                                // Wait before start                        setTimeout(function() {                            if(!target.stopped)    						      e.custom( start, end, unit );                        }, wait);					} else {                        // Wait before start                        setTimeout(function() {                            if(!target.stopped)    						      e.custom( start, val, "" );                        }, wait);                    }				}			});			// For JS strict compliance			return true;		});	},    // Remove the original queueing	speed: function(speed, easing, fn) {		var opt = speed && speed.constructor == Object ? speed : {			complete: fn || !fn && easing ||				jQuery.isFunction( speed ) && speed,			duration: speed,			easing: fn && easing || easing && easing.constructor != Function && easing		};		opt.duration = (opt.duration && opt.duration.constructor == Number ?			opt.duration : 			{ slow: 600, fast: 200 }[opt.duration]) || 400;		return opt;	}});/* * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ * * 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 */// t: current time, b: begInnIng value, c: change In value, d: durationjQuery.easing['jswing'] = jQuery.easing['swing'];jQuery.extend( jQuery.easing,{	def: 'easeOutQuad',	swing: function (x, t, b, c, d) {		//alert(jQuery.easing.default);		return jQuery.easing[jQuery.easing.def](x, t, b, c, d);	},	easeInQuad: function (x, t, b, c, d) {		return c*(t/=d)*t + b;	},	easeOutQuad: function (x, t, b, c, d) {		return -c *(t/=d)*(t-2) + b;	},	easeInOutQuad: function (x, t, b, c, d) {		if ((t/=d/2) < 1) return c/2*t*t + b;		return -c/2 * ((--t)*(t-2) - 1) + b;	},	easeInCubic: function (x, t, b, c, d) {		return c*(t/=d)*t*t + b;	},	easeOutCubic: function (x, t, b, c, d) {		return c*((t=t/d-1)*t*t + 1) + b;	},	easeInOutCubic: function (x, t, b, c, d) {		if ((t/=d/2) < 1) return c/2*t*t*t + b;		return c/2*((t-=2)*t*t + 2) + b;	},	easeInQuart: function (x, t, b, c, d) {		return c*(t/=d)*t*t*t + b;	},	easeOutQuart: function (x, t, b, c, d) {		return -c * ((t=t/d-1)*t*t*t - 1) + b;	},	easeInOutQuart: function (x, t, b, c, d) {		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;		return -c/2 * ((t-=2)*t*t*t - 2) + b;	},	easeInQuint: function (x, t, b, c, d) {		return c*(t/=d)*t*t*t*t + b;	},	easeOutQuint: function (x, t, b, c, d) {		return c*((t=t/d-1)*t*t*t*t + 1) + b;	},	easeInOutQuint: function (x, t, b, c, d) {		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;		return c/2*((t-=2)*t*t*t*t + 2) + b;	},	easeInSine: function (x, t, b, c, d) {		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;	},	easeOutSine: function (x, t, b, c, d) {		return c * Math.sin(t/d * (Math.PI/2)) + b;	},	easeInOutSine: function (x, t, b, c, d) {		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;	},	easeInExpo: function (x, t, b, c, d) {		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;	},	easeOutExpo: function (x, t, b, c, d) {		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;	},	easeInOutExpo: function (x, t, b, c, d) {		if (t==0) return b;		if (t==d) return b+c;		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;	},	easeInCirc: function (x, t, b, c, d) {		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;	},	easeOutCirc: function (x, t, b, c, d) {		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;	},	easeInOutCirc: function (x, t, b, c, d) {		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;	},	easeInElastic: function (x, t, b, c, d) {		var s=1.70158;var p=0;var a=c;		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;		if (a < Math.abs(c)) { a=c; var s=p/4; }		else var s = p/(2*Math.PI) * Math.asin (c/a);		return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;	},	easeOutElastic: function (x, t, b, c, d) {		var s=1.70158;var p=0;var a=c;		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;		if (a < Math.abs(c)) { a=c; var s=p/4; }		else var s = p/(2*Math.PI) * Math.asin (c/a);		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;	},	easeInOutElastic: function (x, t, b, c, d) {		var s=1.70158;var p=0;var a=c;		if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);		if (a < Math.abs(c)) { a=c; var s=p/4; }		else var s = p/(2*Math.PI) * Math.asin (c/a);		if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;		return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;	},	easeInBack: function (x, t, b, c, d, s) {		if (s == undefined) s = 1.70158;		return c*(t/=d)*t*((s+1)*t - s) + b;	},	easeOutBack: function (x, t, b, c, d, s) {		if (s == undefined) s = 1.70158;		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;	},	easeInOutBack: function (x, t, b, c, d, s) {		if (s == undefined) s = 1.70158; 		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;		return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;	},	easeInBounce: function (x, t, b, c, d) {		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;	},	easeOutBounce: function (x, t, b, c, d) {		if ((t/=d) < (1/2.75)) {			return c*(7.5625*t*t) + b;		} else if (t < (2/2.75)) {			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;		} else if (t < (2.5/2.75)) {			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;		} else {			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;		}	},	easeInOutBounce: function (x, t, b, c, d) {		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;	}});/** * -------------------------------------------------------------------- * jQuery-Plugin "pngFix" * Version: 1.1, 11.09.2007 * by Andreas Eberhard, andreas.eberhard@gmail.com *                      http://jquery.andreaseberhard.de/ * * Copyright (c) 2007 Andreas Eberhard * Licensed under GPL (http://www.opensource.org/licenses/gpl-license.php) * * Changelog: *    11.09.2007 Version 1.1 *    - removed noConflict *    - added png-support for input type=image *    - 01.08.2007 CSS background-image support extension added by Scott Jehl, scott@filamentgroup.com, http://www.filamentgroup.com *    31.05.2007 initial Version 1.0 * -------------------------------------------------------------------- * @example $(function(){$(document).pngFix();}); * @desc Fixes all PNG's in the document on document.ready * * jQuery(function(){jQuery(document).pngFix();}); * @desc Fixes all PNG's in the document on document.ready when using noConflict * * @example $(function(){$('div.examples').pngFix();}); * @desc Fixes all PNG's within div with class examples * * @example $(function(){$('div.examples').pngFix( { blankgif:'ext.gif' } );}); * @desc Fixes all PNG's within div with class examples, provides blank gif for input with png * -------------------------------------------------------------------- */(function($) {jQuery.fn.pngFix = function(settings) {	// Settings	settings = jQuery.extend({		blankgif: 'blank.gif'	}, settings);	var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);	var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);	if (jQuery.browser.msie && (ie55 || ie6)) {		//fix images with png-source		jQuery(this).find("img[@src$=.png]").each(function() {			jQuery(this).attr('width',jQuery(this).width());			jQuery(this).attr('height',jQuery(this).height());			var prevStyle = '';			var strNewHTML = '';			var imgId = (jQuery(this).attr('id')) ? 'id="' + jQuery(this).attr('id') + '" ' : '';			var imgClass = (jQuery(this).attr('class')) ? 'class="' + jQuery(this).attr('class') + '" ' : '';			var imgTitle = (jQuery(this).attr('title')) ? 'title="' + jQuery(this).attr('title') + '" ' : '';			var imgAlt = (jQuery(this).attr('alt')) ? 'alt="' + jQuery(this).attr('alt') + '" ' : '';			var imgAlign = (jQuery(this).attr('align')) ? 'float:' + jQuery(this).attr('align') + ';' : '';			var imgHand = (jQuery(this).parent().attr('href')) ? 'cursor:hand;' : '';			if (this.style.border) {				prevStyle += 'border:'+this.style.border+';';				this.style.border = '';			}			if (this.style.padding) {				prevStyle += 'padding:'+this.style.padding+';';				this.style.padding = '';			}			if (this.style.margin) {				prevStyle += 'margin:'+this.style.margin+';';				this.style.margin = '';			}			var imgStyle = (this.style.cssText);			strNewHTML += '<span '+imgId+imgClass+imgTitle+imgAlt;			strNewHTML += 'style="position:relative;white-space:pre-line;display:inline-block;background:transparent;'+imgAlign+imgHand;			strNewHTML += 'width:' + jQuery(this).width() + 'px;' + 'height:' + jQuery(this).height() + 'px;';			strNewHTML += 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + jQuery(this).attr('src') + '\', sizingMethod=\'scale\');';			strNewHTML += imgStyle+'"></span>';			if (prevStyle != ''){				strNewHTML = '<span style="position:relative;display:inline-block;'+prevStyle+imgHand+'width:' + jQuery(this).width() + 'px;' + 'height:' + jQuery(this).height() + 'px;'+'">' + strNewHTML + '</span>';			}			jQuery(this).hide();			jQuery(this).after(strNewHTML);		});		// fix css background pngs		jQuery(this).find("*").each(function(){			var bgIMG = jQuery(this).css('background-image');			if(bgIMG.indexOf(".png")!=-1){				var iebg = bgIMG.split('url("')[1].split('")')[0];				jQuery(this).css('background-image', 'none');				jQuery(this).get(0).runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + iebg + "',sizingMethod='scale')";			}		});				//fix input with png-source		jQuery(this).find("input[@src$=.png]").each(function() {			var bgIMG = jQuery(this).attr('src');			jQuery(this).get(0).runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + bgIMG + '\', sizingMethod=\'scale\');';   		jQuery(this).attr('src', settings.blankgif)		});		}		return jQuery;};})(jQuery);