
(function($){
$.ba = $.ba || {};
$.ba.thickbox = $.ba.thickbox || {};
$.ba.thickbox.defaultOptions = {
cssClass	:	"",
showLoading	:	true,
loadingImage	:	"/cms/global/assets/images/applications/flightselling/twizzle.gif",
macFFBgHack	:	"/cms/global/assets/images/global/miscellaneous/general_page_images/macFFBgHack.png",
bgiframesrc	:	"/travel/ba18.jsp/JBATBOXBGIFRAME",
allowScrolling	:	false,
loaderZIndex	:	103,
boxZIndex	:	102,
overlayZIndex	:	100,
overlayOpacity	:	0.55,
googleAnalyticsIframeFix:	true,
minimumHorizontalMargin	:	60,
minimumVerticalMargin	:	60,
boxPadding	:	0,
extraWidth	:	0,
extraHeight	:	0,
extraIframeWidth	:	29,
extraIframeHeight	:	17,
adjustIframeForScrollbars	:	true,
buttonBarHeight	:	39,
boxCss	:	{},
loaderCss	:	{},
buttonBarCss	:	{},
captionCss	:	{},
width	:	600,
height	:	400,
language	:	"en",
texts	:	{
close:	"close",
closeTitle:	"close",
next:	"next",
nextTitle:	"next",
previous:	"previous",
previousTitle:	"previous"
},
imageExtensions	:	['.jpg','.jpeg','.png','.gif','.bmp'],
preloadImages	:	true,
templates	:	{
caption: "<div id='%id%'>%caption%</div>",
previousButton: "<div class='lbutton secondary'><a class='plain' href='#' id='%id%' title='%title%'>%text%</a></div>",
nextButton: "<div id='batbox_nextWrapper' class='button secondary right'><a class='arrow' href='#' id='%id%' title='%title%'>%text%</a></div>",
closeButton: "<div class='button secondary right'><a class='plain noWrap' href='#' id='%id%' title='%title%'>%text%</a></div>",
buttonBar: "<div id='%id%' style='width:%width%px'><div id='%id%Centre'></div></div>",
galleryIndex : "<div id='%id%'>%index%/%length%</div>"
},
onshow	:	function(options) {},
onsetup	:	function(options) {}
}
$(function($){
$.ba.thickbox.defaultOptions.language = $("form[name='nav_form'] input[name='language']").attr("value") || $.ba.thickbox.defaultOptions.language;
$.get("/cms/global/scripts/lib/jQuery_plugins/resources/jquery.ba.thickbox_" + $.ba.thickbox.defaultOptions.language + ".js",function(data){
var texts = $.ba.thickbox.defaultOptions.texts;
try {
eval("texts={" + data.match(/^.*?=.*?$/gm).join("\n").replace(/^(.*?)=/gm,'$1:').replace(/(.*?);$/gm,'$1,').replace(/,$/,'') + "}")
} catch(e) {}
$.extend($.ba.thickbox.defaultOptions.texts, texts);
});
});
$.browser.msie6 =
$.browser.msie
&& /MSIE 6\.0/i.test(window.navigator.userAgent)
&& !/MSIE 7\.0/i.test(window.navigator.userAgent);
$.browser.msie7 =
$.browser.msie
&& /MSIE 7\.0/i.test(window.navigator.userAgent);
var imgLoader = new Image();
imgLoader.src = $.ba.thickbox.defaultOptions.loadingImage;
$.extend($.ba.thickbox, {
gallery : function ( selector, batboxes, options ) {
for ( var k in batboxes ) {
$(k).batbox( $.extend({}, (options || {}), batboxes[k], {gallerySelector: selector}) );
}
},
showIframe : function() {
$("#batbox_window").css({display:"block"});
hideLoading();
},
closeFromBGIFrame : function() {
$("#batbox_overlay").click();
},
close : function() {
$.ba.thickbox.closeBox(false);
},
closeBox : function(keepOpenForGallery) {
$("#batbox_closeButton, #batbox_previousButton, #batbox_nextButton").unbind("click");
if (!keepOpenForGallery) {
$("#batbox_window").fadeOut("fast",function(){
$('#batbox_window iframe').trigger("unload").unbind();
$('#batbox_window,#batbox_overlay').trigger("unload").unbind().remove();
});
$("#batbox_load").remove();
$.ba.thickbox.resetScrolling(true);
}
restore();
return false;
},
resetScrolling : function ( allowScrolling ) {
if ( allowScrolling ) {
if ( $.browser.msie6 ) {
$("body","html").css({height: "auto", width: "auto"});
$("html").css("overflow","");
}
} else {
if ( $.browser.msie6) {
$("body","html").css({height: "100%", width: "100%"});
$("html").css("overflow","hidden");
}
}
},
show :	function(options){
if(options.inline){
$("#batbox_content").append($('#' + options.inlineId).children());
$("#batbox_window").unload(function () {
moveContentBack(options);
});
$("#batbox_window").css({display:"block"});
} else {
if($.browser.safari){
$("#batbox_window").css({display:"block"});
}
}
setAbsoluteOverlaySize(options);
options._element.blur();
if ( options._type != "iframe" )	{
hideLoading();
options.onshow(options);
}
},
setup : function(options) {
backup();
crunch(options);
setupBox(options);
showLoading(options);
showOverlay(options);
options.onsetup(options);
},
init : {
image : function(options) {
options._type="image";
options.inline = true;
options.inlineId = options.url.replace(/[^a-zA-Z0-9]/g,"_");
if ($("#" + options.inlineId).length == 0) {
$("body").append("<div style='display:none' id='" + options.inlineId + "'><img src='" + options.url + "'/></div>");
}
$.ba.thickbox.setup(options);
$.ba.thickbox.show(options);
},
inline : function(options) {
options._type="inline";
options.inline = true;
$.ba.thickbox.setup(options);
$.ba.thickbox.show(options);
},
iframe : function(options) {
options._type="iframe";
options.iframe = true;
$.ba.thickbox.setup(options);
$.ba.thickbox.show(options);
},
flash : function(options) {
options._type="flash";
$.ba.thickbox.setup(options);
var alternativeDIV='batboxflash';
$(document.body).append("<div class='batboxdiv' style='display:none'><div id='" + alternativeDIV + "'></div></div>");
if ( typeof(writeSwf) != "undefined" && $.isFunction(writeSwf) ) {
writeSwf(options._baseurl,options._crunch.content.width,options._crunch.content.height,'',options._querystring.replace(/&/,",").replace(/=/,":"),alternativeDIV);
} else {
$("#" + alternativeDIV).html("<p>outputSwf_v3a.js is not included</p>");
}
if ( options.iframe ) {
options.iframeHtml = $("#batboxdiv").html();
} else {
options.inline = true;
options.inlineId = alternativeDIV;
}
$.ba.thickbox.show(options);
}
}
});
function backup() {
$.ba.thickbox.backup = $.ba.thickbox.backup || {};
$.ba.thickbox.backup.document = {
onkeyup : document.onkeyup,
onkeydown : document.onkeydown
};
}
function restore() {
if ( $.ba.thickbox.backup ) {
if ( $.ba.thickbox.backup.document ) {
$.extend(document,$.ba.thickbox.backup.document);
}
}
}
function crunch(options) {
var width = options.width;
var height = options.height;
if ( options._type == "image" ) {
var img = new Image();
img.src = options.url;
width = img.width;
height = img.height + options.buttonBarHeight;
}
var de = document.documentElement;
options._screenwidth = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
options._screenheight = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
options._fits = true;
var maxWidth = options._screenwidth-options.minimumHorizontalMargin-options.extraWidth;
var maxHeight = options._screenheight-options.minimumVerticalMargin-options.extraHeight;
if ( options._type == "image" && (width > maxWidth || height > maxHeight ) ) {
options.allowScrolling = true;
}
if ( (!options.allowScrolling && width > maxWidth) || width == "max" )
{
width = maxWidth;
} else if ( options.allowScrolling && width > maxWidth ) {
options._fits = false;
}
if ( (!options.allowScrolling && height > maxHeight) || height == "max")
{
height = maxHeight;
} else if ( options.allowScrolling && height > maxHeight ) {
options._fits = false;
}
options._realwidth = width;
options._realheight = height;
var result = {};
var extrawidth = (options._type == "iframe" && options.adjustIframeForScrollbars) ? options.extraIframeWidth : options.extraWidth;
var extraheight = (options._type == "iframe" && options.adjustIframeForScrollbars) ? options.extraIframeHeight : options.extraHeight;
result.iframe = {};
result.iframe.width = options._realwidth + extrawidth;
result.iframe.height = options._realheight - options.buttonBarHeight + extraheight;
result.box = {};
result.box.width = options._realwidth + extrawidth;
result.box.height = options._realheight + extraheight;
result.content = {};
result.content.width = options._realwidth;
result.content.height = options._realheight - options.buttonBarHeight;
result.buttonBarWidth = result.content.width - (options.boxPadding > 0? options.boxPadding : 10 ) * 2;
if (imgLoader.src != options.loadingImage ) {
imgLoader.src = options.loadingImage;
}
result.loader = {};
result.loader.leftrightpadding = (options.boxPadding + result.box.width - imgLoader.width)/2;
result.loader.bottompadding = result.loader.toppadding = (options.boxPadding + result.content.height - imgLoader.height)/2;
if (result.loader.toppadding > options._screenheight/2) {
result.loader.bottompadding = result.loader.bottompadding + result.loader.toppadding - options._screenheight/2;
result.loader.toppadding = options._screenheight/2;
}
result.loader.css = {
padding: Math.floor(result.loader.toppadding) + "px " + Math.floor(result.loader.leftrightpadding) + "px " + Math.ceil(result.loader.bottompadding) + "px " + Math.ceil(result.loader.leftrightpadding) + "px"
}
result.box.css = {
"margin-left"	:	"-" + parseInt((result.box.width / 2),10) + "px",
"width"	:	result.box.width + "px"
};
if ( options._fits && !($.browser.msie6)) {
$.extend(result.box.css, {
"margin-top"	:	"-" + parseInt((result.box.height / 2),10) + "px"
});
}
options._crunch = result;
}
function showLoading(options) {
if ( options.showLoading ) {
$("#batbox_load").remove();
$("#batbox_window").prepend("<div id='batbox_load' style='display:none'><img src='"+imgLoader.src+"' /></div>");
var loadercss = $.extend({
display: "block",
position: "absolute",
height: imgLoader.height,
width: imgLoader.width,
"z-index": options.loaderZIndex
},options._crunch.loader.css,options.loaderCss);
$("#batbox_load").css(loadercss);
}
}
function hideLoading() {
$("#batbox_load").remove();
}
function showOverlay(options) {
$("#batbox_overlay").remove();
$("body").append("<div id='batbox_overlay' style='display:none'></div>");
$("#batbox_overlay").bgiframe({ src: options.bgiframesrc });
if(options.modal){
$("#batbox_overlay").unbind();
document.onkeyup="";
} else {
$("#batbox_overlay").click($.ba.thickbox.close);
document.onkeyup = function(e){
if (e == null) {
keycode = event.keyCode;
} else {
keycode = e.which || e.keyCode;
}
if(keycode == 27){
$.ba.thickbox.close();
}
};
}
if(detectMacXFF()){
$("#batbox_overlay").css( {
background: "url(" + options.macFFBgHack + ") repeat"
});
}else{
$("#batbox_overlay").css({
filter: "alpha(opacity=" + Math.floor(options.overlayOpacity*100) + ")",
"-moz-opacity": options.overlayOpacity,
opacity: options.overlayOpacity
});
}
var overlaycss = {
position: "fixed",
display: "block",
"z-index": options.overlayZIndex,
top: "0px",
left: "0px",
height:"100%",
width:"100%"
};
$("#batbox_overlay").css(overlaycss);
setAbsoluteOverlaySize(options);
}
function setupBox( options ) {
$.ba.thickbox.resetScrolling(options.allowScrolling);
var cssClasses = $.trim( (options._type ? options._type : "") + " " + (options.cssClass?options.cssClass:"") );
$("#batbox_window").remove();
$("body").append("<div id='batbox_window'" + (cssClasses!="" ? " class='" + cssClasses + "'" : "") + " style='display:none'></div>");
var windowcss = $.extend({
padding: options.boxPadding + "px",
display: "none",
"z-index": options.boxZIndex,
"text-align": "left",
left: "50%"
}, options._crunch.box.css, options.boxCss);
if ( options.allowScrolling && !options._fits ) {
$.extend(windowcss, {
position: "absolute",
top: (document.body.scrollTop || document.documentElement.scrollTop) + 10
});
} else if ( options.allowScrolling && !$.browser.msie6 ) {
$.extend(windowcss, {
position: "absolute",
"margin-top": "0px",
top: (document.body.scrollTop || document.documentElement.scrollTop) + ((options._screenheight - options._crunch.box.height) / 2)
});
} else {
if ($.browser.msie6) {
var margin = 0 - options._realheight / 2 + (document.documentElement && document.documentElement.scrollTop || document.body.scrollTop);
$.extend(windowcss,{
position: "absolute",
top: "50%",
"margin-top": (margin < options._screenheight/-2 ? 0 : margin) + 'px'
});
} else {
$.extend(windowcss, {
top: "50%",
position: (options.allowScrolling?"absolute":"fixed")
});
}
}
$("#batbox_window").css(windowcss);
if(options.iframe){
$("#batbox_iframeContent").remove();
var srcUrl = options.iframeHtml ? options.loadingImage : options.url;
var iframeName = "batbox_iframeContent"+Math.round(Math.random()*1000);
$("#batbox_window").append("<iframe onload='$.ba.thickbox.showIframe()' frameborder='0' hspace='0' src='"+srcUrl+"' id='batbox_iframeContent' name='" + iframeName + "' style='width:" + options._crunch.iframe.width + "px;height:" + options._crunch.iframe.height + "px;' > </iframe>");
if (options.iframeHtml) {
frames[iframeName].document.open();
frames[iframeName].document.write(options.iframeHtml);
frames[iframeName].document.close();
}
if ( options.googleAnalyticsIframeFix ) {
$("#batbox_window").css({display:"block"});
}
}else{
if($("#batbox_window").css("display") != "block"){
$("#batbox_window").append("<div id='batbox_content' style='width:"+options._crunch.content.width+"px;height:"+options._crunch.content.height+"px'></div>");
}
}
setupButtonBar(options);
}
function setupButtonBar(options) {
if ( !options.modal || options.caption != "" || options.gallerySelector ) {
$("#batbox_window").append( templateInstance ( options.templates.buttonBar, {
id: 'batbox_buttonbar',
width: options._crunch.buttonBarWidth
}));
$("#batbox_buttonbar").css( $.extend({},options.buttonBarCss) );
if ( options.gallerySelector ) {
var gallery = $( $.trim(options.gallerySelector) + ":not(#batbox_window *)" );
var currentIndex = $.inArray(options._element,gallery);
if ( currentIndex > 0 ) {
$("#batbox_buttonbar").prepend( templateInstance ( options.templates.previousButton, {
id: 'batbox_previousButton',
title: options.texts.previousTitle,
text: options.texts.previous
}));
$("#batbox_previousButton").click(function(){
moveContentBack(options);
$.ba.thickbox.closeBox(true);
$(gallery[currentIndex - 1]).click();
return false;
});
}
if ( currentIndex < gallery.length - 1 ) {
$("#batbox_buttonbar").prepend( templateInstance ( options.templates.nextButton, {
id: 'batbox_nextButton',
title: options.texts.nextTitle,
text: options.texts.next
}));
$("#batbox_nextButton").click(function(){
moveContentBack(options);
$.ba.thickbox.closeBox(true);
$(gallery[currentIndex + 1]).click();
return false;
});
}
if ( gallery.length > 1 ) {
$("#batbox_buttonbarCentre").append( templateInstance ( options.templates.galleryIndex, {
id: 'batbox_galleryIndex',
index: currentIndex + 1,
length: gallery.length
}));
}
}
if ( options.caption != "" ) {
$("#batbox_buttonbarCentre").append( templateInstance ( options.templates.caption, {
id: 'batbox_caption',
caption: options.caption
}));
$("#batbox_caption").css( $.extend({
"max-width" : options._crunch.content.width - $("#batbox_closeButton").width() - $("#batbox_nextButton").width() - $("#batbox_previousButton").width() - options.boxPadding*2
},options.captionCss) );
}
if ( !options.modal ) {
$("#batbox_buttonbar").append( templateInstance ( options.templates.closeButton, {
id: 'batbox_closeButton',
title: options.texts.closeTitle,
text: options.texts.close
}));
$("#batbox_closeButton").click(function(){
$.ba.thickbox.close();
return false;
});
}
}
}
function contains(array, item) {
return $.inArray(item, array) > -1;
}
function templateInstance ( template, variables ) {
var result = template;
for ( var k in variables ) {
result = result.replace( new RegExp("%" + k + "%", "g"), variables[k] );
}
return result;
}
function moveContentBack(options) {
$('#' + options.inlineId).append( $("#batbox_content").children() );
}
function setAbsoluteOverlaySize(options) {
var ff = navigator.userAgent.match(/Firefox\/([\d\.]+)/);
var isff2 = false;
if ( ff && ff.length > 1 ) {
isff2 = parseInt(ff[1]) < 3;
}
if ($.browser.msie6 || isff2) {
var boxbottom = parseInt($("#batbox_window").css("top")) + $("#batbox_window").height() + parseInt($("#batbox_window").css("border-top-width")) + parseInt($("#batbox_window").css("border-top-width")) + options.minimumVerticalMargin;
var docheight = (document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight);
$("#batbox_overlay").css({
position: "absolute",
height: (boxbottom > docheight ? boxbottom : docheight) + 'px'
});
}
}
function detectMacXFF() {
var userAgent = navigator.userAgent.toLowerCase();
if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) {
return true;
}
}
function splitUrl(url) {
var urlparts = url.split("?");
var _baseurl = urlparts.shift();
return {
_baseurl: _baseurl,
_querystring: (urlparts.length > 0) ? urlparts.join("?") : "",
_extension: (""+_baseurl.match(/\.[^\.]+$/)).toLowerCase()
};
}
var preloaders = [];
$.fn.batbox = function(boxoptions) {
boxoptions = boxoptions || {};
var preloadoptions = $.extend({},$.ba.thickbox.defaultOptions,boxoptions);
if ( preloadoptions.preloadImages ) {
this.each(function(){
var url = (boxoptions && boxoptions.url) || this.href;
var options = $.extend({url:url}, $.ba.thickbox.defaultOptions, (boxoptions||{}), splitUrl(url));
if ( contains(options.imageExtensions,options._extension) ) {
var imgLoader = new Image();
imgLoader.src = url;
preloaders[preloaders.length]=imgLoader;
}
});
}
this.click(function(e){
var options = $.extend({_element: this,_pageX:e.pageX, _pageY:e.pageY},$.ba.thickbox.defaultOptions,boxoptions);
options.caption = typeof(options.caption)!="undefined" ? options.caption : options._element.title || options._element.alt || "";
if (options.caption=="" && !boxoptions.buttonBarHeight && options.modal && !options.gallerySelector) {
options.buttonBarHeight = 0;
}
if (options.gallerySelector) {
options.cssClass = $.trim((options.cssClass || "" ) + " gallery");
}
if ( options.inline === true ) {
$.ba.thickbox.init.inline(options);
} else {
options.url = options.url || this.href;
$.extend(options,splitUrl(options.url));
var initFunc = null;
if ( options.init ) {
if ( $.isFunction(options.init) ) {
initFunc = options.init;
} else {
initFunc = $.ba.thickbox.init[options.init];
}
initFunc(options);
} else if ( contains(options.imageExtensions,options._extension) ) {
$.ba.thickbox.init.image(options);
} else {
if ( options._extension == ".swf" ) {
$.ba.thickbox.init.flash(options);
} else {
$.ba.thickbox.init.iframe(options);
}
}
}
return false;
});
}
})(jQuery);
if ( typeof(tb_remove) == "undefined" ) {
var tb_remove = function() {
jQuery.ba.thickbox.close();
}
}

