From ddfafaac2c1f18aca0fda3b4157acd935b9ac9a2 Mon Sep 17 00:00:00 2001 From: xue <> Date: Sun, 30 Apr 2006 12:51:23 +0000 Subject: merge from 3.0 branch till 995. --- framework/Web/Javascripts/js/prado.js | 2584 +++++---------------------------- 1 file changed, 335 insertions(+), 2249 deletions(-) (limited to 'framework/Web/Javascripts/js/prado.js') diff --git a/framework/Web/Javascripts/js/prado.js b/framework/Web/Javascripts/js/prado.js index 394d5eeb..d80f984d 100644 --- a/framework/Web/Javascripts/js/prado.js +++ b/framework/Web/Javascripts/js/prado.js @@ -1,2260 +1,346 @@ - -var Prototype = { -Version: '1.50', -ScriptFragment: '(?:)((\n|\r|.)*?)(?:<\/script>)', -emptyFunction: function() {}, -K: function(x) {return x} -} -var Class = { -create: function() { -return function() { -this.initialize.apply(this, arguments); -} -} -} -var Abstract = new Object(); -Object.extend = function(destination, source) { -for (var property in source) { -destination[property] = source[property]; -} -return destination; -} -Object.inspect = function(object) { -try { -if (object == undefined) return 'undefined'; -if (object == null) return 'null'; -return object.inspect ? object.inspect() : object.toString(); -} catch (e) { -if (e instanceof RangeError) return '...'; -throw e; -} -} -Function.prototype.bind = function() { -var __method = this, args = $A(arguments), object = args.shift(); -return function() { -return __method.apply(object, args.concat($A(arguments))); -} -} -Function.prototype.bindAsEventListener = function(object) { -var __method = this; -return function(event) { -return __method.call(object, event || window.event); -} -} -Object.extend(Number.prototype, { -toColorPart: function() { -var digits = this.toString(16); -if (this < 16) return '0' + digits; -return digits; -}, -succ: function() { -return this + 1; -}, -times: function(iterator) { -$R(0, this, true).each(iterator); -return this; -} -}); -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; -} -} -var PeriodicalExecuter = Class.create(); -PeriodicalExecuter.prototype = { -initialize: function(callback, frequency) { -this.callback = callback; -this.frequency = frequency; -this.currentlyExecuting = false; -this.registerCallback(); -}, -registerCallback: function() { -setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); -}, -onTimerEvent: function() { -if (!this.currentlyExecuting) { -try { -this.currentlyExecuting = true; -this.callback(); -} finally { -this.currentlyExecuting = false; -} -} -} -} -Function.prototype.bindEvent = function() -{ -var __method = this, args = $A(arguments), object = args.shift(); -return function(event) -{ -return __method.apply(object, [event || window.event].concat(args)); -} -} -Class.extend = function(base, definition) -{ -var component = Class.create(); -Object.extend(component.prototype, base.prototype); -if(definition) -Object.extend(component.prototype, definition); -return component; -} -Object.extend(String.prototype, { -gsub: function(pattern, replacement) { -var result = '', source = this, match; -replacement = arguments.callee.prepareReplacement(replacement); -while (source.length > 0) { -if (match = source.match(pattern)) { -result += source.slice(0, match.index); -result += (replacement(match) || '').toString(); -source= source.slice(match.index + match[0].length); -} else { -result += source, source = ''; -} -} -return result; -}, -sub: function(pattern, replacement, count) { -replacement = this.gsub.prepareReplacement(replacement); -count = count === undefined ? 1 : count; -return this.gsub(pattern, function(match) { -if (--count < 0) return match[0]; -return replacement(match); -}); -}, -scan: function(pattern, iterator) { -this.gsub(pattern, iterator); -return this; -}, -truncate: function(length, truncation) { -length = length || 30; -truncation = truncation === undefined ? '...' : truncation; -return this.length > length ? -this.slice(0, length - truncation.length) + truncation : this; -}, -strip: function() { -return this.replace(/^\s+/, '').replace(/\s+$/, ''); -}, -stripTags: function() { -return this.replace(/<\/?[^>]+>/gi, ''); -}, -stripScripts: function() { -return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); -}, -extractScripts: function() { -var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); -var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); -return (this.match(matchAll) || []).map(function(scriptTag) { -return (scriptTag.match(matchOne) || ['', ''])[1]; -}); -}, -evalScripts: function() { -return this.extractScripts().map(function(script) { return eval(script) }); -}, -escapeHTML: function() { -var div = document.createElement('div'); -var text = document.createTextNode(this); -div.appendChild(text); -return div.innerHTML; -}, -unescapeHTML: function() { -var div = document.createElement('div'); -div.innerHTML = this.stripTags(); -return div.childNodes[0] ? div.childNodes[0].nodeValue : ''; -}, -toQueryParams: function() { -var pairs = this.match(/^\??(.*)$/)[1].split('&'); -return pairs.inject({}, function(params, pairString) { -var pair = pairString.split('='); -params[pair[0]] = pair[1]; -return params; -}); -}, -toArray: function() { -return this.split(''); -}, -camelize: function() { -var oStringList = this.split('-'); -if (oStringList.length == 1) return oStringList[0]; -var camelizedString = this.indexOf('-') == 0 -? oStringList[0].charAt(0).toUpperCase() + oStringList[0].substring(1) -: oStringList[0]; -for (var i = 1, len = oStringList.length; i < len; i++) { -var s = oStringList[i]; -camelizedString += s.charAt(0).toUpperCase() + s.substring(1); -} -return camelizedString; -}, -inspect: function() { -return "'" + this.replace(/\\/g, '\\\\').replace(/'/g, '\\\'') + "'"; -} -}); -String.prototype.gsub.prepareReplacement = function(replacement) { -if (typeof replacement == 'function') return replacement; -var template = new Template(replacement); -return function(match) { return template.evaluate(match) }; -} -String.prototype.parseQuery = String.prototype.toQueryParams; -var Template = Class.create(); -Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; -Template.prototype = { -initialize: function(template, pattern) { -this.template = template.toString(); -this.pattern= pattern || Template.Pattern; -}, -evaluate: function(object) { -return this.template.gsub(this.pattern, function(match) { -var before = match[1]; -if (before == '\\') return match[2]; -return before + (object[match[3]] || '').toString(); -}); -} -} -Object.extend(String.prototype, { -pad : function(side, len, chr) { -if (!chr) chr = ' '; -var s = this; -var left = side.toLowerCase()=='left'; -while (s.length0 ? m[2] : "0") + "." + m[4]; -var num = parseFloat(cleanInput); -return (isNaN(num) ? null : num); -}, -toCurrency : function(groupchar, digits, decimalchar) -{ -groupchar = groupchar || ","; -decimalchar = decimalchar || "."; -digits = typeof(digits) == "undefined" ? 2 : digits; -var exp = new RegExp("^\\s*([-\\+])?(((\\d+)\\" + groupchar + ")*)(\\d+)" -+ ((digits > 0) ? "(\\" + decimalchar + "(\\d{1," + digits + "}))?" : "") -+ "\\s*$"); -var m = this.match(exp); -if (m == null) -return null; -var intermed = m[2] + m[5] ; -var cleanInput = m[1] + intermed.replace( -new RegExp("(\\" + groupchar + ")", "g"), "") -+ ((digits > 0) ? "." + m[7] : ""); -var num = parseFloat(cleanInput); -return (isNaN(num) ? null : num); -}, -toDate : function(format) -{ -return Date.SimpleParse(this, format); -} -}); -var $break= new Object(); -var $continue = new Object(); -var Enumerable = { -each: function(iterator) { -var index = 0; -try { -this._each(function(value) { -try { -iterator(value, index++); -} catch (e) { -if (e != $continue) throw e; -} -}); -} catch (e) { -if (e != $break) throw e; -} -}, -all: function(iterator) { -var result = true; -this.each(function(value, index) { -result = result && !!(iterator || Prototype.K)(value, index); -if (!result) throw $break; -}); -return result; -}, -any: function(iterator) { -var result = true; -this.each(function(value, index) { -if (result = !!(iterator || Prototype.K)(value, index)) -throw $break; -}); -return result; -}, -collect: function(iterator) { -var results = []; -this.each(function(value, index) { -results.push(iterator(value, index)); -}); -return results; -}, -detect: function (iterator) { -var result; -this.each(function(value, index) { -if (iterator(value, index)) { -result = value; -throw $break; -} -}); -return result; -}, -findAll: function(iterator) { -var results = []; -this.each(function(value, index) { -if (iterator(value, index)) -results.push(value); -}); -return results; -}, -grep: function(pattern, iterator) { -var results = []; -this.each(function(value, index) { -var stringValue = value.toString(); -if (stringValue.match(pattern)) -results.push((iterator || Prototype.K)(value, index)); -}) -return results; -}, -include: function(object) { -var found = false; -this.each(function(value) { -if (value == object) { -found = true; -throw $break; -} -}); -return found; -}, -inject: function(memo, iterator) { -this.each(function(value, index) { -memo = iterator(memo, value, index); -}); -return memo; -}, -invoke: function(method) { -var args = $A(arguments).slice(1); -return this.collect(function(value) { -return value[method].apply(value, args); -}); -}, -max: function(iterator) { -var result; -this.each(function(value, index) { -value = (iterator || Prototype.K)(value, index); -if (result == undefined || value >= result) -result = value; -}); -return result; -}, -min: function(iterator) { -var result; -this.each(function(value, index) { -value = (iterator || Prototype.K)(value, index); -if (result == undefined || value < result) -result = value; -}); -return result; -}, -partition: function(iterator) { -var trues = [], falses = []; -this.each(function(value, index) { -((iterator || Prototype.K)(value, index) ? -trues : falses).push(value); -}); -return [trues, falses]; -}, -pluck: function(property) { -var results = []; -this.each(function(value, index) { -results.push(value[property]); -}); -return results; -}, -reject: function(iterator) { -var results = []; -this.each(function(value, index) { -if (!iterator(value, index)) -results.push(value); -}); -return results; -}, -sortBy: function(iterator) { -return this.collect(function(value, index) { -return {value: value, criteria: iterator(value, index)}; -}).sort(function(left, right) { -var a = left.criteria, b = right.criteria; -return a < b ? -1 : a > b ? 1 : 0; -}).pluck('value'); -}, -toArray: function() { -return this.collect(Prototype.K); -}, -zip: function() { -var iterator = Prototype.K, args = $A(arguments); -if (typeof args.last() == 'function') -iterator = args.pop(); -var collections = [this].concat(args).map($A); -return this.map(function(value, index) { -return iterator(collections.pluck(index)); -}); -}, -inspect: function() { -return '#'; -} -} -Object.extend(Enumerable, { -map: Enumerable.collect, -find:Enumerable.detect, -select:Enumerable.findAll, -member:Enumerable.include, -entries: Enumerable.toArray -}); -var $A = Array.from = function(iterable) { -if (!iterable) return []; -if (iterable.toArray) { -return iterable.toArray(); -} else { -var results = []; -for (var i = 0; i < iterable.length; i++) -results.push(iterable[i]); -return results; -} -} -Object.extend(Array.prototype, Enumerable); -if (!Array.prototype._reverse) -Array.prototype._reverse = Array.prototype.reverse; -Object.extend(Array.prototype, { -_each: function(iterator) { -for (var i = 0; i < this.length; i++) -iterator(this[i]); -}, -clear: function() { -this.length = 0; -return this; -}, -first: function() { -return this[0]; -}, -last: function() { -return this[this.length - 1]; -}, -compact: function() { -return this.select(function(value) { -return value != undefined || value != null; -}); -}, -flatten: function() { -return this.inject([], function(array, value) { -return array.concat(value && value.constructor == Array ? -value.flatten() : [value]); -}); -}, -without: function() { -var values = $A(arguments); -return this.select(function(value) { -return !values.include(value); -}); -}, -indexOf: function(object) { -for (var i = 0; i < this.length; i++) -if (this[i] == object) return i; -return -1; -}, -reverse: function(inline) { -return (inline !== false ? this : this.toArray())._reverse(); -}, -inspect: function() { -return '[' + this.map(Object.inspect).join(', ') + ']'; -} -}); -var Hash = { -_each: function(iterator) { -for (var key in this) { -var value = this[key]; -if (typeof value == 'function') continue; -var pair = [key, value]; -pair.key = key; -pair.value = value; -iterator(pair); -} -}, -keys: function() { -return this.pluck('key'); -}, -values: function() { -return this.pluck('value'); -}, -merge: function(hash) { -return $H(hash).inject($H(this), function(mergedHash, pair) { -mergedHash[pair.key] = pair.value; -return mergedHash; -}); -}, -toQueryString: function() { -return this.map(function(pair) { -return pair.map(encodeURIComponent).join('='); -}).join('&'); -}, -inspect: function() { -return '#'; -} -} -function $H(object) { -var hash = Object.extend({}, object || {}); -Object.extend(hash, Enumerable); -Object.extend(hash, Hash); -return hash; -} -ObjectRange = Class.create(); -Object.extend(ObjectRange.prototype, Enumerable); -Object.extend(ObjectRange.prototype, { -initialize: function(start, end, exclusive) { -this.start = start; -this.end = end; -this.exclusive = exclusive; -}, -_each: function(iterator) { -var value = this.start; -do { -iterator(value); -value = value.succ(); -} while (this.include(value)); -}, -include: function(value) { -if (value < this.start) -return false; -if (this.exclusive) -return value < this.end; -return value <= this.end; -} -}); -var $R = function(start, end, exclusive) { -return new ObjectRange(start, end, exclusive); -} -function $() { -var results = [], element; -for (var i = 0; i < arguments.length; i++) { -element = arguments[i]; -if (typeof element == 'string') -element = document.getElementById(element); -results.push(Element.extend(element)); -} -return results.length < 2 ? results[0] : results; -} -document.getElementsByClassName = function(className, parentElement) { -var children = ($(parentElement) || document.body).getElementsByTagName('*'); -return $A(children).inject([], function(elements, child) { -if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) -elements.push(Element.extend(child)); -return elements; -}); -} -if (!window.Element) -var Element = new Object(); -Element.extend = function(element) { -if (!element) return; -if (_nativeExtensions) return element; -if (!element._extended && element.tagName && element != window) { -var methods = Element.Methods, cache = Element.extend.cache; -for (property in methods) { -var value = methods[property]; -if (typeof value == 'function') -element[property] = cache.findOrStore(value); -} -} -element._extended = true; -return element; -} -Element.extend.cache = { -findOrStore: function(value) { -return this[value] = this[value] || function() { -return value.apply(null, [this].concat($A(arguments))); -} -} -} -Element.Methods = { -visible: function(element) { -return $(element).style.display != 'none'; -}, -toggle: function() { -for (var i = 0; i < arguments.length; i++) { -var element = $(arguments[i]); -Element[Element.visible(element) ? 'hide' : 'show'](element); -} -}, -hide: function() { -for (var i = 0; i < arguments.length; i++) { -var element = $(arguments[i]); -element.style.display = 'none'; -} -}, -show: function() { -for (var i = 0; i < arguments.length; i++) { -var element = $(arguments[i]); -element.style.display = ''; -} -}, -remove: function(element) { -element = $(element); -element.parentNode.removeChild(element); -}, -update: function(element, html) { -$(element).innerHTML = html.stripScripts(); -setTimeout(function() {html.evalScripts()}, 10); -}, -replace: function(element, html) { -element = $(element); -if (element.outerHTML) { -element.outerHTML = html.stripScripts(); -} else { -var range = element.ownerDocument.createRange(); -range.selectNodeContents(element); -element.parentNode.replaceChild( -range.createContextualFragment(html.stripScripts()), element); -} -setTimeout(function() {html.evalScripts()}, 10); -}, -getHeight: function(element) { -element = $(element); -return element.offsetHeight; -}, -classNames: function(element) { -return new Element.ClassNames(element); -}, -hasClassName: function(element, className) { -if (!(element = $(element))) return; -return Element.classNames(element).include(className); -}, -addClassName: function(element, className) { -if (!(element = $(element))) return; -return Element.classNames(element).add(className); -}, -removeClassName: function(element, className) { -if (!(element = $(element))) return; -return Element.classNames(element).remove(className); -}, -cleanWhitespace: function(element) { -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); -} -}, -empty: function(element) { -return $(element).innerHTML.match(/^\s*$/); -}, -childOf: function(element, ancestor) { -element = $(element), ancestor = $(ancestor); -while (element = element.parentNode) -if (element == ancestor) return true; -return false; -}, -scrollTo: function(element) { -element = $(element); -var x = element.x ? element.x : element.offsetLeft, -y = element.y ? element.y : element.offsetTop; -window.scrollTo(x, y); -}, -getStyle: function(element, style) { -element = $(element); -var value = element.style[style.camelize()]; -if (!value) { -if (document.defaultView && document.defaultView.getComputedStyle) { -var css = document.defaultView.getComputedStyle(element, null); -value = css ? css.getPropertyValue(style) : null; -} else if (element.currentStyle) { -value = element.currentStyle[style.camelize()]; -} -} -if (window.opera && ['left', 'top', 'right', 'bottom'].include(style)) -if (Element.getStyle(element, 'position') == 'static') value = 'auto'; -return value == 'auto' ? null : value; -}, -setStyle: function(element, style) { -element = $(element); -for (var name in style) -element.style[name.camelize()] = style[name]; -}, -getDimensions: function(element) { -element = $(element); -if (Element.getStyle(element, 'display') != 'none') -return {width: element.offsetWidth, height: element.offsetHeight}; -var els = element.style; -var originalVisibility = els.visibility; -var originalPosition = els.position; -els.visibility = 'hidden'; -els.position = 'absolute'; -els.display = ''; -var originalWidth = element.clientWidth; -var originalHeight = element.clientHeight; -els.display = 'none'; -els.position = originalPosition; -els.visibility = originalVisibility; -return {width: originalWidth, height: originalHeight}; -}, -makePositioned: function(element) { -element = $(element); -var pos = Element.getStyle(element, 'position'); -if (pos == 'static' || !pos) { -element._madePositioned = true; -element.style.position = 'relative'; -if (window.opera) { -element.style.top = 0; -element.style.left = 0; -} -} -}, -undoPositioned: function(element) { -element = $(element); -if (element._madePositioned) { -element._madePositioned = undefined; -element.style.position = -element.style.top = -element.style.left = -element.style.bottom = -element.style.right = ''; -} -}, -makeClipping: function(element) { -element = $(element); -if (element._overflow) return; -element._overflow = element.style.overflow; -if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden') -element.style.overflow = 'hidden'; -}, -undoClipping: function(element) { -element = $(element); -if (element._overflow) return; -element.style.overflow = element._overflow; -element._overflow = undefined; -} -} -Object.extend(Element, Element.Methods); -var _nativeExtensions = false; -if(!HTMLElement && /Konqueror|Safari|KHTML/.test(navigator.userAgent)) { -var HTMLElement = {} -HTMLElement.prototype = document.createElement('div').__proto__; -} -Element.addMethods = function(methods) { -Object.extend(Element.Methods, methods || {}); -if(typeof HTMLElement != 'undefined') { -var methods = Element.Methods, cache = Element.extend.cache; -for (property in methods) { -var value = methods[property]; -if (typeof value == 'function') -HTMLElement.prototype[property] = cache.findOrStore(value); -} -_nativeExtensions = true; -} -} -Element.addMethods(); -var Toggle = new Object(); -Toggle.display = Element.toggle; -Abstract.Insertion = function(adjacency) { -this.adjacency = adjacency; -} -Abstract.Insertion.prototype = { -initialize: function(element, content) { -this.element = $(element); -this.content = content.stripScripts(); -if (this.adjacency && this.element.insertAdjacentHTML) { -try { -this.element.insertAdjacentHTML(this.adjacency, this.content); -} catch (e) { -var tagName = this.element.tagName.toLowerCase(); -if (tagName == 'tbody' || tagName == 'tr') { -this.insertContent(this.contentFromAnonymousTable()); -} else { -throw e; -} -} -} else { -this.range = this.element.ownerDocument.createRange(); -if (this.initializeRange) this.initializeRange(); -this.insertContent([this.range.createContextualFragment(this.content)]); -} -setTimeout(function() {content.evalScripts()}, 10); -}, -contentFromAnonymousTable: function() { -var div = document.createElement('div'); -div.innerHTML = '' + this.content + '
'; -return $A(div.childNodes[0].childNodes[0].childNodes); -} -} -var Insertion = new Object(); -Insertion.Before = Class.create(); -Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), { -initializeRange: function() { -this.range.setStartBefore(this.element); -}, -insertContent: function(fragments) { -fragments.each((function(fragment) { -this.element.parentNode.insertBefore(fragment, this.element); -}).bind(this)); -} -}); -Insertion.Top = Class.create(); -Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), { -initializeRange: function() { -this.range.selectNodeContents(this.element); -this.range.collapse(true); -}, -insertContent: function(fragments) { -fragments.reverse(false).each((function(fragment) { -this.element.insertBefore(fragment, this.element.firstChild); -}).bind(this)); -} -}); -Insertion.Bottom = Class.create(); -Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), { -initializeRange: function() { -this.range.selectNodeContents(this.element); -this.range.collapse(this.element); -}, -insertContent: function(fragments) { -fragments.each((function(fragment) { -this.element.appendChild(fragment); -}).bind(this)); -} -}); -Insertion.After = Class.create(); -Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), { -initializeRange: function() { -this.range.setStartAfter(this.element); -}, -insertContent: function(fragments) { -fragments.each((function(fragment) { -this.element.parentNode.insertBefore(fragment, -this.element.nextSibling); -}).bind(this)); -} -}); -Element.ClassNames = Class.create(); -Element.ClassNames.prototype = { -initialize: function(element) { -this.element = $(element); -}, -_each: function(iterator) { -this.element.className.split(/\s+/).select(function(name) { -return name.length > 0; -})._each(iterator); -}, -set: function(className) { -this.element.className = className; -}, -add: function(classNameToAdd) { -if (this.include(classNameToAdd)) return; -this.set(this.toArray().concat(classNameToAdd).join(' ')); -}, -remove: function(classNameToRemove) { -if (!this.include(classNameToRemove)) return; -this.set(this.select(function(className) { -return className != classNameToRemove; -}).join(' ')); -}, -toString: function() { -return this.toArray().join(' '); -} -} -Object.extend(Element.ClassNames.prototype, Enumerable); -var Field = { -clear: function() { -for (var i = 0; i < arguments.length; i++) -$(arguments[i]).value = ''; -}, -focus: function(element) { -$(element).focus(); -}, -present: function() { -for (var i = 0; i < arguments.length; i++) -if ($(arguments[i]).value == '') return false; -return true; -}, -select: function(element) { -$(element).select(); -}, -activate: function(element) { -element = $(element); -element.focus(); -if (element.select) -element.select(); -} -} -var Form = { -serialize: function(form) { -var elements = Form.getElements($(form)); -var queryComponents = new Array(); -for (var i = 0; i < elements.length; i++) { -var queryComponent = Form.Element.serialize(elements[i]); -if (queryComponent) -queryComponents.push(queryComponent); -} -return queryComponents.join('&'); -}, -getElements: function(form) { -form = $(form); -var elements = new Array(); -for (var tagName in Form.Element.Serializers) { -var tagElements = form.getElementsByTagName(tagName); -for (var j = 0; j < tagElements.length; j++) -elements.push(tagElements[j]); -} -return elements; -}, -getInputs: function(form, typeName, name) { -form = $(form); -var inputs = form.getElementsByTagName('input'); -if (!typeName && !name) -return inputs; -var matchingInputs = new Array(); -for (var i = 0; i < inputs.length; i++) { -var input = inputs[i]; -if ((typeName && input.type != typeName) || -(name && input.name != name)) -continue; -matchingInputs.push(input); -} -return matchingInputs; -}, -disable: function(form) { -var elements = Form.getElements(form); -for (var i = 0; i < elements.length; i++) { -var element = elements[i]; -element.blur(); -element.disabled = 'true'; -} -}, -enable: function(form) { -var elements = Form.getElements(form); -for (var i = 0; i < elements.length; i++) { -var element = elements[i]; -element.disabled = ''; -} -}, -findFirstElement: function(form) { -return Form.getElements(form).find(function(element) { -return element.type != 'hidden' && !element.disabled && -['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); -}); -}, -focusFirstElement: function(form) { -Field.activate(Form.findFirstElement(form)); -}, -reset: function(form) { -$(form).reset(); -} -} -Form.Element = { -serialize: function(element) { -element = $(element); -var method = element.tagName.toLowerCase(); -var parameter = Form.Element.Serializers[method](element); -if (parameter) { -var key = encodeURIComponent(parameter[0]); -if (key.length == 0) return; -if (parameter[1].constructor != Array) -parameter[1] = [parameter[1]]; -return parameter[1].map(function(value) { -return key + '=' + encodeURIComponent(value); -}).join('&'); -} -}, -getValue: function(element) { -element = $(element); -var method = element.tagName.toLowerCase(); -var parameter = Form.Element.Serializers[method](element); -if (parameter) -return parameter[1]; -} -} -Form.Element.Serializers = { -input: function(element) { -switch (element.type.toLowerCase()) { -case 'submit': -case 'hidden': -case 'password': -case 'text': -return Form.Element.Serializers.textarea(element); -case 'checkbox': -case 'radio': -return Form.Element.Serializers.inputSelector(element); -} -return false; -}, -inputSelector: function(element) { -if (element.checked) -return [element.name, element.value]; -}, -textarea: function(element) { -return [element.name, element.value]; -}, -select: function(element) { -return Form.Element.Serializers[element.type == 'select-one' ? -'selectOne' : 'selectMany'](element); -}, -selectOne: function(element) { -var value = '', opt, index = element.selectedIndex; -if (index >= 0) { -opt = element.options[index]; -value = opt.value || opt.text; -} -return [element.name, value]; -}, -selectMany: function(element) { -var value = []; -for (var i = 0; i < element.length; i++) { -var opt = element.options[i]; -if (opt.selected) -value.push(opt.value || opt.text); -} -return [element.name, value]; -} -} -var $F = Form.Element.getValue; -Abstract.TimedObserver = function() {} -Abstract.TimedObserver.prototype = { -initialize: function(element, frequency, callback) { -this.frequency = frequency; -this.element = $(element); -this.callback= callback; -this.lastValue = this.getValue(); -this.registerCallback(); -}, -registerCallback: function() { -setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); -}, -onTimerEvent: function() { -var value = this.getValue(); -if (this.lastValue != value) { -this.callback(this.element, value); -this.lastValue = value; -} -} -} -Form.Element.Observer = Class.create(); -Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { -getValue: function() { -return Form.Element.getValue(this.element); -} -}); -Form.Observer = Class.create(); -Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { -getValue: function() { -return Form.serialize(this.element); -} -}); -Abstract.EventObserver = function() {} -Abstract.EventObserver.prototype = { -initialize: function(element, callback) { -this.element= $(element); -this.callback = callback; -this.lastValue = this.getValue(); -if (this.element.tagName.toLowerCase() == 'form') -this.registerFormCallbacks(); -else -this.registerCallback(this.element); -}, -onElementEvent: function() { -var value = this.getValue(); -if (this.lastValue != value) { -this.callback(this.element, value); -this.lastValue = value; -} -}, -registerFormCallbacks: function() { -var elements = Form.getElements(this.element); -for (var i = 0; i < elements.length; i++) -this.registerCallback(elements[i]); -}, -registerCallback: function(element) { -if (element.type) { -switch (element.type.toLowerCase()) { -case 'checkbox': -case 'radio': -Event.observe(element, 'click', this.onElementEvent.bind(this)); -break; -case 'password': -case 'text': -case 'textarea': -case 'select-one': -case 'select-multiple': -Event.observe(element, 'change', this.onElementEvent.bind(this)); -break; -} -} -} -} -Form.Element.EventObserver = Class.create(); -Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { -getValue: function() { -return Form.Element.getValue(this.element); -} -}); -Form.EventObserver = Class.create(); -Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { -getValue: function() { -return Form.serialize(this.element); -} -}); -if (!window.Event) { -var Event = new Object(); -} -Object.extend(Event, { -KEY_BACKSPACE: 8, -KEY_TAB: 9, -KEY_RETURN: 13, -KEY_ESC:27, -KEY_LEFT: 37, -KEY_UP: 38, -KEY_RIGHT:39, -KEY_DOWN: 40, -KEY_DELETE: 46, -element: function(event) { -return event.target || event.srcElement; -}, -isLeftClick: function(event) { -return (((event.which) && (event.which == 1)) || -((event.button) && (event.button == 1))); -}, -pointerX: function(event) { -return event.pageX || (event.clientX + -(document.documentElement.scrollLeft || document.body.scrollLeft)); -}, -pointerY: function(event) { -return event.pageY || (event.clientY + -(document.documentElement.scrollTop || document.body.scrollTop)); -}, -stop: function(event) { -if (event.preventDefault) { -event.preventDefault(); -event.stopPropagation(); -} else { -event.returnValue = false; -event.cancelBubble = true; -} -}, -findElement: function(event, tagName) { -var element = Event.element(event); -while (element.parentNode && (!element.tagName || -(element.tagName.toUpperCase() != tagName.toUpperCase()))) -element = element.parentNode; -return element; -}, -observers: false, -_observeAndCache: function(element, name, observer, useCapture) { -if (!this.observers) this.observers = []; -if (element.addEventListener) { -this.observers.push([element, name, observer, useCapture]); -element.addEventListener(name, observer, useCapture); -} else if (element.attachEvent) { -this.observers.push([element, name, observer, useCapture]); -element.attachEvent('on' + name, observer); -} -}, -unloadCache: function() { -if (!Event.observers) return; -for (var i = 0; i < Event.observers.length; i++) { -Event.stopObserving.apply(this, Event.observers[i]); -Event.observers[i][0] = null; -} -Event.observers = false; -}, -observe: function(element, name, observer, useCapture) { -var element = $(element); -useCapture = useCapture || false; -if (name == 'keypress' && -(navigator.appVersion.match(/Konqueror|Safari|KHTML/) -|| element.attachEvent)) -name = 'keydown'; -this._observeAndCache(element, name, observer, useCapture); -}, -stopObserving: function(element, name, observer, useCapture) { -var element = $(element); -useCapture = useCapture || false; -if (name == 'keypress' && -(navigator.appVersion.match(/Konqueror|Safari|KHTML/) -|| element.detachEvent)) -name = 'keydown'; -if (element.removeEventListener) { -element.removeEventListener(name, observer, useCapture); -} else if (element.detachEvent) { -element.detachEvent('on' + name, observer); -} -} -}); -if (navigator.appVersion.match(/\bMSIE\b/)) -Event.observe(window, 'unload', Event.unloadCache, false); -Object.extend(Event, -{ -OnLoad : function (fn) -{ -var w = document.addEventListener && -!window.addEventListener ? document : window; -Event.observe(w,'load',fn); -}, -keyCode : function(e) -{ - return e.keyCode != null ? e.keyCode : e.charCode -}, -isHTMLEvent : function(type) -{ -var events = ['abort', 'blur', 'change', 'error', 'focus', -'load', 'reset', 'resize', 'scroll', 'select', -'submit', 'unload']; -return events.include(type); -}, -isMouseEvent : function(type) -{ -var events = ['click', 'mousedown', 'mousemove', 'mouseout', -'mouseover', 'mouseup']; -return events.include(type); -}, -fireEvent : function(element,type) -{ -element = $(element); -if(document.createEvent) -{ -if(Event.isHTMLEvent(type)) -{ -var event = document.createEvent('HTMLEvents'); -event.initEvent(type, true, true); -} + +var Prototype={Version:'1.50',ScriptFragment:'(?:)((\n|\r|.)*?)(?:<\/script>)',emptyFunction:function(){},K:function(x){return x}} +var Class={create:function(){return function(){this.initialize.apply(this,arguments);}}} +var Abstract=new Object();Object.extend=function(destination,source){for(var property in source){destination[property]=source[property];} +return destination;} +Object.inspect=function(object){try{if(object==undefined)return'undefined';if(object==null)return'null';return object.inspect?object.inspect():object.toString();}catch(e){if(e instanceof RangeError)return'...';throw e;}} +Function.prototype.bind=function(){var __method=this,args=$A(arguments),object=args.shift();return function(){return __method.apply(object,args.concat($A(arguments)));}} +Function.prototype.bindAsEventListener=function(object){var __method=this;return function(event){return __method.call(object,event||window.event);}} +Object.extend(Number.prototype,{toColorPart:function(){var digits=this.toString(16);if(this<16)return'0'+digits;return digits;},succ:function(){return this+1;},times:function(iterator){$R(0,this,true).each(iterator);return this;}});var Try={these:function(){var returnValue;for(var i=0;i0){if(match=source.match(pattern)){result+=source.slice(0,match.index);result+=(replacement(match)||'').toString();source=source.slice(match.index+match[0].length);}else{result+=source,source='';}} +return result;},sub:function(pattern,replacement,count){replacement=this.gsub.prepareReplacement(replacement);count=count===undefined?1:count;return this.gsub(pattern,function(match){if(--count<0)return match[0];return replacement(match);});},scan:function(pattern,iterator){this.gsub(pattern,iterator);return this;},truncate:function(length,truncation){length=length||30;truncation=truncation===undefined?'...':truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:this;},strip:function(){return this.replace(/^\s+/,'').replace(/\s+$/,'');},stripTags:function(){return this.replace(/<\/?[^>]+>/gi,'');},stripScripts:function(){return this.replace(new RegExp(Prototype.ScriptFragment,'img'),'');},extractScripts:function(){var matchAll=new RegExp(Prototype.ScriptFragment,'img');var matchOne=new RegExp(Prototype.ScriptFragment,'im');return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||['',''])[1];});},evalScripts:function(){return this.extractScripts().map(function(script){return eval(script)});},escapeHTML:function(){var div=document.createElement('div');var text=document.createTextNode(this);div.appendChild(text);return div.innerHTML;},unescapeHTML:function(){var div=document.createElement('div');div.innerHTML=this.stripTags();return div.childNodes[0]?div.childNodes[0].nodeValue:'';},toQueryParams:function(){var pairs=this.match(/^\??(.*)$/)[1].split('&');return pairs.inject({},function(params,pairString){var pair=pairString.split('=');params[pair[0]]=pair[1];return params;});},toArray:function(){return this.split('');},camelize:function(){var oStringList=this.split('-');if(oStringList.length==1)return oStringList[0];var camelizedString=this.indexOf('-')==0?oStringList[0].charAt(0).toUpperCase()+oStringList[0].substring(1):oStringList[0];for(var i=1,len=oStringList.length;i0?m[2]:"0")+"."+m[4];var num=parseFloat(cleanInput);return(isNaN(num)?null:num);},toCurrency:function(groupchar,digits,decimalchar) +{groupchar=groupchar||",";decimalchar=decimalchar||".";digits=typeof(digits)=="undefined"?2:digits;var exp=new RegExp("^\\s*([-\\+])?(((\\d+)\\"+groupchar+")*)(\\d+)" ++((digits>0)?"(\\"+decimalchar+"(\\d{1,"+digits+"}))?":"") ++"\\s*$");var m=this.match(exp);if(m==null) +return null;var intermed=m[2]+m[5];var cleanInput=m[1]+intermed.replace(new RegExp("(\\"+groupchar+")","g"),"") ++((digits>0)?"."+m[7]:"");var num=parseFloat(cleanInput);return(isNaN(num)?null:num);},toDate:function(format) +{return Date.SimpleParse(this,format);}});var $break=new Object();var $continue=new Object();var Enumerable={each:function(iterator){var index=0;try{this._each(function(value){try{iterator(value,index++);}catch(e){if(e!=$continue)throw e;}});}catch(e){if(e!=$break)throw e;}},all:function(iterator){var result=true;this.each(function(value,index){result=result&&!!(iterator||Prototype.K)(value,index);if(!result)throw $break;});return result;},any:function(iterator){var result=true;this.each(function(value,index){if(result=!!(iterator||Prototype.K)(value,index)) +throw $break;});return result;},collect:function(iterator){var results=[];this.each(function(value,index){results.push(iterator(value,index));});return results;},detect:function(iterator){var result;this.each(function(value,index){if(iterator(value,index)){result=value;throw $break;}});return result;},findAll:function(iterator){var results=[];this.each(function(value,index){if(iterator(value,index)) +results.push(value);});return results;},grep:function(pattern,iterator){var results=[];this.each(function(value,index){var stringValue=value.toString();if(stringValue.match(pattern)) +results.push((iterator||Prototype.K)(value,index));}) +return results;},include:function(object){var found=false;this.each(function(value){if(value==object){found=true;throw $break;}});return found;},inject:function(memo,iterator){this.each(function(value,index){memo=iterator(memo,value,index);});return memo;},invoke:function(method){var args=$A(arguments).slice(1);return this.collect(function(value){return value[method].apply(value,args);});},max:function(iterator){var result;this.each(function(value,index){value=(iterator||Prototype.K)(value,index);if(result==undefined||value>=result) +result=value;});return result;},min:function(iterator){var result;this.each(function(value,index){value=(iterator||Prototype.K)(value,index);if(result==undefined||valueb?1:0;}).pluck('value');},toArray:function(){return this.collect(Prototype.K);},zip:function(){var iterator=Prototype.K,args=$A(arguments);if(typeof args.last()=='function') +iterator=args.pop();var collections=[this].concat(args).map($A);return this.map(function(value,index){return iterator(collections.pluck(index));});},inspect:function(){return'#';}} +Object.extend(Enumerable,{map:Enumerable.collect,find:Enumerable.detect,select:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray});var $A=Array.from=function(iterable){if(!iterable)return[];if(iterable.toArray){return iterable.toArray();}else{var results=[];for(var i=0;i';}} +function $H(object){var hash=Object.extend({},object||{});Object.extend(hash,Enumerable);Object.extend(hash,Hash);return hash;} +ObjectRange=Class.create();Object.extend(ObjectRange.prototype,Enumerable);Object.extend(ObjectRange.prototype,{initialize:function(start,end,exclusive){this.start=start;this.end=end;this.exclusive=exclusive;},_each:function(iterator){var value=this.start;do{iterator(value);value=value.succ();}while(this.include(value));},include:function(value){if(value'+this.content+'';return $A(div.childNodes[0].childNodes[0].childNodes);}} +var Insertion=new Object();Insertion.Before=Class.create();Insertion.Before.prototype=Object.extend(new Abstract.Insertion('beforeBegin'),{initializeRange:function(){this.range.setStartBefore(this.element);},insertContent:function(fragments){fragments.each((function(fragment){this.element.parentNode.insertBefore(fragment,this.element);}).bind(this));}});Insertion.Top=Class.create();Insertion.Top.prototype=Object.extend(new Abstract.Insertion('afterBegin'),{initializeRange:function(){this.range.selectNodeContents(this.element);this.range.collapse(true);},insertContent:function(fragments){fragments.reverse(false).each((function(fragment){this.element.insertBefore(fragment,this.element.firstChild);}).bind(this));}});Insertion.Bottom=Class.create();Insertion.Bottom.prototype=Object.extend(new Abstract.Insertion('beforeEnd'),{initializeRange:function(){this.range.selectNodeContents(this.element);this.range.collapse(this.element);},insertContent:function(fragments){fragments.each((function(fragment){this.element.appendChild(fragment);}).bind(this));}});Insertion.After=Class.create();Insertion.After.prototype=Object.extend(new Abstract.Insertion('afterEnd'),{initializeRange:function(){this.range.setStartAfter(this.element);},insertContent:function(fragments){fragments.each((function(fragment){this.element.parentNode.insertBefore(fragment,this.element.nextSibling);}).bind(this));}});Element.ClassNames=Class.create();Element.ClassNames.prototype={initialize:function(element){this.element=$(element);},_each:function(iterator){this.element.className.split(/\s+/).select(function(name){return name.length>0;})._each(iterator);},set:function(className){this.element.className=className;},add:function(classNameToAdd){if(this.include(classNameToAdd))return;this.set(this.toArray().concat(classNameToAdd).join(' '));},remove:function(classNameToRemove){if(!this.include(classNameToRemove))return;this.set(this.select(function(className){return className!=classNameToRemove;}).join(' '));},toString:function(){return this.toArray().join(' ');}} +Object.extend(Element.ClassNames.prototype,Enumerable);var Field={clear:function(){for(var i=0;i=0){opt=element.options[index];value=opt.value||opt.text;} +return[element.name,value];},selectMany:function(element){var value=[];for(var i=0;i= this.offset[1] && -y = this.offset[0] && -x = this.offset[1] && -this.ycomp = this.offset[0] && -this.xcomp 0) abort(expr.inspect()); -}, -buildMatchExpression: function() { -var params = this.params, conditions = [], clause; -if (params.wildcard) -conditions.push('true'); -if (clause = params.id) -conditions.push('element.id == ' + clause.inspect()); -if (clause = params.tagName) -conditions.push('element.tagName.toUpperCase() == ' + clause.inspect()); -if ((clause = params.classNames).length > 0) -for (var i = 0; i < clause.length; i++) -conditions.push('Element.hasClassName(element, ' + clause[i].inspect() + ')'); -if (clause = params.attributes) { -clause.each(function(attribute) { -var value = 'element.getAttribute(' + attribute.name.inspect() + ')'; -var splitValueBy = function(delimiter) { -return value + ' && ' + value + '.split(' + delimiter.inspect() + ')'; -} -switch (attribute.operator) { -case '=': conditions.push(value + ' == ' + attribute.value.inspect()); break; -case '~=':conditions.push(splitValueBy(' ') + '.include(' + attribute.value.inspect() + ')'); break; -case '|=':conditions.push( -splitValueBy('-') + '.first().toUpperCase() == ' + attribute.value.toUpperCase().inspect() -); break; -case '!=':conditions.push(value + ' != ' + attribute.value.inspect()); break; -case '': -case undefined: conditions.push(value + ' != null'); break; -default:throw 'Unknown operator ' + attribute.operator + ' in selector'; -} -}); -} -return conditions.join(' && '); -}, -compileMatcher: function() { -this.match = new Function('element', 'if (!element.tagName) return false; \ -return ' + this.buildMatchExpression()); -}, -findElements: function(scope) { -var element; -if (element = $(this.params.id)) -if (this.match(element)) -if (!scope || Element.childOf(element, scope)) -return [element]; -scope = (scope || document).getElementsByTagName(this.params.tagName || '*'); -var results = []; -for (var i = 0; i < scope.length; i++) -if (this.match(element = scope[i])) -results.push(Element.extend(element)); -return results; -}, -toString: function() { -return this.expression; -} -} -function $$() { -return $A(arguments).map(function(expression) { -return expression.strip().split(/\s+/).inject([null], function(results, expr) { -var selector = new Selector(expr); -return results.map(selector.findElements.bind(selector)).flatten(); -}); -}).flatten(); -} -var Builder = { -NODEMAP: { -AREA: 'map', -CAPTION: 'table', -COL: 'table', -COLGROUP: 'table', -LEGEND: 'fieldset', -OPTGROUP: 'select', -OPTION: 'select', -PARAM: 'object', -TBODY: 'table', -TD: 'table', -TFOOT: 'table', -TH: 'table', -THEAD: 'table', -TR: 'table' -}, -node: function(elementName) { -elementName = elementName.toUpperCase(); -var parentTag = this.NODEMAP[elementName] || 'div'; -var parentElement = document.createElement(parentTag); -try {parentElement.innerHTML = "<" + elementName + ">"; -} catch(e) {} -var element = parentElement.firstChild || null; -if(element && (element.tagName != elementName)) -element = element.getElementsByTagName(elementName)[0]; -if(!element) element = document.createElement(elementName); -if(!element) return; -if(arguments[1]) -if(this._isStringOrNumber(arguments[1]) || -(arguments[1] instanceof Array)) { -this._children(element, arguments[1]); -} else { -var attrs = this._attributes(arguments[1]); -if(attrs.length) { -try {parentElement.innerHTML = "<" +elementName + " " + -attrs + ">"; -} catch(e) {} -element = parentElement.firstChild || null; - if(!element) { -element = document.createElement(elementName); -for(attr in arguments[1]) -element[attr == 'class' ? 'className' : attr] = arguments[1][attr]; -} -if(element.tagName != elementName) -element = parentElement.getElementsByTagName(elementName)[0]; -} -} +element[type]();}});var Position={includeScrollOffsets:false,prepare:function(){this.deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;this.deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;},realOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.scrollTop||0;valueL+=element.scrollLeft||0;element=element.parentNode;}while(element);return[valueL,valueT];},cumulativeOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);return[valueL,valueT];},positionedOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element){p=Element.getStyle(element,'position');if(p=='relative'||p=='absolute')break;}}while(element);return[valueL,valueT];},offsetParent:function(element){if(element.offsetParent)return element.offsetParent;if(element==document.body)return element;while((element=element.parentNode)&&element!=document.body) +if(Element.getStyle(element,'position')!='static') +return element;return document.body;},within:function(element,x,y){if(this.includeScrollOffsets) +return this.withinIncludingScrolloffsets(element,x,y);this.xcomp=x;this.ycomp=y;this.offset=this.cumulativeOffset(element);return(y>=this.offset[1]&&y=this.offset[0]&&x=this.offset[1]&&this.ycomp=this.offset[0]&&this.xcomp0)abort(expr.inspect());},buildMatchExpression:function(){var params=this.params,conditions=[],clause;if(params.wildcard) +conditions.push('true');if(clause=params.id) +conditions.push('element.id == '+clause.inspect());if(clause=params.tagName) +conditions.push('element.tagName.toUpperCase() == '+clause.inspect());if((clause=params.classNames).length>0) +for(var i=0;i";}catch(e){} +var element=parentElement.firstChild||null;if(element&&(element.tagName!=elementName)) +element=element.getElementsByTagName(elementName)[0];if(!element)element=document.createElement(elementName);if(!element)return;if(arguments[1]) +if(this._isStringOrNumber(arguments[1])||(arguments[1]instanceof Array)){this._children(element,arguments[1]);}else{var attrs=this._attributes(arguments[1]);if(attrs.length){try{parentElement.innerHTML="<"+elementName+" "+ +attrs+">";}catch(e){} +element=parentElement.firstChild||null;if(!element){element=document.createElement(elementName);for(attr in arguments[1]) +element[attr=='class'?'className':attr]=arguments[1][attr];} +if(element.tagName!=elementName) +element=parentElement.getElementsByTagName(elementName)[0];}} if(arguments[2]) -this._children(element, arguments[2]); -return element; -}, -_text: function(text) { - return document.createTextNode(text); -}, -_attributes: function(attributes) { -var attrs = []; -for(attribute in attributes) -attrs.push((attribute=='className' ? 'class' : attribute) + -'="' + attributes[attribute].toString().escapeHTML() + '"'); -return attrs.join(" "); -}, -_children: function(element, children) { -if(typeof children=='object') {children.flatten().each( function(e) { -if(typeof e=='object') +this._children(element,arguments[2]);return element;},_text:function(text){return document.createTextNode(text);},_attributes:function(attributes){var attrs=[];for(attribute in attributes) +attrs.push((attribute=='className'?'class':attribute)+'="'+attributes[attribute].toString().escapeHTML()+'"');return attrs.join(" ");},_children:function(element,children){if(typeof children=='object'){children.flatten().each(function(e){if(typeof e=='object') element.appendChild(e) else if(Builder._isStringOrNumber(e)) -element.appendChild(Builder._text(e)); -}); -} else -if(Builder._isStringOrNumber(children)) - element.appendChild(Builder._text(children)); -}, -_isStringOrNumber: function(param) { -return(typeof param=='string' || typeof param=='number'); -} -} -Object.extend(Builder, -{ -exportTags:function() -{ -var tags=["BUTTON","TT","PRE","H1","H2","H3","BR","CANVAS","HR","LABEL","TEXTAREA","FORM","STRONG","SELECT","OPTION","OPTGROUP","LEGEND","FIELDSET","P","UL","OL","LI","TD","TR","THEAD","TBODY","TFOOT","TABLE","TH","INPUT","SPAN","A","DIV","IMG", "CAPTION"]; -tags.each(function(tag) -{ -window[tag]=function() -{ -var args=$A(arguments); -if(args.length==0) -return Builder.node(tag,null); -if(args.length==1) -return Builder.node(tag,args[0]); -if(args.length>1) -return Builder.node(tag,args.shift(),args); -}; -}); -} -}); -Builder.exportTags(); -Object.extend(Date.prototype, -{ -SimpleFormat: function(format, data) -{ -data = data || {}; -var bits = new Array(); -bits['d'] = this.getDate(); -bits['dd'] = String(this.getDate()).zerofill(2); -bits['M'] = this.getMonth()+1; -bits['MM'] = String(this.getMonth()+1).zerofill(2); -if(data.AbbreviatedMonthNames) -bits['MMM'] = data.AbbreviatedMonthNames[this.getMonth()]; -if(data.MonthNames) -bits['MMMM'] = data.MonthNames[this.getMonth()]; -var yearStr = "" + this.getFullYear(); -yearStr = (yearStr.length == 2) ? '19' + yearStr: yearStr; -bits['yyyy'] = yearStr; -bits['yy'] = bits['yyyy'].toString().substr(2,2); -var frm = new String(format); -for (var sect in bits) -{ -var reg = new RegExp("\\b"+sect+"\\b" ,"g"); -frm = frm.replace(reg, bits[sect]); -} -return frm; -}, -toISODate : function() -{ -var y = this.getFullYear(); -var m = String(this.getMonth() + 1).zerofill(2); -var d = String(this.getDate()).zerofill(2); -return String(y) + String(m) + String(d); -} -}); -Object.extend(Date, -{ -SimpleParse: function(value, format) -{ -val=String(value); -format=String(format); -if(val.length <= 0) return null; -if(format.length <= 0) return new Date(value); -var isInteger = function (val) -{ -var digits="1234567890"; -for (var i=0; i < val.length; i++) -{ -if (digits.indexOf(val.charAt(i))==-1) { return false; } -} -return true; -}; -var getInt = function(str,i,minlength,maxlength) -{ -for (var x=maxlength; x>=minlength; x--) -{ -var token=str.substring(i,i+x); -if (token.length < minlength) { return null; } -if (isInteger(token)) { return token; } -} -return null; -}; -var i_val=0; -var i_format=0; -var c=""; -var token=""; -var token2=""; -var x,y; -var now=new Date(); -var year=now.getFullYear(); -var month=now.getMonth()+1; -var date=1; -while (i_format < format.length) -{ -c=format.charAt(i_format); -token=""; -while ((format.charAt(i_format)==c) && (i_format < format.length)) -{ -token += format.charAt(i_format++); -} -if (token=="yyyy" || token=="yy" || token=="y") -{ -if (token=="yyyy") { x=4;y=4; } -if (token=="yy") { x=2;y=2; } -if (token=="y"){ x=2;y=4; } -year=getInt(val,i_val,x,y); -if (year==null) { return null; } -i_val += year.length; -if (year.length==2) -{ -if (year > 70) { year=1900+(year-0); } -else { year=2000+(year-0); } -} -} -else if (token=="MM"||token=="M") -{ -month=getInt(val,i_val,token.length,2); -if(month==null||(month<1)||(month>12)){return null;} -i_val+=month.length; -} -else if (token=="dd"||token=="d") -{ -date=getInt(val,i_val,token.length,2); -if(date==null||(date<1)||(date>31)){return null;} -i_val+=date.length; -} -else -{ -if (val.substring(i_val,i_val+token.length)!=token) {return null;} -else {i_val+=token.length;} -} -} -if (i_val != val.length) { return null; } -if (month==2) -{ -if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) ) { -if (date > 29){ return null; } -} -else { if (date > 28) { return null; } } -} -if ((month==4)||(month==6)||(month==9)||(month==11)) -{ -if (date > 30) { return null; } -} -var newdate=new Date(year,month-1,date, 0, 0, 0); -return newdate; -} -}); -var Prado = -{ -Version: '3.0.0', -Browser : function() -{ -var info = { Version : "1.0" }; -var is_major = parseInt( navigator.appVersion ); -info.nver = is_major; -info.ver = navigator.appVersion; -info.agent = navigator.userAgent; -info.dom = document.getElementById ? 1 : 0; -info.opera = window.opera ? 1 : 0; -info.ie5 = ( info.ver.indexOf( "MSIE 5" ) > -1 && info.dom && !info.opera ) ? 1 : 0; -info.ie6 = ( info.ver.indexOf( "MSIE 6" ) > -1 && info.dom && !info.opera ) ? 1 : 0; -info.ie4 = ( document.all && !info.dom && !info.opera ) ? 1 : 0; -info.ie = info.ie4 || info.ie5 || info.ie6; -info.mac = info.agent.indexOf( "Mac" ) > -1; -info.ns6 = ( info.dom && parseInt( info.ver ) >= 5 ) ? 1 : 0; -info.ie3 = ( info.ver.indexOf( "MSIE" ) && ( is_major < 4 ) ); -info.hotjava = ( info.agent.toLowerCase().indexOf( 'hotjava' ) != -1 ) ? 1 : 0; -info.ns4 = ( document.layers && !info.dom && !info.hotjava ) ? 1 : 0; -info.bw = ( info.ie6 || info.ie5 || info.ie4 || info.ns4 || info.ns6 || info.opera ); -info.ver3 = ( info.hotjava || info.ie3 ); -info.opera7 = ( ( info.agent.toLowerCase().indexOf( 'opera 7' ) > -1 ) || ( info.agent.toLowerCase().indexOf( 'opera/7' ) > -1 ) ); -info.operaOld = info.opera && !info.opera7; -return info; -}, -ImportCss : function(doc, css_file) -{ -if (Prado.Browser().ie) -var styleSheet = doc.createStyleSheet(css_file); -else -{ -var elm = doc.createElement("link"); -elm.rel = "stylesheet"; -elm.href = css_file; -if (headArr = doc.getElementsByTagName("head")) -headArr[0].appendChild(elm); -} -} -}; -Prado.PostBack = function(event,options) -{ -var form = $(options['FormID']); -var canSubmit = true; -if(options['CausesValidation'] && typeof(Prado.Validation) != "undefined") -{ -if(!Prado.Validation.validate(options['FormID'], options['ValidationGroup'], $(options['ID']))) -return Event.stop(event); -} -if(options['PostBackUrl'] && options['PostBackUrl'].length > 0) -form.action = options['PostBackUrl']; -if(options['TrackFocus']) -{ -var lastFocus = $('PRADO_LASTFOCUS'); -if(lastFocus) -{ -var active = document.activeElement; -if(active) -lastFocus.value = active.id; +element.appendChild(Builder._text(e));});}else +if(Builder._isStringOrNumber(children)) +element.appendChild(Builder._text(children));},_isStringOrNumber:function(param){return(typeof param=='string'||typeof param=='number');}} +Object.extend(Builder,{exportTags:function() +{var tags=["BUTTON","TT","PRE","H1","H2","H3","BR","CANVAS","HR","LABEL","TEXTAREA","FORM","STRONG","SELECT","OPTION","OPTGROUP","LEGEND","FIELDSET","P","UL","OL","LI","TD","TR","THEAD","TBODY","TFOOT","TABLE","TH","INPUT","SPAN","A","DIV","IMG","CAPTION"];tags.each(function(tag) +{window[tag]=function() +{var args=$A(arguments);if(args.length==0) +return Builder.node(tag,null);if(args.length==1) +return Builder.node(tag,args[0]);if(args.length>1) +return Builder.node(tag,args.shift(),args);};});}});Builder.exportTags();Object.extend(Date.prototype,{SimpleFormat:function(format,data) +{data=data||{};var bits=new Array();bits['d']=this.getDate();bits['dd']=String(this.getDate()).zerofill(2);bits['M']=this.getMonth()+1;bits['MM']=String(this.getMonth()+1).zerofill(2);if(data.AbbreviatedMonthNames) +bits['MMM']=data.AbbreviatedMonthNames[this.getMonth()];if(data.MonthNames) +bits['MMMM']=data.MonthNames[this.getMonth()];var yearStr=""+this.getFullYear();yearStr=(yearStr.length==2)?'19'+yearStr:yearStr;bits['yyyy']=yearStr;bits['yy']=bits['yyyy'].toString().substr(2,2);var frm=new String(format);for(var sect in bits) +{var reg=new RegExp("\\b"+sect+"\\b","g");frm=frm.replace(reg,bits[sect]);} +return frm;},toISODate:function() +{var y=this.getFullYear();var m=String(this.getMonth()+1).zerofill(2);var d=String(this.getDate()).zerofill(2);return String(y)+String(m)+String(d);}});Object.extend(Date,{SimpleParse:function(value,format) +{val=String(value);format=String(format);if(val.length<=0)return null;if(format.length<=0)return new Date(value);var isInteger=function(val) +{var digits="1234567890";for(var i=0;i=minlength;x--) +{var token=str.substring(i,i+x);if(token.length70){year=1900+(year-0);} +else{year=2000+(year-0);}}} +else if(token=="MM"||token=="M") +{month=getInt(val,i_val,token.length,2);if(month==null||(month<1)||(month>12)){return null;} +i_val+=month.length;} +else if(token=="dd"||token=="d") +{date=getInt(val,i_val,token.length,2);if(date==null||(date<1)||(date>31)){return null;} +i_val+=date.length;} else -lastFocus.value = options['EventTarget']; -} -} -$('PRADO_POSTBACK_TARGET').value = options['EventTarget']; -$('PRADO_POSTBACK_PARAMETER').value = options['EventParameter']; -if(options['StopEvent']) -Event.stop(event); -Event.fireEvent(form,"submit"); -} -Prado.Element = -{ -setValue : function(element, value) -{ -var el = $(element); -if(el && typeof(el.value) != "undefined") -el.value = value; -}, -select : function(element, method, value) -{ -var el = $(element); -var isList = element.indexOf('[]') > -1; -if(!el && !isList) return; -method = isList ? 'check'+method : el.tagName.toLowerCase()+method; -var selection = Prado.Element.Selection; -if(isFunction(selection[method])) -selection[method](isList ? element : el,value); -}, -click : function(element) -{ -var el = $(element); -if(!el) return; -if(document.createEvent) -{ -var evt = document.createEvent('HTMLEvents'); -evt.initEvent('click', true, true); -el.dispatchEvent(evt); -} +{if(val.substring(i_val,i_val+token.length)!=token){return null;} +else{i_val+=token.length;}}} +if(i_val!=val.length){return null;} +if(month==2) +{if(((year%4==0)&&(year%100!=0))||(year%400==0)){if(date>29){return null;}} +else{if(date>28){return null;}}} +if((month==4)||(month==6)||(month==9)||(month==11)) +{if(date>30){return null;}} +var newdate=new Date(year,month-1,date,0,0,0);return newdate;}});var Prado={Version:'3.0.0',Browser:function() +{var info={Version:"1.0"};var is_major=parseInt(navigator.appVersion);info.nver=is_major;info.ver=navigator.appVersion;info.agent=navigator.userAgent;info.dom=document.getElementById?1:0;info.opera=window.opera?1:0;info.ie5=(info.ver.indexOf("MSIE 5")>-1&&info.dom&&!info.opera)?1:0;info.ie6=(info.ver.indexOf("MSIE 6")>-1&&info.dom&&!info.opera)?1:0;info.ie4=(document.all&&!info.dom&&!info.opera)?1:0;info.ie=info.ie4||info.ie5||info.ie6;info.mac=info.agent.indexOf("Mac")>-1;info.ns6=(info.dom&&parseInt(info.ver)>=5)?1:0;info.ie3=(info.ver.indexOf("MSIE")&&(is_major<4));info.hotjava=(info.agent.toLowerCase().indexOf('hotjava')!=-1)?1:0;info.ns4=(document.layers&&!info.dom&&!info.hotjava)?1:0;info.bw=(info.ie6||info.ie5||info.ie4||info.ns4||info.ns6||info.opera);info.ver3=(info.hotjava||info.ie3);info.opera7=((info.agent.toLowerCase().indexOf('opera 7')>-1)||(info.agent.toLowerCase().indexOf('opera/7')>-1));info.operaOld=info.opera&&!info.opera7;return info;},ImportCss:function(doc,css_file) +{if(Prado.Browser().ie) +var styleSheet=doc.createStyleSheet(css_file);else +{var elm=doc.createElement("link");elm.rel="stylesheet";elm.href=css_file;if(headArr=doc.getElementsByTagName("head")) +headArr[0].appendChild(elm);}}};Prado.PostBack=function(event,options) +{var form=$(options['FormID']);var canSubmit=true;if(options['CausesValidation']&&typeof(Prado.Validation)!="undefined") +{if(!Prado.Validation.validate(options['FormID'],options['ValidationGroup'],$(options['ID']))) +return Event.stop(event);} +if(options['PostBackUrl']&&options['PostBackUrl'].length>0) +form.action=options['PostBackUrl'];if(options['TrackFocus']) +{var lastFocus=$('PRADO_LASTFOCUS');if(lastFocus) +{var active=document.activeElement;if(active) +lastFocus.value=active.id;else +lastFocus.value=options['EventTarget'];}} +$('PRADO_POSTBACK_TARGET').value=options['EventTarget'];$('PRADO_POSTBACK_PARAMETER').value=options['EventParameter'];if(options['StopEvent']) +Event.stop(event);Event.fireEvent(form,"submit");} +Prado.Element={setValue:function(element,value) +{var el=$(element);if(el&&typeof(el.value)!="undefined") +el.value=value;},select:function(element,method,value) +{var el=$(element);var isList=element.indexOf('[]')>-1;if(!el&&!isList)return;method=isList?'check'+method:el.tagName.toLowerCase()+method;var selection=Prado.Element.Selection;if(isFunction(selection[method])) +selection[method](isList?element:el,value);},click:function(element) +{var el=$(element);if(!el)return;if(document.createEvent) +{var evt=document.createEvent('HTMLEvents');evt.initEvent('click',true,true);el.dispatchEvent(evt);} else if(el.fireEvent) -{ -el.fireEvent('onclick'); -if(isFunction(el.onclick)) -el.onclick(); -} -}, -setAttribute : function(element, attribute, value) -{ -var el = $(element); -if(attribute == "disabled" && value==false) -el.removeAttribute(attribute); -else -el.setAttribute(attribute, value); -}, -setOptions : function(element, options) -{ -var el = $(element); -if(el && el.tagName.toLowerCase() == "select") -{ -while(el.length > 0) -el.remove(0); -for(var i = 0; i0) +el.remove(0);for(var i=0;i 0) -window.clipboardData.setData("Text", text); -}, -hover : function(obj) -{ -obj.parentNode.className = "copycode copycode_hover"; -}, -out : function(obj) -{ -obj.parentNode.className = "copycode"; -} -}); -Prado.WebUI.TRatingList = Class.create(); -Prado.WebUI.TRatingList.prototype = -{ -selectedIndex : -1, -initialize : function(options) -{ -this.options = options; -this.element = $(options['ID']); -Element.addClassName(this.element,options.cssClass); -this.radios = document.getElementsByName(options.field); -for(var i = 0; i -1 ? -this.radios[index].value : this.options.caption; -} -} +this.onPostBack(event,options);if(typeof(onclicked)=="boolean"&&!onclicked) +Event.stop(event);},onPostBack:function(event,options) +{Prado.PostBack(event,options);}};Prado.WebUI.TButton=Class.extend(Prado.WebUI.PostBackControl);Prado.WebUI.TLinkButton=Class.extend(Prado.WebUI.PostBackControl);Prado.WebUI.TCheckBox=Class.extend(Prado.WebUI.PostBackControl);Prado.WebUI.TBulletedList=Class.extend(Prado.WebUI.PostBackControl);Prado.WebUI.TImageMap=Class.extend(Prado.WebUI.PostBackControl);Prado.WebUI.TImageButton=Class.extend(Prado.WebUI.PostBackControl);Object.extend(Prado.WebUI.TImageButton.prototype,{hasXYInput:false,onPostBack:function(event,options) +{if(!this.hasXYInput) +{this.addXYInput(event,options);this.hasXYInput=true;} +Prado.PostBack(event,options);},addXYInput:function(event,options) +{var imagePos=Position.cumulativeOffset(this.element);var clickedPos=[event.clientX,event.clientY];var x=clickedPos[0]-imagePos[0]+1;var y=clickedPos[1]-imagePos[1]+1;var id=options['EventTarget'];var x_input=INPUT({type:'hidden',name:id+'_x',value:x});var y_input=INPUT({type:'hidden',name:id+'_y',value:y});this.element.parentNode.appendChild(x_input);this.element.parentNode.appendChild(y_input);}});Prado.WebUI.TRadioButton=Class.extend(Prado.WebUI.PostBackControl);Prado.WebUI.TRadioButton.prototype.onRadioButtonInitialize=Prado.WebUI.TRadioButton.prototype.initialize;Object.extend(Prado.WebUI.TRadioButton.prototype,{initialize:function(options) +{this.element=$(options['ID']);if(!this.element.checked) +this.onRadioButtonInitialize(options);}});Prado.WebUI.TTextBox=Class.extend(Prado.WebUI.PostBackControl,{onInit:function(options) +{if(options['TextMode']!='MultiLine') +Event.observe(this.element,"keydown",this.handleReturnKey.bind(this));Event.observe(this.element,"change",Prado.PostBack.bindEvent(this,options));},handleReturnKey:function(e) +{if(Event.keyCode(e)==Event.KEY_RETURN) +{var target=Event.element(e);if(target) +{Event.fireEvent(target,"change");Event.stop(e);}}}});Prado.WebUI.TListControl=Class.extend(Prado.WebUI.PostBackControl,{onInit:function(options) +{Event.observe(this.element,"change",Prado.PostBack.bindEvent(this,options));}});Prado.WebUI.TListBox=Class.extend(Prado.WebUI.TListControl);Prado.WebUI.TDropDownList=Class.extend(Prado.WebUI.TListControl);Prado.WebUI.DefaultButton=Class.create();Prado.WebUI.DefaultButton.prototype={initialize:function(options) +{this.options=options;this._event=this.triggerEvent.bindEvent(this);Event.observe(options['Panel'],'keydown',this._event);},triggerEvent:function(ev,target) +{var enterPressed=Event.keyCode(ev)==Event.KEY_RETURN;var isTextArea=Event.element(ev).tagName.toLowerCase()=="textarea";if(enterPressed&&!isTextArea) +{var defaultButton=$(this.options['Target']);if(defaultButton) +{this.triggered=true;Event.fireEvent(defaultButton,this.options['Event']);Event.stop(ev);}}}};Prado.WebUI.TTextHighlighter=Class.create();Prado.WebUI.TTextHighlighter.prototype={initialize:function(id) +{if(!window.clipboardData)return;var options={href:'javascript:;/'+'/copy code to clipboard',onclick:'Prado.WebUI.TTextHighlighter.copy(this)',onmouseover:'Prado.WebUI.TTextHighlighter.hover(this)',onmouseout:'Prado.WebUI.TTextHighlighter.out(this)'} +var div=DIV({className:'copycode'},A(options,'Copy Code'));document.write(DIV(null,div).innerHTML);}};Object.extend(Prado.WebUI.TTextHighlighter,{copy:function(obj) +{var parent=obj.parentNode.parentNode.parentNode;var text='';for(var i=0;i0) +window.clipboardData.setData("Text",text);},hover:function(obj) +{obj.parentNode.className="copycode copycode_hover";},out:function(obj) +{obj.parentNode.className="copycode";}});Prado.WebUI.TRatingList=Class.create();Prado.WebUI.TRatingList.prototype={selectedIndex:-1,initialize:function(options) +{this.options=options;this.element=$(options['ID']);Element.addClassName(this.element,options.cssClass);this.radios=document.getElementsByName(options.field);for(var i=0;i-1?this.radios[index].value:this.options.caption;}} \ No newline at end of file -- cgit v1.2.3