/**
 * Set up the shop elements on the page, hiding the information until the correct element is clicked
 */
function initShops() {
	var i; // Iterators
	
	try {
		var shops = document.getElements(".shop");
	} catch (e) {
		console.log(e);
		return;
	}
	
	for (i=0; i<shops.length ;i++) {
		var shop = shops[i];
		var controls = document.getElements(".control a", shop);
		
		shop.controlMore = controls[0];
		shop.controlOrder = controls[1];
		shop.controlMore.detail = shop.detail = document.getElements(".hidden", shop)[0];
		
		shop.detail.style.display = "none";
		shop.controlMore.onclick = function() {
			toggleDetail(this.detail, "block");
			return false;
		}
	}
}

/**
 * Hide/Show hidden content
 * @param element	e	The element to hide/show
 * @param string	def	The default (shown) display style of the element
 */
function toggleDetail(e, def) {
	(e = e.style).display = e.display==def ? "none" : def;
}

/**
 * Get arrays matching a CSS-Style search query
 * @param string	e		The CSS search query
 * @param element	elem	A specific element to search within (defaults to document.body)
 */
document.getElements = function(e, elem) {
	if (!e || !e.length || e.length == 0)
	return [];
	var store = [elem||document.body];
	var store_t = [];
	e = e.split(" ");
	for (var i=0; i<e.length; i++) {
		var r = {
			id:  "",
			tag: "*",
			clas:[]
		};
		var c, s, t=e[i];
		while (t.length > 0) {
			s = t.search(/.[#\.]/) + 1 || t.length;
			c = t.substr(0, s);

			if (c.substr(0, 1) == "#")		r.id = c.substr(1);
			else if (c.substr(0, 1) == ".")	r.clas.push(c.substr(1));
			else							r.tag = c;

			t = t.substr(s);
		}
		while (store.length > 0) {
			var curr = [], temp = store.shift().getElementsByTagName(r.tag);
			for (var j=0; j<temp.length; j++) {
				curr.push(temp[j]);
			}
			while (curr.length > 0) {
				var ok = true, ce = curr.shift();
				if (r.id && ce.id!=r.id) ok = false;
				for (j=0; j<r.clas.length; j++) {
					if ((" "+ce.className+" ").indexOf(" "+r.clas[j]+" ") == -1) {
						ok = false;
						break;
					}
				}
				if (ok) store_t.push(ce);
			}
		}
		store = store_t;
		store_t = [];
	}
	return store;
};
