
/***********************************************
	DOM navigator helper functions
***********************************************/

function getElementsByClassName(name, parent) {
	if (!parent)
		parent = document.body;
	
	if (!parent.childNodes)
		alert(parent.outerHTML);

	var r = [];
	for (var i=0; i<parent.childNodes.length; i++) {
		var node = parent.childNodes[i];
		if (node.nodeType == 3) // text
			continue;
		
		if (node.className == name)
			r[r.length] = node;
		else
			r = r.concat( getElementsByClassName(name, node) );
	}
	return r;
}

function findParentByTagName(node, tagName) {
	tagName = tagName.toLowerCase();
	for (node = node.parentNode; node != null; node = node.parentNode) {
		if (node.tagName.toLowerCase() == tagName)
			return node;
	}
	return null;
}

/***********************************************
	event helper functions
***********************************************/

function addEvent(elm, evType, fn, useCapture){
	if (elm.addEventListener)
	{
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else {
		elm['on' + evType] = fn;
	}
}

/***********************************************
	cookie helper functions
***********************************************/

function getCookie(name)
{
	var cookie_string = document.cookie;
	if (cookie_string.length != 0) {
		var re = new RegExp("(^|;)[\\s]*" + name + "=([^;]*)", "i");
		if (cookie_string.match(re)) {
			return decodeURIComponent(RegExp.$2);
		}
	}
	return "";
}

function setCookie(name, value, lifespanDays, share)
{
	var s = name + "=" + encodeURIComponent(value);
	if (lifespanDays)
		s += "; max-age=" + (60*60*24*lifespanDays);
	if (share)
		s += "; path=/";
	document.cookie = s;
}

/***********************************************
	miscallen
***********************************************/

function foreach(array, fn) {
	for (var i=0; i<array.length; i++)
		fn(array[i]);
}

/***********************************************
	dw functions
***********************************************/

function MM_preloadImages() { //v3.0
	var d=document;
	if (d.images) {
		if (!d.MM_p)
			d.MM_p = new Array();
		var i, j=d.MM_p.length, a=MM_preloadImages.arguments;
		for (i=0; i<a.length; i++)
			if (a[i].indexOf("#") != 0) {
				d.MM_p[j] = new Image;
				d.MM_p[j++].src = a[i];
			}
	}
}

function MM_findObj(n, d) { //v4.01
	var p,i,x;
	if (!d) d=document;
	if ((p=n.indexOf("?"))>0 && parent.frames.length) {
		d = parent.frames[n.substring(p+1)].document;
		n = n.substring(0,p);
	}
	if (!(x=d[n]) && d.all)
		x = d.all[n];
	for (i=0; !x && i<d.forms.length; i++)
		x = d.forms[i][n];
	for (i=0; !x && d.layers && i<d.layers.length; i++)
		x = MM_findObj(n, d.layers[i].document);
	if (!x && d.getElementById)
		x = d.getElementById(n);
	return x;
}

function MM_swapImage() { //v3.0
	var i, j=0, x, a=MM_swapImage.arguments;
	document.MM_sr = new Array;
	for (i=0; i<(a.length-2); i+=3)
		if ((x=MM_findObj(a[i])) != null) { 
			document.MM_sr[j++] = x;
			if (!x.oSrc) x.oSrc = x.src;
			x.src = a[i+2];
		}
}

function MM_swapImgRestore() { //v3.0
	var i,x,a=document.MM_sr;
	for (i=0; a && i<a.length && (x=a[i]) && x.oSrc; i++)
		x.src=x.oSrc;
}

