API Docs for: 1.4.4
Show:

File: scriptasaurus\ukeGeeks.toolsLite.js

/**
 * some jQuery-like tools (very, very crappy. wish we could count on jQuery being on the page.)
 * if you do want to use jQuery (and why wouldn't you) I'm not offended if you yank this out.
 * @class toolsLite
 * @namespace ukeGeeks
 * @singleton
 */
ukeGeeks.toolsLite = (function() {
	/**
	 * attach public members to this object
	 * @property _public
	 * @type {Object}
	 */
	var _public = {};

	var regEx = {
		dbleSpace: /\s{2,}/g,
		trim: /^\s+|\s+$/g
	};

	/**
	 * adds className to element.
	 * @method addClass
	 * @param element {DOM_element} target element
	 * @param className {string} CSS classname to add
	 * @return {void}
	 */
	_public.addClass = function(element, className) {
		if (!_public.hasClass(element, className)) {
			element.className += ' ' + className;
		}
	};

	_public.hasClass = function(element, className) {
		return element.className.match(getRegEx(className));
	};

	_public.removeClass = function(element, className) {
		if (_public.hasClass(element, className)) {
			var reg = getRegEx(className);
			element.className = element.className.replace(reg, ' ');
		}
	};

	_public.setClass = function(element, className, isActive) {
		if (isActive) {
			_public.addClass(element, className);
		}
		else {
			_public.removeClass(element, className);
		}
	};

	var getRegEx = function(className) {
		return new RegExp('(\\s|^)' + className + '(\\s|$)');
	};

	/**
	 * Removes all white space at the begining and end of a string.
	 * @method trim
	 * @param str {String} String to trim.
	 * @return {String} Returns string without leading and following white space characters.
	 */
	_public.trim = function(str) {
		return str.replace(regEx.trim, '');
	};

	_public.pack = function(value) {
		return value.replace(regEx.dbleSpace, ' ').replace(regEx.trim, '');
	};

	/**
	 * Searches within Node for tags with specified CSS class.
	 * @method getElementsByClass
	 * @param searchClass {string}  CSS Classname
	 * @param node {HtmlNode} parent node to begin search within. Defaults to entire document.
	 * @param tag {string} restrict search to a specific tag name. defaults to all tags.
	 * @return {arrayDomElements}
	 */
	_public.getElementsByClass = function(searchClass, node, tag) {
		var i, j;
		// use falsey -- if ((node === null) || (node === undefined)) {
		if (!node) {
			node = document;
		}
		if (node.getElementsByClassName) {
			return node.getElementsByClassName(searchClass);
		}

		var classElements = [];
		if (!tag) {
			tag = '*';
		}
		var els = node.getElementsByTagName(tag);
		var elsLen = els.length;
		var pattern = new RegExp("(^|\\s)" + searchClass + "(\\s|$)");
		for (i = 0, j = 0; i < elsLen; i++) {
			if (pattern.test(els[i].className)) {
				classElements[j] = els[i];
				j++;
			}
		}
		return classElements;
	};

	return _public;

}());