/*
 * @projectDescription: jQuery plugin used to simplify lightbox creation
 * @version: 1.0
 */
 
(function($){$.fn.hsbclightbox=function(options){debug={log:function(){if(options.debug){if(window['console']!==undefined){console.log(arguments);}}}};debug.log('launched lightbox plugin');options=$.extend({minimumcam:'0',style:'detail',opacity:0.8,fadeduration:0,debug:false},options);options.loggedon=function(){var a=false;$('div#onlineBanking a').each(function(){if($(this).attr('title')=="Log off"){a=true;}});return a;}();switch(options.style){case'detail':options.divid='hsbclightboxDetails';break;case'product':options.divid='hsbclightboxProduct';break;}
var templates={detail:'<div class="jqmOverlay"></div><div id="hsbclightboxDetails" class="jqmWindow"><div class="lightview" style="width:540px;padding:30px 40px 40px"><div class="close"><a href="#" title="Close overlay window"><span></span></a></div><div class="grid grid_8" style="width:540px;padding:0;"><a class="top"></a><div class="column shaded" style="padding:0;margin:0 0 10px;width:540px"></div></div><div class="close closeHidden"><a href="#" title="Close overlay window">Close overlay window</a></div></div></div>',product:'<div class="jqmOverlay"></div><div id="hsbclightboxProduct" class="jqmWindow"><div class="lightview" style="width:980px;padding:20px 0 18px"><div id="closeModalProduct" class="close"><a href="#" title="Close overlay window"><span></span></a></div><div class="lightviewHeading" style="border-bottom:8px solid #DB0011"></div><div class="grid grid_24" style="padding:30px 15px 15px 25px"><a class="top"></a></div><div class="lightviewFooter"></div><div class="close closeHidden"><a href="#" title="Close overlay window">Close overlay window</a></div></div></div>'};var lightbox={visible:false,mousein:false,active:document.activeElement,show:function(){debug.log('showing lightbox');debug.log('lightbox style: '+options.style);lightbox.active=document.activeElement;$('input').attr('disabled','disabled');$('a').each(function(){$(this).attr('href_bak',$(this).attr('href'));$(this).removeAttr('href');});$('body').append(templates[options.style]);$('div.jqmOverlay').css({'display':'none','height':'100%','width':'100%','position':'fixed','left':'0px','top':'0px','z-index':'999','opacity':options.opacity,'filter':'alpha(opacity='+(options.opacity*100)+')'});$('#'+options.divid).css({'z-index':'1000','top':'0px'});switch(options.style){case'detail':if(lightbox.exists(options.heading)){$('#'+options.divid+' div.column').append('<h2>'+options.heading+'</h2>');}
if(lightbox.exists(options.content)){$('#'+options.divid+' div.column').append(options.content);}
break;case'product':if(lightbox.exists(options.heading)){$('#'+options.divid+' div.lightviewHeading').append('<h2>'+options.heading+'</h2>');}
if(lightbox.exists(options.heading_right)){$('#'+options.divid+' div.lightviewHeading').append('<div class="right">'+options.heading_right+'</div>');}
if(lightbox.exists(options.content)){$('#'+options.divid+' div.lightviewHeading div.grid').html('<div id="ajax-overlayContentLeft" class="grid grid_24 ajaxContent">'+options.content+'</div>');}else{if(lightbox.exists(option.content_left)){$('#'+options.divid+' div.lightviewHeading div.grid').append('<div id="ajax-overlayContentLeft" class="grid grid_16 ajaxContent">'+options.content_left+'</div>');}
if(lightbox.exists(option.content_right)){$('#'+options.divid+' div.lightviewHeading div.grid').append('<div id="ajax-overlayContentRight" class="grid grid_8 ajaxContent">'+options.content_right+'</div>');}}
break;}
$('#'+options.divid+' div.lightview').css('margin-top',function(){$('#'+options.divid).css({'visibility':'hidden','display':'block'});var elemheight=$('#'+options.divid+' div.lightview').height();$('#'+options.divid).css({'visibility':'visible','display':'none'});return($(window).height()/2-elemheight/2+$(window).scrollTop());});$('.jqmOverlay').fadeIn(options.fadeduration);$('#'+options.divid).fadeIn(options.fadeduration).find('a.top').focus();lightbox.attachevents();lightbox.visible=true;},hide:function(){debug.log('hiding lightbox');lightbox.destroyevents();$('div.jqmOverlay').fadeOut(options.fadeduration,function(){$(this).remove();});$('#'+options.divid).unbind().fadeOut(options.fadeduration,function(){$(this).remove();lightbox.visible=false;});$('input').removeAttr('disabled');$('a').each(function(){$(this).attr('href',$(this).attr('href_bak'));$(this).removeAttr('href_bak');});lightbox.active.focus();},logoff:function(){debug.log("Logoff function called");lightbox.logoffanim('start');$.ajax({url:"/1/2/?idv_cmd=idv.Logoff&nextPage=hsbc.thirdparty.close",success:function(){debug.log("Log off successful");lightbox.logoffanim('stop');options.loggedon=false;},error:function(XMLHttpRequest,textStatus,errorThrown){debug.log("Error logging off:"+errorThrown);lightbox.logoffanim('error');lightbox.attachevents();}});},logoffanim:function(action){var int,frame=0,link=$('#'+options.divid+' a.logoff');var frames=new Array('Logging off.','Logging off..','Logging off...');switch(action){case'start':$('#'+options.divid+' a.logoff').replaceWith('<span class="loggingoff">'+frames[0]+'</span>');int=setInterval(function(){frame==(frames.length-1)?frame=0:frame++;$('#'+options.divid+' span.loggingoff').html(frames[frame]);},500);break;case'stop':clearInterval(int);break;case'error':clearInterval(int);$('span.loggingoff').replaceWith('<span class="error" style="color:#F00">Error Logging off. (<a href="#" class="logoff">Retry</a>)</span>');break;}},goready:function(){debug.log('check if lightbox is hidden and user logged off...');return(!options.loggedon&&!lightbox.visible);},exists:function(a){debug.log('checking if "'+a+'" can be used');return typeof a!='undefined';},getcam:function(){return options.loggedon?30:0;},destroyevents:function(){$('#'+options.divid+' a,div.lightview,div.lightview div.close span').unbind();$(document).unbind('keyup');},attachevents:function(){lightbox.destroyevents();$('#'+options.divid+' a.logoff').click(function(e){e.preventDefault();$('#'+options.divid+' span.error').replaceWith('<a class="logoff"></a>');lightbox.logoff();var a=setInterval(function(){if(!options.loggedon){clearInterval(a);location.href=options.cta;}},100);});$('#'+options.divid+' a.cancel').click(function(e){e.preventDefault();lightbox.hide();});$('div.lightview').bind('mouseenter',function(){lightbox.mousein=true;debug.log("Mouse in modal window");});$('div.lightview').bind('mouseleave',function(){lightbox.mousein=false;debug.log("Mouse out modal window");});$('#'+options.divid).click(function(){if(!lightbox.mousein){lightbox.hide();}});$(document).bind('keyup',function(e){if(e.keyCode==27){lightbox.hide();}});$('#'+options.divid+' div.close span').click(function(e){e.preventDefault();lightbox.hide();});}};if(options.loggedon||options.minimumcam<=lightbox.getcam()){$(this).click(function(e){e.preventDefault();debug.log('Lightbox initiated');options.cta=$(this).attr('href');lightbox.show();});}};})(jQuery);
