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, "Menos de 20 anos de idade", 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 ? "Parou de trabalhar em " : "Parou de trabalhar em "; this.AddSelectOptions(control, option_prefix + i + " ano", i); } } ChancesWizard.prototype.FillWorkProfessionWhenPrototype = function(control, is_spouse) { var start_year = this.GetWorkProfessionStartYear(); var end_year = this.GetWorkProfessionEndYear(); var option_text = is_spouse ? "Trabalhando no momento " : "Você está trabalhando atualmente "; 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() ? "Você ou seu cônjuge têm parentes que vivem no Canadá?" : "Você tem parentes que vivem no Canadá?"; $("#has_relatives_label").html(temp_html); // relatives relationship label temp_html = this.HasSpouse() ? "Parentesco em relação a você ou a seu casal:" : "Parentesco:"; temp_html = "" + temp_html + ""; $("[name='user_relatives_relationship_label']").each(function(){ $(this).html(temp_html); }); // children temp_html = this.HasSpouse() ? "Você ou seu cônjuge têm filhos com menos de 22 anos de idade?" : "Você tem filhos com menos de 22 anos de idade?"; $("#has_children_label").html(temp_html); // criminal records $("#criminal_record_label").html(this.SpouseChildrenText("Você tem antecedentes criminais?", "Você ou seu cônjuge têm antecedentes criminais", "Você ou seus filhos têm antecedentes criminais", "Você ou seus filhos têm antecedentes criminais", "Você ou seu cônjuge ou seus filhos têm um registro criminal")); // illness $("#illnes_label").html(this.SpouseChildrenText("Você tem uma doença grave ou deficiência", "Você ou seu cônjuge tem uma doença grave ou deficiência", "Você ou seus filhos têm uma doença grave ou deficiência", "Você ou seu cônjuge ou seus filhos têm uma doença grave ou deficiência")); // deportation $("#deportation_label").html(this.SpouseChildrenText("Você tem deportações de outros países", "Você ou seu cônjuge têm deportações de outros países", "Você ou seus filhos têm deportações de outros países", "Você ou seu cônjuge ou seus filhos têm deportações de outros países")); } 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 = "Desculpe, você tem que selecionar uma profissão da lista suspensa que é mostrada quando você entra.\n\n"; message_str += "Se nenhuma opção adequada estiver disponível, tente reformular o nome da ocupação ou digite um sinônimo.\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(); }