var EXPANDED = "map4_files/icons/zoom-plus.png";
var CONTRACTED = "map4_files/icons/zoom-minus.png";
var LI = "[object HTMLLIElement]";
var ULI = "[object HTMLUListElement]";
var LOCATION_MARKER = "showLocationInfo('";

function _changeExpansion(img) 
{
    var expansion = _switchIcon(img);

    var li = img.parentNode;
    while (li != null && li.valueOf() != LI)
    {        
        li = li.parentNode;
    }
    
    _setChildrenDisplay(li, expansion);
    
}

function _switchIcon(img)
{
    var current = (img.src.indexOf(EXPANDED) > -1 ? EXPANDED : CONTRACTED);
    var alt = (current == EXPANDED ? CONTRACTED : EXPANDED); 
    img.src = img.src.replace(current, alt);
    return alt;    
}

function _setChildrenDisplay(li, expansion)
{
    var display = (expansion == EXPANDED ? "" : "none");
    var c = li.childNodes;
    
    for (var i=0; i<c.length; i++)
    {
        if (c[i].valueOf() == ULI)
        {
            c[i].style.display = display;
            var inner = c[i].innerHTML;
            _setMarkerDisplay(inner, display);
        }
    }
}

function _setMarkerDisplay(inner, display)
{
    var index = 0;
    while (inner.indexOf(LOCATION_MARKER, index) > -1)
    {
        index  = inner.indexOf(LOCATION_MARKER, index) + LOCATION_MARKER.length;
        var id = inner.substring(index, inner.indexOf("')", index));
        
        // If information is being displayed check to see that the specific location
        // is not set to be hidden.
        var md = display;
        if (md != "none")
        {
            if (inner.lastIndexOf(CONTRACTED, index) > inner.lastIndexOf(EXPANDED, index))
            {
                md = "none";
            }
        }
        _changeMarkerDisplay(id, md);
    }
}

function _changeMarkerDisplay(id, display)
{
    if (id == null) return;
    if (display == null) display = true;
    try 
    {
        var a = _m.vpage.overlays[0].getLocationById(id);
        a.marker.icon.style.display = display;
        a.marker.shadow.style.display = display;           
    }
    catch(e){return;}
}

