scriptProxy.RegisterAjaxMethods(['GetAddForm','GetEditForm','SaveEditForm','DeleteContent',
								 'SaveNewForm','DisplayPage','AddCategory',
								 'SaveNewCategory','ManageUsers','SaveNewUser',
								 'EditUserInfo','UpdateUserInfo','AddPermission',
								 'RemovePermission','ChangePassword','ChangeAccessLevel',
								 'GetPageList']);

var access_violation = 'You do not have sufficient privileges to view this page';
var permission_violation = 'You do not have permission to edit this content';
var toolbarset = 'BrevardZooFrontend';
var expandId = null;

function AddPage()
{
	AjaxMethod.GetAddForm(onGetAddForm);
}

function onGetAddForm(res)
{
	if (res.text == access_violation || res.text == permission_violation)
	{
		$('editregion').innerHTML = res.text;
	}
	else
	{
		$('editregion').innerHTML = res.text;
		var sBasePath = '/scripts/fckeditor/';
		var fck = new FCKeditor( 'add_Content', null, '300', 'BrevardZooFrontend');
		fck.BasePath = sBasePath ;
		fck.ReplaceTextarea() ;
	}
		
}

function HidePageList(categoryId)
{
	$('page-'+categoryId).innerHTML = '';
	$('title-'+categoryId).onclick = new Function('GetPageList('+categoryId+')');
}
	
function GetPageList(categoryId)
{
	expandId = categoryId;
	$('title-'+categoryId).onclick = new Function("HidePageList("+categoryId+")");
	AjaxMethod.GetPageList(categoryId, onGetPageList);
}

function onGetPageList(res)
{
	$('page-'+expandId).innerHTML = res.text;
}

function EditPage(pageId, toolbar)
{
	if (!toolbar)
		toolbarset = 'BrevardZoo';
	else
		toolbarset = toolbar;
		
	AjaxMethod.GetEditForm(pageId, onGetEditForm);	
}

function EditPage2()
{
	AjaxMethod.GetEditForm(onGetEditForm);
}

function DeletePage(pageId)
{
	if (confirm('Are you sure you want to delete this page?'))
	{
		AjaxMethod.DeleteContent(pageId, onDisplayPage);
	}
}

function onGetEditForm(res)
{
	if (res.text != access_violation && res.text != permission_violation)
	{
		$('editregion').innerHTML = res.text;
		var sBasePath = '/scripts/fckeditor/';
		var fck = new FCKeditor( 'edit_Content', null, '300', toolbarset);
		fck.BasePath = sBasePath ;
		fck.ReplaceTextarea() ;
	}
	else
		$('editregion').innerHTML = res.text;
}

function SavePage()
{
	var pageId = $('pageId').value;
	var friendlyName = escape($('edit_Friendlyname').value);
	var title = escape($('edit_PageTitle').value);
	/* get the inner contenst of the editor */
	var oEditor = FCKeditorAPI.GetInstance('edit_Content') ;
	var content = escape(oEditor.GetXHTML(true));
	var keywords = escape($('edit_Keywords').value);
	
	var menuactive = 0;
	if ($('edit_menuactive').checked)
		menuactive = $('edit_menuactive').value;
	
	AjaxMethod.SaveEditForm(pageId, friendlyName, title, content, keywords, menuactive, onSaveContent);
	return false;
}

function SaveNewPage()
{
	var categoryId = $('frm_Category')[$('frm_Category').selectedIndex].value;
	var name = escape($('add_FriendlyName').value);
	var title = escape($('add_Title').value);
	var oEditor = FCKeditorAPI.GetInstance('add_Content') ;
	var content = escape(oEditor.GetXHTML(true));
	var keywords = escape($('add_Keywords').value);
	
	var menuactive = 0;
	if ($('add_menuactive').checked)
		menuactive = $('add_menuactive').value;
	
	AjaxMethod.SaveNewForm(name, categoryId, title, content, keywords, menuactive, onSaveContent);
	return false;
}

function onSaveContent (res)
{
	var response = res.text;
	if (response.indexOf('window.location') >= 0)
		eval(response);
	else
		$('editregion').innerHTML = res.text;
}

function cancel(pageId)
{
	if (!pageId)
	{
		var pageId = escape($('pageId').value);
		AjaxMethod.DisplayPage(pageId, onDisplayPage);
	}
	else
		AjaxMethod.DisplayPage('admin', onDisplayPage);
}

function AddCategory()
{
	AjaxMethod.AddCategory(onDisplayPage);
}

function SaveNewCategory()
{
	var categoryName = escape($('add_CategoryName').value);
	AjaxMethod.SaveNewCategory(categoryName, onDisplayPage);
	return false;
}

function ManageUsers()
{
	AjaxMethod.ManageUsers(onDisplayPage);
}

function onDisplayPage(res)
{
	var response = res.text;
	
	// if a window.location statement is returned then redirect to that page
	if (response.indexOf('window.location') >= 0)
		eval(response);
	else
		$('editregion').innerHTML = res.text;
}


function EditUserInfo(userId)
{
	AjaxMethod.EditUserInfo(userId, onDisplayPage);
}


/*
 * UpdateUserInfo is responsible for updating the personal information section
 * changing the password and the category permissions will be handled separately
 */
function UpdateUserInfo(userId)
{
	var emailaddress = escape($('edit_EmailAddress').value);
	var fullname = escape($('edit_Fullname').value);
	
	AjaxMethod.UpdateUserInfo(userId, emailaddress, fullname, onDisplayPage);
	
	setTimeout("AjaxMethod.EditUserInfo(" + userId + ", onDisplayPage)", 1000); // wait a while before going back to the edit page
}


function UpdatePassword(userId)
{
	var oldPassword = escape($('edit_PwdOld').value); // old pwd
	var newPassword = escape($('edit_PwdNew').value); // new pwd
	var conPassword = escape($('edit_PwdNewConfirm').value); // confirm new
	AjaxMethod.ChangePassword(userId, oldPassword, newPassword, conPassword, onDisplayPage);
	
	setTimeout("AjaxMethod.EditUserInfo(" + userId + ", onDisplayPage)", 1000);
}

function UpdateCategoryPermission(userId, categoryId)
{
	if ($('cat_'+categoryId).checked)
		AjaxMethod.AddPermission(userId, categoryId, onDisplayPage);
	else
		AjaxMethod.RemovePermission(userId, categoryId, onDisplayPage);
		
	//setTimeout("AjaxMethod.EditUserInfo(" + userId + ", onDisplayPage)", 10); // wait a while before going back to the edit page
}


function AddNewUser()
{
	$('newUser').innerHTML = '<form method="post" onsubmit="return AddNewUserSubmit()"><table border="0" cellpadding="5" width="400"><tr><td width="30%" align="right">Username</td><td align="left"><input id="add_Username" type="text" /></td></tr><tr><td align="right">Password</td><td><input align="left" id="add_Password" type="password"  /></td></tr><tr><td align="right">Email Address</td><td align="left"><input id="add_EmailAddress" type="text" /></td></tr><tr><td></td><td align="left"><input type="submit" value="Add User" /></form>';	
}

function AddNewUserSubmit()
{
	var username = escape($('add_Username').value);
	var password = escape($('add_Password').value);
	var emailaddress = escape($('add_EmailAddress').value);
	AjaxMethod.SaveNewUser(username, password, emailaddress, onAddNewUserSubmit);
	return false;
}

function onAddNewUserSubmit(res)
{
	$('editregion').innerHTML = res.text;
	setTimeout("AjaxMethod.ManageUsers(onDisplayPage)", 2000);
}

function ChangeAccessLevel(userId)
{
	var accessLevel = $('edit_AccessLevel')[$('edit_AccessLevel').selectedIndex].value;;
	AjaxMethod.ChangeAccessLevel(userId, accessLevel, onDisplayPage);	
}


toggleBlock=function(id)
{
	var currentPropVal = document.getElementById(id).style.display;
	var buttonName = id+'Button';

	if(currentPropVal == 'block')
	{
		document.getElementById(id).style.display = 'none';
		document.getElementById(buttonName).src = '../images/icon_display_plus.gif';
	}
	else
	{
		document.getElementById(id).style.display = 'block';
		document.getElementById(buttonName).src = '../images/icon_display_minus.gif';
	}
}