function showDiv(wdiv) {
	document.getElementById(wdiv).style.display = "block";	
}

function hideDiv(wdiv) {
	document.getElementById(wdiv).style.display = "none";
}

function makeVisible(wdiv) {
	document.getElementById(wdiv).style.visibility = "visible";	
}

function makeHidden(wdiv) {
	document.getElementById(wdiv).style.visibility = "hidden";	
}

function getObjectById(wdiv) {
	var divObj = document.getElementById(wdiv);
	return divObj;
}

function addSubscriberSubmit() {
	//show the loading indicator
	Element.show('addSubscriberWorking');
	
	//some submitted variables
	var fname = $('addFname').value;
	var lname = $('addLname').value;
	var email = $('addEmail').value;
	
	if ($('addRegister').checked) {
		var register = 'Y';
	} else {
		var register = 'N';
	}
	
	new Ajax.Request(mailinglistPluginURL + '/wpMailinglistAdmin.php?mailinglistMethod=addSubscriber', {
		method:"POST",
		postBody:"fname=" + fname + "&lname=" + lname + "&email=" + email + "&register=" + register + "",
		onSuccess:function(req) {
			Element.hide('addSubscriberWorking');
			
			if (req.responseXML.getElementsByTagName('true')[0].firstChild.data == 1) {
				Effect.Fade('addSubscriberMessage');
				
				//some new variables
				var fname = req.responseXML.getElementsByTagName('fname')[0].firstChild.data;
				var lname = req.responseXML.getElementsByTagName('lname')[0].firstChild.data;
				var datesubscribed = req.responseXML.getElementsByTagName('datesubscribed')[0].firstChild.data;
				var registeredstatus = req.responseXML.getElementsByTagName('registeredstatus')[0].firstChild.data;
				var insertid = req.responseXML.getElementsByTagName('insertid')[0].firstChild.data;
				
				//alert a success message
				alert('Subscriber successfully added!');
				
				//reset the form completely
				$('addSubscriberForm').reset();
				
				//flip the 'addSubscriber' form back up
				Effect.BlindUp('addSubscriber');
				
				//insert a new row at the top of the 'subscribersTable'
				new Insertion.Top('subscribersTable', '<tr id="subscriberRow_' + insertid + '"><td><input type="checkbox" name="subscribersList[]" value="' + insertid + '" /></td><td>' + fname + '</td><td>' + lname + '</td><td>' + email + '</td><td>' + datesubscribed + '</td><td>' + registeredstatus + '</td><td><a href="?page=wp-mailinglist/wpMailinglistAdmin.php&mailinglistMethod=editSubscriber&id=' + insertid + '" class="edit" title="Edit the details of this subscriber">Edit</a></td><td><a href="#void" title="Delete this subscriber from the database" onclick="deleteSubscriber(\'' + insertid + '\');" class="delete">Delete</a></td></tr>');
			} else {
				//show the 'addSubscriberMessage' element
				Effect.Appear('addSubscriberMessage');
				//put the message into the element
				$('addSubscriberMessage').innerHTML = req.responseXML.getElementsByTagName('errormessage')[0].firstChild.data;
				//shake the form
				Effect.Shake('addSubscriberForm');
			}
		}
	});
}

function editSubscriber(subscriberId) {	
	//show the loading indicator
	Element.show('addSubscriberWorking');
	
	//some submitted variables
	var fname = $('addFname').value;
	var lname = $('addLname').value;
	var email = $('addEmail').value;
	
	new Ajax.Request(mailinglistPluginURL + '/wpMailinglistAdmin.php?mailinglistMethod=addSubscriber', {
		method:"POST",
		postBody:"id=" + subscriberId + "&fname=" + fname + "&lname=" + lname + "&email=" + email + "",
		onSuccess:function(req) {
			Element.hide('addSubscriberWorking');
			
			if (req.responseXML.getElementsByTagName('true')[0].firstChild.data == 1) {
				Effect.Fade('addSubscriberMessage');
				
				//some new variables
				var fname = req.responseXML.getElementsByTagName('fname')[0].firstChild.data;
				var lname = req.responseXML.getElementsByTagName('lname')[0].firstChild.data;
				
				//alert a success message
				alert('Subscriber successfully changed!');
				
				//redirect...
				window.location.href = '?page=wp-mailinglist/wpMailinglistAdmin.php&mailinglistMethod=subscribers';
			} else {
				//show the 'addSubscriberMessage' element
				Effect.Appear('addSubscriberMessage');
				//put the message into the element
				$('addSubscriberMessage').innerHTML = req.responseXML.getElementsByTagName('errormessage')[0].firstChild.data;
				//shake the form
				Effect.Shake('addSubscriberForm');
			}
		}
	});
}

function deleteSubscriber(id) {
	//show the working status
	Element.show('subscribersWorking');
	
	//agreement confirmation
	var agree = confirm('Are you sure you wish to remove this subscriber?');
	
	if (agree == true) {
		new Ajax.Request(mailinglistPluginURL + '/wpMailinglistAdmin.php?mailinglistMethod=deleteSubscriber&subscriberId=' + id + '', {
			method:"POST",
			postBody:"subscriberId=" + id + "",
			onSuccess:function(req) {
				//hide the working status
				Element.hide('subscribersWorking');
				
				//some new variables
				var message = req.responseXML.getElementsByTagName('message')[0].firstChild.data;
				
				if (req.responseXML.getElementsByTagName('true')[0].firstChild.data == 1) {
					//remove the row from the table
					$('subscriberRow_' + id).style.background = '#FF0000';
					Effect.Fade('subscriberRow_' + id);
				} else {
					//alert a failure message
					alert(message);
				}
			}
		});
	} else {
		//hide the working indicator
		Element.hide('subscribersWorking');
		//return false. nothing must be done
		return false;
	}
}

function submitOptIn() {
	//show the loading indicator
	$('mailinglistWorking').style.visibility = 'visible';
	$('mailinglistStatusMessage').innerHTML = '';
	
	//the email address
	var email = $('mailinglistWidget_email').value;
	
	new Ajax.Request(mailinglistPluginURL + '/wpMailinglistAdmin.php?mailinglistMethod=optin', {
		method:"POST",
		postBody:"email=" + email + "",
		onSuccess:function(req) {
			//hide the working indicator
			$('mailinglistWorking').style.visibility = 'hidden';
			
			//additional variables
			var message = req.responseXML.getElementsByTagName('message')[0].firstChild.data;
			
			if (req.responseXML.getElementsByTagName('true')[0].firstChild.data == 1) {
				//alert the success message
				alert(message);
				//change the HTML of the div
				$('mailinglistForm').innerHTML = message;
				Effect.Fade("mailinglistForm", {from:0, to:1});
			} else {
				$('mailinglistStatusMessage').innerHTML = message;
				Effect.Fade("mailinglistStatusMessage", {from:0, to:1});
			}
		}
	});
}
	
function subscriberDelete(subscriberId)
{
	url = mailinglistPluginURL + '/wpMailinglistAdmin.php?mailinglistMethod=delete&amp;subscriberId=' + subscriberId + '';
	what = 'subscriberDeleteResponse(req.responseXML);';
	
	DoCallback('subscriberId=' + subscriberId);
}

function subscriberDeleteResponse(responseXML)
{
	if (responseXML.getElementsByTagName('true')[0].firstChild.data != 1)
	{
		alert("Subscriber could not be removed!");	
	}
	else
	{
		var subscriberId = responseXML.getElementsByTagName('subscriberId')[0].firstChild.data;
		document.getElementById('subscriberRow_' + subscriberId).style.display = "none";
	}
	
	document.getElementById('subscribersWorking').style.visibility = "hidden";
}

// Change <div> "display" style to BLOCK
// Makes a <div> element visible to the user
// Pass any <div> ID to this function
function showDiv(wdiv)
{
	document.getElementById(wdiv).style.display = "block";
}

// Change <div> "display" style to NONE
// Makes a <div> element invisible to the user
// Pass any <div> ID to this function
function hideDiv(wdiv)
{
	document.getElementById(wdiv).style.display = "none";
}
	
function confirmSubscriberDelete(subscriberId)
{
	document.getElementById('subscribersWorking').style.visibility = "visible";
	var message = "SUBSCRIBER DELETE\n\nAre you sure you wish to delete this subscriber?";
	var agree = confirm(message);
	
	if (agree)
	{
		subscriberDelete(subscriberId);
		return true;
	}
	else
	{
		document.getElementById('subscribersWorking').style.visibility = "hidden";
		return false;
	}
}

function submitSubscribersForm()
{
	document.getElementById('subscribersWorking').style.visibility = "visible";
	
	var counter = 0;
	var message = 'SUBSCRIBERS DELETION\n\n';
	message += 'Are you sure that you wish to delete the selected subscribers?\n\n';
	
	for (i = 0; i < document.subscribersForm.elements['subscribersList' + "[]"].length; i++)
	{
		if (document.subscribersForm.elements['subscribersList'+"[]"][i].checked == true)
		{
			//var subscribersValue = document.subscribersForm.elements['subscribersTitles' + "[]"][i].value;
			//message += '> ';
			//message += subscribersValue;
			//message += '\n';
			
			counter++;
		}
	}
	
	if (counter == 0) 
	{
		message = 'SUBSCRIBERS DELETION\n\nNo subscribers were selected!'; 
		alert(message);
		document.getElementById('subscribersWorking').style.visibility = "hidden";
		return false;
	}
	else 
	{
		var agree = confirm(message);
		if (agree) { return true; } else { document.getElementById('subscribersWorking').style.visibility = "hidden"; return false; };
	}
}

function checkAllBoxes(obj, formname, fieldname)
{		
	if(document.forms[formname].elements[fieldname+"[]"].length)
	{
		for (i = 0; i < document.forms[formname].elements[fieldname+"[]"].length; i++)
		{
			document.forms[formname].elements[fieldname+"[]"][i].checked = true;
		}
	}
	else
	{
		document.forms[formname].elements[fieldname+"[]"].checked = true;
	}
	
	document.getElementById('mainCheckLink').innerHTML = '<a href="javascript:unCheckAllBoxes(this,\'subscribersForm\',\'subscribersList\');" title="Uncheck all subscribers">Uncheck All</a>';
	document.getElementById('mainCheckLink').checked = true;
}

function unCheckAllBoxes(obj, formname, fieldname)
{
	if(document.forms[formname].elements[fieldname+"[]"].length)
	{
		for (i = 0; i < document.forms[formname].elements[fieldname+"[]"].length; i++)
		{
			document.forms[formname].elements[fieldname+"[]"][i].checked = false;
		}
	}
	else
	{
		document.forms[formname].elements[fieldname+"[]"].checked = false;
	}
	
	document.getElementById('mainCheckLink').innerHTML = '<a href="javascript:checkAllBoxes(this,\'subscribersForm\',\'subscribersList\');" title="Check all subscribers">Check All</a>';
}