var registrationForm={init:function(n){registrationForm.config={form:null,termsCheckBox:null,accountLoginTextBox:null,submitButton:null,personIdTextBox:null,districtNameTag:null,manualRegistrationDiv:null,emailFieldDiv:null,submitFieldsDiv:null,personPickerRegistrationFieldSet:null,accountStatusMessageDiv:null,districtRegistrationCode:null,districtName:null,defaultPersonID:null,defaultName:null,lockoutSubmitButton:!1,personPickerStaffIDEntryDiv:null,findPersonByEmailNameUrl:"/Registration/FindPersonByEmailName",accountStatusUrl:"/Registration/GetPersonAccountStatus",uniqueEmailUrl:"",selectedPersonStaffIDMissing:!1,disableManualRegistration:!1};$.extend(registrationForm.config,n);registrationForm.setup()},setup:function(){registrationForm.config.districtNameTag.append(registrationForm.config.districtName);registrationForm._setupAccountLoginField();registrationForm._setupSubmitButton();registrationForm._setupPersonPicker();registrationForm._setupEmailFields()},_setupAccountLoginField:function(){registrationForm.config.accountLoginTextBox.on("keypress",function(n){if(typeof n.which=="undefined")return!0;typeof n.which=="number"&&n.which>0&&(n.which==64?(n.preventDefault(),alert("Please enter only the part of your email before the @@ sign"),n.preventDefault()):n.which==13&&(n.preventDefault(),registrationForm._isEmailUnique(!0)))})},_setupSubmitButton:function(){registrationForm.config.lockoutSubmitButton=!1;registrationForm.config.submitButton.prop("disabled",!0);registrationForm.config.submitButton.on("click",function(){var n=!0;return registrationForm.config.selectedPersonStaffIDMissing&&registrationForm.config.personPickerStaffIDEntryDiv.find("input").each(function(){$(this).val()===""&&(n=confirm("You have not entered a staff or employee #. You may not be able to view your students until this is provided. Click OK to continue or Cancel and provide your staff or employee # now. Contact your Ellevation Administrator if you require further assistance."))}),n});registrationForm.config.termsCheckBox.on("change",function(){var n=!this.checked||registrationForm.config.lockoutSubmitButton;registrationForm.config.submitButton.prop("disabled",n)})},_setupPersonPicker:function(){var n={def:new Array({text:registrationForm.config.defaultName,id:registrationForm.config.defaultPersonID}),width:"100%",minimumInputLength:1,placeholder:"Type to search by name or email",ajax:{data:function(n,t){return{regCode:registrationForm.config.districtRegistrationCode,queryTerm:n,page:t,pageSize:Ellevation.constants.select2PageSize,disableManualRegistration:registrationForm.config.disableManualRegistration}}}};registrationForm.config.personIdTextBox.data("url",registrationForm.config.findPersonByEmailNameUrl);registrationForm.config.personIdTextBox.select2DropDown(n);registrationForm.config.personIdTextBox.on("change",function(){registrationForm.config.selectedPersonStaffIDMissing=!1;registrationForm.config.accountStatusMessageDiv.removeClass("callout warning");registrationForm.config.accountStatusMessageDiv.html("");$(this).select2("data")?($("#SelectionDisplayName").val($(this).select2("data").text),registrationForm.config.disableManualRegistration&&$("#SelectionDisplayName").val().startsWith("No staff record")&&(registrationForm.config.accountStatusMessageDiv.addClass("callout warning"),registrationForm.config.accountStatusMessageDiv.html("No staff record found. Please contact your Ellevation administrator to ensure your staff record is added to Ellevation."))):($("#SelectionDisplayName").val(""),registrationForm.config.manualRegistrationDiv.addClass("hide").find("input").each(function(){$(this).attr("required","true");$(this).removeAttr("readonly")}),registrationForm.config.submitFieldsDiv.removeClass("hide"),registrationForm.config.lockoutSubmitButton=!1);$(this).val()==-1?registrationForm.config.disableManualRegistration?(registrationForm.config.lockoutSubmitButton=!0,registrationForm.config.emailFieldDiv.addClass("hide"),registrationForm.config.personPickerStaffIDEntryDiv.addClass("hide")):(registrationForm.config.manualRegistrationDiv.removeClass("hide").find("input").each(function(){$(this).attr("required","true");$(this).removeAttr("readonly")}),registrationForm.config.submitFieldsDiv.removeClass("hide"),registrationForm.config.lockoutSubmitButton=!1):$(this).val()<1||$(this).val()==""?(registrationForm.config.submitFieldsDiv.removeClass("hide"),registrationForm.config.lockoutSubmitButton=!0,registrationForm.config.submitButton.prop("disabled",!0)):(registrationForm.config.manualRegistrationDiv.addClass("hide"),registrationForm.config.manualRegistrationDiv.find("input").each(function(){$(this).removeAttr("required")}),$.ajax({type:"POST",url:registrationForm.config.accountStatusUrl,data:{regCode:registrationForm.config.districtRegistrationCode,personID:$(this).val()}}).success(function(n){registrationForm.config.accountStatusMessageDiv.html(n.statusMessage);n.success?(registrationForm.config.lockoutSubmitButton=!1,registrationForm.config.submitFieldsDiv.removeClass("hide"),n.emailUnique||(registrationForm.config.emailFieldDiv.removeClass("hide").find("input").each(function(){$(this).attr("required",!0)}),registrationForm.config.submitButton.prop("disabled",!registrationForm.config.termsCheckBox.is(":checked"))),n.hasStaffID||(registrationForm.config.personPickerStaffIDEntryDiv.removeClass("hide"),registrationForm.config.selectedPersonStaffIDMissing=!0)):(registrationForm.config.submitButton.prop("disabled",!0),registrationForm.config.submitFieldsDiv.addClass("hide"))}))})},_setupEmailFields:function(){registrationForm.config.emailFieldDiv.find("input").on("blur",function(){registrationForm._isEmailUnique()});registrationForm.config.emailFieldDiv.find("select").on("change",function(){registrationForm._isEmailUnique()})},_isEmailUnique:function(n){var t=registrationForm.config.emailFieldDiv.find("input"),i;t.val().length>0&&(i=registrationForm.config.emailFieldDiv.find("select"),$.get(registrationForm.config.uniqueEmailUrl,{personID:registrationForm.config.personIdTextBox.val(),email:t.val(),domain:i.find("option:selected").text()},function(i){t.data("uniqueEmail",i.isUnique);t.parent().siblings("span").html(i.isUnique?"Email is required":i.msg).toggle(!i.isUnique);registrationForm.config.form.trigger("validate.fndtn.abide");n===!0&&i.isUnique&&registrationForm.config.submitButton.prop("disabled")==!1&&registrationForm.config.form.submit()}))}}