//
// 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 preventEvent(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)
{
    var 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;
}

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 showSection(id) 
{
    var obj = $(id);
    
    if (obj) {
        if (obj.style.display == "none") {
            setSectionState(obj.id, 'block');
        }
        else {
            setSectionState(obj.id, 'none');
        }
    }
}

function setSectionState(id, display)
{
    var obj = $(id);
    var img = $(id + '-img');
    
    if (!img) return;
    
    var opened = '/public/images/opened-9x9.gif';
    var closed = '/public/images/closed-9x9.gif';
    
    if (obj) {
        obj.style.display = display;
        
        if (display == 'block') {
            img.src = opened;
            setCookie(id, 'opened');
        }
        else {
            img.src = closed;
            setCookie(id, 'closed');
        }
    }
}

function showFolds(id, action)
{
    var container = $(id);    
    var elements = container.getElementsByTagName('div');
    var display = action == 'expand' ? 'block' : 'none';
    
    for (i = 0; i < elements.length; i ++) {
        if (elements[i].style.display != display)
            setSectionState(elements[i].id, display);            
    }
}

/*
    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 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 += '&nbsp;<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);
}


