/**
 * @author Calvin Chan
 * ehosting website general javascript functions
 * ref: http://www.quirksmode.org/js/dhtmloptions.html
 */

/**
 * usage: var obj = getObj('element_id');
 */
function eh_getObj(name) {
	if (document.getElementById) {
		return document.getElementById(name);
	} else if (document.all) {
		return document.all[name];
	} else if (document.layers) {
		return document.layers[name];
	} else return null;
}

/**
 * usage: var style = getStyle('element_id');
 */
function eh_getStyle(name) {
	if (document.getElementById) {
		return document.getElementById(name).style;
	} else if (document.all) {
		return document.all[name].style;
	} else if (document.layers) {
		return document.layers[name];
	} else return null;
}

/**
 * usage: toggleClass('element_id')
 */
function eh_toggleClass(id, groupid, classname) {
	if (classname == null) classname = 'active';
	var obj = eh_getObj(id);
	if (obj) {
		obj.className = (obj.className == classname)? '' : classname;
	}
}

function eh_findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function eh_findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

/**
 * align target
 */
function eh_align(target, source, offsetX, offsetY)
{
	var target_obj = eh_getObj(target);
	var source_obj = eh_getObj(source);
	if (target_obj != null && source_obj != null) {
		target_obj.style.left = eh_findPosX(source_obj) + offsetX + 'px';
		target_obj.style.top = eh_findPosY(source_obj) + offsetY + 'px';
	} else {
		alert('can\'t align! target=' + target + ', source=' + source);
	}
}
