function hpslidesBack(e) {
	var slides = $$('.hpslide');
	if (window.homeslide == 0) {
		var max = slides.size();
		force_home_slide(max);
	} else {
		force_home_slide(window.homeslide);
	}
}

function hpslidesFwd(e) {
	var slides = $$('.hpslide');
	var max = slides.size();
	if ((window.homeslide + 2) > max) {
		force_home_slide(1);
	} else {
		force_home_slide(window.homeslide + 2);
	}
}

function imgHover(e) {
	var items = {
		hpScrollerPrev : 'btn_previous_over.jpg', 
		hpScrollerNext : 'btn_advance_over.jpg'
	};
	var el = e.findElement('img');
	if (el && items[el.id]) {
		el.src = window.BASE_URL + 'images/' + items[el.id];
	}
}

function imgUnhover(e) {
	var items = {
		hpScrollerPrev : 'btn_previous_up.jpg', 
		hpScrollerNext : 'btn_advance_up.jpg'
	};
	var el = e.findElement('img');
	if (el && items[el.id]) {
		el.src = window.BASE_URL + 'images/' + items[el.id];
	}
}

function force_home_slide_SEQUENTIAL(n) {
	var dx = n - 1;
	var slides = $$('.hpslide');
	if (slides[dx]) {
		// Advance to the specified slide.
		if (Prototype.Browser.IE === true) {
			// Using IE
			slides[window.homeslide].style.display = 'none';
			slides[dx].style.opacity = 1.0;
			slides[dx].style.display = 'block';
			window.homeslide = dx;
		} else {
			// Not using IE
			slides[dx].style.opacity = 0.0;
			slides[dx].style.display = 'block';					
			new Effect.Opacity(slides[window.homeslide], {
				from: 1.0, to: 0.0,
				duration: 0.4, 
				afterFinish: function() {
					slides[window.homeslide].style.display = 'none';
					new Effect.Opacity(slides[dx], {
						from: 0.0, to: 1.0, 
						duration: 0.4	
					});
					window.homeslide = dx;
				}
			});
		}
	}
}

function cycle_home_slides() {
	var slides = $$('.hpslide');
	if (slides[window.homeslide + 1]) {
		// Advance to the next slide
		force_home_slide(window.homeslide + 2);
	} else {
		// Cycle back to the first slide
		force_home_slide(1);
	}
}

function force_home_slide(n) {
	var dx = n - 1;
	var slides = $$('.hpslide');
	if (slides[dx]) {
		// Clear the interval in progress.
		clearInterval(window.homeCycler);
		
		// Advance to the specified slide.
		slides[dx].style.zIndex = 1;
		slides[dx].style.opacity = 1.0;
		slides[dx].style.display = 'block';
		if (Prototype.Browser.IE === true) {
			// Using IE.
			slides[window.homeslide].style.display = 'none';
			slides[window.homeslide].style.zIndex = 1;
			slides[dx].style.zIndex = 2;
			window.homeslide = dx;
		} else {
			// Non-IE browsers.
			new Effect.Opacity(slides[window.homeslide], {
				from: 1.0, to: 0.0, 
				duration: 0.75, 
				afterFinish: function() {
					slides[window.homeslide].style.display = 'none';
					slides[window.homeslide].style.zIndex = 1;
					slides[dx].style.zIndex = 2;
					window.homeslide = dx;
				}
			});
		}
		
		// Start a new interval.
		window.homeCycler = setInterval(cycle_home_slides, 7000);
	}	
}

function hpScrollFwd(e) {
	if (window.hpScrollDisabled === true) { return false; }
	if (window.hpScrollerPos > 3) { 
		new Effect.Shake('hp_scroller', { duration: 0.4 });
		return false; 
	}
	window.hpScrollDisabled = true;
	var endLeft;
	var doMove = false;
	switch (window.hpScrollerPos) {
		case 1:
			endLeft = -600;
			doMove = true;
			break;
		case 2:
			endLeft = -1200;
			doMove = true;
			break;
		case 3:
			// return to beginning
			endLeft = 0;
			doMove = true;
			break;
	}
	if (doMove === true) {
		var morphParams = {
			duration: 0.4, 
			after: function() {
				if (window.hpScrollerPos == 3) { window.hpScrollerPos = 1; } else { window.hpScrollerPos++; }
				$$('.scrollerProg').each(function(sp) {
					if (sp.id == 'scrollerProg_'+(window.hpScrollerPos)) {
						sp.src = window.BASE_URL + 'images/circ-filled.gif';
					} else {
						sp.src = window.BASE_URL + 'images/circ-unfilled.gif';
					}
				});
				window.hpScrollDisabled = false;
			}
		};
		if (Prototype.Browser.WebKit === true) {
			$('hp_scroller').morph('-webkit-transform: translate(' + endLeft + 'px, 0px)', morphParams);
		} else {
			$('hp_scroller').morph('left: ' + endLeft + 'px', morphParams);
		}
	} else {
		window.hpScrollDisabled = false;
	}
}

function hpScrollBack(e) {
	if (window.hpScrollDisabled === true) { return false; }
	if (window.hpScrollerPos < 1) { 
		new Effect.Shake('hp_scroller', { duration: 0.4 });
		return false; 
	}
	window.hpScrollDisabled = true;
	var endLeft;
	var doMove = false;
	switch (window.hpScrollerPos) {
		case 1:
			// cycle to end
			endLeft = -1200;
			doMove = true;
			break;
		case 2:
			endLeft = 0;
			doMove = true;
			break;
		case 3:
			endLeft = -600;
			doMove = true;
			break;
	}
	if (doMove === true) {
		var morphParams = {
			duration: 0.4, 
			after: function() {
				if (window.hpScrollerPos == 1) { window.hpScrollerPos = 3; } else { window.hpScrollerPos--; }
				$$('.scrollerProg').each(function(sp) {
					if (sp.id == 'scrollerProg_' + (window.hpScrollerPos)) {
						sp.src = window.BASE_URL + 'images/circ-filled.gif';
					} else {
						sp.src = window.BASE_URL + 'images/circ-unfilled.gif';
					}
				});
				window.hpScrollDisabled = false;
			}
		};
		if (Prototype.Browser.WebKit === true) {
			$('hp_scroller').morph('-webkit-transform: translate(' + endLeft + 'px, 0px)', morphParams);
		} else {
			$('hp_scroller').morph('left: ' + endLeft + 'px', morphParams);
		}
	} else {
		window.hpScrollDisabled = false;
	}
}

function init_homepage() {
	window.homeslide = 0;
	window.homeCycler = setInterval(cycle_home_slides, 7000);
	window.hpScrollerPos = 1;
	window.hpScrollDisabled = false;
	$$('.hpslide')[0].style.zIndex = 2;
	$('hpslides-back').observe('click', hpslidesBack);
	$('hpslides-fwd').observe('click', hpslidesFwd);
	$('hpScrollerPrev').observe('click', hpScrollBack);
	$('hpScrollerPrev').observe('mouseover', imgHover);
	$('hpScrollerPrev').observe('mouseout', imgUnhover);
	$('hpScrollerNext').observe('click', hpScrollFwd);
	$('hpScrollerNext').observe('mouseover', imgHover);
	$('hpScrollerNext').observe('mouseout', imgUnhover);
}
Event.observe(window, 'load', init_homepage);
