var toggled = false;
var fieldHasFocus = false;
var timeout = null;

/* Referenced */
function toggleDetails() {
	$('banner_close').setStyle({display: "block"}); // Close
	$('join_share').setStyle({display: "block"}); // Join the Blizzard Fan Club. Share the Blizzard Love.
	$('secondary').setStyle({display: "block"}); // Birthday and Email
	$('submit_email').setStyle({display: "block"}); // Send
	$('message').addClassName('add_margin');
	$('submit_name').setStyle({display: "none"}); // Go
	if (fieldHasFocus) {
		timeout = setTimeout(toggleDetails, 300);
		return;
	}
	return true;
}

function submitName() {
	//alert ("You clicked 'Go'");
	clearTimeout(timeout);
	if(!toggled) {
		timeout = setTimeout(toggleDetails, 0);
	}
	urchinTracker('/bfcacquisition/go/');
}

function resetBanner() {
	$('formSubscribe').reset();
	$('banner_close').setStyle({display: "none"}); // Close
	$('join_share').setStyle({display: "none"}); // Join the Blizzard Fan Club. Share the Blizzard Love.
	$('message').innerHTML = "<img src=\"/templates/img/bfc_banner/receive_coupon.gif\" alt=\"Receive a buy one, get one free Blizzard treat coupon.\" />";
	$('message').removeClassName('add_margin');
	$('submit_name').setStyle({display: "block"}); // Go
	$('primary').setStyle({display: "block"}); // First Name and Last Name
	$('secondary').setStyle({display: "none"}); // Birthday and Email
	$('submit_email').setStyle({display: "none"}); // Send
	if(!toggled) {
		clearTimeout(timeout);
	} else {
		timeout = setTimeout(toggleDetails, 0);
	}
	urchinTracker('/bfcacquisition/close/');
}

function submitForm() {
	if (oldEnough()) {
		// Prototype has two built-in methods--hide() and show()--which set an element's style.display property to 'none' and 'block' respectively.
		$('banner_close').hide(); // Close
		$('join_share').hide(); // Join the Blizzard Fan Club. Share the Blizzard Love.
		$('primary').hide(); // First Name and Last Name
		$('secondary').hide(); // Birthday and Email
		$('message').innerHTML = "<img src=\"/templates/img/bfc_banner/confirmation.gif\" alt=\"\" />";
		oldEnough();
		// SEND AJAX REQUEST HERE
		$('formSubscribe').request();
		urchinTracker('/bfcacquisition/success/');
	} else {
		alert("You must be at least 13 years of age to participate in the Blizzard Fan Club. If you're younger than 13 years of age, visit our kids website at Deeqs.com.");
	}
	return false;
}

/*
function validateForm() {
	if ($('FirstName') && !document.getElementById('FirstName').value.replace(/ /g,"").length > 0) {
		alert("First Name is required.");
		document.getElementById('FirstName').focus();
		return false;
	}
	if ($('FirstName') && document.getElementById('FirstName').value.length > 50) {
		alert("First Name is too long.");
		document.getElementById('FirstName').focus();
		return false;
	}
	if ($('LastName') && !document.getElementById('LastName').value.replace(/ /g,"").length > 0) {
		alert("Last Name is required.");
		document.getElementById('LastName').focus();
		return false;
	}
	if ($('LastName') && document.getElementById('LastName').value.length > 50) {
		alert("Last Name is too long.");
		document.getElementById('LastName').focus();
		return false;
	}
	if ($('DOBM') && parseInt(document.getElementById('DOBM').value) != document.getElementById('DOBM').value || document.getElementById('DOBM').value < 1 || document.getElementById('DOBM').value > 12) {
		alert("Birthdate month is required.");
		document.getElementById('DOBM').focus();
		return false;
	}
	if ($('DOBD') && parseInt(document.getElementById('DOBD').value) != document.getElementById('DOBD').value || document.getElementById('DOBD').value < 1 || document.getElementById('DOBD').value > 31) {
		alert("Birthdate date is required.");
		document.getElementById('DOBD').focus();
		return false;
	}
	if ($('DOBY') && document.getElementById('DOBY').value.replace(/ /g,"").length > 0 && (parseInt(document.getElementById('DOBY').value)!=document.getElementById('DOBY').value || document.getElementById('DOBY').value.replace(/ /g,"").length != 4)) {
		alert("Birthdate year is required.");
		document.getElementById('DOBY').focus();
		return false;
	}
	if ($('DOBM') && document.getElementById('DOBM').value.replace(/ /g,"").length > 0 && document.getElementById('DOBD').value.replace(/ /g,"").length > 0 && document.getElementById('DOBY').value.replace(/ /g,"").length > 0 && !isValidDate(document.getElementById('DOBM').value.replace(/ /g,"")-1, document.getElementById('DOBD').value.replace(/ /g,""),document.getElementById('DOBY').value.replace(/ /g,""))) {
		alert("Birthdate is invalid");
		document.getElementById('DOBY').focus();
		return false;
	}
	if ($('EmailAddress') && !document.getElementById('EmailAddress').value.replace(/ /g,"").length > 0) {
		alert("Email is required.");
		document.getElementById('EmailAddress').focus();
		return false;
	}
	if ($('EmailAddress') && document.getElementById('EmailAddress').value.length > 255) {
		alert("Email is too long.");
		document.getElementById('EmailAddress').focus();
		return false;
	}
	if ($('EmailAddress') && !document.getElementById('EmailAddress').value.match(/^(.+)@([^\(\);:,<>]+\.[a-zA-Z]{2,4})/)) {
		alert("Email is invalid.");
		document.getElementById('EmailAddress').focus();
		return false;
		// old regex (wasn't working with one letter domains) : /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/
	}
	if (!oldEnough()) {
		return false;
	}
	submitForm();
	urchinTracker('/bfcacquisition/send/');
}

function isValidDate(month, day, year) {
	var dteDate = new Date();
	dteDate.setFullYear(year, month, day);
	return ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()));
}
*/

function oldEnough() {
	var minAge	= 13;
	var day		= parseInt($('DOBD').value);
	var month 	= parseInt($('DOBM').value - 1);
	var year	= parseInt($('DOBY').value);
	var age		= new Date((year + minAge), month, day);
	var today	= new Date();
	if (today.getTime() - age.getTime() < 0) {
		return false;
	} else {
		return true;
	}										
}

function clearTextFields() {
	//alert ("clearTextFields");
	$('FirstName').onfocus = function() {
		// if already cleared, do nothing
		if (this._cleared) return
	
		// when this code is executed, "this" keyword will in fact be the field itself
		this.clear()
		this._cleared = true
	}
	$('LastName').onfocus = function() {
		// if already cleared, do nothing
		if (this._cleared) return
	
		// when this code is executed, "this" keyword will in fact be the field itself
		this.clear()
		this._cleared = true
	}
	$('EmailAddress').onfocus = function() {
		// if already cleared, do nothing
		if (this._cleared) return
	
		// when this code is executed, "this" keyword will in fact be the field itself
		this.clear()
		this._cleared = true
	}
}

Event.observe(window, 'load', function() {
  clearTextFields();
  new RSV({
    displayType: 'alert-all',
		formID: "formSubscribe",
		onCompleteHandler: submitForm,
    rules: [
      "required,FirstName,Please enter your first name.",
      "required,LastName,Please enter your last name.",
			"valid_date,DOBM,DOBD,DOBY,any_date,Please enter a valid date.",
      "valid_email,EmailAddress,Please enter a valid email address."
    ]
  });
});
