/* util funcs, used by examples and documented in guide */
//--------------------------------------------------------------------------
// show and hide an elem
function show(elem) {
    elem.style.display = 'block';
}
function hide(elem) {
    elem.style.display = 'none';
}
// adds a class to an element
function addClass(elem, className) {
    if (!hasClass(elem, className)) {
        elem.className += (elem.className.length ? " " : "") + className;
    }
}
// removes a class from an element
function removeClass(elem, className) {
    if (hasClass(elem, className)) {
        var reg = new RegExp('(\\s|^)'+className+'(\\s|$)');
        elem.className = elem.className.replace(reg, ' ');
    }
}
// does elem has a class?
function hasClass(elem, className) {
    var reg = new RegExp("(^|\\s)" + className + "(\\s|$)");
    return reg.test(elem.className);
}
// get next elem
function nextelem(elem) {
    var sib = elem.nextSibling;
    while (sib && sib.nodeType != 1)
        sib = sib.nextSibling;
    return sib;
}
// get previous elem
function prevelem(elem) {
    var sib = elem.previousSibling;
    while (sib && sib.nodeType != 1)
        sib = sib.previousSibling;
    return sib;
}
// finds an element of desired type above
function parentElem(elem, tagtype) {
    var p = elem.parentNode;
    tagtype = tagtype.toUpperCase();
    while (p && p.nodeName != tagtype)
        p = p.parentNode;
    return p;
}
// returns position of element, CSS left and top
function getPos(elem) {
    var o = {};
    var computedStyle = document.defaultView.getComputedStyle(elem, null);
    o.left = parseInt(computedStyle.getPropertyValue("left"));
    o.top = parseInt(computedStyle.getPropertyValue("top"));
    o.height = parseInt(computedStyle.getPropertyValue("height"));
    o.width = parseInt(computedStyle.getPropertyValue("width"));
    return o;
}

