
function getText(nodeId) {
    var node = document.getElementById(nodeId);
    if (node == null || node.firstChild == null)
        return null;
    return node.firstChild.nodeValue;
}

function updateText(nodeId, txt) {
    var node = document.getElementById(nodeId);
    var txtNode = document.createTextNode(txt);
    if (node.childNodes.length > 0)
        node.replaceChild(txtNode, node.firstChild);
    else
        node.appendChild(txtNode);
}

// Ensure we're working with a relatively standards compliant user agent
function isBrowserCompliant() {
    return document.getElementById && document.createElement && document.createTextNode;
}

/**
* returns false if state already updated
*/
function updateState(node, className, nodeList, override) {
    var curState = node.className;

    //prevent multiple mouseover handling when already handled
    if (curState == className) {
        return false;
    }

    //we can only update non selected states
    if (curState != "selected" || override) {
        var combinedClass = "";
        if (node.prevClassName != null && node.prevClassName.length > 0) {
            combinedClass += node.prevClassName + "-";
        }
        if (className != null) {
            combinedClass += className;
        }
        node.className = combinedClass;
    }

    if (nodeList != null && className == "selected") {
        //remove all other selected!
        for (var i = 0; i < nodeList.length; i++) {
            //alert( nodeList[i] );
            if (nodeList[i] != node.id) {
                labelRef = document.getElementById(nodeList[i]);
                if (labelRef != null) {
                    if (labelRef.className == "selected") {
                        if (labelRef.prevClassName != null)
                            labelRef.className = labelRef.prevClassName
                        else
                            labelRef.className = null;
                    }
                }
            }

        }
    }
    return true;
}

var revertStore = new Object();
function updateDisplayItem(itemOb, fieldId, imgId, tempShow) {
    if (!isBrowserCompliant()) {
        return;
    }

    //START: update img
    if (itemOb.img != null) {
        var tmpImgId = (itemOb.imgId != null) ? itemOb.imgId : 'baseimage';
        var curImg = document.getElementById(tmpImgId);
        //check if change already taken place
        if (curImg.src != itemOb.img) {
            var newImg = curImg.cloneNode(true);
            newImg.src = itemOb.img;
            curImg.parentNode.replaceChild(newImg, curImg);
        }
    }
    //END: update img

    //START: update text
    if (itemOb.title != null) {
        var textField = document.getElementById(fieldId);

        //remove old children
        while (textField.childNodes.length > 0) {
            textField.removeChild(textField.childNodes[0]);
        }

        if (itemOb.thumbImg != null) {
            var objNewImg = document.createElement('img');
            objNewImg.src = itemOb.thumbImg;
            objNewImg.alt = "";
            textField.appendChild(objNewImg);
        }

        if (itemOb.showTitle != null && itemOb.showTitle && itemOb.title != null && itemOb.title != "") {

            var objNew = document.createElement('strong');
            objNew.appendChild(document.createTextNode(itemOb.title));
            textField.appendChild(objNew);

            if (itemOb.icon != null) {
                var objNewImg = document.createElement('img');
                objNewImg.src = itemOb.icon;

                if (itemOb.iconAlt != null) {
                    objNewImg.alt = itemOb.iconAlt;
                }
                else {
                    objNewImg.alt = "";
                }
                textField.appendChild(objNewImg);
            }

            if (itemOb.icon2 != null) {
                var objNewImg = document.createElement('img');
                objNewImg.src = itemOb.icon2;

                if (itemOb.iconAlt != null) {
                    objNewImg.alt = itemOb.iconAlt;
                }
                else {
                    objNewImg.alt = "";
                }
                textField.appendChild(objNewImg);
            }

            textField.appendChild(document.createElement('br'));


        }

        if (itemOb.desc != null) {
            //HACK: around entity escape problem 
            if (itemOb.desc.indexOf("&") == -1) {
                textField.appendChild(document.createTextNode(itemOb.desc));
            }
            else {
                var objNew = document.createElement('span');
                objNew.innerHTML = itemOb.desc;
                textField.appendChild(objNew);
            }
        }


        if (!tempShow) {
            revertStore[fieldId + "-" + imgId] = itemOb;
        }
    }
    //END: update txt

}

function revertTxt(fieldId, imgId) {
    if (!isBrowserCompliant()) {
        return;
    }

    var key = fieldId + "-" + imgId;
    //alert( "revert:" + revertStore[ key ] );
    if (revertStore[key] == null) {
        return;
    }
    else {
        updateDisplayItem(revertStore[key], fieldId, imgId, false)
    }
    //find current selected node and revert
}

function initWatchItems(watchItems) {
    for (var i = 0; i < watchItems.length; i++) {
        var item = document.getElementById(watchItems[i]);
        item.onchange = function() {
            return formChange(this);
        };
    }
}

function popupWin(url) {
    window.open(url, "checkout", "location=0,status=0,scrollbars=0,resizable=0,width=390,height=240");
}

function popupWinTerms(url) {
    window.open(url, "terms", "location=0,status=0,scrollbars=0,resizable=0,width=500,height=460");
}

function popupWinPrivacy(url) {
    window.open(url, "privacy", "location=0,status=0,scrollbars=0,resizable=0,width=500,height=460");
}

function fillFields() {
    var items = document.getElementsByTagName("input");

    for (var i = 0; i < items.length; i++) {
        if (items[i].value && (items[i].type == "text" || items[i].type == "password")) {
            items[i].v = items[i].value;
            items[i].onfocus = function() { if (this.value == this.v) this.value = ""; }
            items[i].onblur = function() { if (this.value == "") this.value = this.v; }
        }
    }
}

menuholders = Array();
menutabs = Array();
function initMenu(holder) {
    if (!isBrowserCompliant())
        return;

    var holder = document.getElementById(holder);
    if (holder) {
        var printlink = document.getElementById("printlink");
        if (printlink) printlink.style.display = "none";

        var items = document.getElementsByTagName("div");

        if (items) {
            var tabs = holder.getElementsByTagName("li");
            var j = 0;

            for (var i = 0; i < items.length; i++) {
                if (items[i].className == "menuholder") {
                    menuholders.push(items[i]);
                    menutabs.push(tabs[j]);
                    items[i].style.display = "none";

                    tabs[j].item = items[i];
                    tabs[j].klass = tabs[j].className;
                    tabs[j].onclick = function() {
                        for (var i = 0; i < menuholders.length; i++) if (menuholders) menuholders[i].style.display = "none";
                        this.item.style.display = "block";

                        for (var i = 0; i < menutabs.length; i++) menutabs[i].className = menutabs[i].klass;
                        this.className = this.klass + " active";
                        menutabs[(menutabs.length - 1)].className = menutabs[(menutabs.length - 1)].klass;

                        printlink.style.display = "none";
                    }

                    if (j == 0) items[i].style.display = "block";
                    tabs[0].className = tabs[0].className + " active";

                    j++;
                }
            }

            var last = tabs[(tabs.length - 1)];
            last.klass = last.className;
            menutabs.push(last);
            last.onclick = function() {
                for (var i = 0; i < menuholders.length; i++) if (menuholders) menuholders[i].style.display = "block";

                for (var i = 0; i < menutabs.length; i++) menutabs[i].className = menutabs[i].klass;
                this.className = this.klass + " active";

                printlink.style.display = "inline";
            }
        }
    }
}
