var subscription = new EmailSubscription(emailSubscriptionPath);

function subscriptionSubmit() {
	hideSubscriptionSuccess();
	hideSubscriptionFail();
	var name = document.subscription.name.value;
	var email = document.subscription.email.value;
	var type = (document.subscription.type[0].checked ?
		document.subscription.type[0].value :
		document.subscription.type[1].value
	);
	subscription.subscribe(name, email, type);
}

subscription.onRequestStarted = function() {
	showElement("subscription_request");
}

subscription.onRequestComplete = function() {
	hideElement("subscription_request")
}

subscription.onSuccess = function(name, email) {
	showElement("subscription_success");
	var spaceIndex = name.indexOf(' ');
	var firstName = (spaceIndex > 0) ? name.substring(0, spaceIndex) : '';
	var lastName = (spaceIndex > 0) ? name.substring(spaceIndex + 1) : name;
	document.location.href = billingRedirectPath + '?submit&email=' + encodeURIComponent(email) + '&fname=' + encodeURIComponent(firstName) +'&lname=' + encodeURIComponent(lastName);
}

subscription.onFail = function(errors) {
	showElement("subscription_fail");
	if (errors == null)
		return;
	for (var i = 0; i < errors.length; i++) {
		switch (errors[i]) {
			case subscription.E_NAME: showElement("subscription_fail_name"); break;
			case subscription.E_EMAIL: showElement("subscription_fail_email"); break;
			case subscription.E_TYPE: showElement("subscription_fail_type"); break;
			case subscription.E_EXISTS: showElement("subscription_fail_exists"); break;
		}
	}
}

function hideSubscriptionSuccess() {
	hideElement("subscription_success");
}

function hideSubscriptionFail() {
	hideElement("subscription_fail");
	hideElement("subscription_fail_name");
	hideElement("subscription_fail_email");
	hideElement("subscription_fail_type");
	hideElement("subscription_fail_exists");
}

function  showElement(id) {
	document.getElementById(id).style.display = "block";
}

function hideElement(id) {
	document.getElementById(id).style.display = "none";
}