﻿var selectedAops = "";
var chosenVal = "";
var textId = "";
var textIdIE = "";
var currentAop = "";
var doValidate = true;
var isStaticVersion = "";


function selectAops(aops, id, validate) {    
    selectAopsStatic(aops, id, validate, "false");
}
function selectAopsStatic(aops, id, validate, staticVersion) {    
    isStaticVersion = staticVersion;    
    selectedAops = aops;
    textId = id;
    textIdIE = id.id;
    doValidate = validate;
    buildSelectPopup();
    try {
        callCustomAlert("divSelectAops", "750");
        if (document.frames) {
            document.getElementById("fr").style.height = "290";
        }
    } catch (Err) {
        //do nothing
    }
    if (!(doValidate)) {
        document.getElementById("mes").innerHTML = "";
    }
    if (selectedAops != "") {
        loadSelectedAops();
    }
    setTimeout("buildAops()", 10);
}
function preLoadImages() {
    images = new Array();
    images[0] = "/images/step1.gif"
    images[1] = "/images/step2.gif"
    images[2] = "/images/step3.gif"
    images[3] = "/images/buttons/sbs_remove.gif"
    images[4] = "/images/ajax-loader.gif"

    newImage = new Image();

    for (var i = 0; i < images.length; i++) {
        newImage.src = images[i];
    }

}

function loadSelectedAops() {
    var arrSelectedAops = selectedAops.split(";");
    if (doValidate) {
        if (arrSelectedAops.length > 10) {
            document.getElementById("mes").innerHTML = "<span class=\"r-b\">(10&#160;of&#160;10)<\span>";
        } else {
            document.getElementById("mes").innerHTML = "(" + eval(arrSelectedAops.length - 1) + "&#160;of&#160;10)";
        }
    }
    for (var i = 0; i < arrSelectedAops.length; i++) {
        if (arrSelectedAops[i] != "") {
            var nm = arrSelectedAops[i].split("|")[1];
            var all = "";
            var aops = xmlDoc.documentElement.getElementsByTagName("AOP");
            for (var x = 0; x < aops.length; x++) {
                if (nm == xmlDoc.getElementsByTagName('AOP')[x].getElementsByTagName('AOP_NAME')[0].childNodes[0].nodeValue) {
                    all = " <b>(All)</b>";
                    break;
                }
            }
            chosenVal = chosenVal + "<div class=\"p-t-2\"><a href=\"javascript: removeAop('" + arrSelectedAops[i] + "');\" title=\"Remove\"><img src=\"/images/buttons/sbs_remove.gif\" border=\"0\"></a>&nbsp;" + nm + all + "</div>";

        }
    }
    document.getElementById("chosen").innerHTML = chosenVal;
}
//mo and mot were created due to slowness of assignments in function buildAops
function mo(obj) {
    obj.className = 'main-area-over';
}
function mot(obj) {
    obj.className = 'main-area';
}
function buildAops() {
    var aops = xmlDoc.documentElement.getElementsByTagName("AOP");
    var aopList = "";
    var val = "";
    // I know this is weird but it improves load time in IE browsers although only slightly
    var first = "<div class=\"main-area\" onclick=\"selectMain('";
    var second = "');\" onmouseover=\"mo(this)\" onmouseout=\"mot(this)\">";
    var last = "</div>";
    for (var i = 0, il = aops.length; i < il; i++) {
        val = aops[i].getElementsByTagName('AOP_NAME')[0].childNodes[0].nodeValue;
        idnm = aops[i].getElementsByTagName('AOP_ID')[0].childNodes[0].nodeValue + "|" + val;
        aopList += "~" + idnm + "%" + val + "_";
    }
    aopList = aopList.replace(/~/g, "<div class=\"main-area\" onclick=\"selectMain('");
    aopList = aopList.replace(/%/g, "');\" onmouseover=\"mo(this)\" onmouseout=\"mot(this)\">");
    aopList = aopList.replace(/_/g, "</div>");
    document.getElementById("MainArea").innerHTML = aopList;
}
function selectMain(n) {
    var nm = n.split("|")[1];
    currentAop = n;
    var arrSelectedAops = selectedAops.split(";");
    var limitReached = false;
    if (doValidate) {
        if (arrSelectedAops.length > 10) {
            limitReached = true;
            document.getElementById("mes").innerHTML = "<span class=\"r-b\">(10&#160;of&#160;10)<\span>";
        } else {
            document.getElementById("mes").innerHTML = "(" + eval(arrSelectedAops.length - 1) + "&#160;of&#160;10)";
        }
    }
    var disableValidate = "";
    var check = "";
    var disable = "";
    var aops = xmlDoc.documentElement.getElementsByTagName("AOP");
    var aopList = "";
    var numChildren = "";
    var val = "";
    for (var i = 0; i < aops.length; i++) {
        if (nm == xmlDoc.getElementsByTagName('AOP')[i].getElementsByTagName('AOP_NAME')[0].childNodes[0].nodeValue) {
            idnm = xmlDoc.getElementsByTagName('AOP')[i].getElementsByTagName('AOP_ID')[0].childNodes[0].nodeValue + "|" + xmlDoc.getElementsByTagName('AOP')[i].getElementsByTagName('AOP_NAME')[0].childNodes[0].nodeValue;
            disable = "";
            for (var z = 0; z < arrSelectedAops.length; z++) {
                if (arrSelectedAops[z] == idnm) {
                    disable = " disabled";
                    check = " checked=\"checked\"";
                    break;
                }
            }
            disableValidate = "";
            if (limitReached && check == "") {
                disableValidate = " disabled";
            }
            if (check != "") {
                aopList = "<div class=\"p-t-2\"><input id=\"" + idnm + "\" checked=\"checked\" onclick=\"removeAop('" + idnm + "');selectMain('" + idnm + "');\" value=\"" + idnm + "\" type=\"checkbox\">" + nm + " <b>(All)</b></div>";
            } else {
                aopList = "<div class=\"p-t-2\"><input" + check + disableValidate + " id=\"" + idnm + "\" onclick=\"selectMainCategory('" + idnm + "')\" value=\"" + idnm + "\" type=\"checkbox\">" + nm + " <b>(All)</b></div>";
            }
            numChildren = xmlDoc.getElementsByTagName('AOP')[i].getElementsByTagName('CHILD').length;
            for (var x = 0; x < numChildren; x++) {
                val = xmlDoc.getElementsByTagName('AOP')[i].getElementsByTagName('CHILD')[x].getElementsByTagName('AOP_NAME')[0].childNodes[0].nodeValue;
                idnm = xmlDoc.getElementsByTagName('AOP')[i].getElementsByTagName('CHILD')[x].getElementsByTagName('AOP_ID')[0].childNodes[0].nodeValue + "|" + val;
                check = "";
                for (var y = 0; y < arrSelectedAops.length; y++) {
                    if ((arrSelectedAops[y] == idnm) || (disable != "")) {
                        check = " checked=\"checked\"";
                        break;
                    }
                }
                disableValidate = "";
                if (limitReached && check == "") {
                    disableValidate = " disabled";
                }
                aopList += "<div class=\"p-l-15 p-t-2\"><input" + check + disable + disableValidate + " id=\"" + idnm + "\" onclick=\"selectAop(this)\" value=\"" + idnm + "\" type=\"checkbox\">" + val + "</div>";
            }
            break;
        }
    }

    document.getElementById("related").innerHTML = aopList;

}
function selectMainCategory(n) {
    var nm = n.split("|")[1];
    currentAop = n;
    var aops = xmlDoc.documentElement.getElementsByTagName("AOP");
    var aopList = "";
    var numChildren = "";
    var val = "";
    var id = "";
    selectAop(document.getElementById(n));
    for (var i = 0; i < aops.length; i++) {
        if (nm == xmlDoc.getElementsByTagName('AOP')[i].getElementsByTagName('AOP_NAME')[0].childNodes[0].nodeValue) {
            idnm = xmlDoc.getElementsByTagName('AOP')[i].getElementsByTagName('AOP_ID')[0].childNodes[0].nodeValue + "|" + xmlDoc.getElementsByTagName('AOP')[i].getElementsByTagName('AOP_NAME')[0].childNodes[0].nodeValue;
            aopList = "<div class=\"p-t-2\"><input id=\"" + idnm + "\" checked=\"checked\" onclick=\"removeAop('" + idnm + "');selectMain('" + idnm + "');\" value=\"" + idnm + "\" type=\"checkbox\">" + nm + " <b>(All)</b></div>";
            numChildren = xmlDoc.getElementsByTagName('AOP')[i].getElementsByTagName('CHILD').length;

            var first = "<div class=\"p-l-15 p-t-2\"><input checked=\"checked\" disabled id=\"";
            var second = "\" onclick=\"selectAop(this)\" value=\"";
            var third = "\" type=\"checkbox\">";
            var last = "</div>";
            for (var x = 0; x < numChildren; x++) {
                val = xmlDoc.getElementsByTagName('AOP')[i].getElementsByTagName('CHILD')[x].getElementsByTagName('AOP_NAME')[0].childNodes[0].nodeValue;
                idnm = xmlDoc.getElementsByTagName('AOP')[i].getElementsByTagName('CHILD')[x].getElementsByTagName('AOP_ID')[0].childNodes[0].nodeValue + "|" + val;
                aopList += first + idnm + second + idnm + third + val + last;
                //removeAop(idnm);
                chosenVal = chosenVal.replace("<div class=\"p-t-2\"><a href=\"javascript: removeAop('" + idnm + "');\" title=\"Remove\"><img src=\"/images/buttons/sbs_remove.gif\" border=\"0\"></a>&nbsp;" + val + "</div>", "");
                chosenVal = chosenVal.replace("<div class=\"p-t-2\"><a href=\"javascript: removeAop('" + idnm + "');\" title=\"Remove\"><img src=\"/images/buttons/sbs_remove.gif\" border=\"0\"></a>&nbsp;" + val + " <b>(All)</b></div>", "");
                selectedAops = selectedAops.replace((idnm + ";"), "");
            }
            break;
        }
    }
    document.getElementById("chosen").innerHTML = chosenVal;
    document.getElementById("related").innerHTML = aopList;
    var arrSelectedAops = selectedAops.split(";");
    if (doValidate) {
        if (arrSelectedAops.length > 10) {
            limitReached = true;
            document.getElementById("mes").innerHTML = "<span class=\"r-b\">(10&#160;of&#160;10)<\span>";
        } else {
            document.getElementById("mes").innerHTML = "(" + eval(arrSelectedAops.length - 1) + "&#160;of&#160;10)";
        }
    }
}

function loadXMLDoc(fname) {
    // code for IE
    if (window.ActiveXObject) {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.onreadystatechange = verify;
        xmlDoc.load(fname);
    } 
    //added for safari on mac
    else if (window.XMLHttpRequest) {
        var errorHappendHere = "Error handling XMLHttpRequest request";
        var d = new XMLHttpRequest();
        d.open("GET", fname, false);
        d.send(null);
        xmlDoc = d.responseXML;
    }
    // code for Mozilla, Firefox, Opera, etc.
    else if (document.implementation && document.implementation.createDocument) {
        xmlDoc = document.implementation.createDocument("", "", null);
        xmlDoc.async = false;
        xmlDoc.load(fname);
    }
    else {
        alert('Your browser cannot handle this script');
    }
    return (xmlDoc);
}
function verify() {
    // 0 Object is not initialized
    // 1 Loading object is loading data
    // 2 Loaded object has loaded data
    // 3 Data from object can be worked with
    // 4 Object completely initialized
    if (xmlDoc.readyState != 4) {
        return false;
    }
}
var xmlDoc = loadXMLDoc("/js/taxonomy.xml");
function selectAop(obj) {
    var clickVal = obj.value.replace("&", "&amp;");
    var nm = clickVal.split("|")[1];
    var all = "";
    if (obj.checked) {
        var aops = xmlDoc.documentElement.getElementsByTagName("AOP");
        for (var i = 0; i < aops.length; i++) {
            if (nm == xmlDoc.getElementsByTagName('AOP')[i].getElementsByTagName('AOP_NAME')[0].childNodes[0].nodeValue) {
                all = " <b>(All)</b>";
            }
        }
        chosenVal = chosenVal + "<div class=\"p-t-2\"><a href=\"javascript: removeAop('" + clickVal + "');\" title=\"Remove\"><img src=\"/images/buttons/sbs_remove.gif\" border=\"0\"></a>&nbsp;" + nm + all + "</div>";
        selectedAops += obj.value + ";";
        var arrSelectedAops = selectedAops.split(";");
        if (doValidate) {
            if (arrSelectedAops.length > 10) {
                selectMain(currentAop);
                document.getElementById("mes").innerHTML = "<span class=\"r-b\">(10&#160;of&#160;10)<\span>";
            } else {
                document.getElementById("mes").innerHTML = "(" + eval(arrSelectedAops.length - 1) + "&#160;of&#160;10)";
            }
        }
    } else {
        chosenVal = chosenVal.replace("<div class=\"p-t-2\"><a href=\"javascript: removeAop('" + clickVal + "');\" title=\"Remove\"><img src=\"/images/buttons/sbs_remove.gif\" border=\"0\"></a>&nbsp;" + nm + "</div>", "");
        chosenVal = chosenVal.replace("<div class=\"p-t-2\"><a href=\"javascript: removeAop('" + clickVal + "');\" title=\"Remove\"><img src=\"/images/buttons/sbs_remove.gif\" border=\"0\"></a>&nbsp;" + nm + " <b>(All)</b></div>", "");
        selectedAops = selectedAops.replace((obj.value + ";"), "");
        var arrSelectedAops = selectedAops.split(";");
        if (doValidate) {
            if (arrSelectedAops.length > 10) {
                document.getElementById("mes").innerHTML = "<span class=\"r-b\">(10&#160;of&#160;10)<\span>";
            } else {
                document.getElementById("mes").innerHTML = "(" + eval(arrSelectedAops.length - 1) + "&#160;of&#160;10)";
            }
            if (arrSelectedAops.length == 10) {
                selectMain(currentAop);
            }
        }
    }
    document.getElementById("chosen").innerHTML = chosenVal;
}
function removeAop(n) {
    var nm = n.split("|")[1];
    chosenVal = chosenVal.replace("<div class=\"p-t-2\"><a href=\"javascript: removeAop('" + n + "');\" title=\"Remove\"><img src=\"/images/buttons/sbs_remove.gif\" border=\"0\"></a>&nbsp;" + nm + "</div>", "");
    chosenVal = chosenVal.replace("<div class=\"p-t-2\"><a href=\"javascript: removeAop('" + n + "');\" title=\"Remove\"><img src=\"/images/buttons/sbs_remove.gif\" border=\"0\"></a>&nbsp;" + nm + " <b>(All)</b></div>", "");
    selectedAops = selectedAops.replace((n + ";"), "");
    var arrSelectedAops = selectedAops.split(";");
    if (doValidate) {
        if (arrSelectedAops.length > 10) {
            selectMain(currentAop);
            document.getElementById("mes").innerHTML = "<span class=\"r-b\">(10&#160;of&#160;10)<\span>";
        } else {
            document.getElementById("mes").innerHTML = "(" + eval(arrSelectedAops.length - 1) + "&#160;of&#160;10)";
        }
        if (arrSelectedAops.length == 10) {
            selectMain(currentAop);
        }
    }
    try {
        document.getElementById(n).checked = false;
        var aops = xmlDoc.documentElement.getElementsByTagName("AOP");
        for (var i = 0; i < aops.length; i++) {
            if (nm == xmlDoc.getElementsByTagName('AOP')[i].getElementsByTagName('AOP_NAME')[0].childNodes[0].nodeValue) {
                selectMain(n);
                break;
            }
        }
    } catch (Error) {
        //this is not an error the id may not be available
    }
    document.getElementById("chosen").innerHTML = chosenVal;
}
function buildSelectPopup() {
    var popup = "<div class=\"popup-add-network-header\" style=\"height: 15px; cursor: default;\">" +
                "<div style=\"float: left\">" +
                    "<h3>" +
                        "Select a Practice Area</h3>" +
                "</div>" +
            "</div>" +
            "<div class=\"popup-add-network-body\">" +
                "<div id=\"divNewsletterContent\" align=\"left\">" +
"<div align=\"center\">" +
            "<div id=\"selectError\"></div><div class=\"p-t-5\"></div>" +
            "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">" +
                "<tr>" +
                    "<td valign=\"top\" class=\"p-t-5\">" +
                        "<div class=\"align-l p-b-2\"><img src=\"/images/step1.gif\" alt=\"1\" />&#160;</div><div class=\"p-b-5 b\" align=\"left\" valign=\"top\">" +
                            " Main Areas</div>" +
                        "<div class=\"select-practice-area\">" +
                            "<div id=\"MainArea\" class=\"select-practice-area-inner\" align=\"left\"><div align=\"center\"><br><br><br><br><img src=\"/images/ajax-loader.gif\" /></div></div>" +
                        "</div>" +
                    "</td>" +
                    "<td>" +
                        "&#160;&#160;</td>" +
                    "<td class=\"p-t-5\" valign=\"top\">" +
                        "<div class=\"align-l p-b-2\"><img src=\"/images/step2.gif\" alt=\"2\" />&#160;</div><div class=\"p-b-5 b\" align=\"left\">" +
                            "Related Areas</div>" +
                        "<div class=\"select-practice-area\">" +
                            "<div class=\"select-practice-area-inner\" id=\"related\" align=\"left\">&#160;</div>" +
                        "</div>" +
                    "</td>" +
                    "<td>" +
                        "&#160;&#160;</td>" +
                    "<td class=\"p-t-5\" valign=\"top\">" +
                        "<div class=\"align-r\"><a href=\"javascript: clearAll();\">Clear All</a></div>" +
                        "<div class=\"align-l p-b-2\"><img src=\"/images/step3.gif\" alt=\"3\" />&#160;</div><div class=\"p-b-5 b\" align=\"left\">" +
                            "Selections&#160;<span id=\"mes\" class=\"b\">(0&#160;of&#160;10)</span></div>" +
                        "<div class=\"select-practice-area\">" +
                            "<div class=\"select-practice-area-inner\" id=\"chosen\" align=\"left\">&#160;</div>" +
                        "</div>" +
                    "</td>" +
                "</tr>" +
                "<tr>" +
                    "<td colspan=\"5\" align=\"right\">" +
                        "<br />" +
                        "<input type=\"button\" class=\"yellow-button\" value=\"Cancel\" onclick=\"closeSelections()\" />&#160;&#160;&#160;<input type=\"button\" class=\"red-button\" value=\"Select\" onclick=\"saveAops();\" />" +
                    "</td>" +
                "</tr>" +
            "</table>" +

                "</div>" +
            "</div>" +
        "</div>";
    document.getElementById("divSelectAops").innerHTML = popup;
}
function clearAll() {
    selectedAops = "";
    chosenVal = "";
    document.getElementById("chosen").innerHTML = "";
    currentAop
    if (currentAop != "") {
        selectMain(currentAop);
    }
    document.getElementById("selectError").innerHTML = "";
}
//function errorMessage(mes) {
//    if (mes) {
//        document.getElementById("selectError").innerHTML = "<div class=\"CommonMessageWarning\" align=\"left\"><div><b>You have reached the maximum number of selected practice areas allowed.</b></div><div>Only 10 practice areas may be used at a time to conduct your search.  One or more of your selections must be removed before any additional practice areas are chosen.</div><br></div>";
//        if (document.frames) {
//            document.getElementById("fr").style.height = "400";
//        }
//    } else {
//        document.getElementById("selectError").innerHTML = "";
//        if (document.frames) {
//            document.getElementById("fr").style.height = "310";
//        }
//    }
//}
function saveAops() {
    // TBD
    // use the following variables to send selected aops to text box
    // selectedAops = ";" delimited string containing AOP_ID|AOP_NAME
    // textId = text box ID
    //must place the call to Gene's JS function here
    if (isStaticVersion == 'false') 
    {
        if (selectedAops.length > 1) {
            selectedAops = selectedAops.substring(0, selectedAops.length - 1);
        }

        if (textIdIE) {
            eval(textIdIE).PrePopulateSelectedLookUps(selectedAops);
        } else {
            eval(textId).PrePopulateSelectedLookUps(selectedAops);
        }
        OnKeyPressAOP();
    }
    else 
    {        
        var arrSelectedAops = selectedAops.split(";");
        var nm = "";
        for (var i = 0; i < arrSelectedAops.length; i++) 
        {
            if (arrSelectedAops[i] != "") 
            {
                nm += arrSelectedAops[i].split("|")[1] + ", ";                                
            }
        }
        
        textId.value = nm.substring(0, nm.length - 2);
        
    }
    
    //textId = "";
    currentAop = "";
    clearAll();
    closeCustomAlert('divSelectAops');
}
function closeSelections(){
    textId = "";
    currentAop = "";
    clearAll();
    closeCustomAlert('divSelectAops');
}
window.onload = preLoadImages;

function onClickSelectLinkStatic(aop) {
    var sSelectedAOPs = document.getElementById(aop).value;
    var arrSelectedAops = sSelectedAOPs.split(",");
    var result = "";
    var sDemilitedAOPs = "";
    for (var i = 0; i < arrSelectedAops.length; i++) {
        result = "";
        if (arrSelectedAops[i] != "") {
            var nm = arrSelectedAops[i];
            var all = "";
            var aops = xmlDoc.documentElement.getElementsByTagName("AOP");
            for (var x = 0; x < aops.length; x++) {
                if (nm == xmlDoc.getElementsByTagName('AOP')[x].getElementsByTagName('AOP_NAME')[0].childNodes[0].nodeValue) {
                    result = xmlDoc.getElementsByTagName('AOP')[x].getElementsByTagName('AOP_ID')[0].childNodes[0].nodeValue + "|"
                        + xmlDoc.getElementsByTagName('AOP')[x].getElementsByTagName('AOP_NAME')[0].childNodes[0].nodeValue;
                    break;
                }
                numChildren = xmlDoc.getElementsByTagName('AOP')[x].getElementsByTagName('CHILD').length;
                for (var y = 0; y < numChildren; y++) {
                    if (nm == xmlDoc.getElementsByTagName('AOP')[x].getElementsByTagName('CHILD')[y].getElementsByTagName('AOP_NAME')[0].childNodes[0].nodeValue) {
                        result = xmlDoc.getElementsByTagName('AOP')[x].getElementsByTagName('CHILD')[y].getElementsByTagName('AOP_ID')[0].childNodes[0].nodeValue + "|" +
                        xmlDoc.getElementsByTagName('AOP')[x].getElementsByTagName('CHILD')[y].getElementsByTagName('AOP_NAME')[0].childNodes[0].nodeValue;
                        break;
                    }
                }
            }
            if (result == "") {
                result = arrSelectedAops[i] + "|" + arrSelectedAops[i] + ";";
            }
            sDemilitedAOPs += result;
        }

    }
    selectAopsStatic(sDemilitedAOPs, document.getElementById(aop), false, 'true');
}
function aopTextToId(str) {
    var arrSelectedAops = str.split(";");
    var returnString = str;
    var createArray = true;
    var tax = "";
    OuterLoop:
    for (var i = 0; i < arrSelectedAops.length; i++) {
    //isNumeric is a function in validate.js
        if (!(IsNumeric(arrSelectedAops[i].split("|")[0]))) {
            if (arrSelectedAops[i] != "") {
                var aops = xmlDoc.documentElement.getElementsByTagName("AOP");
                var txt = (arrSelectedAops[i].split("|")[0]);
                
                for (var x = 0; x < aops.length; x++) {
                    if (txt.toLowerCase() == (xmlDoc.getElementsByTagName('AOP')[x].getElementsByTagName('AOP_NAME')[0].childNodes[0].nodeValue).toLowerCase()) {
                        returnString = returnString.replace((txt + "|"), (xmlDoc.getElementsByTagName('AOP')[x].getElementsByTagName('AOP_ID')[0].childNodes[0].nodeValue + "|"));
                        continue OuterLoop;
                    }
                    numChildren = xmlDoc.getElementsByTagName('AOP')[x].getElementsByTagName('CHILD').length;
                    for (var y = 0; y < numChildren; y++) {
                        if (txt.toLowerCase() == (xmlDoc.getElementsByTagName('AOP')[x].getElementsByTagName('CHILD')[y].getElementsByTagName('AOP_NAME')[0].childNodes[0].nodeValue).toLowerCase()) {
                            returnString = returnString.replace((txt + "|"), (xmlDoc.getElementsByTagName('AOP')[x].getElementsByTagName('CHILD')[y].getElementsByTagName('AOP_ID')[0].childNodes[0].nodeValue + "|"));
                            continue OuterLoop;
                        }
                    }
                }
            }
        }
    }
    return returnString;
}
