$(document).ready(function () {
		//Start common code

		function scaleUp(obj) {
				$(obj).stop().animate({
						fontSize: "30px",
						borderWidth: 10
				}, 200);
		};


		function scaleDown(obj) {
				$(obj).stop().animate({
						fontSize: "20px",
						borderWidth: 1
				}, 50);
		};

		$('#secondaryNavigation li a').bind({
				mouseover: function () {
						if (jQuery(this).closest("li").hasClass("current")) {
								//do nothing
						}
						else {
								scaleUp(this);
						}
				},
				mouseout: function () {
						if (jQuery(this).closest("li").hasClass("current")) {
								//do nothing
						}
						else {
								scaleDown(this);
						}
				},
				focus: function () {
						if (jQuery(this).closest("li").hasClass("current")) {
								//do nothing
						}
						else {
								scaleUp(this);
						}
				},
				blur: function () {
						if (jQuery(this).closest("li").hasClass("current")) {
								//do nothing
						}
						else {
								scaleDown(this);
						}
				}
		});


		/*flavour selectors on the Flavours landing page*/
		/*load html into a modal box*/

		var currentPosition = 0;
		var currentFlavour = 0;

		/*give all the links and identity to be used as the currentPosition*/
		setLinkIdentity();
		function setLinkIdentity() {
				var n = 0;
				jQuery(".flavourSelector a").each(function () {
						jQuery(this).attr("id", n);
						n++;
				});
		};

		/*collect all the links for the .selector flavours*/
		var links = [];
		jQuery(".flavourSelector a").each(function () {
				links.push(jQuery(this).attr("href"));
		});


		var flavours = []
		jQuery(".flavourSelector a").each(function () {
				flavours.push(jQuery(this).attr("class"));
		});


		function makeAndLoadBox(url, currentPosition, currentFlavour) {
				jQuery("<div id='overlay' />").appendTo("body");
				jQuery("#overlay").after("<div id='box' />");
				jQuery("#box").load(url, function () {
						manageConetent(currentPosition);
						jQuery(this).addClass(currentFlavour);
				});

		};

		function reloadBox(url, currentPosition, currentFlavour) {
				jQuery("#box").load(url, function () {
						manageConetent(currentPosition);
						jQuery(this).attr("class", currentFlavour);
				});
		}

		function manageConetent(currentPosition) {
				jQuery("#close").hide();
				jQuery("#flavour").hide();
				makeNavigation("#flavour");
				setNavigation(currentPosition);
				jQuery("#flavour").fadeIn(function () {
						jQuery("#close").fadeIn();
				});
		}

		function makeNavigation(obj) {
				jQuery(obj).append("<a id='forward' class='boxNavigation' href='#'>Forward</a>");
				jQuery(obj).append("<a id='backward' class='boxNavigation' href='#'>Back</a>");
				jQuery(obj).append("<a id='close' href='#'>Close</a>");
		};

		function setNavigation(currentPosition) {
				jQuery("#forward").show();
				jQuery("#backward").show();
				n = parseFloat(currentPosition);
				var forwardUrl = links[n + 1];
				var backwardUrl = links[n - 1];

				if (forwardUrl != null) {
						jQuery("#forward").attr("href", forwardUrl);
				} else {
						jQuery("#forward").hide();
				};
				if (backwardUrl != null) {
						jQuery("#backward").attr("href", backwardUrl);
				} else {
						jQuery("#backward").hide();
				};
		};

		function positionBox() {
				var scrollTopVariable = jQuery(window).scrollTop();
				var width = jQuery(window).width();
				var height = jQuery(window).height();
				var xOffset = (width / 2) - (391);
				var yOffset = (height / 2) - (260) + scrollTopVariable;
				jQuery("#box").css("left", xOffset).css("top", yOffset);
				jQuery("#overlay").css("left", "0").css("top", scrollTopVariable);
		};

		function closeBox() {
				jQuery("#overlay").remove();
				jQuery("#box").remove();
		};

		/*events*/
		jQuery(".flavourSelector a").bind("click", function () {
				var startPosition = jQuery(this).attr("id");

				currentPosition = startPosition;
				var currentFlavour = flavours[currentPosition];
				var url = links[currentPosition];

				makeAndLoadBox(url + " #flavour", currentPosition, currentFlavour);
				positionBox();
				return false;
		});

		jQuery('#close').live('click', function () {
				closeBox();
				return false;
		});

		jQuery('#forward').live('click', function () {
				currentPosition++;
				currentFlavour++;
				var url = links[currentPosition];
				var currentFlavour = flavours[currentPosition];
				reloadBox(url + " #flavour", currentPosition, currentFlavour); ;
				return false;
		});

		jQuery('#backward').live('click', function () {
				currentPosition--;
				var url = links[currentPosition];
				var currentFlavour = flavours[currentPosition];
				reloadBox(url + " #flavour", currentPosition, currentFlavour);
				return false;
		});

		/* last in row on flavour selector*/
		jQuery(".flavourSelector li:nth-child(3n)").addClass("last");

		/* last in row on tumbnailsr*/
		jQuery("#thumbnails li:nth-child(3n)").addClass("last");

		/*progressive form load*/

		var boughtThisYearNo = jQuery('#boughtYearTrigger input[value=False]');
		var boughtThisYearYes = jQuery('#boughtYearTrigger input[value=True]');
		var boughtEverNo = jQuery('#boughtEver input[value=False]');
		var boughtEverYes = jQuery('#boughtEver input[value=True]');

		function boughtThisYear() {
				if (jQuery(boughtThisYearNo).is(':checked')) {
						//no
						jQuery('#boughtEver').slideDown();
				} else if (jQuery(boughtThisYearYes).is(':checked')) {
						//yes
						jQuery('#boughtEver input').attr('checked', false);
						jQuery('#boughtEver').slideUp();
						jQuery('#boughtThoughts').slideDown();
				} else {
						jQuery('#boughtEver').slideUp();
				};
		};

		function boughtEver() {
				if (jQuery(boughtEverNo).is(':checked')) {
						//no
						jQuery("#boughtThoughts").slideUp();
				} else if (jQuery(boughtEverYes).is(':checked')) {
						//yes
						jQuery("#boughtThoughts").slideDown();
				} else {
						//nothing
				};
		};

		boughtThisYear();
		boughtEver();

		jQuery('#boughtYearTrigger input').change(function () {
				boughtThisYear();
		});

		jQuery('#boughtEver input').change(function () {
				boughtEver();
		});

		/*faq*/

		var trigger = jQuery(".revealList .trigger a");

		function showContent(trigger) {
				jQuery(trigger).addClass("open");
				var content = jQuery(trigger).closest("dl").find(".content");
				jQuery(content).hide().removeClass("hide").slideDown();
				return false;
		};

		function hideContent(trigger) {
				jQuery(trigger).removeClass("open");
				var content = jQuery(trigger).closest("dl").find(".content");
				jQuery(content).slideUp();
				return false;
		};

		jQuery(trigger).toggle(function () {
				showContent(this);
		}, function () {
				hideContent(this);
		});

		/*comp terms*/

		var compTrigger = jQuery("#ruleslink");

		function showRules(compTrigger) {
				var content = jQuery("#rulestext");
				jQuery(content).hide().removeClass("hide").slideDown();
				return false;
		};

		function hideRules(trigger) {
				var content = jQuery("#rulestext");
				jQuery(content).slideUp();
				return false;
		};

		jQuery(compTrigger).toggle(function () {
				showRules(this);
		}, function () {
				hideRules(this);
		});

		//primary navigation fix
		jQuery("#primaryNavigation li:last").addClass("last");

		/* Star Rating */
		/* shows error in development, due to paths */
		$("fieldset.rate ul").remove();
		$("fieldset.rate h2").after('<ul class="rater"></ul>');
		var n = 1;
		while (n < 6) {
				$("fieldset.rate ul.rater").append('<li><a href="#" title="' + n + ' out of 5 stars" class="star_' + n + '">' + n + '</a></li>');
				n++;
		};

		$("fieldset.rate ul a").click(function () {

				var val = $(this).text();
				var id = $(".pageid").text();

				$.ajax({
						type: "POST",
						url: "http://www.actimel.co.uk/_WebServices/Rating.svc/SetAnonRating",
						contentType: "application/json; charset=utf-8",
						cache: false,
						datatype: "json",
						data: $.toJSON({ sitePageId: id, rating: val }),
						success: function (data, textStatus, XMLHttpRequest) {
								$("fieldset.rate ul.rater").replaceWith('<span class="star-' + val + '" title="You rated this ' + val + '/5 Stars">' + val + '</span>');
								$("fieldset.rate h2+span").after('<p>Thanks for rating this recipe!</p>');
						},
						error: function (request, status, error) {
								alert("There was an error. Please try again.");
						}
				});
				return false;
		});

		/* <snippet author="Barney" date="25/10/2010"> */

		(function ($) {
				/* <snippet author="Barney" date="25/10/2010" description="faulty Google Analytics error catcher - remove non-link trackers"> */

				// If onclicks attempt to pass empty strings, remove them
				removeTrackers = function (force) {
						var act = function () {
								$('a[onclick]').each(function () {
										if ((this.getAttribute('onclick') + '').match(/('')/) || !window.pageTracker)
												$(this).removeAttr('onclick');
								})
						}
						// Is Google Analytics going to give us hassle?
						if (force) {
								act();
						} else if (window._gaq) {
								// run onload or after existing onload
								try {
										(_ = window.onload) instanceof Function ?
														window.onload = function () { _(); act() } :
														window.onload = act()
								} catch (e) { /* IE falls over */ }
						}
				}
				/* </snippet> */

				/* <snippet author="Barney" date="27/10/2010" description="slider script" */
				slider = {
						data: { sliderItems: [] },
						contents: '[data-behaviour*=sliderContents]',
						controls: '.sliderControls a',
						act: function () {
								// only run once, and only if slider contents are available
								if (this.init || !$(this.contents).length) return;

								$(slider.contents)
										.wrap('<li class="sliderItem"></li>')
												.closest('.sliderItem')
												.wrapAll('<div class="sliderWrapper"><div class="sliderOcclusion"><ul class="sliderList"></ul></div></div>')
														.closest('.sliderWrapper')
														.append('<div class="sliderControls"><a href="#" class="sliderBack" data-behaviour="-1" style="display:none" title="Back">&#171;</a><a href="#" class="sliderNext" data-behaviour="+1" title="Next">&#187;</a></div>');

								removeTrackers(true);
								this.init = true;
						}
				}

				$(slider.controls).live('click', function (e) {
						e.preventDefault();
						var control = $(this),
								sliderList = $(this).closest('.sliderWrapper').find('.sliderList');
						var unitLength = $(sliderList).children().length,
								unitWidth = $(sliderList).children().eq(0).width();
						var newLeft = ~ ~$(sliderList).css('left').split('px')[0] + unitWidth * -$(control).attr('data-behaviour');

						if (newLeft >= 0) {
								newLeft = 0;
								$('.sliderBack').hide().siblings().show()
						} else if (newLeft <= unitWidth * -(unitLength - 1)) {
								$('.sliderNext').hide().siblings().show()
						} else {
								$('.sliderControls a').show()
						}

						$(sliderList).not(':animated')
						.animate({ left: newLeft + 'px' })
				})
				/* </snippet> */

				/* <snippet author="Barney" date="25/10/2010" description="AJAX tab mechanism"> */
				// quick function for writing data-behaviour attribute selectors
				behaviour = function (props) {
						if (typeof props == 'string') props = [props];
						for (str = ''; val = props.pop(); ) {
								str += '[data-behaviour~=' + val + ']';
								if (props.length) str += ','
						}
						return str;
				}

				switchTab = function (el) {
						context = $(el).parents('[data-behaviour*=tabWrapper]');
						link = $(el).attr('href');
						tab = link.match(/#.+/)[0];
						el = $(context).find('.nav a[href*=' + $(el).attr('href') + ']').parent();

						if ($(tab).hasClass('current')) return false;

						// ajax tab content from its static instance
						if ($(tab).is(':empty')) {
								$(tab)
												.load(link + '?' + new Date().getTime() + ' ' + tab + ' div', function () {
														slider.act();
												});
								removeTrackers();
						}

						$(context)
										.find('[data-behaviour*=tabLink], [data-behaviour*=tabContent]')
												.removeClass('current');

						$(tab).add(el).addClass('current');
				}
				/* </snippet> */

				$(document).ready(function () {
						$('[data-behaviour*=tabLink] a').live('click', function (e) {
								e.preventDefault();
								switchTab(this)
						});
						removeTrackers();
						slider.act();
				})
		} (jQuery));

		/* </snippet> */

		/* <snippet author="Barney" date="17/11/2011" description="Switch themes (debug)"> */

		window.getHash = function(str){
			var	
				hash = location.hash.substr(1).split(/[^\\]&/g),
				obj = {},
				pair;

			while(hash.length){
				pair = hash.shift().split('=');

				if(!str || pair[0].match(str))
					obj[pair[0]] = pair[1];
			};

			return obj;
		};

		(function switchTheme(){
			var 
				theme = getHash('theme').theme,
				$link = $('link[href*=/Theme.css]'),
				link = $link[0];

			if(!theme || !link)
				return false;

			(function init(){
				$link
					.remove()
					.attr(
						'href',
						link.href.replace(/\/\w+\/Theme.css/g,'/' + theme + '/Theme.css')
					)
					.appendTo('body');
			}());
		}());

		/* </snippet> */

		//safari fix for font base size
		if (navigator.userAgent.indexOf('Safari') != -1 &&
				navigator.userAgent.indexOf('Chrome') == -1) {
				jQuery("body").addClass("safari");
		};

		//End common code       
});



