User:Manishearth/toolbox.js

/* A useful toolbox of functions See User:Manishearth/library.js for more



//shortened copy of getElmtById, except it takes care of multiple elements function $ID { 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; } var $i=$ID

//Cookie functions function getCookie( name ) { var start = document.cookie.indexOf( name + "=" ); var len = start + name.length + 1; if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) { return null; }	if ( start == -1 ) return null; var end = document.cookie.indexOf( ';', len ); if ( end == -1 ) end = document.cookie.length; return unescape( document.cookie.substring( len, end ) ); }

function setCookie( name, value, expires, path, domain, secure ) { var today = new Date; today.setTime( today.getTime ); if ( expires ) { expires = expires * 1000 * 60 * 60 * 24; }	var expires_date = new Date( today.getTime + (expires) ); document.cookie = name+'='+escape( value ) + ( ( expires ) ? ';expires='+expires_date.toGMTString : '' ) + //expires.toGMTString ( ( path ) ? ';path=' + path : '' ) + ( ( domain ) ? ';domain=' + domain : '' ) + ( ( secure ) ? ';secure' : '' ); }

function deleteCookie( name, path, domain ) { if ( getCookie( name ) ) document.cookie = name + '=' + ( ( path ) ? ';path=' + path : '') + ( ( domain ) ? ';domain=' + domain : '' ) + ';expires=Thu, 01-Jan-1970 00:00:01 GMT'; }

/* COMMENTED TO MAKE REFTOOLBAR 2.0 work

//inArray proto Array.prototype.inArray = function (value) { var i;	for (i=0; i < this.length; i++) { if (this[i] === value) { return true; }	}	return false; } //PET PEEVE SOLVER (aka getElmtsByClass) function getElementsByClass(searchClass,node,tag) { var classElements = new Array; if ( node == null ) node = document; if ( tag == null ) 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; }

//My shortcut for this one, to mirror $ var _ = getElementsByClass;

//insertAfter to mirror insertBefore function insertAfter(parent, node, referenceNode) { parent.insertBefore(node, referenceNode.nextSibling); }

//toggle to toggle an elements display attribute function toggleM(obj) { var el = document.getElementById(obj); if ( el.style.display != 'none' ) { el.style.display = 'none'; }	else { el.style.display = ''; } } /* COMMENTED TO MAKE REFTOOLBAR 2.0 work //run a function on all elmts of array (mapped) Array.prototype.map = function(f) { var returnArray=[]; for (i=0; i<this.length; i++) { returnArray.push(f(this[i])); } return returnArray; }