0
* For details, see http://prototype.conio.net/
0
this.initialize.apply(this, arguments);
0
@@ -17,7 +17,7 @@ Class = {
0
-
Abstract = new Object();
0
+
var Abstract = new Object();
0
Object.prototype.extend = function(object) {
0
for (property in object) {
0
@@ -40,7 +40,13 @@ Function.prototype.bindAsEventListener = function(object) {
0
+Number.prototype.toColorPart = function() {
0
+ var digits = this.toString(16);
0
+ if (this < 16) return '0' + digits;
0
@@ -56,7 +62,7 @@ Try = {
0
for (var i = 0; i < arguments.length; i++) {
0
var element = $(arguments[i]);
0
@@ -85,39 +91,27 @@ function $() {
0
-function getElementsByClassName(className, element) {
0
- var all = document.all ? document.all : document.getElementsByTagName(element);
0
+function getElementsByClassName(className) {
0
+ var children = document.getElementsByTagName('*') || document.all;
0
var elements = new Array();
0
- for (var e = 0; e < all.length; e++) {
0
- if (all[e].className == className)
0
- elements[elements.length] = all[e];
0
+ for (var i = 0; i < children.length; i++) {
0
+ var child = children[i];
0
+ var classNames = child.className.split(' ');
0
+ for (var j = 0; j < classNames.length; j++) {
0
+ if (classNames[j] == className) {
0
-// function getElementsByClassName(className, element) {
0
-// var children = (element || document).getElementsByTagName('*');
0
-// var elements = new Array();
0
-// for (var i = 0; i < children.length; i++) {
0
-// var child = children[i];
0
-// var classNames = child.className.split(' ');
0
-// for (var j = 0; j < classNames.length; j++) {
0
-// if (classNames[j] == className) {
0
-// elements.push(child);
0
/*--------------------------------------------------------------------------*/
0
getTransport: function() {
0
function() {return new ActiveXObject('Msxml2.XMLHTTP')},
0
@@ -135,8 +129,7 @@ Ajax.Base.prototype = {
0
}.extend(options || {});
0
@@ -206,23 +199,26 @@ Ajax.Updater.prototype = (new Ajax.Base()).extend({
0
updateContent: function() {
0
this.container.innerHTML = this.request.transport.responseText;
0
- if (this.options.
position.toLowerCase() == 'replace') {
0
+ if (this.options.
insertion) {
0
this.container.innerHTML = this.request.transport.responseText;
0
- Insert[this.options.position.toLowerCase()]( this.container, this.request.transport.responseText );
0
+ new this.options.insertion(this.container,
0
+ this.request.transport.responseText);
0
- switch(this.options.effect) {
0
- case 'highlight': new YellowFader(this.container); break;
0
+ if (this.options.effect) {
0
+ new this.options.effect(this.container);
0
- if (this.onComplete) this.onComplete(this.request);
0
+ if (this.onComplete) {
0
+ setTimeout((function() {this.onComplete(this.request)}).bind(this), 10);
0
/*--------------------------------------------------------------------------*/
0
for (var i = 0; i < arguments.length; i++)
0
$(arguments[i]).value = '';
0
@@ -241,7 +237,7 @@ Field = {
0
/*--------------------------------------------------------------------------*/
0
serialize: function(form) {
0
var elements = Form.getElements($(form));
0
var queryComponents = new Array();
0
@@ -300,6 +296,7 @@ Form.Element.Serializers = {
0
return Form.Element.Serializers.inputSelector(element);
0
inputSelector: function(element) {
0
@@ -359,90 +356,105 @@ Form.Observer.prototype = (new Abstract.TimedObserver()).extend({
0
/*--------------------------------------------------------------------------*/
0
-Number.prototype.toColorPart = function() {
0
- var digits = this.toString(16);
0
- if (this < 16) return '0' + digits;
0
+Abstract.Insertion = function(adjacency) {
0
+ this.adjacency = adjacency;
0
-var YellowFader = Class.create();
0
-YellowFader.prototype = {
0
+Abstract.Insertion.prototype = {
0
+ initialize: function(element, content) {
0
+ this.element = $(element);
0
+ this.content = content;
0
+ if (this.adjacency && this.element.insertAdjacentHTML) {
0
+ this.element.insertAdjacentHTML(this.adjacency, this.content);
0
+ this.range = this.element.ownerDocument.createRange();
0
+ if (this.initializeRange) this.initializeRange();
0
+ this.fragment = this.range.createContextualFragment(this.content);
0
+var Insertion = new Object();
0
+Insertion.Before = Class.create();
0
+Insertion.Before.prototype = (new Abstract.Insertion('beforeBegin')).extend({
0
+ initializeRange: function() {
0
+ this.range.setStartBefore(this.element);
0
+ insertContent: function() {
0
+ this.element.parentNode.insertBefore(this.fragment, this.element);
0
+Insertion.Top = Class.create();
0
+Insertion.Top.prototype = (new Abstract.Insertion('afterBegin')).extend({
0
+ initializeRange: function() {
0
+ this.range.selectNodeContents(this.element);
0
+ this.range.collapse(true);
0
+ insertContent: function() {
0
+ this.element.insertBefore(this.fragment, this.element.firstChild);
0
+Insertion.Bottom = Class.create();
0
+Insertion.Bottom.prototype = (new Abstract.Insertion('beforeEnd')).extend({
0
+ initializeRange: function() {
0
+ this.range.selectNodeContents(this.element);
0
+ this.range.collapse(this.element);
0
+ insertContent: function() {
0
+ this.element.appendChild(this.fragment);
0
+Insertion.After = Class.create();
0
+Insertion.After.prototype = (new Abstract.Insertion('afterEnd')).extend({
0
+ initializeRange: function() {
0
+ this.range.setStartAfter(this.element);
0
+ insertContent: function() {
0
+ this.element.parentNode.insertBefore(this.fragment,
0
+ this.element.nextSibling);
0
+/*--------------------------------------------------------------------------*/
0
+var Effect = new Object();
0
+Effect.Highlight = Class.create();
0
+Effect.Highlight.prototype = {
0
initialize: function(element) {
0
- if (typeof element == 'string') element = $(element);
0
- this.element = element;
0
+ this.element = $(element);
0
this.current = this.start;
0
if (this.isFinished()) return;
0
- if (this.timer) clearTimeout(this.timer);
// prevent flicker0
+ if (this.timer) clearTimeout(this.timer);
0
this.highlight(this.element, this.current);
0
this.timer = setTimeout(this.fade.bind(this), 250);
0
isFinished: function() {
0
return this.current > this.finish;
0
highlight: function(element, current) {
0
element.style.backgroundColor = "#ffff" + current.toColorPart();
0
-/*--------------------------------------------------------------------------*/
0
- before_begin: function(dom, html) {
0
- if (dom.insertAdjacentHTML) {
0
- dom.insertAdjacentHTML('BeforeBegin', html);
0
- var r = dom.ownerDocument.createRange();
0
- r.setStartBefore(dom);
0
- var df = r.createContextualFragment(html);
0
- dom.parentNode.insertBefore(df, dom);
0
- after_begin: function(dom, html) {
0
- if (dom.insertAdjacentHTML) {
0
- dom.insertAdjacentHTML('AfterBegin', html);
0
- var r = dom.ownerDocument.createRange();
0
- r.selectNodeContents(dom);
0
- var df = r.createContextualFragment( html );
0
- dom.insertBefore(df, dom.firstChild );
0
- before_end: function(dom, html) {
0
- if (dom.insertAdjacentHTML) {
0
- dom.insertAdjacentHTML('BeforeEnd', html);
0
- var r = dom.ownerDocument.createRange();
0
- r.selectNodeContents(dom);
0
- var df = r.createContextualFragment(html);
0
- after_end: function(dom, html) {
0
- if (dom.insertAdjacentHTML) {
0
- dom.insertAdjacentHTML('BeforeBegin', html);
0
- var r = dom.ownerDocument.createRange();
0
- var df = r.createContextualFragment( html );
0
- dom.parentNode.insertBefore(df, dom.nextSibling);
0
\ No newline at end of file
Comments
No one has commented yet.