/***
 * HighlightModule. Manager class for the Philips Highlight Module application.
 * @author Adam J. McIntyre - adam.mcintyre@molecular.com
 */

$(document).ready(function() {(HighlightModule=function(){var data={};var $container=null;var type=height='';var isSwappingImage=false;return{init:function(){var o=this;$().ready(function(){data=highlightModuleData;$container=$('#highlight_module');o._setHeight()._parseModule();});},_setHeight:function(){if(data.Type.toLowerCase()=='c'){$container.addClass(data.HighlightProjectCollectionData&&data.HighlightProjectCollectionData.length>1?'short':'full');}
else if(data.Type.toLowerCase()=='b'){$container.addClass(data.HighlightProjectCollectionData&&data.HighlightProjectCollectionData.length>1?'full':'short');}
else{$container.addClass(data.HighlightProjectCollectionData&&data.HighlightProjectCollectionData.length>0?'full':'short');}
return this;},_parseModule:function(){switch(data.Type.toLowerCase()){case'b':this._renderVariantB();break;case'c':this._renderVariantC();break;case'a':default:this._renderVariantA();}
return this;},_renderVariantA:function(){$container.addClass('variant_a')
var theme=data.Theme;if(theme){$('#copy_container').find('h1').html('<span class="'+theme+'">'+data.Title+'</span>');var subtitle=data.SubTitle;if(subtitle&&subtitle.length>0)
$('#copy_area').html('<h2><span class="'+theme+'2">'+subtitle+'</span></h2>');}
else{$('#copy_container').find('h1').html('<span>'+data.Title+'</span>');var subtitle=data.SubTitle;if(subtitle&&subtitle.length>0)
$('#copy_area').html('<h2><span>'+subtitle+'</span></h2>');}
var credit=data.Credits;if(credit&&credit.length>0){$('#secondary_copy').html(credit);}
if(data.HiResImageAlt){$('#cta').html(this._renderButton(data.HiResImage,data.HiResImageAlt));}
$('#hero_image').html('<img src="'+data.Image+'" alt="'+data.ImageAlt+'"/>');if(data.LinkURL&&data.LinkURL.length>0){$('#copy_container').find('h1, h2').add('#hero_image').wrapInner('<a href="'+data.LinkURL+'"></a>');}
$('#video_thumb, #carousel_container').remove();},_renderVariantB:function(){$container.addClass('variant_b')
var imgs=data.HighlightProjectCollectionData;var defaultItem=imgs[0];for(var i=0,currentItem=imgs[0];i<imgs.length;i++,currentItem=imgs[i]){if(currentItem.IsDefault==true){defaultItem=currentItem;break;}}
$('#copy_container').find('h1').html(defaultItem.Title);var sub=defaultItem.SubTitle;var copy=defaultItem.Description;var tmpCopy='';if(sub&&sub.length>0){tmpCopy='<h2 class="sIFR-ignore">'+sub+'</h2>';}
else{$('#copy_container').addClass('no_subtitle');}
if(copy.length>0){tmpCopy+='<p>'+copy+'</p>';}
$('#copy_area').html(tmpCopy);var credit=defaultItem.Credits;$('#secondary_copy').appendTo('#copy_area');if(credit&&credit.length>0){$('#secondary_copy').html(credit);}
if(defaultItem.LinkText){$('#cta').html(this._renderButton(defaultItem.LinkURL,defaultItem.LinkText));if(defaultItem.IsInternalLink==false){$('#cta a').bind('click',function(e){e.preventDefault();window.open(this.getAttribute('href'));});}}
$('#hero_image').html('<img src="'+defaultItem.LargeImage+'" alt="'+defaultItem.LargeImageAlt+'"/>');if(imgs.length>1){$('#carousel_container').addClass('clearfix').html(this._renderImgMarkup(imgs));this._handleImgCarousel(imgs);}
$('#video_thumb').remove();},_renderVariantC:function(){var o=this;$container.addClass('variant_c')
var imgs=data.HighlightProjectCollectionData;var defaultItem=imgs[0];var defaultIndex=0;for(var i=0,currentItem=imgs[0];i<imgs.length;i++,currentItem=imgs[i]){if(currentItem.IsDefault==true){defaultItem=currentItem;defaultIndex=i;break;}}
$('#copy_container').find('h1').html(defaultItem.Title).addClass('sIFR-ignore');$('#copy_area').html('<h2 class="sIFR-ignore">'+defaultItem.SubTitle+'</h2>');if(defaultItem.HiResImageAlt){$('#cta').html(this._renderButton(defaultItem.HiResImage,defaultItem.HiResImageAlt));}
else{$('#cta').addClass('empty');}
if($container.hasClass('short')){$container.append('<div id="info_container" class="clearfix"></div>');$('#copy_container, #carousel_container').appendTo('#info_container');}
var secondaryCopy=defaultItem.Credits;if(secondaryCopy&&secondaryCopy.length>0){if($container.hasClass('short')){var $cta=$('#cta');var newWidth=$('#copy_container').width()-($cta.width()+parseInt($cta.css('marginRight'),10));if(newWidth<0){newWidth=$('#copy_container').width();}
$('#secondary_copy').width(newWidth).html(secondaryCopy);}
else{$('#secondary_copy').html(secondaryCopy);}}
var videoData=imgs[0].HighlightVideoData;if(videoData&&videoData.VideoLinkURL&&videoData.VideoLinkURL.length>0){$swf=$('<div id="swf_container"></div>').hide().appendTo('#hero_image');this._embedFlash(videoData.VideoLinkURL);$container.addClass('flash');if(defaultIndex>0){$swf.addClass('hidden').after('<img src="'+defaultItem.LargeImage+'" alt="'+defaultItem.LargeImageAlt+'"/>');}
else{$swf.show();}}
else{$('#hero_image').html('<img src="'+defaultItem.LargeImage+'" alt="'+defaultItem.LargeImageAlt+'"/>');$container.addClass('image');}
var flashThumb=videoData&&videoData.SmallImage?videoData.SmallImage:null;if(flashThumb&&flashThumb.length>0){var flashItem=imgs[0];var vidThumbHtml='<div><a href="'+videoData.VideoLinkURL+'" class="vid_thumb"'
+' data-title="'+flashItem.Title+'" data-subtitle="'
+flashItem.SubTitle+'" data-description="'+(flashItem.Description?flashItem.Description:'')+'" '
+'data-largealt="" '
+'data-credits="'+(flashItem.Credits?flashItem.Credits:'')+'" data-hires="'+flashItem.HiResImageAlt+'" data-hirespath="'+flashItem.HiResImage+'">'
+'<img src="'+videoData.SmallImage+'" alt="'+videoData.SmallImageAlt+'"/><span class="play_button"></span></a>'
+'<span class="shadow_off"></span><span class="shadow_on"></span></div>';var vidThumb=$('#video_thumb').html(vidThumbHtml);$('#carousel_container').prepend(vidThumb.clone());vidThumb.remove();this._fisheye($('div#video_thumb div'));}
else{$('#video_thumb').remove();}
if(imgs.length>1){$('#carousel_container').addClass('clearfix').append(this._renderImgMarkup(imgs));this._handleImgCarousel(imgs);}},_renderImgMarkup:function(imgs){var h='<div class="jcarousel-clip"><ul id="highlight_carousel">';var start=0;if(data.Type.toLowerCase()=='c'&&$container.hasClass('flash')){start=1;}
for(var i=start,curImg=imgs[start];i<imgs.length;i++,curImg=imgs[i]){var smallAlt=curImg.SmallImageAlt?curImg.SmallImageAlt.replace(/'/g,'&#39;').replace(/"/g,'&quot;'):'';var largeAlt=curImg.LargeImageAlt?curImg.LargeImageAlt.replace(/'/g,'&#39;').replace(/"/g,'&quot;'):'';var description=curImg.Description?curImg.Description.replace(/'/g,'&#39;').replace(/"/g,'&quot;'):'';var credits=curImg.Credits?curImg.Credits.replace(/'/g,'&#39;').replace(/"/g,'&quot;'):'';var hiresAlt=curImg.HiResImageAlt?curImg.HiResImageAlt.replace(/'/g,'&#39;').replace(/"/g,'&quot;'):'';var tooltipText='';if(curImg.SmallImageAlt!==null&&typeof curImg.SmallImageAlt!=='undefined'&&curImg.SmallImageAlt.length>0){tooltipText=smallAlt;}
else{tooltipText=curImg.Title;}
var isInternalLink='true';if(typeof curImg.IsInternalLink!=='undefined'&&curImg.IsInternalLink==false){isInternalLink='false';}
h+='<li id="carousel_item_'+i+'">'
+'<a href="'+curImg.LargeImage+'" title="'+tooltipText+'"'
+' data-title="'+curImg.Title+'" data-subtitle="'+curImg.SubTitle
+'" data-description="'+description+'" '
+'" data-largealt="'+largeAlt+'" '
+'data-internallink="'+isInternalLink+'" data-linkurl="'+(curImg.LinkURL?curImg.LinkURL:'')+'" data-linktext="'+(curImg.LinkText?curImg.LinkText:'')
+'" data-credits="'+credits+'" data-hires="'+hiresAlt+'" data-hirespath="'+curImg.HiResImage+'">'
+'<img src="'+curImg.SmallImage+'" alt="'+smallAlt+'"/></a>'
+'<span class="shadow_off"></span><span class="shadow_on"></span></li>';}
h+='</ul></div>';return h;},_handleImgCarousel:function(imgs){if(imgs.length>8){var carousel=$('#highlight_carousel').parent();$('<a href="#prev" id="navigation_carousel_prev">&lt;</a>').insertBefore(carousel);$('<a href="#next" id="navigation_carousel_next">&gt;</a>').insertAfter(carousel);var isCarousel=false;var isFlashContainer=$container.hasClass('flash');if((isFlashContainer&&imgs.length>9)||(!isFlashContainer&&imgs.length>8)){isCarousel=true;}
$('#carousel_container').jcarousel({size:isFlashContainer?imgs.length-1:imgs.length,scroll:8,visible:8,buttonNextHTML:null,buttonPrevHTML:null,initCallback:function(jc){$('#navigation_carousel_next').click(function(e){e.preventDefault();jc.next();return false;});$('#navigation_carousel_prev').click(function(e){e.preventDefault();jc.prev();return false;});}});if(isCarousel){$('#navigation_carousel_next, #navigation_carousel_prev').show();}
if(isCarousel||isFlashContainer){var cOffset=carousel.position();$('<span class="carousel_shadow carousel_shadow_left"></span>').css('left',cOffset.left).insertBefore(carousel);$('<span class="carousel_shadow carousel_shadow_right"></span>').css('left',cOffset.left+carousel.width()-9).insertAfter(carousel);}}
var lis=$('#highlight_carousel li');this._swapImage()._fisheye(lis)._tooltips(lis);},_renderButton:function(link,label){return'<table align="left" class="highlight_module-button"><tbody><tr><td><div class="btn">'
+'<a href="'+link+'">'+label+'</a>'
+'</div></td></tr></tbody></table>';},_fisheye:function(els){var $hc=$('#highlight_carousel');var hcOffset=$hc.offset().left;var hcWidth=$hc.parent().width();var MAX_WIDTH=69;var MAX_HEIGHT=69;var isIE=$.browser.msie>0;els.bind('mouseenter',function(e){var li=$(this).addClass('active');var parent=li.parent();var el=$(this).find('img').stop();var shadow=$(this).find('span.shadow_on');var isVid=li.find('a.vid_thumb').length>0;li.find('span.play_button').fadeOut('fast');if(!parent.attr('data-height')){parent.attr('data-height',el.height()).attr('data-width',el.width());}
var width=el.width()/0.75;var newLeft=-1*(parent.attr('data-width')/5);var myLeft=li.offset().left;if(!isVid){if(myLeft+newLeft<hcOffset){newLeft=0;}
else if(myLeft+newLeft+width>hcOffset+hcWidth){newLeft=-1*li.width()/3;}}
if(isVid){var newTop=-1*(parent.attr('data-height')/4);}
else{var newTop=-1*(li.height()/4);}
li.css('zIndex',99);if(isIE){el.stop().animate({height:MAX_HEIGHT,left:newLeft,top:newTop,width:MAX_WIDTH},250,'easeOutQuint',function(){shadow.css({left:newLeft-6,top:newTop-5,visibility:'visible'});});}
else{el.stop().animate({height:MAX_HEIGHT,left:newLeft,top:newTop,width:MAX_WIDTH},250,'easeOutQuint');shadow.stop().css({left:newLeft-6,top:newTop-5,opacity:0}).animate({opacity:1},550,'easeOutQuint');}}).bind('mouseleave',function(){var li=$(this).removeClass('active');var parent=li.parent();var el=$(this).find('img');$(this).find('span.shadow_on').css({left:0,top:0});li.find('span.play_button').fadeIn();if(isIE){$(this).find('span.shadow_on').css('visibility','hidden');}
el.stop().animate({height:parent.attr('data-height'),left:0,top:0,width:parent.attr('data-width')},150,'easeOutQuart');li.css('zIndex',2);}).find('img').attr('alt','');return this;},_swapImage:function(){var o=this;$('#highlight_carousel a, #video_thumb a').bind('click',function(e){e.preventDefault();if(isSwappingImage){return false;}
isSwappingImage=true;var self=$(this);var $flashContainer=$('#swf_container');if($flashContainer.length>0){if(self.hasClass('vid_thumb')){var $target=$('#hero_image img:first');$target.fadeTo('fast',0.25,function(){setTimeout(function(){$flashContainer.show().fadeTo(150,1,function(){o._swapTitles(self);$target.hide().remove();isSwappingImage=false;}).removeClass('hidden');},50);});}
else{if($flashContainer.hasClass('hidden')){var $target=$('#hero_image img:first');var $newImg=$target.after('<img src="">').next().css('opacity',0.15);o._showLoading($('#hero_image'));$newImg.one('load',function(){$target.fadeTo('fast',0.25,function(){o._hideLoading();setTimeout(function(){$newImg.fadeTo(150,1,function(){o._swapTitles(self);$target.remove();$newImg.css('filter','');isSwappingImage=false;});},50);});}).attr('src',this.getAttribute('href')).attr('alt',this.getAttribute('data-largealt'));}
else{var $newImg=$flashContainer.after('<img src="">').next().css('opacity',0.15);o._showLoading($('#hero_image'));$newImg.one('load',function(){$flashContainer.fadeTo('fast',0.25,function(){o._hideLoading();setTimeout(function(){$newImg.fadeTo(150,1,function(){o._swapTitles(self);$flashContainer.css('opacity',0).hide().addClass('hidden');$newImg.css('filter','');isSwappingImage=false;});},50);});}).attr('src',this.getAttribute('href')).attr('alt',this.getAttribute('data-largealt'));}}}
else{var $target=$('#hero_image img:first');if(data.Type.toLowerCase()=='b'&&$.browser.msie){var $newImg=$target.after('<img src="">').next();}
else{var $newImg=$target.after('<img src="">').next().css('opacity',0.15);}
o._showLoading($('#hero_image'));if(data.Type.toLowerCase()=='b'&&$.browser.msie==true){$newImg.one('load',function(){o._hideLoading();o._swapTitles(self);$target.remove();$newImg.css('filter','');isSwappingImage=false;}).attr('src',this.getAttribute('href')).attr('alt',this.getAttribute('data-largealt'));}
else{$newImg.one('load',function(){$target.fadeTo('fast',0.25,function(){o._hideLoading();setTimeout(function(){$newImg.fadeTo(150,1,function(){o._swapTitles(self);$target.remove();$newImg.css('filter','');isSwappingImage=false;});},50);});}).attr('src',this.getAttribute('href')).attr('alt',this.getAttribute('data-largealt'));}}});return this;},_swapTitles:function(el){var newTitle=el.attr('data-title');if(newTitle.length>0){var $h1=$('#copy_container').find('h1');if(data.Type.toLowerCase()=='b'&&$h1.children('.sIFR-flash').length>0){sIFR.getReplacementByFlashElement($h1.children('.sIFR-flash')[0]).replaceText(newTitle);}
else{$h1.html(newTitle);}}
if(data.Type.toLowerCase()=='c'){$('#copy_area').find('h2').html(el.attr('data-subtitle'));var newButtonText=el.attr('data-hires');if(newButtonText.length>0){$('#cta').html(this._renderButton(el.attr('data-hirespath'),newButtonText));}
else{$('#cta').addClass('empty').empty();}
if($container.hasClass('short')){var $cta=$('#cta');var newWidth=$('#copy_container').width()-($cta.width()+parseInt($cta.css('marginRight'),10));$('#secondary_copy').width(newWidth).html(el.attr('data-credits'));}
else{$('#secondary_copy').html(el.attr('data-credits'));}}
else if(data.Type.toLowerCase()=='b'){$('#copy_area').find('h2').html(el.attr('data-subtitle'));$('#secondary_copy').html(el.attr('data-credits'));var newCopy=el.attr('data-description');if(newCopy.length>0){$('#copy_area p:first').html(newCopy);}
var newButtonText=el.attr('data-linktext');if(newButtonText.length>0){$('#cta').html(this._renderButton(el.attr('data-linkurl'),newButtonText));$('#cta a').unbind('click');if(el.attr('data-internallink')=='false'){$('#cta a').bind('click',function(e){e.preventDefault();window.open(this.getAttribute('href'));});}}
else{$('#cta').empty();}}
else{var newSubTitle=el.attr('data-subtitle');if(newSubTitle.length>0){$('#copy_area').find('h2').html(newSubTitle);}
var newCredits=el.attr('data-credits');if(newCredits.length>0){$('#copy_area').find('p').html(newCredits);}
else{$('#copy_area').find('p').empty();}}},_tooltips:function(lis){lis.bind('mouseenter',function(e){var self=$(this);var pos=self.offset();var tt=$('#'+self.attr('id')+'_tooltip');if(tt.length==0){var ttHtml='<div id="'+self.attr('id')+'_tooltip'+'" class="tooltip">'
+'<div class="bd">'+self.find('a').attr('title')+'</div>'
+'<div class="ft"></div>'
+'</div>';tt=$(ttHtml).css('opacity',0).prependTo('body')}
tt.css({left:pos.left-(self.width()/3),top:pos.top-(1.75*tt.height())}).show().fadeTo('fast',1,function(){tt.css('filter','')});}).bind('mouseleave',function(e){var self=$(this)
$('#'+self.attr('id')+'_tooltip').fadeOut('fast');});},_embedFlash:function(url){if(/[^\.]\.(swf)\s*$/.test(url)){var fo=new FlashObject(url,"hero_swf","960","347","9","#FFF",false);fo.addParam("allowScriptAccess","sameDomain");fo.addParam("wMode","transparent");fo.write('swf_container');}
else{var vidId,playerId;var player=url.match(/\/bcpid([^\?]*)/);if(player){playerId=player[1];}
else{return false;}
var vidParam=url.match(/bctid=([^\?&]*)/)
if(vidParam){vidId=vidParam[1];}
else{return false;}
var bcPlayer='<object id="bcPlayer"  class="BrightcoveExperience">'
+'<param name="width" value="486" />'
+'<param name="height" value="412" />'
+'<param name="playerID" value="'+playerId+'" />'
+'<param name="wmode" value="transparent"/>'
+'<param name="@videoPlayer" value="'+vidId+'"/>'
+'<param name="isVid" value="true" />'
+'<param name="isUi" value="true" />'
+'<param name="autoStart" value="true" />'
+'</object>';$('#swf_container').html(bcPlayer);$('#highlight_module').addClass('brightcove');}},_showLoading:function(el){var $loader=$('#loader__');if($loader.length==0){var pos=el.offset();$loader=$('<div id="loader__"></div>').css({left:-10000}).prependTo('body');$loader.css({left:pos.left+((el.width()/2)-$loader.width()/2),top:pos.top+((el.height()/2)-$loader.height()/2),display:'none'});}
$loader.fadeIn('fast')
return this;
}, _hideLoading: function(callback) { $('#loader__').fadeOut(100, callback); return this; } }
} ()).init();
});
