function hasClass(ele,cls) {
    return ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
}

function addClass(ele,cls) {
    if (!this.hasClass(ele,cls)) ele.className += " " + cls;
}

function removeClass(ele,cls) {
    if (hasClass(ele,cls)) {
        var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
        ele.className = ele.className.replace(reg,' ');
    }
}

function setPositions(obj,tagName) {
    if(!obj.positions) {
        obj.positions = [];
        var positions = obj.childNodes;
        for(var i=0;i<positions.length;i++) {
            if(positions[i].tagName && positions[i].tagName.toLowerCase() == tagName.toLowerCase()) {
                obj.positions[obj.positions.length] = positions[i];
            }
        }
        obj.curPos = 0;
        obj.step = 5;
    }
}

function showPositions(obj,dir) {
    if(obj.positions && obj.positions.length > obj.step) {
        var newPos = (dir == "down") ? (obj.curPos + obj.step) : ((dir == "up") ? (obj.curPos - obj.step) : obj.curPos);
        if(newPos < 0) newPos = 0;
        if(newPos + obj.step > obj.positions.length) newPos = obj.positions.length - obj.step;
        for(var i = 0; i < obj.positions.length; i++) {
            if(i >= newPos && i < newPos + 5) removeClass(obj.positions[i], "hide");
            else addClass(obj.positions[i], "hide");
        }
        if(newPos > 0) addClass(obj.upArrow, "av");
        else removeClass(obj.upArrow, "av");
        if(newPos < obj.positions.length - obj.step) addClass(obj.downArrow, "av");
        else removeClass(obj.downArrow, "av");
    }
    return false;
}

/*
function setArrows() {
    var bs = document.getElementsByTagName("B");
	for(var i=0;i<bs.length;i++) {
        if(bs[i].className == "up") {
            setPositions(bs[i].parentNode,"div");
            var a = bs[i].getElementsByTagName("A")[0];
            a.parentNode.parentNode.upArrow = a;
			a.onclick = function(){
                this.blur();
                showPositions(this.parentNode.parentNode,"up");
                return false;
            }
		}
		if(bs[i].className == "down") {
            setPositions(bs[i].parentNode,"div");
			var a = bs[i].getElementsByTagName("A")[0];
            a.parentNode.parentNode.downArrow = a;
            if(bs[i].parentNode.positions.length > bs[i].parentNode.step) a.className = "av";
			a.onclick = function(){
                this.blur();
                return showPositions(this.parentNode.parentNode,"down");
            }
		}
	}
}
*/

function toggleLayer( whichLayer )
{
	var elem, vis;
	if( document.getElementById ) // this is the way the standards work
		elem = document.getElementById( whichLayer );
	else if( document.all ) // this is the way old msie versions work
		elem = document.all[whichLayer];
	else if( document.layers ) // this is the way nn4 works
		elem = document.layers[whichLayer];
	vis = elem.style;
	// if the style.display value is blank we try to figure it out here
	if( vis.display == '' && elem.offsetWidth != undefined && elem.offsetHeight != undefined )
		vis.display = ( elem.offsetWidth != 0 && elem.offsetHeight != 0 ) ? 'block':'none';
	vis.display = ( vis.display == '' || vis.display == 'block' ) ? 'none':'block';

}
