--- a/web/res/metadataplayer/test/interface 1.2/source/ifx.js Wed Apr 27 15:40:01 2011 +0200
+++ b/web/res/metadataplayer/test/interface 1.2/source/ifx.js Wed Apr 27 18:54:31 2011 +0200
@@ -1,490 +1,490 @@
-/**
- * Interface Elements for jQuery
- * FX
- *
- * http://interface.eyecon.ro
- *
- * Copyright (c) 2006 Stefan Petre
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- *
- */
-
-/**
- * Validates elements that can be animated
- */
-jQuery.fxCheckTag = function(e)
-{
- if (/^tr$|^td$|^tbody$|^caption$|^thead$|^tfoot$|^col$|^colgroup$|^th$|^body$|^header$|^script$|^frame$|^frameset$|^option$|^optgroup$|^meta$/i.test(e.nodeName) )
- return false;
- else
- return true;
-};
-
-/**
- * Destroy the wrapper used for some animations
- */
-jQuery.fx.destroyWrapper = function(e, old)
-{
- var c = e.firstChild;
- var cs = c.style;
- cs.position = old.position;
- cs.marginTop = old.margins.t;
- cs.marginLeft = old.margins.l;
- cs.marginBottom = old.margins.b;
- cs.marginRight = old.margins.r;
- cs.top = old.top + 'px';
- cs.left = old.left + 'px';
- e.parentNode.insertBefore(c, e);
- e.parentNode.removeChild(e);
-};
-
-/**
- * Builds a wrapper used for some animations
- */
-jQuery.fx.buildWrapper = function(e)
-{
- if (!jQuery.fxCheckTag(e))
- return false;
- var t = jQuery(e);
- var es = e.style;
- var restoreStyle = false;
-
- if (t.css('display') == 'none') {
- oldVisibility = t.css('visibility');
- t.css('visibility', 'hidden').show();
- restoreStyle = true;
- }
- var oldStyle = {};
- oldStyle.position = t.css('position');
- oldStyle.sizes = jQuery.iUtil.getSize(e);
- oldStyle.margins = jQuery.iUtil.getMargins(e);
-
- var oldFloat = e.currentStyle ? e.currentStyle.styleFloat : t.css('float');
- oldStyle.top = parseInt(t.css('top'))||0;
- oldStyle.left = parseInt(t.css('left'))||0;
- var wid = 'w_' + parseInt(Math.random() * 10000);
- var wr = document.createElement(/^img$|^br$|^input$|^hr$|^select$|^textarea$|^object$|^iframe$|^button$|^form$|^table$|^ul$|^dl$|^ol$/i.test(e.nodeName) ? 'div' : e.nodeName);
- jQuery.attr(wr,'id', wid);
- var wrapEl = jQuery(wr).addClass('fxWrapper');
- var wrs = wr.style;
- var top = 0;
- var left = 0;
- if (oldStyle.position == 'relative' || oldStyle.position == 'absolute'){
- top = oldStyle.top;
- left = oldStyle.left;
- }
-
- wrs.top = top + 'px';
- wrs.left = left + 'px';
- wrs.position = oldStyle.position != 'relative' && oldStyle.position != 'absolute' ? 'relative' : oldStyle.position;
- wrs.height = oldStyle.sizes.hb + 'px';
- wrs.width = oldStyle.sizes.wb + 'px';
- wrs.marginTop = oldStyle.margins.t;
- wrs.marginRight = oldStyle.margins.r;
- wrs.marginBottom = oldStyle.margins.b;
- wrs.marginLeft = oldStyle.margins.l;
- wrs.overflow = 'hidden';
- if (jQuery.browser.msie) {
- wrs.styleFloat = oldFloat;
- } else {
- wrs.cssFloat = oldFloat;
- }
- if (jQuery.browser == "msie") {
- es.filter = "alpha(opacity=" + 0.999*100 + ")";
- }
- es.opacity = 0.999;
- //t.wrap(wr);
- e.parentNode.insertBefore(wr, e);
- wr.appendChild(e);
- es.marginTop = '0px';
- es.marginRight = '0px';
- es.marginBottom = '0px';
- es.marginLeft = '0px';
- es.position = 'absolute';
- es.listStyle = 'none';
- es.top = '0px';
- es.left = '0px';
- if (restoreStyle) {
- t.hide();
- es.visibility = oldVisibility;
- }
- return {oldStyle:oldStyle, wrapper:jQuery(wr)};
-};
-
-/**
- * named colors
- */
-jQuery.fx.namedColors = {
- 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],
- red:[255,0,0],
- silver:[192,192,192],
- white:[255,255,255],
- yellow:[255,255,0]
-};
-
-/**
- * parses a color to an object for reg, green and blue
- */
-jQuery.fx.parseColor = function(color, notColor)
-{
- if (jQuery.fx.namedColors[color])
- return {
- r: jQuery.fx.namedColors[color][0],
- g: jQuery.fx.namedColors[color][1],
- b: jQuery.fx.namedColors[color][2]
- };
- else if (result = /^rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)$/.exec(color))
- return {
- r: parseInt(result[1]),
- g: parseInt(result[2]),
- b: parseInt(result[3])
- };
- else if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)$/.exec(color))
- return {
- r: parseFloat(result[1])*2.55,
- g: parseFloat(result[2])*2.55,
- b: parseFloat(result[3])*2.55
- };
- else if (result = /^#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/.exec(color))
- return {
- r: parseInt("0x"+ result[1] + result[1]),
- g: parseInt("0x" + result[2] + result[2]),
- b: parseInt("0x" + result[3] + result[3])
- };
- else if (result = /^#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/.exec(color))
- return {
- r: parseInt("0x" + result[1]),
- g: parseInt("0x" + result[2]),
- b: parseInt("0x" + result[3])
- };
- else
- return notColor == true ? false : {r: 255, g: 255, b: 255};
-};
-/**
- * CSS rules that can be animated
- */
-jQuery.fx.cssProps = {
- borderBottomWidth:1,
- borderLeftWidth:1,
- borderRightWidth:1,
- borderTopWidth:1,
- bottom:1,
- fontSize:1,
- height:1,
- left:1,
- letterSpacing:1,
- lineHeight:1,
- marginBottom:1,
- marginLeft:1,
- marginRight:1,
- marginTop:1,
- maxHeight:1,
- maxWidth:1,
- minHeight:1,
- minWidth:1,
- opacity:1,
- outlineOffset:1,
- outlineWidth:1,
- paddingBottom:1,
- paddingLeft:1,
- paddingRight:1,
- paddingTop:1,
- right:1,
- textIndent:1,
- top:1,
- width:1,
- zIndex:1
-};
-/**
- * CSS color rules that can be animated
- */
-jQuery.fx.colorCssProps = {
- backgroundColor:1,
- borderBottomColor:1,
- borderLeftColor:1,
- borderRightColor:1,
- borderTopColor:1,
- color:1,
- outlineColor:1
-};
-
-jQuery.fx.cssSides = ['Top', 'Right', 'Bottom', 'Left'];
-jQuery.fx.cssSidesEnd = {
- 'borderWidth': ['border', 'Width'],
- 'borderColor': ['border', 'Color'],
- 'margin': ['margin', ''],
- 'padding': ['padding', '']
-};
-
-/**
- * Overwrite animation to use new FX function
- */
-jQuery.fn.extend({
-
- animate: function( prop, speed, easing, callback ) {
- return this.queue(function(){
- var opt = jQuery.speed(speed, easing, callback);
- var e = new jQuery.fxe( this, opt, prop );
-
- });
- },
- pause: function(speed, callback) {
- return this.queue(function(){
- var opt = jQuery.speed(speed, callback);
- var e = new jQuery.pause( this, opt );
- });
- },
- stop : function(step) {
- return this.each(function(){
- if (this.animationHandler)
- jQuery.stopAnim(this, step);
-
- });
- },
- stopAll : function(step) {
- return this.each(function(){
- if (this.animationHandler)
- jQuery.stopAnim(this, step);
- if ( this.queue && this.queue['fx'] )
- this.queue.fx = [];
- });
- }
-});
-/**
- * Improved FXC function that aniamtes collection of properties per timer. Accepts inline styles and class names to animate
- */
-jQuery.extend({
- pause: function(elem, options)
- {
- var z = this, values;
- z.step = function()
- {
- if ( jQuery.isFunction( options.complete ) )
- options.complete.apply( elem );
- };
- z.timer=setInterval(function(){z.step();},options.duration);
- elem.animationHandler = z;
- },
- easing : {
- linear: function(p, n, firstNum, delta, duration) {
- return ((-Math.cos(p*Math.PI)/2) + 0.5) * delta + firstNum;
- }
- },
- fxe: function( elem, options, prop ){
- var z = this, values;
-
- // The styles
- var y = elem.style;
- var oldOverflow = jQuery.css(elem, "overflow");
- var oldDisplay= jQuery.css(elem, "display");
- var props = {};
- z.startTime = (new Date()).getTime();
- options.easing = options.easing && jQuery.easing[options.easing] ? options.easing : 'linear';
-
- z.getValues = function(tp, vp)
- {
- if (jQuery.fx.cssProps[tp]) {
- if (vp == 'show' || vp == 'hide' || vp == 'toggle') {
- if ( !elem.orig ) elem.orig = {};
- var r = parseFloat( jQuery.curCSS(elem, tp) );
- elem.orig[tp] = r && r > -10000 ? r : (parseFloat( jQuery.css(elem,tp) )||0);
- vp = vp == 'toggle' ? ( oldDisplay == 'none' ? 'show' : 'hide') : vp;
- options[vp] = true;
- props[tp] = vp == 'show' ? [0, elem.orig[tp]] : [elem.orig[tp], 0];
- if (tp != 'opacity')
- y[tp] = props[tp][0] + (tp != 'zIndex' && tp != 'fontWeight' ? 'px':'');
- else
- jQuery.attr(y, "opacity", props[tp][0]);
- } else {
- props[tp] = [parseFloat( jQuery.curCSS(elem, tp) ), parseFloat(vp)||0];
- }
- } else if (jQuery.fx.colorCssProps[tp])
- props[tp] = [jQuery.fx.parseColor(jQuery.curCSS(elem, tp)), jQuery.fx.parseColor(vp)];
- else if(/^margin$|padding$|border$|borderColor$|borderWidth$/i.test(tp)) {
- var m = vp.replace(/\s+/g, ' ').replace(/rgb\s*\(\s*/g,'rgb(').replace(/\s*,\s*/g,',').replace(/\s*\)/g,')').match(/([^\s]+)/g);
- switch(tp){
- case 'margin':
- case 'padding':
- case 'borderWidth':
- case 'borderColor':
- m[3] = m[3]||m[1]||m[0];
- m[2] = m[2]||m[0];
- m[1] = m[1]||m[0];
- for(var i = 0; i < jQuery.fx.cssSides.length; i++) {
- var nmp = jQuery.fx.cssSidesEnd[tp][0] + jQuery.fx.cssSides[i] + jQuery.fx.cssSidesEnd[tp][1];
- props[nmp] = tp == 'borderColor' ?
- [jQuery.fx.parseColor(jQuery.curCSS(elem, nmp)), jQuery.fx.parseColor(m[i])]
- : [parseFloat( jQuery.curCSS(elem, nmp) ), parseFloat(m[i])];
- }
- break;
- case 'border':
- for(var i = 0; i< m.length; i++) {
- var floatVal = parseFloat(m[i]);
- var sideEnd = !isNaN(floatVal) ? 'Width' : (!/transparent|none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset/i.test(m[i]) ? 'Color' : false);
- if (sideEnd) {
- for(var j = 0; j < jQuery.fx.cssSides.length; j++) {
- nmp = 'border' + jQuery.fx.cssSides[j] + sideEnd;
- props[nmp] = sideEnd == 'Color' ?
- [jQuery.fx.parseColor(jQuery.curCSS(elem, nmp)), jQuery.fx.parseColor(m[i])]
- : [parseFloat( jQuery.curCSS(elem, nmp) ), floatVal];
- }
- } else {
- y['borderStyle'] = m[i];
- }
- }
- break;
- }
- } else {
- y[tp] = vp;
- }
- return false;
- };
-
- for(p in prop) {
- if (p == 'style') {
- var newStyles = jQuery.parseStyle(prop[p]);
- for (np in newStyles) {
- this.getValues(np, newStyles[np]);
- }
- } else if (p == 'className') {
- if (document.styleSheets)
- for (var i=0; i<document.styleSheets.length; i++){
- var cssRules = document.styleSheets[i].cssRules||document.styleSheets[i].rules||null;
- if (cssRules) {
- for (var j=0; j<cssRules.length; j++) {
- if(cssRules[j].selectorText == '.' + prop[p]) {
- var rule = new RegExp('\.' + prop[p] + ' {');
- var styles = cssRules[j].style.cssText;
- var newStyles = jQuery.parseStyle(styles.replace(rule, '').replace(/}/g, ''));
- for (np in newStyles) {
- this.getValues(np, newStyles[np]);
- }
- }
- }
- }
- }
- } else {
- this.getValues(p, prop[p]);
- }
- }
- y.display = oldDisplay == 'none' ? 'block' : oldDisplay;
- y.overflow = 'hidden';
-
- /*if (options.show)
- y.display = "";*/
-
- z.step = function(){
- var t = (new Date()).getTime();
- if (t > options.duration + z.startTime) {
- clearInterval(z.timer);
- z.timer = null;
- for (p in props) {
- if ( p == "opacity" )
- jQuery.attr(y, "opacity", props[p][1]);
- else if (typeof props[p][1] == 'object')
- y[p] = 'rgb(' + props[p][1].r +',' + props[p][1].g +',' + props[p][1].b +')';
- else
- y[p] = props[p][1] + (p != 'zIndex' && p != 'fontWeight' ? 'px':'');
- }
- if ( options.hide || options.show )
- for ( var p in elem.orig )
- if (p == "opacity")
- jQuery.attr(y, p, elem.orig[p]);
- else
- y[p] = "";
- y.display = options.hide ? 'none' : (oldDisplay !='none' ? oldDisplay : 'block');
- y.overflow = oldOverflow;
- elem.animationHandler = null;
- if ( jQuery.isFunction( options.complete ) )
- options.complete.apply( elem );
- } else {
- var n = t - this.startTime;
- var pr = n / options.duration;
- for (p in props) {
- if (typeof props[p][1] == 'object') {
- y[p] = 'rgb('
- + parseInt(jQuery.easing[options.easing](pr, n, props[p][0].r, (props[p][1].r-props[p][0].r), options.duration))
- + ','
- + parseInt(jQuery.easing[options.easing](pr, n, props[p][0].g, (props[p][1].g-props[p][0].g), options.duration))
- + ','
- + parseInt(jQuery.easing[options.easing](pr, n, props[p][0].b, (props[p][1].b-props[p][0].b), options.duration))
- +')';
- } else {
- var pValue = jQuery.easing[options.easing](pr, n, props[p][0], (props[p][1]-props[p][0]), options.duration);
- if ( p == "opacity" )
- jQuery.attr(y, "opacity", pValue);
- else
- y[p] = pValue + (p != 'zIndex' && p != 'fontWeight' ? 'px':'');
- }
- }
-
- }
- };
- z.timer=setInterval(function(){z.step();},13);
- elem.animationHandler = z;
- },
- stopAnim: function(elem, step)
- {
- if (step)
- elem.animationHandler.startTime -= 100000000;
- else {
- window.clearInterval(elem.animationHandler.timer);
- elem.animationHandler = null;
- jQuery.dequeue(elem, "fx");
- }
- }
-}
-);
-
-jQuery.parseStyle = function(styles) {
- var newStyles = {};
- if (typeof styles == 'string') {
- styles = styles.toLowerCase().split(';');
- for(var i=0; i< styles.length; i++){
- rule = styles[i].split(':');
- if (rule.length == 2) {
- newStyles[jQuery.trim(rule[0].replace(/\-(\w)/g,function(m,c){return c.toUpperCase();}))] = jQuery.trim(rule[1]);
- }
- }
- }
- return newStyles;
+/**
+ * Interface Elements for jQuery
+ * FX
+ *
+ * http://interface.eyecon.ro
+ *
+ * Copyright (c) 2006 Stefan Petre
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ *
+ */
+
+/**
+ * Validates elements that can be animated
+ */
+jQuery.fxCheckTag = function(e)
+{
+ if (/^tr$|^td$|^tbody$|^caption$|^thead$|^tfoot$|^col$|^colgroup$|^th$|^body$|^header$|^script$|^frame$|^frameset$|^option$|^optgroup$|^meta$/i.test(e.nodeName) )
+ return false;
+ else
+ return true;
+};
+
+/**
+ * Destroy the wrapper used for some animations
+ */
+jQuery.fx.destroyWrapper = function(e, old)
+{
+ var c = e.firstChild;
+ var cs = c.style;
+ cs.position = old.position;
+ cs.marginTop = old.margins.t;
+ cs.marginLeft = old.margins.l;
+ cs.marginBottom = old.margins.b;
+ cs.marginRight = old.margins.r;
+ cs.top = old.top + 'px';
+ cs.left = old.left + 'px';
+ e.parentNode.insertBefore(c, e);
+ e.parentNode.removeChild(e);
+};
+
+/**
+ * Builds a wrapper used for some animations
+ */
+jQuery.fx.buildWrapper = function(e)
+{
+ if (!jQuery.fxCheckTag(e))
+ return false;
+ var t = jQuery(e);
+ var es = e.style;
+ var restoreStyle = false;
+
+ if (t.css('display') == 'none') {
+ oldVisibility = t.css('visibility');
+ t.css('visibility', 'hidden').show();
+ restoreStyle = true;
+ }
+ var oldStyle = {};
+ oldStyle.position = t.css('position');
+ oldStyle.sizes = jQuery.iUtil.getSize(e);
+ oldStyle.margins = jQuery.iUtil.getMargins(e);
+
+ var oldFloat = e.currentStyle ? e.currentStyle.styleFloat : t.css('float');
+ oldStyle.top = parseInt(t.css('top'))||0;
+ oldStyle.left = parseInt(t.css('left'))||0;
+ var wid = 'w_' + parseInt(Math.random() * 10000);
+ var wr = document.createElement(/^img$|^br$|^input$|^hr$|^select$|^textarea$|^object$|^iframe$|^button$|^form$|^table$|^ul$|^dl$|^ol$/i.test(e.nodeName) ? 'div' : e.nodeName);
+ jQuery.attr(wr,'id', wid);
+ var wrapEl = jQuery(wr).addClass('fxWrapper');
+ var wrs = wr.style;
+ var top = 0;
+ var left = 0;
+ if (oldStyle.position == 'relative' || oldStyle.position == 'absolute'){
+ top = oldStyle.top;
+ left = oldStyle.left;
+ }
+
+ wrs.top = top + 'px';
+ wrs.left = left + 'px';
+ wrs.position = oldStyle.position != 'relative' && oldStyle.position != 'absolute' ? 'relative' : oldStyle.position;
+ wrs.height = oldStyle.sizes.hb + 'px';
+ wrs.width = oldStyle.sizes.wb + 'px';
+ wrs.marginTop = oldStyle.margins.t;
+ wrs.marginRight = oldStyle.margins.r;
+ wrs.marginBottom = oldStyle.margins.b;
+ wrs.marginLeft = oldStyle.margins.l;
+ wrs.overflow = 'hidden';
+ if (jQuery.browser.msie) {
+ wrs.styleFloat = oldFloat;
+ } else {
+ wrs.cssFloat = oldFloat;
+ }
+ if (jQuery.browser == "msie") {
+ es.filter = "alpha(opacity=" + 0.999*100 + ")";
+ }
+ es.opacity = 0.999;
+ //t.wrap(wr);
+ e.parentNode.insertBefore(wr, e);
+ wr.appendChild(e);
+ es.marginTop = '0px';
+ es.marginRight = '0px';
+ es.marginBottom = '0px';
+ es.marginLeft = '0px';
+ es.position = 'absolute';
+ es.listStyle = 'none';
+ es.top = '0px';
+ es.left = '0px';
+ if (restoreStyle) {
+ t.hide();
+ es.visibility = oldVisibility;
+ }
+ return {oldStyle:oldStyle, wrapper:jQuery(wr)};
+};
+
+/**
+ * named colors
+ */
+jQuery.fx.namedColors = {
+ 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],
+ red:[255,0,0],
+ silver:[192,192,192],
+ white:[255,255,255],
+ yellow:[255,255,0]
+};
+
+/**
+ * parses a color to an object for reg, green and blue
+ */
+jQuery.fx.parseColor = function(color, notColor)
+{
+ if (jQuery.fx.namedColors[color])
+ return {
+ r: jQuery.fx.namedColors[color][0],
+ g: jQuery.fx.namedColors[color][1],
+ b: jQuery.fx.namedColors[color][2]
+ };
+ else if (result = /^rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)$/.exec(color))
+ return {
+ r: parseInt(result[1]),
+ g: parseInt(result[2]),
+ b: parseInt(result[3])
+ };
+ else if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)$/.exec(color))
+ return {
+ r: parseFloat(result[1])*2.55,
+ g: parseFloat(result[2])*2.55,
+ b: parseFloat(result[3])*2.55
+ };
+ else if (result = /^#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/.exec(color))
+ return {
+ r: parseInt("0x"+ result[1] + result[1]),
+ g: parseInt("0x" + result[2] + result[2]),
+ b: parseInt("0x" + result[3] + result[3])
+ };
+ else if (result = /^#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/.exec(color))
+ return {
+ r: parseInt("0x" + result[1]),
+ g: parseInt("0x" + result[2]),
+ b: parseInt("0x" + result[3])
+ };
+ else
+ return notColor == true ? false : {r: 255, g: 255, b: 255};
+};
+/**
+ * CSS rules that can be animated
+ */
+jQuery.fx.cssProps = {
+ borderBottomWidth:1,
+ borderLeftWidth:1,
+ borderRightWidth:1,
+ borderTopWidth:1,
+ bottom:1,
+ fontSize:1,
+ height:1,
+ left:1,
+ letterSpacing:1,
+ lineHeight:1,
+ marginBottom:1,
+ marginLeft:1,
+ marginRight:1,
+ marginTop:1,
+ maxHeight:1,
+ maxWidth:1,
+ minHeight:1,
+ minWidth:1,
+ opacity:1,
+ outlineOffset:1,
+ outlineWidth:1,
+ paddingBottom:1,
+ paddingLeft:1,
+ paddingRight:1,
+ paddingTop:1,
+ right:1,
+ textIndent:1,
+ top:1,
+ width:1,
+ zIndex:1
+};
+/**
+ * CSS color rules that can be animated
+ */
+jQuery.fx.colorCssProps = {
+ backgroundColor:1,
+ borderBottomColor:1,
+ borderLeftColor:1,
+ borderRightColor:1,
+ borderTopColor:1,
+ color:1,
+ outlineColor:1
+};
+
+jQuery.fx.cssSides = ['Top', 'Right', 'Bottom', 'Left'];
+jQuery.fx.cssSidesEnd = {
+ 'borderWidth': ['border', 'Width'],
+ 'borderColor': ['border', 'Color'],
+ 'margin': ['margin', ''],
+ 'padding': ['padding', '']
+};
+
+/**
+ * Overwrite animation to use new FX function
+ */
+jQuery.fn.extend({
+
+ animate: function( prop, speed, easing, callback ) {
+ return this.queue(function(){
+ var opt = jQuery.speed(speed, easing, callback);
+ var e = new jQuery.fxe( this, opt, prop );
+
+ });
+ },
+ pause: function(speed, callback) {
+ return this.queue(function(){
+ var opt = jQuery.speed(speed, callback);
+ var e = new jQuery.pause( this, opt );
+ });
+ },
+ stop : function(step) {
+ return this.each(function(){
+ if (this.animationHandler)
+ jQuery.stopAnim(this, step);
+
+ });
+ },
+ stopAll : function(step) {
+ return this.each(function(){
+ if (this.animationHandler)
+ jQuery.stopAnim(this, step);
+ if ( this.queue && this.queue['fx'] )
+ this.queue.fx = [];
+ });
+ }
+});
+/**
+ * Improved FXC function that aniamtes collection of properties per timer. Accepts inline styles and class names to animate
+ */
+jQuery.extend({
+ pause: function(elem, options)
+ {
+ var z = this, values;
+ z.step = function()
+ {
+ if ( jQuery.isFunction( options.complete ) )
+ options.complete.apply( elem );
+ };
+ z.timer=setInterval(function(){z.step();},options.duration);
+ elem.animationHandler = z;
+ },
+ easing : {
+ linear: function(p, n, firstNum, delta, duration) {
+ return ((-Math.cos(p*Math.PI)/2) + 0.5) * delta + firstNum;
+ }
+ },
+ fxe: function( elem, options, prop ){
+ var z = this, values;
+
+ // The styles
+ var y = elem.style;
+ var oldOverflow = jQuery.css(elem, "overflow");
+ var oldDisplay= jQuery.css(elem, "display");
+ var props = {};
+ z.startTime = (new Date()).getTime();
+ options.easing = options.easing && jQuery.easing[options.easing] ? options.easing : 'linear';
+
+ z.getValues = function(tp, vp)
+ {
+ if (jQuery.fx.cssProps[tp]) {
+ if (vp == 'show' || vp == 'hide' || vp == 'toggle') {
+ if ( !elem.orig ) elem.orig = {};
+ var r = parseFloat( jQuery.curCSS(elem, tp) );
+ elem.orig[tp] = r && r > -10000 ? r : (parseFloat( jQuery.css(elem,tp) )||0);
+ vp = vp == 'toggle' ? ( oldDisplay == 'none' ? 'show' : 'hide') : vp;
+ options[vp] = true;
+ props[tp] = vp == 'show' ? [0, elem.orig[tp]] : [elem.orig[tp], 0];
+ if (tp != 'opacity')
+ y[tp] = props[tp][0] + (tp != 'zIndex' && tp != 'fontWeight' ? 'px':'');
+ else
+ jQuery.attr(y, "opacity", props[tp][0]);
+ } else {
+ props[tp] = [parseFloat( jQuery.curCSS(elem, tp) ), parseFloat(vp)||0];
+ }
+ } else if (jQuery.fx.colorCssProps[tp])
+ props[tp] = [jQuery.fx.parseColor(jQuery.curCSS(elem, tp)), jQuery.fx.parseColor(vp)];
+ else if(/^margin$|padding$|border$|borderColor$|borderWidth$/i.test(tp)) {
+ var m = vp.replace(/\s+/g, ' ').replace(/rgb\s*\(\s*/g,'rgb(').replace(/\s*,\s*/g,',').replace(/\s*\)/g,')').match(/([^\s]+)/g);
+ switch(tp){
+ case 'margin':
+ case 'padding':
+ case 'borderWidth':
+ case 'borderColor':
+ m[3] = m[3]||m[1]||m[0];
+ m[2] = m[2]||m[0];
+ m[1] = m[1]||m[0];
+ for(var i = 0; i < jQuery.fx.cssSides.length; i++) {
+ var nmp = jQuery.fx.cssSidesEnd[tp][0] + jQuery.fx.cssSides[i] + jQuery.fx.cssSidesEnd[tp][1];
+ props[nmp] = tp == 'borderColor' ?
+ [jQuery.fx.parseColor(jQuery.curCSS(elem, nmp)), jQuery.fx.parseColor(m[i])]
+ : [parseFloat( jQuery.curCSS(elem, nmp) ), parseFloat(m[i])];
+ }
+ break;
+ case 'border':
+ for(var i = 0; i< m.length; i++) {
+ var floatVal = parseFloat(m[i]);
+ var sideEnd = !isNaN(floatVal) ? 'Width' : (!/transparent|none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset/i.test(m[i]) ? 'Color' : false);
+ if (sideEnd) {
+ for(var j = 0; j < jQuery.fx.cssSides.length; j++) {
+ nmp = 'border' + jQuery.fx.cssSides[j] + sideEnd;
+ props[nmp] = sideEnd == 'Color' ?
+ [jQuery.fx.parseColor(jQuery.curCSS(elem, nmp)), jQuery.fx.parseColor(m[i])]
+ : [parseFloat( jQuery.curCSS(elem, nmp) ), floatVal];
+ }
+ } else {
+ y['borderStyle'] = m[i];
+ }
+ }
+ break;
+ }
+ } else {
+ y[tp] = vp;
+ }
+ return false;
+ };
+
+ for(p in prop) {
+ if (p == 'style') {
+ var newStyles = jQuery.parseStyle(prop[p]);
+ for (np in newStyles) {
+ this.getValues(np, newStyles[np]);
+ }
+ } else if (p == 'className') {
+ if (document.styleSheets)
+ for (var i=0; i<document.styleSheets.length; i++){
+ var cssRules = document.styleSheets[i].cssRules||document.styleSheets[i].rules||null;
+ if (cssRules) {
+ for (var j=0; j<cssRules.length; j++) {
+ if(cssRules[j].selectorText == '.' + prop[p]) {
+ var rule = new RegExp('\.' + prop[p] + ' {');
+ var styles = cssRules[j].style.cssText;
+ var newStyles = jQuery.parseStyle(styles.replace(rule, '').replace(/}/g, ''));
+ for (np in newStyles) {
+ this.getValues(np, newStyles[np]);
+ }
+ }
+ }
+ }
+ }
+ } else {
+ this.getValues(p, prop[p]);
+ }
+ }
+ y.display = oldDisplay == 'none' ? 'block' : oldDisplay;
+ y.overflow = 'hidden';
+
+ /*if (options.show)
+ y.display = "";*/
+
+ z.step = function(){
+ var t = (new Date()).getTime();
+ if (t > options.duration + z.startTime) {
+ clearInterval(z.timer);
+ z.timer = null;
+ for (p in props) {
+ if ( p == "opacity" )
+ jQuery.attr(y, "opacity", props[p][1]);
+ else if (typeof props[p][1] == 'object')
+ y[p] = 'rgb(' + props[p][1].r +',' + props[p][1].g +',' + props[p][1].b +')';
+ else
+ y[p] = props[p][1] + (p != 'zIndex' && p != 'fontWeight' ? 'px':'');
+ }
+ if ( options.hide || options.show )
+ for ( var p in elem.orig )
+ if (p == "opacity")
+ jQuery.attr(y, p, elem.orig[p]);
+ else
+ y[p] = "";
+ y.display = options.hide ? 'none' : (oldDisplay !='none' ? oldDisplay : 'block');
+ y.overflow = oldOverflow;
+ elem.animationHandler = null;
+ if ( jQuery.isFunction( options.complete ) )
+ options.complete.apply( elem );
+ } else {
+ var n = t - this.startTime;
+ var pr = n / options.duration;
+ for (p in props) {
+ if (typeof props[p][1] == 'object') {
+ y[p] = 'rgb('
+ + parseInt(jQuery.easing[options.easing](pr, n, props[p][0].r, (props[p][1].r-props[p][0].r), options.duration))
+ + ','
+ + parseInt(jQuery.easing[options.easing](pr, n, props[p][0].g, (props[p][1].g-props[p][0].g), options.duration))
+ + ','
+ + parseInt(jQuery.easing[options.easing](pr, n, props[p][0].b, (props[p][1].b-props[p][0].b), options.duration))
+ +')';
+ } else {
+ var pValue = jQuery.easing[options.easing](pr, n, props[p][0], (props[p][1]-props[p][0]), options.duration);
+ if ( p == "opacity" )
+ jQuery.attr(y, "opacity", pValue);
+ else
+ y[p] = pValue + (p != 'zIndex' && p != 'fontWeight' ? 'px':'');
+ }
+ }
+
+ }
+ };
+ z.timer=setInterval(function(){z.step();},13);
+ elem.animationHandler = z;
+ },
+ stopAnim: function(elem, step)
+ {
+ if (step)
+ elem.animationHandler.startTime -= 100000000;
+ else {
+ window.clearInterval(elem.animationHandler.timer);
+ elem.animationHandler = null;
+ jQuery.dequeue(elem, "fx");
+ }
+ }
+}
+);
+
+jQuery.parseStyle = function(styles) {
+ var newStyles = {};
+ if (typeof styles == 'string') {
+ styles = styles.toLowerCase().split(';');
+ for(var i=0; i< styles.length; i++){
+ rule = styles[i].split(':');
+ if (rule.length == 2) {
+ newStyles[jQuery.trim(rule[0].replace(/\-(\w)/g,function(m,c){return c.toUpperCase();}))] = jQuery.trim(rule[1]);
+ }
+ }
+ }
+ return newStyles;
};
\ No newline at end of file