const STEP_FINISHED = 1000; function ChancesWizard($json_content) { console.log($json_content); this.autoshow_mode = false; this.nocs_manager = null; this.nocs_manager_spouse = null; this.relatives_manager = null; this.save_validating = false; this.first_unfilled_control = null; this.has_opened_programs_or_scores = false; this.job_offer_nocs_manager = null; this.job_offer_nocs_manager_spouse = null; ChancesWizard.steps_containers_array = ["user_reason_info", "user_base_info", "user_language_info", "user_has_work_experience_info", "user_work_experience_info", "user_has_school_canada_info", "user_school_canada_info", "user_has_canada_job_offer_info", "user_job_offer_canada_info", "user_partner_info", "user_base_info_spouse", "user_language_info_spouse", "user_has_work_experience_info_spouse", "user_work_experience_info_spouse", "user_has_school_canada_info_spouse", "user_school_canada_info_spouse", "user_has_canada_job_offer_info_spouse", "user_job_offer_canada_info_spouse", "user_has_children_info", "user_children_info", "user_has_relatives_info", "user_relatives_info", "user_finance_info", "user_additional_info", "user_has_comment_info", "user_comment_info", "user_interest_info", "user_interest_info_other_countries", "user_interest_info_visa", "user_contact_block_info", "user_contact_info"]; this.Initialize($json_content); } ChancesWizard.prototype.CreateJobOfferNocsManager = function(is_spouse) { var object = this; var on_change_job_offer_nocs = function (sender){ object.InitializeInterface(); }; // nocs manager for client var result = new NocsManager(is_spouse, "user_job_offer_profession"); result.clear_job_on_key_press = true; result.AddItem(); result.OnChangeNocs(on_change_job_offer_nocs); return result; } ChancesWizard.prototype.InitializeJobOfferNocsManagers = function() { this.job_offer_nocs_manager = this.CreateJobOfferNocsManager(false); this.job_offer_nocs_manager_spouse = this.CreateJobOfferNocsManager(true); } ChancesWizard.prototype.ShouldSerializeJobOfferManager = function(nocs_manager) { var result = IsButtonGroupCheckBoxOn("#has_job_offer_canada"); if (nocs_manager.is_spouse) { result = this.HasSpouse(); result &= IsButtonGroupCheckBoxOn("#has_job_offer_canada_spouse"); } result &= (nocs_manager.items_list.length > 0); return result; } ChancesWizard.prototype.SerializeJobOfferFields = function(nocs_manager) { if (this.ShouldSerializeJobOfferManager(nocs_manager)) { var offer_noc_id = nocs_manager.items_list[0].noc_id; var offer_job_id = nocs_manager.items_list[0].job_id; var spouse_prefix = (nocs_manager.is_spouse) ? "_spouse" : ""; return "user_job_offer_canada_noc_id" + spouse_prefix + "=" + offer_noc_id + "&user_job_offer_canada_job_id" + spouse_prefix + "=" + offer_job_id; } return ""; } ChancesWizard.prototype.InitializeNocsManagers = function() { var object = this; var on_change_nocs = function (sender){ object.InitializeInterface(); }; // nocs manager for client this.nocs_manager = new NocsManager(false); this.nocs_manager.AddItem(); this.nocs_manager.OnChangeNocs(on_change_nocs); // nocs manager for client spouse this.nocs_manager_spouse = new NocsManager(true); this.nocs_manager_spouse.AddItem(); this.nocs_manager_spouse.OnChangeNocs(on_change_nocs); } ChancesWizard.prototype.InitializeRelativesManager = function() { var object = this; var on_change_relatives = function (sender){ object.InitializeInterface(); }; this.relatives_manager = new PrototypeManager("#user_relatives_info_parent", "#user_relatives_info_prototype", "#user_relatives_remove_item"); this.relatives_manager.AddItem(); this.relatives_manager.OnAdd(on_change_relatives); this.relatives_manager.OnRemove(on_change_relatives); } ChancesWizard.prototype.IsSpouseStep = function(step_name) { return (step_name.indexOf("_spouse") >= 0); } ChancesWizard.prototype.AddSelectOptions = function(select_control, option_text, option_value) { var option = document.createElement("option"); option.text = option_text; option.value = option_value; $(select_control)[0].appendChild(option); } ChancesWizard.prototype.FillUserAgeControl = function(select_box_id) { const MIN_USER_AGE_NUMBER = 20; const MAX_USER_AGE_NUMBER = 100; var user_age_select = $("#" + select_box_id); if (user_age_select) { this.AddSelectOptions(user_age_select, "Weniger als 20 Jahre alt", 19); for (var i = MIN_USER_AGE_NUMBER; i <= MAX_USER_AGE_NUMBER; i++) { this.AddSelectOptions(user_age_select, AgeToString(i), i); } } } ChancesWizard.prototype.GetWorkProfessionStartYear = function() { return new Date().getFullYear(); } ChancesWizard.prototype.GetWorkProfessionEndYear = function() { const PROFESSION_YEARS_MAX_COUNT = 10; return (this.GetWorkProfessionStartYear() - PROFESSION_YEARS_MAX_COUNT); } ChancesWizard.prototype.AddWorkProfessionWhenYear = function(control, start_year, end_year, is_spouse) { for (var i = start_year; i >= end_year; i--) { var option_prefix = is_spouse ? "Beendet die Arbeit in " : "Beendet die Arbeit in "; this.AddSelectOptions(control, option_prefix + i + " Jahr", i); } } ChancesWizard.prototype.FillWorkProfessionWhenPrototype = function(control, is_spouse) { var start_year = this.GetWorkProfessionStartYear(); var end_year = this.GetWorkProfessionEndYear(); var option_text = is_spouse ? "Momentan in Arbeit " : "Arbeiten Sie derzeit "; this.AddSelectOptions(control, option_text, 0); this.AddWorkProfessionWhenYear(control, start_year, end_year, is_spouse) } ChancesWizard.prototype.HasSpouse = function() { return (IsButtonGroupCheckBoxOn("#has_partner") === true); } ChancesWizard.prototype.GetUserReason = function() { return GetSelectBoxValue("#user_reason"); } ChancesWizard.prototype.GetChildrenCount = function() { return (this.GetChildren13Count() + this.GetChildren21Count()); } ChancesWizard.prototype.GetChildren13Count = function() { if (IsButtonGroupCheckBoxOn("#has_children") === true) return (VarAsInt(GetButtonGroupValue("#children_count13"))); return 0; } ChancesWizard.prototype.GetChildren21Count = function() { if (IsButtonGroupCheckBoxOn("#has_children") === true) return (VarAsInt(GetButtonGroupValue("#children_count21"))); return 0; } ChancesWizard.prototype.HasChildren = function() { return (this.GetChildrenCount() > 0); } ChancesWizard.prototype.IsLanguageSchoolReason = function() { var reason = this.GetUserReason(); return (reason == "language"); } ChancesWizard.prototype.IsChildrenAtHomeVisisble = function() { return ((this.IsLanguageSchoolReason()) && (this.HasChildren())); } ChancesWizard.prototype.UpdateVisibility = function(control, is_visible) { if (control) { if (is_visible) $(control).show(); else $(control).hide(); } } ChancesWizard.prototype.ShouldShowLanguagePassTests = function($language_control) { var value = GetSelectBoxValue($language_control); var result = (value != ""); result = result && (value != "17"); result = result && (value != "24"); result = result && (value != "25"); result = result && (value != "32"); return result; } ChancesWizard.prototype.InitializeReasonInterface = function() { this.UpdateVisibility($("#additional_info_parents"), this.IsLanguageSchoolReason()); this.UpdateVisibility($("#additional_info_children"), this.IsChildrenAtHomeVisisble()); this.UpdateVisibility($("#pass_tef_block"), this.ShouldShowLanguagePassTests("#user_french")); this.UpdateVisibility($("#pass_ielts_block"), this.ShouldShowLanguagePassTests("#user_english")); this.UpdateVisibility($("#has_diplom_evaluation_block"), (GetSelectBoxValue("#user_education") != "")); this.UpdateVisibility($("#pass_tef_block_spouse"), this.ShouldShowLanguagePassTests("#user_french_spouse")); this.UpdateVisibility($("#pass_ielts_block_spouse"), this.ShouldShowLanguagePassTests("#user_english_spouse")); this.UpdateVisibility($("#has_diplom_evaluation_block_spouse"), this.HasSpouse() && (GetSelectBoxValue("#user_education_spouse") != "")); } ChancesWizard.prototype.DoShowContainer = function(step) { this.UpdateVisibility("#" + step, this.IsStepVisible(step)); } ChancesWizard.prototype.DoHideContainer = function(step) { if (this.autoshow_mode) $("#" + step).hide(); else this.UpdateVisibility("#" + step, this.IsStepVisible(step)); } ChancesWizard.prototype.ChangeControlBackgroundColor = function(selected, control) { $(control).removeClass("error-control-value"); $(control).removeClass("filled-control-value"); $(control).removeClass("unknown-control-value"); if (selected) $(control).addClass('filled-control-value'); else { if (this.save_validating) { if (!$(control).hasClass("can-be-empty")) $(control).addClass('error-control-value'); } else $(control).addClass('unknown-control-value'); } } ChancesWizard.prototype.ChangeInputControlStyle = function(current_step) { var object = this; $("select").each(function() { object.ChangeControlBackgroundColor(IsSelectBoxFilled(this), this); }); $(".btn-group-member").each(function() { object.ChangeControlBackgroundColor(IsButtonGroupSelected($(this).parent()), this); }); $("span.radio-label").each(function() { var is_filled = null; var parent = $(this).parent(); $(parent).children().each(function(index, child){ if (IsRadioBox(child)) { is_filled = IsRadioBoxFilled(child); return; } }); object.ChangeControlBackgroundColor(is_filled, this); }); $("textarea, input[type=text], input[type=tel], input[type=email]").each(function() { var is_filled = (this.value != ""); var element_id = $(this).attr('id') if ((object.save_validating) && (element_id == "user_email")) { is_filled = is_filled && AnalyzeEmailControl("#user_email", false); } object.ChangeControlBackgroundColor(is_filled, this); }); } ChancesWizard.prototype.IsStepVisible = function(step) { var result = true; if (this.IsSpouseStep(step)) result &= (this.HasSpouse()); if (step == "user_relatives_info") result &= (IsButtonGroupCheckBoxOn("#has_relatives")); if (step == "user_work_experience_info") result &= (IsButtonGroupCheckBoxOn("#has_work_experience")); if (step == "user_work_experience_info_spouse") result &= (IsButtonGroupCheckBoxOn("#has_work_experience_spouse")); if (step == "user_children_info") result &= (IsButtonGroupCheckBoxOn("#has_children")); if (step == "user_comment_info") result &= (IsButtonGroupCheckBoxOn("#has_comment")); if (step == "user_school_canada_info") result &= (IsButtonGroupCheckBoxOn("#has_school_canada")); if (step == "user_school_canada_info_spouse") result &= (IsButtonGroupCheckBoxOn("#has_school_canada_spouse")); if (step == "user_job_offer_canada_info") result &= (IsButtonGroupCheckBoxOn("#has_job_offer_canada")); if (step == "user_interest_info_other_countries") result &= ($("#user_interest_other_countries").is(":checked")); if (step == "user_job_offer_canada_info_spouse") result &= (IsButtonGroupCheckBoxOn("#has_job_offer_canada_spouse")); return result; } ChancesWizard.prototype.IsSaveAvailable = function() { var current_step = this.GetCurrentStepIndex(); var result = (current_step == STEP_FINISHED); return result; } ChancesWizard.prototype.IsStepElementFilled = function(step, element) { // check is input/select really filled var result = true; if (element.tagName.toLowerCase() == "select") { result &= (IsSelectBoxFilled(element)); } if (element.tagName.toLowerCase() == "textarea") { result &= IsTextBoxFilled(element); } if (element.tagName.toLowerCase() == "input") { result &= IsInputFilled(element); var element_id = $(element).attr('id') if ((this.save_validating) && (element_id == "user_email")) { result = result && AnalyzeEmailControl("#user_email", true); } } if (IsButtonGroup(element)) { result &= IsButtonGroupSelected(element); } if ($(element).hasClass("items-container")) { if ($(element).is(":visible")) { result = result && (this.EnumerateStepElements(step, element)); } } if ($(element).hasClass("can-be-empty")) result = true; return result; } ChancesWizard.prototype.IsVirtualContainer = function(element) { return ($(element).hasClass("virtual-container")); } ChancesWizard.prototype.EnumerateStepElementsParent = function(step, element, check_parent) { var result = true; var object = this; var is_virtual_container = false; if (check_parent) is_virtual_container = this.IsVirtualContainer(element); var is_protype = ($(element).hasClass("prototype")); if (!is_protype) { // enumerate all nesting divs of given step $(element).children().each(function (child_div_index, child_div) { var is_hidden = $(child_div).hasClass("hidden-container"); var is_child_virtual_container = object.IsVirtualContainer(child_div); if (!is_hidden) { if (is_virtual_container) { result &= object.EnumerateStepElementsParent(step, child_div, true); } else if (is_child_virtual_container) { result &= object.EnumerateStepElementsParent(step, child_div, false); } else { result &= object.EnumerateStepElements(step, child_div); } if (!result) return; } }); } return result; } ChancesWizard.prototype.EnumerateStepElements = function(step, element) { var result = true; var object = this; $(element).children().each(function (index, child) { var dom_element = $(child).get(0); result = result && (object.IsStepElementFilled(step, dom_element)); if (!result) { if (object.first_unfilled_control == null) object.first_unfilled_control = dom_element; return; } }); return result; } ChancesWizard.prototype.IsStepFilled = function(step) { if (this.IsStepVisible(step)) { var children_containers_selector = "#" + step; return this.EnumerateStepElementsParent(step, children_containers_selector, true); } return true; } ChancesWizard.prototype.GetCurrentStepIndex = function() { this.first_unfilled_control = null; for (var i = 0; i < ChancesWizard.steps_containers_array.length; i++) { if (!this.IsStepFilled(ChancesWizard.steps_containers_array[i])) return i; } return STEP_FINISHED; } ChancesWizard.prototype.SpouseChildrenText = function(text_own, text_spouse_only, text_children_only, text_children_spouse) { if (this.GetChildren13Count() > 0) { if (this.HasSpouse()) return text_children_spouse; else return text_children_only; } else if (this.HasSpouse()) return text_spouse_only; return text_own; } ChancesWizard.prototype.UpdateSpouseInterface = function() { // relatives label var temp_html = this.HasSpouse() ? "Haben Sie oder Ihr Ehepartner Verwandte, die in Kanada leben?" : "Haben Sie Verwandte, die in Kanada leben?"; $("#has_relatives_label").html(temp_html); // relatives relationship label temp_html = this.HasSpouse() ? "Verwandtschaft im Verhältnis zu Ihnen oder Ihrem Paar:" : "Verwandtschaft:"; temp_html = "" + temp_html + ""; $("[name='user_relatives_relationship_label']").each(function(){ $(this).html(temp_html); }); // children temp_html = this.HasSpouse() ? "Haben Sie oder Ihr Ehepartner Kinder unter 22 Jahren?" : "Haben Sie Kinder im Alter von unter 22 Jahren?"; $("#has_children_label").html(temp_html); // criminal records $("#criminal_record_label").html(this.SpouseChildrenText("Haben Sie ein Strafregister?", "Sie oder Ihr Ehepartner sind vorbestraft", "Sie oder Ihre Kinder sind vorbestraft", "Sie oder Ihr Ehepartner oder Ihre Kinder sind vorbestraft")); // illness $("#illnes_label").html(this.SpouseChildrenText("Sie haben eine schwere Krankheit oder Behinderung", "Sie oder Ihr Ehepartner haben eine schwere Krankheit oder Behinderung", "Sie oder Ihre Kinder haben eine schwere Krankheit oder Behinderung", "Sie oder Ihr Ehepartner oder Ihre Kinder haben eine schwere Krankheit oder Behinderung")); // deportation $("#deportation_label").html(this.SpouseChildrenText("Sie haben Abschiebungen aus anderen Ländern", "Sie oder Ihr Ehepartner sind aus einem anderen Land abgeschoben worden", "Sind Sie oder Ihre Kinder aus einem anderen Land abgeschoben worden?", "Sie oder Ihr Ehepartner oder Ihre Kinder sind aus anderen Ländern abgeschoben worden")); } ChancesWizard.prototype.UpdateLanguageTestVisibility = function(language_select_id, language_pass_test_id) { var language_value = GetSelectBoxValue(language_select_id); if ((language_value == "24") || (language_value == "32")) $(language_pass_test_id).show(); else $(language_pass_test_id).hide(); } ChancesWizard.prototype.UpdateLanguageInterface = function() { this.UpdateLanguageTestVisibility("#user_english", "#pass_english_test"); this.UpdateLanguageTestVisibility("#user_french", "#pass_french_test"); } ChancesWizard.prototype.InitializeInterface = function() { var current_step = this.GetCurrentStepIndex(); var is_save_visible = (current_step == STEP_FINISHED); this.save_validating = false; this.InitializeReasonInterface(); this.ChangeInputControlStyle(current_step); if (this.autoshow_mode) this.UpdateVisibility($("#save_form"), is_save_visible); for (var i = 0; i < ChancesWizard.steps_containers_array.length; i++) { if (i <= current_step) { this.DoShowContainer(ChancesWizard.steps_containers_array[i]); } else { this.DoHideContainer(ChancesWizard.steps_containers_array[i]); } } } ChancesWizard.prototype.AddRelativesEntry = function() { this.relatives_manager.AddItem(); } ChancesWizard.prototype.AddWorkEntry = function() { this.nocs_manager.AddItem(); } ChancesWizard.prototype.AddSpouseWorkEntry = function() { this.nocs_manager_spouse.AddItem(); } ChancesWizard.prototype.SerializeRelativesFields = function() { if (IsButtonGroupCheckBoxOn("#has_relatives")) { var user_relatives = {}; user_relatives.user_relatives = []; for (i = 0; i < this.relatives_manager.items_list.length; i++) { var object_info = {}; object_info.relationship = this.relatives_manager.items_list[i].GetInputValue("user_relatives_relationship"); if (object_info.relationship != "") { object_info.status = this.relatives_manager.items_list[i].GetInputValue("user_relatives_status"); object_info.length = this.relatives_manager.items_list[i].GetInputValue("user_relatives_length"); object_info.province_id = this.relatives_manager.items_list[i].GetInputValue("user_relatives_province"); user_relatives.user_relatives[i] = object_info; } } if (user_relatives.user_relatives.length > 0) return $.param(user_relatives); } return ""; } ChancesWizard.prototype.ShouldSerializeNocsManager = function(nocs_manager) { var result = IsButtonGroupCheckBoxOn("#has_work_experience"); if (nocs_manager.is_spouse) { result = this.HasSpouse(); result &= IsButtonGroupCheckBoxOn("#has_work_experience_spouse"); } return result; } ChancesWizard.prototype.SerializeNocsFields = function(nocs_manager, title) { if (this.ShouldSerializeNocsManager(nocs_manager)) return nocs_manager.SerializeNocsFields(title); return ""; } ChancesWizard.prototype.AddSerializedValue = function(result, value) { if ((result != "") && (value != "")) { result += "&"; } result += value; return result; } ChancesWizard.prototype.SerializeAdditionalFields = function() { var result = ""; result = this.AddSerializedValue(result, this.SerializeRelativesFields()); result = this.AddSerializedValue(result, this.SerializeNocsFields(this.nocs_manager, "user_nocs")); result = this.AddSerializedValue(result, this.SerializeNocsFields(this.nocs_manager_spouse, "user_nocs_spouse")); result = this.AddSerializedValue(result, this.SerializeJobOfferFields(this.job_offer_nocs_manager)); result = this.AddSerializedValue(result, this.SerializeJobOfferFields(this.job_offer_nocs_manager_spouse)); return result; } ChancesWizard.prototype.CheckUserNocsCommon = function(check_box_selector, nocs_manager) { var result = true; if (IsButtonGroupCheckBoxOn(check_box_selector)) { has_work = nocs_manager.HasAnyFilledNoc(); if (has_work === false) { var message_str = "Leider müssen Sie einen Beruf aus der Dropdown-Liste auswählen, die bei der Eingabe angezeigt wird.\n\n"; message_str += "Wenn keine geeigneten Optionen verfügbar sind, versuchen Sie, die Berufsbezeichnung umzuformulieren oder ein Synonym einzugeben.\n"; alert(message_str); $(check_box_selector).parent()[0].scrollIntoView({ behavior: 'smooth'}); result = false; } } return result; } ChancesWizard.prototype.CheckUserNocs = function() { return this.CheckUserNocsCommon("#has_work_experience", this.nocs_manager); } ChancesWizard.prototype.CheckUserNocsSpouse = function() { if (this.HasSpouse()) return this.CheckUserNocsCommon("#has_work_experience_spouse", this.nocs_manager_spouse); return true; } ChancesWizard.prototype.CheckUserWorkExperience = function(save_data) { var result = IsButtonGroupCheckBoxOn("#has_work_experience"); if (result === false) { var object = this; $('#works-modal-warning').on('hidden.bs.modal', function (e) { $('#works-modal-warning').addClass("fade"); if ($('#works-modal-warning').hasClass("modal-result-yes")) { SetButtonGroupCheckBoxValue("#has_work_experience", true); if (object.nocs_manager.items_list.length > 0) { var selector = object.nocs_manager.items_list[0].input_box; $(selector)[0].focus({preventScroll: true}); } $("#has_work_experience").parent()[0].scrollIntoView({ behavior: 'smooth'}); } else { if (object.CheckUserOpenedProgramsOrScores(save_data)) object.SendProfileToServerInternal(save_data); } }); $('#works-modal-warning').on('shown.bs.modal', function (e) { $('#works-modal-warning').removeClass("modal-result-yes"); $('#works-modal-warning').removeClass("fade"); }); $('#works-modal-dlg-button-close').on('click', function (e) { $('#works-modal-warning').addClass("modal-result-yes"); $('#works-modal-warning').modal('hide'); }); $('#works-modal-warning').modal('show'); } return result; } ChancesWizard.prototype.CheckUserOpenedProgramsOrScores = function(save_data) { var result = (!this.has_opened_programs_or_scores); if (this.has_opened_programs_or_scores) { var object = this; $('#programs-modal-warning').on('hidden.bs.modal', function (e) { $('#programs-modal-warning').addClass("fade"); if ($('#programs-modal-warning').hasClass("modal-result-yes")) { object.SendProfileToServerInternal(save_data); } }); $('#programs-modal-warning').on('shown.bs.modal', function (e) { $('#programs-modal-warning').removeClass("modal-result-yes"); $('#programs-modal-warning').removeClass("fade"); }); $('#programs-modal-dlg-button-close').on('click', function (e) { $('#programs-modal-warning').addClass("modal-result-yes"); $('#programs-modal-warning').modal('hide'); }); $('#programs-modal-warning').modal('show'); } return result; } ChancesWizard.prototype.CheckSaveAvailability = function(save_data) { this.save_validating = true; this.ChangeInputControlStyle(); var result = this.IsSaveAvailable(); if (this.first_unfilled_control != null) { var parent = $(this.first_unfilled_control).parent(); $(parent)[0].scrollIntoView({ behavior: 'smooth'}); } if (result) result &= this.CheckUserNocs(); if (result) result &= this.CheckUserNocsSpouse(); if (result) result &= this.CheckUserWorkExperience(save_data); if (result) result &= this.CheckUserOpenedProgramsOrScores(save_data); this.save_validating = false; return result; } ChancesWizard.prototype.ChangeInputsEnabledState = function(is_disabled) { $(".prototype-item").attr("disabled", is_disabled); $("#user_comment_text").attr("disabled", is_disabled && (IsButtonGroupCheckBoxOff("#has_comment"))); $("#user_children_count13").attr("disabled", is_disabled && (IsButtonGroupCheckBoxOff("#has_children"))); $("#user_children_count21").attr("disabled", is_disabled && (IsButtonGroupCheckBoxOff("#has_children"))); $("#user_school_canada").attr("disabled", is_disabled && (IsButtonGroupCheckBoxOff("#has_school_canada"))); $("#user_school_canada_province").attr("disabled", is_disabled && (IsButtonGroupCheckBoxOff("#has_school_canada"))); $("#user_school_canada_spouse").attr("disabled", is_disabled && (IsButtonGroupCheckBoxOff("#has_school_canada_spouse"))); $("#user_school_canada_province_spouse").attr("disabled", is_disabled && (IsButtonGroupCheckBoxOff("#has_school_canada_spouse"))); $("#user_job_offer_canada_province").attr("disabled", is_disabled && (IsButtonGroupCheckBoxOff("#has_job_offer_canada"))); $("#user_job_offer_canada_province_spouse").attr("disabled", is_disabled && (IsButtonGroupCheckBoxOff("#has_job_offer_canada_spouse"))); $("#pass_tef").attr("disabled", is_disabled && (IsButtonGroupCheckBoxOff("#pass_tef_group"))); $("#pass_ielts").attr("disabled", is_disabled && (IsButtonGroupCheckBoxOff("#pass_ielts_group"))); $("#has_diplom_evaluation").attr("disabled", is_disabled && (IsButtonGroupCheckBoxOff("#has_diplom_evaluation_group"))); $("#pass_tef_spouse").attr("disabled", is_disabled && (IsButtonGroupCheckBoxOff("#pass_tef_group_spouse"))); $("#pass_ielts_spouse").attr("disabled", is_disabled && (IsButtonGroupCheckBoxOff("#pass_ielts_group_spouse"))); $("#has_diplom_evaluation_spouse").attr("disabled", is_disabled && (IsButtonGroupCheckBoxOff("#has_diplom_evaluation_group_spouse"))); } ChancesWizard.prototype.SendProfileToServer = function(save_data) { if (this.CheckSaveAvailability(save_data)) { this.SendProfileToServerInternal(save_data); } } ChancesWizard.prototype.SubmitForm = function() { this.SendProfileToServer(true); } ChancesWizard.prototype.CalculateResults = function() { this.SendProfileToServer(false); } ChancesWizard.prototype.LoadCanadaSchoolFromJSON = function(json, is_spouse) { var suffix = (is_spouse) ? "_spouse" : ""; var has_school_canada = (json["user_school_canada_province" + suffix] > 0); SetButtonGroupCheckBoxValue("#has_school_canada" + suffix, has_school_canada); if (!has_school_canada) { SetSelectBoxValue("#user_school_canada" + suffix, ""); } } ChancesWizard.prototype.LoadChildrenFromJSON = function(json) { var has_children = ((json["user_children_count13"] + json["user_children_count21"]) > 0); SetButtonGroupCheckBoxValue("#has_children", has_children); if (has_children) { SetButtonGroupValue("#children_count13", json["user_children_count13"]); SetButtonGroupValue("#children_count21", json["user_children_count21"]); } } ChancesWizard.prototype.LoadControlsFromJSON = function(json) { for (var propertyName in json) { var jquery_name = "#" + propertyName; if (IsCheckBox(jquery_name)) { if (json[propertyName] == "true") $(jquery_name).attr('checked', 'checked'); } else if (IsInputBox(jquery_name)) $(jquery_name).val(json[propertyName]); else if (IsSelectBox(jquery_name)) SetSelectBoxValue(jquery_name, json[propertyName]); } SetButtonGroupCheckBoxValue("#has_partner", json["user_has_spouse"]); SetButtonGroupCheckBoxValue("#has_comment", (json["user_comment_text"] != "")); SetButtonGroupCheckBoxValue("#has_job_offer_canada", (json["user_job_offer_canada_province"] > 0)); SetButtonGroupCheckBoxValue("#has_job_offer_canada_spouse", (json["user_job_offer_canada_province_spouse"] > 0)); SetButtonGroupCheckBoxValue("#pass_tef_group", json["pass_tef"]); SetButtonGroupCheckBoxValue("#pass_ielts_group", json["pass_ielts"]); SetButtonGroupCheckBoxValue("#has_diplom_evaluation_group", json["has_diplom_evaluation"]); SetButtonGroupCheckBoxValue("#pass_tef_group_spouse", json["pass_tef_spouse"]); SetButtonGroupCheckBoxValue("#pass_ielts_group_spouse", json["pass_ielts_spouse"]); SetButtonGroupCheckBoxValue("#has_diplom_evaluation_group_spouse", json["has_diplom_evaluation_spouse"]); this.has_opened_programs_or_scores = (json["has_opened_programs_or_scores"] == "true"); $("#user_comment_text").val(json["user_comment_text"]); $("#user_interest_other_countries_list").val(json["user_interest_other_countries_list"]); this.LoadChildrenFromJSON(json); this.LoadCanadaSchoolFromJSON(json, false); this.LoadCanadaSchoolFromJSON(json, true); } ChancesWizard.prototype.LoadRelativesControlsFromJSON = function(json) { var has_relatives = false; if (json["user_relatives"]) { relatives_array = json["user_relatives"]; has_relatives = (relatives_array.length > 0); if (has_relatives) { for (var i = 0; i < relatives_array.length; i++) { var current_item = this.relatives_manager.current_item; current_item.SetInputValue("user_relatives_status", relatives_array[i].status); current_item.SetInputValue("user_relatives_length", relatives_array[i].length); current_item.SetInputValue("user_relatives_province", relatives_array[i].province_id); current_item.SetInputValue("user_relatives_relationship", relatives_array[i].relationship); if (i != (relatives_array.length - 1)) this.relatives_manager.AddItem(); } } } SetButtonGroupCheckBoxValue("#has_relatives", has_relatives); } ChancesWizard.prototype.SetWorkProfessionWhenValue = function(current_item, finished_year, is_spouse) { var year_exists = false; var select_box_name = "#" + current_item.GetNocsElementIndexedPrefixedName("when"); $(select_box_name).children().each(function(child_index, child) { if (child.value == finished_year) { year_exists = true; return; } }); if (!year_exists) this.AddWorkProfessionWhenYear($(select_box_name)[0], this.GetWorkProfessionEndYear() - 1, finished_year, is_spouse); current_item.SetInputValue("when", finished_year); } ChancesWizard.prototype.LoadNocsControlsFromJSON = function(json, is_spouse) { var has_nocs = false; var nocs_suffix = (is_spouse) ? "_spouse" : ""; var nocs_manager = (is_spouse) ? this.nocs_manager_spouse : this.nocs_manager; if (json["user_nocs" + nocs_suffix]) { nocs_array = json["user_nocs" + nocs_suffix]; has_nocs = (nocs_array.length > 0); if (has_nocs) { for (var i = 0; i < nocs_array.length; i++) { var current_item = nocs_manager.current_item; current_item.SetInputValue("", nocs_array[i].job_title); this.SetWorkProfessionWhenValue(current_item, nocs_array[i].work_finished_year, is_spouse); current_item.ShowWorkExperience(nocs_array[i].job_title, nocs_array[i].job_id, nocs_array[i].noc_id); current_item.ShowNocVideoFiles(nocs_array[i].job_id, nocs_array[i].noc_id, nocs_array[i].video_files, false); var work_experience_monthes = (nocs_array[i].work_experience % MONTHES_PER_YEAR); var work_experience_years = nocs_array[i].work_experience - work_experience_monthes; current_item.SetInputValue("length", work_experience_years); current_item.SetInputValue("length_monthes", work_experience_monthes); $(current_item.duration_select).trigger("onchange"); SetRadioBoxCheckedByNameValue(current_item.GetNocsElementIndexedPrefixedName("worktime"), nocs_array[i].work_time_id); SetRadioBoxCheckedByNameValue(current_item.GetNocsElementIndexedPrefixedName("worktype"), nocs_array[i].work_type_id); // is at Canada var at_canada = (nocs_array[i].province_id > 0); SetButtonGroupCheckBoxValue(current_item.location_check_box, at_canada); if (at_canada) { current_item.SetInputValue("province", nocs_array[i].province_id); } if (i != (nocs_array.length - 1)) nocs_manager.AddItem(); } } } SetButtonGroupCheckBoxValue("#has_work_experience" + nocs_suffix, has_nocs); } ChancesWizard.prototype.LoadJobOfferControlsFromJSON = function(json, is_spouse) { var nocs_suffix = (is_spouse) ? "_spouse" : ""; var nocs_manager = (is_spouse) ? this.job_offer_nocs_manager_spouse : this.job_offer_nocs_manager; if (json["user_job_offer_canada_job_title" + nocs_suffix]) { var offer_job_title = json["user_job_offer_canada_job_title" + nocs_suffix]; var current_item = nocs_manager.current_item; current_item.SetInputValue("", offer_job_title); current_item.ShowWorkExperience(offer_job_title, json["user_job_offer_canada_job_id" + nocs_suffix], json["user_job_offer_canada_noc_id" + nocs_suffix]); } } ChancesWizard.prototype.LoadControlsFromJSONContent = function(json_content) { if (json_content) { var json = JSON.parse(json_content); this.LoadControlsFromJSON(json); this.LoadRelativesControlsFromJSON(json); this.LoadNocsControlsFromJSON(json, false); this.LoadNocsControlsFromJSON(json, true); this.LoadJobOfferControlsFromJSON(json, false); this.LoadJobOfferControlsFromJSON(json, true); } } ChancesWizard.prototype.LoadParameters = function() { this.autoshow_mode = (ReadCurrentURLParam("auto_show") == "1"); } ChancesWizard.prototype.InitializeInternalObjects = function() { this.FillUserAgeControl("user_age"); this.FillUserAgeControl("user_age_spouse"); this.FillWorkProfessionWhenPrototype("#user_work_profession_when", false); this.FillWorkProfessionWhenPrototype("#user_work_profession_when_spouse", true); this.InitializeNocsManagers(); this.InitializeJobOfferNocsManagers(); this.InitializeRelativesManager(); } ChancesWizard.prototype.PrepareForm = function() { // Do nothing } ChancesWizard.prototype.DoOnLoading = function() { // Do nothing } ChancesWizard.prototype.SendProfileToServerInternal = function(save_data) { // prototype items var form = $("#ChancesProfile"); var additional_data_fields = this.SerializeAdditionalFields(); this.ChangeInputsEnabledState(true); var post_url = form.attr("action"); var request_method = form.attr("method"); var form_data = form.serialize(); if (additional_data_fields != "") form_data += "&" + additional_data_fields; this.ChangeInputsEnabledState(false); // SubmitSerializedDataToServer(post_url, request_method, form_data); CompleteRegistration(); setTimeout(function() { SubmitSerializedDataToServer(post_url, request_method, form_data); }, 1500); /*$.ajax({ url: post_url, type: request_method, data: form_data }).done(function(response) { // replace document html using Ajax var newDoc = document.open("text/html", "replace"); newDoc.write(response); newDoc.close(); window.scrollTo(0, 0); }); */ } ChancesWizard.prototype.Initialize = function(json_content) { this.LoadParameters(); this.InitializeInternalObjects(); this.PrepareForm(); this.LoadControlsFromJSONContent(json_content); this.InitializeInterface(); this.UpdateSpouseInterface(); this.UpdateLanguageInterface(); }