<html><head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" charset="utf-8">
    <title>Person Search</title>
</head>
<body>
    <link href="bah_personsearchstyle.css" rel="stylesheet" type="text/css">
    <script src="ClientGlobalContext.js.aspx" type="text/javascript"></script>
    <script src="bah_jquery1.4.1.min.js" type="text/javascript"></script>
    <script src="bah_SDK.REST.js" type="text/javascript"></script>
    <script src="bah_json2.js" type="text/javascript"></script>
    <script src="bah_personsearchutils.js" type="text/javascript"></script>
    <script type="text/javascript">
        var _esrEndpoint = "";
        var _icn = "";
        var _MVI_FullName;
        var _selectedPersonObj;
        var _esrObj;
        var _userSL;
        var _lastSearchType = "";

        $(document).ready(function () {
            $("#SearchByNameButton").bind("click", function () {
                $("#searchResultsMessageDiv").val("");

                if (validateSearchByTraits() == true) {
                    _lastSearchType = "TRAITS";
                    formatExecutingSearch();
                    var dobday = $("#BirthDayTextBox").val() == "dd" ? "" : $("#BirthDayTextBox").val();
                    var dobyear = $("#BirthYearTextBox").val() == "yyyy" ? "" : $("#BirthYearTextBox").val();
                    var dobmonth = $("#BirthMonthTextBox").val() == "mm" ? "" : $("#BirthMonthTextBox").val();
                    if (dobday.length == 1)
                        dobday = '0' + dobday;
                    if (dobmonth.length == 1)
                        dobmonth = '0' + dobmonth;
                    var dob = dobmonth + "/" + dobday + "/" + dobyear;
                    var ssn = $("#SocialSecurityTextBox").val();
                    ssn = ssn.replace(/-/g, "");
                    var filterPrefix = "$select=*&$filter=";
                    var filter = buildQueryFilter("crme_FirstName", $("#FirstNameTextBox").val(), false);
                    filter += buildQueryFilter("crme_LastName", $("#LastNameTextBox").val(), true);
                    filter += buildQueryFilter("crme_SearchType", 'SearchByFilter', true);
                    filter += " and crme_IsAttended eq true";

                    if (dobyear != "") {
                        filter += " and crme_DOBString eq '" + dob + "'";
                    }

                    if ($("#SocialSecurityTextBox").val() != "") {
                        filter += buildQueryFilter("crme_SSN", ssn, true);
                    }
                    filter = encodeURIComponent(filter);
                    filter = filterPrefix + filter;
                    SDK.REST.retrieveMultipleRecords("crme_person", filter, traitsSearchCallBack, handleMviError /*function (error) { alert(error.message); }*/, personSearchComplete);

                } else {
                    formatValidationFailed();
                }

            });

            $("#SearchByIdentifierButton").bind("click", function () {
                if (validateSearchByIdentifier() == true) {
                    _lastSearchType = "EDIPI";
                    formatExecutingSearch();

                    var filterPrefix = "$select=*&$filter=";
                    var filter = "";
                    if ($("#EdipiTextBox").val() != "") {
                        filter += buildQueryFilter("crme_EDIPI", $("#EdipiTextBox").val(), false);
                        filter += buildQueryFilter("crme_ClassCode", 'MIL', true);
                    }

                    filter += buildQueryFilter("crme_SearchType", 'SearchByIdentifier', true);
                    filter += " and crme_IsAttended eq false";

                    filter = encodeURIComponent(filter);
                    filter = filterPrefix + filter;
                    SDK.REST.retrieveMultipleRecords("crme_person", filter, edipiSearchCallBack, handleMviError /*function (error) { alert(error.message); }*/, personSearchComplete);

                } else {
                    formatValidationFailed();
                }
            });

            $('#clearIdentifierFieldsButton').bind("click", function () {
                $("#EdipiTextBox").val("");
                $("#validationFailedDiv").hide();
                $("#notFoundDiv").hide();
                $("#possibleResultsDiv").hide();
                $("#resultsFieldSetDiv").hide();
                $("#createDiv").hide();
                $("#mviDownCreateRow").hide();
                $("#last4CreateRow").hide();
                $("#createAttributesTable").hide();
                $("#createLastNameTextBox").val("");
                $("#createFirstNameTextBox").val("");
                personSearchComplete();
            });

            $('#clearNameFieldsButton').bind("click", function () {
                $("#resultsFieldSetDiv").hide();
                $("#FirstNameTextBox").val("");
                $("#MiddleNameTextBox").val("");
                $("#LastNameTextBox").val("");
                $("#BirthMonthTextBox").val("");
                $("#BirthDayTextBox").val("");
                $("#BirthYearTextBox").val("");
                //$("#PhoneNoTextBox").val("");
                $("#SocialSecurityTextBox").val("");
                $("#validationFailedDiv").hide();
                $("#notFoundDiv").hide();
                $("#possibleResultsDiv").hide();
                $("#createDiv").hide();
                $("#mviDownCreateRow").hide();
                $("#last4CreateRow").hide();
                $("#createAttributesTable").hide();
                $("#createLastNameTextBox").val("");
                $("#createFirstNameTextBox").val("");

                personSearchComplete();
            });


            $('#searchCrmButton').bind("click", mviDownSearch);
            //$('#createNewVeteranFromLast4SearchButton').bind("click", createNewVeteranFromLast4Search);
            $('#createNewVeteranFromLast4SearchButton').bind("click", createNewVeteran);
            $('#createNewVeteranFromMviDownSearchButton').bind("click", createNewVeteran);

            $(".formInputText").keyup(function (event) {
                if (event.keyCode == 13) {
                    $("#SearchByNameButton").click();
                }
            });

            $("#EdipiTextBox").keyup(function (event) {
                if (event.keyCode == 13) {
                    $("#SearchByIdentifierButton").click();
                }
            });
        });
        //end jQuery Document.ready

        function validateSearchByTraits() {
            var fname = $("#FirstNameTextBox").val();
            var lname = $("#LastNameTextBox").val();
            var ssn = $("#SocialSecurityTextBox").val();
            var dobyear = $("#BirthYearTextBox").val();
            var dobmonth = $("#BirthMonthTextBox").val();
            var dobday = $("#BirthDayTextBox").val();
            if (dobday.length == 1)
                dobday = '0' + dobday;
            if (dobmonth.length == 1)
                dobmonth = '0' + dobmonth;
            var dob = dobyear + dobmonth + dobday;

            var errorMessage = "VALIDATION FAILED: ";
            var errorCount = 0;

            if (lname == null || lname == "") {
                errorMessage += "'Last Name' and at least 2 other fields are required for MVI search.";
                $("#validationFailedDiv").text(errorMessage);
                return false;
            }

            if (ssn == null || ssn.trim() == "") {
                errorCount += 1;
            }
            else if (ssn != null && ssn != "") {
                ssn = ssn.replace(/-/g, "");
                if (ssn.trim().length != 9 || isNumeric(ssn.trim()) == false) {
                    errorMessage += " SSN is invalid.";
                    errorCount += 1;
                    $("#validationFailedDiv").text(errorMessage);
                    return false;
                }
            }

            if (fname == "" || fname == null)
                errorCount += 1;

            if (dob == null || dob.trim() == "" || !isNumeric(dob.trim())) {
                errorCount += 1;
            } else if (!validateDateOfBirth(dobyear, dobmonth, dobday)) {
                errorMessage += " DOB is invalid.";
                $("#validationFailedDiv").text(errorMessage);
                return false;
            }

            if (errorCount > 1) {
                errorMessage += " At least 3 fields are required for MVI search.";
                $("#validationFailedDiv").text(errorMessage);
                return false;
            }

            return true;
        }


        // *This may need to be updated depending on expected fields
        //            when creating the new Veteran record
        //
        function createNewVeteran() {
            //prompt for confirmation
            var doCreate = confirm('Are you sure you want to create a new Veteran Record in CRM?');

            //if user cancels, return
            if (!doCreate) {
                return;
            }

            //continue with creation
            if (Xrm != null && Xrm.Page != null && Xrm.Page.context != null) {
                var contact = {};
                var validEdipi = false;
                var edipi = $("#EdipiTextBox").val();
                if (edipi != "") {
                    if (edipi.length == 10 && isNumeric(edipi)) {
                        validEdipi = true;
                    }
                }
                if (_lastSearchType == "EDIPI") {
                    if (validEdipi) {
                        //need to get attributes from "temp" fields
                        var lname = $("#createLastNameTextBox").val();
                        var fname = $("#createFirstNameTextBox").val();
                        if (fname != "") {
                            contact.FirstName = fname;
                        }
                        else {
                            alert("First Name and Last Name are required to create a new Veteran record based on an EDIPI search.");
                            return;
                        }
                        if (lname != "") {
                            contact.LastName = lname;
                        }
                        else {
                            alert("First Name and Last Name are required to create a new Veteran record based on an EDIPI search.");
                            return;
                        }
                        contact.bah_edipi_text = edipi;
                    }
                    else {
                        alert("EDIPI is invalid. Please start over.");
                    }
                }
                else {
                    var lname = $("#LastNameTextBox").val();
                    var fname = $("#FirstNameTextBox").val();
                    var source = ""; // maybe get LOB from form??
                    var ssn = $("#SocialSecurityTextBox").val();
                    var dobmonth = $("#BirthMonthTextBox").val();
                    var dobday = $("#BirthDayTextBox").val();
                    var dobyear = $("#BirthYearTextBox").val();
                    var dob = "";
                    if (isNumeric(dobyear) && isNumeric(dobmonth) && isNumeric(dobday)) {
                        if (dobmonth.length == 1)
                            dobmonth = '0' + dobmonth;

                        if (dobday.length == 1)
                            dobday = '0' + dobday;

                        if (!isNaN(Date.parse(dobyear + "-" + dobmonth + "-" + dobday + "T12:00:00Z"))) {
                            dob = dobyear + "-" + dobmonth + "-" + dobday;
                            contact.bah_dob_date = dob;
                        }
                    }
                    contact.LastName = lname;
                    contact.bah_source_text = source;
                    if (ssn != "") { contact.bah_ssn_text = ssn; }
                    if (fname != "") { contact.FirstName = fname; }
                }
                SDK.REST.createRecord(contact, "Contact", contactCreateCallBack, function (error) { alert(error.message); });
            }
        }
    </script>
    <!-- <h1 style="padding-top: 12px;">Veteran Search</h1> -->
    <div>
        <table>
            <tbody>
                <tr>
                    <td class="auto-style1">
                        <h3>Section 1 - Search By Traits</h3>
                    </td>
                </tr>
            </tbody>
        </table>
        <fieldset>
            <legend>The criteria for a search by traits includes: First and Last Name, Social Security Number, and DOB. At least 3 fields are required.</legend>
            <table>
                <tbody>
                    <tr>
                        <td class="auto-style1">
                            <label for="SocialSecurityTextBox">SSN</label>
                        </td>
                        <td>
                            <label for="FirstNameTextBox">First</label>
                        </td>
                        <td>
                            <label for="LastNameTextBox">*Last</label>
                        </td>
                        <td>
                            <label for="BirthMonthTextBox">Month</label>
                        </td>
                        <td>
                            <label for="BirthDayTextBox">Day</label>
                        </td>
                        <td>
                            <label for="BirthYearTextBox">Year</label>
                        </td>

                    </tr>
                    <tr>
                        <td class="auto-style1">
                            <input name="ssn" tabindex="1" class="formInputText" id="SocialSecurityTextBox" required="" onfocus="clearField(this)" size="16" maxlength="11">
                            <script type="text/javascript">
                                if (window.parent.Xrm.Page.getAttribute("bah_ssn_text") != null) {
                                    var a = document.getElementById("SocialSecurityTextBox");
                                    if (a != null)
                                        a.value = window.parent.Xrm.Page.getAttribute("bah_ssn_text").getValue();
                                }
                            </script>
                        </td>
                        <td>
                            <input name="firstName" tabindex="2" class="formInputText" id="FirstNameTextBox" onfocus="clearField(this)" size="16" maxlength="30">
                        </td>
                        <script type="text/javascript">
                            if (window.parent.Xrm.Page.getAttribute("vhacrm_vetfirstname_text") != null) {
                                var a = document.getElementById("FirstNameTextBox");
                                if (a != null)
                                    a.value = window.parent.Xrm.Page.getAttribute("vhacrm_vetfirstname_text").getValue();
                            }
                        </script>
                        <td>
                            <input name="lastName" tabindex="3" class="formInputText" id="LastNameTextBox" required="" onfocus="clearField(this)" size="16" maxlength="30">
                        </td>
                        <script type="text/javascript">
                            if (window.parent.Xrm.Page.getAttribute("vhacrm_vetlastname_text") != null) {
                                var a = document.getElementById("LastNameTextBox");
                                if (a != null)
                                    a.value = window.parent.Xrm.Page.getAttribute("vhacrm_vetlastname_text").getValue();
                            }
                        </script>
                        <td>

                            <input name="dateOfBirthMonth" tabindex="4" class="formInputText" id="BirthMonthTextBox" style="height: 30px;" required="" onfocus="clearField(this)" size="2" maxlength="2" value="MM">
                            /
                            <script type="text/javascript">
                                if (window.parent.Xrm.Page.getAttribute("bah_dob_date") != null) {
                                    var a = document.getElementById("BirthMonthTextBox");
                                    var dateFieldValue = window.parent.Xrm.Page.getAttribute("bah_dob_date").getValue();
                                    if (a != null && dateFieldValue != null)
                                        a.value = (dateFieldValue.getMonth() + 1);
                                }
                            </script>
                        </td>
                        <td>
                            <input name="dateOfBirthDay" tabindex="5" class="formInputText" id="BirthDayTextBox" style="height: 30px;" required="" onfocus="clearField(this)" size="2" maxlength="2" value="DD">
                            /
                            <script type="text/javascript">
                                if (window.parent.Xrm.Page.getAttribute("bah_dob_date") != null) {
                                    var a = document.getElementById("BirthDayTextBox");
                                    var dateFieldValue = window.parent.Xrm.Page.getAttribute("bah_dob_date").getValue();
                                    if (a != null && dateFieldValue != null)
                                        a.value = dateFieldValue.getDate();
                                }
                            </script>
                        </td>
                        <td>
                            <input name="dateOfBirthYear" tabindex="6" class="formInputText" id="BirthYearTextBox" style="height: 30px;" required="" onfocus="clearField(this)" size="4" maxlength="4" value="YYYY">
                            <script type="text/javascript">
                                if (window.parent.Xrm.Page.getAttribute("bah_dob_date") != null) {
                                    var a = document.getElementById("BirthYearTextBox");
                                    var dateFieldValue = window.parent.Xrm.Page.getAttribute("bah_dob_date").getValue();
                                    if (a != null && dateFieldValue != null)
                                        a.value = dateFieldValue.getFullYear();
                                }
                            </script>
                        </td>
                    </tr>
                    <tr>
                        <td style="padding-top: 10px;" colspan="4">
                            <button tabindex="7" id="SearchByNameButton" aria-label="Search by Traits">Search</button>
                            <button tabindex="8" id="clearNameFieldsButton" aria-label="Reset Search by Traits">Reset</button>
                        </td>
                    </tr>

                </tbody>
            </table>
        </fieldset>
        <table>
            <tbody>
                <tr>
                    <td class="auto-style1">
                        <h3>Section 2 - Search By EDIPI</h3>
                    </td>
                </tr>
            </tbody>
        </table>
        <fieldset>
            <legend>The search criteria for a search by EDIPI includes the EDIPI</legend>
            <table>
                <tbody>
                    <tr>
                        <td>
                            <label for="EdipiTextBox">*EDIPI</label>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <input name="edipi" tabindex="9" class="formInputText" id="EdipiTextBox" required="" onfocus="clearField(this)" size="16" maxlength="10">
                            <script type="text/javascript">
                                if (window.parent.Xrm.Page.getAttribute("vhacrm_edipi_text") != null) {
                                    var a = document.getElementById("EdipiTextBox");
                                    a.value = window.parent.Xrm.Page.getAttribute("vhacrm_edipi_text").getValue();
                                }
                            </script>
                        </td>
                    </tr>
                    <tr>
                        <td style="padding-top: 10px;">
                            <button tabindex="10" id="SearchByIdentifierButton" aria-label="Search by EDIPI">Search</button>
                            <button tabindex="11" id="clearIdentifierFieldsButton" aria-label="Reset Search by EDIPI">Reset</button>
                        </td>
                    </tr>
                </tbody>
            </table>
        </fieldset>
    </div>
    <div><br></div>
    <div style="clear: both;"></div>
    <div id="validationFailedDiv" style="color: rgb(128, 0, 0); clear: both; font-size: 1em; font-weight: bold; display: none;" aria-label="Search validation failed message">The search requires some additional information. Please follow the instructions above to execute your search.</div>
    <div id="resultsFieldSetDiv" style="width: 100%; float: left; display: none;">
        <h3>Section 3 - Search Results</h3>
        <div style="clear: both;"></div>
        <div id="searchResultsMessageDiv" style="color: rgb(128, 0, 0); font-size: 1em; font-weight: bold; display: none;" aria-label="Search Results Message"></div>
        <fieldset id="SearchResultFieldSet">
            <legend style="display: none;">Search Results</legend>
            <table id="personSearchResultsTable" style="width: 100%;"></table>
        </fieldset>
    </div>
    <div id="notFoundDiv" style="width: 100%; float: left; display: none;">
        <button tabindex="23" id="searchCrmButton" aria-label="Search CRM">Search CRM</button>
        <!--<fieldset id="notFoundFieldset">
            <legend>No Records Found</legend>
            <hr style="border: 1px solid gray; border-image: none;">
            <table>
                <tbody>
                    <tr>
                        <td>
                            <h3 style="padding-bottom: 5px;" id="noResultsLabel">Veteran Not Found</h3>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <button tabindex="23" id="searchCrmButton" aria-label="Search CRM">Search CRM</button>
                        </td>
                    </tr>
                </tbody>
            </table>
        </fieldset>-->
    </div>
    <div id="possibleResultsDiv" style="width: 100%; float: left; display: none;">
        <fieldset id="possibleResultsFieldset">
            <hr style="border: 1px solid gray; border-image: none;">
            <legend>Possible Matches Found in CRM</legend>
            <table>
                <tbody>
                    <tr>
                        <td>
                            <table id="possibleResultsTable" style="width: 100%;"></table>
                        </td>
                    </tr>
                </tbody>
            </table>
        </fieldset>
    </div>
    <div id="createDiv" style="width: 100%; float: left; display: none;">
        <fieldset id="createFieldset">
            <hr style="border: 1px solid gray; border-image: none;">
            <legend>Veteran not found in MVI Search. Create New Veteran</legend>
            <table>
                <tbody>
                    <tr id="last4CreateRow">
                        <td>
                            <button tabindex="30" id="createNewVeteranFromLast4SearchButton" aria-label="Create New Veteran">Create New Veteran</button>
                        </td>
                    </tr>
                    <tr id="mviDownCreateRow">
                        <td>
                            <table id="createAttributesTable" style="width: 340px;">
                                <tbody>
                                    <tr>
                                        <td>
                                            <label for="CreateFirstNameTextBox">*First</label>
                                        </td>
                                        <td>
                                            <label for="CreateLastNameTextBox">*Last</label>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>
                                            <input name="createFirstName" tabindex="2000" class="formInputText" id="createFirstNameTextBox" required="" size="16" maxlength="30">
                                        </td>
                                        <td>
                                            <input name="createLastName" tabindex="2000" class="formInputText" id="createLastNameTextBox" required="" size="16" maxlength="30">
                                        </td>
                                    </tr>
                                </tbody>
                            </table>
                            <button tabindex="30" id="createNewVeteranFromMviDownSearchButton" aria-label="Create New Veteran">Create</button>
                        </td>
                    </tr>
                </tbody>
            </table>
        </fieldset>
    </div>
    <div id="tmpDialog">
        <p>Working on it. Please wait ...</p>
    </div>

</body></html>