/*!
 * jQuery Tools dev - The missing UI library for the Web
 *
 * tooltip/tooltip.js
 *
 * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
 *
 * http://flowplayer.org/tools/
 *
 */
(function(a){a.tools=a.tools||{version:"dev"},a.tools.tooltip={conf:{effect:"toggle",fadeOutSpeed:"fast",predelay:0,delay:30,opacity:1,tip:0,fadeIE:!1,position:["top","center"],offset:[0,0],relative:!1,cancelDefault:!0,events:{def:"mouseenter,mouseleave",input:"focus,blur",widget:"focus mouseenter,blur mouseleave",tooltip:"mouseenter,mouseleave"},layout:"<div/>",tipClass:"tooltip"},addEffect:function(a,c,d){b[a]=[c,d]}};var b={toggle:[function(a){var b=this.getConf(),c=this.getTip(),d=b.opacity;d<1&&c.css({opacity:d}),c.show(),a.call()},function(a){this.getTip().hide(),a.call()}],fade:[function(b){var c=this.getConf();!a.browser.msie||c.fadeIE?this.getTip().fadeTo(c.fadeInSpeed,c.opacity,b):(this.getTip().show(),b())},function(b){var c=this.getConf();!a.browser.msie||c.fadeIE?this.getTip().fadeOut(c.fadeOutSpeed,b):(this.getTip().hide(),b())}]};function c(b,c,d){var e=d.relative?b.position().top:b.offset().top,f=d.relative?b.position().left:b.offset().left,g=d.position[0];e-=c.outerHeight()-d.offset[0],f+=b.outerWidth()+d.offset[1],/iPad/i.test(navigator.userAgent)&&(e-=a(window).scrollTop());var h=c.outerHeight()+b.outerHeight();g=="center"&&(e+=h/2),g=="bottom"&&(e+=h),g=d.position[1];var i=c.outerWidth()+b.outerWidth();g=="center"&&(f-=i/2),g=="left"&&(f-=i);return{top:e,left:f}}function d(d,e){var f=this,g=d.add(f),h,i=0,j=0,k=d.attr("title"),l=d.attr("data-tooltip"),m=b[e.effect],n,o=d.is(":input"),p=o&&d.is(":checkbox, :radio, select, :button, :submit"),q=d.attr("type"),r=e.events[q]||e.events[o?p?"widget":"input":"def"];if(!m)throw"Nonexistent effect \""+e.effect+"\"";r=r.split(/,\s*/);if(r.length!=2)throw"Tooltip: bad events configuration for "+q;d.bind(r[0],function(a){clearTimeout(i),e.predelay?j=setTimeout(function(){f.show(a)},e.predelay):f.show(a)}).bind(r[1],function(a){clearTimeout(j),e.delay?i=setTimeout(function(){f.hide(a)},e.delay):f.hide(a)}),k&&e.cancelDefault&&(d.removeAttr("title"),d.data("title",k)),a.extend(f,{show:function(b){if(!h){l?h=a(l):e.tip?h=a(e.tip).eq(0):k?h=a(e.layout).addClass(e.tipClass).appendTo(document.body).hide().append(k):(h=d.next(),h.length||(h=d.parent().next()));if(!h.length)throw"Cannot find tooltip for "+d}if(f.isShown())return f;h.stop(!0,!0);var o=c(d,h,e);e.tip&&h.html(d.data("title")),b=a.Event(),b.type="onBeforeShow",g.trigger(b,[o]);if(b.isDefaultPrevented())return f;o=c(d,h,e),h.css({position:"absolute",top:o.top,left:o.left}),n=!0,m[0].call(f,function(){b.type="onShow",n="full",g.trigger(b)});var p=e.events.tooltip.split(/,\s*/);h.data("__set")||(h.unbind(p[0]).bind(p[0],function(){clearTimeout(i),clearTimeout(j)}),p[1]&&!d.is("input:not(:checkbox, :radio), textarea")&&h.unbind(p[1]).bind(p[1],function(a){a.relatedTarget!=d[0]&&d.trigger(r[1].split(" ")[0])}),e.tip||h.data("__set",!0));return f},hide:function(c){if(!h||!f.isShown())return f;c=a.Event(),c.type="onBeforeHide",g.trigger(c);if(!c.isDefaultPrevented()){n=!1,b[e.effect][1].call(f,function(){c.type="onHide",g.trigger(c)});return f}},isShown:function(a){return a?n=="full":n},getConf:function(){return e},getTip:function(){return h},getTrigger:function(){return d}}),a.each("onHide,onBeforeShow,onShow,onBeforeHide".split(","),function(b,c){a.isFunction(e[c])&&a(f).bind(c,e[c]),f[c]=function(b){b&&a(f).bind(c,b);return f}})}a.fn.tooltip=function(b){var c=this.data("tooltip");if(c)return c;b=a.extend(!0,{},a.tools.tooltip.conf,b),typeof b.position=="string"&&(b.position=b.position.split(/,?\s/)),this.each(function(){c=new d(a(this),b),a(this).data("tooltip",c)});return b.api?c:this}})(jQuery);



var BMS_HEPB = function () {
	var legacy_browser = ($('html').hasClass('ie6') || $('html').hasClass('ie7')) ? true : false;

	function initApp() {

		// Print page
		printPage();

		// Select your language
		selectLanguage();

		// Site search field
		siteSearch();

		// HepB odometer
		hepbOdometer();

		// Fat/Skinny footer toggle
		fatFooter();

		if (legacy_browser) {
			pseudoShiv('.bms-lang-select > a, .bms-odometer', '.bms-odometer, .bms-quicklinks-toggle a');
			primaryNavShiv();
		}

		footNotes();

	}

	function printPage() {
		$('.js .bms-print').bind('click keypress', function (e) {
			var code = (e.keyCode ? e.keyCode : e.which);

			if (e.type === 'click' || code === 13) {
				window.print();
				return false;
			}
		});
	}

	function selectLanguage() {
		var el = $('.bms-lang-select');

		$(el).focusin(function () {
			$(this).addClass('bms-focus');
		});

		$(el).focusout(function () {
			$(this).removeClass('bms-focus');
		});
	}

	function siteSearch() {
		var e = $('.bms-search-query');

		$(e).data('val', $(e).val());

		$(e).focus(function () {
			if ($(this).val() == $(this).data('val')) {
				$(this).val('');
			}
		});

		$(e).blur(function () {
			if ($(this).val() === '') {
				$(this).val($(this).data('val'));
			}
		});

		$(e).bind('keypress', function (e) {
			var code = (e.keyCode ? e.keyCode : e.which);

			if (code === 13) {
				if ($(this).val().trim() !== '') {
					document.location = '/search?q=' + $(this).val();
				}

				e.preventDefault();
			}
		});
	}

	function hepbOdometer() {
		var odometer = $('.bms-odometer'),
			odometer_text = $(odometer).text(),
			odometer_new = '';

		for (var x = 0, max = odometer_text.length; x < max; x++) {
			odometer_new += '<span class="bms-digit-' + (x + 1) + '">' + odometer_text.charAt(x) + '</span>';
		}

		$(odometer).html(odometer_new);
	}

	function fatFooter() {
		var fat = $('.bms-fat-footer');

		$('.bms-quicklinks-toggle, .bms-fat-toggle').click(function (e) {
			$(fat).slideToggle('fast');
			$(this).toggleClass('bms-quicklinks-toggle-off');
			e.preventDefault();
		});
	}

	function primaryNavShiv() {
		var primary = $('.bms-primary nav ul');
		$('li', primary).wrap('<td>');
		$('.bms-primary nav ul').html('<table><tr>' + $(primary).html() + '</tr></table>');
		$('.bms-primary').css('visibility', 'visible');
	}

	function pseudoShiv(el_before, el_after) {
		$(el_before).prepend('<b class="bms-pseudo-before" />');
		$(el_after).append('<b class="bms-pseudo-after" />');
	}

	function footNotes() {
		var sup = $('div[role="main"] sup').filter(':not(.bms-tooltip sup)');
		var supTarg = $('.bms-tooltip li');

		$(sup).each(function (i) {
			var idx = $(this).text().trim();
			$(this).wrapInner('<a href="#note-' + idx + '" />');
		});

		$(supTarg).each(function (i) {
			$(this).attr('id', 'note-' + (i + 1));
		});
	}

	return {
		init: initApp
	}
} ();

BMS_HEPB.init();
