/*
  $Id: dom.js,v 1.1 2009/01/24 12:11:30 steve Exp $
*/

// Generic HTML Functions
//

function swapIds(elem1, elem2) {

    var val1 = elem1.id; var val2 = elem2.id

    elem1.id = val2; elem2.id = val1
}

function swapValues(elem1, elem2) {

    var val1 = elem1.value; var val2 = elem2.value

    elem1.value = val2; elem2.value = val1
}

function swapInnerHTMLs(elem1, elem2) {

    var val1 = elem1.innerHTML; var val2 = elem2.innerHTML

    elem1.innerHTML = val2; elem2.innerHTML = val1
}

function swapSelected(elem1, elem2) {

    var val1 = elem1.selectedIndex; var val2 = elem2.selectedIndex

    elem1.selectedIndex = val2; elem2.selectedIndex = val1
}

function swapSrcs(elem1, elem2) {

    var val1 = elem1.src; var val2 = elem2.src

    elem1.src = val2; elem2.src = val1
}

function swapWidths(elem1, elem2) {

    var val1 = elem1.width; var val2 = elem2.width

    elem1.width = val2; elem2.width = val1
}

function deleteNodeById(id) {

    if (document.getElementById(id)) {
        var node = document.getElementById(id)
        node.parentNode.removeChild(node)
    }
}

function createDropDown(id, str) {

    menu      = document.createElement('select')
    menu.id   = id
    menu.name = id
    if (str) {
        options = str.split(',')
        for (i = 0; i < options.length; i++) {
            menuItem = document.createElement('option') ;
            menuItem.text  = options[i]
            menuItem.value = options[i]
            try {
                 menu.add(menuItem,null); // standards compliant
            }
            catch(ex) {
                menu.add(menuItem);      // IE only
            }
        }
    }
    return menu
}

function isInDropDown(value, elem) {

    var opts = document.getElementById(elem).options
    for (i = 0; i < opts.length; i++) {
        if (value == opts[i].text) {
            return 1
        }
    }
    return 0
}

function addToDropDown(elem, value) {

    var opt  = document.createElement('option')
    opt.text = value
    try {
        elem.add(opt, null)   // standards compliant
    } catch(ex) {
        elem.add(opt)         // IE only
    }
}

function addToDropDownWithId(elem, value, id) {

    var opt   = document.createElement('option')
    opt.text  = value
    opt.value = id
    try {
        elem.add(opt, null)   // standards compliant
    } catch(ex) {
        elem.add(opt)         // IE only
    }
}

function deleteFromDropDown(elem, value) {

    var opts  = elem.options
    for (i = 0; i < opts.length; i++) {
        if (opts[i].text == value) {
            elem.remove(i)
        }
    }
}

var Element = new function()
{
    function Create(type, id, elemClass, value, append) {
        if (!document.getElementById(id)) {
            var elem    = document.createElement(type)

            if (id) {
                elem.id = id
            }
            if (value) {
                if (type == 'td' || type == 'h1' || type == 'h4' || type == 'p' || type == 'li'
                      || type == 'code' || type == 'span') {
                    elem.innerHTML = ''
                    elem.appendChild(document.createTextNode(value))
                } else {
                    alert('Values not implemented for creating ' + type)
                }
            }
        } else {
           var elem = document.getElementById(id)
        }
        if (append) {
            append.appendChild(elem)
        }
        if (elemClass) {
           elem.className = elemClass ;
        }
        return elem
    }
    this.Create = Create
}

var Hidden = new function()
{
    function Create(id, value, append) {
        if (!document.getElementById(id)) {
            hidden       = document.createElement('input')
            hidden.type  = 'hidden'
            hidden.id    = id
            append.appendChild(hidden)
        }
        if (value) {
           this.Set(id, value)
        }
    }
    this.Create = Create

    function Set(id, value) {
        document.getElementById(id).value = value
    }
    this.Set = Set

    function Get(id, value) {
        return document.getElementById(id).value
    }
    this.Get = Get
}

var TextInput = new function()
{
    function Create(id, value, append) {
        if (!document.getElementById(id)) {
            elem       = document.createElement('input')
            elem.type  = 'text'
            elem.id    = id
        }
        if (append) {
            append.appendChild(elem)
        }
        if (value) {
           this.Set(id, value)
        }
        
        return elem
    }
    this.Create = Create

    function Set(id, value) {
        document.getElementById(id).value = value
    }
    this.Set = Set

    function Get(id, value) {
        return document.getElementById(id).value
    }
    this.Get = Get
}

var Button = new function()
{
    function Create(label, id, append) {

        button           = document.createElement('input')
        button.type      = 'button'
        button.value     = label
        button.className = 'button'
        button.id        = id
        if (append) {
            append.appendChild(button)
        }

        return button
    }
    this.Create = Create
}

var TextArea = new function()
{
    function Create(id, lines, cols, append) {

        textarea = document.createElement('textarea')
        textarea.id = id
        if (lines) {
            textarea.rows = lines
        }
        if (cols) {
            textarea.cols = cols
        }
        if (append) {
            append.appendChild(textarea)
        }
        return textarea
    }
    this.Create = Create
}



