/*
	global.js
	actforme.org
*/


function validateCalculator() {
	var el = $('start');
	if ((el.value == '') || (el.value == el.title)) {
		alert('Please enter your starting address.');
		el.focus();
		return false;
	}		

	el = $('end');
	if ((el.value == '') || (el.value == el.title)) {
		alert('Please enter your ending address.');
		el.focus();
		return false;
	}

	return true;
}

/* ---------------------------------------------------------------------------
	ghosted text boxes */

function addTextBoxGhosting(input) {
	if (input.title == '') return;
	
	input.onblur = function() {
		if (input.value == '')
			input.value = input.title;
		if (input.value == input.title)
			input.setStyle('color', '#c1c1c1');
	};
	input.onfocus = function() {
		if (input.value == input.title)
			input.value = '';
		input.setStyle('color', '#000000');
	};
	
	input.onblur();
}

/* ---------------------------------------------------------------------------
	image animation */
	
var currentImageNum;
var imageCount;
var countUntilPromo = 0;
var promoFrequency = 3;
var imageLoopInterval = null;
var imageDelay = 6;


function preloadNextImage() {
	var nextImageNum = (currentImageNum == imageCount) ? 1 : currentImageNum + 1;
	var img = new Image();
	img.src = '_images/home_image_' + nextImageNum + '.jpg';
}

function checkForPromo() {
	countUntilPromo--;
	if (countUntilPromo < 0)
		countUntilPromo = promoFrequency;
	return (countUntilPromo == 0);
}

function showPromo() {
	var promoImage = $('image_promo');
	if (promoImage != null) {
		promoImage.setStyle('opacity', '0.0');
	} else {
		promoImage = new Element('img', {
				'id': 'image_promo',
				'src': '_images/home_image_contest.jpg',
				'usemap': '#map_promo',
				'styles': {
					'opacity': '0.0'
				}
			}
		);
	}
	promoImage.inject(promoImage.parentNode);
	
	promoImage.set('tween', {duration: 'long'});
	promoImage.tween('opacity', '1.0');
}

function showNextImage() {
	// short-circuit if it's time to show the promo image
	if (checkForPromo()) {
		showPromo();
		return;
	}

	var currentImage = $('image_' + currentImageNum);
	if (currentImage == null)
		currentImage = $('image_promo');
		
	var nextImageNum = (currentImageNum == imageCount) ? 1 : currentImageNum + 1;

	// make sure the next image doesn't already exist
	var nextImage = $('image_' + nextImageNum);
	if (nextImage != null) {
		nextImage.setStyle('opacity', '0.0');
	} else {
		nextImage = new Element('img', {
				'id': 'image_' + nextImageNum,
				'src': '_images/home_image_' + nextImageNum + '.jpg',
				'usemap': '#map_image',
				'styles': {
					'opacity': '0.0'
				}
			}
		);
	}
	nextImage.inject(currentImage.parentNode);
	
	nextImage.set('tween', {duration: 'long'});
	nextImage.tween('opacity', '1.0');

	currentImageNum = nextImageNum;
	
	preloadNextImage();
}

function startImageAnimation() {
	if ($('slideshow') == null) return;
	
	if (imageLoopInterval != null)
		clearInterval(imageLoopInterval);
	
	preloadNextImage();
	imageLoopInterval = setInterval('showNextImage()', imageDelay * 1000);
}


/* ---------------------------------------------------------------------------
	message scrolling */

var messages = [
			'67 million riders use AC Transit each year.',
			'AC Transit has 105 bus lines and 6,500 bus stops servicing the Bay Area.',
			'The AC Transit fleet contains 682 buses, including zero-emissions buses.',
			'AC Transit supplies jobs to nearly 2,200 employees.',
			'AC Transit buses service 13 middle and high schools.'
			];

var messageDelay = 4.5; // seconds
var charDelay = 70; // milliseconds
var messageLoopInterval = null;
var currentChar = -1;
var currentMessage = 0;

function showNextCharacter() {
	currentChar++;
	
	// skip spaces so it doesn't stutter
	if (messages[currentMessage][currentChar] == ' ')
		currentChar++;
	
	$('messagetext').set('html', messages[currentMessage].substring(0, currentChar));
	
	if (currentChar == messages[currentMessage].length) {
		clearInterval(messageLoopInterval);
		currentMessage = (currentMessage + 1) % messages.length;
		currentChar = -1;
		messageLoopInterval = setInterval('startMessageScrolling();', messageDelay * 1000);
	}
}

function startMessageScrolling() {
	if ($('ticker') == null) return;

	if (messageLoopInterval != null)
		clearInterval(messageLoopInterval);
		
	messageLoopInterval = setInterval('showNextCharacter()', charDelay);
}


/* ---------------------------------------------------------------------------
	home page map */

function mapRollover(name, ids) {
	ids = $A(ids);
	ids.each(function (id) {
		$('map_' + id).src = '_images/map_' + id + '_' + name + '.jpg';
	});
}

function mapRollout() {
	for (var id = 1; id <= 7; id++) {
		$('map_' + id).src = '_images/map_' + id + '.jpg';
	}
}

/* ---------------------------------------------------------------------------
	about drop-down menu */

var hideMenuTimeout = null;
var hideMenuTimeout2 = null;

function showMenu() {
	clearTimeout(hideMenuTimeout);
	$('subnav').setStyle('display', 'block');
}

function hideMenu() {
	hideMenuTimeout = setTimeout("$('subnav').setStyle('display', 'none');", 10);
}

function showMenu2() {
	clearTimeout(hideMenuTimeout2);
	$('subnav2').setStyle('display', 'block');
}

function hideMenu2() {
	hideMenuTimeout2 = setTimeout("$('subnav2').setStyle('display', 'none');", 10);
}

function initMenu() {
	$('nav_about').addEvent('mouseenter', showMenu);	
	$('nav_about').addEvent('mouseleave', hideMenu);	
	$('nav_maps').addEvent('mouseenter', showMenu2);	
	$('nav_maps').addEvent('mouseleave', hideMenu2);	

	$('subnav').addEvent('mouseenter', showMenu);	
	$('subnav').addEvent('mouseleave', hideMenu);	
	$('subnav2').addEvent('mouseenter', showMenu2);	
	$('subnav2').addEvent('mouseleave', hideMenu2);	
}


/* ---------------------------------------------------------------------------
	set events */

window.addEvent('domready', function() {
	startImageAnimation();
	startMessageScrolling();
	initMenu();
	$$('input.ghost').each(addTextBoxGhosting);
});
