/* ****************************************************************************
 * Base javascript library 
 *
 * Functions to improve the useablity of javascript
 *
 * @author Lorne Taylor
 * @revised 2007-05-28
 * ****************************************************************************
 */

/**
 * Set default values for function parameters. In JS it is not possible to assign 
 * a default value to function parameters.
 * @param str|int|array|bool value
 * @param str|int|array|bool default
 * @return string
 */
function init(value, default_value)
{
    if (value == undefined) {
        return default_value;
    } else {
        return value;
    }
}

/**
 * Get a reference to a DOM element by ID. This establishes a reference to both
 * the elements object properties and style properties.
 * @param string|object ref 
 */
function getElement(ref)
{
    var elem = null;
    if (typeof(ref) == 'object') {
        return ref; 
    }
    else if (document.getElementById) {
        elem = document.getElementById(ref);
    }
    else if (document.all) {
        elem = document.all[ref];
    }
    else if (document.layers) {
        elem = document.layers[ref];
    }

    // if element is defined 
    if (elem) {
        return elem;
    } else {
        return false;
    }
}

function setObj(ref, prop, value)
{
    var elem = getElement(ref);
    if (elem != null && prop != undefined && value != undefined) {
        elem[prop] = value;
    } else {
        return false;   
    }
}

function getObj(ref, prop)
{
    var elem = getElement(ref);
    if (elem != null && prop != undefined) {
        return elem[prop];
    } else {
        return elem;
    }
}

function setStyle(ref, prop, value)
{
    var elem = getElement(ref);
    if (elem != null && prop != undefined && value != undefined) {
        elem.style[prop] = value;
    } else {
        return false;
    }
}

function getStyle(ref, prop)
{
    var elem = getElement(ref);
    if (elem != null && prop != undefined) {
        return elem.style[prop];
    } else {
        return elem.style;
    }
}
