var aDOM = 0;
var nsDOM = 0;
var stdDOM = document.getElementById;

if (stdDOM){
	aDOM = 1;
}
else {
	var nsDOM = ((navigator.appName.indexOf('Netscape') != -1) && (parseInt(navigator.appVersion) ==4));
	if (nsDOM){ aDOM = 1;}
}

function xDOM(objectId, wS) {
	if (stdDOM)
	return wS ?	document.getElementById(objectId).style:	document.getElementById(objectId);

	if (nsDOM) return document.layers[objectId];
}

function setShadow(c, s){
	var obj1 = xDOM(c, 0);
	var obj2 = xDOM(s, 0);

	obj2.style.height = obj1.clientHeight;
}

function climbTo(element, tagname) {
    tagname = tagname.toLowerCase();
    var parentElement;

    while ((element = element.parentNode) && !parentElement) {
        if (element.tagName.toLowerCase() == tagname) {
            parentElement = element;
        }
    }

    return parentElement;
}


// ----------------------------------------------------------------------------
// HasClassName
//
// Description : returns boolean indicating whether the object has the class name
//    built with the understanding that there may be multiple classes
//
// Arguments:
//    objElement              - element to manipulate
//    strClass                - class name to add
//
function HasClassName(objElement, strClass) {

    // if there is a class
    if (objElement.className) {

        // the classes are just a space separated list, so first get the list
        var arrList = objElement.className.split(' ');

        // get uppercase class for comparison purposes
        var strClassUpper = strClass.toUpperCase();

        // find all instances and remove them
        for (var i = 0; i < arrList.length; i++) {

            // if class found
            if (arrList[i].toUpperCase() == strClassUpper) {

                // we found it
                return true;

            }

        }

    }

    // if we got here then the class name is not there
    return false;

}
// 
// HasClassName
// ----------------------------------------------------------------------------


// ----------------------------------------------------------------------------
// AddClassName
//
// Description : adds a class to the class attribute of a DOM element
//    built with the understanding that there may be multiple classes
//
// Arguments:
//    objElement              - element to manipulate
//    strClass                - class name to add
//
function AddClassName(objElement, strClass, blnMayAlreadyExist) {

    // if there is a class
    if (objElement.className) {

        // the classes are just a space separated list, so first get the list
        var arrList = objElement.className.split(' ');

        // if the new class name may already exist in list
        if (blnMayAlreadyExist) {

            // get uppercase class for comparison purposes
            var strClassUpper = strClass.toUpperCase();

            // find all instances and remove them
            for (var i = 0; i < arrList.length; i++) {

                // if class found
                if (arrList[i].toUpperCase() == strClassUpper) {

                    // remove array item
                    arrList.splice(i, 1);

                    // decrement loop counter as we have adjusted the array's contents
                    i--;

                }

            }

        }

        // add the new class to end of list
        arrList[arrList.length] = strClass;

        // add the new class to beginning of list
        //arrList.splice(0, 0, strClass);

        // assign modified class name attribute
        objElement.className = arrList.join(' ');

    }
    // if there was no class
    else {

        // assign modified class name attribute      
        objElement.className = strClass;

    }

}
// 
// AddClassName
// ----------------------------------------------------------------------------


// ----------------------------------------------------------------------------
// RemoveClassName
//
// Description : removes a class from the class attribute of a DOM element
//    built with the understanding that there may be multiple classes
//
// Arguments:
//    objElement              - element to manipulate
//    strClass                - class name to remove
//
function RemoveClassName(objElement, strClass) {

    // if there is a class
    if (objElement.className) {

        // the classes are just a space separated list, so first get the list
        var arrList = objElement.className.split(' ');

        // get uppercase class for comparison purposes
        var strClassUpper = strClass.toUpperCase();

        // find all instances and remove them
        for (var i = 0; i < arrList.length; i++) {

            // if class found
            if (arrList[i].toUpperCase() == strClassUpper) {

                // remove array item
                arrList.splice(i, 1);

                // decrement loop counter as we have adjusted the array's contents
                i--;

            }

        }

        // assign modified class name attribute
        objElement.className = arrList.join(' ');

    }
    // if there was no class
    // there is nothing to remove

}
// 
// RemoveClassName
// ----------------------------------------------------------------------------



function deleteNode(obj) {
    // If obj is not an object it better be an element's id
    if (typeof (obj) != 'object') { obj = document.getElementById(obj); }
    
    var p = obj.parentNode;

    while (obj.hasChildNodes()) { obj.removeChild(obj.lastChild); }
    p.removeChild(obj);
}
