/*	DARCY COMMON JAVASCRIPT LIBRARY
	USEFUL FUNCTIONS AND STUFF
	
	By: Ayman Habayeb/Crome Tysnomi since 2009
	
	INCLUDING:
	- SHORTCUTS FOR COMMONLY USED JAVASCRIPT ELEMENTS
	- HANDLING MULTIPLE CLASSES
*/

// Inspired by jQuery; an easier function for getting an element:
function $(name) {
	return document.getElementById(name);
}

function r(mag) {
	return Math.floor(Math.random() * mag);
}

function pick(v1,v2) {
	if (v1) {
		return v1;
	} else {
		return v2
	}
}

function ajax(url,callback) {
	ajax = new XMLHttpRequest();
	ajax.open("GET", url, true);
	ajax.onreadystatechange = callback;
	ajax.send(null);
	
	ajax.ready = function() {
		if (ajax.readyState == 4 && ajax.status == 200) {
			return true;
		} else {
			return false;
		}
	}
	
	return ajax;
}

// Inspired by jQuery; adding and removing classes from an element:
function hasClass(dom,classname) {
	if (dom.className.indexOf(classname) > -1) {
		return true;
	} else {
		return false;
	}
}

function addClass(dom,classname) {
	if (!hasClass(dom,classname)) {
		var classes = dom.className.split(' ');
		classes.push(classname);
		
		dom.className = classes.join(' ');
	}
}

function delClass(dom,classname) {
	dom.className = dom.className.replace(classname,'');
}

function toggleClass(dom,classname) {
	if (hasClass(dom,classname)) {
		delClass(dom,classname);
	} else {
		addClass(dom,classname);
	}
}

// Array extensions
Array.prototype.pointer = 0;

Array.prototype.next = function() {
	l = this.pointer;
	this.pointer++;
	
	if (this.pointer == this.length) {
		this.pointer = 0;
	}
	
	return this[l];
}

Array.prototype.random = function() {
	l = this.length;
	l = r(l);
	
	this[l].index = l;
	return this[l];
}

// Cookies

// Read cookie (thanks http://www.quirksmode.org/js/cookies.html)
function cookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	
	return null;
}





