var fSubsEl;
var thanksEl;
var cbNewMoonEL;
var cbThetaClassesEL;
var itEmailEL;

function bindSubscriptionElements( ) {
	fSubsEl = ge('News');
	fSubsEl.onsubmit = onSubscriptionFormSubmit;
	ge('subscribe-submit').onclick = onSubscriptionFormSubmit;
	
	thanksEl = ge('thanks');
	cbNewMoonEL = ge('NewMoon');
	cbThetaClassesEL = ge('ThetaClasses');
	itEmailEL = ge('Email');
}

function onSubscriptionFormSubmit( ) {
	if( itEmailEL.value == "" ) {
		alert("Please enter your email");
		return false;
	}
		
	if(!cbNewMoonEL.checked && !cbThetaClassesEL.checked) {
		alert("Please select mailing list");
		return false;
	}
	
	doSubscriptionRequest(createHTTPVarSpec({
		email: itEmailEL.value,
		moon: (cbNewMoonEL.checked ? 1 : 0),
		theta: (cbThetaClassesEL.checked ? 1 : 0)
	}),function( ) {
		fSubsEl.className = 'hide';
		thanksEl.className = 'show';
	},function( ) {
		//show error message
	});
	
	return false;
}

function doSubscriptionRequest( vals, success, failure ) {
	var xhr = createXMLHttpRequest();
	xhr.open("POST", "/action/subscribe.php", true);
	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	
	xhr.onload = function(){
		if(this.responseText == "success")
			success();
		else
			failure();
	};
	xhr.onerror = failure;
	
	xhr.send(vals);
}


window.onload = function( ) {
	bindSubscriptionElements();
};

if(!window.ge) function ge( sId ) {
	return document.getElementById(sId);
}
if(!window.createHTTPVarSpec) function createHTTPVarSpec( vars ) {
	var varsString = "";
	for( var key in vars ) {
		var value = vars[key];
		//value = value.replace(new RegExp("\\\+"), "%2B");
		varsString += '&' + key + '=' + value;
	}
	if (varsString.length > 0) {
		varsString = varsString.substring(1); // chomp initial '&'
	}
	return varsString;
}
if(!window.createXMLHttpRequest) function createXMLHttpRequest( ) {
	if( window.XMLHttpRequest )
		try { return new XMLHttpRequest(); } catch(e) {}
	else if( window.ActiveXObject ) {
		try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
		try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
	}
	return null;
}