function NavAction() {

    var baseSource;

    this.over = function(el) {
        baseSource = el.src;
        el.src = baseSource.replace(/.gif/,"_over.gif");
    
    }

    this.out = function(el) {
        var elSource = el.src;
        el.src = baseSource;
//        el.src = elSource.replace(/_selected.gif/,".gif");
    }
}

var navAction = new NavAction();

function ButtonAction() {
    
    // mouseover event handler
    this.over = function(el) {

        var titleImage = el.getElementsByTagName("IMG")[0];
        if (el.getAttribute("selected") == "no" ) {
            titleImage.src = titleImage.src.replace("_base.gif", "_hover.gif");
        }
    }
    
    // mouseout event handler
    this.out = function(el) {

        var titleImage = el.getElementsByTagName("IMG")[0];
        if (el.getAttribute("selected") == "no" ) {
            titleImage.src = titleImage.src.replace("_hover.gif", "_base.gif");
        }
    }

    // click event handler
    this.select = function(el) {

		_resetButtons(el);

        var titleImage = el.getElementsByTagName("IMG")[0];
        
        if (el.getAttribute("selected") == "no" ) {

            titleImage.src = titleImage.src.replace("_hover.gif", "_selected.gif");
            titleImage.src = titleImage.src.replace("_base.gif", "_selected.gif");
            el.setAttribute("selected","yes");
        }
    }

    function _unselect(titleImage) {

//        var titleImage = el.getElementsByTagName("IMG")[0];
//alert("before:  " + titleImage.src);
            titleImage.src = titleImage.src.replace("_selected.gif", "_base.gif");
//alert("after:  " + titleImage.src);
    		titleImage.parentNode.setAttribute("selected","no");
    }
    
    function _resetButtons(el) {
    
    	var parentUL = getUntilParent(el, "UL");
    	var imgSongList = parentUL.getElementsByTagName("IMG");
    	
    	for (x=0; x < imgSongList.length; x++) {
    		_unselect(imgSongList[x]);
    	}
    }

    // replace image only if image loads properly
    function _replaceImageIfPossible(img, newSrc) {
        var newImg = new Image();
        newImg.src = newSrc;
        if (newImg.complete){
            img.src = newImg.src;
        }
    }
}

buttonAction = new ButtonAction();

function getUntilParent(el, sParentTag) {

	if (el == null) {
 		return null;
	} else if (el.nodeType == 1 && el.tagName.toLowerCase() == sParentTag.toLowerCase()) {
 		return el;
	} else {
 		return getUntilParent(el.parentNode, sParentTag);
	}
}

