/*
Function below is recursive; it'll go as high as you want looking for the right container. It'll run off the end of <html>, though; it does not fail gracefully.
*/
function getParentByTagName(childElement, tagString) {
    tagString = tagString.toUpperCase();
    var parentElement = childElement.parentNode;
    if (parentElement.tagName == tagString) {
        return parentElement;
    }
    else {
        return getParentByTagName(parentElement, tagString);
    }
}


function addClass(obj, classStr) {
    if (!obj.className) {
        obj.className = classStr;
    }
    else if (!containsClass(obj, classStr)){
        obj.className = obj.className + " " + classStr;
    }
    return obj;
}

function removeClass(obj, classStr) {
    if (!!obj.className) {
        var re = new RegExp(classStr);
        obj.className = obj.className.replace(re, " ");
    }
    return obj;
}

function containsClass(obj, classStr) {
    var regex = new RegExp(classStr);
    if (!!obj && !!obj.className && obj.className.match(regex)) {
        return true;
    }
    return false;
}

function toggleClass(obj, classStr) {
    if (containsClass(obj, classStr)) {
        removeClass(obj, classStr);
    }
    else {
        addClass(obj, classStr);
    }
    return obj;
}

function jump() {
    if (this.href.indexOf("#") == -1) { //not an in-page anchor
        return true;
    }
    var popurl = this.getAttribute("popurl");
    if (!!popurl) {
        MM_openNonUS(popurl,'',openNonUsParams);
    }

    territoryURL = this.href;                           //find and set territory link name
    territoryURLParts = territoryURL.split("#");
    var territoryId = territoryURLParts[1];
    highlightTerritory(territoryId);
}

function highlightTerritory(territoryId) {
    //find and unhighlight the first highlighted territory
    var divs = document.getElementById("territories").getElementsByTagName("DIV");
    var n = divs.length;
    for (var i=0; i<n; i++) {
        if (containsClass(divs[i], "territory") && containsClass(divs[i], "highlighted")) {
            removeClass(divs[i], "highlighted");
            addClass(divs[i].getElementsByTagName("DIV")[1],"hidden");
            break;
        }
    }
    //highlight id'ed territory
    var territoryDiv = document.getElementById(territoryId);
    addClass(territoryDiv, "highlighted");
    removeClass(territoryDiv.getElementsByTagName("DIV")[1],"hidden");
}

function populateOnclicks() {
    var anchorArea = document.getElementById("world_map");
    var anchorItems = anchorArea.getElementsByTagName("A");

    for (i=0;i<anchorItems.length;i++) {
        anchorItems[i].onclick = jump;
    }
}
addOnload("populateOnclicks()");


function checkTerritory() {
    var currentUrl = window.location.toString();
    var urlParts = currentUrl.split("#");
    if (!!urlParts[1] && urlParts[1] != "0") {
        var territoryId = urlParts[1];
        highlightTerritory(territoryId);
    }
}
addOnload("checkTerritory()");