(function($){ $.fn.initBanner = function(options) { options = jQuery.extend({ contentId: 'bannersummary', navBoxId: 'bannercontrols', containerId: 'banner', paginMax: 5, paginMid: 3, dataMap: new Array(), bannerBg: '#333333' },options); var currentBannerId = 0; var navPanel = null; var isTransitioning = false; return this.each (function () { this.options = $.extend(this.options, options || {}); /* INSERT CONTENT PANELS (EXPANDED AND SUMMARY) */ var summary_html = ''; summary_html += '
'; summary_html += '
'; summary_html += '
'; summary_html += 'Read More >>'; summary_html += '
'; summary_html += ''; $(document.getElementById(this.options.contentId)).css({'padding' : '0px', 'position':'relative'}).html('').append(summary_html); $('#cpBannerSummary').css({'padding' : '18px 16px 16px 24px'}); $('#cpBannerExpanded').css({'padding' : '18px 16px 16px 24px'}); /* DRAW NAVIGATIONAL BUTTONS AND INSERT INTO CONTROLS */ var navString = ''; var imgString = ''; for (var i = 0; i <= options.dataMap.length -1; i++) { navString += '' + (i + 1) + ''; imgString += ''; } /* INSERT NAVIGATIONAL CONTOLS */ var nav_html = ''; nav_html += '
'; nav_html += imgString; nav_html += '
'; nav_html += '
'; nav_html += '
Next Feature
'; nav_html += '
'; nav_html += ''; nav_html += ''; nav_html += ''; nav_html += '
'; nav_html += ''; nav_html += navString; nav_html += '
'; nav_html += '
'; $(document.getElementById(this.options.containerId)).css({"overflow": "hidden"}).html('').append(nav_html); /* BIND FORWARD AND BACK BUTTON */ $('#banner-back').css({ 'cursor': 'pointer' }).click( function () { shiftBanner(-1); }); $('#banner-next').css({ 'cursor': 'pointer' }).click( function () { shiftBanner(1); }); navPanel = $('#cpBannernav'); currentBannerId = 0; /* PRELOAD ALL IMAGES */ $('.cpBannerImg').children('img').each(function(i) { // $(this).attr('src', options.dataMap[i].img); if (i == currentBannerId) { $(this).load(function(){ $(this).parent().fadeIn(); }); } }); drawContentForBanner(currentBannerId); /* BIND CLICK EVENTS TO EACH CONTROL SELECTOR */ navPanel.children('td').each(function(i) { if (i == currentBannerId) { $(this).addClass('banner-nav-btn-actv'); } $(this).bind( 'click', { btn: this}, function(e) { chooseBanner( $(e.data.btn) ); }); }); /* END ITERATION OF CONTOLS LOOP */ drawBannerControls(); /* BIND CLICK READ MORE LINK TO EXPAND DETAILS PANEL */ $('#casestudy_readmore').bind("click", function() { openPanel(); }); adjustExpandedPanel(); }); function chooseBanner(btn) { var newSelected = btn.attr('targetImage'); if ( newSelected != currentBannerId ) { var newImg = $('.cpBannerImg').eq(newSelected); var oldImg = $('.cpBannerImg').eq(currentBannerId); if ( newImg.is(':animated') || oldImg.is(':animated') ) { $('.cpBannerImg').not(oldImg).hide(); $('.cpBannerImg').stop(); } animateBannerTransition(newImg, oldImg); /* UPDATE DETAILS PANNEL WITH SELECTED CASE STUDY CONTENT */ drawContentForBanner( newSelected ); /* UPDATE NEW ACTIVE BUTTON WITH APPROPRIATE CLASS */ navPanel.children('td').removeClass('banner-nav-btn-actv'); btn.addClass('banner-nav-btn-actv'); /* DRAW NAV CONTROLS WITH NEW ACTIVE BUTTON */ drawBannerControls(); currentBannerId = newSelected; } } /* END chooseBanner FUNCTION */ function animateBannerTransition(newImg, oldImg) { oldImg.css({"z-index":"2"}); newImg.css({"z-index":"1", "opacity":"1"}).show(); oldImg.animate({opacity: 0}, 1500, function() { oldImg.hide(); $('.cpBannerImg').not(newImg).css({"z-index":"0", "opacity":"1"}); }); } function adjustExpandedPanel () { var pos = $("#cpBannerSummary").offset(); var width = $("#bannersummary").width(); var height = $("#bannersummary").height(); if (!$.browser.msie) { width -= (16 + 24); } $("#cpBannerExpanded").css( { "width": width + "px", "min-height": height + "px", "left": ($.browser.msie) ? "-24px" : "0px", "top": "0px", "position": "absolute" , "padding": "18px 16px 16px 24px" }); } function shiftBanner (a) { var oldImg = $('.cpBannerImg').eq(currentBannerId); if ( oldImg && oldImg.not(':animated') ) { var selectedNav; if ( a > 0) { chooseBanner(navPanel.children('.banner-nav-btn-actv').next()); } else { chooseBanner(navPanel.children('.banner-nav-btn-actv').prev()); } } } function drawBannerControls () { var activeNav = navPanel.children('.banner-nav-btn-actv'); var end = navPanel.children().length; if ($('.banner-nav-btn-actv').attr('targetimage') == 0) { $('#banner-back').hide(); } else { $('#banner-back').show(); } if ($('.banner-nav-btn-actv').attr('targetimage') == end -1) { $('#banner-next').hide(); } else { $('#banner-next').show(); } var index = $('.banner-nav-btn-actv').attr('targetImage'); var visibleStart = Math.max(0, index - options.paginMid - 1); var visibleEnd = Math.min(end, visibleStart + options.paginMax + 1); navPanel.children('td').hide().slice(visibleStart, visibleEnd).show(); } function drawContentForBanner (i) { /* UPDATE CONTENT WITH VALUES FOR THE SELECTED ITEM */ $('#casestudy_group').html('').append(options.dataMap[i].group); $('#casestudy_heading').html('').append(options.dataMap[i].title); $('#casestudy_expandedtitle').html('').append(options.dataMap[i].expandedTitle); $('#casestudy_expandedtext').html('').append(options.dataMap[i].text); $('#casestudy_pagelink').attr('href', options.dataMap[i].link); } /* Opens the details drop down and sets delay timeout to hide the panel */ function openPanel () { adjustExpandedPanel(); $("#cpBannerExpanded").fadeIn("fast"); var t = setTimeout('$("#cpBannerExpanded").fadeOut("fast");', 2000); $("#cpBannerExpanded").mouseout(function() { t = setTimeout('$("#cpBannerExpanded").fadeOut("fast");', 2000); }).mouseover(function() { clearTimeout(t); }); $("#bannercontrols").mouseout(function() { t = setTimeout('$("#cpBannerExpanded").fadeOut("fast");', 2000); }).mouseover(function() { clearTimeout(t); }); } /* END openPanel FUNCTION */ } })(jQuery);