function submitSubscribeForm(theForm)
{
	subscriberName = theForm.attribute2.value;
	language = theForm.attribute1.value;

	queryString = '?displayMode=ajax';
	queryString += '&subscribe=1';
	queryString += '&email=' + escape(theForm.email.value);
	queryString += '&emailconfirm=' + escape(theForm.emailconfirm.value);
	queryString += '&attribute1=' + escape(theForm.attribute1.value);
	queryString += '&attribute2=' + escape(theForm.attribute2.value);
	queryString += '&list[2]=signup';
	
	callServer('/lists/index.php?p=subscribe', subscribeResult, 0, queryString);
}


function subscribeResult()
{
	if (xmlHttp.readyState == 4)
	{
		if (xmlHttp.status != 200)
		{	alert("Server request error " + xmlHttp.status);
			return null;
		}else
		{	var res = xmlHttp.responseText.split("\n");
			if (res[0] == 'OK')
			{	document.getElementById("subscribeForm_form").style.display = "none";
				document.getElementById("subscribeForm_thanks").style.display = "block";
			}else
			{	
				res.shift();
				var fieldID = '';
				var errorInfo = res[0].split("~");
				if (errorInfo.length > 1)
				{	fieldID = errorInfo[0];
				}
				clearErrorMessageFields();
				displayErrorMessage(fieldID, errorInfo.pop());
			}
		}

		return true;
	}
}



function confirmSubscription(uid)
{
	queryString = '&displayMode=ajax&uid=' + escape(uid);
	
	callServer('/lists/index.php?p=confirm' + queryString, confirmSubscriptionResult, 1);
}


function confirmSubscriptionResult()
{
	if (xmlHttp.readyState == 4)
	{
		if (xmlHttp.status != 200)
		{	alert("Server request error " + xmlHttp.status);
			return null;
		}else
		{	
			var res = xmlHttp.responseText.split("\n");
			if (res[0] == 'OK')
			{	document.getElementById("subscribeForm_loading").style.display = "none";
				document.getElementById("subscribeForm_response").style.display = "block";
			}else
			{	var f = document.getElementById('confirmFeedback');
				if (f)
				{	res.shift();
					f.innerHTML = res.join("\n");
				}
			}
		}

		return true;
	}
}



function unsubscribe(uid)
{
	queryString = '&displayMode=ajax&uid=' + escape(uid);
	
	callServer('/lists/index.php?p=unsubscribe' + queryString, unsubscribeResult, 1);
}


function unsubscribeResult()
{
	if (xmlHttp.readyState == 4)
	{
		if (xmlHttp.status != 200)
		{	alert("Server request error " + xmlHttp.status);
			return null;
		}else
		{	
			var res = xmlHttp.responseText.split("\n");
			if (res[0] == 'OK')
			{	document.getElementById("subscribeForm_loading").style.display = "none";
				document.getElementById("subscribeForm_response").style.display = "block";
			}else
			{	var f = document.getElementById('unsubscribeFeedback');
				if (f)
				{	res.shift();
					f.innerHTML = res.join("\n");
				}
			}
		}

		return true;
	}
}


// The following is copy'n'pasted from phpList's output:
function checkform() {
	var isFrench = 0;
	if (document.subscribeform.attribute1.value == "2")
	{	isFrench = 1;
	}

	clearErrorMessageFields();
	var foundError = '';

	for (i=0;i<fieldstocheck.length;i++) {
		if (eval("document.subscribeform.elements['"+fieldstocheck[i]+"'].type") == "checkbox") {
		  if (document.subscribeform.elements[fieldstocheck[i]].checked) {
		  } else {
		    alert("Please enter your "+fieldnames[i]);
		    eval("document.subscribeform.elements['"+fieldstocheck[i]+"'].focus()");
		    return false;
		  }
		}
		else {
		  if (eval("document.subscribeform.elements['"+fieldstocheck[i]+"'].value") == "") {
			if (fieldnames[i] == 'Full Name')
			{	displayErrorMessage('attribute2', (isFrench ? "Veuillez entrer un prénom" : "Please enter a first name."));
				foundError = foundError == '' ? 'attribute2' : foundError;
			}

			if (fieldnames[i] == 'Email')
			{	displayErrorMessage('email', (isFrench ? "Veuillez entrer une adresse de courriel selon le format abc@adresse.com." : "Please enter an email address in the format abc@address.com."));
				foundError = foundError == '' ? 'email' : foundError;
			}else if (fieldnames[i] == 'Confirm Email')
			{	displayErrorMessage('emailconfirm', (isFrench ? 'Les adresses de courriel ne correspondent pas. Veuillez r&eacute;essayer.' : 'The email addresses don\'t match. Please try again'));
				foundError = foundError == '' ? 'emailconfirm' : foundError;
			}else if (fieldnames[i] != 'Full Name')
			{	displayErrorMessage('', ("Please enter your "+fieldnames[i]));
				foundError = foundError == '' ? 'attribute2' : foundError;
			}
		    // eval("document.subscribeform.elements['"+fieldstocheck[i]+"'].focus()");
		    // return false;
		  }
		}
	}
	if (foundError != '')
        {	eval("document.subscribeform.elements['"+foundError+"'].focus()");
		return false;
	}

	for (i=0;i<groupstocheck.length;i++) {
		if (!checkGroup(groupstocheck[i],groupnames[i])) {
		  return false;
		}
	}
	
	if(! compareEmail())
	{
		displayErrorMessage('emailconfirm', (isFrench ? "Les adresses de courriel ne correspondent pas. Veuillez réessayer." : "The email addresses don't match. Please try again"));
		return false;
	}
	return true;
}

var fieldstocheck = new Array();
var fieldnames = new Array();

function addFieldToCheck(value,name) {
	fieldstocheck[fieldstocheck.length] = value;
	fieldnames[fieldnames.length] = name;
}

var groupstocheck = new Array();
var groupnames = new Array();

function addGroupToCheck(value,name) {
	groupstocheck[groupstocheck.length] = value;
	groupnames[groupnames.length] = name;
}

function compareEmail()
{
	return (document.subscribeform.elements["email"].value == document.subscribeform.elements["emailconfirm"].value);
}

function checkGroup(name,value) {
	option = -1;
	for (i=0;i<document.subscribeform.elements[name].length;i++) {
		if (document.subscribeform.elements[name][i].checked) {
		  option = i;
		}
	}
	if (option == -1) {
		alert ("Please enter your "+value);
		return false;
	}
	return true;
}


function displayErrorMessage(fieldID, errorMessage)
{
	var f = document.getElementById('error_' + fieldID);
	if (!f)
	{	f = document.getElementById('subscribeFeedback');
	}

	if (!f)
	{	alert(errorMessage);
	}else
	{	f.innerHTML = errorMessage;
	}
}


function clearErrorMessageFields()
{
	var fieldIDs = new Array('attribute2', 'email', 'emailconfirm');
	for (var i = 0; i < fieldIDs.length; i++)
	{	var id = fieldIDs[i];
		var f = document.getElementById('error_' + id);
		if (f)
		{	f.innerHTML = '';
		}
	}
}
