127 lines
2.8 KiB
JavaScript
127 lines
2.8 KiB
JavaScript
/* Prototype JavaScript framework
|
|
* (c) 2005 Sam Stephenson <sam@conio.net>
|
|
*
|
|
* Prototype is freely distributable under the terms of an MIT-style license.
|
|
*
|
|
* For details, see the Prototype web site: http://prototype.conio.net/
|
|
*
|
|
/*--------------------------------------------------------------------------*/
|
|
|
|
|
|
//note: this is a stripped down version of prototype, to be used with moo.fx by mad4milk (http://moofx.mad4milk.net).
|
|
|
|
var Class = {
|
|
create: function() {
|
|
return function() {
|
|
this.initialize.apply(this, arguments);
|
|
}
|
|
}
|
|
}
|
|
|
|
Object.extend = function(destination, source) {
|
|
for (property in source) {
|
|
destination[property] = source[property];
|
|
}
|
|
return destination;
|
|
}
|
|
|
|
Function.prototype.bind = function(object) {
|
|
var __method = this;
|
|
return function() {
|
|
return __method.apply(object, arguments);
|
|
}
|
|
}
|
|
|
|
function $() {
|
|
var elements = new Array();
|
|
|
|
for (var i = 0; i < arguments.length; i++) {
|
|
var element = arguments[i];
|
|
if (typeof element == 'string')
|
|
element = document.getElementById(element);
|
|
|
|
if (arguments.length == 1)
|
|
return element;
|
|
|
|
elements.push(element);
|
|
}
|
|
|
|
return elements;
|
|
}
|
|
|
|
//-------------------------
|
|
|
|
document.getElementsByClassName = function(className) {
|
|
var children = document.getElementsByTagName('*') || document.all;
|
|
var elements = new Array();
|
|
|
|
for (var i = 0; i < children.length; i++) {
|
|
var child = children[i];
|
|
var classNames = child.className.split(' ');
|
|
for (var j = 0; j < classNames.length; j++) {
|
|
if (classNames[j] == className) {
|
|
elements.push(child);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return elements;
|
|
}
|
|
|
|
//-------------------------
|
|
|
|
if (!window.Element) {
|
|
var Element = new Object();
|
|
}
|
|
|
|
Object.extend(Element, {
|
|
remove: function(element) {
|
|
element = $(element);
|
|
element.parentNode.removeChild(element);
|
|
},
|
|
|
|
hasClassName: function(element, className) {
|
|
element = $(element);
|
|
if (!element)
|
|
return;
|
|
var a = element.className.split(' ');
|
|
for (var i = 0; i < a.length; i++) {
|
|
if (a[i] == className)
|
|
return true;
|
|
}
|
|
return false;
|
|
},
|
|
|
|
addClassName: function(element, className) {
|
|
element = $(element);
|
|
Element.removeClassName(element, className);
|
|
element.className += ' ' + className;
|
|
},
|
|
|
|
removeClassName: function(element, className) {
|
|
element = $(element);
|
|
if (!element)
|
|
return;
|
|
var newClassName = '';
|
|
var a = element.className.split(' ');
|
|
for (var i = 0; i < a.length; i++) {
|
|
if (a[i] != className) {
|
|
if (i > 0)
|
|
newClassName += ' ';
|
|
newClassName += a[i];
|
|
}
|
|
}
|
|
element.className = newClassName;
|
|
},
|
|
|
|
// removes whitespace-only text node children
|
|
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);
|
|
}
|
|
}
|
|
}); |