
/*
 * Usage:
 * var args = getArgs();
 * var q = args.q || ""; // use argument or default value
 * var n = args.n ? parseInt(args.n) : 0;
 */
function getArgs() {
	var args = {};
	var query = location.search.substring(1);
	var pairs = query.split("&");
	for (var i=0; i<pairs.length; i++) {
		var pos = pairs[i].indexOf("=");
		if (pos == -1) continue;
		var argname = pairs[i].substring(0, pos);
		var value = pairs[i].substring(pos+1);
		value = decodeURIComponent(value);
		args[argname] = value;
	}
	return args;
}


/* DOM */

function id(e) {
	if (typeof e == "string") return document.getElementById(e);
	return e;
}

function removeChildren(e) {
	e = id(e);
	
	while (e.lastChild) {
		e.removeChild(e.lastChild);
	}
}

/* CSS Class */

var CSSClass = {};

// Return true if element is a member of the class c; false otherwise
CSSClass.is = function(e, c) {
	e = id(e);
	
	// pre-screen prior to regexp
	var classes = e.className;
	if (!classes) return false; // no classes
	if (classes == c) return true;  // Class c only
	
	return classes.search("\\b" + c + "\\b") != -1;
};

// Add class c to element e if not already present
CSSClass.add = function(e, c) {
	e = id(e);
	
	if (CSSClass.is(e, c)) return;
	if (e.className) c = " " + c;
	e.className += c;
};

// Remove all occurences of class c from e
CSSClass.remove = function(e, c) {
	e = id(e);
	e.className = e.className.replace(new RegExp("\\b" + c + "\\b\\s*", "g"), "");
}



