web/seminaires/res/js/effects.js
author ymh@caf4f556-3d62-0410-8435-a86758001935
Fri, 13 Mar 2009 17:04:58 +0000
changeset 11 553f788214d5
permissions -rwxr-xr-x
Add seminar + version 00.05
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
     1
// script.aculo.us effects.js v1.6.4, Wed Sep 06 11:30:58 CEST 2006
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
     2
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
     3
// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
     4
// Contributors:
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
     5
//  Justin Palmer (http://encytemedia.com/)
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
     6
//  Mark Pilgrim (http://diveintomark.org/)
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
     7
//  Martin Bialasinki
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
     8
//
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
     9
// See scriptaculous.js for full license.
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    10
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    11
// converts rgb() and #xxx to #xxxxxx format,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    12
// returns self (or first argument) if not convertable
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    13
String.prototype.parseColor = function() {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    14
  var color = '#';
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    15
  if(this.slice(0,4) == 'rgb(') {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    16
    var cols = this.slice(4,this.length-1).split(',');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    17
    var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    18
  } else {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    19
    if(this.slice(0,1) == '#') {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    20
      if(this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    21
      if(this.length==7) color = this.toLowerCase();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    22
    }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    23
  }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    24
  return(color.length==7 ? color : (arguments[0] || this));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    25
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    26
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    27
/*--------------------------------------------------------------------------*/
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    28
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    29
Element.collectTextNodes = function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    30
  return $A($(element).childNodes).collect( function(node) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    31
    return (node.nodeType==3 ? node.nodeValue :
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    32
      (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    33
  }).flatten().join('');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    34
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    35
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    36
Element.collectTextNodesIgnoreClass = function(element, className) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    37
  return $A($(element).childNodes).collect( function(node) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    38
    return (node.nodeType==3 ? node.nodeValue :
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    39
      ((node.hasChildNodes() && !Element.hasClassName(node,className)) ?
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    40
        Element.collectTextNodesIgnoreClass(node, className) : ''));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    41
  }).flatten().join('');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    42
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    43
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    44
Element.setContentZoom = function(element, percent) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    45
  element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    46
  Element.setStyle(element, {fontSize: (percent/100) + 'em'});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    47
  if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    48
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    49
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    50
Element.getOpacity = function(element){
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    51
  var opacity;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    52
  if (opacity = Element.getStyle(element, 'opacity'))
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    53
    return parseFloat(opacity);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    54
  if (opacity = (Element.getStyle(element, 'filter') || '').match(/alpha\(opacity=(.*)\)/))
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    55
    if(opacity[1]) return parseFloat(opacity[1]) / 100;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    56
  return 1.0;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    57
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    58
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    59
Element.setOpacity = function(element, value){
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    60
  element= $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    61
  if (value == 1){
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    62
    Element.setStyle(element, { opacity:
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    63
      (/Gecko/.test(navigator.userAgent) && !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ?
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    64
      0.999999 : 1.0 });
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    65
    if(/MSIE/.test(navigator.userAgent) && !window.opera)
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    66
      Element.setStyle(element, {filter: Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'')});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    67
  } else {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    68
    if(value < 0.00001) value = 0;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    69
    Element.setStyle(element, {opacity: value});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    70
    if(/MSIE/.test(navigator.userAgent) && !window.opera)
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    71
     Element.setStyle(element,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    72
       { filter: Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'') +
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    73
                 'alpha(opacity='+value*100+')' });
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    74
  }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    75
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    76
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    77
Element.getInlineOpacity = function(element){
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    78
  return $(element).style.opacity || '';
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    79
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    80
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    81
Element.childrenWithClassName = function(element, className, findFirst) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    82
  var classNameRegExp = new RegExp("(^|\\s)" + className + "(\\s|$)");
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    83
  var results = $A($(element).getElementsByTagName('*'))[findFirst ? 'detect' : 'select']( function(c) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    84
    return (c.className && c.className.match(classNameRegExp));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    85
  });
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    86
  if(!results) results = [];
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    87
  return results;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    88
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    89
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    90
Element.forceRerendering = function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    91
  try {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    92
    element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    93
    var n = document.createTextNode(' ');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    94
    element.appendChild(n);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    95
    element.removeChild(n);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    96
  } catch(e) { }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    97
};
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    98
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
    99
/*--------------------------------------------------------------------------*/
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   100
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   101
Array.prototype.call = function() {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   102
  var args = arguments;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   103
  this.each(function(f){ f.apply(this, args) });
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   104
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   105
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   106
/*--------------------------------------------------------------------------*/
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   107
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   108
var Effect = {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   109
  _elementDoesNotExistError: {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   110
    name: 'ElementDoesNotExistError',
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   111
    message: 'The specified DOM element does not exist, but is required for this effect to operate'
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   112
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   113
  tagifyText: function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   114
    if(typeof Builder == 'undefined')
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   115
      throw("Effect.tagifyText requires including script.aculo.us' builder.js library");
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   116
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   117
    var tagifyStyle = 'position:relative';
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   118
    if(/MSIE/.test(navigator.userAgent) && !window.opera) tagifyStyle += ';zoom:1';
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   119
    element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   120
    $A(element.childNodes).each( function(child) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   121
      if(child.nodeType==3) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   122
        child.nodeValue.toArray().each( function(character) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   123
          element.insertBefore(
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   124
            Builder.node('span',{style: tagifyStyle},
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   125
              character == ' ' ? String.fromCharCode(160) : character),
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   126
              child);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   127
        });
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   128
        Element.remove(child);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   129
      }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   130
    });
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   131
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   132
  multiple: function(element, effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   133
    var elements;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   134
    if(((typeof element == 'object') ||
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   135
        (typeof element == 'function')) &&
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   136
       (element.length))
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   137
      elements = element;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   138
    else
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   139
      elements = $(element).childNodes;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   140
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   141
    var options = Object.extend({
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   142
      speed: 0.1,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   143
      delay: 0.0
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   144
    }, arguments[2] || {});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   145
    var masterDelay = options.delay;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   146
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   147
    $A(elements).each( function(element, index) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   148
      new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay }));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   149
    });
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   150
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   151
  PAIRS: {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   152
    'slide':  ['SlideDown','SlideUp'],
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   153
    'blind':  ['BlindDown','BlindUp'],
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   154
    'appear': ['Appear','Fade']
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   155
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   156
  toggle: function(element, effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   157
    element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   158
    effect = (effect || 'appear').toLowerCase();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   159
    var options = Object.extend({
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   160
      queue: { position:'end', scope:(element.id || 'global'), limit: 1 }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   161
    }, arguments[2] || {});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   162
    Effect[element.visible() ?
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   163
      Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   164
  }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   165
};
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   166
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   167
var Effect2 = Effect; // deprecated
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   168
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   169
/* ------------- transitions ------------- */
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   170
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   171
Effect.Transitions = {}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   172
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   173
Effect.Transitions.linear = Prototype.K;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   174
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   175
Effect.Transitions.sinoidal = function(pos) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   176
  return (-Math.cos(pos*Math.PI)/2) + 0.5;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   177
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   178
Effect.Transitions.reverse  = function(pos) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   179
  return 1-pos;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   180
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   181
Effect.Transitions.flicker = function(pos) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   182
  return ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   183
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   184
Effect.Transitions.wobble = function(pos) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   185
  return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   186
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   187
Effect.Transitions.pulse = function(pos) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   188
  return (Math.floor(pos*10) % 2 == 0 ?
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   189
    (pos*10-Math.floor(pos*10)) : 1-(pos*10-Math.floor(pos*10)));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   190
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   191
Effect.Transitions.none = function(pos) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   192
  return 0;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   193
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   194
Effect.Transitions.full = function(pos) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   195
  return 1;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   196
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   197
Effect.Transitions.exponential = function(pos) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   198
  return 1-Math.pow(1-pos,2);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   199
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   200
Effect.Transitions.slowstop = function(pos) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   201
  return 1-Math.pow(0.5,20*pos);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   202
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   203
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   204
/* ------------- core effects ------------- */
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   205
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   206
Effect.ScopedQueue = Class.create();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   207
Object.extend(Object.extend(Effect.ScopedQueue.prototype, Enumerable), {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   208
  initialize: function() {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   209
    this.effects  = [];
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   210
    this.interval = null;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   211
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   212
  _each: function(iterator) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   213
    this.effects._each(iterator);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   214
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   215
  add: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   216
    var timestamp = new Date().getTime();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   217
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   218
    var position = (typeof effect.options.queue == 'string') ?
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   219
      effect.options.queue : effect.options.queue.position;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   220
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   221
    switch(position) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   222
      case 'front':
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   223
        // move unstarted effects after this effect
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   224
        this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   225
            e.startOn  += effect.finishOn;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   226
            e.finishOn += effect.finishOn;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   227
          });
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   228
        break;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   229
      case 'end':
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   230
        // start effect after last queued effect has finished
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   231
        timestamp = this.effects.pluck('finishOn').max() || timestamp;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   232
        break;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   233
    }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   234
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   235
    effect.startOn  += timestamp;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   236
    effect.finishOn += timestamp;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   237
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   238
    if(!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   239
      this.effects.push(effect);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   240
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   241
    if(!this.interval)
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   242
      this.interval = setInterval(this.loop.bind(this), 40);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   243
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   244
  remove: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   245
    this.effects = this.effects.reject(function(e) { return e==effect });
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   246
    if(this.effects.length == 0) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   247
      clearInterval(this.interval);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   248
      this.interval = null;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   249
    }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   250
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   251
  loop: function() {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   252
    var timePos = new Date().getTime();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   253
    this.effects.invoke('loop', timePos);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   254
  }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   255
});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   256
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   257
Effect.Queues = {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   258
  instances: $H(),
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   259
  get: function(queueName) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   260
    if(typeof queueName != 'string') return queueName;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   261
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   262
    if(!this.instances[queueName])
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   263
      this.instances[queueName] = new Effect.ScopedQueue();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   264
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   265
    return this.instances[queueName];
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   266
  }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   267
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   268
Effect.Queue = Effect.Queues.get('global');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   269
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   270
Effect.DefaultOptions = {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   271
  transition: Effect.Transitions.sinoidal,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   272
  duration:   1.0,   // seconds
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   273
  fps:        25.0,  // max. 25fps due to Effect.Queue implementation
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   274
  sync:       false, // true for combining
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   275
  from:       0.0,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   276
  to:         1.0,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   277
  delay:      0.0,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   278
  queue:      'parallel'
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   279
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   280
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   281
Effect.Base = function() {};
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   282
Effect.Base.prototype = {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   283
  position: null,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   284
  start: function(options) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   285
    this.options      = Object.extend(Object.extend({},Effect.DefaultOptions), options || {});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   286
    this.currentFrame = 0;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   287
    this.state        = 'idle';
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   288
    this.startOn      = this.options.delay*1000;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   289
    this.finishOn     = this.startOn + (this.options.duration*1000);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   290
    this.event('beforeStart');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   291
    if(!this.options.sync)
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   292
      Effect.Queues.get(typeof this.options.queue == 'string' ?
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   293
        'global' : this.options.queue.scope).add(this);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   294
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   295
  loop: function(timePos) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   296
    if(timePos >= this.startOn) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   297
      if(timePos >= this.finishOn) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   298
        this.render(1.0);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   299
        this.cancel();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   300
        this.event('beforeFinish');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   301
        if(this.finish) this.finish();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   302
        this.event('afterFinish');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   303
        return;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   304
      }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   305
      var pos   = (timePos - this.startOn) / (this.finishOn - this.startOn);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   306
      var frame = Math.round(pos * this.options.fps * this.options.duration);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   307
      if(frame > this.currentFrame) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   308
        this.render(pos);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   309
        this.currentFrame = frame;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   310
      }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   311
    }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   312
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   313
  render: function(pos) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   314
    if(this.state == 'idle') {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   315
      this.state = 'running';
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   316
      this.event('beforeSetup');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   317
      if(this.setup) this.setup();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   318
      this.event('afterSetup');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   319
    }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   320
    if(this.state == 'running') {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   321
      if(this.options.transition) pos = this.options.transition(pos);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   322
      pos *= (this.options.to-this.options.from);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   323
      pos += this.options.from;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   324
      this.position = pos;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   325
      this.event('beforeUpdate');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   326
      if(this.update) this.update(pos);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   327
      this.event('afterUpdate');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   328
    }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   329
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   330
  cancel: function() {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   331
    if(!this.options.sync)
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   332
      Effect.Queues.get(typeof this.options.queue == 'string' ?
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   333
        'global' : this.options.queue.scope).remove(this);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   334
    this.state = 'finished';
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   335
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   336
  event: function(eventName) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   337
    if(this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   338
    if(this.options[eventName]) this.options[eventName](this);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   339
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   340
  inspect: function() {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   341
    return '#<Effect:' + $H(this).inspect() + ',options:' + $H(this.options).inspect() + '>';
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   342
  }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   343
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   344
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   345
Effect.Parallel = Class.create();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   346
Object.extend(Object.extend(Effect.Parallel.prototype, Effect.Base.prototype), {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   347
  initialize: function(effects) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   348
    this.effects = effects || [];
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   349
    this.start(arguments[1]);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   350
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   351
  update: function(position) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   352
    this.effects.invoke('render', position);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   353
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   354
  finish: function(position) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   355
    this.effects.each( function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   356
      effect.render(1.0);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   357
      effect.cancel();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   358
      effect.event('beforeFinish');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   359
      if(effect.finish) effect.finish(position);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   360
      effect.event('afterFinish');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   361
    });
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   362
  }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   363
});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   364
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   365
Effect.Opacity = Class.create();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   366
Object.extend(Object.extend(Effect.Opacity.prototype, Effect.Base.prototype), {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   367
  initialize: function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   368
    this.element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   369
    if(!this.element) throw(Effect._elementDoesNotExistError);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   370
    // make this work on IE on elements without 'layout'
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   371
    if(/MSIE/.test(navigator.userAgent) && !window.opera && (!this.element.currentStyle.hasLayout))
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   372
      this.element.setStyle({zoom: 1});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   373
    var options = Object.extend({
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   374
      from: this.element.getOpacity() || 0.0,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   375
      to:   1.0
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   376
    }, arguments[1] || {});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   377
    this.start(options);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   378
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   379
  update: function(position) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   380
    this.element.setOpacity(position);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   381
  }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   382
});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   383
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   384
Effect.Move = Class.create();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   385
Object.extend(Object.extend(Effect.Move.prototype, Effect.Base.prototype), {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   386
  initialize: function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   387
    this.element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   388
    if(!this.element) throw(Effect._elementDoesNotExistError);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   389
    var options = Object.extend({
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   390
      x:    0,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   391
      y:    0,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   392
      mode: 'relative'
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   393
    }, arguments[1] || {});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   394
    this.start(options);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   395
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   396
  setup: function() {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   397
    // Bug in Opera: Opera returns the "real" position of a static element or
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   398
    // relative element that does not have top/left explicitly set.
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   399
    // ==> Always set top and left for position relative elements in your stylesheets
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   400
    // (to 0 if you do not need them)
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   401
    this.element.makePositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   402
    this.originalLeft = parseFloat(this.element.getStyle('left') || '0');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   403
    this.originalTop  = parseFloat(this.element.getStyle('top')  || '0');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   404
    if(this.options.mode == 'absolute') {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   405
      // absolute movement, so we need to calc deltaX and deltaY
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   406
      this.options.x = this.options.x - this.originalLeft;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   407
      this.options.y = this.options.y - this.originalTop;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   408
    }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   409
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   410
  update: function(position) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   411
    this.element.setStyle({
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   412
      left: Math.round(this.options.x  * position + this.originalLeft) + 'px',
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   413
      top:  Math.round(this.options.y  * position + this.originalTop)  + 'px'
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   414
    });
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   415
  }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   416
});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   417
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   418
// for backwards compatibility
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   419
Effect.MoveBy = function(element, toTop, toLeft) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   420
  return new Effect.Move(element,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   421
    Object.extend({ x: toLeft, y: toTop }, arguments[3] || {}));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   422
};
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   423
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   424
Effect.Scale = Class.create();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   425
Object.extend(Object.extend(Effect.Scale.prototype, Effect.Base.prototype), {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   426
  initialize: function(element, percent) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   427
    this.element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   428
    if(!this.element) throw(Effect._elementDoesNotExistError);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   429
    var options = Object.extend({
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   430
      scaleX: true,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   431
      scaleY: true,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   432
      scaleContent: true,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   433
      scaleFromCenter: false,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   434
      scaleMode: 'box',        // 'box' or 'contents' or {} with provided values
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   435
      scaleFrom: 100.0,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   436
      scaleTo:   percent
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   437
    }, arguments[2] || {});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   438
    this.start(options);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   439
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   440
  setup: function() {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   441
    this.restoreAfterFinish = this.options.restoreAfterFinish || false;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   442
    this.elementPositioning = this.element.getStyle('position');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   443
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   444
    this.originalStyle = {};
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   445
    ['top','left','width','height','fontSize'].each( function(k) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   446
      this.originalStyle[k] = this.element.style[k];
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   447
    }.bind(this));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   448
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   449
    this.originalTop  = this.element.offsetTop;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   450
    this.originalLeft = this.element.offsetLeft;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   451
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   452
    var fontSize = this.element.getStyle('font-size') || '100%';
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   453
    ['em','px','%','pt'].each( function(fontSizeType) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   454
      if(fontSize.indexOf(fontSizeType)>0) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   455
        this.fontSize     = parseFloat(fontSize);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   456
        this.fontSizeType = fontSizeType;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   457
      }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   458
    }.bind(this));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   459
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   460
    this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   461
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   462
    this.dims = null;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   463
    if(this.options.scaleMode=='box')
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   464
      this.dims = [this.element.offsetHeight, this.element.offsetWidth];
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   465
    if(/^content/.test(this.options.scaleMode))
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   466
      this.dims = [this.element.scrollHeight, this.element.scrollWidth];
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   467
    if(!this.dims)
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   468
      this.dims = [this.options.scaleMode.originalHeight,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   469
                   this.options.scaleMode.originalWidth];
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   470
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   471
  update: function(position) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   472
    var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   473
    if(this.options.scaleContent && this.fontSize)
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   474
      this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType });
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   475
    this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   476
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   477
  finish: function(position) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   478
    if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   479
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   480
  setDimensions: function(height, width) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   481
    var d = {};
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   482
    if(this.options.scaleX) d.width = Math.round(width) + 'px';
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   483
    if(this.options.scaleY) d.height = Math.round(height) + 'px';
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   484
    if(this.options.scaleFromCenter) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   485
      var topd  = (height - this.dims[0])/2;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   486
      var leftd = (width  - this.dims[1])/2;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   487
      if(this.elementPositioning == 'absolute') {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   488
        if(this.options.scaleY) d.top = this.originalTop-topd + 'px';
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   489
        if(this.options.scaleX) d.left = this.originalLeft-leftd + 'px';
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   490
      } else {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   491
        if(this.options.scaleY) d.top = -topd + 'px';
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   492
        if(this.options.scaleX) d.left = -leftd + 'px';
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   493
      }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   494
    }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   495
    this.element.setStyle(d);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   496
  }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   497
});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   498
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   499
Effect.Highlight = Class.create();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   500
Object.extend(Object.extend(Effect.Highlight.prototype, Effect.Base.prototype), {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   501
  initialize: function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   502
    this.element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   503
    if(!this.element) throw(Effect._elementDoesNotExistError);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   504
    var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || {});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   505
    this.start(options);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   506
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   507
  setup: function() {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   508
    // Prevent executing on elements not in the layout flow
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   509
    if(this.element.getStyle('display')=='none') { this.cancel(); return; }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   510
    // Disable background image during the effect
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   511
    this.oldStyle = {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   512
      backgroundImage: this.element.getStyle('background-image') };
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   513
    this.element.setStyle({backgroundImage: 'none'});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   514
    if(!this.options.endcolor)
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   515
      this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   516
    if(!this.options.restorecolor)
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   517
      this.options.restorecolor = this.element.getStyle('background-color');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   518
    // init color calculations
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   519
    this._base  = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   520
    this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   521
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   522
  update: function(position) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   523
    this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   524
      return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); }.bind(this)) });
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   525
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   526
  finish: function() {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   527
    this.element.setStyle(Object.extend(this.oldStyle, {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   528
      backgroundColor: this.options.restorecolor
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   529
    }));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   530
  }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   531
});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   532
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   533
Effect.ScrollTo = Class.create();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   534
Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   535
  initialize: function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   536
    this.element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   537
    this.start(arguments[1] || {});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   538
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   539
  setup: function() {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   540
    Position.prepare();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   541
    var offsets = Position.cumulativeOffset(this.element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   542
    if(this.options.offset) offsets[1] += this.options.offset;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   543
    var max = window.innerHeight ?
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   544
      window.height - window.innerHeight :
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   545
      document.body.scrollHeight -
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   546
        (document.documentElement.clientHeight ?
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   547
          document.documentElement.clientHeight : document.body.clientHeight);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   548
    this.scrollStart = Position.deltaY;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   549
    this.delta = (offsets[1] > max ? max : offsets[1]) - this.scrollStart;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   550
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   551
  update: function(position) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   552
    Position.prepare();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   553
    window.scrollTo(Position.deltaX,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   554
      this.scrollStart + (position*this.delta));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   555
  }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   556
});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   557
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   558
/* ------------- combination effects ------------- */
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   559
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   560
Effect.Fade = function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   561
  element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   562
  var oldOpacity = element.getInlineOpacity();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   563
  var options = Object.extend({
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   564
  from: element.getOpacity() || 1.0,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   565
  to:   0.0,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   566
  afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   567
    if(effect.options.to!=0) return;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   568
    effect.element.hide();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   569
    effect.element.setStyle({opacity: oldOpacity});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   570
  }}, arguments[1] || {});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   571
  return new Effect.Opacity(element,options);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   572
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   573
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   574
Effect.Appear = function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   575
  element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   576
  var options = Object.extend({
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   577
  from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0),
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   578
  to:   1.0,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   579
  // force Safari to render floated elements properly
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   580
  afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   581
    effect.element.forceRerendering();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   582
  },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   583
  beforeSetup: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   584
    effect.element.setOpacity(effect.options.from);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   585
    effect.element.show();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   586
  }}, arguments[1] || {});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   587
  return new Effect.Opacity(element,options);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   588
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   589
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   590
Effect.Puff = function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   591
  element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   592
  var oldStyle = {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   593
    opacity: element.getInlineOpacity(),
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   594
    position: element.getStyle('position'),
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   595
    top:  element.style.top,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   596
    left: element.style.left,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   597
    width: element.style.width,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   598
    height: element.style.height
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   599
  };
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   600
  return new Effect.Parallel(
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   601
   [ new Effect.Scale(element, 200,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   602
      { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }),
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   603
     new Effect.Opacity(element, { sync: true, to: 0.0 } ) ],
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   604
     Object.extend({ duration: 1.0,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   605
      beforeSetupInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   606
        Position.absolutize(effect.effects[0].element)
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   607
      },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   608
      afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   609
         effect.effects[0].element.hide();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   610
         effect.effects[0].element.setStyle(oldStyle); }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   611
     }, arguments[1] || {})
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   612
   );
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   613
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   614
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   615
Effect.BlindUp = function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   616
  element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   617
  element.makeClipping();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   618
  return new Effect.Scale(element, 0,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   619
    Object.extend({ scaleContent: false,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   620
      scaleX: false,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   621
      restoreAfterFinish: true,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   622
      afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   623
        effect.element.hide();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   624
        effect.element.undoClipping();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   625
      }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   626
    }, arguments[1] || {})
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   627
  );
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   628
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   629
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   630
Effect.BlindDown = function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   631
  element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   632
  var elementDimensions = element.getDimensions();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   633
  return new Effect.Scale(element, 100, Object.extend({
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   634
    scaleContent: false,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   635
    scaleX: false,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   636
    scaleFrom: 0,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   637
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   638
    restoreAfterFinish: true,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   639
    afterSetup: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   640
      effect.element.makeClipping();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   641
      effect.element.setStyle({height: '0px'});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   642
      effect.element.show();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   643
    },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   644
    afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   645
      effect.element.undoClipping();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   646
    }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   647
  }, arguments[1] || {}));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   648
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   649
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   650
Effect.SwitchOff = function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   651
  element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   652
  var oldOpacity = element.getInlineOpacity();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   653
  return new Effect.Appear(element, Object.extend({
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   654
    duration: 0.4,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   655
    from: 0,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   656
    transition: Effect.Transitions.flicker,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   657
    afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   658
      new Effect.Scale(effect.element, 1, {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   659
        duration: 0.3, scaleFromCenter: true,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   660
        scaleX: false, scaleContent: false, restoreAfterFinish: true,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   661
        beforeSetup: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   662
          effect.element.makePositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   663
          effect.element.makeClipping();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   664
        },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   665
        afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   666
          effect.element.hide();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   667
          effect.element.undoClipping();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   668
          effect.element.undoPositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   669
          effect.element.setStyle({opacity: oldOpacity});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   670
        }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   671
      })
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   672
    }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   673
  }, arguments[1] || {}));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   674
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   675
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   676
Effect.DropOut = function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   677
  element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   678
  var oldStyle = {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   679
    top: element.getStyle('top'),
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   680
    left: element.getStyle('left'),
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   681
    opacity: element.getInlineOpacity() };
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   682
  return new Effect.Parallel(
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   683
    [ new Effect.Move(element, {x: 0, y: 100, sync: true }),
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   684
      new Effect.Opacity(element, { sync: true, to: 0.0 }) ],
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   685
    Object.extend(
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   686
      { duration: 0.5,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   687
        beforeSetup: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   688
          effect.effects[0].element.makePositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   689
        },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   690
        afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   691
          effect.effects[0].element.hide();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   692
          effect.effects[0].element.undoPositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   693
          effect.effects[0].element.setStyle(oldStyle);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   694
        }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   695
      }, arguments[1] || {}));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   696
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   697
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   698
Effect.Shake = function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   699
  element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   700
  var oldStyle = {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   701
    top: element.getStyle('top'),
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   702
    left: element.getStyle('left') };
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   703
    return new Effect.Move(element,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   704
      { x:  20, y: 0, duration: 0.05, afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   705
    new Effect.Move(effect.element,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   706
      { x: -40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   707
    new Effect.Move(effect.element,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   708
      { x:  40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   709
    new Effect.Move(effect.element,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   710
      { x: -40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   711
    new Effect.Move(effect.element,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   712
      { x:  40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   713
    new Effect.Move(effect.element,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   714
      { x: -20, y: 0, duration: 0.05, afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   715
        effect.element.undoPositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   716
        effect.element.setStyle(oldStyle);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   717
  }}) }}) }}) }}) }}) }});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   718
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   719
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   720
Effect.SlideDown = function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   721
  element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   722
  element.cleanWhitespace();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   723
  // SlideDown need to have the content of the element wrapped in a container element with fixed height!
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   724
  var oldInnerBottom = $(element.firstChild).getStyle('bottom');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   725
  var elementDimensions = element.getDimensions();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   726
  return new Effect.Scale(element, 100, Object.extend({
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   727
    scaleContent: false,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   728
    scaleX: false,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   729
    scaleFrom: window.opera ? 0 : 1,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   730
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   731
    restoreAfterFinish: true,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   732
    afterSetup: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   733
      effect.element.makePositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   734
      effect.element.firstChild.makePositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   735
      if(window.opera) effect.element.setStyle({top: ''});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   736
      effect.element.makeClipping();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   737
      effect.element.setStyle({height: '0px'});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   738
      effect.element.show(); },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   739
    afterUpdateInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   740
      effect.element.firstChild.setStyle({bottom:
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   741
        (effect.dims[0] - effect.element.clientHeight) + 'px' });
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   742
    },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   743
    afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   744
      effect.element.undoClipping();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   745
      // IE will crash if child is undoPositioned first
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   746
      if(/MSIE/.test(navigator.userAgent) && !window.opera){
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   747
        effect.element.undoPositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   748
        effect.element.firstChild.undoPositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   749
      }else{
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   750
        effect.element.firstChild.undoPositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   751
        effect.element.undoPositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   752
      }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   753
      effect.element.firstChild.setStyle({bottom: oldInnerBottom}); }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   754
    }, arguments[1] || {})
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   755
  );
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   756
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   757
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   758
Effect.SlideUp = function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   759
  element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   760
  element.cleanWhitespace();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   761
  var oldInnerBottom = $(element.firstChild).getStyle('bottom');
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   762
  return new Effect.Scale(element, window.opera ? 0 : 1,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   763
   Object.extend({ scaleContent: false,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   764
    scaleX: false,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   765
    scaleMode: 'box',
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   766
    scaleFrom: 100,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   767
    restoreAfterFinish: true,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   768
    beforeStartInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   769
      effect.element.makePositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   770
      effect.element.firstChild.makePositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   771
      if(window.opera) effect.element.setStyle({top: ''});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   772
      effect.element.makeClipping();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   773
      effect.element.show(); },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   774
    afterUpdateInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   775
      effect.element.firstChild.setStyle({bottom:
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   776
        (effect.dims[0] - effect.element.clientHeight) + 'px' }); },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   777
    afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   778
      effect.element.hide();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   779
      effect.element.undoClipping();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   780
      effect.element.firstChild.undoPositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   781
      effect.element.undoPositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   782
      effect.element.setStyle({bottom: oldInnerBottom}); }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   783
   }, arguments[1] || {})
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   784
  );
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   785
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   786
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   787
// Bug in opera makes the TD containing this element expand for a instance after finish
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   788
Effect.Squish = function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   789
  return new Effect.Scale(element, window.opera ? 1 : 0,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   790
    { restoreAfterFinish: true,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   791
      beforeSetup: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   792
        effect.element.makeClipping(effect.element); },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   793
      afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   794
        effect.element.hide(effect.element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   795
        effect.element.undoClipping(effect.element); }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   796
  });
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   797
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   798
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   799
Effect.Grow = function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   800
  element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   801
  var options = Object.extend({
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   802
    direction: 'center',
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   803
    moveTransition: Effect.Transitions.sinoidal,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   804
    scaleTransition: Effect.Transitions.sinoidal,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   805
    opacityTransition: Effect.Transitions.full
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   806
  }, arguments[1] || {});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   807
  var oldStyle = {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   808
    top: element.style.top,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   809
    left: element.style.left,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   810
    height: element.style.height,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   811
    width: element.style.width,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   812
    opacity: element.getInlineOpacity() };
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   813
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   814
  var dims = element.getDimensions();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   815
  var initialMoveX, initialMoveY;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   816
  var moveX, moveY;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   817
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   818
  switch (options.direction) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   819
    case 'top-left':
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   820
      initialMoveX = initialMoveY = moveX = moveY = 0;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   821
      break;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   822
    case 'top-right':
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   823
      initialMoveX = dims.width;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   824
      initialMoveY = moveY = 0;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   825
      moveX = -dims.width;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   826
      break;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   827
    case 'bottom-left':
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   828
      initialMoveX = moveX = 0;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   829
      initialMoveY = dims.height;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   830
      moveY = -dims.height;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   831
      break;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   832
    case 'bottom-right':
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   833
      initialMoveX = dims.width;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   834
      initialMoveY = dims.height;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   835
      moveX = -dims.width;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   836
      moveY = -dims.height;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   837
      break;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   838
    case 'center':
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   839
      initialMoveX = dims.width / 2;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   840
      initialMoveY = dims.height / 2;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   841
      moveX = -dims.width / 2;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   842
      moveY = -dims.height / 2;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   843
      break;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   844
  }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   845
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   846
  return new Effect.Move(element, {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   847
    x: initialMoveX,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   848
    y: initialMoveY,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   849
    duration: 0.01,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   850
    beforeSetup: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   851
      effect.element.hide();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   852
      effect.element.makeClipping();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   853
      effect.element.makePositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   854
    },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   855
    afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   856
      new Effect.Parallel(
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   857
        [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   858
          new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   859
          new Effect.Scale(effect.element, 100, {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   860
            scaleMode: { originalHeight: dims.height, originalWidth: dims.width },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   861
            sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   862
        ], Object.extend({
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   863
             beforeSetup: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   864
               effect.effects[0].element.setStyle({height: '0px'});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   865
               effect.effects[0].element.show();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   866
             },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   867
             afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   868
               effect.effects[0].element.undoClipping();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   869
               effect.effects[0].element.undoPositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   870
               effect.effects[0].element.setStyle(oldStyle);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   871
             }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   872
           }, options)
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   873
      )
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   874
    }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   875
  });
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   876
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   877
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   878
Effect.Shrink = function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   879
  element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   880
  var options = Object.extend({
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   881
    direction: 'center',
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   882
    moveTransition: Effect.Transitions.sinoidal,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   883
    scaleTransition: Effect.Transitions.sinoidal,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   884
    opacityTransition: Effect.Transitions.none
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   885
  }, arguments[1] || {});
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   886
  var oldStyle = {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   887
    top: element.style.top,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   888
    left: element.style.left,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   889
    height: element.style.height,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   890
    width: element.style.width,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   891
    opacity: element.getInlineOpacity() };
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   892
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   893
  var dims = element.getDimensions();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   894
  var moveX, moveY;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   895
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   896
  switch (options.direction) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   897
    case 'top-left':
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   898
      moveX = moveY = 0;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   899
      break;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   900
    case 'top-right':
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   901
      moveX = dims.width;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   902
      moveY = 0;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   903
      break;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   904
    case 'bottom-left':
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   905
      moveX = 0;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   906
      moveY = dims.height;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   907
      break;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   908
    case 'bottom-right':
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   909
      moveX = dims.width;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   910
      moveY = dims.height;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   911
      break;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   912
    case 'center':
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   913
      moveX = dims.width / 2;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   914
      moveY = dims.height / 2;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   915
      break;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   916
  }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   917
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   918
  return new Effect.Parallel(
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   919
    [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   920
      new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   921
      new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   922
    ], Object.extend({
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   923
         beforeStartInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   924
           effect.effects[0].element.makePositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   925
           effect.effects[0].element.makeClipping(); },
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   926
         afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   927
           effect.effects[0].element.hide();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   928
           effect.effects[0].element.undoClipping();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   929
           effect.effects[0].element.undoPositioned();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   930
           effect.effects[0].element.setStyle(oldStyle); }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   931
       }, options)
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   932
  );
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   933
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   934
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   935
Effect.Pulsate = function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   936
  element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   937
  var options    = arguments[1] || {};
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   938
  var oldOpacity = element.getInlineOpacity();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   939
  var transition = options.transition || Effect.Transitions.sinoidal;
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   940
  var reverser   = function(pos){ return transition(1-Effect.Transitions.pulse(pos)) };
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   941
  reverser.bind(transition);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   942
  return new Effect.Opacity(element,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   943
    Object.extend(Object.extend({  duration: 3.0, from: 0,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   944
      afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   945
    }, options), {transition: reverser}));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   946
}
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   947
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   948
Effect.Fold = function(element) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   949
  element = $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   950
  var oldStyle = {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   951
    top: element.style.top,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   952
    left: element.style.left,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   953
    width: element.style.width,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   954
    height: element.style.height };
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   955
  Element.makeClipping(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   956
  return new Effect.Scale(element, 5, Object.extend({
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   957
    scaleContent: false,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   958
    scaleX: false,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   959
    afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   960
    new Effect.Scale(element, 1, {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   961
      scaleContent: false,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   962
      scaleY: false,
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   963
      afterFinishInternal: function(effect) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   964
        effect.element.hide();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   965
        effect.element.undoClipping();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   966
        effect.element.setStyle(oldStyle);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   967
      } });
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   968
  }}, arguments[1] || {}));
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   969
};
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   970
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   971
['setOpacity','getOpacity','getInlineOpacity','forceRerendering','setContentZoom',
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   972
 'collectTextNodes','collectTextNodesIgnoreClass','childrenWithClassName'].each(
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   973
  function(f) { Element.Methods[f] = Element[f]; }
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   974
);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   975
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   976
Element.Methods.visualEffect = function(element, effect, options) {
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   977
  s = effect.gsub(/_/, '-').camelize();
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   978
  effect_class = s.charAt(0).toUpperCase() + s.substring(1);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   979
  new Effect[effect_class](element, options);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   980
  return $(element);
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   981
};
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   982
553f788214d5 Add seminar + version 00.05
ymh@caf4f556-3d62-0410-8435-a86758001935
parents:
diff changeset
   983
Element.addMethods();