function elup(elemID, parentObj, xPad, yPad)
{
    var elem = document.getElementById(elemID);
    var parentPosition = findPosition(parentObj);
    var elemXOffset = parentPosition[0];
    var elemYOffset = parentPosition[1];

    elemXOffset += xPad;
    elemYOffset -= yPad;

    tempElem = document.body.appendChild(elem);
    tempElem.style.display = 'block';
    tempElem.style.position = 'absolute';
    tempElem.style.left = elemXOffset + 'px';
    tempElem.style.top = elemYOffset + 'px';
}

function eldown(elemID)
{
    var elem = document.getElementById(elemID);
    elem.style.display = 'none';
    elem.style.left = '-999em';
    elem.style.top = '-999em';
}

function initShowMore(containerClass, elemClass)
{
    var boxes = $$('.'+containerClass)
    for (var i = 0; i < boxes.length; i++) {
        var textbox = ($(boxes[i]).select('.'+elemClass))[0];
        var showntext = ($(textbox).select('.showntext'))[0];
        var moretext = ($(textbox).select('.moretext'))[0];
        if (moretext !== undefined) {
            moretext.hide();
            var morelink = new Element('span', { 'class': 'morelink', onclick: 'showMore(this)' }).update("more &raquo;");
            showntext.insert({ 'after': morelink });
        }
    }
}

function showMore(morelink)
{
    var moretext = morelink.next();
    if (moretext.className == 'moretext') {
        moretext.appear();
        morelink.hide();
        var lesslink = new Element('span', { 'class': 'lesslink', 'style': 'display: none;', onclick: 'showLess(this)' }).update("&laquo; less");
        moretext.insert({ 'after': lesslink });
        lesslink.appear();
    }
}

function showLess(lesslink)
{
    var moretext = lesslink.previous();
    if (moretext.className == 'moretext') {
        moretext.fade();
        lesslink.hide();
        var morelink = moretext.previous();
        if (morelink.className == 'morelink') { morelink.appear({ delay: 1.0 }); }
    }
}

// helper functions

function getBrowserSize()
{
    var browserWidth = window.innerWidth;
    var browserHeight = window.innerHeight;
    if (browserWidth == null) browserWidth = document.documentElement.clientWidth;
    if (browserHeight == null) browserHeight = document.documentElement.clientHeight;
    return [browserWidth, browserHeight];
}

function getPagePosition()
{
    var pageX = window.pageXOffset;
    var pageY = window.pageYOffset;
    if (pageX == null) pageX = document.documentElement.scrollLeft;
    if (pageY == null) pageY = document.documentElement.scrollTop;
    return [pageX, pageY];
}

function findPosition(obj) // this script was lifted from http://www.quirksmode.org/js/findpos.html
{
    var curLeft = curTop = 0;
    if (obj.offsetParent) {
        curLeft = obj.offsetLeft
        curTop = obj.offsetTop
        while (obj = obj.offsetParent) {
            curLeft += obj.offsetLeft
            curTop += obj.offsetTop
        }
    }
    return [curLeft, curTop];
}

