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