//Timeout variables
	var slideTimeout;
	var fadeInTimeout;
	var fadeOutTimeout;

//Number of message divs on the page
	var numOfSlides = 4;

//Timing variables
	//milliseconds to display each message before showing the next
	var slideSpeed = 4850;
	//milliseconds to wait between opacity changes
	var opacityDelay = 50;
	//percentage points to step by on opacity changes
	var opacityStep = 7;

//"Index" of next message div to show; default to 1 for first load
var nextSlideToShow = 1;

//Whether or not this is the first execution of the loop or not
var firstLoad = true;

//Find out if the user-agent is IE6 and store it
var usingIE6 = (navigator.userAgent.toLowerCase().indexOf('msie 6') != -1) && (navigator.userAgent.toLowerCase().indexOf('msie 7') == -1);

function setOpacity(obj, opacity) {
	opacity = (opacity == 100) ? 99.999 : opacity;
	//IE/Win
		if (!usingIE6) {
			obj.style.filter = "alpha(opacity:" + opacity + ")";
		}
	//Safari<1.2, Konqueror
		obj.style.KHTMLOpacity = opacity / 100;
	//Older Mozilla and Firefox
		obj.style.MozOpacity = opacity / 100;
	//Safari 1.2, newer Firefox and Mozilla, CSS3
		obj.style.opacity = opacity / 100;
}

function fadeIn(objId, opacity) {
	if (document.getElementById) {
		obj = document.getElementById(objId);
		if (opacity <= 100) {
			setOpacity(obj, opacity);
			opacity += opacityStep;
			fadeInTimeout = setTimeout("fadeIn('" + objId + "'," + opacity + ")", opacityDelay);
			//show("slideCallToAction");
		}
	}
}


function fadeOut(objId, opacity) {
	if (document.getElementById) {
		obj = document.getElementById(objId);
		if (opacity > (Math.abs(opacityStep) * -1) - 1) {
			setOpacity(obj, opacity);
			opacity -= opacityStep;
			fadeOutTimeout = setTimeout("fadeOut('" + objId + "'," + opacity + ")", opacityDelay);
		}
		else {
			obj.style.display = 'none';
			setOpacity(obj, 0);
		}
	}
}


function setActiveSlideLink(what) {
	document.getElementById('slideCallToAction').innerHTML = '';
	for (var i = 1; i <= numOfSlides; i++) {
		if (i != what) {
			document.getElementById('slideLink' + i).style.border = '2px solid #CCCCCC';
		}
		else {
			document.getElementById('slideLink' + i).style.border = '2px solid #2B6E98';
			document.getElementById('slideCallToAction').innerHTML = document.getElementById('slide' + i + 'CallToAction').innerHTML;
		}
	}
}


function getActiveSlideDivIndex() {
	for (var i = 1; i <= numOfSlides; i++) {
		if (document.getElementById('slide' + i).style.display == 'block') {
			return i;
		}
	}
	return 1;
}


function changeSlideDiv(showDiv, loop) {
	
	if (typeof showDiv == 'undefined') showDiv = nextSlideToShow;
	if (typeof loop == 'undefined') loop = true;
	
	setActiveSlideLink(showDiv);
	var currentSlideDivShowing = getActiveSlideDivIndex();
	
	//this block runs when the user clicks a message link
	if (!loop) {
		clearTimeout(slideTimeout);
		clearTimeout(fadeInTimeout);
		clearTimeout(fadeOutTimeout);
		//hide all divs that are not involved with this execution
		for (i = 1; i <= numOfSlides; i++) {
			if (i != showDiv) {
				document.getElementById('slide' + i).style.display = 'none';
				document.getElementById('slide' + i).style.zIndex = 0;
				setOpacity(document.getElementById('slide' + i), 0);
			}
		}
		document.getElementById('slide' + showDiv).style.display = 'block';
		document.getElementById('slide' + showDiv).style.zIndex = (numOfSlides * 10);
		setOpacity(document.getElementById('slide' + showDiv), 100);
	}
	
	//this block runs when the user has done nothing
	else {
		
		//this block should be the very first block to execute upon page load
		if (firstLoad) {
			document.getElementById('slide' + showDiv).style.display = 'block';
			document.getElementById('slide' + showDiv).style.zIndex = (numOfSlides * 10);
			firstLoad = false;
			nextSlideToShow = 2;
			slideTimeout = setTimeout("changeSlideDiv()", slideSpeed);
			/*
				We need to prevent (opacityDelay * (100 / opacityStep)) from being greater than slideSpeed 
				or else we could have unpredictable results on the user's screen. Also, we want slideSpeed 
				to be how long the message is displayed at 100% opacity, instead of how long we wait before 
				changing what is displayed, so we will increment slideSpeed by (opacityDelay * (100 / opacityStep)) 
				now that the firstLoad is over.
			*/
			slideSpeed = Math.round(slideSpeed + (opacityDelay * (100 / opacityStep)));
		}
		
		//this block should run every n seconds if it is not the first load
		else {
			
			//hide all divs that are not involved with this execution
			for (i = 1; i <= numOfSlides; i++) {
				if ((i != currentSlideDivShowing) && (i != showDiv)) {
					document.getElementById('slide' + i).style.display = 'none';
					document.getElementById('slide' + i).style.zIndex = 0;
					setOpacity(document.getElementById('slide' + i), 0);
				}
			}
			
			//put the div to show (showDiv) on top with 0% opacity
			document.getElementById('slide' + showDiv).style.display = 'block';
			document.getElementById('slide' + showDiv).style.zIndex = (numOfSlides * 10);
			setOpacity(document.getElementById('slide' + showDiv), 0);
			
			//put the div to hide (currentMessageDivShowing) underneath with 100% opacity
			document.getElementById('slide' + currentSlideDivShowing).style.display = 'block';
			document.getElementById('slide' + currentSlideDivShowing).style.zIndex = (numOfSlides * 10) - 10;
			setOpacity(document.getElementById('slide' + currentSlideDivShowing), 100);
			
			//fade in the div to show (showDiv) and fade out the div to hide (currentMessageDivShowing)
			//performing fadeIn and fadeOut simultaneously gives us smoother transitions between text and images
			if (!usingIE6) {
				fadeIn('slide' + showDiv, 0);
				fadeOut('slide' + currentSlideDivShowing, 100);
			}
			else {
				document.getElementById('slide' + showDiv).style.display = 'block';
				document.getElementById('slide' + showDiv).style.zIndex = (numOfSlides * 10);
				document.getElementById('slide' + currentSlideDivShowing).style.display = 'none';
			}
			
			if (showDiv + 1 > numOfSlides) {
				nextSlideToShow = 1;
			}
			else {
				nextSlideToShow = ++showDiv;
			}
			
			slideTimeout = setTimeout("changeSlideDiv()", slideSpeed);
			
		}
		
	}
	
}

function showBlock(what) {
	document.getElementById(what).style.display = 'block';
}

function hide(what) {
	document.getElementById(what).style.display = 'none';
}

function showMenuBlock(what) {
	document.getElementById('menuNav' + what).style.color='#C76456';
	document.getElementById('menuNav' + what).style.textDecoration='underline';
	document.getElementById(what + 'sMenu').style.display = 'block';
}

function hideMenuBlock(what) {
	document.getElementById('menuNav' + what).style.color='#517398';
	document.getElementById('menuNav' + what).style.textDecoration='none';
	document.getElementById(what + 'sMenu').style.display = 'none';
	document.getElementById('menuNavSale').style.color='#C76456';
}

function toggleBlock(what) {
	handle = document.getElementById(what);
	if (handle) {
		if (handle.style.display == 'none') {
			handle.style.display = 'block';
		}
	}
}

function toggleImage(what) {
	handle = document.getElementById(what);
	if (handle) {
		if (handle.style.display == 'none') {
			handle.style.display = 'inline';
		}
	}
}


function firstLoad() {
	var firstload = true;
	
	if (firstload = true) {
		try {
			document.getElementById('suggestion1').style.display = 'block';
		}
		catch (e) { }
		try {
			document.getElementById('largeImage1').style.display = 'inline';
		}
		catch (e) { }
		firstload = false;
	}
	
}			

function toggleCeleb(showWhat) {
	if (showWhat != 'suggestion1') hide('suggestion1');
	if (showWhat != 'suggestion2') hide('suggestion2');
	if (showWhat != 'suggestion3') hide('suggestion3');
	toggleBlock(showWhat);
}

function toggleCelebImage(showWhat) {
	if (showWhat != 'largeImage1') hide('largeImage1');
	if (showWhat != 'largeImage2') hide('largeImage2');
	if (showWhat != 'largeImage3') hide('largeImage3');
	toggleImage(showWhat);
}


<!-- new lightbox functions for promotion codes -->

function hideAllLightboxDivs() {
	try { document.getElementById('overlay').style.display = 'none'; } catch (err) { }
	try { document.getElementById('ajaxEmailForm').style.display = 'none'; } catch (err) { }
	try { document.getElementById('freshPressLightbox').style.display = 'none'; } catch (err) { }
	try {
		var lightboxes = getElementsByClassName('lightBoxDiv');
		for (var i = 0; i < lightboxes.length; i++) {
			lightboxes[i].style.display = 'none';
		}
	}
	catch (err) { }
}

function showLightbox(id) {
	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
		var ieversion = new Number(RegExp.$1);
		if ((ieversion >= 6) || (ieversion >= 5)) {
			window.scrollTo(0,0);
		}
	}
	show('overlay');
	show(id);
}

function hideLightbox(id) {
	hide('overlay');
	hide(id);
}
function show(what, displayMode) {
	if (typeof(displayMode) == 'undefined') displayMode = 'block';
	getHandle(what).style.display = displayMode;
}

function showBlock(what) {
	show(what);
}

function showInline(what) {
	show(what, 'inline');
}

function hide(what) {
	getHandle(what).style.display = 'none';
}
function getHandle(what) {
	var handle;
	if (typeof(what) == 'string') {
		handle = document.getElementById(what);
	}
	else {
		handle = what;
	}
	return handle;
}

var getElementsByClassName = function (className, tag, elm) {
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className), 
			nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
			returnElements = [],
			current;
			for (var i=0, il=elements.length; i<il; i+=1) {
				current = elements[i];
				if (!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "), 
			classesToCheck = "",
			xhtmlNamespace = "http://www.w3.org/1999/xhtml",
			namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
			returnElements = [],
			elements,
			node;
			for (var j=0, jl=classes.length; j<jl; j+=1) {
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
			classesToCheck = [],
			elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
			current,
			returnElements = [],
			match;
			for (var k=0, kl=classes.length; k<kl; k+=1) {
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for (var l=0, ll=elements.length; l<ll; l+=1) {
				current = elements[l];
				match = false;
				for (var m=0, ml=classesToCheck.length; m<ml; m+=1) {
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};
//fgnass.github.com/spin.js#v1.2.2
(function(a,b,c){function n(a){var b={x:a.offsetLeft,y:a.offsetTop};while(a=a.offsetParent)b.x+=a.offsetLeft,b.y+=a.offsetTop;return b}function m(a){for(var b=1;b<arguments.length;b++){var d=arguments[b];for(var e in d)a[e]===c&&(a[e]=d[e])}return a}function l(a,b){for(var c in b)a.style[k(a,c)||c]=b[c];return a}function k(a,b){var e=a.style,f,g;if(e[b]!==c)return b;b=b.charAt(0).toUpperCase()+b.slice(1);for(g=0;g<d.length;g++){f=d[g]+b;if(e[f]!==c)return f}}function j(a,b,c,d){var g=["opacity",b,~~(a*100),c,d].join("-"),h=.01+c/d*100,j=Math.max(1-(1-a)/b*(100-h),a),k=f.substring(0,f.indexOf("Animation")).toLowerCase(),l=k&&"-"+k+"-"||"";e[g]||(i.insertRule("@"+l+"keyframes "+g+"{"+"0%{opacity:"+j+"}"+h+"%{opacity:"+a+"}"+(h+.01)+"%{opacity:1}"+(h+b)%100+"%{opacity:"+a+"}"+"100%{opacity:"+j+"}"+"}",0),e[g]=1);return g}function h(a,b,c){c&&!c.parentNode&&h(a,c),a.insertBefore(b,c||null);return a}function g(a,c){var d=b.createElement(a||"div"),e;for(e in c)d[e]=c[e];return d}var d=["webkit","Moz","ms","O"],e={},f,i=function(){var a=g("style");h(b.getElementsByTagName("head")[0],a);return a.sheet||a.styleSheet}(),o=function r(a){if(!this.spin)return new r(a);this.opts=m(a||{},r.defaults,p)},p=o.defaults={lines:12,length:7,width:5,radius:10,color:"#000",speed:1,trail:100,opacity:.25,fps:20},q=o.prototype={spin:function(a){this.stop();var b=this,c=b.el=l(g(),{position:"relative"}),d,e;a&&(e=n(h(a,c,a.firstChild)),d=n(c),l(c,{left:(a.offsetWidth>>1)-d.x+e.x+"px",top:(a.offsetHeight>>1)-d.y+e.y+"px"})),c.setAttribute("aria-role","progressbar"),b.lines(c,b.opts);if(!f){var i=b.opts,j=0,k=i.fps,m=k/i.speed,o=(1-i.opacity)/(m*i.trail/100),p=m/i.lines;(function q(){j++;for(var a=i.lines;a;a--){var d=Math.max(1-(j+a*p)%m*o,i.opacity);b.opacity(c,i.lines-a,d,i)}b.timeout=b.el&&setTimeout(q,~~(1e3/k))})()}return b},stop:function(){var a=this.el;a&&(clearTimeout(this.timeout),a.parentNode&&a.parentNode.removeChild(a),this.el=c);return this}};q.lines=function(a,b){function e(a,d){return l(g(),{position:"absolute",width:b.length+b.width+"px",height:b.width+"px",background:a,boxShadow:d,transformOrigin:"left",transform:"rotate("+~~(360/b.lines*c)+"deg) translate("+b.radius+"px"+",0)",borderRadius:(b.width>>1)+"px"})}var c=0,d;for(;c<b.lines;c++)d=l(g(),{position:"absolute",top:1+~(b.width/2)+"px",transform:"translate3d(0,0,0)",opacity:b.opacity,animation:f&&j(b.opacity,b.trail,c,b.lines)+" "+1/b.speed+"s linear infinite"}),b.shadow&&h(d,l(e("#000","0 0 4px #000"),{top:"2px"})),h(a,h(d,e(b.color,"0 0 1px rgba(0,0,0,.1)")));return a},q.opacity=function(a,b,c){b<a.childNodes.length&&(a.childNodes[b].style.opacity=c)},function(){var a=l(g("group"),{behavior:"url(#default#VML)"}),b;if(!k(a,"transform")&&a.adj){for(b=4;b--;)i.addRule(["group","roundrect","fill","stroke"][b],"behavior:url(#default#VML)");q.lines=function(a,b){function k(a,d,i){h(f,h(l(e(),{rotation:360/b.lines*a+"deg",left:~~d}),h(l(g("roundrect",{arcsize:1}),{width:c,height:b.width,left:b.radius,top:-b.width>>1,filter:i}),g("fill",{color:b.color,opacity:b.opacity}),g("stroke",{opacity:0}))))}function e(){return l(g("group",{coordsize:d+" "+d,coordorigin:-c+" "+ -c}),{width:d,height:d})}var c=b.length+b.width,d=2*c,f=e(),i=~(b.length+b.radius+b.width)+"px",j;if(b.shadow)for(j=1;j<=b.lines;j++)k(j,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(j=1;j<=b.lines;j++)k(j);return h(l(a,{margin:i+" 0 0 "+i,zoom:1}),f)},q.opacity=function(a,b,c,d){var e=a.firstChild;d=d.shadow&&d.lines||0,e&&b+d<e.childNodes.length&&(e=e.childNodes[b+d],e=e&&e.firstChild,e=e&&e.firstChild,e&&(e.opacity=c))}}else f=k(a,"animation")}(),a.Spinner=o})(window,document);
