// script.aculo.us effects.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009

// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
// Contributors:
//  Justin Palmer (http://encytemedia.com/)
//  Mark Pilgrim (http://diveintomark.org/)
//  Martin Bialasinki
//
// script.aculo.us is freely distributable under the terms of an MIT-style license.
// For details, see the script.aculo.us web site: http://script.aculo.us/

// converts rgb() and #xxx to #xxxxxx format,
// returns self (or first argument) if not convertable
String.prototype.parseColor = function() {
  var color = '#';
  if (this.slice(0,4) == 'rgb(') {
    var cols = this.slice(4,this.length-1).split(',');
    var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);
  } else {
    if (this.slice(0,1) == '#') {
      if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();
      if (this.length==7) color = this.toLowerCase();
    }
  }
  return (color.length==7 ? color : (arguments[0] || this));
};

/*--------------------------------------------------------------------------*/

Element.collectTextNodes = function(element) {
  return $A($(element).childNodes).collect( function(node) {
    return (node.nodeType==3 ? node.nodeValue :
      (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));
  }).flatten().join('');
};

Element.collectTextNodesIgnoreClass = function(element, className) {
  return $A($(element).childNodes).collect( function(node) {
    return (node.nodeType==3 ? node.nodeValue :
      ((node.hasChildNodes() && !Element.hasClassName(node,className)) ?
        Element.collectTextNodesIgnoreClass(node, className) : ''));
  }).flatten().join('');
};

Element.setContentZoom = function(element, percent) {
  element = $(element);
  element.setStyle({fontSize: (percent/100) + 'em'});
  if (Prototype.Browser.WebKit) window.scrollBy(0,0);
  return element;
};

Element.getInlineOpacity = function(element){
  return $(element).style.opacity || '';
};

Element.forceRerendering = function(element) {
  try {
    element = $(element);
    var n = document.createTextNode(' ');
    element.appendChild(n);
    element.removeChild(n);
  } catch(e) { }
};

/*--------------------------------------------------------------------------*/

var Effect = {
  _elementDoesNotExistError: {
    name: 'ElementDoesNotExistError',
    message: 'The specified DOM element does not exist, but is required for this effect to operate'
  },
  Transitions: {
    linear: Prototype.K,
    sinoidal: function(pos) {
      return (-Math.cos(pos*Math.PI)/2) + .5;
    },
    reverse: function(pos) {
      return 1-pos;
    },
    flicker: function(pos) {
      var pos = ((-Math.cos(pos*Math.PI)/4) + .75) + Math.random()/4;
      return pos > 1 ? 1 : pos;
    },
    wobble: function(pos) {
      return (-Math.cos(pos*Math.PI*(9*pos))/2) + .5;
    },
    pulse: function(pos, pulses) {
      return (-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2) + .5;
    },
    spring: function(pos) {
      return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6));
    },
    none: function(pos) {
      return 0;
    },
    full: function(pos) {
      return 1;
    }
  },
  DefaultOptions: {
    duration:   1.0,   // seconds
    fps:        100,   // 100= assume 66fps max.
    sync:       false, // true for combining
    from:       0.0,
    to:         1.0,
    delay:      0.0,
    queue:      'parallel'
  },
  tagifyText: function(element) {
    var tagifyStyle = 'position:relative';
    if (Prototype.Browser.IE) tagifyStyle += ';zoom:1';

    element = $(element);
    $A(element.childNodes).each( function(child) {
      if (child.nodeType==3) {
        child.nodeValue.toArray().each( function(character) {
          element.insertBefore(
            new Element('span', {style: tagifyStyle}).update(
              character == ' ' ? String.fromCharCode(160) : character),
              child);
        });

        Element.remove(child);
      }
    });
  },
  multiple: function(element, effect) {
    var elements;
    if (((typeof element == 'object') ||
        Object.isFunction(element)) &&
       (element.length))
      elements = element;
    else
      elements = $(element).childNodes;

    var options = Object.extend({
      speed: 0.1,
      delay: 0.0
    }, arguments[2] || { });
    var masterDelay = options.delay;

    $A(elements).each( function(element, index) {
      new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay }));
    });
  },
  PAIRS: {
    'slide':  ['SlideDown','SlideUp'],
    'blind':  ['BlindDown','BlindUp'],
    'appear': ['Appear','Fade']
  },
  toggle: function(element, effect, options) {
    element = $(element);
    effect  = (effect || 'appear').toLowerCase();
    
    return Effect[ Effect.PAIRS[ effect ][ element.visible() ? 1 : 0 ] ](element, Object.extend({
      queue: { position:'end', scope:(element.id || 'global'), limit: 1 }
    }, options || {}));
  }
};

Effect.DefaultOptions.transition = Effect.Transitions.sinoidal;

/* ------------- core effects ------------- */

Effect.ScopedQueue = Class.create(Enumerable, {
  initialize: function() {
    this.effects  = [];
    this.interval = null;
  },
  _each: function(iterator) {
    this.effects._each(iterator);
  },
  add: function(effect) {
    var timestamp = new Date().getTime();

    var position = Object.isString(effect.options.queue) ?
      effect.options.queue : effect.options.queue.position;

    switch(position) {
      case 'front':
        // move unstarted effects after this effect
        this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) {
            e.startOn  += effect.finishOn;
            e.finishOn += effect.finishOn;
          });
        break;
      case 'with-last':
        timestamp = this.effects.pluck('startOn').max() || timestamp;
        break;
      case 'end':
        // start effect after last queued effect has finished
        timestamp = this.effects.pluck('finishOn').max() || timestamp;
        break;
    }

    effect.startOn  += timestamp;
    effect.finishOn += timestamp;

    if (!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))
      this.effects.push(effect);

    if (!this.interval)
      this.interval = setInterval(this.loop.bind(this), 15);
  },
  remove: function(effect) {
    this.effects = this.effects.reject(function(e) { return e==effect });
    if (this.effects.length == 0) {
      clearInterval(this.interval);
      this.interval = null;
    }
  },
  loop: function() {
    var timePos = new Date().getTime();
    for(var i=0, len=this.effects.length;i<len;i++)
      this.effects[i] && this.effects[i].loop(timePos);
  }
});

Effect.Queues = {
  instances: $H(),
  get: function(queueName) {
    if (!Object.isString(queueName)) return queueName;

    return this.instances.get(queueName) ||
      this.instances.set(queueName, new Effect.ScopedQueue());
  }
};
Effect.Queue = Effect.Queues.get('global');

Effect.Base = Class.create({
  position: null,
  start: function(options) {
    if (options && options.transition === false) options.transition = Effect.Transitions.linear;
    this.options      = Object.extend(Object.extend({ },Effect.DefaultOptions), options || { });
    this.currentFrame = 0;
    this.state        = 'idle';
    this.startOn      = this.options.delay*1000;
    this.finishOn     = this.startOn+(this.options.duration*1000);
    this.fromToDelta  = this.options.to-this.options.from;
    this.totalTime    = this.finishOn-this.startOn;
    this.totalFrames  = this.options.fps*this.options.duration;

    this.render = (function() {
      function dispatch(effect, eventName) {
        if (effect.options[eventName + 'Internal'])
          effect.options[eventName + 'Internal'](effect);
        if (effect.options[eventName])
          effect.options[eventName](effect);
      }

      return function(pos) {
        if (this.state === "idle") {
          this.state = "running";
          dispatch(this, 'beforeSetup');
          if (this.setup) this.setup();
          dispatch(this, 'afterSetup');
        }
        if (this.state === "running") {
          pos = (this.options.transition(pos) * this.fromToDelta) + this.options.from;
          this.position = pos;
          dispatch(this, 'beforeUpdate');
          if (this.update) this.update(pos);
          dispatch(this, 'afterUpdate');
        }
      };
    })();

    this.event('beforeStart');
    if (!this.options.sync)
      Effect.Queues.get(Object.isString(this.options.queue) ?
        'global' : this.options.queue.scope).add(this);
  },
  loop: function(timePos) {
    if (timePos >= this.startOn) {
      if (timePos >= this.finishOn) {
        this.render(1.0);
        this.cancel();
        this.event('beforeFinish');
        if (this.finish) this.finish();
        this.event('afterFinish');
        return;
      }
      var pos   = (timePos - this.startOn) / this.totalTime,
          frame = (pos * this.totalFrames).round();
      if (frame > this.currentFrame) {
        this.render(pos);
        this.currentFrame = frame;
      }
    }
  },
  cancel: function() {
    if (!this.options.sync)
      Effect.Queues.get(Object.isString(this.options.queue) ?
        'global' : this.options.queue.scope).remove(this);
    this.state = 'finished';
  },
  event: function(eventName) {
    if (this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);
    if (this.options[eventName]) this.options[eventName](this);
  },
  inspect: function() {
    var data = $H();
    for(property in this)
      if (!Object.isFunction(this[property])) data.set(property, this[property]);
    return '#<Effect:' + data.inspect() + ',options:' + $H(this.options).inspect() + '>';
  }
});

Effect.Parallel = Class.create(Effect.Base, {
  initialize: function(effects) {
    this.effects = effects || [];
    this.start(arguments[1]);
  },
  update: function(position) {
    this.effects.invoke('render', position);
  },
  finish: function(position) {
    this.effects.each( function(effect) {
      effect.render(1.0);
      effect.cancel();
      effect.event('beforeFinish');
      if (effect.finish) effect.finish(position);
      effect.event('afterFinish');
    });
  }
});

Effect.Tween = Class.create(Effect.Base, {
  initialize: function(object, from, to) {
    object = Object.isString(object) ? $(object) : object;
    var args = $A(arguments), method = args.last(),
      options = args.length == 5 ? args[3] : null;
    this.method = Object.isFunction(method) ? method.bind(object) :
      Object.isFunction(object[method]) ? object[method].bind(object) :
      function(value) { object[method] = value };
    this.start(Object.extend({ from: from, to: to }, options || { }));
  },
  update: function(position) {
    this.method(position);
  }
});

Effect.Event = Class.create(Effect.Base, {
  initialize: function() {
    this.start(Object.extend({ duration: 0 }, arguments[0] || { }));
  },
  update: Prototype.emptyFunction
});

Effect.Opacity = Class.create(Effect.Base, {
  initialize: function(element) {
    this.element = $(element);
    if (!this.element) throw(Effect._elementDoesNotExistError);
    // make this work on IE on elements without 'layout'
    if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
      this.element.setStyle({zoom: 1});
    var options = Object.extend({
      from: this.element.getOpacity() || 0.0,
      to:   1.0
    }, arguments[1] || { });
    this.start(options);
  },
  update: function(position) {
    this.element.setOpacity(position);
  }
});

Effect.Move = Class.create(Effect.Base, {
  initialize: function(element) {
    this.element = $(element);
    if (!this.element) throw(Effect._elementDoesNotExistError);
    var options = Object.extend({
      x:    0,
      y:    0,
      mode: 'relative'
    }, arguments[1] || { });
    this.start(options);
  },
  setup: function() {
    this.element.makePositioned();
    this.originalLeft = parseFloat(this.element.getStyle('left') || '0');
    this.originalTop  = parseFloat(this.element.getStyle('top')  || '0');
    if (this.options.mode == 'absolute') {
      this.options.x = this.options.x - this.originalLeft;
      this.options.y = this.options.y - this.originalTop;
    }
  },
  update: function(position) {
    this.element.setStyle({
      left: (this.options.x  * position + this.originalLeft).round() + 'px',
      top:  (this.options.y  * position + this.originalTop).round()  + 'px'
    });
  }
});

// for backwards compatibility
Effect.MoveBy = function(element, toTop, toLeft) {
  return new Effect.Move(element,
    Object.extend({ x: toLeft, y: toTop }, arguments[3] || { }));
};

Effect.Scale = Class.create(Effect.Base, {
  initialize: function(element, percent) {
    this.element = $(element);
    if (!this.element) throw(Effect._elementDoesNotExistError);
    var options = Object.extend({
      scaleX: true,
      scaleY: true,
      scaleContent: true,
      scaleFromCenter: false,
      scaleMode: 'box',        // 'box' or 'contents' or { } with provided values
      scaleFrom: 100.0,
      scaleTo:   percent
    }, arguments[2] || { });
    this.start(options);
  },
  setup: function() {
    this.restoreAfterFinish = this.options.restoreAfterFinish || false;
    this.elementPositioning = this.element.getStyle('position');

    this.originalStyle = { };
    ['top','left','width','height','fontSize'].each( function(k) {
      this.originalStyle[k] = this.element.style[k];
    }.bind(this));

    this.originalTop  = this.element.offsetTop;
    this.originalLeft = this.element.offsetLeft;

    var fontSize = this.element.getStyle('font-size') || '100%';
    ['em','px','%','pt'].each( function(fontSizeType) {
      if (fontSize.indexOf(fontSizeType)>0) {
        this.fontSize     = parseFloat(fontSize);
        this.fontSizeType = fontSizeType;
      }
    }.bind(this));

    this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;

    this.dims = null;
    if (this.options.scaleMode=='box')
      this.dims = [this.element.offsetHeight, this.element.offsetWidth];
    if (/^content/.test(this.options.scaleMode))
      this.dims = [this.element.scrollHeight, this.element.scrollWidth];
    if (!this.dims)
      this.dims = [this.options.scaleMode.originalHeight,
                   this.options.scaleMode.originalWidth];
  },
  update: function(position) {
    var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
    if (this.options.scaleContent && this.fontSize)
      this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType });
    this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale);
  },
  finish: function(position) {
    if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
  },
  setDimensions: function(height, width) {
    var d = { };
    if (this.options.scaleX) d.width = width.round() + 'px';
    if (this.options.scaleY) d.height = height.round() + 'px';
    if (this.options.scaleFromCenter) {
      var topd  = (height - this.dims[0])/2;
      var leftd = (width  - this.dims[1])/2;
      if (this.elementPositioning == 'absolute') {
        if (this.options.scaleY) d.top = this.originalTop-topd + 'px';
        if (this.options.scaleX) d.left = this.originalLeft-leftd + 'px';
      } else {
        if (this.options.scaleY) d.top = -topd + 'px';
        if (this.options.scaleX) d.left = -leftd + 'px';
      }
    }
    this.element.setStyle(d);
  }
});

Effect.Highlight = Class.create(Effect.Base, {
  initialize: function(element) {
    this.element = $(element);
    if (!this.element) throw(Effect._elementDoesNotExistError);
    var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || { });
    this.start(options);
  },
  setup: function() {
    // Prevent executing on elements not in the layout flow
    if (this.element.getStyle('display')=='none') { this.cancel(); return; }
    // Disable background image during the effect
    this.oldStyle = { };
    if (!this.options.keepBackgroundImage) {
      this.oldStyle.backgroundImage = this.element.getStyle('background-image');
      this.element.setStyle({backgroundImage: 'none'});
    }
    if (!this.options.endcolor)
      this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff');
    if (!this.options.restorecolor)
      this.options.restorecolor = this.element.getStyle('background-color');
    // init color calculations
    this._base  = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));
    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));
  },
  update: function(position) {
    this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){
      return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); }.bind(this)) });
  },
  finish: function() {
    this.element.setStyle(Object.extend(this.oldStyle, {
      backgroundColor: this.options.restorecolor
    }));
  }
});

Effect.ScrollTo = function(element) {
  var options = arguments[1] || { },
  scrollOffsets = document.viewport.getScrollOffsets(),
  elementOffsets = $(element).cumulativeOffset();

  if (options.offset) elementOffsets[1] += options.offset;

  return new Effect.Tween(null,
    scrollOffsets.top,
    elementOffsets[1],
    options,
    function(p){ scrollTo(scrollOffsets.left, p.round()); }
  );
};

/* ------------- combination effects ------------- */

Effect.Fade = function(element) {
  element = $(element);
  var oldOpacity = element.getInlineOpacity();
  var options = Object.extend({
    from: element.getOpacity() || 1.0,
    to:   0.0,
    afterFinishInternal: function(effect) {
      if (effect.options.to!=0) return;
      effect.element.hide().setStyle({opacity: oldOpacity});
    }
  }, arguments[1] || { });
  return new Effect.Opacity(element,options);
};

Effect.Appear = function(element) {
  element = $(element);
  var options = Object.extend({
  from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0),
  to:   1.0,
  // force Safari to render floated elements properly
  afterFinishInternal: function(effect) {
    effect.element.forceRerendering();
  },
  beforeSetup: function(effect) {
    effect.element.setOpacity(effect.options.from).show();
  }}, arguments[1] || { });
  return new Effect.Opacity(element,options);
};

Effect.Puff = function(element) {
  element = $(element);
  var oldStyle = {
    opacity: element.getInlineOpacity(),
    position: element.getStyle('position'),
    top:  element.style.top,
    left: element.style.left,
    width: element.style.width,
    height: element.style.height
  };
  return new Effect.Parallel(
   [ new Effect.Scale(element, 200,
      { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }),
     new Effect.Opacity(element, { sync: true, to: 0.0 } ) ],
     Object.extend({ duration: 1.0,
      beforeSetupInternal: function(effect) {
        Position.absolutize(effect.effects[0].element);
      },
      afterFinishInternal: function(effect) {
         effect.effects[0].element.hide().setStyle(oldStyle); }
     }, arguments[1] || { })
   );
};

Effect.BlindUp = function(element) {
  element = $(element);
  element.makeClipping();
  return new Effect.Scale(element, 0,
    Object.extend({ scaleContent: false,
      scaleX: false,
      restoreAfterFinish: true,
      afterFinishInternal: function(effect) {
        effect.element.hide().undoClipping();
      }
    }, arguments[1] || { })
  );
};

Effect.BlindDown = function(element) {
  element = $(element);
  var elementDimensions = element.getDimensions();
  return new Effect.Scale(element, 100, Object.extend({
    scaleContent: false,
    scaleX: false,
    scaleFrom: 0,
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
    restoreAfterFinish: true,
    afterSetup: function(effect) {
      effect.element.makeClipping().setStyle({height: '0px'}).show();
    },
    afterFinishInternal: function(effect) {
      effect.element.undoClipping();
    }
  }, arguments[1] || { }));
};

Effect.SwitchOff = function(element) {
  element = $(element);
  var oldOpacity = element.getInlineOpacity();
  return new Effect.Appear(element, Object.extend({
    duration: 0.4,
    from: 0,
    transition: Effect.Transitions.flicker,
    afterFinishInternal: function(effect) {
      new Effect.Scale(effect.element, 1, {
        duration: 0.3, scaleFromCenter: true,
        scaleX: false, scaleContent: false, restoreAfterFinish: true,
        beforeSetup: function(effect) {
          effect.element.makePositioned().makeClipping();
        },
        afterFinishInternal: function(effect) {
          effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity});
        }
      });
    }
  }, arguments[1] || { }));
};

Effect.DropOut = function(element) {
  element = $(element);
  var oldStyle = {
    top: element.getStyle('top'),
    left: element.getStyle('left'),
    opacity: element.getInlineOpacity() };
  return new Effect.Parallel(
    [ new Effect.Move(element, {x: 0, y: 100, sync: true }),
      new Effect.Opacity(element, { sync: true, to: 0.0 }) ],
    Object.extend(
      { duration: 0.5,
        beforeSetup: function(effect) {
          effect.effects[0].element.makePositioned();
        },
        afterFinishInternal: function(effect) {
          effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);
        }
      }, arguments[1] || { }));
};

Effect.Shake = function(element) {
  element = $(element);
  var options = Object.extend({
    distance: 20,
    duration: 0.5
  }, arguments[1] || {});
  var distance = parseFloat(options.distance);
  var split = parseFloat(options.duration) / 10.0;
  var oldStyle = {
    top: element.getStyle('top'),
    left: element.getStyle('left') };
    return new Effect.Move(element,
      { x:  distance, y: 0, duration: split, afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      { x: -distance, y: 0, duration: split, afterFinishInternal: function(effect) {
        effect.element.undoPositioned().setStyle(oldStyle);
  }}); }}); }}); }}); }}); }});
};

Effect.SlideDown = function(element) {
  element = $(element).cleanWhitespace();
  // SlideDown need to have the content of the element wrapped in a container element with fixed height!
  var oldInnerBottom = element.down().getStyle('bottom');
  var elementDimensions = element.getDimensions();
  return new Effect.Scale(element, 100, Object.extend({
    scaleContent: false,
    scaleX: false,
    scaleFrom: window.opera ? 0 : 1,
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
    restoreAfterFinish: true,
    afterSetup: function(effect) {
      effect.element.makePositioned();
      effect.element.down().makePositioned();
      if (window.opera) effect.element.setStyle({top: ''});
      effect.element.makeClipping().setStyle({height: '0px'}).show();
    },
    afterUpdateInternal: function(effect) {
      effect.element.down().setStyle({bottom:
        (effect.dims[0] - effect.element.clientHeight) + 'px' });
    },
    afterFinishInternal: function(effect) {
      effect.element.undoClipping().undoPositioned();
      effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); }
    }, arguments[1] || { })
  );
};

Effect.SlideUp = function(element) {
  element = $(element).cleanWhitespace();
  var oldInnerBottom = element.down().getStyle('bottom');
  var elementDimensions = element.getDimensions();
  return new Effect.Scale(element, window.opera ? 0 : 1,
   Object.extend({ scaleContent: false,
    scaleX: false,
    scaleMode: 'box',
    scaleFrom: 100,
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
    restoreAfterFinish: true,
    afterSetup: function(effect) {
      effect.element.makePositioned();
      effect.element.down().makePositioned();
      if (window.opera) effect.element.setStyle({top: ''});
      effect.element.makeClipping().show();
    },
    afterUpdateInternal: function(effect) {
      effect.element.down().setStyle({bottom:
        (effect.dims[0] - effect.element.clientHeight) + 'px' });
    },
    afterFinishInternal: function(effect) {
      effect.element.hide().undoClipping().undoPositioned();
      effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom});
    }
   }, arguments[1] || { })
  );
};

// Bug in opera makes the TD containing this element expand for a instance after finish
Effect.Squish = function(element) {
  return new Effect.Scale(element, window.opera ? 1 : 0, {
    restoreAfterFinish: true,
    beforeSetup: function(effect) {
      effect.element.makeClipping();
    },
    afterFinishInternal: function(effect) {
      effect.element.hide().undoClipping();
    }
  });
};

Effect.Grow = function(element) {
  element = $(element);
  var options = Object.extend({
    direction: 'center',
    moveTransition: Effect.Transitions.sinoidal,
    scaleTransition: Effect.Transitions.sinoidal,
    opacityTransition: Effect.Transitions.full
  }, arguments[1] || { });
  var oldStyle = {
    top: element.style.top,
    left: element.style.left,
    height: element.style.height,
    width: element.style.width,
    opacity: element.getInlineOpacity() };

  var dims = element.getDimensions();
  var initialMoveX, initialMoveY;
  var moveX, moveY;

  switch (options.direction) {
    case 'top-left':
      initialMoveX = initialMoveY = moveX = moveY = 0;
      break;
    case 'top-right':
      initialMoveX = dims.width;
      initialMoveY = moveY = 0;
      moveX = -dims.width;
      break;
    case 'bottom-left':
      initialMoveX = moveX = 0;
      initialMoveY = dims.height;
      moveY = -dims.height;
      break;
    case 'bottom-right':
      initialMoveX = dims.width;
      initialMoveY = dims.height;
      moveX = -dims.width;
      moveY = -dims.height;
      break;
    case 'center':
      initialMoveX = dims.width / 2;
      initialMoveY = dims.height / 2;
      moveX = -dims.width / 2;
      moveY = -dims.height / 2;
      break;
  }

  return new Effect.Move(element, {
    x: initialMoveX,
    y: initialMoveY,
    duration: 0.01,
    beforeSetup: function(effect) {
      effect.element.hide().makeClipping().makePositioned();
    },
    afterFinishInternal: function(effect) {
      new Effect.Parallel(
        [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),
          new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),
          new Effect.Scale(effect.element, 100, {
            scaleMode: { originalHeight: dims.height, originalWidth: dims.width },
            sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})
        ], Object.extend({
             beforeSetup: function(effect) {
               effect.effects[0].element.setStyle({height: '0px'}).show();
             },
             afterFinishInternal: function(effect) {
               effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);
             }
           }, options)
      );
    }
  });
};

Effect.Shrink = function(element) {
  element = $(element);
  var options = Object.extend({
    direction: 'center',
    moveTransition: Effect.Transitions.sinoidal,
    scaleTransition: Effect.Transitions.sinoidal,
    opacityTransition: Effect.Transitions.none
  }, arguments[1] || { });
  var oldStyle = {
    top: element.style.top,
    left: element.style.left,
    height: element.style.height,
    width: element.style.width,
    opacity: element.getInlineOpacity() };

  var dims = element.getDimensions();
  var moveX, moveY;

  switch (options.direction) {
    case 'top-left':
      moveX = moveY = 0;
      break;
    case 'top-right':
      moveX = dims.width;
      moveY = 0;
      break;
    case 'bottom-left':
      moveX = 0;
      moveY = dims.height;
      break;
    case 'bottom-right':
      moveX = dims.width;
      moveY = dims.height;
      break;
    case 'center':
      moveX = dims.width / 2;
      moveY = dims.height / 2;
      break;
  }

  return new Effect.Parallel(
    [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),
      new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),
      new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })
    ], Object.extend({
         beforeStartInternal: function(effect) {
           effect.effects[0].element.makePositioned().makeClipping();
         },
         afterFinishInternal: function(effect) {
           effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); }
       }, options)
  );
};

Effect.Pulsate = function(element) {
  element = $(element);
  var options    = arguments[1] || { },
    oldOpacity = element.getInlineOpacity(),
    transition = options.transition || Effect.Transitions.linear,
    reverser   = function(pos){
      return 1 - transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2) + .5);
    };

  return new Effect.Opacity(element,
    Object.extend(Object.extend({  duration: 2.0, from: 0,
      afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }
    }, options), {transition: reverser}));
};

Effect.Fold = function(element) {
  element = $(element);
  var oldStyle = {
    top: element.style.top,
    left: element.style.left,
    width: element.style.width,
    height: element.style.height };
  element.makeClipping();
  return new Effect.Scale(element, 5, Object.extend({
    scaleContent: false,
    scaleX: false,
    afterFinishInternal: function(effect) {
    new Effect.Scale(element, 1, {
      scaleContent: false,
      scaleY: false,
      afterFinishInternal: function(effect) {
        effect.element.hide().undoClipping().setStyle(oldStyle);
      } });
  }}, arguments[1] || { }));
};

Effect.Morph = Class.create(Effect.Base, {
  initialize: function(element) {
    this.element = $(element);
    if (!this.element) throw(Effect._elementDoesNotExistError);
    var options = Object.extend({
      style: { }
    }, arguments[1] || { });

    if (!Object.isString(options.style)) this.style = $H(options.style);
    else {
      if (options.style.include(':'))
        this.style = options.style.parseStyle();
      else {
        this.element.addClassName(options.style);
        this.style = $H(this.element.getStyles());
        this.element.removeClassName(options.style);
        var css = this.element.getStyles();
        this.style = this.style.reject(function(style) {
          return style.value == css[style.key];
        });
        options.afterFinishInternal = function(effect) {
          effect.element.addClassName(effect.options.style);
          effect.transforms.each(function(transform) {
            effect.element.style[transform.style] = '';
          });
        };
      }
    }
    this.start(options);
  },

  setup: function(){
    function parseColor(color){
      if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff';
      color = color.parseColor();
      return $R(0,2).map(function(i){
        return parseInt( color.slice(i*2+1,i*2+3), 16 );
      });
    }
    this.transforms = this.style.map(function(pair){
      var property = pair[0], value = pair[1], unit = null;

      if (value.parseColor('#zzzzzz') != '#zzzzzz') {
        value = value.parseColor();
        unit  = 'color';
      } else if (property == 'opacity') {
        value = parseFloat(value);
        if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
          this.element.setStyle({zoom: 1});
      } else if (Element.CSS_LENGTH.test(value)) {
          var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/);
          value = parseFloat(components[1]);
          unit = (components.length == 3) ? components[2] : null;
      }

      var originalValue = this.element.getStyle(property);
      return {
        style: property.camelize(),
        originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0),
        targetValue: unit=='color' ? parseColor(value) : value,
        unit: unit
      };
    }.bind(this)).reject(function(transform){
      return (
        (transform.originalValue == transform.targetValue) ||
        (
          transform.unit != 'color' &&
          (isNaN(transform.originalValue) || isNaN(transform.targetValue))
        )
      );
    });
  },
  update: function(position) {
    var style = { }, transform, i = this.transforms.length;
    while(i--)
      style[(transform = this.transforms[i]).style] =
        transform.unit=='color' ? '#'+
          (Math.round(transform.originalValue[0]+
            (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() +
          (Math.round(transform.originalValue[1]+
            (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() +
          (Math.round(transform.originalValue[2]+
            (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() :
        (transform.originalValue +
          (transform.targetValue - transform.originalValue) * position).toFixed(3) +
            (transform.unit === null ? '' : transform.unit);
    this.element.setStyle(style, true);
  }
});

Effect.Transform = Class.create({
  initialize: function(tracks){
    this.tracks  = [];
    this.options = arguments[1] || { };
    this.addTracks(tracks);
  },
  addTracks: function(tracks){
    tracks.each(function(track){
      track = $H(track);
      var data = track.values().first();
      this.tracks.push($H({
        ids:     track.keys().first(),
        effect:  Effect.Morph,
        options: { style: data }
      }));
    }.bind(this));
    return this;
  },
  play: function(){
    return new Effect.Parallel(
      this.tracks.map(function(track){
        var ids = track.get('ids'), effect = track.get('effect'), options = track.get('options');
        var elements = [$(ids) || $$(ids)].flatten();
        return elements.map(function(e){ return new effect(e, Object.extend({ sync:true }, options)) });
      }).flatten(),
      this.options
    );
  }
});

Element.CSS_PROPERTIES = $w(
  'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' +
  'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +
  'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +
  'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +
  'fontSize fontWeight height left letterSpacing lineHeight ' +
  'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+
  'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +
  'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +
  'right textIndent top width wordSpacing zIndex');

Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;

String.__parseStyleElement = document.createElement('div');
String.prototype.parseStyle = function(){
  var style, styleRules = $H();
  if (Prototype.Browser.WebKit)
    style = new Element('div',{style:this}).style;
  else {
    String.__parseStyleElement.innerHTML = '<div style="' + this + '"></div>';
    style = String.__parseStyleElement.childNodes[0].style;
  }

  Element.CSS_PROPERTIES.each(function(property){
    if (style[property]) styleRules.set(property, style[property]);
  });

  if (Prototype.Browser.IE && this.include('opacity'))
    styleRules.set('opacity', this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);

  return styleRules;
};

if (document.defaultView && document.defaultView.getComputedStyle) {
  Element.getStyles = function(element) {
    var css = document.defaultView.getComputedStyle($(element), null);
    return Element.CSS_PROPERTIES.inject({ }, function(styles, property) {
      styles[property] = css[property];
      return styles;
    });
  };
} else {
  Element.getStyles = function(element) {
    element = $(element);
    var css = element.currentStyle, styles;
    styles = Element.CSS_PROPERTIES.inject({ }, function(results, property) {
      results[property] = css[property];
      return results;
    });
    if (!styles.opacity) styles.opacity = element.getOpacity();
    return styles;
  };
}

Effect.Methods = {
  morph: function(element, style) {
    element = $(element);
    new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || { }));
    return element;
  },
  visualEffect: function(element, effect, options) {
    element = $(element);
    var s = effect.dasherize().camelize(), klass = s.charAt(0).toUpperCase() + s.substring(1);
    new Effect[klass](element, options);
    return element;
  },
  highlight: function(element, options) {
    element = $(element);
    new Effect.Highlight(element, options);
    return element;
  }
};

$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+
  'pulsate shake puff squish switchOff dropOut').each(
  function(effect) {
    Effect.Methods[effect] = function(element, options){
      element = $(element);
      Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element, options);
      return element;
    };
  }
);

$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each(
  function(f) { Effect.Methods[f] = Element[f]; }
);

Element.addMethods(Effect.Methods);
//  Lightview 2.5.6 - 12-01-2011
//  Copyright (c) 2008-2011 Nick Stakenburg (http://www.nickstakenburg.com)
//
//  Licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License
//  http://creativecommons.org/licenses/by-nc-nd/3.0/

//  More information on this project:
//  http://www.nickstakenburg.com/projects/lightview/
var Scriptaculous = {Version: '1.8.3'}
Prototype.Version = "1.7";

var Lightview = {
  Version: '2.5.6',

  // Configuration
  options: {
    backgroundColor: '#ffffff',                            // Background color of the view
    border: 12,                                            // Size of the border
    buttons: {
      opacity: {                                           // Opacity of inner buttons
        disabled: 0.4,
        normal: 0.75,
        hover: 1
      },
      side: { display: true },                             // Toggle side buttons
      innerPreviousNext: { display: true },                // Toggle the inner previous and next button
      slideshow: { display: false },                        // Toggle slideshow button
      topclose: { side: 'right' }                          // 'right' or 'left'                    
    },
    controller: {                                          // The controller is used on sets
      backgroundColor: '#4d4d4d',
      border: 6,
      buttons: {
        innerPreviousNext: true,
        side: false
      },
      margin: 18,
      opacity: 0.7,
      radius: 6,
      setNumberTemplate: '#{position} of #{total}'
    },
    cyclic: false,                                         // Makes galleries cyclic, no end/begin
    images: '/media/kaminweltvarli/assets/style/lightview/',                        // The directory of the images, from this file
    imgNumberTemplate: 'Bild #{position} von #{total}',    // Want a different language? change it here
    keyboard: true,                                        // Toggle keyboard buttons
    menubarPadding: 6,                                     // Space between menubar and content in px
    overlay: {                                             // Overlay
      background: '#000',                                  // Background color, Mac Firefox & Mac Safari use overlay.png
      close: true,
      opacity: 0.85,
      display: true
    },
    preloadHover: false,                                   // Preload images on mouseover
    radius: 0,                                            // Corner radius of the border
    removeTitles: true,                                    // Set to false if you want to keep title attributes intact
    resizeDuration: 0.45,                                  // The duration of the resize effect in seconds
    slideshowDelay: 5,                                     // Delay in seconds before showing the next slide
    titleSplit: '::',                                      // The characters you want to split title with
    transition: function(pos) {                            // Or your own transition
      return ((pos/=0.5) < 1 ? 0.5 * Math.pow(pos, 4) :
        -0.5 * ((pos-=2) * Math.pow(pos,3) - 2));
    },
    viewport: true,                                        // Stay within the viewport, true is recommended
    zIndex: 5000,                                          // zIndex of #lightview, #overlay is this -1

    startDimensions: {                                     // Dimensions Lightview starts at
      width: 100,
      height: 100
    },
    closeDimensions: {                                     // Modify if you've changed the close button images
      large: { width: 77, height: 22 },
      small: { width: 25, height: 22 }
    },
    sideDimensions: {                                      // Modify if you've changed the side button images
      width: 16,
      height: 22
    },

    defaultOptions: {                                      // Default options for each type of view
      image: {
        menubar: 'top',
        closeButton: 'small',
				topclose: true,
				keyboard: true
      },
      gallery: {
        menubar: 'bottom',
        controls: true,
        closeButton: 'small',
				topclose: true,
				keyboard: true
      },
      ajax:   {
        width: 400,
        height: 300,
        menubar: 'top',
        closeButton: 'small',
        overflow: 'auto'
      },
      iframe: {
        width: 400,
        height: 300,
        menubar: 'top',
        scrolling: true,
        closeButton: 'small'
      },
      inline: {
        width: 400,
        height: 300,
        menubar: 'top',
        closeButton: 'small',
        overflow: 'auto'
      },
      flash: {
        width: 400,
        height: 300,
        menubar: 'bottom',
        closeButton: 'large'
      },
      quicktime: {
        width: 480,
        height: 220,
        autoplay: true,
        controls: true,
        closeButton: 'large'
      }
    }
  },
  classids: {
    quicktime: 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
    flash: 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'
  },
  codebases: {
    quicktime: 'http://www.apple.com/qtactivex/qtplugin.cab#version=7,5,5,0',
    flash: 'http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0'
  },
  errors: {
    requiresPlugin: "<div class='message'> The content your are attempting to view requires the <span class='type'>#{type}</span> plugin.</div><div class='pluginspage'><p>Please download and install the required plugin from:</p><a href='#{pluginspage}' target='_blank'>#{pluginspage}</a></div>"
  },
  mimetypes: {
    quicktime: 'video/quicktime',
    flash: 'application/x-shockwave-flash'
  },
  pluginspages: {
    quicktime: 'http://www.apple.com/quicktime/download',
    flash: 'http://www.adobe.com/go/getflashplayer'
  },
  // used with auto detection
  typeExtensions: {
    flash: 'swf',
    image: 'bmp gif jpeg jpg png',
    iframe: 'asp aspx cgi cfm htm html jsp php pl php3 php4 php5 phtml rb rhtml shtml txt',
    quicktime: 'avi mov mpg mpeg movie'
  }
};

eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(9(){9 1B(a){q b={};O.5G(a).V(9(c){b[c]=a[c]+"y"});F b}q l=!!S.7V("2R").4w,2f=12.1C.2g&&9(a){q b=(n 3P("7W ([\\\\d.]+)")).7X(a);F b?3Q(b[1]):-1}(2E.3R)<7,2h=12.1C.4x&&!S.3i,2p=12.1C.5H&&9(a){q b=2E.3R.3j(/7Y\\:(\\d+)/);F b&&3Q(b[1])<2}(2E.3R),3S=!!2E.3R.3j(/7Z/i)&&(2h||2p);O.17(L,{80:"1.7",81:"1.8.3",G:{R:"4y",2S:"I"},4z:9(a){D(82 1K[a]=="83"||6.4A(1K[a].84)<6.4A(6["5I"+a])){85"L 86 "+a+" >= "+6["5I"+a]}},4A:9(a){q b=a.2q(/5J.*|\\./g,"");b=3T(b+"0".87(4-b.1m));F a.1P("5J")>-1?b-1:b},4B:9(){6.4z("12"),!!1K.M&&!1K.5K&&6.4z("5K");D(/^(88?:\\/\\/|\\/)/.3U(6.o.W)){6.W=6.o.W}1f{q a=/I(?:-[\\w\\d.]+)?\\.89(.*)/;6.W=(($$("8a[1h]").5L(9(b){F b.1h.3j(a)})||{}).1h||"").2q(a,"")+6.o.W}D(!l){D(S.4C>=8&&!S.5M.2T){S.5M.8b("2T","8c:8d-8e-8f:8g","#4D#5N")}1f{q a=S.8h();a.8i="2T\\\\:*{8j:3k(#4D#5N)}"}}},4E:9(){6.2F=6.o.2F,6.X=6.2F>6.o.X?6.2F:6.o.X,6.1u=6.o.1u,6.1D=6.o.1D,6.3V()}}),O.17(L,{5O:14,1R:9(){q a=3l.8k;a.4F++,a.4F==6.5O&&11.4G.5P(S.1S,"I:5Q")}}),L.1R.4F=0,O.17(L,{3V:9(){6.I=n z("E",{2r:"I"});q a,b,c=1B(6.1D);2h&&(6.I.P=9(){6.r("Y:-2U;U:-2U;18:1E;");F 6},6.I.Q=9(){6.r("18:1i");F 6},6.I.1i=9(){F 6.1v("18")=="1i"&&3Q(6.1v("U").2q("y",""))>-5R}),$(S.1S).B(6.22=(n z("E",{2r:"5S"})).r({2s:6.o.2s-1,R:!2p&&!2f?"3W":"2G",2V:3S?"3k("+6.W+"22.1g) U Y 2W":6.o.22.2V}).1a(3S?1:6.o.22.1q).P()).B(6.I.r({2s:6.o.2s,U:"-2U",Y:"-2U"}).1a(0).B(6.5T=(n z("E",{C:"8l"})).B(6.3m=(n z("2X",{C:"8m"})).B(6.5U=(n z("1o",{C:"8n"})).r(b=O.17({1w:-1*6.1D.u+"y"},c)).B(6.3X=(n z("E",{C:"4H"})).r(O.17({1w:6.1D.u+"y"},c)).B(n z("E",{C:"1r"})))).B(6.5V=(n z("1o",{C:"8o"})).r(O.17({5W:-1*6.1D.u+"y"},c)).B(6.3Y=(n z("E",{C:"4H"})).r(b).B(n z("E",{C:"1r"}))))).B(6.5X=(n z("E",{C:"5Y"})).B(6.3Z=(n z("E",{C:"4H 8p"})).B(6.8q=n z("E",{C:"1r"})))).B((n z("2X",{C:"8r"})).B((n z("1o",{C:"5Z 8s"})).B(a=(n z("E",{C:"8t"})).r({v:6.X+"y"}).B((n z("2X",{C:"60 8u"})).B((n z("1o",{C:"61"})).B(n z("E",{C:"23"})).B((n z("E",{C:"2H"})).r({Y:6.X+"y"})))).B(n z("E",{C:"62"})).B((n z("2X",{C:"60 8v"})).B((n z("1o",{C:"61"})).r("1x-U: "+ -1*6.X+"y").B(n z("E",{C:"23"})).B((n z("E",{C:"2H"})).r("Y: "+ -1*6.X+"y")))))).B(6.40=(n z("1o",{C:"8w"})).r("v: "+(8x-6.X)+"y").B((n z("E",{C:"8y"})).B((n z("E",{C:"63"})).r("1x-U: "+6.X+"y").B(6.2t=(n z("E",{C:"8z"})).1a(0).r("2Y: 0 "+6.X+"y").B(6.64=n z("E",{C:"8A 2H"})).B(6.1b=(n z("E",{C:"8B 65"})).B(6.2u=(n z("E",{C:"1r 66"})).r(1B(6.o.1u.41)).r({2V:6.o.J}).1a(6.o.1p.1q.2I)).B(6.2v=(n z("2X",{C:"8C"})).B(6.4I=(n z("1o",{C:"8D"})).B(6.1s=n z("E",{C:"8E"})).B(6.1T=n z("E",{C:"8F"}))).B(6.4J=(n z("E",{C:"8G"})).B(6.3n=(n z("1o",{C:"8H"})).B(n z("E"))).B(6.42=(n z("1o",{C:"8I"})).B(6.8J=(n z("E",{C:"1r"})).1a(6.o.1p.1q.2I).r({J:6.o.J}).1y(6.W+"8K.1g",{J:6.o.J})).B(6.8L=(n z("E",{C:"1r"})).1a(6.o.1p.1q.2I).r({J:6.o.J}).1y(6.W+"8M.1g",{J:6.o.J}))).B(6.2i=(n z("1o",{C:"8N"})).B(6.2J=(n z("E",{C:"1r"})).1a(6.o.1p.1q.2I).r({J:6.o.J}).1y(6.W+"67.1g",{J:6.o.J})))))).B(6.68=n z("E",{C:"8O "}))))).B(6.2Z=(n z("E",{C:"69"})).B(6.8P=(n z("E",{C:"1r"})).r("2V: 3k("+6.W+"2Z.4K) U Y 43-2W")))).B((n z("1o",{C:"5Z 8Q"})).B(a.8R(!0))).B(6.1F=(n z("1o",{C:"8S"})).P().r("1x-U: "+6.X+"y; 2V: 3k("+6.W+"8T.4K) U Y 2W"))))).B((n z("E",{2r:"3o"})).P());q d=n 1U;d.1j=9(){d.1j=12.24,6.1D={u:d.u,v:d.v};q a=1B(6.1D),b;6.3m.r({1L:0-(d.v/2).1V()+"y",v:d.v+"y"}),6.5U.r(b=O.17({1w:-1*6.1D.u+"y"},a)),6.3X.r(O.17({1w:a.u},a)),6.5V.r(O.17({5W:-1*6.1D.u+"y"},a)),6.3Y.r(b),6.1R()}.H(6),d.1h=6.W+"26.1g",$w("2t 1s 1T 3n").3p(9(a){6[a].r({J:6.o.J})}.H(6));q e=6.5T.27(".23");$w("6a 6b bl 4L").V(9(a,b){6.2F>0?6.4M(e[b],a):e[b].B(n z("E",{C:"2H"})),e[b].r({u:6.X+"y",v:6.X+"y"}).6c("23"+a.1z()),6.1R()}.H(6)),6.I.27(".62",".2H",".63").30("r",{J:6.o.J});q f={};$w("26 1c 1W").V(9(a){6[a+"31"].2K=a;q b=6.W+a+".1g";a=="1W"?(f[a]=n 1U,f[a].1j=9(){f[a].1j=12.24,6.1u[a]={u:f[a].u,v:f[a].v};q c=6.o.1p.1W.2K,d=O.17({"4N":c,1L:6.1u[a].v+"y"},1B(6.1u[a]));d["2Y"+c.1z()]=6.X+"y",6[a+"31"].r(d),6.5X.r({v:f[a].v+"y",U:-1*6.1u[a].v+"y"}),6[a+"31"].4O().1y(b).r(1B(6.1u[a])),6.1R()}.H(6),f[a].1h=6.W+a+".1g"):6[a+"31"].1y(b)},6);q g={};$w("41 4P").V(9(a){g[a]=n 1U,g[a].1j=9(){g[a].1j=12.24,6.1u[a]={u:g[a].u,v:g[a].v},6.1R()}.H(6),g[a].1h=6.W+"6d"+a+".1g"},6);q h=n 1U;h.1j=9(){h.1j=12.24,6.2Z.r({u:h.u+"y",v:h.v+"y",1L:-0.5*h.v+0.5*6.X+"y",1w:-0.5*h.u+"y"}),6.1R()}.H(6),h.1h=6.W+"2Z.4K";q i=n 1U;i.1j=9(a){i.1j=12.24;q b={u:i.u+"y",v:i.v+"y"};6.2i.r(b),6.2J.r(b),6.1R()}.H(6),i.1h=6.W+"6e.1g",$w("26 1c").V(9(a){q b=a.1z(),c=n 1U;c.1j=9(){c.1j=12.24,6["32"+b+"33"].r({u:c.u+"y",v:c.v+"y"}),6.1R()}.H(6),c.1h=6.W+"8U"+a+".1g",6["32"+b+"33"].1F=a},6),$w("2i 42 3n").V(9(a){6[a].P=6[a].P.1k(9(a,b){6.2L.R="2G",a(b);F 6}),6[a].Q=6[a].Q.1k(9(a,b){6.2L.R="8V",a(b);F 6})},6),6.I.27("*").30("r",{2s:6.o.2s+1}),6.I.P(),6.1R()},6f:9(){M.2j.2k("I").3p(9(a){a.6g()}),6.1G=1t,6.m.1H()?(6.6h=6.6i,6.N&&!6.N.1i()&&(6.N.r("18:1E").Q(),6.2M.1a(0))):(6.6h=1t,6.N.P()),3T(6.3Z.1v("1L"))<6.1u.1W.v&&6.4Q(!1),6.6j(),6.6k(),n M.11({G:6.G,1d:9(){$w("U 3q").V(9(a){q b=a.1z();6["34"+b].1X();q c={};6["34"+b]=(n z("E",{C:"8W"+b})).P(),c[a]=6["34"+b],6.2t.B(c)}.H(6))}.H(6)}),6.4R(),6.13=1t},4S:9(){6.3r&&6.3s&&(6.3s.B({6l:6.3r.r({28:6.3r.6m})}),6.3s.1X(),6.3s=1t)},Q:9(a){6.1n=1t;q b=O.6n(a);D(O.6o(a)||b){D(b&&a.35("#")){6.Q({10:a,o:O.17({44:!0},3l[1]||{})});F}6.1n=$(a);D(!6.1n){F}6.1n.8X(),6.m=6.1n.1M||n L.3t(6.1n)}1f{a.10?(6.1n=$(S.1S),6.m=n L.3t(a)):O.6p(a)&&(6.1n=6.45(6.m.1N)[a],6.m=6.1n.1M)}D(6.m.10){6.6f();D(6.m.1Y()||6.m.1H()){6.6q(6.m.1N),6.13=6.4T(6.m.1N),6.m.1H()&&(6.46=6.13.1m>1?6.6r:0,6.2w=6.13.8Y(9(a){F a.2x()}))}6.3u(),6.6s();D(6.m.10!="#3o"&&O.5G(L.47).6t(" ").1P(6.m.T)>=0){D(!L.47[6.m.T]){$("3o").1l((n 48(6.8Z.90)).3i({T:6.m.T.1z(),4U:6.4V[6.m.T]}));q c=$("3o").1Z();6.Q({10:"#3o",1s:6.m.T.1z()+" 91 92",o:c});F!1}}q d=O.17({1b:"3q",1W:!1,4W:"93",3v:6.m.1Y()&&6.o.1p.3v.28,4X:6.o.4X,2i:6.m.1Y()&&6.o.1p.2i.28||6.2w,29:"1E",6u:6.o.22.94,2y:6.o.2y},6.o.95[6.m.T]||{});6.m.o=O.17(d,6.m.o),6.m.1H()&&(6.m.o.1W=6.13.1m<=1),!(6.m.1s||6.m.1T||6.13&&6.13.1m>1)&&6.m.o.1W&&(6.m.o.1b=!1),6.1I="34"+(6.m.o.1b=="U"?"6v":"6w");D(6.m.2x()){D(!l&&!6.m.6x){6.m.6x=!0;q e=(n z("2T:2N",{1h:6.m.10,28:"96"})).r("v:4Y;u:4Y;");$(S.1S).B(e),z.1X.2z(0.1,e)}D(6.m.1Y()||6.m.1H()){6.R=6.13.1P(6.m),6.6y()}6.1O=6.m.49;D(6.1O){6.4a()}1f{6.4Z();q e=n 1U;e.1j=9(){e.1j=12.24,6.4b(),6.1O={u:e.u,v:e.v},6.4a()}.H(6),e.1h=6.m.10}}1f{6.m.1H()&&(6.R=6.13.1P(6.m)),6.1O=6.m.o.6z?S.2y.1Z():{u:6.m.o.u,v:6.m.o.v},6.4a()}}},4c:9(){9 a(a,b,c){a=$(a);q d=1B(c);a.1l((n z("6A",{2r:"2a",1h:b,97:"",98:"43"})).r(d))}q b=9(){9 c(b,c,d){b=$(b);q e=1B(d),f=n 1U;f.1j=9(){2R=n z("2R",e),b.1l(2R);3w{q g=2R.4w("2d");g.99(f,0,0,d.u,d.v)}3x(h){a(b,c,d)}}.H(6),f.1h=c}9 b(a,b,c){a=$(a);q d=O.17({"4N":"Y"},1B(c)),e=(n z("2T:2N",{1h:b,2r:"2a"})).r(d);a.1l(e),e.4d=e.4d}F 12.1C.2g?b:c}();F 9(){q c=6.6B(6.m.10),d=6.1G||6.1O;D(6.m.2x()){q e=1B(d);6[6.1I].r(e),6.1G?b(6[6.1I],6.m.10,d):a(6[6.1I],6.m.10,d)}1f{D(6.m.51()){4e(6.m.T){2l"3y":q f=O.52(6.m.o.3y)||{},g=9(){6.4b(),6.m.o.44&&(6[6.1I].r({u:"1A",v:"1A"}),6.1O=6.53(6[6.1I])),n M.11({G:6.G,1d:6.4f.H(6)})}.H(6);f.4g?f.4g=f.4g.1k(9(a,b){g(),a(b)}):f.4g=g,6.4Z(),n 9a.9b(6[6.1I],6.m.10,f);36;2l"2b":6.1G&&(d.v-=6.2O.v),6[6.1I].1l(6.2b=(n z("2b",{9c:0,9d:0,1h:6.m.10,2r:"2a",20:"9e"+(6C.9f()*9g).1V(),6D:6.m.o&&6.m.o.6D?"1A":"43"})).r(O.17({X:0,1x:0,2Y:0},1B(d))));36;2l"4h":q h=6.m.10,i=$(h.54(h.1P("#")+1));D(!i||!i.3z){F}q j=i.1Z();i.B({6l:6.3s=(n z(i.3z)).P()}),i.6m=i.1v("28"),6.3r=i.Q(),6[6.1I].1l(6.3r),6[6.1I].27("27, 38, 55").V(9(a){6.3A.V(9(b){b.1n==a&&a.r({18:b.18})})}.H(6)),6.m.o.44&&(6.1O=j,n M.11({G:6.G,1d:6.4f.H(6)}))}}1f{q k={1J:"38",2r:"2a",u:d.u,v:d.v};4e(6.m.T){2l"3B":O.17(k,{4U:6.4V[6.m.T],3a:[{1J:"2c",20:"6E",2m:6.m.o.6E},{1J:"2c",20:"6F",2m:"9h"},{1J:"2c",20:"N",2m:6.m.o.6G},{1J:"2c",20:"9i",2m:!0},{1J:"2c",20:"1h",2m:6.m.10},{1J:"2c",20:"6H",2m:6.m.o.6H||!1}]}),O.17(k,12.1C.2g?{9j:6.9k[6.m.T],9l:6.9m[6.m.T]}:{2v:6.m.10,T:6.6I[6.m.T]});36;2l"3C":O.17(k,{2v:6.m.10,T:6.6I[6.m.T],9n:"9o",4W:6.m.o.4W,4U:6.4V[6.m.T],3a:[{1J:"2c",20:"9p",2m:6.m.10},{1J:"2c",20:"9q",2m:"9r"}]}),6.m.o.6J&&k.3a.3D({1J:"2c",20:"9s",2m:6.m.o.6J})}6[6.1I].r(1B(d)).1l(6.56(k)).r("18:1E").Q(),6.m.4i()&&9(){3w{"6K"6L $("2a")&&$("2a").6K(6.m.o.6G)}3x(a){}}.H(6).5P()}}}}(),53:9(a){a=$(a);q b=a.9t(),c=[],d=[];b.3D(a),b.V(9(b){D(b==a||!b.1i()){c.3D(b),d.3D({28:b.1v("28"),R:b.1v("R"),18:b.1v("18")}),b.r({28:"9u",R:"2G",18:"1i"})}});q e={u:a.9v,v:a.9w};c.V(9(a,b){a.r(d[b])});F e},4j:9(){q a=$("2a");D(a){4e(a.3z.4k()){2l"38":D(12.1C.4x&&6.m.4i()){3w{a.6M()}3x(b){}a.9x=""}a.6N?a.1X():a=12.24;36;2l"2b":a.1X(),12.1C.5H&&1K.6O.2a&&57 1K.6O.2a;36;4D:a.1X()}}$w("6w 6v").V(9(a){6["34"+a].r("u:1A;v:1A;").1l("").P()},6)},6P:12.K,4a:9(){n M.11({G:6.G,1d:6.4l.H(6)})},4l:9(){6.2P(),6.m.58()||6.4b(),6.m.o.44&&6.m.6Q()||6.m.58()||6.4f(),6.m.4m()||n M.11({G:6.G,1d:6.4c.H(6)}),6.m.o.1W&&n M.11({G:6.G,1d:6.4Q.H(6,!0)})},6R:9(){n M.11({G:6.G,1d:6.6S.H(6)}),6.m.4m()&&n M.11({2z:0.2,G:6.G,1d:6.4c.H(6)}),6.3b&&n M.11({G:6.G,1d:6.6T.H(6)}),(6.m.4i()||6.m.9y())&&n M.11({G:6.G,2z:0.1,1d:z.r.H(6,6[6.1I],"18:1i")})},2n:9(){M.2j.2k(L.G.2S).59.1m||6.Q(6.2A().2n)},1c:9(){M.2j.2k(L.G.2S).59.1m||6.Q(6.2A().1c)},4f:9(){6.6P();q a=6.5a(),b=6.6U();D(6.m.o.2y&&(a.u>b.u||a.v>b.v)){D(6.m.o.6z){6.1G=b,6.2P(),a=b}1f{q c=6.6V(),d=b;D(6.m.4n()){q e=[b.v/c.v,b.u/c.u,1].9z();6.1G={u:(6.1O.u*e).1V(),v:(6.1O.v*e).1V()}}1f{6.1G={u:c.u>d.u?d.u:c.u,v:c.v>d.v?d.v:c.v}}6.2P(),a=O.52(6.1G),6.m.4n()&&(a.v+=6.2O.v)}}1f{6.2P(),6.1G=1t}6.5b(a)},3E:9(a){6.5b(a,{1Q:0})},5b:9(){q a,b,c,d,e,f,g,h=9(){9 g(f){d=(a.u+f*b).3F(0),e=(a.v+f*c).3F(0)}q d,e,h;2f?h=9(d){6.I.r({u:(a.u+d*b).3F(0)+"y",v:(a.v+d*c).3F(0)+"y"}),6.40.r({v:e-1*6.X+"y"})}:2p?h=9(a){q b=6.4o(),c=S.2y.6W();6.I.r({R:"2G",1w:0,1L:0,u:d+"y",v:e+"y",Y:(c[0]+b.u/2-d/2).3G()+"y",U:(c[1]+b.v/2-e/2).3G()+"y"}),6.40.r({v:e-1*6.X+"y"})}:h=9(a){6.I.r({R:"3W",u:d+"y",v:e+"y",1w:((0-d)/2).1V()+"y",1L:((0-e)/2-f).1V()+"y"}),6.40.r({v:e-1*6.X+"y"})};F 9(a){g.3c(6,a),h.3c(6,a)}}();F 9(i){q j=3l[1]||{};a=6.I.1Z(),g=2*6.X,u=i.u?i.u+g:a.u,v=i.v?i.v+g:a.v,6.5c();D(a.u==u&&a.v==v){n M.11({G:6.G,1d:6.5d.H(6,i)})}1f{q k={u:u+"y",v:v+"y"};b=u-a.u,c=v-a.v,d=3T(6.I.1v("1w").2q("y","")),e=3T(6.I.1v("1L").2q("y","")),f=6.N.1i()?6.46/2:0,2f||O.17(k,{1w:0-u/2+"y",1L:0-v/2+"y"}),j.1Q==0?h.3c(6,1):6.5e=n M.6X(6.I,0,1,O.17({1Q:6.o.9A,G:6.G,6Y:6.o.6Y,1d:6.5d.H(6,i)},j),h.H(6))}}}(),5d:9(a){D(6.2O){q b=6[6.1I],c;6.m.o.29=="1A"&&(c=b.1Z()),b.r({v:a.v-6.2O.v+"y",u:a.u+"y"});D(6.m.o.29!="1E"&&(6.m.58()||6.m.6Q())){D(12.1C.2g){D(6.m.o.29=="1A"){q d=b.1Z();b.r("29:1i");q e={6Z:"1E",70:"1E"},f=0,g=15;c.v>a.v&&(e.70="1A",e.u=d.u-g,e.9B="71",f=g),c.u-f>a.u&&(e.6Z="1A",e.v=d.v-g,e.9C="71"),b.r(e)}1f{b.r({29:6.m.o.29})}}1f{b.r({29:6.m.o.29})}}1f{b.r("29:1E")}6.3u(),6.5e=1t,6.6R()}},6S:9(){n M.11({G:6.G,1d:6.5c.H(6)}),n M.11({G:6.G,1d:9(){6[6.1I].Q(),6.2P(),6.1b.1i()&&6.1b.r("18:1i").1a(1)}.H(6)}),n M.9D([n M.72(6.2t,{73:!0,5f:0,5g:1}),n M.5h(6.3m,{73:!0})],{G:6.G,1Q:0.25,1d:9(){6.1n&&6.1n.4G("I:9E")}.H(6)}),(6.m.1Y()||6.2w&&6.o.N.1p.2K)&&n M.11({G:6.G,1d:6.74.H(6)})},6k:9(){9 b(a){6.2t.1a(a),6.3m.1a(a)}9 a(){6.4S(),6.4j(),6.3Z.r({1L:6.1u.1W.v+"y"})}F 9(){6.I.1i()?n M.6X(6.I,1,0,{1Q:0.2,G:6.G,1d:a.H(6)},b.H(6)):(6.2t.1a(0),6.3m.1a(0),6.4j())}}(),75:9(){$w("4J 2v 4I 1s 1T 3n 42 2i 2u").V(9(a){z.P(6[a])},6),6.1b.r("18:1E").1a(0)},2P:9(){6.75(),6.m.o.1b?6.1b.Q():(6.2O={u:0,v:0},6.5i=0,6.1b.P());D(6.m.1s||6.m.1T){6.4I.Q(),6.2v.Q()}6.m.1s&&6.1s.1l(6.m.1s).Q(),6.m.1T&&6.1T.1l(6.m.1T).Q(),6.13&&6.13.1m>1&&(6.m.1H()?(6.2e.1l((n 48(6.o.N.76)).3i({R:6.R+1,5j:6.13.1m})),6.N.1v("18")=="1E"&&(6.N.r("18:1i"),6.5k&&M.2j.2k("I").1X(6.5k),6.5k=n M.5h(6.2M,{G:6.G,1Q:0.1}))):(6.2v.Q(),6.m.2x()&&(6.4J.Q(),6.3n.Q().4O().1l((n 48(6.o.9F)).3i({R:6.R+1,5j:6.13.1m})),6.m.o.2i&&(6.2J.Q(),6.2i.Q()))));q a=6.m.1H();D((6.m.o.3v||a)&&6.13.1m>1){q b={26:6.o.2B||6.R!=0,1c:6.o.2B||(6.m.1Y()||a)&&6.2A().1c!=0};$w("26 1c").V(9(c){q d=c.1z(),e=b[c]?"77":"1A";a?6["N"+d].r({5l:e}).1a(b[c]?1:6.o.1p.1q.5m):6["32"+d+"33"].r({5l:e}).1a(b[c]?6.o.1p.1q.2I:6.o.1p.1q.5m)}.H(6)),(6.m.o.3v||6.o.N.3v)&&6.42.Q()}6.3H.1a(6.2w?1:6.o.1p.1q.5m).r({5l:6.2w?"77":"1A"}),6.78(),6.1b.9G().5L(z.1i)||(6.1b.P(),6.m.o.1b=!1),6.79()},78:9(){q a=6.1u.4P.u,b=6.1u.41.u,c=6.1G?6.1G.u:6.1O.u,d=9H,e=0,f=6.m.o.2u||"41",g=6.o.9I;6.m.o.1W||6.m.1H()||!6.m.o.2u?g=1t:c>=d+a&&c<d+b?(g="4P",e=a):c>=d+b&&(g=f,e=6.1u[f].u),e>0?(6.2v.Q(),6.2u.r({u:e+"y"}).Q()):6.2u.P(),g&&6.2u.1y(6.W+"6d"+g+".1g",{J:6.o.J}),6.5i=e},4Z:9(){6.2Z.Q()},4b:9(){6.7a&&M.2j.2k("I").1X(6.7a),n M.7b(6.2Z,{1Q:0.2,G:6.G,2z:0.2})},7c:9(){D(6.m.2x()){q a=6.o.2B||6.R!=0,b=6.o.2B||(6.m.1Y()||6.m.1H())&&6.2A().1c!=0;6.3X[a?"Q":"P"](),6.3Y[b?"Q":"P"]();q c=6.1G||6.1O;6.1F.r({v:c.v+"y",1L:6.X+(6.m.o.1b=="U"?6.1b.5n():0)+"y"});q d=(c.u/2-1+6.X).3G();a&&(6.1F.B(6.3d=(n z("E",{C:"1r 9J"})).r({u:d+"y"})),6.3d.2K="26"),b&&(6.1F.B(6.3e=(n z("E",{C:"1r 9K"})).r({u:d+"y"})),6.3e.2K="1c"),(a||b)&&6.1F.Q()}},74:9(){6.m&&6.o.1p.2K.28&&6.m.2x()&&(6.7c(),6.1F.Q())},5c:9(){6.1F.1l("").P(),6.3X.P().r({1w:6.1D.u+"y"}),6.3Y.P().r({1w:-1*6.1D.u+"y"})},6s:9(){9 a(){6.I.1a(1)}2h||(a=a.1k(9(a,b){a(b),6.I.Q()}));F 9(){6.I.1v("1q")==0&&(6.o.22.28?n M.5h(6.22,{1Q:0.2,5f:0,5g:3S?1:6.o.22.1q,G:6.G,9L:6.5o.H(6),1d:a.H(6)}):a.3c(6))}}(),P:9(){12.1C.2g&&6.2b&&6.m.4m()&&6.2b.1X();D(2h&&6.m.4i()){q a=$$("38#2a")[0];D(a){3w{a.6M()}3x(b){}}}D(6.I.1v("1q")!=0){6.2Q(),6.1F.P(),(!12.1C.2g||!6.m.4m())&&6.2t.P();D(M.2j.2k("5p").59.1m>0){F}M.2j.2k("I").V(9(a){a.6g()}),n M.11({G:6.G,1d:6.4S.H(6)}),n M.72(6.I,{1Q:0.1,5f:1,5g:0,G:{R:"4y",2S:"5p"}}),n M.7b(6.22,{1Q:0.16,G:{R:"4y",2S:"5p"},1d:6.7d.H(6)})}},7d:9(){6.4j(),6.I.P(),6.2t.1a(0).Q(),6.1F.1l("").P(),6.64.1l("").P(),6.68.1l("").P(),6.4R(),6.7e(),n M.11({G:6.G,1d:6.3E.H(6,6.o.9M)}),n M.11({G:6.G,1d:9(){6.1n&&6.1n.4G("I:1E"),$w("1n 13 m 1G 2w 9N 34").3p(9(a){6[a]=1t}.H(6))}.H(6)})},79:9(){6.1b.r("2Y:0;");q a={},b=6[(6.1G?"9O":"i")+"9P"].u;6.1b.r({u:b+"y"}),6.2v.r({u:b-6.5i-1+"y"}),a=6.53(6.1b);D(6.m.o.1b){a.v+=6.o.5q;4e(6.m.o.1b){2l"3q":6.1b.r("2Y:"+6.o.5q+"y 0 0 0");36;2l"U":6.1b.r("2Y: 0 0 "+6.o.5q+"y 0")}}6.1b.r({u:"7f%"}),6.2O=6.m.o.1b?a:{u:a.u,v:0}},3u:9(){9 c(){a=6.I.1Z(),b=6.N.1i()?6.46/2:0}q a,b,d;2f?d=9(){6.I.r({U:"50%",Y:"50%"})}:2h||2p?d=9(){q b=6.4o(),c=S.2y.6W();6.I.r({1w:0,1L:0,Y:(c[0]+b.u/2-a.u/2).3G()+"y",U:(c[1]+b.v/2-a.v/2).3G()+"y"})}:d=9(){6.I.r({R:"3W",Y:"50%",U:"50%",1w:(0-a.u/2).1V()+"y",1L:(0-a.v/2-b).1V()+"y"})};F 9(){c.3c(6),d.3c(6)}}(),7g:9(){6.2Q(),6.3b=!0,6.1c.H(6).2z(0.25),6.2J.1y(6.W+"6e.1g",{J:6.o.J}).P(),6.3H.1y(6.W+"7h.1g",{J:6.o.N.J})},2Q:9(){6.3b&&(6.3b=!1),6.5r&&9Q(6.5r),6.2J.1y(6.W+"67.1g",{J:6.o.J}),6.3H.1y(6.W+"7i.1g",{J:6.o.N.J})},5s:9(){(!6.m.1H()||6.2w)&&6[(6.3b?"4p":"4E")+"9R"]()},6T:9(){6.3b&&(6.5r=6.1c.H(6).2z(6.o.9S))},9T:9(){$$("a[2C~=I], 3f[2C~=I]").V(9(a){q b=a.1M;b&&(b.3I&&a.7j("1s",b.3I),a.1M=1t)})},45:9(a){q b=a.1P("][");b>-1&&(a=a.54(0,b+1));F $$(\'a[1N^="\'+a+\'"], 3f[1N^="\'+a+\'"]\')},4T:9(a){F 6.45(a).7k("1M")},7l:9(){$(S.1S).19("2o",6.7m.1e(6)),$w("2D 3J").V(9(a){6.1F.19(a,9(a){q b=a.3g("E");b&&((6.3d&&6.3d==b||6.3e&&6.3e==b)&&6.4q(a))}.1e(6))}.H(6)),6.1F.19("2o",9(a){q b=a.3g("E");D(b){q c=6.3d&&6.3d==b?"2n":6.3e&&6.3e==b?"1c":1t;c&&6[c].1k(9(a,b){6.2Q(),a(b)}).H(6)()}}.1e(6)),$w("26 1c").V(9(a){q b=a.1z(),c=9(a,b){6.2Q(),a(b)},d=9(a,b){q c=b.1n().1F;(c=="26"&&(6.o.2B||6.R!=0)||c=="1c"&&(6.o.2B||(6.m.1Y()||6.m.1H())&&6.2A().1c!=0))&&a(b)};6[a+"31"].19("2D",6.4q.1e(6)).19("3J",6.4q.1e(6)).19("2o",6[a=="1c"?a:"2n"].1k(c).1e(6)),6["32"+b+"33"].19("2o",6[a=="1c"?a:"2n"].1k(d).1k(c).1e(6)).19("2D",z.1a.7n(6["32"+b+"33"],6.o.1p.1q.7o).1k(d).1e(6)).19("3J",z.1a.7n(6["32"+b+"33"],6.o.1p.1q.2I).1k(d).1e(6)),6["N"+b].19("2o",6[a=="1c"?a:"2n"].1k(d).1k(c).1e(6))},6);q a=[6.2u,6.2J];2h?a.30("1a",1):a.V(9(a){a.19("2D",z.1a.H(6,a,6.o.1p.1q.7o)).19("3J",z.1a.H(6,a,6.o.1p.1q.2I))},6),6.2J.19("2o",6.5s.1e(6)),6.3H.19("2o",6.5s.1e(6));D(2h||2p){q b=9(a,b){6.I.1v("U").5t(0)!="-"&&a(b)};11.19(1K,"3K",6.3u.1k(b).1e(6)),11.19(1K,"3E",6.3u.1k(b).1e(6))}2p&&11.19(1K,"3E",6.5o.1e(6));D(2f){9 c(){6.N&&6.N.r({Y:((S.7p.9U||0)+S.2y.7q()/2).1V()+"y"})}11.19(1K,"3K",c.1e(6)),11.19(1K,"3E",c.1e(6))}6.o.9V&&(6.7r=9(a){q b=a.3g("a[2C~=I], 3f[2C~=I]");b&&(a.4p(),b.1M||n L.3t(b),6.7s(b))}.1e(6),$(S.1S).19("2D",6.7r))},4Q:9(a){6.7t&&M.2j.2k("9W").1X(6.9X);q b={1L:(a?0:6.1u.1W.v)+"y"};6.7t=n M.7u(6.3Z,{2L:b,1Q:0.16,G:6.G,2z:a?0.15:0})},7v:9(){q a={};$w("u v").V(9(b){q c=b.1z(),d=S.7p;a[b]=12.1C.2g?[d["9Y"+c],d["3K"+c]].9Z():12.1C.4x?S.1S["3K"+c]:d["3K"+c]});F a},5o:9(){2p&&6.22.r(1B(6.7v()))},7m:9(){q a=".66, .5Y .1r, .69, .7w";F 9(b){6.m&&6.m.o&&b.3g(a+(6.m.o.6u?", #5S":""))&&6.P()}}(),4q:9(a){q b=a.7x,c=b.2K,d=6.1D.u,e=a.T=="2D"?0:c=="26"?d:-1*d,f={1w:e+"y"};6.3L||(6.3L={}),6.3L[c]&&M.2j.2k("7y"+c).1X(6.3L[c]),6.3L[c]=n M.7u(6[c+"31"],{2L:f,1Q:0.2,G:{2S:"7y"+c,a0:1},2z:a.T=="3J"?0.1:0})},2A:9(){D(6.13){q a=6.R,b=6.13.1m,c=a<=0?b-1:a-1,d=a>=b-1?0:a+1;F{2n:c,1c:d}}},4M:9(a,b){q c=3l[2]||6.o,d=c.2F,e=c.X;R={U:b.5t(0)=="t",Y:b.5t(1)=="l"};D(l){q f=n z("2R",{C:"a1"+b.1z(),u:e+"y",v:e+"y"});f.r("4N:Y"),a.B(f);q g=f.4w("2d");g.a2=c.J,g.a3(R.Y?d:e-d,R.U?d:e-d,d,0,6C.a4*2,!0),g.a5(),g.7z(R.Y?d:0,0,e-d,e),g.7z(0,R.U?d:0,e,e-d)}1f{q h=(n z("2T:a6",{a7:c.J,a8:"4Y",a9:c.J,aa:(d/e*0.5).3F(2)})).r({u:2*e-1+"y",v:2*e-1+"y",R:"2G",Y:(R.Y?0:-1*e)+"y",U:(R.U?0:-1*e)+"y"});a.B(h),h.4d=h.4d}},6j:9(){9 a(){F $$("38, 55, 27")}12.1C.2g&&S.4C>=8&&(a=9(){F S.ab("38, 55, 27")});F 9(){D(!6.5u){q b=a();6.3A=[];7A(q c=0,d=b.1m;c<d;c++){q e=b[c];6.3A.3D({1n:e,18:e.2L.18}),e.2L.18="1E"}6.5u=!0}}}(),7e:9(){6.3A.V(9(a,b){a.1n.2L.18=a.18}),57 6.3A,6.5u=!1},5a:9(){F{u:6.1O.u,v:6.1O.v+6.2O.v}},6V:9(){q a=6.5a(),b=2*6.X;F{u:a.u+b,v:a.v+b}},6U:9(){q a=21,b=2*6.1D.v+a,c=6.4o();F{u:c.u-b,v:c.v-b}},4o:9(){q a=S.2y.1Z();6.N&&6.N.1i()&&6.13&&6.13.1m>1&&(a.v-=6.46);F a}}),9(){9 a(a,b){6.m&&a(b)}$w("2P 4c").V(9(b){6[b]=6[b].1k(a)},L)}(),O.17(L,{7B:9(){6.m.o.4X&&(6.4r=6.7C.1e(6),S.19("7D",6.4r))},4R:9(){6.4r&&S.ac("7D",6.4r)},7C:9(a){q b=ad.ae(a.7E).4k(),c=a.7E,d=(6.m.1Y()||6.2w)&&!6.5e,e=6.m.o.2i,f;6.m.4n()?(a.4p(),f=c==11.7F||["x","c"].5v(b)?"P":c==37&&d&&(6.o.2B||6.R!=0)?"2n":c==39&&d&&(6.o.2B||6.2A().1c!=0)?"1c":b=="p"&&e&&d?"7g":b=="s"&&e&&d?"2Q":1t,b!="s"&&6.2Q()):f=c==11.7F?"P":1t,f&&6[f](),d&&(c==11.af&&6.13.ag()!=6.m&&6.Q(0),c==11.ah&&6.13.ai()!=6.m&&6.Q(6.13.1m-1))}}),L.4l=L.4l.1k(9(a,b){6.7B(),a(b)}),O.17(L,{6q:9(a){q b=6.45(a);b&&b.3p(L.3M)},6y:9(){D(6.13.1m!=0){q a=6.2A();6.7G([a.1c,a.2n])}},7G:9(a){q b=6.13&&6.13.5v(a)||O.aj(a)?6.13:a.1N?6.4T(a.1N):1t;D(b){q c=$A(O.6p(a)?[a]:a.T?[b.1P(a)]:a).ak();c.V(9(a){q c=b[a];6.5w(c)},6)}},7H:9(a,b){a.49={u:b.u,v:b.v}},5w:9(a){D(!a.49&&!a.4s&&a.10){q b=n 1U;b.1j=9(){b.1j=12.24,a.4s=1t,6.7H(a,b)}.H(6),a.4s=!0,b.1h=a.10}},7s:9(a){q b=a.1M;!(b&&b.49||b.4s)&&b.2x()&&6.5w(b)}}),z.al({1y:9(a,b){a=$(a);q c=O.17({7I:"U Y",2W:"43-2W",5x:"6F",J:""},3l[2]||{});a.r(2f?{am:"an:ao.ap.aq(1h=\'"+b+"\'\', 5x=\'"+c.5x+"\')"}:{2V:c.J+" 3k("+b+") "+c.7I+" "+c.2W});F a}}),O.17(L,{5y:9(a,b){q c;$w("3C 2N 2b 3B").V(9(b){(n 3P("\\\\.("+6.ar[b].2q(/\\s+/g,"|")+")(\\\\?.*)?","i")).3U(a)&&(c=b)}.H(6));D(c){F c}D(a.35("#")){F"4h"}D(S.7J&&S.7J!=a.2q(/(^.*\\/\\/)|(:.*)|(\\/.*)/g,"")){F"2b"}F"2N"},6B:9(a){q b=a.as(/\\?.*/,"").3j(/\\.([^.]{3,4})$/);F b?b[1]:1t},56:9(a){q b="<"+a.1J;7A(q c 6L a){["3a","5z","1J"].5v(c)||(b+=" "+c+\'="\'+a[c]+\'"\')}(n 3P("^(?:3f|at|au|4L|av|aw|ax|6A|7K|ay|az|aA|2c|aB|aC|aD)$","i")).3U(a.1J)?b+="/>":(b+=">",a.3a&&a.3a.V(9(a){b+=6.56(a)}.H(6)),a.5z&&(b+=a.5z),b+="</"+a.1J+">");F b}}),9(){9 b(b){q c=!1;D(a){c=$A(2E.5A).7k("20").6t(",").1P(b)>=0}1f{3w{c=n aE(b)}3x(d){}}F!!c}q a=2E.5A&&2E.5A.1m;a?1K.L.47={3C:b("aF aG"),3B:b("5B")}:1K.L.47={3C:b("7L.7L"),3B:b("5B.5B")}}(),L.3t=aH.aI({aJ:9(d){D(!d.1M){q e=O.6o(d);e&&!d.1M&&(d.1M=6,d.1s&&(d.1M.3I=d.1s,L.o.7M&&d.aK("1s",""))),6.10=e?d.aL("10"):d.10,6.10.1P("#")>=0&&(6.10=6.10.54(6.10.1P("#")));q f=d.1N;D(f){6.1N=f;D(f.35("3N")){6.T="3N"}1f{D(f.35("4t")){D(f.aM("][")){q g=f.7N("]["),5C=g[1].3j(/([a-aN-Z]*)/)[1];D(5C){6.T=5C;q h=g[0]+"]";d.7j("1N",h),6.1N=h}}1f{6.T=L.5y(6.10)}}1f{6.T=f}}}1f{6.T=L.5y(6.10),6.1N=6.T}$w("3y 3C 3N 2b 2N 4h 3B 7O 7P 4t").3p(9(a){q b=a.1z(),c=a.4k();"2N 3N 7P 7O 4t".1P(a)<0&&(6["aO"+b]=9(){F 6.T==c}.H(6))}.H(6));D(e&&d.1M.3I){q i=d.1M.3I.7N(L.o.aP).30("aQ");i[0]&&(6.1s=i[0]),i[1]&&(6.1T=i[1]);q j=i[2];6.o=j&&O.6n(j)?aR("({"+j+"})"):{}}1f{6.1s=d.1s,6.1T=d.1T,6.o=d.o||{}}6.o.5D&&(6.o.3y=O.52(6.o.5D),57 6.o.5D)}},1Y:9(){F 6.T.35("3N")},1H:9(){F 6.1N.35("4t")},2x:9(){F 6.1Y()||6.T=="2N"},51:9(){F"2b 4h 3y".1P(6.T)>=0},4n:9(){F!6.51()}}),L.3M=9(a){q b=$(a);n L.3t(a);F b},9(){9 e(a){q b=c(a);b&&d(b,"I")&&6.3M(b)}9 d(a,b){D(a){q c=a.C;F c.1m>0&&(c==b||(n 3P("(^|\\\\s)"+b+"(\\\\s|$)")).3U(c))}}9 c(a){q b=a.7x,c=a.T,d=a.aS;D(d&&d.3z){D(c==="4B"||c==="aT"||c==="2o"&&d.3z.4k()==="7K"&&d.T==="aU"){b=d}}b.aV==aW.aX&&(b=b.6N);F b}9 b(a){q b=a.3g("a[2C~=I], 3f[2C~=I]");b&&6.3M(b)}9 a(a){q b=a.3g("a[2C~=I], 3f[2C~=I]");b&&(a.4p(),6.3M(b),6.Q(b))}S.19("I:5Q",9(){$(S.1S).19("2o",a.1e(L)),L.o.7M&&12.1C.2g&&S.4C>=8?$(S.1S).19("2D",e.1e(L)):$(S.1S).19("2D",b.1e(L))})}(),O.17(L,{4u:9(){q a=6.o.N,b=a.X;$(S.1S).B(6.N=(n z("E",{2r:"aY"})).r({2s:6.o.2s+1,aZ:a.1x+"y",R:"2G",18:"1E"}).B(6.b0=(n z("E",{C:"b1"})).B((n z("E",{C:"4v b2"})).r("1x-Y: "+b+"y").B(n z("E",{C:"23"}))).B((n z("E",{C:"5E"})).r({1x:"0 "+b+"y",v:b+"y"})).B((n z("E",{C:"4v b3"})).r("1x-Y: -"+b+"y").B(n z("E",{C:"23"})))).B(6.3h=(n z("E",{C:"5F 65"})).B(6.2M=(n z("2X",{C:"b4"})).r("1x: 0 "+b+"y").B((n z("1o",{C:"b5"})).B(6.2e=n z("E"))).B((n z("1o",{C:"3O b6"})).B(6.b7=(n z("E",{C:"1r"})).1y(6.W+"7Q.1g",{J:a.J}))).B((n z("1o",{C:"3O b8"})).B(6.b9=(n z("E",{C:"1r"})).1y(6.W+"ba.1g",{J:a.J}))).B((n z("1o",{C:"3O bb"})).B(6.3H=(n z("E",{C:"1r"})).1y(6.W+"7i.1g",{J:a.J}))).B((n z("1o",{C:"3O 7w"})).B(6.bc=(n z("E",{C:"1r"})).1y(6.W+"bd.1g",{J:a.J}))))).B(6.be=(n z("E",{C:"bf"})).B((n z("E",{C:"4v bg"})).r("1x-Y: "+b+"y").B(n z("E",{C:"23"}))).B((n z("E",{C:"5E"})).r({1x:"0 "+b+"y",v:b+"y"})).B((n z("E",{C:"4v bh"})).r("1x-Y: -"+b+"y").B(n z("E",{C:"23"}))))),$w("26 1c").V(9(a){q b=a.1z();6["N"+b].1F=a},6),2h&&(6.N.P=9(){6.r("Y:-2U;U:-2U;18:1E;");F 6},6.N.Q=9(){6.r("18:1i");F 6},6.N.1i=9(){F 6.1v("18")=="1i"&&3Q(6.1v("U").2q("y",""))>-5R}),6.N.27(".3O E").30("r",1B(6.7R));q c=6.N.27(".23");$w("6a 6b bl 4L").V(9(b,d){a.2F>0?6.4M(c[d],b,a):c[d].B(n z("E",{C:"2H"})),c[d].r({u:a.X+"y",v:a.X+"y"}).6c("23"+b.1z())},6),6.N.4O(".5F").r("u:7f%;"),6.N.r(2f?{R:"2G",U:"1A",Y:""}:{R:"3W",U:"1A",Y:"50%"}),6.N.27(".5E",".5F",".1r",".2H").30("r",{J:a.J}),6.2e.1l((n 48(a.76)).3i({R:7S,5j:7S})),6.2e.r({u:6.2e.7q()+"y",v:6.2M.5n()+"y"}),6.7T(),6.2e.1l(""),6.N.P().r("18:1i"),6.7l(),6.1R()},7T:9(){q a,b,c=6.o.N,d=c.X;2f?(a=6.2M.1Z(),b=a.u+2*d,6.2M.r({u:a.u+"y",1x:0}),6.3h.r("u:1A;"),6.2M.r({bi:d+"y"}),6.3h.r({u:b+"y"}),$w("U 3q").V(9(a){6["N"+a.1z()].r({u:b+"y"})},6),6.N.r("1x-Y:-"+(b/2).1V()+"y")):(6.3h.r("u:1A"),a=6.3h.1Z(),6.2e.bj().r({7U:a.v+"y",u:6.2e.1Z().u+"y"}),6.N.r({u:a.u+"y",1w:0-(a.u/2).1V()+"y"}),6.3h.r({u:a.u+"y"}),$w("U 3q").V(9(b){6["N"+b.1z()].r({u:a.u+"y"})},6)),6.6r=c.1x+a.v+2*d,6.6i=6.N.5n(),6.2e.r({7U:a.v+"y"})}}),L.4u=L.4u.1k(9(a,b){q c=n 1U;c.1j=9(){c.1j=12.24,6.7R={u:c.u,v:c.v},a(b)}.H(6),c.1h=6.W+"7Q.1g";q d=(n 1U).1h=6.W+"7h.1g"}),L.3V=L.3V.1k(9(a,b){a(b),6.4u()}),L.P=L.P.1k(9(a,b){6.m&&6.m.1H()&&(6.N.P(),6.2e.1l("")),a(b)})})(),bk(),L.4B(),L.4E();',62,704,'||||||this|||function|||||||||||||view|new|options||var|setStyle|||width|height|||px|Element||insert|className|if|div|return|queue|bind|lightview|backgroundColor||Lightview|Effect|controller|Object|hide|show|position|document|type|top|each|images|border|left||href|Event|Prototype|views||||extend|visibility|observe|setOpacity|menubar|next|afterFinish|bindAsEventListener|else|png|src|visible|onload|wrap|update|length|element|li|buttons|opacity|lv_Button|title|null|closeDimensions|getStyle|marginLeft|margin|setPngBackground|capitalize|auto|pixelClone|Browser|sideDimensions|hidden|prevnext|scaledInnerDimensions|isSet|_contentPosition|tag|window|marginTop|_view|rel|innerDimensions|indexOf|duration|_lightviewLoadedEvent|body|caption|Image|round|topclose|remove|isGallery|getDimensions|name||overlay|lv_Corner|emptyFunction||prev|select|display|overflow|lightviewContent|iframe|param||setNumber|BROWSER_IS_IE_LT7|IE|BROWSER_IS_WEBKIT_419|slideshow|Queues|get|case|value|previous|click|BROWSER_IS_FIREFOX_LT3|replace|id|zIndex|center|closeButton|data|isSetGallery|isImage|viewport|delay|getSurroundingIndexes|cyclic|class|mouseover|navigator|radius|absolute|lv_Fill|normal|slideshowButton|side|style|controllerCenter|image|menubarDimensions|fillMenuBar|stopSlideshow|canvas|scope|ns_vml|9500px|background|repeat|ul|padding|loading|invoke|ButtonImage|inner|Button|content|startsWith|break||object||children|sliding|call|prevButton|nextButton|area|findElement|controllerMiddle|evaluate|match|url|arguments|sideButtons|imgNumber|lightviewError|_each|bottom|inlineContent|inlineMarker|View|restoreCenter|innerPreviousNext|try|catch|ajax|tagName|overlappingRestore|quicktime|flash|push|resize|toFixed|floor|controllerSlideshow|_title|mouseout|scroll|sideEffect|Extend|gallery|lv_ButtonWrapper|RegExp|parseFloat|userAgent|FIX_OVERLAY_WITH_PNG|parseInt|test|build|fixed|prevButtonImage|nextButtonImage|topcloseButtonImage|resizeCenter|large|innerPrevNext|no|autosize|getSet|controllerOffset|Plugin|Template|preloadedDimensions|afterEffect|stopLoading|insertContent|outerHTML|switch|resizeWithinViewport|onComplete|inline|isQuicktime|clearContent|toLowerCase|afterShow|isIframe|isMedia|getViewportDimensions|stop|toggleSideButton|keyboardEvent|isPreloading|set|buildController|lv_controllerCornerWrapper|getContext|WebKit|end|require|convertVersionString|load|documentMode|default|start|counter|fire|lv_Wrapper|dataText|innerController|gif|br|createCorner|float|down|small|toggleTopClose|disableKeyboardNavigation|restoreInlineContent|getViews|pluginspage|pluginspages|wmode|keyboard|1px|startLoading||isExternal|clone|getHiddenDimensions|substr|embed|createHTML|delete|isAjax|effects|getInnerDimensions|_resize|hidePrevNext|_afterResize|resizing|from|to|Appear|closeButtonWidth|total|_controllerCenterEffect|cursor|disabled|getHeight|maxOverlay|lightview_hide|menubarPadding|slideTimer|toggleSlideshow|charAt|preventingOverlap|member|preloadImageDimensions|sizingMethod|detectType|html|plugins|QuickTime|relType|ajaxOptions|lv_controllerBetweenCorners|lv_controllerMiddle|keys|Gecko|REQUIRED_|_|Scriptaculous|find|namespaces|VML|_lightviewLoadedEvents|defer|loaded|9500|lv_overlay|container|prevSide|nextSide|marginRight|topButtons|lv_topButtons|lv_Frame|lv_Half|lv_CornerWrapper|lv_Filler|lv_WrapDown|contentTop|clearfix|lv_Close|inner_slideshow_play|contentBottom|lv_Loading|tl|tr|addClassName|close_|inner_slideshow_stop|prepare|cancel|controllerHeight|_controllerHeight|hideOverlapping|hideContent|before|_inlineDisplayRestore|isString|isElement|isNumber|extendSet|_controllerOffset|appear|join|overlayClose|Bottom|Top|_VMLPreloaded|preloadSurroundingImages|fullscreen|img|detectExtension|Math|scrolling|autoplay|scale|controls|loop|mimetypes|flashvars|SetControllerVisible|in|Stop|parentNode|frames|adjustDimensionsToView|isInline|finishShow|showContent|nextSlide|getBounds|getOuterDimensions|getScrollOffsets|Tween|transition|overflowX|overflowY|15px|Opacity|sync|showPrevNext|hideData|setNumberTemplate|pointer|setCloseButtons|setMenubarDimensions|loadingEffect|Fade|setPrevNext|afterHide|showOverlapping|100|startSlideshow|controller_slideshow_stop|controller_slideshow_play|writeAttribute|pluck|addObservers|delegateClose|curry|hover|documentElement|getWidth|_preloadImageHover|preloadImageHover|_topCloseEffect|Morph|getScrollDimensions|lv_controllerClose|target|lightview_side|fillRect|for|enableKeyboardNavigation|keyboardDown|keydown|keyCode|KEY_ESC|preloadFromSet|setPreloadedDimensions|align|domain|input|ShockwaveFlash|removeTitles|split|external|media|controller_prev|controllerButtonDimensions|999|_fixateController|lineHeight|createElement|MSIE|exec|rv|mac|REQUIRED_Prototype|REQUIRED_Scriptaculous|typeof|undefined|Version|throw|requires|times|https|js|script|add|urn|schemas|microsoft|com|vml|createStyleSheet|cssText|behavior|callee|lv_Container|lv_Sides|lv_PrevSide|lv_NextSide|lv_topcloseButtonImage|topcloseButton|lv_Frames|lv_FrameTop|lv_Liquid|lv_HalfLeft|lv_HalfRight|lv_Center|150|lv_WrapUp|lv_WrapCenter|lv_contentTop|lv_MenuBar|lv_Data|lv_DataText|lv_Title|lv_Caption|lv_innerController|lv_ImgNumber|lv_innerPrevNext|innerPrevButton|inner_prev|innerNextButton|inner_next|lv_Slideshow|lv_contentBottom|loadingButton|lv_FrameBottom|cloneNode|lv_PrevNext|blank|inner_|relative|lv_content|blur|all|errors|requiresPlugin|plugin|required|transparent|close|defaultOptions|none|alt|galleryimg|drawImage|Ajax|Updater|frameBorder|hspace|lightviewContent_|random|99999|tofit|enablejavascript|codebase|codebases|classid|classids|quality|high|movie|allowFullScreen|true|FlashVars|ancestors|block|clientWidth|clientHeight|innerHTML|isFlash|min|resizeDuration|paddingRight|paddingBottom|Parallel|opened|imgNumberTemplate|childElements|180|borderColor|lv_PrevButton|lv_NextButton|beforeStart|startDimensions|_openEffect|scaledI|nnerDimensions|clearTimeout|Slideshow|slideshowDelay|updateViews|scrollLeft|preloadHover|lightview_topCloseEffect|topCloseEffect|offset|max|limit|cornerCanvas|fillStyle|arc|PI|fill|roundrect|fillcolor|strokeWeight|strokeColor|arcSize|querySelectorAll|stopObserving|String|fromCharCode|KEY_HOME|first|KEY_END|last|isArray|uniq|addMethods|filter|progid|DXImageTransform|Microsoft|AlphaImageLoader|typeExtensions|gsub|base|basefont|col|frame|hr|link|isindex|meta|range|spacer|wbr|ActiveXObject|Shockwave|Flash|Class|create|initialize|setAttribute|getAttribute|include|zA|is|titleSplit|strip|eval|currentTarget|error|radio|nodeType|Node|TEXT_NODE|lightviewController|marginBottom|controllerTop|lv_controllerTop|lv_controllerCornerWrapperTopLeft|lv_controllerCornerWrapperTopRight|lv_controllerCenter|lv_controllerSetNumber|lv_controllerPrev|controllerPrev|lv_controllerNext|controllerNext|controller_next|lv_controllerSlideshow|controllerClose|controller_close|controllerBottom|lv_controllerBottom|lv_controllerCornerWrapperBottomLeft|lv_controllerCornerWrapperBottomRight|paddingLeft|up|lightviewcolor|'.split('|'),0,{}))

/* extension for lightview for accessible keybordfocus
* @author: sindre wimberger // wimberger@echonet.at
* @version: 1.1 2010-01-11
* @changelog:
  1.1 - closebutton ist set on first lightview opening, instead of lightview loading
* @depencies: lightview
* @usage: just add to the end of lightview.js 
*/
document.observe('lightview:opened', function(event) {
	if(typeof lightviewclosebutton == 'undefined') {
		if($('lightview').select('div.lv_Close')[0].visible()) {
			lightviewclosebutton = $('lightview').select('div.lv_Close')[0];
		} else if ($('lightview').select('div.lv_topcloseButtonImage div.lv_Button')[0].visible()) {
			lightviewclosebutton = $('lightview').select('div.lv_topcloseButtonImage div.lv_Button')[0];
		}
		if(lightviewclosebutton) {
			if(Prototype.Browser.IE) {
				lightviewclosebutton.setAttribute('tabIndex','-1');
			} else {
				lightviewclosebutton.setAttribute('tabindex','-1');
			}
			lightviewclosebutton.observe('keydown', function(ev) {
					if(ev.keyCode == 13) {																					 
						Lightview.hide();
					}
			});
		}
	}
	if(lightviewclosebutton.visible()) {																						
		lightviewclosebutton.focus();
	}
});
document.observe('lightview:hidden', function(event) {
	Lightview.element.focus();
});
function lightviewcolor() {
	
}



