(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 "
" + alertString + "
"
},
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("" + methods.getTranslate("resValidacionEdadDeNinnoNo", "Por favor digite las edades de los niños", settings.productBox) + "
");
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);