/***************************************************************************
         jesus/modules/base.js  -  Base module for JesuS library
                             -------------------
    begin                : Wed Dec 19 2007
    copyright            : (C) 2007 by Filios Konstantinos
    licence              : GNU GPL 2 (or later)
    email                : drcypher@mail.ntua.gr
    last modified        : Wed Dec 19 2007
    module version       : 1.0
 ***************************************************************************/

var ns6 = document.getElementById;
var ie4 = document.all;
var ie5 = ie4 && ns6;

function doc(dom)
{
	if (!dom) {
		dom = document;
	}

	return (dom.documentElement) ? dom.documentElement : dom.body;
}

/***************************************************************************
 *  Function:  $
 *  Returns:   (DOM Element) Handle of HTML DOM Element with given ID or NULL
 ***************************************************************************/
function $(str_id)
{
	// Browsers respecting DOM
	if (ns6) {
		return document.getElementById(str_id);
	// Internet Explorer sucks
	} else {
		return eval('document.all.' + str_id);
	}
}

// Create html element
function new$(str_id, str_parent)
{
	// 'str_id' already exists, return
	if ( (dom = $(str_id))) {
		return dom;
	}

	// Fetch parent element
	if ( !(dom = $(str_target))) {
		return;
	}

	// Append element
	dom.innerHTML += '<div id="' + str_id + '"></div>';

	return $(str_id);
}

function bln_contains_ns6(a, b)
{
	while (b.parentNode) {
		if ((b = b.parentNode) == a) {
			return true;
		}
	}

	return false;
}

function bln_mouseout(dom, e)
{
	return (ns6 && (e.currentTarget != e.relatedTarget) &&
			!bln_contains_ns6(e.currentTarget, e.relatedTarget)) ||
			(ie4 && (dom != e.toElement) && !dom.contains(e.toElement));
}

function str_bytesize(int_size)
{
	str_fmt = "%.2f %s";

	if (int_size < 1000) {
		int_order = 1;
		str_unit = "B";
		str_fmt = "%d %s";
	} else if (int_size < 1000000) {
		int_order = 1000;
		str_unit = "KB";
	} else if (int_size < 1000000000) {
		int_order = 1000000;
		str_unit = "MB";
	} else if (int_size < 1000000000000) {
		int_order = 1000000000;
		str_unit = "GB";
	} else if (int_size < 1000000000000000) {
		int_order = 1000000000000;
		str_unit = "TB";
	}

	return (int_size / int_order) + ' ' + str_unit;
}
