
/* ----- idclass.js ----- */
/**
 * @desc   Function library for setting classes of, removing classes from and 
 *         adding classes to document elements specified by unique ids.
 * @author Marcel Oehler
 */



/**
 * @desc   Sets css class of document element
 * @param  element id, class name
 * @return void
 */
function setIDClass(id, class_name)
{
    element           = document.getElementById(id);
    element.className = class_name;
}



/**
 * @desc   Adds css class to existing classes of document element
 * @param  element id, class name
 * @return void
 */
function addIDClass(id, class_name)
{
    element       = document.getElementById(id);
    element_class = element.className;

    // check if class_name is not already in class list of element
    element_class_list        = element_class.split(' ');
    element_class_list_length = element_class_list.length;

    for (i = 0; i < element_class_list_length; i++)
    {
        if (element_class_list[i] == class_name)
        {
            return;
        }
    }

    // add class_name to class list of element
//    element_class_list.push(class_name);
    element_class_list[element_class_list_length] = class_name;
    element.className = trim(element_class_list.join(' '));
}



/**
 * @desc   Removes css class from existing classes of document element
 * @param  element id, class name
 * @return void
 */
function removeIDClass(id, class_name)
{
    element       = document.getElementById(id);
    element_class = element.className;

    // build new class list without class_name
    element_class_list        = element_class.split(' ');
    element_class_list_length = element_class_list.length;

    new_class_list = new Array();

    for (i = 0; i < element_class_list_length; i++)
    {
        if (element_class_list[i] != class_name)
        {
//            new_class_list.push(element_class_list[i]);
            new_class_list[new_class_list.length] = element_class_list[i];
        }
    }

    // set new class list of element
    element.className = trim(new_class_list.join(' '));
}



/**
 * @desc   Trims leading and trailing whitespaces from string
 * @param  string to trim
 * @return Returns trimmed string
 */
function trim(str) { 
    str = str.replace(/^\s+/g, ""); // strip leading whitespaces
    str = str.replace(/\s+$/g, ""); // strip trailing whitespaces

    return str; 
}



/**
 * @desc   Only for ie - Removes one css class from and adds another to existing classes of document element
 * @param  element id, class to remove, class to add
 * @return void
 */
function ie_idRemoveAddClasses(id, remove_class, add_class)
{
    if (navigator.appName.indexOf('Internet Explorer') != -1)
    {
        removeIDClass(id, remove_class);
        addIDClass(id, add_class);
    }
}

