//var host = "http://test.meric.ded.state.mo.us/websrv/";
//var host = "http://localhost:3989/websrv/";
var host = "http://www.missourieconomy.org/WebService/";	
var xmlhttp = true;
var colorArray = new Array("#009900", "#33FF33", "#99FF99", "#CCFFCC", "#CCCC00"); //"#66FF66", 
var valueArray = new Array;
var stateLookup = new Array;

function CatUpdate() {
    var selObj = document.forms['BCC'].elements['slCatagories'];
    var updObj = document.forms['BCC'].elements['selectedCatagories'];
    var rbObj = document.forms['BCC'].elements['rbMap_0'];
    if (rbObj.checked) { FindMapData(selObj.options[selObj.selectedIndex].value.substring(1)); }
    else {
        //if a group is selected remove the individuals
        if (selObj.options[selObj.selectedIndex].value.length = 1) {

            if (selObj.options[selObj.selectedIndex].value == "0") {
                updObj.options.length = 0;
            } else {
                for (i = updObj.options.length - 1; i > -1; i--) {
                    if (updObj.options[i].value.substring(0, 1) == selObj.options[selObj.selectedIndex].value) {
                        updObj.options[i] = null;
                    }
                }
            }
        }
        //if a individual is selected remove the group

        for (i = 0; i <= updObj.options.length - 1; i++) {
            if ((updObj.options[i].value == "0") ||
						(updObj.options[i].value == selObj.options[selObj.selectedIndex].value.substring(0, 1)) ||
						updObj.options[i].value == selObj.options[selObj.selectedIndex].value)
            { updObj.options[i] = null; }
        }
        updObj.options[updObj.options.length] = new Option(selObj.options[selObj.selectedIndex].text, selObj.options[selObj.selectedIndex].value);
    }
}

function StateUpdate() {
    var selObj = document.forms['BCC'].elements['slArea'];
    var updObj = document.forms['BCC'].elements['selectedStates'];


    if (selObj.options[selObj.selectedIndex].value == "0") {
        updObj.options.length = 0;
    } else {
        for (i = updObj.options.length - 1; i > -1; i--) {
            if ((updObj.options[i].value == "0" && updObj.options.length >= 1) ||
						(selObj.options[selObj.selectedIndex].value == "99" && updObj.options[i].value == "19") ||
						(selObj.options[selObj.selectedIndex].value == "99" && updObj.options[i].value == "17") ||
						(selObj.options[selObj.selectedIndex].value == "99" && updObj.options[i].value == "21") ||
						(selObj.options[selObj.selectedIndex].value == "99" && updObj.options[i].value == "47") ||
						(selObj.options[selObj.selectedIndex].value == "99" && updObj.options[i].value == "05") ||
						(selObj.options[selObj.selectedIndex].value == "99" && updObj.options[i].value == "40") ||
						(selObj.options[selObj.selectedIndex].value == "99" && updObj.options[i].value == "20") ||
						(selObj.options[selObj.selectedIndex].value == "99" && updObj.options[i].value == "31") ||
						(selObj.options[selObj.selectedIndex].value == "19" && updObj.options[i].value == "99") ||
						(selObj.options[selObj.selectedIndex].value == "17" && updObj.options[i].value == "99") ||
						(selObj.options[selObj.selectedIndex].value == "21" && updObj.options[i].value == "99") ||
						(selObj.options[selObj.selectedIndex].value == "47" && updObj.options[i].value == "99") ||
						(selObj.options[selObj.selectedIndex].value == "05" && updObj.options[i].value == "99") ||
						(selObj.options[selObj.selectedIndex].value == "40" && updObj.options[i].value == "99") ||
						(selObj.options[selObj.selectedIndex].value == "20" && updObj.options[i].value == "99") ||
						(selObj.options[selObj.selectedIndex].value == "31" && updObj.options[i].value == "99") ||
						 updObj.options[i].value == selObj.options[selObj.selectedIndex].value)
            { updObj.options[i] = null; }
        }
    }
    //selObj.options[selObj.selectedIndex].style.color="white"; 			
    updObj.options[updObj.options.length] = new Option(selObj.options[selObj.selectedIndex].text, selObj.options[selObj.selectedIndex].value);
    Light(selObj.options[selObj.selectedIndex].text);
}

function StateDelete() {
    var selObj = document.forms['BCC'].elements['selectedStates'];
    Darken(selObj.options[selObj.selectedIndex].text);
    selObj.options[selObj.selectedIndex] = null;

}
function CatDelete() {
    var selObj = document.forms['BCC'].elements['selectedCatagories'];
    selObj.options[selObj.selectedIndex] = null;
    if (selObj.options.length == 0) { selObj.options[selObj.options.length] = new Option("All", "0"); }
}
function MapData() {
    if (xmlhttp.readyState == 4) {
        if (xmlhttp.status == 200) {
            // code for IE
            if (window.ActiveXObject) {
                xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
                xmlDoc.loadXML(xmlhttp.responseXML.xml)
            }
            // code for Mozilla, etc.
            else if (document.implementation && document.implementation.createDocument) {
                xmlDoc = document.implementation.createDocument("", "", null);
                xmlDoc = xmlhttp.responseXML;
            }

            if (xmlDoc.getElementsByTagName("Error").length >= 1) {
                ClearMap();
                alert("No Map Avalible \n Items marked in blue can not be mapped");
                return;
            }
            var legendElements = xmlDoc.getElementsByTagName('legends');
            for (var i = 0; i < legendElements[0].childNodes.length; i++) {
                if (legendElements[0].childNodes[i].nodeType != 1) continue;
                EditKey(1, colorArray[0], legendElements[0].childNodes[i].getAttribute("r1"));
                EditKey(2, colorArray[1], legendElements[0].childNodes[i].getAttribute("r2"));
                EditKey(3, colorArray[2], legendElements[0].childNodes[i].getAttribute("r3"));
                EditKey(4, colorArray[3], legendElements[0].childNodes[i].getAttribute("r4"));
                EditKey(5, colorArray[4], legendElements[0].childNodes[i].getAttribute("r5"));
            }

            var mapElements = xmlDoc.getElementsByTagName('Bcc');

            for (var i = 0; i < mapElements[0].childNodes.length; i++) {
                if (mapElements[0].childNodes[i].nodeType != 1) continue;
                stateLookup[i] = mapElements[0].childNodes[i].getAttribute("state");
                var colorId = mapElements[0].childNodes[i].getAttribute("color");
                valueArray[i] = mapElements[0].childNodes[i].getAttribute("mapvalue");
                ChangeColor(stateLookup[i], colorArray[colorId]);
            }

            window.status = "Download complete";
            location.href = "#top";
        }
        else {
            alert("Problem retrieving XML data" + xmlhttp.statusText + " " + xmlhttp.responseText);
            window.status = "Unable to fetch destinations";
        }
    }
}
function FindMapData(cat) {
    ClearMap();
    var catObj = document.forms['BCC'].elements['slCatagories'];
    for (i = 0; i <= catObj.options.length - 1; i++) {
        if (catObj.options[i].value.substring(1) == cat) {
            SetTitle(catObj.options[i].text);
        }
    }

    //Soap envelope
    var envelope = " <soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " +
								"xmlns:xsd='http://www.w3.org/2001/XMLSchema' " +
								"xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' > " +
								"<soap:Body> " +
								"<BCC_x0020_Map_x0020_Xml_x0020_Output  xmlns='" + host + "'> " +
								"<cat>" + cat + "</cat> " +
								"</BCC_x0020_Map_x0020_Xml_x0020_Output > " +
								"</soap:Body> " +
								"</soap:Envelope>";
    // code for Mozilla, etc.
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = MapData;
        xmlhttp.open("POST", host + "bcc.asmx");
        xmlhttp.setRequestHeader("Content-Type", "text/xml");
        xmlhttp.setRequestHeader("SOAPAction", host + "BCC Map Xml Output");
        xmlhttp.send(envelope);

    }
    // code for IE
    else if (window.ActiveXObject) {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        if (xmlhttp) {
            xmlhttp.onreadystatechange = MapData;
            xmlhttp.open("POST", host + "bcc.asmx", false);
            xmlhttp.setRequestHeader("Content-Type", "text/xml");
            xmlhttp.setRequestHeader("SOAPAction", host + "BCC Map Xml Output");
            xmlhttp.send(envelope);
        }
    }
}

function getValue(StateId) {

    for (i = 0; i <= stateLookup.length - 1; i++) {
        if (stateLookup[i] == StateId) {
            return (valueArray[i]);
        }
    }
    return "";
}

function FindBccData() {
    var selCat = document.forms['BCC'].elements['selectedCatagories'];
    var selStates = document.forms['BCC'].elements['selectedStates'];
    var cats = "";
    var states = "";

    for (i = 0; i <= selCat.options.length - 1; i++) {
        if (i == 0) {
            cats = selCat.options[i].value;
        }
        else {
            cats = cats + "," + selCat.options[i].value;
        }

    }
    for (i = 0; i <= selStates.options.length - 1; i++) {
        if (i == 0) {
            states = selStates.options[i].value;
        }
        else {
            states = states + "," + selStates.options[i].value;
        }
    }
    var rbObj = document.forms['BCC'].elements['rbOutput_0'];
    if (rbObj.checked) {
        window.open('./getexcel.aspx?cats=' + cats + '&stfips=' + states);
    } else {
        //Soap envelope
        var envelope = " <soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " +
									"xmlns:xsd='http://www.w3.org/2001/XMLSchema' " +
									"xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' > " +
									"<soap:Body> " +
										"<BCC_x0020_Data_x0020_Html_x0020_output xmlns='" + host + "'> " +
											"<stfips>" + states + "</stfips> " +
											"<cat>" + cats + "</cat> " +
											"</BCC_x0020_Data_x0020_Html_x0020_output> " +
									"</soap:Body> " +
								"</soap:Envelope> ";

        // code for Mozilla, etc.
        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = populateData;
            xmlhttp.open("POST", host + "bcc.asmx");
            xmlhttp.setRequestHeader("Content-Type", "text/xml");
            xmlhttp.setRequestHeader("SOAPAction", host + "BCC Data Html output");
            xmlhttp.send(envelope);

        }
        // code for IE
        else if (window.ActiveXObject) {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            if (xmlhttp) {
                xmlhttp.onreadystatechange = populateData;
                xmlhttp.open("POST", host + "bcc.asmx", false);
                xmlhttp.setRequestHeader("Content-Type", "text/xml");
                xmlhttp.setRequestHeader("SOAPAction", host + "BCC Data Html output");
                xmlhttp.send(envelope);
            }
        }
    }

}

function populateData() {
    if (xmlhttp.readyState == 4) {
        if (xmlhttp.status == 200) {
            var res = xmlhttp.responseText;
            var re = /&lt;/g;
            res = res.replace(re, "<");
            re = /&gt;/g;
            res = res.replace(re, ">");

            var txtTest = document.getElementById("tablecal");
            txtTest.innerHTML = res;
            window.status = "Download complete";
        }
        else {
            alert("Problem retrieving XML data " + xmlhttp.statusText + " " + xmlhttp.responseText);
            window.status = "Unable to fetch destinations";
        }
    }
}

