// util.js - written by Brandon Moon for Pixelture
// copyright 2011

// Add some utility functions to Array (mostly for remove())
if (!Array.prototype.indexOf) {
	Array.prototype.indexOf = function(obj, start) {
		 for (var i = (start || 0), j = this.length; i < j; i++) {
			 if (this[i] === obj) { return i; }
		 }
		 return -1;
	}
};

if (!Array.prototype.remove) {
	Array.prototype.remove = function(obj, start) {
		var index = this.indexOf(obj, start);
		if (index == -1) return this; // not in array
		var rightPart = this.slice(index + 1);
		this.length = index;
		this.push.apply(this, rightPart);
		return this;
	}
};

// For easy lookup of elements
function $(id) {
	return document.getElementById(id);
};

// Opacity setting that works for MSIE?
function setOpacity(obj, opac) {
	obj.style.opacity = opac;
	var verOffset;
	if ((verOffset = navigator.userAgent.indexOf("MSIE")) != -1)
		if (parseInt(navigator.userAgent.substring(verOffset + 5)) < 8)
			obj.style.filter = "alpha(opacity=" + (opac * 100) + ")";
};

// Fixes small browser bug with subelements and mouse out	
function isMouseOut(elem, event) { 
	var child;
	if (event.toElement) child = event.toElement;
	else if (event.relatedTarget) child = event.relatedTarget;
	if (child) {
		var node = child;
		while (node.parentNode) {
			if (node.parentNode == elem) return false;
			node = node.parentNode;
		}
		return true;
	}
	return false;
}
