﻿/* Base functions */
function getElementsByClassName(node, classname) {
    if (node.getElementsByClassName) { // use native implementation if available!
        return node.getElementsByClassName(classname);
    } else {
        return (function getElementsByClass(searchClass, node) {
            if (node == null)
                node = document;
            var classElements = [],
		els = node.getElementsByTagName("*"),
		elsLen = els.length,
		pattern = new RegExp("(^|\\s)" + searchClass + "(\\s|$)"), i, j;

            for (i = 0, j = 0; i < elsLen; i++) {
                if (pattern.test(els[i].className)) {
                    classElements[j] = els[i];
                    j++;
                }
            }
            return classElements;
        })(classname, node);
    }
}

function addEventListener(node, eventName, callback) {
    if (node.addEventListener) {
        node.addEventListener(eventName, callback, false);
    }
    else if (node.attachEvent) {
        node.attachEvent('on' + eventName, callback);
    }
}

function removeEventListener(node, eventName, callback) {
    if (node.removeEventListener) {
        node.removeEventListener(eventName, callback, false);
    }
    else if (node.detachEvent) {
        node.detachEvent('on' + eventName, callback);
    }
}
