﻿// databind.js
function BindNode(nodeName, obj) { var node = document.getElementById(nodeName); if (node == undefined) { return; } if (this.toString != undefined && typeof (this.toString) == "function") { node.innerHTML = obj.toString(); } else { node.innerHTML = obj; } } function Databinder(displaytype, separator, empty) { if (displaytype) { this.DisplayType = displaytype; } if (separator) { this.SeparatorTemplate = separator; } if (empty) { this.EmptyTemplate = empty; } } Databinder.prototype.DisplayType = "block"; Databinder.prototype.SeparatorTemplate = null; Databinder.prototype.EmptyTemplate = null; Object.prototype.DataBind = function (templateName, databinder, preserveNode) { if (preserveNode == undefined || !preserveNode) { _unbind(templateName); } if (this.length != undefined && this.get != undefined && typeof (this.get) == "function") { if (this.length == 0 && databinder && databinder.EmptyTemplate != null) { _databind(databinder.EmptyTemplate, this, preserveNode, 1, databinder); } for (i = 0; i < this.length; i++) { if (i > 0 && databinder && databinder.SeparatorTemplate != null) { _databind(databinder.SeparatorTemplate, this, preserveNode, i, databinder); } _databind(templateName, this.get(i), preserveNode, i + 1, databinder); } } else { _databind(templateName, this, preserveNode, 1, databinder); } }; Object.prototype.Evaluate = function (property) { return eval(property); }; var STARTBINDING = "{"; var ENDBINDING = "}"; function _unbind(template) { var templates = new Array(); if (typeof (template) == "function") { templates = template(null); } else { templates.push(template); } var j = 0; var hasFound = true; while (hasFound) { hasFound = false; j++; for (i = 0; i < templates.length; i++) { var elementName = templates[i].replace("-template", ""); var toRemove = document.getElementById(elementName + j); if (toRemove != undefined) { hasFound = true; toRemove.parentNode.removeChild(toRemove); } } } } function _databind(template, obj, preserveNode, index, databinder) { if (!template) { return; } var templateDiv; if (typeof (template) == "function") { templateDiv = document.getElementById(template(obj)); } else { templateDiv = document.getElementById(template); } if (templateDiv == undefined) { return; } var toParse = templateDiv.innerHTML; var htmlWriter = ""; var startBinding = 0; var endBinding = -1; while (startBinding > -1) { startBinding = toParse.indexOf(STARTBINDING, endBinding); if (startBinding != -1) { htmlWriter += toParse.substr(endBinding + 1, startBinding - endBinding - 1); endBinding = toParse.indexOf(ENDBINDING, startBinding); if (endBinding == -1) { break; } var toEval = toParse.substring(startBinding + 1, endBinding); if (typeof (obj) == "string") { toEval = toEval.replace("this", obj); try { htmlWriter += eval(toEval); } catch (e) { htmlWriter += "ERROR"; alert(e); } } else { htmlWriter += obj.Evaluate(toEval); } } } if (endBinding != -1 || startBinding == -1) { htmlWriter += toParse.substring(endBinding + 1, toParse.length); } var re = /conditionaldisplay="(.+?)"/gi; do { m = re.exec(htmlWriter); if (m != null) { var condition = false; if (typeof (obj) == "string") { condition = eval(m[1].replace(/this/g, obj)); } else { condition = obj.Evaluate(m[1]); } htmlWriter = htmlWriter.replace(m[0], condition ? "" : "style='display:none;'"); } } while (m != null); re = /conditionalsrc="(.+?)--(.+?)"/gi; do { m = re.exec(htmlWriter); if (m != null) { var condition = false; if (typeof (obj) == "string") { condition = eval(m[1].replace(/this/g, obj)); } else { condition = obj.Evaluate(m[1]); } htmlWriter = htmlWriter.replace(m[0], condition ? "src='" + m[2] + "'" : ""); } } while (m != null); htmlWriter = htmlWriter.replace(/lateid=/gi, "id="); htmlWriter = htmlWriter.replace(/latehref=/gi, "href="); htmlWriter = htmlWriter.replace(/latesrc=/gi, "src="); htmlWriter = htmlWriter.replace(/lateonclick=/gi, "onclick="); var element = templateDiv.cloneNode(false); element.id = element.id.replace("-template", ""); if (index != undefined) { element.id = element.id + index; } if (databinder && databinder.DisplayType) { element.style.display = databinder.DisplayType; } else { element.style.display = "block"; } templateDiv.parentNode.appendChild(element); element.innerHTML = htmlWriter; }

// context.js
context = function () { }; context.prototype.initialize = function () { this.DisplayedPanel = null; this.DisplayedPanelName = null; this.SmileyCollection = null; this.CurrentPage = 0; this.PageSize = 50; this.PageCount = 0; this.CurrentUser = null; this.MsgBlock = false; this.MsgLastId = 0; this.MessagesCount = 0; this.BlockMessageCount = false; this.NewMessages = null; this.IsSearch = false; this.SearchCriteria = null; this.User = null; this.MP = false; }; var context = new context(); context.initialize();

// prototype.js
var Class = { create: function () { return function () { this.initialize.apply(this, arguments); }; } }; var Abstract = new Object(); Object.extend = function (destination, source) { for (property in source) { destination[property] = source[property]; } return destination; }; Object.prototype.extend = function (object) { return Object.extend.apply(this, [this, object]); }; Function.prototype.bind = function (object) { var __method = this; return function () { __method.apply(object, arguments); }; }; Function.prototype.bindAsEventListener = function (object) { var __method = this; return function (event) { __method.call(object, event || window.event); }; }; Number.prototype.toColorPart = function () { var digits = this.toString(16); if (this < 16) { return "0" + digits; } return digits; }; var Try = { these: function () { var returnValue; for (var i = 0; i < arguments.length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; } }; function $() { var elements = new Array(); for (var i = 0; i < arguments.length; i++) { var element = arguments[i]; if (typeof element == "string") { element = document.getElementById(element); } if (arguments.length == 1) { return element; } elements.push(element); } return elements; } if (!window.Element) { var Element = new Object(); } Object.extend(Element, { get: function (element) { return $(element); }, toggle: function () { for (var i = 0; i < arguments.length; i++) { var element = $(arguments[i]); if (element) { element.style.display = (element.style.display == "none" ? "" : "none"); } } }, hide: function () { for (var i = 0; i < arguments.length; i++) { var element = $(arguments[i]); if (element) { element.style.display = "none"; } } }, show: function () { for (var i = 0; i < arguments.length; i++) { var element = $(arguments[i]); if (element) { element.style.display = ""; } } }, remove: function (element) { element = $(element); element.parentNode.removeChild(element); }, getHeight: function (element) { element = $(element); return element.offsetHeight; }, hasClassName: function (element, className) { element = $(element); if (!element) { return; } var a = element.className.split(" "); for (var i = 0; i < a.length; i++) { if (a[i] == className) { return true; } } return false; }, addClassName: function (element, className) { element = $(element); Element.removeClassName(element, className); element.className += " " + className; }, removeClassName: function (element, className) { element = $(element); if (!element) { return; } var newClassName = ""; var a = element.className.split(" "); for (var i = 0; i < a.length; i++) { if (a[i] != className) { if (i > 0) { newClassName += " "; } newClassName += a[i]; } } element.className = newClassName; }, cleanWhitespace: function (element) { var element = $(element); for (var i = 0; i < element.childNodes.length; i++) { var node = element.childNodes[i]; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) { Element.remove(node); } } } }); Element.Class = { toggle: function (element, className) { if (Element.Class.has(element, className)) { Element.Class.remove(element, className); if (arguments.length == 3) { Element.Class.add(element, arguments[2]); } } else { Element.Class.add(element, className); if (arguments.length == 3) { Element.Class.remove(element, arguments[2]); } } }, get: function (element) { element = $(element); return element.className.split(" "); }, remove: function (element) { element = $(element); var regEx; for (var i = 1; i < arguments.length; i++) { regEx = new RegExp("^" + arguments[i] + "\\b\\s*|\\s*\\b" + arguments[i] + "\\b", "g"); element.className = element.className.replace(regEx, ""); } }, add: function (element) { element = $(element); for (var i = 1; i < arguments.length; i++) { Element.Class.remove(element, arguments[i]); element.className += (element.className.length > 0 ? " " : "") + arguments[i]; } }, has: function (element) { element = $(element); if (!element || !element.className) { return false; } var regEx; for (var i = 1; i < arguments.length; i++) { regEx = new RegExp("\\b" + arguments[i] + "\\b"); if (!regEx.test(element.className)) { return false; } } return true; }, has_any: function (element) { element = $(element); if (!element || !element.className) { return false; } var regEx; for (var i = 1; i < arguments.length; i++) { if ((typeof arguments[i] == "object") && (arguments[i].constructor == Array)) { for (var j = 0; j < arguments[i].length; j++) { regEx = new RegExp("\\b" + arguments[i][j] + "\\b"); if (regEx.test(element.className)) { return true; } } } else { regEx = new RegExp("\\b" + arguments[i] + "\\b"); if (regEx.test(element.className)) { return true; } } } return false; }, childrenWith: function (element, className) { var children = $(element).getElementsByTagName("*"); var elements = new Array(); for (var i = 0; i < children.length; i++) { if (Element.Class.has(children[i], className)) { elements.push(children[i]); break; } } return elements; } };

// effects.js
Effect = {}; Effects = Effect; Effect.Transitions = {}; Effect.Transitions.linear = function (pos) { return pos; }; Effect.Transitions.sinoidal = function (pos) { return (-Math.cos(pos * Math.PI) / 2) + 0.5; }; Effect.Transitions.reverse = function (pos) { return 1 - pos; }; Effect.Transitions.flicker = function (pos) { return ((-Math.cos(pos * Math.PI) / 4) + 0.75) + Math.random(0.25); }; Effect.Transitions.wobble = function (pos) { return (-Math.cos(pos * Math.PI * (9 * pos)) / 2) + 0.5; }; Effect.Transitions.pulse = function (pos) { return (Math.floor(pos * 10) % 2 == 0 ? (pos * 10 - Math.floor(pos * 10)) : 1 - (pos * 10 - Math.floor(pos * 10))); }; Effect.Transitions.none = function (pos) { return 0; }; Effect.Transitions.full = function (pos) { return 1; }; Effect.Base = function () { }; Effect.Base.prototype = { setOptions: function (options) { this.options = { transition: Effect.Transitions.sinoidal, duration: 1, fps: 25, sync: false, from: 0, to: 1}.extend(options || {}); }, start: function (options) { this.setOptions(options || {}); this.currentFrame = 0; this.startOn = new Date().getTime(); this.finishOn = this.startOn + (this.options.duration * 1000); if (this.options.beforeStart) { this.options.beforeStart(this); } if (!this.options.sync) { this.loop(); } }, loop: function () { timePos = new Date().getTime(); if (timePos >= this.finishOn) { this.render(this.options.to); if (this.finish) { this.finish(); } if (this.options.afterFinish) { this.options.afterFinish(this); } return; } pos = (timePos - this.startOn) / (this.finishOn - this.startOn); frame = Math.round(pos * this.options.fps * this.options.duration); if (frame > this.currentFrame) { this.render(pos); this.currentFrame = frame; } this.timeout = setTimeout(this.loop.bind(this), 10); }, render: function (pos) { if (this.options.transition) { pos = this.options.transition(pos); } pos = pos * (this.options.to - this.options.from); pos += this.options.from; if (this.options.beforeUpdate) { this.options.beforeUpdate(this); } if (this.update) { this.update(pos); } if (this.options.afterUpdate) { this.options.afterUpdate(this); } }, cancel: function () { if (this.timeout) { clearTimeout(this.timeout); } } }; Effect.Parallel = Class.create(); Effect.Parallel.prototype = (new Effect.Base()).extend({ initialize: function (effects) { this.effects = effects || []; this.start(arguments[1]); }, update: function (position) { for (var i = 0; i < this.effects.length; i++) { this.effects[i].render(position); } }, finish: function (position) { for (var i = 0; i < this.effects.length; i++) { if (this.effects[i].finish) { this.effects[i].finish(position); } } } }); Effect.Opacity = Class.create(); Effect.Opacity.prototype = (new Effect.Base()).extend({ initialize: function (element) { this.element = $(element); options = { from: 0, to: 1}.extend(arguments[1] || {}); this.start(options); }, update: function (position) { this.setOpacity(position); }, setOpacity: function (opacity) { opacity = (opacity == 1) ? 0.99999 : opacity; this.element.style.opacity = opacity; this.element.style.filter = "alpha(opacity:" + opacity * 100 + ")"; } }); Effect.MoveBy = Class.create(); Effect.MoveBy.prototype = (new Effect.Base()).extend({ initialize: function (element, toTop, toLeft) { this.element = $(element); this.originalTop = parseFloat(this.element.style.top || "0"); this.originalLeft = parseFloat(this.element.style.left || "0"); this.toTop = toTop; this.toLeft = toLeft; if (this.element.style.position == "") { this.element.style.position = "relative"; } this.start(arguments[3]); }, update: function (position) { topd = this.toTop * position + this.originalTop; leftd = this.toLeft * position + this.originalLeft; this.setPosition(topd, leftd); }, setPosition: function (topd, leftd) { this.element.style.top = topd + "px"; this.element.style.left = leftd + "px"; } }); Effect.Scale = Class.create(); Effect.Scale.prototype = (new Effect.Base()).extend({ initialize: function (element, percent) { this.element = $(element); options = { scaleX: true, scaleY: true, scaleContent: true, scaleFromCenter: false, scaleMode: "box", scaleFrom: 100}.extend(arguments[2] || {}); this.originalTop = this.element.offsetTop; this.originalLeft = this.element.offsetLeft; if (this.element.style.fontSize == "") { this.sizeEm = 1; } if (this.element.style.fontSize && this.element.style.fontSize.indexOf("em") > 0) { this.sizeEm = parseFloat(this.element.style.fontSize); } this.factor = (percent / 100) - (options.scaleFrom / 100); if (options.scaleMode == "box") { this.originalHeight = this.element.clientHeight; this.originalWidth = this.element.clientWidth; } else { if (options.scaleMode == "contents") { this.originalHeight = this.element.scrollHeight; this.originalWidth = this.element.scrollWidth; } else { this.originalHeight = options.scaleMode.originalHeight; this.originalWidth = options.scaleMode.originalWidth; } } this.start(options); }, update: function (position) { currentScale = (this.options.scaleFrom / 100) + (this.factor * position); if (this.options.scaleContent && this.sizeEm) { this.element.style.fontSize = this.sizeEm * currentScale + "em"; } this.setDimensions(this.originalWidth * currentScale, this.originalHeight * currentScale); }, setDimensions: function (width, height) { if (this.options.scaleX) { this.element.style.width = width + "px"; } if (this.options.scaleY) { this.element.style.height = height + "px"; } if (this.options.scaleFromCenter) { topd = (height - this.originalHeight) / 2; leftd = (width - this.originalWidth) / 2; if (this.element.style.position == "absolute") { if (this.options.scaleY) { this.element.style.top = this.originalTop - topd + "px"; } if (this.options.scaleX) { this.element.style.left = this.originalLeft - leftd + "px"; } } else { if (this.options.scaleY) { this.element.style.top = -topd + "px"; } if (this.options.scaleX) { this.element.style.left = -leftd + "px"; } } } } }); Effect.Highlight = Class.create(); Effect.Highlight.prototype = (new Effect.Base()).extend({ initialize: function (element) { this.element = $(element); var endcolor = "#ffffff"; var current = this.element.style.backgroundColor; if (current && current.slice(0, 4) == "rgb(") { endcolor = "#"; var cols = current.slice(4, current.length - 1).split(","); var i = 0; do { endcolor += parseInt(cols[i]).toColorPart(); } while (++i < 3); } var options = { startcolor: "#ffff99", endcolor: endcolor}.extend(arguments[1] || {}); this.colors_base = [parseInt(options.startcolor.slice(1, 3), 16), parseInt(options.startcolor.slice(3, 5), 16), parseInt(options.startcolor.slice(5), 16)]; this.colors_delta = [parseInt(options.endcolor.slice(1, 3), 16) - this.colors_base[0], parseInt(options.endcolor.slice(3, 5), 16) - this.colors_base[1], parseInt(options.endcolor.slice(5), 16) - this.colors_base[2]]; this.start(options); }, update: function (position) { var colors = [Math.round(this.colors_base[0] + (this.colors_delta[0] * position)), Math.round(this.colors_base[1] + (this.colors_delta[1] * position)), Math.round(this.colors_base[2] + (this.colors_delta[2] * position))]; this.element.style.backgroundColor = "#" + colors[0].toColorPart() + colors[1].toColorPart() + colors[2].toColorPart(); } }); Effect.Fade = function (element) { options = { from: 1, to: 0, afterFinish: function (effect) { Element.hide(effect.element); effect.setOpacity(1); } }.extend(arguments[1] || {}); new Effect.Opacity(element, options); }; Effect.Appear = function (element) { options = { from: 0, to: 1, beforeStart: function (effect) { effect.setOpacity(0); Element.show(effect.element); }, afterUpdate: function (effect) { Element.show(effect.element); } }.extend(arguments[1] || {}); new Effect.Opacity(element, options); }; Effect.Puff = function (element) { new Effect.Parallel([new Effect.Scale(element, 200, { sync: true, scaleFromCenter: true }), new Effect.Opacity(element, { sync: true, to: 0, from: 1 })], { duration: 1, afterUpdate: function (effect) { effect.effects[0].element.style.position = "absolute"; }, afterFinish: function (effect) { Element.hide(effect.effects[0].element); } }); }; Effect.BlindLeft = function (element) { $(element)._overflow = $(element).style.overflow || "visible"; $(element).style.overflow = "hidden"; Element.show(element); new Effect.Scale(element, 100, { scaleContent: false, scaleX: true, scaleY: false, scaleMode: "contents", scaleFrom: 0, afterFinish: function (effect) { effect.element.style.overflow = effect.element._overflow; } }.extend(arguments[1] || {})); }; Effect.BlindRight = function (element) { $(element)._overflow = $(element).style.overflow || "visible"; $(element).style.overflow = "hidden"; new Effect.Scale(element, 0, { scaleContent: false, scaleX: true, scaleY: false, afterFinish: function (effect) { Element.hide(effect.element); effect.element.style.overflow = effect.element._overflow; } }.extend(arguments[1] || {})); }; Effect.BlindUp = function (element) { $(element)._overflow = $(element).style.overflow || "visible"; $(element).style.overflow = "hidden"; new Effect.Scale(element, 0, { scaleContent: false, scaleX: false, afterFinish: function (effect) { Element.hide(effect.element); effect.element.style.overflow = effect.element._overflow; } }.extend(arguments[1] || {})); }; Effect.BlindDown = function (element) { $(element).style.height = "0px"; $(element)._overflow = $(element).style.overflow || "visible"; $(element).style.overflow = "hidden"; Element.show(element); new Effect.Scale(element, 100, { scaleContent: false, scaleX: false, scaleMode: "contents", scaleFrom: 0, afterFinish: function (effect) { effect.element.style.overflow = effect.element._overflow; } }.extend(arguments[1] || {})); }; Effect.SwitchOff = function (element) { new Effect.Appear(element, { duration: 0.4, transition: Effect.Transitions.flicker, afterFinish: function (effect) { effect.element.style.overflow = "hidden"; new Effect.Scale(effect.element, 1, { duration: 0.3, scaleFromCenter: true, scaleX: false, scaleContent: false, afterUpdate: function (effect) { if (effect.element.style.position == "") { effect.element.style.position = "relative"; } }, afterFinish: function (effect) { Element.hide(effect.element); } }); } }); }; Effect.DropOut = function (element) { new Effect.Parallel([new Effect.MoveBy(element, 100, 0, { sync: true }), new Effect.Opacity(element, { sync: true, to: 0, from: 1 })], { duration: 0.5, afterFinish: function (effect) { Element.hide(effect.effects[0].element); } }); }; Effect.Shake = function (element) { new Effect.MoveBy(element, 0, 20, { duration: 0.05, afterFinish: function (effect) { new Effect.MoveBy(effect.element, 0, -40, { duration: 0.1, afterFinish: function (effect) { new Effect.MoveBy(effect.element, 0, 40, { duration: 0.1, afterFinish: function (effect) { new Effect.MoveBy(effect.element, 0, -40, { duration: 0.1, afterFinish: function (effect) { new Effect.MoveBy(effect.element, 0, 40, { duration: 0.1, afterFinish: function (effect) { new Effect.MoveBy(effect.element, 0, -20, { duration: 0.05, afterFinish: function (effect) { } }); } }); } }); } }); } }); } }); }; Effect.SlideDown = function (element, callback) { $(element)._overflow = $(element).style.overflow || "visible"; $(element).style.height = "0px"; $(element).style.overflow = "hidden"; $(element).firstChild.style.position = "relative"; Element.show(element); new Effect.Scale(element, 100, { scaleContent: false, scaleX: false, scaleMode: "contents", scaleFrom: 0, afterUpdate: function (effect) { effect.element.firstChild.style.bottom = (effect.originalHeight - effect.element.clientHeight) + "px"; }, afterFinish: function (effect) { effect.element.style.overflow = effect.element._overflow; if (callback) { callback(); } } }.extend(arguments[1] || {})); }; Effect.SlideUp = function (element, callback) { $(element)._overflow = $(element).style.overflow || "visible"; $(element).style.overflow = "hidden"; $(element).firstChild.style.position = "relative"; Element.show(element); new Effect.Scale(element, 0, { scaleContent: false, scaleX: false, afterUpdate: function (effect) { effect.element.firstChild.style.bottom = (effect.originalHeight - effect.element.clientHeight) + "px"; }, afterFinish: function (effect) { Element.hide(effect.element); effect.element.style.overflow = effect.element._overflow; if (callback) { callback(); } } }.extend(arguments[1] || {})); }; Effect.Squish = function (element) { new Effect.Scale(element, 0, { afterFinish: function (effect) { Element.hide(effect.element); } }); }; Effect.Grow = function (element) { element = $(element); var options = arguments[1] || {}; var originalWidth = element.clientWidth; var originalHeight = element.clientHeight; element.style.overflow = "hidden"; Element.show(element); var direction = options.direction || "center"; var moveTransition = options.moveTransition || Effect.Transitions.sinoidal; var scaleTransition = options.scaleTransition || Effect.Transitions.sinoidal; var opacityTransition = options.opacityTransition || Effect.Transitions.full; var initialMoveX, initialMoveY; var moveX, moveY; switch (direction) { case "top-left": initialMoveX = initialMoveY = moveX = moveY = 0; break; case "top-right": initialMoveX = originalWidth; initialMoveY = moveY = 0; moveX = -originalWidth; break; case "bottom-left": initialMoveX = moveX = 0; initialMoveY = originalHeight; moveY = -originalHeight; break; case "bottom-right": initialMoveX = originalWidth; initialMoveY = originalHeight; moveX = -originalWidth; moveY = -originalHeight; break; case "center": initialMoveX = originalWidth / 2; initialMoveY = originalHeight / 2; moveX = -originalWidth / 2; moveY = -originalHeight / 2; break; } new Effect.MoveBy(element, initialMoveY, initialMoveX, { duration: 0.01, beforeUpdate: function (effect) { $(element).style.height = "0px"; }, afterFinish: function (effect) { new Effect.Parallel([new Effect.Opacity(element, { sync: true, to: 1, from: 0, transition: opacityTransition }), new Effect.MoveBy(element, moveY, moveX, { sync: true, transition: moveTransition }), new Effect.Scale(element, 100, { scaleMode: { originalHeight: originalHeight, originalWidth: originalWidth }, sync: true, scaleFrom: 0, scaleTo: 100, transition: scaleTransition })], options); } }); }; Effect.Shrink = function (element) { element = $(element); var options = arguments[1] || {}; var originalWidth = element.clientWidth; var originalHeight = element.clientHeight; element.style.overflow = "hidden"; Element.show(element); var direction = options.direction || "center"; var moveTransition = options.moveTransition || Effect.Transitions.sinoidal; var scaleTransition = options.scaleTransition || Effect.Transitions.sinoidal; var opacityTransition = options.opacityTransition || Effect.Transitions.none; var moveX, moveY; switch (direction) { case "top-left": moveX = moveY = 0; break; case "top-right": moveX = originalWidth; moveY = 0; break; case "bottom-left": moveX = 0; moveY = originalHeight; break; case "bottom-right": moveX = originalWidth; moveY = originalHeight; break; case "center": moveX = originalWidth / 2; moveY = originalHeight / 2; break; } new Effect.Parallel([new Effect.Opacity(element, { sync: true, to: 0, from: 1, transition: opacityTransition }), new Effect.Scale(element, 0, { sync: true, transition: moveTransition }), new Effect.MoveBy(element, moveY, moveX, { sync: true, transition: scaleTransition })], options); }; Effect.Pulsate = function (element) { var options = arguments[1] || {}; var transition = options.transition || Effect.Transitions.sinoidal; var reverser = function (pos) { return transition(1 - Effect.Transitions.pulse(pos)); }; reverser.bind(transition); new Effect.Opacity(element, { duration: 3, afterFinish: function (effect) { Element.show(effect.element); } }.extend(options).extend({ transition: reverser })); }; Effect.Fold = function (element) { $(element).style.overflow = "hidden"; new Effect.Scale(element, 5, { scaleContent: false, scaleTo: 100, scaleX: false, afterFinish: function (effect) { new Effect.Scale(element, 1, { scaleContent: false, scaleTo: 0, scaleY: false, afterFinish: function (effect) { Element.hide(effect.element); } }); } }.extend(arguments[1] || {})); }; Element.setContentZoom = function (element, percent) { var element = $(element); element.style.fontSize = (percent / 100) + "em"; if (navigator.appVersion.indexOf("AppleWebKit") > 0) { window.scrollBy(0, 0); } };