/*
	Copyright Code Computerlove Ltd 2009-2010
	Build: 1.0.0.243
	Date: 19/01/2010 15:21:28
*/

/*
	Copyright Code Computerlove Ltd 2009
	Build: 1.0.0.168
	Date: 27/08/2009 13:40:04
*/

(function($j) {

	Code.registerNamespace('Website');

	Website.Core = {

		content: null,
		navigation: "NavigationPrimary",
		hoverClass: "hover",
		secondaryHoverClass: "has-sn-hover",
		activeClass: "active",
		singleAcliveClass: "active-has-no-sn",
		secondaryNavClass: "has-sn",
		swInput: "js-sw-search",
		searchMain: "js-sw-search",
		contrastToggle: "ContrastToggle",
		accordion: "accordion",
		accordionItem: "h2",
		productContainer: "accordion-item-c",

		_checkBrowser: function() {
			if (Code.UserAgent.isSafari) {
				$j('body').addClass('safari');
			}
		},

		_navHandler: function() {
			var self = this;
			var navigation = self.navigation;
			var jNavigation = $j("#" + navigation);
			var hoverClass = self.hoverClass;
			var sHoverClass = self.secondaryHoverClass;
			var sNavClass = self.secondaryNavClass;
			var activeClass = self.activeClass;
			var singleActiveClass

			// if has children then add class to show the arrow
			$j("li:has(ul)", jNavigation).addClass(sNavClass);

			// if has no child add the class has-no-sn (needed for IE!)
			$j("li", jNavigation).each(function() {
				if ($j(this).hasClass(activeClass) && $j(this).hasClass(sNavClass) == false) {
					$j(this).addClass(singleActiveClass);
				};
			});

			$j("li", jNavigation).hover(function() {
				$j(this).addClass(hoverClass);
			},
				function() {

					$j(this).removeClass(hoverClass);
				});
		},

		_initSearch: function() {
			var self = this;
			var swInput = self.swInput;
			var jSwInput = $j('#' + swInput);
			self._clearSearch(jSwInput);
		},

		_pageTidy: function() {

			var self = this;
			var searchMain = self.searchMain;
			var jSearchMain = $j('.' + searchMain);

			// make nice divider (use sparingly)
			$j("hr").replaceWith('<div class="hr"></div>');

			if (jSearchMain.length > 0) {
				self._clearSearch(jSearchMain);
			}

		},

		_clearSearch: function(elem) {
			var self = this;
			var defaultSearchVal = elem.val();

			elem.focus(function() {
				if ($j(this).val() == defaultSearchVal) {
					$j(this).val("");
				}
			});

			elem.blur(function() {
				if ($j(this).val() == "") {
					$j(this).val(defaultSearchVal);
				}
			});

		},

		_contrastToggleHandler: function() {

			var self = this;
			var contrastToggle = self.contrastToggle;
			var ovToggleLabel = "Switch to high contrast version";
			var hcvToggleLabel = "Switch to original version";
			var cookieName = "toggleState";

			// insert toggle link
			$j('<a href="/" id="' + contrastToggle + '">' + ovToggleLabel + '</a>').appendTo("#Facilities");

			var jContrastToggle = $j('#' + contrastToggle);

			if ($j.cookie) {
				var toggleCookieVal = $j.cookie(cookieName);
			}

			if (toggleCookieVal == "hcv") {
				$j("body").toggleClass("hc");
				jContrastToggle.text(hcvToggleLabel);
			}

			jContrastToggle.show().click(function(e) {
				e.preventDefault();

				// flip the class
				$j("body").toggleClass("hc");

				// if currently original version
				if ($j(this).text() == ovToggleLabel) {
					$j(this).text(hcvToggleLabel);
					if ($j.cookie) {
						$j.cookie(cookieName, 'hcv', { path: '/' });
					}

					// else if currently hi-contrast version
				} else if ($j(this).text() == hcvToggleLabel) {
					$j(this).text(ovToggleLabel);
					if ($j.cookie) {
						$j.cookie(cookieName, 'ov', { path: '/' });
					}
				}

			});

		},

		_initAccordion: function() {

			var self = this;
			var accordion = self.accordion;
			var jAccordion = $j('.' + accordion);
			var accordionItem = self.accordionItem

			$j('.' + self.productContainer, jAccordion).hide();
			$j(accordionItem, jAccordion).click(function() {

				myTarget = $j(this);

				var nextDiv = myTarget.next();
				var otherTitles = myTarget.siblings(accordionItem);
				var visibleSiblings = nextDiv.siblings('div:visible');

				if (visibleSiblings.length) {
					visibleSiblings.slideUp('fast', function() {
						nextDiv.slideToggle('fast');
					});
				} else {
					nextDiv.slideToggle('fast');
				}

				otherTitles.removeClass("open");
				myTarget.toggleClass("open");

			});

		},

		_initExternalLinks: function() {

			$j('a.js-external').click(function() {
				window.open($j(this).attr('href'));
				return false;
			});

		},

		_onReady: function() {

			var self = this;
			if (Code.UserAgent.isIE6) {
				self._navHandler();
			}



			$j('.overlay-image img').click(function() {
				$j('#VideoPlayer', '#ContentPrimaryWrap').css({ 'visibility': 'hidden' });
			});
			
			//the visible enabler is nested in the fancybox close function 

			$j('.overlay-image').fancybox({ overlayOpacity: 0.9, padding: 0 });
			$j('.overlay-flash').fancybox({ overlayOpacity: 0.9, padding: 0, frameWidth: 700, frameHeight: 500, showBackground: false, iFrameTransparency: true });


			

			var accordion = self.accordion;
			if ($j('.' + accordion).size()) {
				self._initAccordion();
			}

			self._initSearch();
			self._checkBrowser();
			self._pageTidy();
			self._contrastToggleHandler();
			self._initExternalLinks();

		}

	};

	$j().ready(function() {
		Website.Core._onReady();
	});

})(jQuery);	

