Team:Lyon-INSA/notebook

From 2012.igem.org

(Difference between revisions)
Line 3: Line 3:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="https://www.facebook.com/2008/fbml" >     
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="https://www.facebook.com/2008/fbml" >     
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
   <script type="text/javascript"  href="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
+
   <script type="text/javascript"  href="http://ricostacruz.com/jquery.transit/jquery.transit.min.js"></script>
-
<script>
+
-
 
+
-
/*!
+
-
* jQuery Transit - CSS3 transitions and transformations
+
-
* Copyright(c) 2011 Rico Sta. Cruz <rico@ricostacruz.com>
+
-
* MIT Licensed.
+
-
*
+
-
* http://ricostacruz.com/jquery.transit
+
-
* http://github.com/rstacruz/jquery.transit
+
-
*/
+
-
 
+
-
(function($) {
+
-
  "use strict";
+
-
 
+
-
  $.transit = {
+
-
    version: "0.1.3",
+
-
 
+
-
    // Map of $.css() keys to values for 'transitionProperty'.
+
-
    // See https://developer.mozilla.org/en/CSS/CSS_transitions#Properties_that_can_be_animated
+
-
    propertyMap: {
+
-
      marginLeft    : 'margin',
+
-
      marginRight  : 'margin',
+
-
      marginBottom  : 'margin',
+
-
      marginTop    : 'margin',
+
-
      paddingLeft  : 'padding',
+
-
      paddingRight  : 'padding',
+
-
      paddingBottom : 'padding',
+
-
      paddingTop    : 'padding'
+
-
    },
+
-
 
+
-
    // Will simply transition "instantly" if false
+
-
    enabled: true,
+
-
 
+
-
    // Set this to false if you don't want to use the transition end property.
+
-
    useTransitionEnd: false
+
-
  };
+
-
 
+
-
  var div = document.createElement('div');
+
-
  var support = {};
+
-
 
+
-
  // Helper function to get the proper vendor property name.
+
-
  // (`transition` => `WebkitTransition`)
+
-
  function getVendorPropertyName(prop) {
+
-
    var prefixes = ['Moz', 'Webkit', 'O', 'ms'];
+
-
    var prop_ = prop.charAt(0).toUpperCase() + prop.substr(1);
+
-
 
+
-
    if (prop in div.style) { return prop; }
+
-
 
+
-
    for (var i=0; i<prefixes.length; ++i) {
+
-
      var vendorProp = prefixes[i] + prop_;
+
-
      if (vendorProp in div.style) { return vendorProp; }
+
-
    }
+
-
  }
+
-
 
+
-
  // Helper function to check if transform3D is supported.
+
-
  // Should return true for Webkits and Firefox 10+.
+
-
  function checkTransform3dSupport() {
+
-
    div.style[support.transform] = '';
+
-
    div.style[support.transform] = 'rotateY(90deg)';
+
-
    return div.style[support.transform] !== '';
+
-
  }
+
-
 
+
-
  var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
+
-
 
+
-
  // Check for the browser's transitions support.
+
-
  // You can access this in jQuery's `$.support.transition`.
+
-
  // As per [jQuery's cssHooks documentation](http://api.jquery.com/jQuery.cssHooks/),
+
-
  // we set $.support.transition to a string of the actual property name used.
+
-
  support.transition      = getVendorPropertyName('transition');
+
-
  support.transitionDelay = getVendorPropertyName('transitionDelay');
+
-
  support.transform      = getVendorPropertyName('transform');
+
-
  support.transformOrigin = getVendorPropertyName('transformOrigin');
+
-
  support.transform3d    = checkTransform3dSupport();
+
-
 
+
-
  $.extend($.support, support);
+
-
 
+
-
  var eventNames = {
+
-
    'MozTransition':    'transitionend',
+
-
    'OTransition':      'oTransitionEnd',
+
-
    'WebkitTransition': 'webkitTransitionEnd',
+
-
    'msTransition':    'MSTransitionEnd'
+
-
  };
+
-
 
+
-
  // Detect the 'transitionend' event needed.
+
-
  var transitionEnd = support.transitionEnd = eventNames[support.transition] || null;
+
-
 
+
-
  // Avoid memory leak in IE.
+
-
  div = null;
+
-
 
+
-
  // ## $.cssEase
+
-
  // List of easing aliases that you can use with `$.fn.transition`.
+
-
  $.cssEase = {
+
-
    '_default': 'ease',
+
-
    'in':      'ease-in',
+
-
    'out':      'ease-out',
+
-
    'in-out':  'ease-in-out',
+
-
    'snap':    'cubic-bezier(0,1,.5,1)'
+
-
  };
+
-
 
+
-
  // ## 'transform' CSS hook
+
-
  // Allows you to use the `transform` property in CSS.
+
-
  //
+
-
  //    $("#hello").css({ transform: "rotate(90deg)" });
+
-
  //
+
-
  //    $("#hello").css('transform');
+
-
  //    //=> { rotate: '90deg' }
+
-
  //
+
-
  $.cssHooks.transform = {
+
-
    // The getter returns a `Transform` object.
+
-
    get: function(elem) {
+
-
      return $(elem).data('transform');
+
-
    },
+
-
 
+
-
    // The setter accepts a `Transform` object or a string.
+
-
    set: function(elem, v) {
+
-
      var value = v;
+
-
 
+
-
      if (!(value instanceof Transform)) {
+
-
        value = new Transform(value);
+
-
      }
+
-
 
+
-
      // We've seen the 3D version of Scale() not work in Chrome when the
+
-
      // element being scaled extends outside of the viewport.  Thus, we're
+
-
      // forcing Chrome to not use the 3d transforms as well.  Not sure if
+
-
      // translate is affectede, but not risking it.  Detection code from
+
-
      // http://davidwalsh.name/detecting-google-chrome-javascript
+
-
      if (support.transform === 'WebkitTransform' ) {
+
-
        if (!isChrome)   
+
-
        elem.style[support.transform] = value.toString(true);
+
-
      } else {
+
-
        elem.style[support.transform] = value.toString();
+
-
      }
+
-
 
+
-
      $(elem).data('transform', value);
+
-
    }
+
-
  };
+
-
 
+
-
  // ## 'transformOrigin' CSS hook
+
-
  // Allows the use for `transformOrigin` to define where scaling and rotation
+
-
  // is pivoted.
+
-
  //
+
-
  //    $("#hello").css({ transformOrigin: '0 0' });
+
-
  //
+
-
  $.cssHooks.transformOrigin = {
+
-
    get: function(elem) {
+
-
      return elem.style[support.transformOrigin];
+
-
    },
+
-
    set: function(elem, value) {
+
-
      elem.style[support.transformOrigin] = value;
+
-
    }
+
-
  };
+
-
 
+
-
  // ## 'transition' CSS hook
+
-
  // Allows you to use the `transition` property in CSS.
+
-
  //
+
-
  //    $("#hello").css({ transition: 'all 0 ease 0' });
+
-
  //
+
-
  $.cssHooks.transition = {
+
-
    get: function(elem) {
+
-
      return elem.style[support.transition];
+
-
    },
+
-
    set: function(elem, value) {
+
-
      elem.style[support.transition] = value;
+
-
    }
+
-
  };
+
-
 
+
-
  // ## Other CSS hooks
+
-
  // Allows you to rotate, scale and translate.
+
-
  registerCssHook('scale');
+
-
  registerCssHook('translate');
+
-
  registerCssHook('rotate');
+
-
  registerCssHook('rotateX');
+
-
  registerCssHook('rotateY');
+
-
  registerCssHook('rotate3d');
+
-
  registerCssHook('perspective');
+
-
  registerCssHook('skewX');
+
-
  registerCssHook('skewY');
+
-
  registerCssHook('x', true);
+
-
  registerCssHook('y', true);
+
-
 
+
-
  // ## Transform class
+
-
  // This is the main class of a transformation property that powers
+
-
  // `$.fn.css({ transform: '...' })`.
+
-
  //
+
-
  // This is, in essence, a dictionary object with key/values as `-transform`
+
-
  // properties.
+
-
  //
+
-
  //    var t = new Transform("rotate(90) scale(4)");
+
-
  //
+
-
  //    t.rotate            //=> "90deg"
+
-
  //    t.scale              //=> "4,4"
+
-
  //
+
-
  // Setters are accounted for.
+
-
  //
+
-
  //    t.set('rotate', 4)
+
-
  //    t.rotate            //=> "4deg"
+
-
  //
+
-
  // Convert it to a CSS string using the `toString()` and `toString(true)` (for WebKit)
+
-
  // functions.
+
-
  //
+
-
  //    t.toString()        //=> "rotate(90deg) scale(4,4)"
+
-
  //    t.toString(true)    //=> "rotate(90deg) scale3d(4,4,0)" (WebKit version)
+
-
  //
+
-
  function Transform(str) {
+
-
    if (typeof str === 'string') { this.parse(str); }
+
-
    return this;
+
-
  }
+
-
 
+
-
  Transform.prototype = {
+
-
    // ### setFromString()
+
-
    // Sets a property from a string.
+
-
    //
+
-
    //    t.setFromString('scale', '2,4');
+
-
    //    // Same as set('scale', '2', '4');
+
-
    //
+
-
    setFromString: function(prop, val) {
+
-
      var args =
+
-
        (typeof val === 'string')  ? val.split(',') :
+
-
        (val.constructor === Array) ? val :
+
-
        [ val ];
+
-
 
+
-
      args.unshift(prop);
+
-
 
+
-
      Transform.prototype.set.apply(this, args);
+
-
    },
+
-
 
+
-
    // ### set()
+
-
    // Sets a property.
+
-
    //
+
-
    //    t.set('scale', 2, 4);
+
-
    //
+
-
    set: function(prop) {
+
-
      var args = Array.prototype.slice.apply(arguments, [1]);
+
-
      if (this.setter[prop]) {
+
-
        this.setter[prop].apply(this, args);
+
-
      } else {
+
-
        this[prop] = args.join(',');
+
-
      }
+
-
    },
+
-
 
+
-
    get: function(prop) {
+
-
      if (this.getter[prop]) {
+
-
        return this.getter[prop].apply(this);
+
-
      } else {
+
-
        return this[prop] || 0;
+
-
      }
+
-
    },
+
-
 
+
-
    setter: {
+
-
      // ### rotate
+
-
      //
+
-
      //    .css({ rotate: 30 })
+
-
      //    .css({ rotate: "30" })
+
-
      //    .css({ rotate: "30deg" })
+
-
      //    .css({ rotate: "30deg" })
+
-
      //
+
-
      rotate: function(theta) {
+
-
        this.rotate = unit(theta, 'deg');
+
-
      },
+
-
 
+
-
      rotateX: function(theta) {
+
-
        this.rotateX = unit(theta, 'deg');
+
-
      },
+
-
 
+
-
      rotateY: function(theta) {
+
-
        this.rotateY = unit(theta, 'deg');
+
-
      },
+
-
 
+
-
      // ### scale
+
-
      //
+
-
      //    .css({ scale: 9 })      //=> "scale(9,9)"
+
-
      //    .css({ scale: '3,2' })  //=> "scale(3,2)"
+
-
      //
+
-
      scale: function(x, y) {
+
-
        if (y === undefined) { y = x; }
+
-
        this.scale = x + "," + y;
+
-
      },
+
-
 
+
-
      // ### skewX + skewY
+
-
      skewX: function(x) {
+
-
        this.skewX = unit(x, 'deg');
+
-
      },
+
-
 
+
-
      skewY: function(y) {
+
-
        this.skewY = unit(y, 'deg');
+
-
      },
+
-
 
+
-
      // ### perspectvie
+
-
      perspective: function(dist) {
+
-
        this.perspective = unit(dist, 'px');
+
-
      },
+
-
 
+
-
      // ### x / y
+
-
      // Translations. Notice how this keeps the other value.
+
-
      //
+
-
      //    .css({ x: 4 })      //=> "translate(4px, 0)"
+
-
      //    .css({ y: 10 })      //=> "translate(4px, 10px)"
+
-
      //
+
-
      x: function(x) {
+
-
        this.set('translate', x, null);
+
-
      },
+
-
 
+
-
      y: function(y) {
+
-
        this.set('translate', null, y);
+
-
      },
+
-
 
+
-
      // ### translate
+
-
      // Notice how this keeps the other value.
+
-
      //
+
-
      //    .css({ translate: '2, 5' })    //=> "translate(2px, 5px)"
+
-
      //
+
-
      translate: function(x, y) {
+
-
        if (this._translateX === undefined) { this._translateX = 0; }
+
-
        if (this._translateY === undefined) { this._translateY = 0; }
+
-
 
+
-
        if (x !== null) { this._translateX = unit(x, 'px'); }
+
-
        if (y !== null) { this._translateY = unit(y, 'px'); }
+
-
 
+
-
        this.translate = this._translateX + "," + this._translateY;
+
-
      }
+
-
    },
+
-
 
+
-
    getter: {
+
-
      x: function() {
+
-
        return this._translateX || 0;
+
-
      },
+
-
 
+
-
      y: function() {
+
-
        return this._translateY || 0;
+
-
      },
+
-
 
+
-
      scale: function() {
+
-
        var s = (this.scale || "1,1").split(',');
+
-
        if (s[0]) { s[0] = parseFloat(s[0]); }
+
-
        if (s[1]) { s[1] = parseFloat(s[1]); }
+
-
 
+
-
        // "2.5,2.5" => 2.5
+
-
        // "2.5,1" => [2.5,1]
+
-
        return (s[0] === s[1]) ? s[0] : s;
+
-
      },
+
-
 
+
-
      rotate3d: function() {
+
-
        var s = (this.rotate3d || "0,0,0,0deg").split(',');
+
-
        for (var i=0; i<=3; ++i) {
+
-
          if (s[i]) { s[i] = parseFloat(s[i]); }
+
-
        }
+
-
        if (s[3]) { s[3] = unit(s[3], 'deg'); }
+
-
 
+
-
        return s;
+
-
      }
+
-
    },
+
-
 
+
-
    // ### parse()
+
-
    // Parses from a string. Called on constructor.
+
-
    parse: function(str) {
+
-
      var self = this;
+
-
      str.replace(/([a-zA-Z0-9]+)\((.*?)\)/g, function(x, prop, val) {
+
-
        self.setFromString(prop, val);
+
-
      });
+
-
    },
+
-
 
+
-
    // ### toString()
+
-
    // Converts to a `transition` CSS property string. If `use3d` is given,
+
-
    // it converts to a `-webkit-transition` CSS property string instead.
+
-
    toString: function(use3d) {
+
-
      var re = [];
+
-
 
+
-
      for (var i in this) {
+
-
        if (this.hasOwnProperty(i)) {
+
-
          // Don't use 3D transformations if the browser can't support it.
+
-
          if ((!support.transform3d) && (
+
-
            (i === 'rotateX') ||
+
-
            (i === 'rotateY') ||
+
-
            (i === 'perspective') ||
+
-
            (i === 'transformOrigin'))) { continue; }
+
-
 
+
-
          if (i[0] !== '_') {
+
-
            if (use3d && (i === 'scale')) {
+
-
              re.push(i + "3d(" + this[i] + ",1)");
+
-
            } else if (use3d && (i === 'translate')) {
+
-
              re.push(i + "3d(" + this[i] + ",0)");
+
-
            } else {
+
-
              re.push(i + "(" + this[i] + ")");
+
-
            }
+
-
          }
+
-
        }
+
-
      }
+
-
 
+
-
      return re.join(" ");
+
-
    }
+
-
  };
+
-
 
+
-
  function callOrQueue(self, queue, fn) {
+
-
    if (queue === true) {
+
-
      self.queue(fn);
+
-
    } else if (queue) {
+
-
      self.queue(queue, fn);
+
-
    } else {
+
-
      fn();
+
-
    }
+
-
  }
+
-
 
+
-
  // ### getProperties(dict)
+
-
  // Returns properties (for `transition-property`) for dictionary `props`. The
+
-
  // value of `props` is what you would expect in `$.css(...)`.
+
-
  function getProperties(props) {
+
-
    var re = [];
+
-
 
+
-
    $.each(props, function(key) {
+
-
      key = $.camelCase(key); // Convert "text-align" => "textAlign"
+
-
      key = $.transit.propertyMap[key] || key;
+
-
      key = uncamel(key); // Convert back to dasherized
+
-
 
+
-
      if ($.inArray(key, re) === -1) { re.push(key); }
+
-
    });
+
-
 
+
-
    return re;
+
-
  }
+
-
 
+
-
  // ### getTransition()
+
-
  // Returns the transition string to be used for the `transition` CSS property.
+
-
  //
+
-
  // Example:
+
-
  //
+
-
  //    getTransition({ opacity: 1, rotate: 30 }, 500, 'ease');
+
-
  //    //=> 'opacity 500ms ease, -webkit-transform 500ms ease'
+
-
  //
+
-
  function getTransition(properties, duration, easing, delay) {
+
-
    // Get the CSS properties needed.
+
-
    var props = getProperties(properties);
+
-
 
+
-
    // Account for aliases (`in` => `ease-in`).
+
-
    if ($.cssEase[easing]) { easing = $.cssEase[easing]; }
+
-
 
+
-
    // Build the duration/easing/delay attributes for it.
+
-
    var attribs = '' + toMS(duration) + ' ' + easing;
+
-
    if (parseInt(delay, 10) > 0) { attribs += ' ' + toMS(delay); }
+
-
 
+
-
    // For more properties, add them this way:
+
-
    // "margin 200ms ease, padding 200ms ease, ..."
+
-
    var transitions = [];
+
-
    $.each(props, function(i, name) {
+
-
      transitions.push(name + ' ' + attribs);
+
-
    });
+
-
 
+
-
    return transitions.join(', ');
+
-
  }
+
-
 
+
-
  // ## $.fn.transition
+
-
  // Works like $.fn.animate(), but uses CSS transitions.
+
-
  //
+
-
  //    $("...").transition({ opacity: 0.1, scale: 0.3 });
+
-
  //
+
-
  //    // Specific duration
+
-
  //    $("...").transition({ opacity: 0.1, scale: 0.3 }, 500);
+
-
  //
+
-
  //    // With duration and easing
+
-
  //    $("...").transition({ opacity: 0.1, scale: 0.3 }, 500, 'in');
+
-
  //
+
-
  //    // With callback
+
-
  //    $("...").transition({ opacity: 0.1, scale: 0.3 }, function() { ... });
+
-
  //
+
-
  //    // With everything
+
-
  //    $("...").transition({ opacity: 0.1, scale: 0.3 }, 500, 'in', function() { ... });
+
-
  //
+
-
  //    // Alternate syntax
+
-
  //    $("...").transition({
+
-
  //      opacity: 0.1,
+
-
  //      duration: 200,
+
-
  //      delay: 40,
+
-
  //      easing: 'in',
+
-
  //      complete: function() { /* ... */ }
+
-
  //      });
+
-
  //
+
-
  $.fn.transition = $.fn.transit = function(properties, duration, easing, callback) {
+
-
    var self  = this;
+
-
    var delay = 0;
+
-
    var queue = true;
+
-
 
+
-
    // Account for `.transition(properties, callback)`.
+
-
    if (typeof duration === 'function') {
+
-
      callback = duration;
+
-
      duration = undefined;
+
-
    }
+
-
 
+
-
    // Account for `.transition(properties, duration, callback)`.
+
-
    if (typeof easing === 'function') {
+
-
      callback = easing;
+
-
      easing = undefined;
+
-
    }
+
-
 
+
-
    // Alternate syntax.
+
-
    if (typeof properties.easing !== 'undefined') {
+
-
      easing = properties.easing;
+
-
      delete properties.easing;
+
-
    }
+
-
 
+
-
    if (typeof properties.duration !== 'undefined') {
+
-
      duration = properties.duration;
+
-
      delete properties.duration;
+
-
    }
+
-
 
+
-
    if (typeof properties.complete !== 'undefined') {
+
-
      callback = properties.complete;
+
-
      delete properties.complete;
+
-
    }
+
-
 
+
-
    if (typeof properties.queue !== 'undefined') {
+
-
      queue = properties.queue;
+
-
      delete properties.queue;
+
-
    }
+
-
 
+
-
    if (typeof properties.delay !== 'undefined') {
+
-
      delay = properties.delay;
+
-
      delete properties.delay;
+
-
    }
+
-
 
+
-
    // Set defaults. (`400` duration, `ease` easing)
+
-
    if (typeof duration === 'undefined') { duration = $.fx.speeds._default; }
+
-
    if (typeof easing === 'undefined')  { easing = $.cssEase._default; }
+
-
 
+
-
    duration = toMS(duration);
+
-
 
+
-
    // Build the `transition` property.
+
-
    var transitionValue = getTransition(properties, duration, easing, delay);
+
-
 
+
-
    // Compute delay until callback.
+
-
    // If this becomes 0, don't bother setting the transition property.
+
-
    var work = $.transit.enabled && support.transition;
+
-
    var i = work ? (parseInt(duration, 10) + parseInt(delay, 10)) : 0;
+
-
 
+
-
    // If there's nothing to do...
+
-
    if (i === 0) {
+
-
      var fn = function(next) {
+
-
        self.css(properties);
+
-
        if (callback) { callback.apply(self); }
+
-
        if (next) { next(); }
+
-
      };
+
-
 
+
-
      callOrQueue(self, queue, fn);
+
-
      return self;
+
-
    }
+
-
 
+
-
    // Save the old transitions of each element so we can restore it later.
+
-
    var oldTransitions = {};
+
-
 
+
-
    var run = function(nextCall) {
+
-
      var bound = false;
+
-
 
+
-
      // Prepare the callback.
+
-
      var cb = function() {
+
-
        if (bound) { self.unbind(transitionEnd, cb); }
+
-
 
+
-
        if (i > 0) {
+
-
          self.each(function() {
+
-
            this.style[support.transition] = (oldTransitions[this] || null);
+
-
          });
+
-
        }
+
-
 
+
-
        if (typeof callback === 'function') { callback.apply(self); }
+
-
        if (typeof nextCall === 'function') { nextCall(); }
+
-
      };
+
-
 
+
-
      if ((i > 0) && (transitionEnd) && ($.transit.useTransitionEnd)) {
+
-
        // Use the 'transitionend' event if it's available.
+
-
        bound = true;
+
-
        self.bind(transitionEnd, cb);
+
-
      } else {
+
-
        // Fallback to timers if the 'transitionend' event isn't supported.
+
-
        window.setTimeout(cb, i);
+
-
      }
+
-
 
+
-
      // Apply transitions.
+
-
      self.each(function() {
+
-
        if (i > 0) {
+
-
          this.style[support.transition] = transitionValue;
+
-
        }
+
-
        $(this).css(properties);
+
-
      });
+
-
    };
+
-
 
+
-
    // Defer running. This allows the browser to paint any pending CSS it hasn't
+
-
    // painted yet before doing the transitions.
+
-
    var deferredRun = function(next) {
+
-
      var i = 0;
+
-
 
+
-
      // Durations that are too slow will get transitions mixed up.
+
-
      // (Tested on Mac/FF 7.0.1)
+
-
      if ((support.transition === 'MozTransition') && (i < 25)) { i = 25; }
+
-
 
+
-
      window.setTimeout(function() { run(next); }, i);
+
-
    };
+
-
 
+
-
    // Use jQuery's fx queue.
+
-
    callOrQueue(self, queue, deferredRun);
+
-
 
+
-
    // Chainability.
+
-
    return this;
+
-
  };
+
-
 
+
-
  function registerCssHook(prop, isPixels) {
+
-
    // For certain properties, the 'px' should not be implied.
+
-
    if (!isPixels) { $.cssNumber[prop] = true; }
+
-
 
+
-
    $.transit.propertyMap[prop] = support.transform;
+
-
 
+
-
    $.cssHooks[prop] = {
+
-
      get: function(elem) {
+
-
        var t = $(elem).css('transform') || new Transform();
+
-
        return t.get(prop);
+
-
      },
+
-
 
+
-
      set: function(elem, value) {
+
-
        var t = $(elem).css('transform') || new Transform();
+
-
        t.setFromString(prop, value);
+
-
 
+
-
        $(elem).css({ transform: t });
+
-
      }
+
-
    };
+
-
  }
+
-
 
+
-
  // ### uncamel(str)
+
-
  // Converts a camelcase string to a dasherized string.
+
-
  // (`marginLeft` => `margin-left`)
+
-
  function uncamel(str) {
+
-
    return str.replace(/([A-Z])/g, function(letter) { return '-' + letter.toLowerCase(); });
+
-
  }
+
-
 
+
-
  // ### unit(number, unit)
+
-
  // Ensures that number `number` has a unit. If no unit is found, assume the
+
-
  // default is `unit`.
+
-
  //
+
-
  //    unit(2, 'px')          //=> "2px"
+
-
  //    unit("30deg", 'rad')  //=> "30deg"
+
-
  //
+
-
  function unit(i, units) {
+
-
    if ((typeof i === "string") && (!i.match(/^[\-0-9\.]+$/))) {
+
-
      return i;
+
-
    } else {
+
-
      return "" + i + units;
+
-
    }
+
-
  }
+
-
 
+
-
  // ### toMS(duration)
+
-
  // Converts given `duration` to a millisecond string.
+
-
  //
+
-
  //    toMS('fast')  //=> '400ms'
+
-
  //    toMS(10)      //=> '10ms'
+
-
  //
+
-
  function toMS(duration) {
+
-
    var i = duration;
+
-
 
+
-
    // Allow for string durations like 'fast'.
+
-
    if ($.fx.speeds[i]) { i = $.fx.speeds[i]; }
+
-
 
+
-
    return unit(i, 'ms');
+
-
  }
+
-
 
+
-
  // Export some functions for testable-ness.
+
-
  $.transit.getTransitionValue = getTransition;
+
-
})(jQuery);
+
-
 
+
-
 
+
-
 
+
-
</script>
+
-
 
+
-
 
+
<script>
<script>

Revision as of 14:19, 21 August 2012

June
July
August
September
October