function isArray(variable) {
	if (typeof(variable) == 'object'){
		if (typeof(variable.length) == 'number'){
			return true;
		}
	}
	return false;
}

function inArray(item, array) {
	for (var i = 0; i < array.length; i++) {
		if (array[i] == item) {
			return true;
		}
	}
	return false;
}

function createRequest() {
	try {
		request = new XMLHttpRequest();
	} catch (tryMS) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (otherMS) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (failed) {
				request = null;
			}
		}
	}
	return request;
}

function findPos(obj) {
	var curleft = 0;
	var curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
}

function addEventHandler(element, event, handler) {
	if (document.addEventListener) {
		element.addEventListener(event, handler, false);
	} else if (document.attachEvent) {
		element.attachEvent("on" + event, handler);
	}
}

function hasClass(element, value) {
	var currentClassString = element.className;
	if (currentClassString) {
		var classNames = new Array();
		classNames = currentClassString.split(" ");
		for (var i = 0; i < classNames.length; i++) {
			if (classNames[i] == value) {
				return true;
			}
		}
	}
	return false;
}

function addClass(element, value) {
	if (!element.className) {
		element.className = value;
	} else {
		var newClassName = element.className;
		newClassName += " ";
		newClassName += value;
		element.className = newClassName;
    }
}

function removeClass(element, value) {
	var currentClassString = element.className;
	if (currentClassString) {
		var classNames = new Array();
		classNames = currentClassString.split(" ");
		var newClassNames = new Array();
		for (var i = 0; i < classNames.length; i++) {
			if (classNames[i] != value) {
				newClassNames.push(classNames[i]);
			}
		}
		element.className = newClassNames.join(" ");
	}
}

function getElementsByClass(searchClass, node, tag) {
	var classElements = new Array();
	if (node == null) {
		node = document;
	}
	if (tag == null) {
		tag = '*';
	}
	var els = node.getElementsByTagName(tag);
	for (i = 0; i < els.length; i++) {
		if (hasClass(els[i], searchClass)) {
			classElements.push(els[i]);
		}
	}
	return classElements;
}

function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

function insertAfter(newElement, targetElement) {
	var parent = targetElement.parentNode;
	if (parent.lastChild == targetElement) {
		parent.appendChild(newElement);
	} else {
		parent.insertBefore(newElement, targetElement.nextSibling);
	}
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(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;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}