// Sign up a subscriber.
function request_signup() {
	// The form is complete by default.
	form_complete = true;
	
	// Valid the required fields
	if(document.mlist_signup.name_first.value == ''){
		message = 'Your first name is a required field.';
		document.mlist_signup.name_first.focus();
		form_complete = false;
	}else if(document.mlist_signup.name_last.value == ''){
		message = 'Your last name is a required field.';
		document.mlist_signup.name_last.focus();
		form_complete = false;
	}else if(document.mlist_signup.email_address.value == '' || document.mlist_signup.email_address.value == 'e-mail address'){
		message = 'Your email address is a required field.';
		document.mlist_signup.email_address.focus();
		form_complete = false;
	}else if(document.mlist_signup.password.value == ''){
		message = 'A password is a required field.';
		document.mlist_signup.password.focus();
		form_complete = false;
	}else if(document.mlist_signup.address_1.value == ''){
		message = 'Your address is a required field.';
		document.mlist_signup.address_1.focus();
		form_complete = false;
	}else if(document.mlist_signup.city.value == ''){
		message = 'Your city is a required field.';
		document.mlist_signup.city.focus();
		form_complete = false;
	}else if(document.mlist_signup.province.value == ''){
		message = 'Your province is a required field.';
		document.mlist_signup.province.focus();
		form_complete = false;
	}else if(document.mlist_signup.postal_code.value == ''){
		message = 'Your postal code is a required field.';
		document.mlist_signup.postal_code.focus();
		form_complete = false;
	}
	
	// Process the birthdate.
	if(form_complete == true){
		// year
		var dropdownIndex = document.getElementById('birth_date_year').selectedIndex;
		if(document.getElementById('birth_date_year')[dropdownIndex].value == ''){
			message = 'Your birthdate is a required field.';
			document.mlist_signup.birth_date_year.focus();
			form_complete = false;
		}
		
		// month
		var dropdownIndex = document.getElementById('birth_date_month').selectedIndex;
		if(document.getElementById('birth_date_month')[dropdownIndex].value == ''){
			message = 'Your birthdate is a required field.';
			document.mlist_signup.birth_date_month.focus();
			form_complete = false;
		}
		
		// day
		var dropdownIndex = document.getElementById('birth_date_day').selectedIndex;
		if(document.getElementById('birth_date_day')[dropdownIndex].value == ''){
			message = 'Your birthdate is a required field.';
			document.mlist_signup.birth_date_day.focus();
			form_complete = false;
		}
	}
	
	// Privacy policy
	if(form_complete == true){
		if(document.mlist_signup.privacy_policy.checked == false){
			message = 'Reading the privacy policy and terms of use is required.';
			form_complete = false;
		}
	}
	
	// Proceed if the form is complete.
	if(form_complete == true){
		return(true);
	}else{
		alert(message);
		return(false);
	}
}

// clear_referred_by
function clear_referred_by(){
	if(document.getElementById('referred_by').value == "email address"){
		document.getElementById('referred_by').value = "";
	}
}

// ----------------------------------------- Start Unsubscribe Request
// Validate the form.
function request_unsubscribe() {
	// The form is complete by default.
	form_complete = true;

	// email_address
	email_address = document.mlist_signup.email_address.value;
	if(email_address == ''){
		message = 'Please enter the email address you wish to unsubscribe.';
		document.mlist_signup.email_address.focus();
		form_complete = false;
	}
	
	// Proceed if the form is complete.
	if(form_complete == true){
		document.getElementById('api_message').innerHTML = "Your unsubscription request is processing...";
		return(true);
	}else{
		alert(message);
		return(false);
	}
}

// Indicate success or failure.
function request_unsubscribe_response(response){
	// Reset the form.
	document.mlist_signup.reset();
		
	// Return a message to the user.
	document.getElementById('api_message').innerHTML = response;
}
// ----------------------------------------- End Unsubscribe Request

// xmlhttpPost: Post an AJAX request.
function xmlhttpPost(strURL,target){
	var xmlHttpReq = false;
	var self = this;
	
	// Mozilla/Safari
	if (window.XMLHttpRequest) {
		self.xmlHttpReq = new XMLHttpRequest();
	}
	// IE
	else if (window.ActiveXObject) {
		self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
	}
	self.xmlHttpReq.open('POST', strURL, true);
	self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	self.xmlHttpReq.onreadystatechange = function() {
		if (self.xmlHttpReq.readyState == 4) {
			updatepage(self.xmlHttpReq.responseText,target);
		}
	}
	self.xmlHttpReq.send(getquerystring());
}

function getquerystring(){
	qstr = 'w=' + escape('test');  // NOTE: no '?' before querystring
	return qstr;
}

function updatepage(str,target){
	//str = trim(str);
	if(str != ''){
		document.getElementById(target).innerHTML = str;
	}
	
	// call a callback function if it exists
	if(window.ajax_callback){
		ajax_callback();
	}
}

// perform the request
function ajax_request(url,target,message){
	// reveal a message if one exists
	if(message != ''){
		document.getElementById(target).innerHTML = message;		
	}
	
	// post the request
	xmlhttpPost(url,target);
}