//
// Common javascript functions v1.0
// Vladimir Kubarski (vkubarski@gmail.com)
//
function $(element)
{
    return document.getElementById(element);    
}

function validateForm(message, formObj)
{
    for (arg = 2; arg < arguments.length; arg ++)
    
        if (formObj && !formObj.elements[arguments[arg]].value)
        {
            if (message != "") alert (message);
            formObj.elements[arguments[arg]].focus();

            return false;
        }
        
    return true;
}

function setActiveField(element)
{
    obj = $(element);
    if (obj) {   
        try {    
            obj.select();
            obj.focus();    
        }
        catch(e) {}
    }
}

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;
	}
}

function preventDocumentClick(e) 
{
    if (!e) var e = window.event;
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();    
}

function preventSelection(e)
{
    if (!e) var e = window.event;
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();    
	
    return false;    
}

function toggle(element)
{
    element = $(element);
    
    if (element) {
        if (element.style.display == 'block')
            element.style.display = 'none';
        else
            element.style.display = 'block';
    }
}

function show(element)
{
    element = $(element);

    if (element) {
        if (element.style.visibility == 'visible')
            element.style.visibility = 'hidden';
        else
            element.style.visibility = 'visible';
    }
}

function extractNumber(value) 
{ 
    var n = parseInt(value); 
    
    return n == null || isNaN(n) ? 0 : n; 
} 

function getTopOffset(id) 
{
    var offset = parseInt(id.offsetTop);

    while((id = id.offsetParent) != null)
        offset = offset + id.offsetTop;

    return offset;
}

function getLeftOffset(id) 
{
    var offset = parseInt(id.offsetLeft);

    while((id = id.offsetParent) != null)
        offset = offset + id.offsetLeft;
    return offset;
}

function debug(str)
{
    var s = $('debug').innerHTML;
    $('debug').innerHTML = str + '<br>' + s;
}

/*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
*/

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}

function getPosX(e)
{
    if (e.pageX) {
        return e.pageX;
    }
    else if (e.clientX) {
        return e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
    }
}

function getPosY(e)
{
    if (e.pageY) {
        return e.pageY;        
    }
    else if (e.clientY) {
        return e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
    }
}

function f_clientWidth() {
	return f_filterResults (
		window.innerWidth ? window.innerWidth : 0,
		document.documentElement ? document.documentElement.clientWidth : 0,
		document.body ? document.body.clientWidth : 0
	);
}

function f_clientHeight() {
	return f_filterResults (
		window.innerHeight ? window.innerHeight : 0,
		document.documentElement ? document.documentElement.clientHeight : 0,
		document.body ? document.body.clientHeight : 0
	);
}

function f_scrollLeft() {
	return f_filterResults (
		window.pageXOffset ? window.pageXOffset : 0,
		document.documentElement ? document.documentElement.scrollLeft : 0,
		document.body ? document.body.scrollLeft : 0
	);
}

function f_scrollTop() {
	return f_filterResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}

function f_filterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}

function setCookie(name, value) 
{
    var today = new Date();
    var expire = new Date();
    var nDays = 365;
    expire.setTime(today.getTime() + 3600000 * 24 * nDays);

    document.cookie =  name + "=" + value + ";path=/;expires=" + expire.toGMTString();
} 

function addItem(sectionId, itemId)
{
    var item      = document.getElementById(itemId);
    var clone     = item.cloneNode(true);

    // Generate a new ID
    var id = itemId + Math.floor(Math.random() * 100);
    clone.setAttribute('id', id);
    clone.getElementsByTagName('td')[0].innerHTML += '<br/><a href="javascript:void(0)" onclick="removeItem(\'' + sectionId + '\', \'' + id +'\')" class="inside-link">Remove</a>';
    
    document.getElementById(sectionId).appendChild(clone);
}

function removeItem(sectionId, itemId)
{
    // Retrieve section element for the child
    var section = document.getElementById(sectionId);
    var item = document.getElementById(itemId);
    section.removeChild(item);
}

