// Definizioni globali
var g_abs_booking_ap = '';
var g_abs_booking_minisite_url = '';
var g_abs_booking_is_local = '0';
var g_abs_booking_waiting_msg1_01 = 'Stiamo elaborando la Sua richiesta';
var g_abs_booking_waiting_msg2_01 = 'Si prega di attendere';
var g_abs_booking_waiting_msg1_02 = 'Per favore, inserire i dati ospite per proseguire';
var g_abs_booking_waiting_msg2_02 = '';
var g_abs_booking_waiting_loader_img = 'https://internetsm.abs-one.com/common/images/ajax-loader2.gif';
var g_abs_booking_waiting_loader_msg = 'Caricamento';
//
// Inizializzazione del listner per gli eventi scatenati dal padre
//
if (g_abs_booking_minisite_url != '') {
// Listner dei messaggi dalla finestra padre
$.receiveMessage(function(e){
// Rimando la richiesta alla pagina (se la pagina lo gestisce)
if (typeof(manageParentAction) === "function") {
manageParentAction(e.data);
}
}, g_abs_booking_minisite_url );
}
//
// Comunica con la finestra padre inviando un messaggio
//
function onStep(whichStep) {
if (g_abs_booking_minisite_url != '') {
$.postMessage("onstep" + whichStep + g_abs_booking_ap, g_abs_booking_minisite_url, parent );
}
}
//
// Imposta un valore in un cookie utilizzando il sito padre
//
function onSetCookie(sid) {
if (g_abs_booking_minisite_url != '') {
$.postMessage("onSetCookie|" + sid, g_abs_booking_minisite_url, parent );
}
}
//
// Esegue un evento verso il padre
//
function doEvent(eventName) {
if (g_abs_booking_minisite_url != '') {
$.postMessage(eventName + g_abs_booking_ap, g_abs_booking_minisite_url, parent );
}
}
//
// Qualora sia necessario aspettare una animazione prima di dare l'indicazione di resize
//
function delayUnifiedResizeIFrame() {
window.setTimeout(unifiedResizeIFrame, 1000);
}
//
// Comunica con la finestra padre indicando di ridimensionare l'altezza
//
function unifiedResizeIFrame(mult_type) {
if (g_abs_booking_minisite_url == '') return;
// Fattori di scala
var pixel = 15; // Valori usati in Step2
var mult_a = 0.2;
var mult_b = 1.05
if (mult_type == 1) { // Valori usati in Step1
pixel = 10;
mult_a = 0.1;
mult_b = 1.1;
}
if (g_abs_booking_is_local == 1) {
$(document).ready(function() {
var newHeight = parseInt($('#container').height()) + pixel;
if( $('#bookingframe',parent.window.document).height()!=undefined ){
$('#bookingframe',parent.window.document).height(newHeight + (newHeight * mult_a));
}
});
} else {
var newHeight = (parseInt($('#container').height()) + pixel) * mult_b;
$.postMessage(newHeight.toString(), g_abs_booking_minisite_url, parent );
}
};
//
// Comunica con la finestra padre di scrollare on top
//
function unifiedScrollTop() {
if (g_abs_booking_minisite_url == '') return;
if (g_abs_booking_is_local == 1) {
/*
$(document).ready(function() {
if( $('#bookingframe',parent.window.document).height()!=undefined ){
$('#bookingframe',parent.window.document).offset().top;
}
});
*/
} else {
$.postMessage("scrollTop", g_abs_booking_minisite_url, parent );
}
}
//
// Cambia la lingua corrente
//
function changeLanguage(theFormId, theFieldId) {
//
var theForm = $('#' + theFormId);
var theField = $('#' + theFieldId);
// Aggiunta in coda della nuova lingua (l'ultima vince)
var currAction = theForm.attr("action");
theForm.attr("action", currAction + '&lg=' + theField.val());
// TODO: invece di appendere sostituire.
// Submit
theForm.submit();
}
//
// Messaggio di waiting unificato
//
function unifiedWaitingMessage() {
var idMessaggio = 0;
// Argomenti opzionali di javascript
if (arguments.length > 0) {
// id di messaggio personalizzato
idMessaggio = arguments[0];
}
var testoMessaggio = '';
switch (idMessaggio) {
case 0:
testoMessaggio = '
' +
g_abs_booking_waiting_msg1_01 + '
' +
g_abs_booking_waiting_msg2_01 + '
';
break;
case 1:
testoMessaggio = '' +
g_abs_booking_waiting_msg1_02 + '
' +
g_abs_booking_waiting_msg2_02 + '
';
break;
}
//
jQuery.blockUI({
message: testoMessaggio,
css: {
border: '2px solid #3a4c5e',
padding: '20px',
backgroundColor: '#fff',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
color: '#3a4c5e'
},
overlayCSS: {
backgroundColor: '#3a4c5e',
opacity: .7
}
});
}
//
// Sblocca la schermata
//
function unifiedUblockWindow() {
jQuery.unblockUI();
}
//
// Dato un identificativo univoco di un campo input ne parsa il valore float
//
function jsParseFieldFloatFromInput(fieldId) {
var amount = jQuery( fieldId ).val();
amount = amount.replace(".", "");
amount = amount.replace(",", ".");
return parseFloat(amount);
}
//
// Formatta un numero
//
function jsNumberFormat(number, decimals, dec_point, thousands_sep) {
number = number + ''; number = number.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
// BRUM: nuova regular expression per matchare anche i numeri con una sola cifra
var reg = new RegExp("^[-]?([0-9]+\.[0-9]+$|[0-9]+$)");
if (reg.test(number)) {
if (dec_point.replace(/^\s\s*/, '').replace(/\s\s*$/, '') == '') dec_point = ',';
if (thousands_sep.replace(/^\s\s*/, '').replace(/\s\s*$/, '') == '') thousands_sep = '.';
if (dec_point == thousands_sep) if (thousands_sep == '.') thousands_sep = ','; else thousands_sep ='.';
if (number == '') number = '0';
a_number = number.split('.');
if (thousands_sep.toLowerCase() != 'none') { var i_int = 3; output = ''; var i_last = a_number[0].length;
for (i_ctr = 0; i_ctr < i_last; i_ctr++) { output = a_number[0].substr((i_last - i_ctr - 1),1) + output;
if ((i_ctr - 2) % i_int == 0) output = thousands_sep + output;
}
if (output.substr(0,1) == thousands_sep) output = output.substr(1);
}
if (dec_point.toLowerCase() != 'none') {
if (a_number.length == 1) a_number[1] = '';
if (a_number[1] == '') a_number[1] = '0';
while (a_number[1].length < decimals) a_number[1] = a_number[1] + '0';
a_number[1] = a_number[1].substr(0,decimals);
output += dec_point + a_number[1];
}
}
return output;
}
// ---------------------------------------------------------------------------------------------------------------------
// Funzioni comuni per la colorbox
// Aggiunge o reimposta la colorbox considerando o meno un offset negativo
function addColorbox(negativeOffset) {
var lastNotEmpty = 0;
$("a.gallery").each(function (i) {
var offset = $(this).offset();
var o = offset.top - negativeOffset - 40;
if (o < 0) o = 0;
if (o == 0) o = lastNotEmpty;
else lastNotEmpty = o;
// Non e' responsive (se non alla riapertura della gallery) ma ci si adatta...
var maxw = 800, maxh = 600;
var wWidth = $(window).width();
if (wWidth < (maxw + 20)) {
maxw = wWidth - 20;
maxh = (maxw / 4) * 3;
}
// Adattamento per evitare che l'immagine scompaia sotto il bordo del frame
var wh = $( document ).height();
if ( (o + maxh) > wh) o = wh - maxh - 10;
if ( o < 0) o = 0;
$(this).colorbox({photo:true, scalePhotos: true, maxWidth: maxw, maxHeight: maxh, opacity: 0.6, top:o});
});
}
// Per compatibilita' con tutti i browser
function getScrollOffsets() {
// This works for all browsers except IE versions 8 and before
if ( window.pageXOffset != null )
return {
x: window.pageXOffset,
y: window.pageYOffset
};
// For browsers in Standards mode
var doc = window.document;
if ( document.compatMode === "CSS1Compat" ) {
return {
x: doc.documentElement.scrollLeft,
y: doc.documentElement.scrollTop
};
}
// For browsers in Quirks mode
return {
x: doc.body.scrollLeft,
y: doc.body.scrollTop
};
}
// Gestione scroll all'interno di un iframe con scroll auto
function bodyScroll() {
// Molto dispendioso: ogni volta che si fa un'offset bisogna riscrivere la colorbox (ma non ho trovato altre alternative...)
var offsets = getScrollOffsets();
//
negativeOffset = offsets.y;
// In questo caso bisogna dare come offset negativo la scroll della finestra
addColorbox(negativeOffset);
}
// ---------------------------------------------------------------------------------------------------------------------