var bCanShowHide = false;

function initShowHide()
{
	bCanShowHide = (is.ie4up || is.nav5up || is.opera5up);
}

function getElementById(id)
{
    if (is.nav5up || is.ie5up || is.opera4 || is.opera5up) {
        return document.getElementById(id);
    } else if (is.ie4up) {
        return document.all[id];
    } else {
		return null;
	}
}

function showBlock(elementId)
{
    var element = getElementById(elementId + "Block"); 
    if (element != null){
        element.className = "shown";
    }
    var elementImg = getElementById(elementId + "Img");
    if (elementImg != null) {
        elementImg.src   = "resources/icon_less.gif";
        elementImg.alt   = "Hide details.";
        elementImg.title = "Hide details.";
    }
    var elementText = getElementById(elementId + "Text"); 
    if (elementText != null) {
        elementText.firstChild.data = "<< Details";
        elementText.title = "Hide details.";
    }
}

function hideBlock(elementId)
{
    var element = getElementById(elementId + "Block"); 
    if (element != null){
        element.className = "hidden";
    }

    var elementImg = getElementById(elementId + "Img"); 
    if (elementImg != null) {
        elementImg.src   = "resources/icon_more.gif";
        elementImg.alt   = "Show details.";
        elementImg.title = "Show details.";
    }
    var elementText = getElementById(elementId + "Text"); 
    if (elementText != null) {
        elementText.firstChild.data = "Details >>";
        elementText.title = "Show details.";
    }
}


function showHideBlock(blockId)
{
	if (bCanShowHide) {
		var blockElement = getElementById(blockId + "Block");
		if (blockElement.className == "hidden") {
			showBlock(blockId);	   
		} else {
			hideBlock(blockId);
		}
	}
	return false;
}


function showHideBlockKey(evt, blockId)
{
    if (bCanShowHide) {
		var blockElement = getElementById(blockId + "Block");
		var collapsed = blockElement.className == "hidden";
	
		switch(evt.keyCode) {
			case 9: // tab
				return true; // allow default handling of this event
			case 13: // enter
			case 32: // space
			if (collapsed){
				showBlock(blockId);
			} else {
				hideBlock(blockId);
			}
			break;
			case 37: // left  arrow
				if (!collapsed){
					hideBlock(blockId);
				}
				break;
			case 39: // right arrow
				if (collapsed){
					showBlock(blockId);
				}
				break;
			default:
				break;
		}
	}
	return false;
}
