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 imageDelete(imageId) {

	var agree = confirm("Are you sure?");
	
	if (agree == true) {
		new Ajax.Request(mailinglistPluginURL + "/wpMailinglistAdmin.php?mailinglistMethod=imageDelete&id=" + imageId + "", {
			method:"POST",
			postBody:"&id=" + imageId + "",
			onSuccess:function(req) {
				var trueStatus = req.responseXML.getElementsByTagName('true')[0].firstChild.data;
				
				if (trueStatus == 1) {
					alert('Image successfully removed!');
					window.location.reload();
				} else {
					alert("Image could not be removed!");
				}
			}
		});
	} else {
		return false;
	}
}

function templateAdd() {
	
	Element.show('templatesAddWorking');
	
	var title = $('templateTitle').value;
	var template = $('templateContent').value;
	
	new Ajax.Request(mailinglistPluginURL + "/wpMailinglistAdmin.php?mailinglistMethod=templateAdd", {
		method:"POST",
		postBody:"title=" + title + "&template=" + template + "",
		onSuccess:function(req) {
			var trueStatus = req.responseXML.getElementsByTagName('true')[0].firstChild.data;
			
			Element.hide('templatesAddWorking');
			
			if (trueStatus == 1) {
				Effect.Fade('templatesAddMessage');
				
				var insertId = req.responseXML.getElementsByTagName('insertid')[0].firstChild.data;
				var created = req.responseXML.getElementsByTagName('created')[0].firstChild.data;
				var modified = req.responseXML.getElementsByTagName('modified')[0].firstChild.data;
				
				$('templatesForm').reset();
				Effect.BlindUp('templatesAdd');
				
				if ($('templatesTable')) {
					new Insertion.Top('templatesTable', '<tr id="templateRow_' + insertId + '"><td>' + insertId + '</td><td>' + title + '</td><td>' + created + '</td><td>' + modified + '</td><td><a href="?page=wp-mailinglist-2/wpMailinglistAdmin.php&mailinglistMethod=templateView&templateId=' + insertId + '" title="View the full details of this template" class="edit">View</a></td><td><a href="?page=wp-mailinglist-2/wpMailinglistAdmin.php&mailinglistMethod=templateEdit&templateId=' + insertId + '" title="Edit the details of this template" class="edit">Edit</a></td><td><a href="#void" onclick="return templateDelete(\'' + insertId + '\');" title="Remove this template completely" class="delete">Delete</a></td></tr>');
				} else {
					window.location = '?page=wp-mailinglist-2/wpMailinglistAdmin.php&mailinglistMethod=templates';
				}
			} else {
				var message = req.responseXML.getElementsByTagName('message')[0].firstChild.data;
				Effect.Appear('templatesAddMessage');
				$('templatesAddMessage').innerHTML = message;
				Effect.Shake('templatesAdd');
			}
		}
	});
}

function templateEdit() {
	Element.show('templatesAddWorking');
	
	var templateId = $('templateId').value;
	var title = $('templateTitle').value;
	var template = $('templateContent').value;
	
	new Ajax.Request(mailinglistPluginURL + "/wpMailinglistAdmin.php?mailinglistMethod=templateAdd&templateId=" + templateId + "", {
		method:"POST",
		postBody:"templateId=" + templateId + "&title=" + title + "&template=" + template + "",
		onSuccess:function(req) {
			var trueStatus = req.responseXML.getElementsByTagName('true')[0].firstChild.data;
			var message = req.responseXML.getElementsByTagName('message')[0].firstChild.data;
			
			Element.hide('templatesAddWorking');
			
			if (trueStatus == 1) {
				window.location = '?page=wp-mailinglist-2/wpMailinglistAdmin.php&mailinglistMethod=templates';
			} else {
				var message = req.responseXML.getElementsByTagName('message')[0].firstChild.data;
				Effect.Appear('templatesAddMessage');
				$('templatesAddMessage').innerHTML = message;
				Effect.Shake('templatesAdd');
			}
		}
	});
}

function templateDelete(templateId) {
	
	var agree = confirm("Are you sure you wish to remove this template?");
	
	if (agree == true) {
		new Ajax.Request(mailinglistPluginURL + "/wpMailinglistAdmin.php?mailinglistMethod=templateDelete&templateId=" + templateId + "", {
			method:"POST",
			postBody:"templateId=" + templateId + "",
			onSuccess:function(req) {
				var trueVal = req.responseXML.getElementsByTagName('true')[0].firstChild.data;
				var message = req.responseXML.getElementsByTagName('message')[0].firstChild.data;
				
				if (trueVal == 1) {
					$('templateRow_' + templateId).style.background = "#FF0000";
					Effect.Fade('templateRow_' + templateId);
				} else {
					alert(message);
				}
			}
		});
	} else {
		return false;
	}
}

function listAdd() {

	Element.show('addListWorking');

	//the title of the list
	var title = $('listTitle').value;
	
	new Ajax.Request(mailinglistPluginURL + "/wpMailinglistAdmin.php?mailinglistMethod=listAdd", {
		method:"POST",
		postBody:"title=" + title + "",
		onSuccess:function(req) {
			var trueStatus = req.responseXML.getElementsByTagName('true')[0].firstChild.data;
			var message = req.responseXML.getElementsByTagName('message')[0].firstChild.data;
			
			Element.hide('addListWorking');
			
			if (trueStatus == 1) {
				//hide the error message
				Effect.Fade('listsAddMessage');
				//alert the message to the user.
				alert(message);				
				//the ID of the newly inserted row.
				var insertId = req.responseXML.getElementsByTagName('insertid')[0].firstChild.data;
				var created = req.responseXML.getElementsByTagName('created')[0].firstChild.data;
				var modified = req.responseXML.getElementsByTagName('modified')[0].firstChild.data;
				
				//reset the form completely
				$('listsAddForm').reset();				
				//slide the DIV back up.
				Effect.BlindUp('listsAdd');
				
				if ($('listsTable')) {
					//insert a new row into the table.
					new Insertion.Top('listsTable', '<tr id="listRow_' + insertId + '"><td><input id="listCheck_' + insertId + '" type="checkbox" name="listsList[]" value="' + insertId + '" /></td><td><label for="listCheck_' + insertId + '">' + insertId + '</label></td><td><label for="listCheck_' + insertId + '">' + title + '</label></td><td><label for="listCheck_' + insertId + '">' + created + '</label></td><td><label for="listCheck_' + insertId + '">' + modified + '</label></td><td>0</td><td><code>#%wpMailinglistOptIn' + insertId + '%#</code></td><td><a href="?page=wp-mailinglist-2/wpMailinglistAdmin.php&amp;mailinglistMethod=listView&amp;listId=' + insertId + '" title="View the full details of this mailing list" class="edit">View</a></td><td><a href="?page=wp-mailinglist-2/wpMailinglistAdmin.php&mailinglistMethod=listEdit&listId=' + insertId + '" title="Edit the details of this list" class="edit">Edit</a></td><td><a href="javascript:listDelete(\'' + insertId + '\');" title="" class="delete">Delete</a></td></tr>');
				} else {
					window.location = '?page=wp-mailinglist-2/wpMailinglistAdmin.php&mailinglistMethod=lists';
				}
			} else {
				//show the error message
				Effect.Appear('listsAddMessage', {from:0, to:1});
				//insert an error message.
				$('listsAddMessage').innerHTML = message;
				//shake the form div.
				Effect.Shake('listsAdd');
			}
		}
	});
}

function listEdit() {

	Element.show('addListWorking');

	//the title of the list
	var title = $('listTitle').value;
	var listId = $('listId').value;
	
	new Ajax.Request(mailinglistPluginURL + "/wpMailinglistAdmin.php?mailinglistMethod=listAdd", {
		method:"POST",
		postBody:"title=" + title + "&listId=" + listId + "",
		onSuccess:function(req) {
		
			Element.hide('addListWorking');
		
			var trueStatus = req.responseXML.getElementsByTagName('true')[0].firstChild.data;
			var message = req.responseXML.getElementsByTagName('message')[0].firstChild.data;
			
			if (trueStatus == 1) {
				//hide the error message
				Effect.Fade('listsAddMessage');
				//alert the message to the user.
				alert(message);				
				//the ID of the newly inserted row.
				var insertId = req.responseXML.getElementsByTagName('insertid')[0].firstChild.data;
				var created = req.responseXML.getElementsByTagName('created')[0].firstChild.data;
				var modified = req.responseXML.getElementsByTagName('modified')[0].firstChild.data;
				
				$('listsAddForm').reset();
				window.location = '?page=wp-mailinglist-2/wpMailinglistAdmin.php&mailinglistMethod=lists';
			} else {
				//show the error message
				Effect.Appear('listsAddMessage', {from:0, to:1});
				//insert an error message.
				$('listsAddMessage').innerHTML = message;
				//shake the form div.
				Effect.Shake('listsAdd');
			}
		}
	});
}

function listDelete(listId) {

	//agreement confirmation.
	var agree = confirm("Are you sure you wish to remove this list and all subscribers?");

	if (listId != "") {	
		if (agree == true) {
			new Ajax.Request(mailinglistPluginURL + '/wpMailinglistAdmin.php?mailinglistMethod=listDelete&listId=' + listId + '', {
				method:"POST",
				postBody:"mailinglistMethod=listDelete&listId=" + listId + "",
				onSuccess:function(req) {
					var trueStatus = req.responseXML.getElementsByTagName('true')[0].firstChild.data;
					var message = req.responseXML.getElementsByTagName('message')[0].firstChild.data;
					
					if (trueStatus == 1) {
						//alert(message);
						$('listRow_' + listId).style.background = "#FF0000";
						Effect.Fade('listRow_' + listId);
					} else {
						alert(message);
					}
				}
			});
		} else {
			//do nothing.
			return false;
		}
	} else {
		//alert an error message.
		alert('Please select a mailing list!');
	}
}

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';
		var username = $('addUsername').value;
	} else {
		var register = 'N';
		var username = '';
	}
	
	//the mailing list.
	var listid = $('addList').value;
	
	new Ajax.Request(mailinglistPluginURL + '/wpMailinglistAdmin.php?mailinglistMethod=addSubscriber', {
		method:"POST",
		postBody:"fname=" + fname + "&lname=" + lname + "&email=" + email + "&register=" + register + "&username=" + username + "&listid=" + listid + "",
		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;
				var mailinglist = req.responseXML.getElementsByTagName('mailinglist')[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');
				
				if ($('subscribersTable')) {
					//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>' + mailinglist + '</td><td><a href="?page=wp-mailinglist-2/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 {
					window.location = '?page=wp-mailinglist-2/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 editSubscriber(subscriberId) {	
	//show the loading indicator
	Element.show('addSubscriberWorking');
	
	//some submitted variables
	var fname = $('addFname').value;
	var lname = $('addLname').value;
	var email = $('addEmail').value;
	var listid = $('addList').value;
	
	new Ajax.Request(mailinglistPluginURL + '/wpMailinglistAdmin.php?mailinglistMethod=addSubscriber', {
		method:"POST",
		postBody:"id=" + subscriberId + "&fname=" + fname + "&lname=" + lname + "&email=" + email + "&listid=" + listid + "",
		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!');
				
				//brutal force redirect...
				window.location.href = '?page=wp-mailinglist-2/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;
	
	var validateLname = 'N';
	var validateFname = 'N';
	
	if ($('mailinglistWidget_validatefname')) {
		if ($('mailinglistWidget_validatefname').value == "Y") {
			var validateFname = 'Y';
		}
	}
	
	if ($('mailinglistWidget_validatelname')) {
		if ($('mailinglistWidget_validatelname').value == "Y") {
			var validateLname = 'Y';
		}
	}
	
	if ($('mailinglistWidget_fname')) { var fname = $('mailinglistWidget_fname').value; } else { var fname = ''; };
	if ($('mailinglistWidget_lname')) { var lname = $('mailinglistWidget_lname').value; } else { var lname = ''; };
	
	//the ID of the list to add the subscriber to
	var list_id = $('mailinglistWidget_listid').value;
	
	new Ajax.Request(mailinglistPluginURL + '/wpMailinglistAdmin.php?mailinglistMethod=optin', {
		method:"POST",
		postBody:"&fname=" + fname + "&validatefname=" + validateFname + "&lname=" + lname + "&validatelname=" + validateLname + "&email=" + email + "&list_id=" + list_id + "",
		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 = '<p>' + message + '</p>';
				Effect.Fade("mailinglistForm", {from:0, to:1});
			} else {
				$('mailinglistStatusMessage').innerHTML = '<p>' + message + '</p>';
				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 submitListsForm() {
	
	var agree = confirm("Are you sure you wish to continue?");
	
	if (agree == true) {
		return true;
	} else {
		return false;
	}
}

function submitSubscribersForm()
{
	document.getElementById('subscribersWorking').style.visibility = "visible";
	
	var counter = 0;
	var message = '';
	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;
	}
	
	$('mainCheckLink').innerHTML = '<a href="javascript:unCheckAllBoxes(this,\'' + formname + '\',\'' + fieldname + '\');" title="Uncheck all checkboxes">Uncheck All</a>';
}

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;
	}
	
	$('mainCheckLink').innerHTML = '<a href="javascript:checkAllBoxes(this,\'' + formname + '\',\'' + fieldname + '\');" title="Check all checkboxes">Check All</a>';
}