(function ($) { var defaults = { maxRooms: 4, maxADT: 4, minAdt: 1, maxCHD: 8, config: [], ageChdMax: 11, productBox: "", maxAcomodation: 9 }; var methods = { init: function (options) { if ($(this).length > 0) { $(this).setTemplateURL(("https://www.travelsecurity.cl/hubfs/Desarrollo/Buscadores/IdeasSearchBox/Templates/PassengerBox.htm"), null, { filter_data: false }).processTemplate({}); settings = $.extend({}, defaults, options); methods.setSettings(this, settings); methods.initEnvents(this); if (this[0].id == "FlightsInfo") { methods.hideControlsRoom(this); } } }, initEnvents: function (obj) { $(".IfPassInfo", obj[0]).on("click", methods.togglePopover); $(".ifPassAddRoom", obj[0]).on("click", methods.addRoom); $(".ifPassRemRoom", obj[0]).on("click", methods.removeRoom); $(".ifPassAplicar", obj[0]).on("click", methods.ApplyPassenger); methods.initEventsPass(obj[0]); }, hideControlsRoom: function (obj) { $(".IfPassRoomCtrl", obj).hide(); }, initEventsPass: function (obj) { $(".IfPassAdtAdd", obj).unbind("click").on("click", methods.addAdt); $(".IfPassAdtRem", obj).unbind("click").on("click", methods.removeAdt); $(".IfPassChdAdd", obj).unbind("click").on("click", methods.addChd); $(".IfPassChdRem", obj).unbind("click").on("click", methods.removeChd); }, addAdt: function (obj) { methods.getSettings(obj); var context = $(obj.target).closest(".IfPassRoomAdt"); var adt = $(".IfPassAdts", context).val(); if (adt >= 0 && adt <= settings.maxADT) { var all = methods.getRoom(context.closest(".IfPassRoom")); if ((all.adts + all.chds) < settings.maxAcomodation) { $(".IfPassAdts", context).val(parseInt($(".IfPassAdts", context).val()) + 1); } else { var contextFull = $(obj.target).closest(".IfPassContainer"); var msg = methods.getTranslate("B2C_PassengerAlertMaxAcomodation", "No se permiten busquedas de mas de %1 pasajeros.", settings.productBox); msg = msg.replace("%1", settings.maxAcomodation); $("div.IfPassMessage", contextFull).html(methods.msgAlert(msg)); } } }, removeAdt: function (obj) { methods.getSettings(obj); var context = $(obj.target).closest(".IfPassRoomAdt"); var adt = parseInt($(".IfPassAdts", context).val()) - 1; if (adt >= settings.minAdt) { $(".IfPassAdts", context).val(adt); } }, addChd: function (obj) { methods.getSettings(obj); var context = $(obj.target).closest(".IfPassRoomChd"); var chd = $(".IfPassChds", context).val(); if (chd >= 0 && chd < settings.maxCHD) { var all = methods.getRoom(context.closest(".IfPassRoom")); if ((all.adts + all.chds) < settings.maxAcomodation) { $(".IfPassChds", context).val(parseInt($(".IfPassChds", context).val()) + 1); methods.changeAgeChd(obj, chd); } else { var contextFull = $(obj.target).closest(".IfPassContainer"); var msg = methods.getTranslate("B2C_PassengerAlertMaxAcomodation", "No se permiten busquedas de mas de %1 pasajeros.", settings.productBox); msg = msg.replace("%1", settings.maxAcomodation); ; $("div.IfPassMessage", contextFull).html(methods.msgAlert(msg)); } } }, msgAlert: function (alertString) { return "" }, changeAgeChd: function (obj, indexChd) { methods.getSettings(obj); var context = $(obj.target).closest(".IfPassRoom"); var cantDiv = context.find(".IfPassRoomAges"); var agesOtp = ''; for (var i = 1; i <= settings.ageChdMax; i++) { agesOtp += ''; } var transl = methods.getTranslate("B2C_PassengerLabelChdAge", "", settings.productBox); transl = transl.replace("%1", parseInt(indexChd) + 1); var selectHtml = '
'; if (transl.indexOf("%2") != -1) { transl = transl.replace("%2", selectHtml); } else { transl += selectHtml; } cantDiv.append(transl); }, getTranslate: function (resourceName, strDefault, productBox) { if (typeof (GObjTraduccion[resourceName + "_" + productBox]) != "undefined") { return GObjTraduccion[resourceName + "_" + productBox]; } if (typeof (GObjTraduccion[resourceName]) != "undefined") { return GObjTraduccion[resourceName]; } return strDefault; }, removeChd: function (obj) { methods.getSettings(obj); var context = $(obj.target).closest(".IfPassRoom"); var chd = $(".IfPassChds", context).val(); if (chd > 0 && chd <= settings.maxCHD) { $(".IfPassChds", context).val(parseInt($(".IfPassChds", context).val()) - 1); methods.removeAgeChd(obj); } }, removeAgeChd: function (obj) { var context = $(obj.target).closest(".IfPassRoom"); var cantDiv = context.find(".IfPassRoomAges"); var contTradu = cantDiv.find(".IfPassAgesCont"); if (contTradu.length > 0) { cantDiv.find(".IfPassAgesCont").last().remove(); } else { cantDiv.find("select").last().remove(); } }, addRoom: function (obj) { methods.getSettings(obj); var context = $(obj.target).closest(".IfPassContainer"); var room = $(".IfPassRoom", context); var crl = $("span.ifPassRemRoom", context); if (room.length < settings.maxRooms) { var roomClone = $(room[0]).clone(); $(crl.last()).remove(); roomClone.find("h4.IfPassRoomTitle").remove(); roomClone.prepend(""); roomClone.prepend("

" + methods.getTranslate("resHabitacion", "Habitación.", settings.productBox) + " " + (room.length + 1) + "

"); if ($(room[0]).find(".IfPassRoomTitle").length == 0) { $(room[0]).prepend("

" + methods.getTranslate("resHabitacion", "Habitación.", settings.productBox) +" 1

"); } $(room.parent()).append(roomClone); methods.initEventsPass(context); methods.addCrlRoom(context); } }, removeRoom: function (obj) { methods.getSettings(obj); var context = $(obj.target).closest(".IfPassContainer"); var room = $("div.IfPassRoom", context); if (room.length > 1) { $(room.last()).remove(); room = $("div.IfPassRoom", context); if (room.length > 1) { room.last().find("h4.IfPassRoomTitle").remove(); room.last().prepend("

" + methods.getTranslate("resHabitacion", "Habitación.", settings.productBox) + " " + (room.length) + "

" + methods.getTranslate("resEliminar", "Eliminar.", settings.productBox) + "
"); methods.addCrlRoom(context); } } }, ApplyPassenger: function (obj) { methods.getSettings(obj); var context = $(obj.target).closest(".IfPassContainer"); var validator = methods.showInfoPasenger(context); if (validator) { $(".IfPassPopover", context).toggle(); $("div.IfPassMessage", context).html(""); } }, addCrlRoom: function (obj) { $(".ifPassRemRoom", obj).on("click", methods.removeRoom); }, showInfoPasenger: function (obj) { methods.getSettings(obj); var all = methods.getRoomsArray(obj); var validator = true; for (var i = 0; i < all.ages.length; i++) { if (all.ages[i] == "-1") { validator = false; } } if (validator) { $(".IfPassInfo", obj).html("" + methods.getTranslate("resAdultos", "Adultos", settings.productBox) + " : " + all.adts + methods.getTranslate("resNinos", "Niños", settings.productBox) + " : " + all.chds + ""); return true; } else { var context = $(obj).closest(".IfPassContainer"); $("div.IfPassMessage", context).html(""); return false; } }, getRoomsArray: function (obj) { var room = $("div.IfPassRoom", obj); var rooms = room.length; var adts = 0; var chds = 0; for (var i = 0; i < room.length; i++) { adts = adts + parseInt($(room[i]).find("input.IfPassAdts").val()); chds = chds + parseInt($(room[i]).find("input.IfPassChds").val()); } var ages = []; var agesComplement = []; var options = $(".IfPassRoomAges", obj).find("select"); for (var ii = 0; ii < options.length; ii++) { ages.push($(options[ii]).val()); } return { adts, chds, ages, rooms }; }, getRoom: function (obj) { var room = $(obj).closest(".IfPassRoom"); var adts = 0; var chds = 0; for (var i = 0; i < room.length; i++) { adts = adts + parseInt($(room[i]).find("input.IfPassAdts").val()); chds = chds + parseInt($(room[i]).find("input.IfPassChds").val()); } var ages = []; var options = $(".IfPassRoomAges", obj).find("select"); for (var ii = 0; ii < options.length; ii++) { ages.push($(options[ii]).val()); } return { adts, chds, ages }; }, getRoomsArrayForHab: function (obj) { var room = $("div.IfPassRoom", obj); var rooms = room.length; var adts = []; var chds = []; for (var i = 0; i < room.length; i++) { adts.push($(room[i]).find("input.IfPassAdts").val()); chds.push($(room[i]).find("input.IfPassChds").val() != 0 ? ($(room[i]).find("input.IfPassChds").val() +"-") : "0-"); var options = $(".IfPassRoomAges", $(room[i])).find("select"); for (var ii = 0; ii < options.length; ii++) { chds.push($(options[ii]).val()); if (ii < options.length - 1) { chds.push(";"); } } if (i < room.length - 1) { chds.push(","); } } return { adts, chds }; }, getRoomsInfo: function () { return methods.getRoomsArray(this); }, getRoomsInfoDown: function () { return methods.getRoomsArrayForHab(this); }, togglePopover: function (obj) { var context = $(obj.target).closest(".IfPassContainer"); $(".IfPassPopover", context).toggle(); }, setSettings: function (obj, settings) { var context = $(".IfPassContainer",obj); $(context).data(settings); }, getSettings: function (obj) { var context = $(obj.target).closest(".IfPassContainer"); settings = $(context).data(); if (settings == null) { settings = $(obj).data(); } }, } $.fn.IFPassengerBox = function (method) { try { if (methods[method]) { return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); } else if (typeof method === 'object' || !method) { return methods.init.apply(this, Array.prototype.slice.call(arguments)); } else { $.error('Method ' + method + ' does not exist on jQuery.IFPassengerBox'); return; } } catch (e) { console.log(e); return; } }; })(jQuery);