// script.aculo.us effects.js v1.9.0, Thu Dec 23 16:54:48 -0500 2010
// Copyright (c) 2005-2010 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.7.1 - 15-03-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'}
var Lightview = {
Version: '2.7.1',
// 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: true },                        // 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} von #{total}'
},
cyclic: false,                                         // Makes galleries cyclic, no end/begin
effectDurations: {
resize: .45,
sideButtons:{
show:  .2,
hide:  .2
},
content: {
appear: .2,
fade:   .2
}
},
images: '/rassets/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: 12,                                            // Corner radius of the border
removeTitles: true,                                    // Set to false if you want to keep title attributes intact
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: 'bottom',
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',
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'
}
};
/* 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) {
$$('iframe, object, embed').each(function(el) {
el.style.visibility = "hidden";
});
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) {
$$('iframe, object, embed').each(function(el) {
el.style.visibility = "visible";
});
Lightview.element.focus();
});
/*  Lightview 2.7.1 - 15-03-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/
*
*/
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 l(a){F b={};T.5J(a).10(9(c){b[c]=a[c]+"D"});M b}9 s(a,b){(""+b).1g==1&&(b="0"+b);F c=(""+a).1g,d=(""+b).1g;c<d&&(a="0".5K(d-c)+a);M{U:a,2X:b}}F q=!!X.86("2Y").4x,n=1d.1M.2s&&9(a){M(a=/87 ([\\d.]+)/.88(a))?3U(a[1]):-1}(2I.3V)<7,o=1d.1M.4y&&!X.3p,p=1d.1M.5L&&9(){F a=2I.3V.3q(/89\\:(\\d+)/);M a&&3U(a[1])<2}(2I.3V),r=!!2I.3V.3q(/8a/i)&&(o||p);T.1a(O.v.2Z,{1N:{P:0.15,27:0.15}});T.1a(O,{8b:"1.7",8c:"1.8.3",K:{U:"4z",30:"N"},4A:9(a){I(5M 1O[a]=="5N"||6.4B(1O[a].8d)<6.4B(6["5O"+a]))8e"O 8f "+a+" >= "+6["5O"+a];},4B:9(a){F b=a.2t(/5P.*|\\./g,"");b=4C(b+"0".5K(4-b.1g));M a.1S("5P")>-1?b-1:b},4D:9(){6.4A("1d");1O.R&&!1O.5Q&&6.4A("5Q");I(/^(8g?:\\/\\/|\\/)/.3W(6.v.11))6.11=6.v.11;1j{F a=/N(?:-[\\w\\d.]+)?\\.8h(.*)/;6.11=(($$("8i[1n]").5R(9(b){M b.1n.3q(a)})||{}).1n||"").2t(a,"")+6.v.11}I(!q){I(X.4E>=8&&!X.5S.31){X.5S.8j("31","8k:8l-8m-8n:8o","#4F#5T")}1j{X.8p().8q="31\\\\:*{8r:3r(#4F#5T)}"}}},4G:9(){6.2J=6.v.2J;6.12=6.2J>6.v.12?6.2J:6.v.12;6.1P=6.v.1P;6.1E=6.v.1E;6.3X()}});T.1a(O,{5U:14,1V:9(){F a=8s.8t;a.4H++;a.4H==6.5U&&19.4I.5V(X.1W,"N:5W")}});O.1V.4H=0;T.1a(O,{3X:9(){6.N=y E("J",{2u:"N"});F a,b,c=l(6.1E);o&&(6.N.V=9(){6.z("13:-32;Y:-32;1b:1F;");M 6},6.N.P=9(){6.z("1b:1h");M 6},6.N.1h=9(){M 6.1G("1b")=="1h"&&3U(6.1G("Y").2t("D",""))>-5X});$(X.1W).G(6.28=(y E("J",{2u:"5Y"})).z({2v:6.v.2v-1,U:!p&&!n?"3Y":"2K",33:r?"3r("+6.11+"28.1m) Y 13 34":6.v.28.33}).1e(r?1:6.v.28.1u).V()).G(6.N.z({2v:6.v.2v,Y:"-32",13:"-32"}).1e(0).G(6.5Z=(y E("J",{H:"8u"})).G(6.35=(y E("36",{H:"8v"})).G(6.60=(y E("1v",{H:"8w"})).z(b=T.1a({1z:-1*6.1E.B+"D"},c)).G(6.3Z=(y E("J",{H:"4J"})).z(T.1a({1z:6.1E.B+"D"},c)).G(y E("J",{H:"1w"})))).G(6.61=(y E("1v",{H:"8x"})).z(T.1a({62:-1*6.1E.B+"D"},c)).G(6.40=(y E("J",{H:"4J"})).z(b).G(y E("J",{H:"1w"}))))).G(6.63=(y E("J",{H:"64"})).G(6.3s=(y E("J",{H:"4J 8y"})).G(6.8z=y E("J",{H:"1w"})))).G((y E("36",{H:"8A"})).G((y E("1v",{H:"65 8B"})).G(a=(y E("J",{H:"8C"})).z({C:6.12+"D"}).G((y E("36",{H:"66 8D"})).G((y E("1v",{H:"67"})).G(y E("J",{H:"29"})).G((y E("J",{H:"2L"})).z({13:6.12+"D"})))).G(y E("J",{H:"68"})).G((y E("36",{H:"66 8E"})).G((y E("1v",{H:"67"})).z("1A-Y: "+ -1*6.12+"D").G(y E("J",{H:"29"})).G((y E("J",{H:"2L"})).z("13: "+ -1*6.12+"D")))))).G(6.41=(y E("1v",{H:"8F"})).z("C: "+(8G-6.12)+"D").G((y E("J",{H:"8H"})).G((y E("J",{H:"69"})).z("1A-Y: "+6.12+"D").G(6.2w=(y E("J",{H:"8I"})).1e(0).z("38: 0 "+6.12+"D").G(6.6a=y E("J",{H:"8J 2L"})).G(6.1f=(y E("J",{H:"8K 6b"})).G(6.2x=(y E("J",{H:"1w 6c"})).z(l(6.v.1P.42)).z({33:6.v.Q}).1e(6.v.1t.1u.2M)).G(6.2y=(y E("36",{H:"8L"})).G(6.4K=(y E("1v",{H:"8M"})).G(6.1x=y E("J",{H:"8N"})).G(6.1X=y E("J",{H:"8O"}))).G(6.4L=(y E("J",{H:"8P"})).G(6.3t=(y E("1v",{H:"8Q"})).G(6.4M=(y E("J",{H:"1w 8R"})).1e(6.v.1t.1u.2M).z({Q:6.v.Q}).1B(6.11+"8S.1m",{Q:6.v.Q})).G(6.3u=y E("J",{H:"8T"})).G(6.4N=(y E("J",{H:"1w 8U"})).1e(6.v.1t.1u.2M).z({Q:6.v.Q}).1B(6.11+"8V.1m",{Q:6.v.Q}))).G(6.2m=(y E("1v",{H:"8W"})).G(6.2N=(y E("J",{H:"1w"})).1e(6.v.1t.1u.2M).z({Q:6.v.Q}).1B(6.11+"6d.1m",{Q:6.v.Q})))))).G(6.6e=y E("J",{H:"8X "}))))).G(6.3a=(y E("J",{H:"6f"})).G(6.8Y=(y E("J",{H:"1w"})).z("33: 3r("+6.11+"3a.4O) Y 13 43-34")))).G((y E("1v",{H:"65 8Z"})).G(a.90(1T))).G(6.1H=(y E("1v",{H:"91"})).V().z("1A-Y: "+6.12+"D; 33: 3r("+6.11+"92.4O) Y 13 34"))))).G((y E("J",{2u:"3v"})).V());F d=y 1Y;d.1o=9(){d.1o=1d.2a;6.1E={B:d.B,C:d.C};F f=l(6.1E),j;6.35.z({1Z:0-(d.C/2).20()+"D",C:d.C+"D"});6.60.z(j=T.1a({1z:-1*6.1E.B+"D"},f));6.3Z.z(T.1a({1z:f.B},f));6.61.z(T.1a({62:-1*6.1E.B+"D"},f));6.40.z(j);6.1V()}.L(6);d.1n=6.11+"2b.1m";$w("2w 1x 1X 3u").3w(9(f){6[f].z({Q:6.v.Q})}.L(6));F e=6.5Z.2c(".29");$w("6g 6h bl 4P").10(9(f,j){6.2J>0?6.4Q(e[j],f):e[j].G(y E("J",{H:"2L"}));e[j].z({B:6.12+"D",C:6.12+"D"}).6i("29"+f.1C());6.1V()}.L(6));6.N.2c(".68",".2L",".69").3b("z",{Q:6.v.Q});F g={};$w("2b 1i 1N").10(9(f){6[f+"3c"].2O=f;F j=6.11+f+".1m";f=="1N"?(g[f]=y 1Y,g[f].1o=9(){g[f].1o=1d.2a;6.1P[f]={B:g[f].B,C:g[f].C};F m=6.v.1t.1N.2O,t=T.1a({"4R":m,1Z:6.1P[f].C+"D"},l(6.1P[f]));t["38"+m.1C()]=6.12+"D";6[f+"3c"].z(t);6.63.z({C:g[f].C+"D",Y:-1*6.1P[f].C+"D"});6[f+"3c"].6j().1B(j).z(l(6.1P[f]));6.1V()}.L(6),g[f].1n=6.11+f+".1m"):6[f+"3c"].1B(j)},6);F h={};$w("42 4S").10(9(f){h[f]=y 1Y;h[f].1o=9(){h[f].1o=1d.2a;6.1P[f]={B:h[f].B,C:h[f].C};6.1V()}.L(6);h[f].1n=6.11+"6k"+f+".1m"},6);F i=y 1Y;i.1o=9(){i.1o=1d.2a;6.3a.z({B:i.B+"D",C:i.C+"D",1Z:-0.5*i.C+0.5*6.12+"D",1z:-0.5*i.B+"D"});6.1V()}.L(6);i.1n=6.11+"3a.4O";F k=y 1Y;k.1o=9(){k.1o=1d.2a;F f={B:k.B+"D",C:k.C+"D"};6.2m.z(f);6.2N.z(f);6.1V()}.L(6);k.1n=6.11+"6l.1m";$w("2b 1i").10(9(f){F j=f.1C(),m=y 1Y;m.1o=9(){m.1o=1d.2a;6["3d"+j+"3e"].z({B:m.B+"D",C:m.C+"D"});6.1V()}.L(6);m.1n=6.11+"93"+f+".1m";6["3d"+j+"3e"].1H=f},6);$w("2m 3t 3u").10(9(f){6[f].V=6[f].V.1p(9(j,m){6.2P.U="2K";j(m);M 6});6[f].P=6[f].P.1p(9(j,m){6.2P.U="94";j(m);M 6})},6);6.N.2c("*").3b("z",{2v:6.v.2v+1});6.N.V();6.1V()},6m:9(){R.2n.2o("N").3w(9(a){a.6n()});6.1y=1r;6.u.1I()?(6.6o=6.6p,6.S&&!6.S.1h()&&(6.S.z("1b:1F").P(),6.2Q.1e(0))):(6.6o=1r,6.S.V());!6.u.v.1N&&6.3s.6q("1h")&&6.44(2e);6.6r();6.6s();y R.19({K:6.K,1k:9(){$w("Y 3x").10(9(a){F b=a.1C();6["2R"+b].22();F c={};6["2R"+b]=(y E("J",{H:"95"+b})).V();c[a]=6["2R"+b];6.2w.G(c)}.L(6))}.L(6)});6.4T();6.17=1r},4U:9(){6.3y&&6.3z&&(6.3z.G({6t:6.3y.z({2f:6.3y.6u})}),6.3z.22(),6.3z=1r)},P:9(a,b){6.1s=1r;F c=T.6v(a);I(T.6w(a)||c){I(c&&a.3f("#")){6.P({18:a,v:T.1a({45:1T},b||{})});M}6.1s=$(a);I(!6.1s)M;6.1s.96();6.u=6.1s.1Q||y O.3A(6.1s)}1j a.18?(6.1s=$(X.1W),6.u=y O.3A(a)):T.6x(a)&&(6.1s=6.46(6.u.1J)[a],6.u=6.1s.1Q);I(6.u.18){6.6m();I(6.u.23()||6.u.1I()){6.6y(6.u.1J);6.17=6.4V(6.u.1J);6.u.1I()&&(6.47=6.17.1g>1?6.6z:0,6.2z=6.17.97(9(e){M e.2A()}))}6.3B();6.4W();I(6.u.18!="#3v"&&T.5J(O.48).6A(" ").1S(6.u.W)>=0&&!O.48[6.u.W]){$("3v").1q((y 49(6.98.99)).3p({W:6.u.W.1C(),4X:6.4Y[6.u.W]}));c=$("3v").24();6.P({18:"#3v",1x:6.u.W.1C()+" 9a 9b",v:c});M 2e}c=T.1a({1f:"3x",1N:2e,4Z:"9c",3C:6.u.23()&&6.v.1t.3C.2f,51:6.v.51,2m:6.u.23()&&6.v.1t.2m.2f||6.2z,2g:"1F",6B:6.v.28.9d,2B:6.v.2B},6.v.9e[6.u.W]||{});6.u.v=T.1a(c,6.u.v);6.u.1I()&&(6.u.v.1N=6.17.1g<=1);!(6.u.1x||6.u.1X||6.17&&6.17.1g>1)&&6.u.v.1N&&(6.u.v.1f=2e);6.1K="2R"+(6.u.v.1f=="Y"?"6C":"6D");I(6.u.2A()){I(!q&&!6.u.6E){6.u.6E=1T;F d=(y E("31:2S",{1n:6.u.18,2f:"9f"})).z("C:52;B:52;");$(X.1W).G(d);E.22.27(0.1,d)}I(6.u.23()||6.u.1I()){6.U=6.17.1S(6.u);6.6F()}I(6.1R=6.u.4a)6.4b();1j{6.53();d=y 1Y;d.1o=9(){d.1o=1d.2a;6.4c();6.1R={B:d.B,C:d.C};6.4b()}.L(6);d.1n=6.u.18}}1j{6.u.1I()&&(6.U=6.17.1S(6.u));6.1R=6.u.v.6G?X.2B.24():{B:6.u.v.B,C:6.u.v.C};6.4b()}}},4d:9(){9 a(c,d,e){c=$(c);e=l(e);c.1q((y E("6H",{2u:"2h",1n:d,9g:"",9h:"43"})).z(e))}F b=9(){9 c(e,g,h){e=$(e);F i=l(h),k=y 1Y;k.1o=9(){2Y=y E("2Y",i);e.1q(2Y);3D{2Y.4x("2d").9i(k,0,0,h.B,h.C)}3E(f){a(e,g,h)}}.L(6);k.1n=g}9 d(e,g,h){e=$(e);h=T.1a({"4R":"13"},l(h));g=(y E("31:2S",{1n:g,2u:"2h"})).z(h);e.1q(g);g.4e=g.4e}M q?c:d}();M 9(){6.6I(6.u.18);F c=6.1y||6.1R;I(6.u.2A()){6[6.1K].z(l(c));6.1y?b(6[6.1K],6.u.18,c):a(6[6.1K],6.u.18,c)}1j I(6.u.54())3F(6.u.W){2i"3G":c=T.55(6.u.v.3G)||{};F d=9(){6.4c();6.u.v.45&&(6[6.1K].z({B:"1D",C:"1D"}),6.1R=6.56(6[6.1K]));y R.19({K:6.K,1k:6.4f.L(6)})}.L(6);c.4g?c.4g=c.4g.1p(9(g,h){d();g(h)}):c.4g=d;6.53();y 9j.9k(6[6.1K],6.u.18,c);2T;2i"2j":6.1y&&(c.C-=6.2U.C);6[6.1K].1q(6.2j=(y E("2j",{9l:0,9m:0,1n:6.u.18,2u:"2h",26:"9n"+(6J.9o()*9p).20(),6K:6.u.v&&6.u.v.6K?"1D":"43"})).z(T.1a({12:0,1A:0,38:0},l(c))));2T;2i"4h":c=6.u.18;c=$(c.57(c.1S("#")+1));I(!c||!c.3H)2T;F e=c.24();c.G({6t:6.3z=(y E(c.3H)).V()});c.6u=c.1G("2f");6.3y=c.P();6[6.1K].1q(6.3y);6[6.1K].2c("2c, 3g, 58").10(9(g){6.3I.10(9(h){h.1s==g&&g.z({1b:h.1b})})}.L(6));6.u.v.45&&(6.1R=e,y R.19({K:6.K,1k:6.4f.L(6)}))}1j{e={1L:"3g",2u:"2h",B:c.B,C:c.C};3F(6.u.W){2i"3h":T.1a(e,{4X:6.4Y[6.u.W],3i:[{1L:"2k",26:"6L",2p:6.u.v.6L},{1L:"2k",26:"6M",2p:"9q"},{1L:"2k",26:"S",2p:6.u.v.59},{1L:"2k",26:"9r",2p:1T},{1L:"2k",26:"1n",2p:6.u.18},{1L:"2k",26:"6N",2p:6.u.v.6N||2e}]});T.1a(e,1d.1M.2s?{9s:6.9t[6.u.W],9u:6.9v[6.u.W]}:{2y:6.u.18,W:6.6O[6.u.W]});2T;2i"3J":T.1a(e,{2y:6.u.18,W:6.6O[6.u.W],9w:"9x",4Z:6.u.v.4Z,4X:6.4Y[6.u.W],3i:[{1L:"2k",26:"9y",2p:6.u.18},{1L:"2k",26:"9z",2p:"1T"}]});6.u.v.6P&&e.3i.3K({1L:"2k",26:"9A",2p:6.u.v.6P})}6[6.1K].z(l(c)).1q(6.5a(e)).z("1b:1F").P();6.u.4i()&&9(){3D{"6Q"6R $("2h")&&$("2h").6Q(6.u.v.59)}3E(g){}}.L(6).5V()}}}(),56:9(a){a=$(a);F b=a.9B(),c=[],d=[];b.3K(a);b.10(9(e){I(e==a||!e.1h()){c.3K(e);d.3K({2f:e.1G("2f"),U:e.1G("U"),1b:e.1G("1b")});e.z({2f:"9C",U:"2K",1b:"1h"})}});b={B:a.9D,C:a.9E};c.10(9(e,g){e.z(d[g])});M b},4j:9(){F a=$("2h");I(a)3F(a.3H.4k()){2i"3g":I(1d.1M.4y&&6.u.4i()){3D{a.6S()}3E(b){}a.9F=""}a.6T?a.22():a=1d.2a;2T;2i"2j":a.22();1d.1M.5L&&1O.6U.2h&&5b 1O.6U.2h;2T;4F:a.22()}$w("6D 6C").10(9(c){6["2R"+c].z("B:1D;C:1D;").1q("").V()},6)},6V:9(){F a=6.1y||6.1R;I(6.u.v.59)3F(6.u.W){2i"3h":a.C+=16}6[(6.1y?"6W":"i")+"6X"]=a},4b:9(){y R.19({K:6.K,1k:6.4l.L(6)})},4l:9(){6.2V();6.u.5c()||6.4c();6.u.v.45&&6.u.6Y()||6.u.5c()||6.4f();6.u.4m()||y R.19({K:6.K,1k:6.4d.L(6)});6.u.v.1N&&y R.19({K:6.K,1k:6.44.L(6,1T)})},6Z:9(){y R.19({K:6.K,1k:6.70.L(6)});6.u.4m()&&y R.19({27:0.2,K:6.K,1k:6.4d.L(6)});6.3j&&y R.19({K:6.K,1k:6.71.L(6)});(6.u.4i()||6.u.9G())&&y R.19({K:6.K,27:0.1,1k:E.z.L(6,6[6.1K],"1b:1h")})},2q:9(){R.2n.2o(O.K.30).5d.1g||6.P(6.2C().2q)},1i:9(){R.2n.2o(O.K.30).5d.1g||6.P(6.2C().1i)},4f:9(){6.6V();F a=6.5e(),b=6.72();I(6.u.v.2B&&(a.B>b.B||a.C>b.C))I(6.u.v.6G){6.1y=b;6.2V();a=b}1j{a=6.73();I(6.u.4n()){b=[b.C/a.C,b.B/a.B,1].9H();6.1y={B:(6.1R.B*b).20(),C:(6.1R.C*b).20()}}1j 6.1y={B:a.B>b.B?b.B:a.B,C:a.C>b.C?b.C:a.C};6.2V();a=T.55(6.1y);6.u.4n()&&(a.C+=6.2U.C)}1j{6.2V();6.1y=1r}6.5f(a)},3k:9(a){6.5f(a,{1U:0})},5f:9(){F a,b,c,d,e,g=9(){F h,i,k;n?k=9(f){6.N.z({B:(a.B+f*b).3L(0)+"D",C:(a.C+f*c).3L(0)+"D"});6.41.z({C:i-1*6.12+"D"})}:p?k=9(){F f=6.4o(),j=X.2B.74();6.N.z({U:"2K",1z:0,1Z:0,B:h+"D",C:i+"D",13:(j[0]+f.B/2-h/2).3M()+"D",Y:(j[1]+f.C/2-i/2).3M()+"D"});6.41.z({C:i-1*6.12+"D"})}:k=9(){6.N.z({U:"3Y",B:h+"D",C:i+"D",1z:((0-h)/2).20()+"D",1Z:((0-i)/2-d).20()+"D"});6.41.z({C:i-1*6.12+"D"})};M 9(f){h=(a.B+f*b).3L(0);i=(a.C+f*c).3L(0);k.4p(6,f)}}();M 9(h,i){F k=i||{};a=6.N.24();e=2*6.12;B=h.B?h.B+e:a.B;C=h.C?h.C+e:a.C;6.5g();I(a.B==B&&a.C==C)y R.19({K:6.K,1k:6.5h.L(6,h)});1j{F f={B:B+"D",C:C+"D"};b=B-a.B;c=C-a.C;4C(6.N.1G("1z").2t("D",""));4C(6.N.1G("1Z").2t("D",""));d=6.S.1h()?6.47/2:0;n||T.1a(f,{1z:0-B/2+"D",1Z:0-C/2+"D"});k.1U==0?g.4p(6,1):6.5i=y R.75(6.N,0,1,T.1a({1U:6.v.2Z.3k,K:6.K,76:6.v.76,1k:6.5h.L(6,h)},k),g.L(6))}}}(),5h:9(a){I(6.2U){F b=6[6.1K],c;6.u.v.2g=="1D"&&(c=b.24());b.z({C:a.C-6.2U.C+"D",B:a.B+"D"});I(6.u.v.2g!="1F"&&(6.u.5c()||6.u.6Y()))I(1d.1M.2s)I(6.u.v.2g=="1D"){F d=b.24();b.z("2g:1h");F e={77:"1F",78:"1F"},g=0;c.C>a.C&&(e.78="1D",e.B=d.B-15,e.9I="79",g=15);c.B-g>a.B&&(e.77="1D",e.C=d.C-15,e.9J="79");b.z(e)}1j b.z({2g:6.u.v.2g});1j b.z({2g:6.u.v.2g});1j b.z("2g:1F");6.3B();6.5i=1r;6.6Z()}},70:9(){y R.19({K:6.K,7a:6.5g.L(6)});y R.19({K:6.K,1k:9(){6[6.1K].P();6.2V();6.1f.1h()&&6.1f.z("1b:1h").1e(1)}.L(6)});y R.9K([y R.7b(6.2w,{7c:1T,5j:0,5k:1}),y R.5l(6.35,{7c:1T})],{K:6.K,1U:6.v.2Z.2R.4W,1k:9(){6.1s&&6.1s.4I("N:9L")}.L(6)});(6.u.23()||6.2z&&6.v.S.1t.2O)&&y R.19({K:6.K,1k:6.7d.L(6)})},6s:9(){9 a(c){6.2w.1e(c);6.35.1e(c)}9 b(){6.4U();6.4j()}M 9(){6.N.1h()?y R.75(6.N,1,0,{1U:0.2,K:6.K,1k:b.L(6)},a.L(6)):(6.2w.1e(0),6.35.1e(0),6.4j())}}(),7e:9(){$w("4L 2y 4K 1x 1X 3u 3t 4N 4M 2m 2x").10(9(a){E.V(6[a])},6);6.1f.z("1b:1F").1e(0)},2V:9(){6.7e();6.u.v.1f?6.1f.P():(6.2U={B:0,C:0},6.5m=0,6.1f.V());I(6.u.1x||6.u.1X){6.4K.P();6.2y.P()}6.u.1x&&6.1x.1q(6.u.1x).P();6.u.1X&&6.1X.1q(6.u.1X).P();I(6.17&&6.17.1g>1)I(6.u.1I()){F a=s(6.U+1,6.17.1g);6.2l.1q((y 49(6.v.S.7f)).3p({U:a.U,2X:a.2X}));6.S.1G("1b")=="1F"&&(6.S.z("1b:1h"),6.5n&&R.2n.2o("N").22(6.5n),6.5n=y R.5l(6.2Q,{K:6.K,1U:0.1}))}1j{6.2y.P();I(6.u.2A()){6.4L.P();6.3t.P();a=s(6.U+1,6.17.1g);6.3u.P().1q((y 49(6.v.9M)).3p({U:a.U,2X:a.2X}));6.u.v.2m&&(6.2N.P(),6.2m.P())}}F b=6.u.1I();I((6.u.v.3C||b)&&6.17.1g>1){F c={2b:6.v.2D||6.U!=0,1i:6.v.2D||(6.u.23()||b)&&6.2C().1i!=0};$w("2b 1i").10(9(d){F e=d.1C(),g=c[d]?"7g":"1D";b?6["S"+e].z({5o:g}).1e(c[d]?1:6.v.1t.1u.5p):6["3d"+e+"3e"].z({5o:g}).1e(c[d]?6.v.1t.1u.2M:6.v.1t.1u.5p)}.L(6));I(6.u.v.3C||6.v.S.3C){6.4M.P();6.4N.P();6.3t.P()}}6.3N.1e(6.2z?1:6.v.1t.1u.5p).z({5o:6.2z?"7g":"1D"});6.7h();6.1f.9N().5R(E.1h)||(6.1f.V(),6.u.v.1f=2e);6.7i()},7h:9(){F a=6.1P.4S.B,b=6.1P.42.B,c=6.1y?6.1y.B:6.1R.B,d=0,e=6.u.v.2x||"42",g=6.v.9O;6.u.v.1N||6.u.1I()||!6.u.v.2x?g=1r:c>=5q+a&&c<5q+b?(g="4S",d=a):c>=5q+b&&(g=e,d=6.1P[e].B);d>0?(6.2y.P(),6.2x.z({B:d+"D"}).P()):6.2x.V();g&&6.2x.1B(6.11+"6k"+g+".1m",{Q:6.v.Q});6.5m=d},53:9(){6.3a.P()},4c:9(){6.7j&&R.2n.2o("N").22(6.7j);y R.7k(6.3a,{1U:0.2,K:6.K,27:0.2})},7l:9(){I(6.u.2A()){F a=6.v.2D&&6.17.1g>1||6.U!=0,b=6.v.2D&&6.17.1g>1||(6.u.23()||6.u.1I())&&6.2C().1i!=0;6.3Z[a?"P":"V"]();6.40[b?"P":"V"]();F c=6.1y||6.1R;6.1H.z({C:c.C+"D",1Z:6.12+(6.u.v.1f=="Y"?6.1f.5r():0)+"D"});c=(c.B/2-1+6.12).3M();a&&(6.1H.G(6.2E=(y E("J",{H:"1w 9P"})).z({B:c+"D"})),6.2E.2O="2b");b&&(6.1H.G(6.2F=(y E("J",{H:"1w 9Q"})).z({B:c+"D"})),6.2F.2O="1i");(a||b)&&6.1H.P()}},7d:9(){!6.u||!6.v.1t.2O.2f||!6.u.2A()||(6.7l(),6.1H.P())},5g:9(){6.2E&&(6.2E=1r);6.2F&&(6.2F=1r);6.1H.1q("").V();6.3Z.V().z({1z:6.1E.B+"D"});6.40.V().z({1z:-1*6.1E.B+"D"})},4W:9(){9 a(){6.N.1e(1)}o||(a=a.1p(9(b,c){b(c);6.N.P()}));M 9(){6.N.1G("1u")==0&&(6.v.28.2f?y R.5l(6.28,{1U:0.2,5j:0,5k:r?1:6.v.28.1u,K:6.K,7a:6.5s.L(6),1k:a.L(6)}):a.4p(6))}}(),V:9(){1d.1M.2s&&6.2j&&6.u.4m()&&6.2j.22();I(o&&6.u.4i()){F a=$$("3g#2h")[0];I(a)3D{a.6S()}3E(b){}}I(6.N.1G("1u")!=0){6.2W();6.1H.V();(!1d.1M.2s||!6.u.4m())&&6.2w.V();I(!(R.2n.2o("5t").5d.1g>0)){R.2n.2o("N").10(9(c){c.6n()});y R.19({K:6.K,1k:6.4U.L(6)});y R.7b(6.N,{1U:0.1,5j:1,5k:0,K:{U:"4z",30:"5t"}});y R.7k(6.28,{1U:0.16,K:{U:"4z",30:"5t"},1k:6.7m.L(6)})}}},7m:9(){6.4j();6.N.V();6.2w.1e(0).P();6.1H.1q("").V();6.6a.1q("").V();6.6e.1q("").V();6.4T();6.7n();6.44(2e,0);y R.19({K:6.K,1k:6.3k.L(6,6.v.9R)});y R.19({K:6.K,1k:9(){6.1s&&6.1s.4I("N:1F");$w("1s 17 u 1y 2z 9S 2R").3w(9(a){6[a]=1r}.L(6))}.L(6)})},7i:9(){6.1f.z("38:0;");F a={};a=6[(6.1y?"6W":"i")+"6X"].B;6.1f.z({B:a+"D"});6.2y.z({B:a-6.5m-1+"D"});a=6.56(6.1f);I(6.u.v.1f){a.C+=6.v.5u;3F(6.u.v.1f){2i"3x":6.1f.z("38:"+6.v.5u+"D 0 0 0");2T;2i"Y":6.1f.z("38: 0 0 "+6.v.5u+"D 0")}}6.1f.z({B:"7o%"});6.2U=6.u.v.1f?a:{B:a.B,C:0}},3B:9(){F a,b,c;n?c=9(){6.N.z({Y:"50%",13:"50%"})}:o||p?c=9(){F d=6.4o(),e=X.2B.74();6.N.z({1z:0,1Z:0,13:(e[0]+d.B/2-a.B/2).3M()+"D",Y:(e[1]+d.C/2-a.C/2).3M()+"D"})}:c=9(){6.N.z({U:"3Y",13:"50%",Y:"50%",1z:(0-a.B/2).20()+"D",1Z:(0-a.C/2-b).20()+"D"})};M 9(){a=6.N.24();b=6.S.1h()?6.47/2:0;c.4p(6)}}(),7p:9(){6.2W();6.3j=1T;6.1i.L(6).27(0.25);6.2N.1B(6.11+"6l.1m",{Q:6.v.Q}).V();6.3N.1B(6.11+"7q.1m",{Q:6.v.S.Q})},2W:9(){6.3j&&(6.3j=2e);6.5v&&9T(6.5v);6.2N.1B(6.11+"6d.1m",{Q:6.v.Q});6.3N.1B(6.11+"7r.1m",{Q:6.v.S.Q})},5w:9(){(!6.u.1I()||6.2z)&&6[(6.3j?"4q":"4G")+"9U"]()},71:9(){6.3j&&(6.5v=6.1i.L(6).27(6.v.9V))},9W:9(){$$("a[2G~=N], 3l[2G~=N]").10(9(a){F b=a.1Q;!b||(b.3O&&a.7s("1x",b.3O),a.1Q=1r)})},46:9(a){F b=a.1S("][");b>-1&&(a=a.57(0,b+1));M $$(\'a[1J^="\'+a+\'"], 3l[1J^="\'+a+\'"]\')},4V:9(a){M 6.46(a).7t("1Q")},7u:9(){$(X.1W).1c("2r",6.7v.1l(6));$w("2H 3m").10(9(b){6.1H.1c(b,9(c){F d=c.3n("J");!d||(6.2E&&6.2E==d||6.2F&&6.2F==d)&&6.4r(c)}.1l(6))}.L(6));6.1H.1c("2r",9(b){I(b=b.3n("J"))(b=6.2E&&6.2E==b?"2q":6.2F&&6.2F==b?"1i":1r)&&6[b].1p(9(c,d){6.2W();c(d)}).L(6)()}.1l(6));$w("2b 1i").10(9(b){F c=b.1C(),d=9(g,h){6.2W();g(h)},e=9(g,h){F i=h.1s().1H;(i=="2b"&&(6.v.2D||6.U!=0)||i=="1i"&&(6.v.2D||(6.u.23()||6.u.1I())&&6.2C().1i!=0))&&g(h)};6[b+"3c"].1c("2H",6.4r.1l(6)).1c("3m",6.4r.1l(6)).1c("2r",6[b=="1i"?b:"2q"].1p(d).1l(6));6["3d"+c+"3e"].1c("2r",6[b=="1i"?b:"2q"].1p(e).1p(d).1l(6)).1c("2H",E.1e.7w(6["3d"+c+"3e"],6.v.1t.1u.7x).1p(e).1l(6)).1c("3m",E.1e.7w(6["3d"+c+"3e"],6.v.1t.1u.2M).1p(e).1l(6));6["S"+c].1c("2r",6[b=="1i"?b:"2q"].1p(e).1p(d).1l(6))},6);F a=[6.2x,6.2N];o?a.3b("1e",1):a.10(9(b){b.1c("2H",E.1e.L(6,b,6.v.1t.1u.7x)).1c("3m",E.1e.L(6,b,6.v.1t.1u.2M))},6);6.2N.1c("2r",6.5w.1l(6));6.3N.1c("2r",6.5w.1l(6));I(o||p){a=9(b,c){6.N.1G("Y").5x(0)!="-"&&b(c)};19.1c(1O,"3P",6.3B.1p(a).1l(6));19.1c(1O,"3k",6.3B.1p(a).1l(6))}p&&19.1c(1O,"3k",6.5s.1l(6));I(n){a=9(){6.S&&6.S.z({13:((X.7y.9X||0)+X.2B.7z()/2).20()+"D"})};19.1c(1O,"3P",a.1l(6));19.1c(1O,"3k",a.1l(6))}6.v.9Y&&(6.7A=9(b){F c=b.3n("a[2G~=N], 3l[2G~=N]");!c||(b.4q(),c.1Q||y O.3A(c),6.7B(c))}.1l(6),$(X.1W).1c("2H",6.7A))},44:9(a){I(!a||!6.3s.6q("1h")){6.7C&&R.2n.2o("9Z").22(6.a0);6.7C=y R.7D(6.3s,{2P:{1Z:(a?0:6.1P.1N.C)+"D"},1U:a?6.v.2Z.1N.P:0,K:6.K,27:a?6.v.2Z.1N.27:0,1k:9(){6.3s.a1("1h",a)}.L(6)})}},7E:9(){F a={};$w("B C").10(9(b){F c=b.1C(),d=X.7y;a[b]=1d.1M.2s?[d["a2"+c],d["3P"+c]].a3():1d.1M.4y?X.1W["3P"+c]:d["3P"+c]});M a},5s:9(){!p||6.28.z(l(6.7E()))},7v:9(){M 9(a){6.u&&6.u.v&&a.3n(".6c, .64 .1w, .6f, .7F"+(6.u.v.6B?", #5Y":""))&&6.V()}}(),4r:9(a){F b=a.7G.2O,c=6.1E.B;c={1z:(a.W=="2H"?0:b=="2b"?c:-1*c)+"D"};6.3Q||(6.3Q={});6.3Q[b]&&R.2n.2o("7H"+b).22(6.3Q[b]);6.3Q[b]=y R.7D(6[b+"3c"],{2P:c,1U:6.v.2Z.35[a.W=="3m"?"V":"P"],K:{30:"7H"+b,a4:1},27:a.W=="3m"?0.1:0})},2C:9(){I(6.17){F a=6.U,b=6.17.1g;M{2q:a<=0?b-1:a-1,1i:a>=b-1?0:a+1}}},4Q:9(a,b,c){c=c||6.v;F d=c.2J,e=c.12;U={Y:b.5x(0)=="t",13:b.5x(1)=="l"};I(q){b=y E("2Y",{H:"a5"+b.1C(),B:e+"D",C:e+"D"});b.z("4R:13");a.G(b);a=b.4x("2d");a.a6=c.Q;a.a7(U.13?d:e-d,U.Y?d:e-d,d,0,6J.a8*2,1T);a.a9();a.7I(U.13?d:0,0,e-d,e);a.7I(0,U.Y?d:0,e,e-d)}1j{c=(y E("31:aa",{ab:c.Q,ac:"52",ad:c.Q,ae:(d/e*0.5).3L(2)})).z({B:2*e-1+"D",C:2*e-1+"D",U:"2K",13:(U.13?0:-1*e)+"D",Y:(U.Y?0:-1*e)+"D"});a.G(c);c.4e=c.4e}},6r:9(){9 a(){M $$("3g, 58, 2c")}1d.1M.2s&&X.4E>=8&&(a=9(){M X.af("3g, 58, 2c")});M 9(){I(!6.5y){F b=a();6.3I=[];7J(F c=0,d=b.1g;c<d;c++){F e=b[c];6.3I.3K({1s:e,1b:e.2P.1b});e.2P.1b="1F"}6.5y=1T}}}(),7n:9(){6.3I.10(9(a){a.1s.2P.1b=a.1b});5b 6.3I;6.5y=2e},5e:9(){M{B:6.1R.B,C:6.1R.C+6.2U.C}},73:9(){F a=6.5e(),b=2*6.12;M{B:a.B+b,C:a.C+b}},72:9(){F a=2*6.1E.C+21,b=6.4o();M{B:b.B-a,C:b.C-a}},4o:9(){F a=X.2B.24();6.S&&6.S.1h()&&6.17&&6.17.1g>1&&(a.C-=6.47);M a}});(9(){9 a(b,c){!6.u||b(c)}$w("2V 4d").10(9(b){6[b]=6[b].1p(a)},O)})();T.1a(O,{7K:9(){!6.u.v.51||(6.4s=6.7L.1l(6),X.1c("7M",6.4s))},4T:9(){6.4s&&X.ag("7M",6.4s)},7L:9(a){F b=ah.ai(a.7N).4k(),c=a.7N,d=(6.u.23()||6.2z)&&!6.5i,e=6.u.v.2m,g;6.u.4n()?(a.4q(),g=c==19.7O||["x","c"].5z(b)?"V":c==37&&d&&(6.v.2D||6.U!=0)?"2q":c==39&&d&&(6.v.2D||6.2C().1i!=0)?"1i":b=="p"&&e&&d?"7p":b=="s"&&e&&d?"2W":1r,b!="s"&&6.2W()):g=c==19.7O?"V":1r;g&&6[g]();d&&(c==19.aj&&6.17.ak()!=6.u&&6.P(0),c==19.al&&6.17.am()!=6.u&&6.P(6.17.1g-1))}});O.4l=O.4l.1p(9(a,b){6.7K();a(b)});T.1a(O,{6y:9(a){a=6.46(a);!a||a.3w(O.3R)},6F:9(){I(6.17.1g!=0){F a=6.2C();6.7P([a.1i,a.2q])}},7P:9(a){F b=6.17&&6.17.5z(a)||T.an(a)?6.17:a.1J?6.4V(a.1J):1r;I(b)$A(T.6x(a)?[a]:a.W?[b.1S(a)]:a).ao().10(9(c){6.5A(b[c])},6)},7Q:9(a,b){a.4a={B:b.B,C:b.C}},5A:9(a){I(!(a.4a||a.4t||!a.18)){F b=y 1Y;b.1o=9(){b.1o=1d.2a;a.4t=1r;6.7Q(a,b)}.L(6);a.4t=1T;b.1n=a.18}},7B:9(a){(a=a.1Q)&&a.4a||a.4t||!a.2A()||6.5A(a)}});E.ap({1B:9(a,b,c){a=$(a);c=T.1a({7R:"Y 13",34:"43-34",5B:"6M",Q:""},c||{});a.z(n?{aq:"ar:as.at.au(1n=\'"+b+"\'\', 5B=\'"+c.5B+"\')"}:{33:c.Q+" 3r("+b+") "+c.7R+" "+c.34});M a}});T.1a(O,{5C:9(a){F b;$w("3J 2S 2j 3h").10(9(c){av("\\\\.("+6.aw[c].2t(/\\s+/g,"|")+")(\\\\?.*)?","i").3W(a)&&(b=c)}.L(6));I(b)M b;I(a.3f("#"))M"4h";I(X.7S&&X.7S!=a.2t(/(^.*\\/\\/)|(:.*)|(\\/.*)/g,""))M"2j";M"2S"},6I:9(a){M(a=a.ax(/\\?.*/,"").3q(/\\.([^.]{3,4})$/))?a[1]:1r},5a:9(a){F b="<"+a.1L,c;7J(c 6R a)["3i","5D","1L"].5z(c)||(b+=" "+c+\'="\'+a[c]+\'"\');/^(?:3l|ay|az|4P|aA|aB|aC|6H|7T|aD|aE|aF|2k|aG|aH|aI)$/i.3W(a.1L)?b+="/>":(b+=">",a.3i&&a.3i.10(9(d){b+=6.5a(d)}.L(6)),a.5D&&(b+=a.5D),b+="</"+a.1L+">");M b}});(9(){9 a(c){F d=2e;I(b)d=$A(2I.5E).7t("26").6A(",").1S(c)>=0;1j 3D{d=y aJ(c)}3E(e){}M!!d}F b=2I.5E&&2I.5E.1g;b?1O.O.48={3J:a("aK aL"),3h:a("5F")}:1O.O.48={3J:a("7U.7U"),3h:a("5F.5F")}})();O.3A=aM.aN({aO:9(a){I(!a.1Q){F b=T.6w(a);b&&!a.1Q&&(a.1Q=6,a.1x&&(a.1Q.3O=a.1x,O.v.7V&&a.aP("1x","")));6.18=b?a.7W("18"):a.18;6.18.1S("#")>=0&&(6.18=6.18.57(6.18.1S("#")));F c=b?a.7W("1J"):a.1J;I(c){6.1J=c;I(c.3f("3S"))6.W="3S";1j I(c.3f("4u"))I(c.aQ("][")){c=c.7X("][");F d=c[1].3q(/([a-aR-Z]*)/)[1];I(d){6.W=d;c=c[0]+"]";a.7s("1J",c);6.1J=c}}1j 6.W=O.5C(6.18);1j 6.W=c}1j 6.1J=6.W=O.5C(6.18);$w("3G 3J 3S 2j 2S 4h 3h 7Y 7Z 4u").3w(9(e){F g=e.1C(),h=e.4k();"2S 3S 7Z 7Y 4u".1S(e)<0&&(6["aS"+g]=9(){M 6.W==h}.L(6))}.L(6));I(b&&a.1Q.3O){a=a.1Q.3O.7X(O.v.aT).3b("aU");a[0]&&(6.1x=a[0]);a[1]&&(6.1X=a[1]);6.v=(a=a[2])&&T.6v(a)?aV("({"+a+"})"):{}}1j{6.1x=a.1x;6.1X=a.1X;6.v=a.v||{}}6.v.5G&&(6.v.3G=T.55(6.v.5G),5b 6.v.5G)}},23:9(){M 6.W.3f("3S")},1I:9(){M 6.1J.3f("4u")},2A:9(){M 6.23()||6.W=="2S"},54:9(){M"2j 4h 3G".1S(6.W)>=0},4n:9(){M!6.54()}});O.3R=9(a){F b=$(a);y O.3A(a);M b};(9(){9 a(d){F e;e=d.7G;F g=d.W;(d=d.aW)&&d.3H&&(g==="4D"||g==="aX"||g==="2r"&&d.3H.4k()==="7T"&&d.W==="aY")&&(e=d);e.aZ==b0.b1&&(e=e.6T);I(e=e){F h;I(e){h=e.H;h=h.1g>0&&(h=="N"||/(^|\\s)N(\\s|$)/.3W(h))}h&&6.3R(e)}}9 b(d){d=d.3n("a[2G~=N], 3l[2G~=N]");!d||6.3R(d)}9 c(d){F e=d.3n("a[2G~=N], 3l[2G~=N]");!e||(d.4q(),6.3R(e),6.P(e))}X.1c("N:5W",9(){$(X.1W).1c("2r",c.1l(O));O.v.7V&&1d.1M.2s&&X.4E>=8?$(X.1W).1c("2H",a.1l(O)):$(X.1W).1c("2H",b.1l(O))})})();T.1a(O,{4v:9(){F a=6.v.S,b=a.12;$(X.1W).G(6.S=(y E("J",{2u:"b2"})).z({2v:6.v.2v+1,b3:a.1A+"D",U:"2K",1b:"1F"}).G(6.b4=(y E("J",{H:"b5"})).G((y E("J",{H:"4w b6"})).z("1A-13: "+b+"D").G(y E("J",{H:"29"}))).G((y E("J",{H:"5H"})).z({1A:"0 "+b+"D",C:b+"D"})).G((y E("J",{H:"4w b7"})).z("1A-13: -"+b+"D").G(y E("J",{H:"29"})))).G(6.3o=(y E("J",{H:"5I 6b"})).G(6.2Q=(y E("36",{H:"b8"})).z("1A: 0 "+b+"D").G((y E("1v",{H:"b9"})).G(6.2l=y E("J"))).G((y E("1v",{H:"3T ba"})).G(6.bb=(y E("J",{H:"1w"})).1B(6.11+"80.1m",{Q:a.Q}))).G((y E("1v",{H:"3T bc"})).G(6.bd=(y E("J",{H:"1w"})).1B(6.11+"be.1m",{Q:a.Q}))).G((y E("1v",{H:"3T bf"})).G(6.3N=(y E("J",{H:"1w"})).1B(6.11+"7r.1m",{Q:a.Q}))).G((y E("1v",{H:"3T 7F"})).G(6.bg=(y E("J",{H:"1w"})).1B(6.11+"bh.1m",{Q:a.Q}))))).G(6.bi=(y E("J",{H:"bj"})).G((y E("J",{H:"4w bk"})).z("1A-13: "+b+"D").G(y E("J",{H:"29"}))).G((y E("J",{H:"5H"})).z({1A:"0 "+b+"D",C:b+"D"})).G((y E("J",{H:"4w bm"})).z("1A-13: -"+b+"D").G(y E("J",{H:"29"})))));$w("2b 1i").10(9(d){6["S"+d.1C()].1H=d},6);o&&(6.S.V=9(){6.z("13:-32;Y:-32;1b:1F;");M 6},6.S.P=9(){6.z("1b:1h");M 6},6.S.1h=9(){M 6.1G("1b")=="1h"&&3U(6.1G("Y").2t("D",""))>-5X});6.S.2c(".3T J").3b("z",l(6.81));F c=6.S.2c(".29");$w("6g 6h bl 4P").10(9(d,e){a.2J>0?6.4Q(c[e],d,a):c[e].G(y E("J",{H:"2L"}));c[e].z({B:a.12+"D",C:a.12+"D"}).6i("29"+d.1C())},6);6.S.6j(".5I").z("B:7o%;");6.S.z(n?{U:"2K",Y:"1D",13:""}:{U:"3Y",Y:"1D",13:"50%"});6.S.2c(".5H",".5I",".1w",".2L").3b("z",{Q:a.Q});6.2l.1q((y 49(a.7f)).3p({U:82,2X:82}));6.2l.z({B:6.2l.7z()+"D",C:6.2Q.5r()+"D"});6.83();6.2l.1q("");6.S.V().z("1b:1h");6.7u();6.1V()},83:9(){F a,b,c=6.v.S,d=c.12;n?(a=6.2Q.24(),b=a.B+2*d,6.2Q.z({B:a.B+"D",1A:0}),6.3o.z("B:1D;"),6.2Q.z({bn:d+"D"}),6.3o.z({B:b+"D"}),$w("Y 3x").10(9(e){6["S"+e.1C()].z({B:b+"D"})},6),6.S.z("1A-13:-"+(b/2).20()+"D")):(6.3o.z("B:1D"),a=6.3o.24(),6.2l.bo().z({84:a.C+"D",B:6.2l.24().B+"D"}),6.S.z({B:a.B+"D",1z:0-(a.B/2).20()+"D"}),6.3o.z({B:a.B+"D"}),$w("Y 3x").10(9(e){6["S"+e.1C()].z({B:a.B+"D"})},6));6.6z=c.1A+a.C+2*d;6.6p=6.S.5r();6.2l.z({84:a.C+"D"})}});O.4v=O.4v.1p(9(a,b){F c=y 1Y;c.1o=9(){c.1o=1d.2a;6.81={B:c.B,C:c.C};a(b)}.L(6);c.1n=6.11+"80.1m";(y 1Y).1n=6.11+"7q.1m"});O.3X=O.3X.1p(9(a,b){a(b);6.4v()});O.V=O.V.1p(9(a,b){6.u&&6.u.1I()&&(6.S.V(),6.2l.1q(""));a(b)})})();I(5M 85!=\'5N\'){85()}O.4D();O.4G();',62,707,'||||||this|||function|||||||||||||||||||||view|options|||new|setStyle||width|height|px|Element|var|insert|className|if|div|queue|bind|return|lightview|Lightview|show|backgroundColor|Effect|controller|Object|position|hide|type|document|top||each|images|border|left||||views|href|Event|extend|visibility|observe|Prototype|setOpacity|menubar|length|visible|next|else|afterFinish|bindAsEventListener|png|src|onload|wrap|update|null|element|buttons|opacity|li|lv_Button|title|scaledInnerDimensions|marginLeft|margin|setPngBackground|capitalize|auto|sideDimensions|hidden|getStyle|prevnext|isSet|rel|_contentPosition|tag|Browser|topclose|window|closeDimensions|_view|innerDimensions|indexOf|true|duration|_lightviewLoadedEvent|body|caption|Image|marginTop|round||remove|isGallery|getDimensions||name|delay|overlay|lv_Corner|emptyFunction|prev|select||false|display|overflow|lightviewContent|case|iframe|param|setNumber|slideshow|Queues|get|value|previous|click|IE|replace|id|zIndex|center|closeButton|data|isSetGallery|isImage|viewport|getSurroundingIndexes|cyclic|prevButton|nextButton|class|mouseover|navigator|radius|absolute|lv_Fill|normal|slideshowButton|side|style|controllerCenter|content|image|break|menubarDimensions|fillMenuBar|stopSlideshow|total|canvas|effectDurations|scope|ns_vml|9500px|background|repeat|sideButtons|ul||padding||loading|invoke|ButtonImage|inner|Button|startsWith|object|quicktime|children|sliding|resize|area|mouseout|findElement|controllerMiddle|evaluate|match|url|topcloseButtonImage|innerPrevNext|imgNumber|lightviewError|_each|bottom|inlineContent|inlineMarker|View|restoreCenter|innerPreviousNext|try|catch|switch|ajax|tagName|overlappingRestore|flash|push|toFixed|floor|controllerSlideshow|_title|scroll|sideEffect|Extend|gallery|lv_ButtonWrapper|parseFloat|userAgent|test|build|fixed|prevButtonImage|nextButtonImage|resizeCenter|large|no|toggleTopClose|autosize|getSet|controllerOffset|Plugin|Template|preloadedDimensions|afterEffect|stopLoading|insertContent|outerHTML|resizeWithinViewport|onComplete|inline|isQuicktime|clearContent|toLowerCase|afterShow|isIframe|isMedia|getViewportDimensions|call|stop|toggleSideButton|keyboardEvent|isPreloading|set|buildController|lv_controllerCornerWrapper|getContext|WebKit|end|require|convertVersionString|parseInt|load|documentMode|default|start|counter|fire|lv_Wrapper|dataText|innerController|innerPrevButton|innerNextButton|gif|br|createCorner|float|small|disableKeyboardNavigation|restoreInlineContent|getViews|appear|pluginspage|pluginspages|wmode||keyboard|1px|startLoading|isExternal|clone|getHiddenDimensions|substr|embed|controls|createHTML|delete|isAjax|effects|getInnerDimensions|_resize|hidePrevNext|_afterResize|resizing|from|to|Appear|closeButtonWidth|_controllerCenterEffect|cursor|disabled|180|getHeight|maxOverlay|lightview_hide|menubarPadding|slideTimer|toggleSlideshow|charAt|preventingOverlap|member|preloadImageDimensions|sizingMethod|detectType|html|plugins|QuickTime|ajaxOptions|lv_controllerBetweenCorners|lv_controllerMiddle|keys|times|Gecko|typeof|undefined|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|down|close_|inner_slideshow_stop|prepare|cancel|controllerHeight|_controllerHeight|retrieve|hideOverlapping|hideContent|before|_inlineDisplayRestore|isString|isElement|isNumber|extendSet|_controllerOffset|join|overlayClose|Bottom|Top|_VMLPreloaded|preloadSurroundingImages|fullscreen|img|detectExtension|Math|scrolling|autoplay|scale|loop|mimetypes|flashvars|SetControllerVisible|in|Stop|parentNode|frames|adjustDimensionsToView|scaledI|nnerDimensions|isInline|finishShow|showContent|nextSlide|getBounds|getOuterDimensions|getScrollOffsets|Tween|transition|overflowX|overflowY|15px|beforeStart|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|getAttribute|split|external|media|controller_prev|controllerButtonDimensions|999|_fixateController|lineHeight|lightviewcolor|createElement|MSIE|exec|rv|mac|REQUIRED_Prototype|REQUIRED_Scriptaculous|Version|throw|requires|https|js|script|add|urn|schemas|microsoft|com|vml|createStyleSheet|cssText|behavior|arguments|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_innerPrevNext|lv_innerPrevButton|inner_prev|lv_ImgNumber|lv_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|FlashVars|ancestors|block|clientWidth|clientHeight|innerHTML|isFlash|min|paddingRight|paddingBottom|Parallel|opened|imgNumberTemplate|childElements|borderColor|lv_PrevButton|lv_NextButton|startDimensions|_openEffect|clearTimeout|Slideshow|slideshowDelay|updateViews|scrollLeft|preloadHover|lightview_topCloseEffect|topCloseEffect|store|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|RegExp|typeExtensions|gsub|base|basefont|col|frame|hr|link|isindex|meta|range|spacer|wbr|ActiveXObject|Shockwave|Flash|Class|create|initialize|setAttribute|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'.split('|'),0,{}))