<html><head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" charset="utf-8">
    <title>Person Search</title>
</head>
<body>
	<link rel="stylesheet" type="text/css" href="bah_personsearchstyle.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();
                    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();
				$("#createDiv").hide();
				$("#mviDownCreateRow").hide();
				$("#last4CreateRow").hide();
				$("#createAttributesTable").hide();
                $("#createLastNameTextBox").val("");
				$("#createFirstNameTextBox").val("");
                personSearchComplete();
            });

            $('#clearNameFieldsButton').bind("click", function () {

                $("#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();
			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");
									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");
									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");
									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();
									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();
									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();
									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;">
        <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>