1 /* automatically generated from prototype/prototype.js, do not edit ! */
2 @"/* Prototype: an object-oriented Javascript library, version 1.2.0\n"
3 @" * (c) 2005 Sam Stephenson <sam@conio.net>\n"
5 @" * THIS FILE IS AUTOMATICALLY GENERATED. When sending patches, please diff\n"
6 @" * against the source tree, available from the Prototype darcs repository. \n"
8 @" * Prototype is freely distributable under the terms of an MIT-style license.\n"
10 @" * For details, see the Prototype web site: http://prototype.conio.net/\n"
12 @"/*--------------------------------------------------------------------------*/\n"
13 @"var Prototype = {\n"
14 @" Version: '1.2.0'\n"
17 @" create: function() {\n"
18 @" return function() { \n"
19 @" this.initialize.apply(this, arguments);\n"
23 @"var Abstract = new Object();\n"
24 @"Object.prototype.extend = function(object) {\n"
25 @" for (property in object) {\n"
26 @" this[property] = object[property];\n"
30 @"Function.prototype.bind = function(object) {\n"
31 @" var method = this;\n"
32 @" return function() {\n"
33 @" method.apply(object, arguments);\n"
36 @"Function.prototype.bindAsEventListener = function(object) {\n"
37 @" var method = this;\n"
38 @" return function(event) {\n"
39 @" method.call(object, event || window.event);\n"
42 @"Number.prototype.toColorPart = function() {\n"
43 @" var digits = this.toString(16);\n"
44 @" if (this < 16) return '0' + digits;\n"
48 @" these: function() {\n"
49 @" var returnValue;\n"
51 @" for (var i = 0; i < arguments.length; i++) {\n"
52 @" var lambda = arguments[i];\n"
54 @" returnValue = lambda();\n"
59 @" return returnValue;\n"
62 @"/*--------------------------------------------------------------------------*/\n"
63 @"var PeriodicalExecuter = Class.create();\n"
64 @"PeriodicalExecuter.prototype = {\n"
65 @" initialize: function(callback, frequency) {\n"
66 @" this.callback = callback;\n"
67 @" this.frequency = frequency;\n"
68 @" this.currentlyExecuting = false;\n"
70 @" this.registerCallback();\n"
73 @" registerCallback: function() {\n"
74 @" setTimeout(this.onTimerEvent.bind(this), this.frequency * 1000);\n"
77 @" onTimerEvent: function() {\n"
78 @" if (!this.currentlyExecuting) {\n"
80 @" this.currentlyExecuting = true;\n"
81 @" this.callback(); \n"
83 @" this.currentlyExecuting = false;\n"
87 @" this.registerCallback();\n"
90 @"/*--------------------------------------------------------------------------*/\n"
92 @" var elements = new Array();\n"
94 @" for (var i = 0; i < arguments.length; i++) {\n"
95 @" var element = arguments[i];\n"
96 @" if (typeof element == 'string')\n"
97 @" element = document.getElementById(element);\n"
98 @" if (arguments.length == 1) \n"
101 @" elements.push(element);\n"
104 @" return elements;\n"
106 @"/*--------------------------------------------------------------------------*/\n"
107 @"if (!Array.prototype.push) {\n"
108 @" Array.prototype.push = function() {\n"
109 @" var startLength = this.length;\n"
110 @" for (var i = 0; i < arguments.length; i++)\n"
111 @" this[startLength + i] = arguments[i];\n"
112 @" return this.length;\n"
115 @"if (!Function.prototype.apply) {\n"
116 @" // Based on code from http://www.youngpup.net/\n"
117 @" Function.prototype.apply = function(object, parameters) {\n"
118 @" var parameterStrings = new Array();\n"
119 @" if (!object) object = window;\n"
120 @" if (!parameters) parameters = new Array();\n"
122 @" for (var i = 0; i < parameters.length; i++)\n"
123 @" parameterStrings[i] = 'x[' + i + ']';\n"
125 @" object.__apply__ = this;\n"
126 @" var result = eval('obj.__apply__(' + \n"
127 @" parameterStrings[i].join(', ') + ')');\n"
128 @" object.__apply__ = null;\n"
133 @"/*--------------------------------------------------------------------------*/\n"
135 @" getTransport: function() {\n"
136 @" return Try.these(\n"
137 @" function() {return new ActiveXObject('Msxml2.XMLHTTP')},\n"
138 @" function() {return new ActiveXObject('Microsoft.XMLHTTP')},\n"
139 @" function() {return new XMLHttpRequest()}\n"
143 @" emptyFunction: function() {}\n"
145 @"Ajax.Base = function() {};\n"
146 @"Ajax.Base.prototype = {\n"
147 @" setOptions: function(options) {\n"
148 @" this.options = {\n"
149 @" method: 'post',\n"
150 @" asynchronous: true,\n"
152 @" }.extend(options || {});\n"
155 @"Ajax.Request = Class.create();\n"
156 @"Ajax.Request.Events = \n"
157 @" ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];\n"
158 @"Ajax.Request.prototype = (new Ajax.Base()).extend({\n"
159 @" initialize: function(url, options) {\n"
160 @" this.transport = Ajax.getTransport();\n"
161 @" this.setOptions(options);\n"
164 @" if (this.options.method == 'get')\n"
165 @" url += '?' + this.options.parameters + '&_=';\n"
167 @" this.transport.open(this.options.method, url, true);\n"
169 @" if (this.options.asynchronous) {\n"
170 @" this.transport.onreadystatechange = this.onStateChange.bind(this);\n"
171 @" setTimeout((function() {this.respondToReadyState(1)}).bind(this), 10);\n"
174 @" this.transport.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n"
175 @" this.transport.setRequestHeader('X-Prototype-Version', Prototype.Version);\n"
176 @" if (this.options.method == 'post') {\n"
177 @" this.transport.setRequestHeader('Connection', 'close');\n"
178 @" this.transport.setRequestHeader('Content-type',\n"
179 @" 'application/x-www-form-urlencoded');\n"
182 @" this.transport.send(this.options.method == 'post' ? \n"
183 @" this.options.parameters + '&_=' : null);\n"
189 @" onStateChange: function() {\n"
190 @" var readyState = this.transport.readyState;\n"
191 @" if (readyState != 1)\n"
192 @" this.respondToReadyState(this.transport.readyState);\n"
195 @" respondToReadyState: function(readyState) {\n"
196 @" var event = Ajax.Request.Events[readyState];\n"
197 @" (this.options['on' + event] || Ajax.emptyFunction)(this.transport);\n"
200 @"Ajax.Updater = Class.create();\n"
201 @"Ajax.Updater.prototype = (new Ajax.Base()).extend({\n"
202 @" initialize: function(container, url, options) {\n"
203 @" this.container = $(container);\n"
204 @" this.setOptions(options);\n"
206 @" if (this.options.asynchronous) {\n"
207 @" this.onComplete = this.options.onComplete;\n"
208 @" this.options.onComplete = this.updateContent.bind(this);\n"
211 @" this.request = new Ajax.Request(url, this.options);\n"
213 @" if (!this.options.asynchronous)\n"
214 @" this.updateContent();\n"
217 @" updateContent: function() {\n"
218 @" if (this.options.insertion) {\n"
219 @" new this.options.insertion(this.container,\n"
220 @" this.request.transport.responseText);\n"
222 @" this.container.innerHTML = this.request.transport.responseText;\n"
224 @" if (this.onComplete) {\n"
225 @" setTimeout((function() {this.onComplete(this.request)}).bind(this), 10);\n"
229 @"/*--------------------------------------------------------------------------*/\n"
231 @" clear: function() {\n"
232 @" for (var i = 0; i < arguments.length; i++)\n"
233 @" $(arguments[i]).value = '';\n"
235 @" focus: function(element) {\n"
236 @" $(element).focus();\n"
239 @" present: function() {\n"
240 @" for (var i = 0; i < arguments.length; i++)\n"
241 @" if ($(arguments[i]).value == '') return false;\n"
245 @" select: function(element) {\n"
246 @" $(element).select();\n"
249 @" activate: function(element) {\n"
250 @" $(element).focus();\n"
251 @" $(element).select();\n"
254 @"/*--------------------------------------------------------------------------*/\n"
256 @" serialize: function(form) {\n"
257 @" var elements = Form.getElements($(form));\n"
258 @" var queryComponents = new Array();\n"
260 @" for (var i = 0; i < elements.length; i++) {\n"
261 @" var queryComponent = Form.Element.serialize(elements[i]);\n"
262 @" if (queryComponent)\n"
263 @" queryComponents.push(queryComponent);\n"
266 @" return queryComponents.join('&');\n"
269 @" getElements: function(form) {\n"
270 @" form = $(form);\n"
271 @" var elements = new Array();\n"
272 @" for (tagName in Form.Element.Serializers) {\n"
273 @" var tagElements = form.getElementsByTagName(tagName);\n"
274 @" for (var j = 0; j < tagElements.length; j++)\n"
275 @" elements.push(tagElements[j]);\n"
277 @" return elements;\n"
280 @" disable: function(form) {\n"
281 @" var elements = Form.getElements(form);\n"
282 @" for (var i = 0; i < elements.length; i++) {\n"
283 @" var element = elements[i];\n"
284 @" element.blur();\n"
285 @" element.disable = 'true';\n"
288 @" focusFirstElement: function(form) {\n"
289 @" form = $(form);\n"
290 @" var elements = Form.getElements(form);\n"
291 @" for (var i = 0; i < elements.length; i++) {\n"
292 @" var element = elements[i];\n"
293 @" if (element.type != 'hidden' && !element.disabled) {\n"
294 @" Field.activate(element);\n"
299 @" reset: function(form) {\n"
300 @" $(form).reset();\n"
303 @"Form.Element = {\n"
304 @" serialize: function(element) {\n"
305 @" element = $(element);\n"
306 @" var method = element.tagName.toLowerCase();\n"
307 @" var parameter = Form.Element.Serializers[method](element);\n"
310 @" return encodeURIComponent(parameter[0]) + '=' + \n"
311 @" encodeURIComponent(parameter[1]); \n"
314 @" getValue: function(element) {\n"
315 @" element = $(element);\n"
316 @" var method = element.tagName.toLowerCase();\n"
317 @" var parameter = Form.Element.Serializers[method](element);\n"
319 @" if (parameter) \n"
320 @" return parameter[1];\n"
323 @"Form.Element.Serializers = {\n"
324 @" input: function(element) {\n"
325 @" switch (element.type.toLowerCase()) {\n"
327 @" case 'password':\n"
329 @" return Form.Element.Serializers.textarea(element);\n"
330 @" case 'checkbox': \n"
332 @" return Form.Element.Serializers.inputSelector(element);\n"
336 @" inputSelector: function(element) {\n"
337 @" if (element.checked)\n"
338 @" return [element.name, element.value];\n"
340 @" textarea: function(element) {\n"
341 @" return [element.name, element.value];\n"
343 @" select: function(element) {\n"
344 @" var index = element.selectedIndex;\n"
345 @" var value = element.options[index].value || element.options[index].text;\n"
346 @" return [element.name, (index >= 0) ? value : ''];\n"
349 @"/*--------------------------------------------------------------------------*/\n"
350 @"var $F = Form.Element.getValue;\n"
351 @"/*--------------------------------------------------------------------------*/\n"
352 @"Abstract.TimedObserver = function() {}\n"
353 @"Abstract.TimedObserver.prototype = {\n"
354 @" initialize: function(element, frequency, callback) {\n"
355 @" this.frequency = frequency;\n"
356 @" this.element = $(element);\n"
357 @" this.callback = callback;\n"
359 @" this.lastValue = this.getValue();\n"
360 @" this.registerCallback();\n"
363 @" registerCallback: function() {\n"
364 @" setTimeout(this.onTimerEvent.bind(this), this.frequency * 1000);\n"
367 @" onTimerEvent: function() {\n"
368 @" var value = this.getValue();\n"
369 @" if (this.lastValue != value) {\n"
370 @" this.callback(this.element, value);\n"
371 @" this.lastValue = value;\n"
374 @" this.registerCallback();\n"
377 @"Form.Element.Observer = Class.create();\n"
378 @"Form.Element.Observer.prototype = (new Abstract.TimedObserver()).extend({\n"
379 @" getValue: function() {\n"
380 @" return Form.Element.getValue(this.element);\n"
383 @"Form.Observer = Class.create();\n"
384 @"Form.Observer.prototype = (new Abstract.TimedObserver()).extend({\n"
385 @" getValue: function() {\n"
386 @" return Form.serialize(this.element);\n"
389 @"/*--------------------------------------------------------------------------*/\n"
390 @"document.getElementsByClassName = function(className) {\n"
391 @" var children = document.getElementsByTagName('*') || document.all;\n"
392 @" var elements = new Array();\n"
394 @" for (var i = 0; i < children.length; i++) {\n"
395 @" var child = children[i];\n"
396 @" var classNames = child.className.split(' ');\n"
397 @" for (var j = 0; j < classNames.length; j++) {\n"
398 @" if (classNames[j] == className) {\n"
399 @" elements.push(child);\n"
405 @" return elements;\n"
407 @"/*--------------------------------------------------------------------------*/\n"
409 @" toggle: function() {\n"
410 @" for (var i = 0; i < arguments.length; i++) {\n"
411 @" var element = $(arguments[i]);\n"
412 @" element.style.display = \n"
413 @" (element.style.display == 'none' ? '' : 'none');\n"
416 @" hide: function() {\n"
417 @" for (var i = 0; i < arguments.length; i++) {\n"
418 @" var element = $(arguments[i]);\n"
419 @" element.style.display = 'none';\n"
422 @" show: function() {\n"
423 @" for (var i = 0; i < arguments.length; i++) {\n"
424 @" var element = $(arguments[i]);\n"
425 @" element.style.display = '';\n"
428 @" remove: function(element) {\n"
429 @" element = $(element);\n"
430 @" element.parentNode.removeChild(element);\n"
433 @" getHeight: function(element) {\n"
434 @" element = $(element);\n"
435 @" return element.offsetHeight; \n"
438 @"var Toggle = new Object();\n"
439 @"Toggle.display = Element.toggle;\n"
440 @"/*--------------------------------------------------------------------------*/\n"
441 @"Abstract.Insertion = function(adjacency) {\n"
442 @" this.adjacency = adjacency;\n"
444 @"Abstract.Insertion.prototype = {\n"
445 @" initialize: function(element, content) {\n"
446 @" this.element = $(element);\n"
447 @" this.content = content;\n"
449 @" if (this.adjacency && this.element.insertAdjacentHTML) {\n"
450 @" this.element.insertAdjacentHTML(this.adjacency, this.content);\n"
452 @" this.range = this.element.ownerDocument.createRange();\n"
453 @" if (this.initializeRange) this.initializeRange();\n"
454 @" this.fragment = this.range.createContextualFragment(this.content);\n"
455 @" this.insertContent();\n"
459 @"var Insertion = new Object();\n"
460 @"Insertion.Before = Class.create();\n"
461 @"Insertion.Before.prototype = (new Abstract.Insertion('beforeBegin')).extend({\n"
462 @" initializeRange: function() {\n"
463 @" this.range.setStartBefore(this.element);\n"
466 @" insertContent: function() {\n"
467 @" this.element.parentNode.insertBefore(this.fragment, this.element);\n"
470 @"Insertion.Top = Class.create();\n"
471 @"Insertion.Top.prototype = (new Abstract.Insertion('afterBegin')).extend({\n"
472 @" initializeRange: function() {\n"
473 @" this.range.selectNodeContents(this.element);\n"
474 @" this.range.collapse(true);\n"
477 @" insertContent: function() { \n"
478 @" this.element.insertBefore(this.fragment, this.element.firstChild);\n"
481 @"Insertion.Bottom = Class.create();\n"
482 @"Insertion.Bottom.prototype = (new Abstract.Insertion('beforeEnd')).extend({\n"
483 @" initializeRange: function() {\n"
484 @" this.range.selectNodeContents(this.element);\n"
485 @" this.range.collapse(this.element);\n"
488 @" insertContent: function() {\n"
489 @" this.element.appendChild(this.fragment);\n"
492 @"Insertion.After = Class.create();\n"
493 @"Insertion.After.prototype = (new Abstract.Insertion('afterEnd')).extend({\n"
494 @" initializeRange: function() {\n"
495 @" this.range.setStartAfter(this.element);\n"
498 @" insertContent: function() {\n"
499 @" this.element.parentNode.insertBefore(this.fragment, \n"
500 @" this.element.nextSibling);\n"
503 @"/*--------------------------------------------------------------------------*/\n"
504 @"var Effect = new Object();\n"
505 @"Effect.Highlight = Class.create();\n"
506 @"Effect.Highlight.prototype = {\n"
507 @" initialize: function(element) {\n"
508 @" this.element = $(element);\n"
509 @" this.start = 153;\n"
510 @" this.finish = 255;\n"
511 @" this.current = this.start;\n"
515 @" fade: function() {\n"
516 @" if (this.isFinished()) return;\n"
517 @" if (this.timer) clearTimeout(this.timer);\n"
518 @" this.highlight(this.element, this.current);\n"
519 @" this.current += 17;\n"
520 @" this.timer = setTimeout(this.fade.bind(this), 250);\n"
523 @" isFinished: function() {\n"
524 @" return this.current > this.finish;\n"
527 @" highlight: function(element, current) {\n"
528 @" element.style.backgroundColor = \"#ffff\" + current.toColorPart();\n"
531 @"Effect.Fade = Class.create();\n"
532 @"Effect.Fade.prototype = {\n"
533 @" initialize: function(element) {\n"
534 @" this.element = $(element);\n"
535 @" this.start = 100;\n"
536 @" this.finish = 0;\n"
537 @" this.current = this.start;\n"
541 @" fade: function() {\n"
542 @" if (this.isFinished()) { this.element.style.display = 'none'; return; }\n"
543 @" if (this.timer) clearTimeout(this.timer);\n"
544 @" this.setOpacity(this.element, this.current);\n"
545 @" this.current -= 10;\n"
546 @" this.timer = setTimeout(this.fade.bind(this), 50);\n"
549 @" isFinished: function() {\n"
550 @" return this.current <= this.finish;\n"
553 @" setOpacity: function(element, opacity) {\n"
554 @" opacity = (opacity == 100) ? 99.999 : opacity;\n"
555 @" element.style.filter = \"alpha(opacity:\"+opacity+\")\";\n"
556 @" element.style.opacity = opacity/100 /*//*/;\n"
559 @"Effect.Scale = Class.create();\n"
560 @"Effect.Scale.prototype = {\n"
561 @" initialize: function(element, percent) {\n"
562 @" this.element = $(element);\n"
563 @" this.startScale = 1.0;\n"
564 @" this.startHeight = this.element.offsetHeight;\n"
565 @" this.startWidth = this.element.offsetWidth;\n"
566 @" this.currentHeight = this.startHeight;\n"
567 @" this.currentWidth = this.startWidth;\n"
568 @" this.finishScale = (percent/100) /*//*/;\n"
569 @" if (this.element.style.fontSize==\"\") this.sizeEm = 1.0;\n"
570 @" if (this.element.style.fontSize.indexOf(\"em\")>0)\n"
571 @" this.sizeEm = parseFloat(this.element.style.fontSize);\n"
572 @" if(this.element.effect_scale) {\n"
573 @" clearTimeout(this.element.effect_scale.timer);\n"
574 @" this.startScale = this.element.effect_scale.currentScale;\n"
575 @" this.startHeight = this.element.effect_scale.startHeight;\n"
576 @" this.startWidth = this.element.effect_scale.startWidth;\n"
577 @" if(this.element.effect_scale.sizeEm) \n"
578 @" this.sizeEm = this.element.effect_scale.sizeEm; \n"
580 @" this.element.effect_scale = this;\n"
581 @" this.currentScale = this.startScale;\n"
582 @" this.factor = this.finishScale - this.startScale;\n"
583 @" this.options = arguments[2] || {}; \n"
587 @" scale: function() {\n"
588 @" if (this.isFinished()) { \n"
589 @" this.setDimensions(this.element, this.startWidth*this.finishScale, this.startHeight*this.finishScale);\n"
590 @" if(this.sizeEm) this.element.style.fontSize = this.sizeEm*this.finishScale + \"em\";\n"
591 @" if(this.options.complete) this.options.complete(this);\n"
594 @" if (this.timer) clearTimeout(this.timer);\n"
595 @" if (this.options.step) this.options.step(this);\n"
596 @" this.setDimensions(this.element, this.currentWidth, this.currentHeight);\n"
597 @" if(this.sizeEm) this.element.style.fontSize = this.sizeEm*this.currentScale + \"em\";\n"
598 @" this.currentScale += (this.factor/10) /*//*/;\n"
599 @" this.currentWidth = this.startWidth * this.currentScale;\n"
600 @" this.currentHeight = this.startHeight * this.currentScale;\n"
601 @" this.timer = setTimeout(this.scale.bind(this), 50);\n"
604 @" isFinished: function() {\n"
605 @" return (this.factor < 0) ? \n"
606 @" this.currentScale <= this.finishScale : this.currentScale >= this.finishScale;\n"
609 @" setDimensions: function(element, width, height) {\n"
610 @" element.style.width = width + 'px';\n"
611 @" element.style.height = height + 'px';\n"
614 @"Effect.Squish = Class.create();\n"
615 @"Effect.Squish.prototype = {\n"
616 @" initialize: function(element) {\n"
617 @" this.element = $(element);\n"
618 @" new Effect.Scale(this.element, 1, { complete: this.hide.bind(this) } );\n"
620 @" hide: function() {\n"
621 @" this.element.style.display = 'none';\n"
624 @"Effect.Puff = Class.create();\n"
625 @"Effect.Puff.prototype = {\n"
626 @" initialize: function(element) {\n"
627 @" this.element = $(element);\n"
628 @" this.opacity = 100;\n"
629 @" this.startTop = this.element.top || this.element.offsetTop;\n"
630 @" this.startLeft = this.element.left || this.element.offsetLeft;\n"
631 @" new Effect.Scale(this.element, 200, { step: this.fade.bind(this), complete: this.hide.bind(this) } );\n"
633 @" fade: function(effect) {\n"
634 @" topd = (((effect.currentScale)*effect.startHeight) - effect.startHeight)/2;\n"
635 @" leftd = (((effect.currentScale)*effect.startWidth) - effect.startWidth)/2;\n"
636 @" this.element.style.position='absolute';\n"
637 @" this.element.style.top = this.startTop-topd + \"px\";\n"
638 @" this.element.style.left = this.startLeft-leftd + \"px\";\n"
639 @" this.opacity -= 10;\n"
640 @" this.setOpacity(this.element, this.opacity); \n"
641 @" if(navigator.appVersion.indexOf('AppleWebKit')>0) this.element.innerHTML += ''; //force redraw on safari\n"
643 @" hide: function() {\n"
644 @" this.element.style.display = 'none';\n"
646 @" setOpacity: function(element, opacity) {\n"
647 @" opacity = (opacity == 100) ? 99.999 : opacity;\n"
648 @" element.style.filter = \"alpha(opacity:\"+opacity+\")\";\n"
649 @" element.style.opacity = opacity/100 /*//*/;\n"
652 @"Effect.Appear = Class.create();\n"
653 @"Effect.Appear.prototype = {\n"
654 @" initialize: function(element) {\n"
655 @" this.element = $(element);\n"
656 @" this.start = 0;\n"
657 @" this.finish = 100;\n"
658 @" this.current = this.start;\n"
662 @" fade: function() {\n"
663 @" if (this.isFinished()) return;\n"
664 @" if (this.timer) clearTimeout(this.timer);\n"
665 @" this.setOpacity(this.element, this.current);\n"
666 @" this.current += 10;\n"
667 @" this.timer = setTimeout(this.fade.bind(this), 50);\n"
670 @" isFinished: function() {\n"
671 @" return this.current > this.finish;\n"
674 @" setOpacity: function(element, opacity) {\n"
675 @" opacity = (opacity == 100) ? 99.999 : opacity;\n"
676 @" element.style.filter = \"alpha(opacity:\"+opacity+\")\";\n"
677 @" element.style.opacity = opacity/100 /*//*/;\n"
678 @" element.style.display = '';\n"
681 @"Effect.ContentZoom = Class.create();\n"
682 @"Effect.ContentZoom.prototype = {\n"
683 @" initialize: function(element, percent) {\n"
684 @" this.element = $(element);\n"
685 @" if (this.element.style.fontSize==\"\") this.sizeEm = 1.0;\n"
686 @" if (this.element.style.fontSize.indexOf(\"em\")>0)\n"
687 @" this.sizeEm = parseFloat(this.element.style.fontSize);\n"
688 @" if(this.element.effect_contentzoom) {\n"
689 @" this.sizeEm = this.element.effect_contentzoom.sizeEm;\n"
691 @" this.element.effect_contentzoom = this;\n"
692 @" this.element.style.fontSize = this.sizeEm*(percent/100) + \"em\" /*//*/;\n"
693 @" if(navigator.appVersion.indexOf('AppleWebKit')>0) { this.element.scrollTop -= 1; };\n"