﻿function initSearch(sType) {
    var frm;
    var sGender;
    
    //document.getElementById("btnSearchAgain").style.display = "";
    frm = document.getElementById("frmSearch");
    if (sType == "N") {
        if (passedEdits()) {
            document.getElementById("spnResults").innerHTML = "Searching Inmates ...";
            document.getElementById("divStatus").style.display = "none";
            document.getElementById("divSearch").style.display = "none";
            document.getElementById("spnResults").style.display = "";
            if (frm.radGender_0.checked)
                sGender = "M";
            else if (frm.radGender_1.checked)
                sGender = "F";
            else
                sGender = "";
            PageMethods.CallSearch(frm.txtLastName.value, frm.txtFirstName.value, frm.txtMiddleName.value, sGender, frm.txtDOB.value, frm.txtAge.value, displaySearchResults, displayError, displayTimeout);
        }
    }
    else {
        document.getElementById("spnResults").innerHTML = "Searching Inmates ...";
        document.getElementById("divStatus").style.display = "none";
        document.getElementById("divSearch").style.display = "none";
        document.getElementById("spnResults").style.display = "";
        document.getElementById("celBooking").innerHTML = frm.txtBookNo.value;
        frm.txtLastName.value = "";
        frm.txtFirstName.value = "";
        frm.txtMiddleName.value = "";
        frm.radGender_0.checked = false;
        frm.radGender_1.checked = false;
        PageMethods.GetInmateStatus(frm.txtBookNo.value, displayBooking, displayError, displayTimeout);
    }
}

function passedEdits() {
    
    var frm = document.getElementById("frmSearch");
    
    if (frm.txtLastName.value.length < 2) {
        alert("You must enter a last name.");
        frm.txtLastName.focus();
        return false;
    }
    if (frm.txtFirstName.value.length < 2) {
        alert("You must enter at least 2 letters of the first name.");
        frm.txtFirstName.focus();
        return false;
    }
    if (!isDate(frm.txtDOB.value)) {
        if (frm.txtAge.value == "") {
            alert("You must enter a valid DOB (MM/DD/YYYY) or an age.");
            frm.txtDOB.focus();
            return false;
        }
    }
    
    return true;
    
}

function displaySearchResults(sReturn) {
    
    var sVals = sReturn.split("|");
    
    //document.getElementById("spnResults").style.display = "";
    document.getElementById("spnSearchAgain").style.display = "";
    
    if (sVals[0] == "0") {
        document.getElementById("spnResults").innerHTML = "Search Results - Click on a name to view more information<br /> " + sVals[1];
        if (sVals[2] == "MORE")
            document.getElementById("spnResults").innerHTML += "Additional Results Found - Refine Search to See More";
    }
    else if (sVals[0] == "1") {
        document.getElementById("spnDisclaimer").style.display = "";
        document.getElementById("btnContinue").style.display = "none";
        document.getElementById("spnResults").innerHTML = sVals[1];
    }
    else if (sVals[0] == "H" || sVals[0] == "S")
        showSingleBooking(sVals[1], sVals[0]);
        
}

function showSingleBooking(sBookNo, sType) {

    document.getElementById("spnResults").style.display = "none";
    document.getElementById("divStatus").style.display = "none";
    document.getElementById("divSearch").style.display = "none";
    document.getElementById("spnStatusMessage").innerHTML = "Getting Booking Information ..."
    document.getElementById("spnStatusMessage").style.display = "";
    document.getElementById("celBooking").innerHTML = sBookNo;
    PageMethods.GetInmateStatus(sBookNo, displayBooking, displayError, displayTimeout);

}

function getBooking(row) {
    
    document.getElementById("txtSelectedName").value = row.cells[0].innerHTML;
    document.getElementById("spnResults").style.display = "none";
    document.getElementById("divStatus").style.display = "none";
    document.getElementById("divSearch").style.display = "none";
    document.getElementById("spnStatusMessage").innerHTML = "Getting Booking Information ..."
    document.getElementById("spnStatusMessage").style.display = "";
    document.getElementById("spnSearchAgain").style.display = "none";
    document.getElementById("celBooking").innerHTML = row.getAttribute("key0");
    PageMethods.GetInmateStatus(row.getAttribute("key0"), displayBooking, displayError, displayTimeout);
    
}

function displayBooking(sReturn) {
    var sVals = sReturn.split("|");
    //var imgMugShot = document.getElementById("imgMug");
    if (sVals[0] == "0") {
        document.getElementById("lnkVine").href = "http://www.vinelink.com/vinelink/servlet/SubjectSearch?siteID=5006&agency=1&offenderID=" + document.getElementById("celBooking").innerHTML;
        document.getElementById("celName").innerHTML = sVals[1];
        if (sVals[1] != document.getElementById("txtSelectedName").value)
            document.getElementById("celAlias").innerHTML = document.getElementById("txtSelectedName").value;
        else
            document.getElementById("celAlias").innerHTML = "";
        document.getElementById("celSex").innerHTML = sVals[2];
        document.getElementById("celDOB").innerHTML = sVals[3];
        document.getElementById("celAge").innerHTML = sVals[4];
        document.getElementById("celHeight").innerHTML = sVals[5];
        document.getElementById("celWeight").innerHTML = sVals[6];
        document.getElementById("celEyes").innerHTML = sVals[7];
        document.getElementById("celHair").innerHTML = sVals[8];
        document.getElementById("celArrestDate").innerHTML = sVals[9] + " " + sVals[10];
        document.getElementById("celArrestAgency").innerHTML = sVals[11];
        document.getElementById("celFacility").innerHTML = sVals[12];
        if (sVals[12] != "NO LONGER IN CUSTODY") {
            if (sVals[21] == "") {
                document.getElementById("celFacility").innerHTML += "<br /><span class=BookingDataLink onclick='showFacilityInfo()'>(click here for facility information)</span>";
            }
            else {
                document.getElementById("celFacility").innerHTML += "<br /><span class=BookingDataLink onclick='showFacilityDesc()'>(click here for facility information)</span>";
            }
        }
        document.getElementById("celVisiting").innerHTML = sVals[13];
        document.getElementById("celMailing").innerHTML = sVals[14];
        document.getElementById("spnFacility").innerHTML = sVals[12];
        document.getElementById("spnFacilityAddress").innerHTML = sVals[15];
        document.getElementById("spnFacilityPhone").innerHTML = sVals[16];
        document.getElementById("spnFacilityDirections").innerHTML = sVals[17];
        if (sVals[18] == "II") {
            document.getElementById("spnPublicInfoPlan").innerHTML = "<a target='_blank' style='color: darkred; text-decoration: underline; font-weight: bold;' href='PublicInfoPlan" + sVals[18] + ".pdf'>(click here for public information plan)</a>";
            document.getElementById("spnMoneyInfo").style.display = "";
            document.getElementById("rowMoneyInfo").style.display = "";
        }
        else {
            document.getElementById("spnPublicInfoPlan").innerHTML = "";
            document.getElementById("spnMoneyInfo").style.display = "none";
            document.getElementById("rowMoneyInfo").style.display = "none";
        }
        if (sVals[19] != "")
            document.getElementById("divSupps").innerHTML = "<span class='BookingSectionHeader'>Charges</span><br /><br /> " + sVals[19];
        else
            document.getElementById("divSupps").innerHTML = "";
        if (sVals[20] != "")
            document.getElementById("divHolds").innerHTML = "<span class='BookingSectionHeader'>Holds</span><br /><br /> " + sVals[20];
        else
            document.getElementById("divHolds").innerHTML = "";
        if (sVals[19] != "" || sVals[20] != "")
            document.getElementById("spnPrintable").innerHTML = "<a target='_blank' style='color: darkred;' href='PrintChargeInfo.aspx?bookno=" + document.getElementById("celBooking").innerHTML + "'>Show Printable Charges</span>";
        else
            document.getElementById("spnPrintable").innerHTML = "";
        document.getElementById("spnFacilityDesc").innerHTML = sVals[21];
        if (sVals[22] == "USM")
            document.getElementById("tblUSMInfo").style.display = "";
        else
            document.getElementById("tblUSMInfo").style.display = "none";
        document.getElementById("celBailable").innerHTML = sVals[23];
        document.getElementById("celArrestLocation").innerHTML = sVals[24];
        if (sVals[12] == "NO LONGER IN CUSTODY") {
            document.getElementById("celReleaseDate").innerHTML = sVals[25];
            document.getElementById("rowRelease").style.display = "";
            document.getElementById("rowReleaseNote").style.display = "none";
            document.getElementById("rowVisiting").style.display = "none";
            document.getElementById("rowMailing").style.display = "none";
        }
        else {
            document.getElementById("celReleaseDate").innerHTML = "";
            document.getElementById("rowRelease").style.display = "none";
            if (sVals[21] == "" && sVals[13] != "") { //facility is not 36 or 38
                document.getElementById("rowVisiting").style.display = "";
                document.getElementById("rowMailing").style.display = "";
                document.getElementById("rowReleaseNote").style.display = "";
            }
            else {
                document.getElementById("rowVisiting").style.display = "none";
                document.getElementById("rowMailing").style.display = "none";
                document.getElementById("rowReleaseNote").style.display = "none";
            }
        }
        document.getElementById("spnResults").style.display = "none";
        document.getElementById("spnStatusMessage").style.display = "none";
        document.getElementById("spnDisclaimer").style.display = "";
        document.getElementById("btnContinue").style.display = "";
        //document.getElementById("divStatus").style.display = "";
    }
    else {
        document.getElementById("spnDisclaimer").style.display = "";
        document.getElementById("btnContinue").style.display = "none";
        document.getElementById("spnResults").style.display = "";
        document.getElementById("spnStatusMessage").style.display = "none";
        document.getElementById("spnResults").innerHTML = sVals[1];
        document.getElementById("spnSearchAgain").style.display = "";
    }
}

function clickContinue() {
    document.getElementById("spnDisclaimer").style.display = "none";
    document.getElementById("btnContinue").style.display = "none";
    document.getElementById("divStatus").style.display = "";
    document.getElementById("spnSearchAgain").style.display = "";
}

function displayError(err) {
    alert(err.get_message());
}

function displayTimeout(err) {
    alert(err.get_message());
}

function clearScreen() {
    var frm = document.getElementById("frmSearch");
    frm.txtBookNo.value = "";
    frm.txtLastName.value = "";
    frm.txtFirstName.value = "";
    frm.txtMiddleName.value = "";
    frm.txtDOB.value = "";
    frm.txtAge.value = "";
    frm.txtSelectedName.value = "";
    frm.radGender_0.checked = true;
    frm.radGender_1.checked = false;
    document.getElementById("spnResults").innerHTML = "";
    document.getElementById("spnDisclaimer").style.display = "none";
    document.getElementById("btnContinue").style.display = "none";
    document.getElementById("divStatus").style.display = "none";
    document.getElementById("btnResults").style.display = "none";
    document.getElementById("divSearch").style.display = "";
    document.getElementById("spnSearchAgain").style.display = "none";
    document.getElementById("tblUSMInfo").style.display = "none";
    hidePopups();
    frm.txtBookNo.focus();
}

function toggleResults() {
    document.getElementById("btnResults").style.display = "none";
    document.getElementById("divStatus").style.display = "none";
    document.getElementById("spnResults").style.display = "";
}

function handleEnter(e, sType) {
    if (e.keyCode == 13) {
    //    alert(e.keyCode);
    //    e.returnValue = false;
        initSearch(sType);
    }
}

function numbersOnly() {
	var iKey = window.event.keyCode;
	//alert(iKey);
	if (iKey != 13) {
		if (iKey < 48 || iKey > 57) {
			window.event.returnValue = false;
		}
	}
}

function dateOnly() {
	var iKey = window.event.keyCode;
	//alert(iKey);
	if (iKey != 13) {
		if (iKey < 47 || iKey > 57) {
			window.event.returnValue = false;
		}
	}
}

function isDate(dte) {
    
    var exp1 = /^[1-9]\/[1-9]\/\d{4}$/
    var exp2 = /^[1-9]\/(0[1-9]|[1-2][0-9]|3[0-1])\/\d{4}$/
    var exp3 = /^(0[1-9]|1[0-2])\/[1-9]\/\d{4}$/
    var exp4 = /^(0[1-9]|1[0-2])\/(0[1-9]|[1-2][0-9]|3[0-1])\/\d{4}$/
    
    if (exp1.test(dte) || exp2.test(dte) || exp3.test(dte) || exp4.test(dte))
        return true;
    else
        return false;
        
}

function hidePopups() {
    document.getElementById("divCourtInfo").style.display = "none";
    document.getElementById("divMailingInfo").style.display = "none";
    document.getElementById("divVisitingInfo").style.display = "none";
    document.getElementById("divMoneyInfo").style.display = "none";
    document.getElementById("divFacilityInfo").style.display = "none";
    document.getElementById("divFacilityDesc").style.display = "none";
    document.getElementById("divBailDisclaimer").style.display = "none";
}

function showFacilityInfo() {

    hidePopups();
    document.getElementById("divFacilityInfo").style.top = centerElement(document.getElementById("divFacilityInfo"));
    document.getElementById("divFacilityInfo").style.display = "";
    
}

function showCourtInfo(cel) {
    
    hidePopups();
    if (cel.innerHTML != "No Appearance Scheduled") {
        document.getElementById("spnCourt").innerHTML = cel.parentNode.getAttribute("key0");
        document.getElementById("spnCourtAddress").innerHTML = cel.parentNode.getAttribute("key1");
        document.getElementById("spnCourtPhone").innerHTML = cel.parentNode.getAttribute("key2");
        document.getElementById("divCourtInfo").style.top = centerElement(document.getElementById("divCourtInfo"));
        document.getElementById("divCourtInfo").style.display = "";
    }
    
}

function showMailInfo() {
    
    hidePopups();
    document.getElementById("divMailingInfo").style.top = centerElement(document.getElementById("divMailingInfo"));
    document.getElementById("divMailingInfo").style.display = "";
    
}

function showVisitingInfo() {
    
    hidePopups();
    document.getElementById("divVisitingInfo").style.top = centerElement(document.getElementById("divVisitingInfo"));
    document.getElementById("divVisitingInfo").style.display = "";
    
}

function showMoneyInfo() {
    hidePopups();
    document.getElementById("divMoneyInfo").style.top = centerElement(document.getElementById("divMoneyInfo"));
    document.getElementById("divMoneyInfo").style.display = "";
}

function showFacilityDesc() {
    hidePopups();
    document.getElementById("divFacilityDesc").style.top = centerElement(document.getElementById("divFacilityInfo"));
    document.getElementById("divFacilityDesc").style.display = "inline";
}

function showBailDisclaimer() {
    hidePopups();
    document.getElementById("divBailDisclaimer").style.top = centerElement(document.getElementById("divBailDisclaimer"));
    document.getElementById("divBailDisclaimer").style.display = "inline";
}

function centerElement(elmt) {
    //alert(elmt.style.height);
    if (document.documentElement.clientHeight - parseInt(elmt.style.height) > 0) 
        return ((document.documentElement.clientHeight - parseInt(elmt.style.height)) / 2) + document.documentElement.scrollTop + "px";
    else
        return "100px";
}