var current_page=null;
var login=null;
var adminWin=null;
var newsWin=null;
var permissions = {'1':'Players','2':'Coaches','3':'Clubs','4':'Admins','5':'Email Broadcast','6':'News Items','7':'CV\'s'};
//
function init()
{
	login = new Login();
	login.checkLogin();
	var links=$('navlist').getElementsByTagName('a');
	for(var i=0;i<links.length;i++)
	{
		Event.observe(links[i],'click',processLink,false);
	}
	displayPage('home',false);
}
function Login()
{
	var self=this;
	var admin=null;
	this.checkLogin = function ()
	{
		$('content').hide();
		// send an Ajax call to the server to see if we have a valid session and it authed
		Dialog.info("Checking for valid sessions ...", {windowParameters: {className:'alphacube',width:250, height:100}, showProgress: true});
		new Ajax.Request('_server.php',{method:"post",parameters:'task=check_login',onComplete:self.processCheckLogin});
	};
	this.showLogin = function ()
	{
		// Show the login box
		Dialog.confirm($('login').innerHTML, {windowParameters: {className:"alphacube", width:400}, 
                                      okLabel: "login", buttonClass:'button-green',cancelLabel: "cancel",
                                      ok:self.sendLogin});
	};
	this.processCheckLogin = function (data,json)
	{
		if(!json['valid'])
		{
			Dialog.closeInfo();
			self.showLogin();
		}
		else
		{
			Element.show($('content'));
			Dialog.closeInfo();
			self.admin=json['admin'];
			self.applyPermissions();
		}
		
	};
	this.sendLogin = function ()
	{
		new Ajax.Request('_server.php',{method:"post",parameters:'task=login&username='+$F('login_username')+'&password='+$F('login_password'),onComplete:self.processSendLogin});
	};
	this.processSendLogin = function(data,json)
	{
		if(json['valid'])
		{
			$('login_error_msg').hide(); 
			$('login_error_msg').style.color='green'; 
			$('login_error_msg').innerHTML='Login Successful';
			$('login_error_msg').show(); 
			Dialog.win.updateHeight();
			Element.show($('content'));
			Dialog.closeInfo();
			self.admin=json['admin'];
			self.applyPermissions();
		}
		else
		{
			$('login_error_msg').innerHTML='Username or Password incorrect';
			$('login_error_msg').show(); 
			Dialog.win.updateHeight();
			new Effect.Shake('modal_dialog');
		}
	};
	this.applyPermissions = function ()
	{
		var access_array=self.admin['access'].split(',');
		Element.hide($('admins_link').parentNode);
		Element.hide($('players_link').parentNode);
		Element.hide($('coaches_link').parentNode);
		Element.hide($('clubs_link').parentNode);
		Element.hide($('emails_link').parentNode);
		Element.hide($('news_link').parentNode);
		//
		for(var i=0;i<access_array.length;i++)
		{
			switch(access_array[i])
			{
				case '1':Element.show($('players_link').parentNode);break;
				case '2':Element.show($('coaches_link').parentNode);break;
				case '3':Element.show($('clubs_link').parentNode);break;
				case '4':Element.show($('admins_link').parentNode);break;
				case '5':Element.show($('emails_link').parentNode);break;
				case '6':Element.show($('news_link').parentNode);break;
			}
		}
	};
	this.logout = function ()
	{
		Dialog.confirm("Are you sure you want log out?", {windowParameters: {className:'alphacube',width:300}, okLabel: "Logout", buttonClass: "button-green", id: "myDialogId", cancel:function(win) {}, ok:self.sendLogout });
	};
	this.sendLogout = function ()
	{
		new Ajax.Request('_server.php',{method:"post",parameters:'task=logout',onComplete:self.processLogout});
	};
	this.processLogout = function ()
	{
		Dialog.closeInfo();
		self.checkLogin();
	};
	this.forgotPassword = function ()
	{
		if($F('login_username')=='')
		{
			$('login_error_msg').innerHTML='Enter in your Username and a new password will be emailed to you.';
			$('login_error_msg').show(); 
			Dialog.win.updateHeight();
		}
		else
		{
			new Ajax.Request('_server.php',{method:"post",parameters:'task=retrieve_password&username='+$F('login_username'),onComplete:self.processForgotPassword});
		}
	};
	this.processForgotPassword = function (data,json)
	{
		if(json['status'])
		{
			$('login_error_msg').innerHTML='A new password has been emailed to you.';
			$('login_error_msg').show(); 
			Dialog.win.updateHeight();
		}
		else
		{
			$('login_error_msg').innerHTML='That username does not exist.';
			$('login_error_msg').show(); 
			Dialog.win.updateHeight();
		}
	}
}
function displayPage(page,flag)
{
	if(flag==null) flag=true;
	if(current_page)
	{
		current_page.unloadEvents();
	}
	switch(page)
	{
		case 'players': current_page=new players();break;
		case 'coaches': current_page=new coaches();break;
		case 'clubs': current_page=new clubs();break;
		case 'admins': current_page=new admins();break;
		case 'password': current_page=new password();break;
		case 'home': current_page=new home();break;
		case 'emails': current_page=new emails();break;
		case 'news': current_page=new news();break;
		case 'cvs': current_page=new cvs();break;
		case 'pages': current_page=new pages();break;
	}
	
	var myAjax = new Ajax.Updater('rh-col', '_server.php', {method: 'post', parameters: 'task=get_page&page='+page,onComplete:(flag?current_page.init:function (){})});
}
function processLink(e)
{
	var obj=Event.element(e);
	//
	var page=obj.id.replace(/_link/,'');
	if(page!='logout')
	{
		Dialog.info("Loading page ...", {windowParameters: {className:'alphacube',width:250, height:100}, showProgress: true});
		displayPage(page);
	}
	else
	{
		login.logout();
	}
}
function password()
{
	var self=this;
	//
	this.init = function ()
	{
		Dialog.closeInfo();
		Event.observe($('change_password_btn'),'click',self.changePassword,false);
	};
	this.unloadEvents = function ()
	{
		Event.stopObserving($('change_password_btn'),'click',self.changePassword,false);
	};
	this.changePassword = function ()
	{
		var form=$('password_form')	;
		if((form.new_password.value!=form.new_password_confirm.value)||form.new_password.value=='')
		{
			Dialog.alert("The new password and confirmation don't match.", {windowParameters: {className:'alphacube',width:300, height:100}, okLabel: "close"});
		}
		else
		{
			new Ajax.Request('_server.php', {method:'post', parameters:'task=change_password&old_pass='+form.old_password.value+'&new_pass='+form.new_password.value, onSuccess:self.receiveChangePassword});
		}
	};
	this.receiveChangePassword = function (data,json)
	{
		if(json['status'])
		{
			Dialog.alert("Password changed successfully.", {windowParameters: {className:'alphacube',width:300, height:100}, okLabel: "close"});
		}
		else
		{
			Dialog.alert("Sorry, the old password was incorrect.", {windowParameters: {className:'alphacube',width:300, height:100}, okLabel: "close"});
		}
		Form.reset($('password_form'));
	};
}
function home()
{
	this.init = function ()
	{
		Dialog.closeInfo();
	};
	this.unloadEvents = function ()
	{
		
	};
}
function pages()
{
	var self=this;
	this.dataCache = new Object();
	this.init = function ()
	{
		Dialog.closeInfo();
		tinyMCE.execCommand( 'mceAddControl', true, 'page-content' );
		Event.observe($('add-page-btn'),'click',self.showAddPage,false);
		Event.observe($('list-pages-btn'),'click',self.getPages,false);
		Event.observe($('save-page-btn'),'click',self.savePage,false);
		Event.observe($('reset-page-btn'),'click',self.clearPageForm,false);
		self.getPages();
		
		Element.hide($('page-form'));

	};
	this.unloadEvents = function ()
	{
		tinyMCE.execCommand( 'mceRemoveControl', true, 'page-content' );
		Event.stopObserving($('add-page-btn'),'click',self.showAddPage,false);
		Event.stopObserving($('list-pages-btn'),'click',self.getPages,false);
		Event.stopObserving($('save-page-btn'),'click',self.savePage,false);
		Event.stopObserving($('reset-page-btn'),'click',self.clearPageForm,false);
	};
	this.getPages = function ()
	{
		
		new Ajax.Request('_server.php', {method:'post', parameters:'task=get_pages', onSuccess:self.populateResults});
		Element.hide($('page-form'));
		Element.show($('page-main'));
	};
	this.populateResults = function (data)
	{
		var json=eval('(' + data.responseText + ')');
		// first remove all other results
		removeAllChildren($('pages-table'));
		Element.hide($('loading'));
		self.dataCache=json;
		if(json.length>0)
		{
			Element.show($('pages-results'));
			for(var i=0;i<json.length;i++)
			{
				var newTR=document.createElement('tr');
				newTR.id='page_row_'+i
				newTR.setAttribute('idx',i);
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['id'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['title'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML='<a href="#" id="del_page_'+i+'">delete</a>';
				newTR.appendChild(newTD);
				//
				
				
				var newtr = $('pages-table').appendChild(newTR);	
				Event.observe(newtr,'mouseover',self.hoverPage,false);
				Event.observe(newtr,'mouseout',self.unhoverPage,false);
				Event.observe(newtr,'click',self.editPage,false);
				Event.observe($('del_page_'+i),'click',self.delPage,false);
			}
		}
		else
		{
			Element.show($('no_results'));
		}
	};
	this.hoverPage = function (e)
	{
		var row=Event.element(e).parentNode
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				Element.addClassName(row,'hoverRow');
			}
		}
	};
	this.unhoverPage = function (e)
	{
		var row=Event.element(e).parentNode
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				Element.removeClassName(row,'hoverRow');
			}
		}
	};
	this.editPage = function (e)
	{
		var td=Event.element(e);
		var row=td.parentNode;
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				var myAjax = new Ajax.Request('_server.php', {method: 'post', parameters: 'task=get_page_record&id='+self.dataCache[idx]['id'],onComplete:self.receivePage});
			}
		}
	};
	this.clearPageForm = function ()
	{
		var form=$('pageForm');
		form.id.value='';
		form.title.value='';
		form.keywords.value='';
		tinyMCE.getInstanceById('page-content').getBody().innerHTML='';
	};
	this.receivePage = function (data)
	{
		self.clearPageForm();
		var json=eval('(' + data.responseText + ')');
		var form=$('pageForm');
		form.id.value=json.id;
		form.title.value=json.title;
		form.keywords.value=json.keywords;
		tinyMCE.getInstanceById('page-content').getBody().innerHTML=json.html;
		$('page_form_title').innerHTML='Edit Page';
		Element.hide($('page-main'));
		Element.show($('page-form'));
	};
	this.showAddPage = function ()
	{
		Element.hide($('page-main'));
		Element.show($('page-form'));
		self.clearPageForm();
		$('page_form_title').innerHTML='Add Page';
	};
	this.savePage = function ()
	{
		$('pageForm').html.value=tinyMCE.getInstanceById('page-content').getBody().innerHTML;
		//
		var get=Form.serialize($('pageForm'));
		//
		new Ajax.Request('_server.php', {method:'post', parameters:'task=save_page&'+get, onSuccess:self.receiveSavePage});
	};
	this.receiveSavePage = function (data,json)
	{
		var json=eval('(' + data.responseText + ')');
		//
		$('pageForm').id.value=json.id;
		//
		Dialog.alert(json.message, {windowParameters: {className:'alphacube',width:300, height:100}, okLabel: "close",buttonClass:'button-green'});
	};
	this.delPage = function (e)
	{
		var idx=Event.element(e).id.replace(/del_page_/,'');
		Dialog.confirm("Are you sure you want to delete this Page?", {windowParameters: {className:'alphacube',width:300}, buttonClass: "button-green", id: "myDialogId", cancel:function(win) {}, ok:function (win) {new Ajax.Request('_server.php', {method:'post', parameters:'task=del_page&id='+self.dataCache[idx]['id'], onSuccess:self.getPages});Dialog.closeInfo();} });
		Event.stop(e);	
	};
}
function cvs()
{
	var self=this;
	this.dataCache = new Object();
	this.init = function ()
	{
		Dialog.closeInfo();
		tinyMCE.execCommand( 'mceAddControl', true, 'short-desc' );
		tinyMCE.execCommand( 'mceAddControl', true, 'long-desc' );
		Event.observe($('add-cv-btn'),'click',self.showAddCV,false);
		Event.observe($('image_main'),'error',self.displayBlankImage,false);
		Event.observe($('list-cv-btn'),'click',self.getCVS,false);
		Event.observe($('save-cv-btn'),'click',self.saveCV,false);
		Event.observe($('reset-cv-btn'),'click',self.clearCVForm,false);
		self.getCVS();
		
		Element.hide($('cvs_form'));

	};
	this.unloadEvents = function ()
	{
		tinyMCE.execCommand( 'mceRemoveControl', true, 'short-desc' );
		tinyMCE.execCommand( 'mceRemoveControl', true, 'long-desc' );
		Event.stopObserving($('image_main'),'error',self.displayBlankImage,false);
		Event.stopObserving($('add-cv-btn'),'click',self.showAddCV,false);
		Event.stopObserving($('list-cv-btn'),'click',self.getCVS,false);
		Event.stopObserving($('save-cv-btn'),'click',self.saveCV,false);
		Event.stopObserving($('reset-cv-btn'),'click',self.clearCVForm,false);
	};
	this.clearCVForm = function ()
	{
		var form=$('cvsForm');
		form.id.value='';
		form.category.value='';
		tinyMCE.getInstanceById('short-desc').getBody().innerHTML='';
		tinyMCE.getInstanceById('long-desc').getBody().innerHTML='';
		form.image.value='';
		$('image_main').src='images/no_image.jpg';
	};
	this.displayBlankImage = function ()
	{
		$('image_main').src='images/no_image.jpg';
	};
	this.showAddCV = function ()
	{
		Element.hide($('cvs_main'));
		Element.show($('cvs_form'));
		self.clearCVForm();
		$('cv_form_title').innerHTML='Add CV';
		
	};
	this.getCVS = function ()
	{
		
		new Ajax.Request('_server.php', {method:'post', parameters:'task=get_cvs', onSuccess:self.populateResults});
		Element.hide($('cvs_form'));
		Element.show($('cvs_main'));
	};
	this.editCV = function (e)
	{
		var td=Event.element(e);
		var row=td.parentNode;
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				var myAjax = new Ajax.Request('_server.php', {method: 'post', parameters: 'task=get_cv&id='+self.dataCache[idx]['id'],onComplete:self.receiveCV});
			}
		}
	};
	this.receiveCV = function (data)
	{
		self.clearCVForm();
		var json=eval('(' + data.responseText + ')');
		var form=$('cvsForm');
		form.id.value=json.id;
		form.category.value=json.category;
		tinyMCE.getInstanceById('short-desc').getBody().innerHTML=json.short_desc;
		tinyMCE.getInstanceById('long-desc').getBody().innerHTML=json.long_desc;
		$('image_main').src='/images/cvs/'+json.id+'.jpg';
		$('cv_form_title').innerHTML='Edit CV';
		Element.hide($('cvs_main'));
		Element.show($('cvs_form'));
	};
	this.populateResults = function (data)
	{
		var json=eval('(' + data.responseText + ')');
		// first remove all other results
		removeAllChildren($('cv_table'));
		Element.hide($('loading'));
		self.dataCache=json;
		if(json.length>0)
		{
			Element.show($('cv_results'));
			for(var i=0;i<json.length;i++)
			{
				var newTR=document.createElement('tr');
				newTR.id='cv_row_'+i
				newTR.setAttribute('idx',i);
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['id'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['short_desc'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['date_added'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['category'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML='<a href="#" id="del_cv_'+i+'">delete</a>';
				newTR.appendChild(newTD);
				//
				var newtr = $('cv_table').appendChild(newTR);	
				Event.observe(newtr,'mouseover',self.hoverCV,false);
				Event.observe(newtr,'mouseout',self.unhoverCV,false);
				Event.observe(newtr,'click',self.editCV,false);
				Event.observe($('del_cv_'+i),'click',self.delCV,false);
			}
		}
		else
		{
			Element.show($('no_results'));
		}
	};
	this.saveCV = function ()
	{
		$('cvsForm').short_desc.value=tinyMCE.getInstanceById('short-desc').getBody().innerHTML;
		$('cvsForm').long_desc.value=tinyMCE.getInstanceById('long-desc').getBody().innerHTML;
		var get=Form.serialize($('cvsForm'));
		//
		
		new Ajax.Request('_server.php', {method:'post', parameters:'task=save_cv&'+get, onSuccess:self.receiveSaveCV});
	};
	this.receiveSaveCV = function (data,json)
	{
		var json=eval('(' + data.responseText + ')');
		//
		$('cvsForm').id.value=json.id;
		//
		Dialog.alert(json.message, {windowParameters: {className:'alphacube',width:300, height:100}, okLabel: "close",buttonClass:'button-green'});
		
	};
	this.delCV = function (e)
	{
		var idx=Event.element(e).id.replace(/del_cv_/,'');
		Dialog.confirm("Are you sure you want to delete this CV?", {windowParameters: {className:'alphacube',width:300}, buttonClass: "button-green", id: "myDialogId", cancel:function(win) {}, ok:function (win) {new Ajax.Request('_server.php', {method:'post', parameters:'task=del_cv&id='+self.dataCache[idx]['id'], onSuccess:self.getCVS});Dialog.closeInfo();} });
		Event.stop(e);	
	};
	this.hoverCV = function (e)
	{
		var row=Event.element(e).parentNode
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				Element.addClassName(row,'hoverRow');
			}
		}
	};
	this.unhoverCV = function (e)
	{
		var row=Event.element(e).parentNode
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				Element.removeClassName(row,'hoverRow');
			}
		}
	};
}
function emails()
{
	var self=this;
	var mode='test';
	var contents=null;
	var dataCache=null;
	this.init = function ()
	{
		Dialog.closeInfo();
		self.contents=$('tab1','tab2','tab3');
		for(var i = 1; i < self.contents.length; i++) {
			self.contents[i].style.display = 'none';
		}
		Event.observe($('add_reg_no'),'click',self.insertPlayerCoach,false);
		Event.observe($('send_email_btn'),'click',self.sendEmail,false);
		Event.observe($('send_test_btn'),'click',self.sendEmail,false);
		$('send_to').value=login.admin.email_address;
		//
		tinyMCE.execCommand( 'mceAddControl', true, 'message_body' );
		new Ajax.Autocompleter("reg_no", "ac_playercoach_results", "_server.php?task=ac_search_playerscoaches", {
		  paramName: "value", 
		  minChars: 3
		});
		//
		self.getQueue();
		self.getAddress();
	};
	this.unloadEvents = function ()
	{
		tinyMCE.execCommand( 'mceRemoveControl', true, 'message_body' );
		Event.stopObserving($('send_email_btn'),'click',self.sendEmail,false);
		Event.stopObserving($('send_test_btn'),'click',self.sendEmail,false);
	};
	this.insertPlayerCoach = function(e)
	{
		var reg_no=$('reg_no').value;
		new Ajax.Request('_server.php', {method:'post', parameters:'task=get_coach_player&reg_no='+reg_no, onSuccess:self.processCoachPlayer});
	};
	this.processCoachPlayer = function (data,json)
	{
		var message_body = tinyMCE.getContent();
		if(message_body=='')message_body='<p></p>';
		tinyMCE.setContent(message_body+data.responseText);
	};
	this.getQueue = function ()
	{
		new Ajax.Request('_server.php', {method:'post', parameters:'task=get_mail_queue', onSuccess:self.processQueue});
	};
	this.processQueue = function (data,json)
	{
		var json=eval('(' + data.responseText + ')');
		removeAllChildren($('queue_table'));
		if(json.length>0)
		{
			for(var i=0;i<json.length;i++)
			{
				var newTR=document.createElement('tr');
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['qID'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['subject'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['send_date'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['lists'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['status'];
				newTR.appendChild(newTD);
				//
				var newtr = $('queue_table').appendChild(newTR);	
			}
			$('queue_no_results').hide();
			$('queue_results').show();
		}
		else
		{
			$('queue_no_results').show();
			$('queue_results').hide();
		}
	};
	this.getAddress = function ()
	{
		//new Ajax.Updater('address_table', '_server.php', {method: 'post', parameters: 'task=get_addresses',onComplete:self.receiveAddresses});
		new Ajax.Request('_server.php', {method:'post', parameters:'task=get_addresses', onSuccess:self.processAddress});
	};
	this.receiveAddresses = function ()
	{
		//Element.hide($('address_no_results'));
		//Element.show($('address_results'));
	};
	this.processAddress = function (data,json)
	{
		//alert(data.responseText);
		var json=eval('(' + data.responseText + ')');
		self.dataCache=json;
		removeAllChildren($('address_table'));
		if(json.length>0)
		{
			for(var i=0;i<json.length;i++)
			{
				var newTR=document.createElement('tr');
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['reg_no'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['first_name']+' '+json[i]['last_name'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['email_address'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['login_type'];
				newTR.appendChild(newTD);

				var newTD=document.createElement('td');
				newTD.innerHTML='<input type="button" class="button-green" value="Delete" id="del_email_'+i+'" />';
				newTR.appendChild(newTD);
				//
				var newtr = $('address_table').appendChild(newTR);
				Event.observe($('del_email_'+i),'click',self.delEmail,false);
			}
			$('address_no_results').hide();
			$('address_results').show();
		}
		else
		{
			$('address_no_results').show();
			$('address_results').hide();
		}
	};
	this.delEmail = function(e)
	{
		var idx=Event.element(e).id.replace(/del_email_/,'');
		Dialog.confirm("Are you sure you want to delete "+self.dataCache[idx]['email_address']+"?", {windowParameters: {className:'alphacube',width:300}, buttonClass: "button-green", id: "myDialogId", cancel:function(win) {}, ok:function (win) {new Ajax.Request('_server.php', {method:'post', parameters:'task=del_user&userID='+self.dataCache[idx]['userID'], onSuccess:self.getAddress});Dialog.closeInfo();} });
		Event.stop(e);	
	};
	this.sendEmail = function (e)
	{
		var obj=Event.element(e);
		self.mode=(obj.id=='send_email_btn'?'real':'test');
		//
		if(self.mode=='test'&&$F('send_to')=='')
		{
			Dialog.alert("You must enter in an email address in the box provided to send a test email.", {windowParameters: {className:'alphacube',width:300, height:100}, okLabel: "close",buttonClass:'button-green'});
		}
		else
		{
			var lists=self.getLists();
			Dialog.confirm('Are you sure you want to send this email out to '+(self.mode=='real'?'emails in lists ['+lists+'] of Rah Rah Rugby':$F('send_to'))+'?', {windowParameters: {className:"alphacube", width:400}, okLabel: "ok", buttonClass:'button-green',cancelLabel: "cancel", ok:self.queueEmail});
		}
	};
	this.getLists = function()
	{
		var form=$('composeForm');
		//
		var lists = form.lists;
		//
		var ret='';
		for(var i=0;i<lists.length;i++)
		{
			if(lists[i].checked)
			{
				ret+=lists[i].value+',';
			}
		}
		ret=ret.replace(/,$/,'');
		return(ret);
	};
	this.queueEmail = function ()
	{
		var lists=self.getLists();
		//tinyMCE.execCommand('mceCleanup');
		var message_body = tinyMCE.getContent();
		var message_subject = $F('message_subject');
		//
		new Ajax.Request('_server.php', {method:'post', parameters:'task=send_mailout&send_to='+(self.mode=='real'?'all':$F('send_to'))+'&message_body='+escape(message_body)+'&message_subject='+escape(message_subject)+'&lists='+escape(lists), onSuccess:self.receiveQueueEmail});
	};
	this.receiveQueueEmail = function ()
	{
		Dialog.closeInfo();
		//
		if(self.mode=='real')
		{
			Dialog.alert("Email Broadcast sent out to "+self.getLists()+", please check the 'Mailout Queue' for status updates.", {windowParameters: {className:'alphacube',width:300, height:100}, okLabel: "close",buttonClass:'button-green'});
			$('message_subject').value='';
			tinyMCE.setContent('');
			self.getQueue();
			new EffectPack.TabToggle($('tabs').getElementsByTagName('a')[1]);
		}
		else
		{
			Dialog.alert("Test Email sent to "+$F('send_to'), {windowParameters: {className:'alphacube',width:300, height:100}, okLabel: "close",buttonClass:'button-green'});
		}
	};
}
function players()
{
	var self=this;
	this.dataCache = null;
	this.init = function ()
	{
		Dialog.closeInfo();
		Event.observe($('find_player_btn'),'click',self.findRego,false);
		Event.observe($('search_player_btn'),'click',self.searchPlayers,false);
		Event.observe($('clear_player_btn'),'click',self.clearPlayers,false);
		new Ajax.Autocompleter("player_reg_no", "ac_player_results", "_server.php?task=ac_search_players", {
		  paramName: "value", 
		  minChars: 3
		});

		//self.getPlayerNum();
	};
	this.unloadEvents = function ()
	{
		Event.stopObserving($('find_player_btn'),'click',self.findRego,false);
		Event.stopObserving($('search_player_btn'),'click',self.searchPlayers,false);
	};
	this.searchPlayers = function(e)
	{
		var get=Form.serialize($('playersSearch'));
		//
		Element.hide($('player_results'));
		Element.hide($('no_results'));
		Element.show($('loading'));
		new Ajax.Request('_server.php', {method:'post', parameters:'task=search_players&'+get, onSuccess:self.populateResults});
	};
	this.getPlayerNum = function ()
	{
		new Ajax.Request('_server.php', {method:'post', parameters:'task=get_user_num&type=player', onSuccess:self.receivePlayerNum});
	};
	this.receivePlayerNum = function (data,json)
	{
		$('player-count').innerHTML=json.count;	
	};
	this.clearPlayers = function (e)
	{
		Form.reset($('playersSearch'));
		Element.hide($('player_results'));
	};
	this.findRego = function(e)
	{
		var reg_no=$F('player_reg_no');
		//
		Element.hide($('player_results'));
		Element.hide($('no_results'));
		Element.show($('loading'));
		new Ajax.Request('_server.php', {method:'post', parameters:'task=find_rego&type=players&reg_no='+reg_no, onSuccess:self.populateResults});
	};
	this.populateResults = function (data)
	{
		
		var json=eval('(' + data.responseText + ')');
		// first remove all other results
		removeAllChildren($('player_table'));
		Element.hide($('loading'));
		self.dataCache=json;
		if(json.length>0)
		{
			Element.show($('player_results'));
			for(var i=0;i<json.length;i++)
			{
				var newTR=document.createElement('tr');
				newTR.id='player_row_'+i
				newTR.setAttribute('idx',i);
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['reg_no'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['level'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['first_name'].toUpperCase()+' '+json[i]['last_name'].toUpperCase();
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['email_address'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML='<a href="player_cv_pdf.php?userID='+json[i]['userID']+'&.pdf" target="_new"><img src="images/pdf_sm.gif" alt="Download CV in PDF" title="Download CV in PDF" /></a>&nbsp;&nbsp;<input type="button" class="button-green" value="Delete" id="del_player_'+i+'" />';
				newTR.appendChild(newTD);
				//
				var newtr = $('player_table').appendChild(newTR);	
				Event.observe(newtr,'mouseover',self.hoverPlayer,false);
				Event.observe(newtr,'mouseout',self.unhoverPlayer,false);
				Event.observe(newtr,'click',self.viewPlayer,false);
				Event.observe($('del_player_'+i),'click',self.delPlayer,false);
			}
		}
		else
		{
			Element.show($('no_results'));
		}
	};
	this.delPlayer = function (e)
	{
		var idx=Event.element(e).id.replace(/del_player_/,'');
		Dialog.confirm("Are you sure you want to delete "+self.dataCache[idx]['first_name'].toUpperCase()+' '+self.dataCache[idx]['last_name'].toUpperCase()+" ?", {windowParameters: {className:'alphacube',width:300}, buttonClass: "button-green", id: "myDialogId", cancel:function(win) {}, ok:function (win) {new Ajax.Request('_server.php', {method:'post', parameters:'task=del_user&userID='+self.dataCache[idx]['userID']+'&table=players', onSuccess:self.searchPlayers});Dialog.closeInfo();} });
		Event.stop(e);	
	};
	this.viewPlayer = function (e)
	{
		var td=Event.element(e);
		var row=td.parentNode;
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				var myAjax = new Ajax.Updater('players_view', '_server.php', {method: 'post', parameters: 'task=get_player&userID='+self.dataCache[idx]['userID'],onComplete:self.receivePlayer});
			}
		}
	};
	this.receivePlayer = function (e)
	{
		Element.hide($('players_main'));	
		Element.hide($('player_results'));	
		Element.show($('players_view'));
	};
	this.backSearch = function (e)
	{
		Element.hide($('players_view'));
		Element.show($('players_main'));	
		Element.show($('player_results'));	
	};
	this.hoverPlayer = function (e)
	{
		var row=Event.element(e).parentNode
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				Element.addClassName(row,'hoverRow');
			}
		}
	};
	this.unhoverPlayer = function (e)
	{
		var row=Event.element(e).parentNode
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				Element.removeClassName(row,'hoverRow');
			}
		}
	};
	this.savePlayer = function ()
	{
		var get=Form.serialize($('playerForm'));
		//
		new Ajax.Request('_server.php', {method:'post', parameters:'task=save_player&'+get, onSuccess:self.receiveSavePlayer});
	};
	this.receiveSavePlayer = function (data,json)
	{
		var json=eval('(' + data.responseText + ')');
		//
		Dialog.alert(json.message, {windowParameters: {className:'alphacube',width:300, height:100}, okLabel: "close",buttonClass:'button-green'});
	};
}
function clubs()
{
	var self=this;
	this.dataCache = null;
	this.init = function ()
	{
		Dialog.closeInfo();
		Event.observe($('find_clubs_btn'),'click',self.findRego,false);
		Event.observe($('search_clubs_btn'),'click',self.searchClubs,false);
		Event.observe($('clear_clubs_btn'),'click',self.clearClubs,false);
		new Ajax.Autocompleter("clubs_reg_no", "ac_clubs_results", "_server.php?task=ac_search_clubs", {
		  paramName: "value", 
		  minChars: 3
		});
		//self.getClubNum();
	};
	this.unloadEvents = function ()
	{
		Event.stopObserving($('find_clubs_btn'),'click',self.findRego,false);
		Event.stopObserving($('search_clubs_btn'),'click',self.searchClubs,false);
	};
	this.searchClubs = function(e)
	{
		var get=Form.serialize($('clubsSearch'));
		//
		Element.hide($('clubs_results'));
		Element.hide($('no_results'));
		Element.show($('loading'));
		new Ajax.Request('_server.php', {method:'post', parameters:'task=search_clubs&'+get, onSuccess:self.populateResults});
	};
	this.getClubNum = function ()
	{
		new Ajax.Request('_server.php', {method:'post', parameters:'task=get_user_num&type=club', onSuccess:self.receiveClubNum});
	};
	this.receiveClubNum = function (data,json)
	{
		$('club-count').innerHTML=json.count;	
	};
	this.clearClubs = function (e)
	{
		Form.reset($('clubsSearch'));
		Element.hide($('clubs_results'));
	};
	this.findRego = function(e)
	{
		var reg_no=$F('clubs_reg_no');
		//
		Element.hide($('clubs_results'));
		Element.hide($('no_results'));
		Element.show($('loading'));
		new Ajax.Request('_server.php', {method:'post', parameters:'task=find_rego&type=clubs&reg_no='+reg_no, onSuccess:self.populateResults});
	};
	this.populateResults = function (data)
	{
		var json=eval('(' + data.responseText + ')');
		// first remove all other results
		removeAllChildren($('clubs_table'));
		Element.hide($('loading'));
		self.dataCache=json;
		if(json.length>0)
		{
			for(var i=0;i<json.length;i++)
			{
				var newTR=document.createElement('tr');
				newTR.setAttribute('idx',i);
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['reg_no'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['first_name'].toUpperCase()+' '+json[i]['last_name'].toUpperCase();
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['email_address'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML='<a href="club_cv_pdf.php?userID='+json[i]['userID']+'&.pdf" target="_new"><img src="images/pdf_sm.gif" alt="Download CV in PDF" title="Download CV in PDF" /></a>&nbsp;&nbsp;<input type="button" class="button-green" value="Delete" id="del_club_'+i+'" />';
				newTR.appendChild(newTD);
				//
				var newtr = $('clubs_table').appendChild(newTR);	
				Event.observe(newtr,'mouseover',self.hoverClub,false);
				Event.observe(newtr,'mouseout',self.unhoverClub,false);
				Event.observe(newtr,'click',self.viewClub,false);
				Event.observe($('del_club_'+i),'click',self.delClub,false);
				
			}
			Element.show($('clubs_results'));
		}
		else
		{
			Element.show($('no_results'));
		}
	};
	this.delClub = function (e)
	{
		var idx=Event.element(e).id.replace(/del_club_/,'');
		Dialog.confirm("Are you sure you want to delete "+self.dataCache[idx]['first_name'].toUpperCase()+' '+self.dataCache[idx]['last_name'].toUpperCase()+" ?", {windowParameters: {className:'alphacube',width:300}, buttonClass: "button-green", id: "myDialogId", cancel:function(win) {}, ok:function (win) {new Ajax.Request('_server.php', {method:'post', parameters:'task=del_user&userID='+self.dataCache[idx]['userID']+'&table=clubs', onSuccess:self.searchClubs});Dialog.closeInfo();} });
		Event.stop(e);	
	};
	this.viewClub = function (e)
	{
		var row=Event.element(e).parentNode;
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				var myAjax = new Ajax.Updater('clubs_view', '_server.php', {method: 'post', parameters: 'task=get_club&userID='+self.dataCache[idx]['userID'],onComplete:self.receiveClub});
			}
		}
	};
	this.receiveClub = function (e)
	{
		Element.hide($('clubs_main'));	
		Element.hide($('clubs_results'));	
		Element.show($('clubs_view'));
	};
	this.backSearch = function (e)
	{
		Element.hide($('clubs_view'));
		Element.show($('clubs_main'));	
		Element.show($('clubs_results'));	
	};
	this.hoverClub = function (e)
	{
		var row=Event.element(e).parentNode
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				Element.addClassName(row,'hoverRow');
			}
		}
	};
	this.unhoverClub = function (e)
	{
		var row=Event.element(e).parentNode
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				Element.removeClassName(row,'hoverRow');
			}
		}
	};
	this.saveClub = function ()
	{
		var get=Form.serialize($('clubForm'));
		//
		new Ajax.Request('_server.php', {method:'post', parameters:'task=save_club&'+get, onSuccess:self.receiveSaveClub});
	};
	this.receiveSaveClub = function (data,json)
	{
		var json=eval('(' + data.responseText + ')');
		//
		Dialog.alert(json.message, {windowParameters: {className:'alphacube',width:300, height:100}, okLabel: "close",buttonClass:'button-green'});
	};
}
function coaches()
{
	var self=this;
	this.dataCache = null;
	this.init = function ()
	{
		Dialog.closeInfo();
		Event.observe($('find_coach_btn'),'click',self.findRego,false);
		Event.observe($('search_coach_btn'),'click',self.searchCoaches,false);
		Event.observe($('clear_coach_btn'),'click',self.clearCoaches,false);
		new Ajax.Autocompleter("coach_reg_no", "ac_coach_results", "_server.php?task=ac_search_coaches", {
		  paramName: "value", 
		  minChars: 3
		});
		//self.getCoachNum();
	};
	this.unloadEvents = function ()
	{
		Event.stopObserving($('find_coach_btn'),'click',self.findRego,false);
		Event.stopObserving($('search_coach_btn'),'click',self.searchCoaches,false);
	};
	this.getCoachNum = function ()
	{
		new Ajax.Request('_server.php', {method:'post', parameters:'task=get_user_num&type=coach', onSuccess:self.receiveCoachNum});
	};
	this.receiveCoachNum = function (data,json)
	{
		$('coach-count').innerHTML=json.count;	
	};
	this.searchCoaches = function(e)
	{
		var get=Form.serialize($('coachesSearch'));
		//
		Element.hide($('coach_results'));
		Element.hide($('no_results'));
		Element.show($('loading'));
		new Ajax.Request('_server.php', {method:'post', parameters:'task=search_coaches&'+get, onSuccess:self.populateResults});
	};
	this.clearCoaches = function (e)
	{
		Form.reset($('coachesSearch'));
		Element.hide($('coach_results'));
	};
	this.findRego = function(e)
	{
		var reg_no=$F('coach_reg_no');
		//
		Element.hide($('coach_results'));
		Element.hide($('no_results'));
		Element.show($('loading'));
		new Ajax.Request('_server.php', {method:'post', parameters:'task=find_rego&type=coaches&reg_no='+reg_no, onSuccess:self.populateResults});
	};
	this.populateResults = function (data)
	{
		var json=eval('(' + data.responseText + ')');
		// first remove all other results
		removeAllChildren($('coach_table'));
		Element.hide($('loading'));
		self.dataCache=json;
		if(json.length>0)
		{
			for(var i=0;i<json.length;i++)
			{
				var newTR=document.createElement('tr');
				newTR.setAttribute('idx',i);
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['reg_no'];
				newTR.appendChild(newTD);

				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['level'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['first_name'].toUpperCase()+' '+json[i]['last_name'].toUpperCase();
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['email_address'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML='<a href="coach_cv_pdf.php?userID='+json[i]['userID']+'&.pdf" target="_new"><img src="images/pdf_sm.gif" alt="Download CV in PDF" title="Download CV in PDF" /></a>&nbsp;&nbsp;<input type="button" class="button-green" value="Delete" id="del_coach_'+i+'" />';
				newTR.appendChild(newTD);
				//
				var newtr = $('coach_table').appendChild(newTR);	
				Event.observe(newtr,'mouseover',self.hoverCoach,false);
				Event.observe(newtr,'mouseout',self.unhoverCoach,false);
				Event.observe(newtr,'click',self.viewCoach,false);
				Event.observe($('del_coach_'+i),'click',self.delCoach,false);	
			}
			Element.show($('coach_results'));
		}
		else
		{
			Element.show($('no_results'));
		}
	};
	this.delCoach = function (e)
	{
		var idx=Event.element(e).id.replace(/del_coach_/,'');
		Dialog.confirm("Are you sure you want to delete "+self.dataCache[idx]['first_name'].toUpperCase()+' '+self.dataCache[idx]['last_name'].toUpperCase()+" ?", {windowParameters: {className:'alphacube',width:300}, buttonClass: "button-green", id: "myDialogId", cancel:function(win) {}, ok:function (win) {new Ajax.Request('_server.php', {method:'post', parameters:'task=del_user&userID='+self.dataCache[idx]['userID']+'&table=coaches', onSuccess:self.searchCoaches});Dialog.closeInfo();} });
		Event.stop(e);	
	};
	this.viewCoach = function (e)
	{
		var row=Event.element(e).parentNode;
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				var myAjax = new Ajax.Updater('coaches_view', '_server.php', {method: 'post', parameters: 'task=get_coach&userID='+self.dataCache[idx]['userID'],onComplete:self.receiveCoach});
			}
		}
	};
	this.receiveCoach = function (e)
	{
		Element.hide($('coaches_main'));
		Element.hide($('coach_results'));	
		Element.show($('coaches_view'));
	};
	this.backSearch = function (e)
	{
		Element.hide($('coaches_view'));
		Element.show($('coaches_main'));	
		Element.show($('coach_results'));	
	};
	this.hoverCoach = function (e)
	{
		var row=Event.element(e).parentNode
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				Element.addClassName(row,'hoverRow');
			}
		}
	};
	this.unhoverCoach = function (e)
	{
		var row=Event.element(e).parentNode
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				Element.removeClassName(row,'hoverRow');
			}
		}
	};
	this.saveCoach = function ()
	{
		var get=Form.serialize($('coachForm'));
		//
		new Ajax.Request('_server.php', {method:'post', parameters:'task=save_coach&'+get, onSuccess:self.receiveSaveCoach});
	};
	this.receiveSaveCoach = function (data,json)
	{
		var json=eval('(' + data.responseText + ')');
		//
		Dialog.alert(json.message, {windowParameters: {className:'alphacube',width:300, height:100}, okLabel: "close",buttonClass:'button-green'});
	};
}
function admins()
{
	var self=this;
	this.init = function ()
	{
		Dialog.closeInfo();
		Event.observe($('add_admin_btn'),'click',self.newAdmin,false);
		Event.observe($('manage_admin_btn'),'click',self.manageAdmin,false);
		self.getAdmins();
	};
	this.unloadEvents = function ()
	{
		Event.stopObserving($('add_admin_btn'),'click',self.newAdmin,false);
		Event.stopObserving($('manage_admin_btn'),'click',self.manageAdmin,false);
	};
	this.newAdmin = function ()
	{
		$('admin_error_msg').hide();
		$('manage_admin_btn').value="Add";
		Form.reset($('admin_form'));
		if(adminWin!=null)
		{
			adminWin.setTitle('<b>Add New Admin</b>');
			adminWin.show(); 
		}
		else
		{
			adminWin = new Window('admin_win', {title:'<b>Add New Admin</b>',className:'alphacube',resizable: false, hideEffect:Element.hide, showEffect:Element.show, minWidth: 10});
			adminWin.setContent('admin_manage', true, true);
			adminWin.setLocation(250, 300);
			adminWin.toFront();	
			adminWin.show(); 
		}
	};
	this.manageAdmin = function ()
	{
		var post=Form.serialize($('admin_form'));
		//
		var task=($('admin_form').adminID.value==''?'insert_admin':'update_admin');
		new Ajax.Request('_server.php', {method:'post', parameters:'task='+task+'&'+post, onSuccess:self.processManageAdmin});
	};
	this.processManageAdmin = function (data,json)
	{
		$('admin_error_msg').style.color=(json['status']?'green':'red');
		$('admin_error_msg').innerHTML=json['message'];
		$('admin_error_msg').show();
		if(json['status'])
		{
			if($('admin_form').adminID.value=='')
			{
				adminWin.setTitle('Edit Admin');
				$('admin_form').adminID.value=json['adminID'];
				$('manage_admin_btn').value='Update';
			}
		}
		adminWin.updateHeight();
		self.getAdmins();
	};
	this.getAdmins = function ()
	{
		Element.hide($('admins_results'));
		Element.show($('loading'));
		new Ajax.Request('_server.php', {method:'post', parameters:'task=get_admins', onSuccess:self.populateResults});
	};
	this.populateResults = function (data)
	{
		var json=eval('(' + data.responseText + ')');
		// first remove all other results
		removeAllChildren($('admins_table'));
		Element.hide($('loading'));
		self.dataCache=json;
		if(json.length>0)
		{
			Element.show($('admins_results'));
			for(var i=0;i<json.length;i++)
			{
				
				var newTR=document.createElement('tr');
				newTR.id='admin_row_'+i
				newTR.setAttribute('idx',i);
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['name'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['email_address'];
				newTR.appendChild(newTD);
				//
				var access_array=json[i]['access'].split(',');
				for(var j=0;j<access_array.length;j++)
				{
					access_array[j]=permissions[access_array[j]];
				}

				var newTD=document.createElement('td');
				newTD.innerHTML=access_array.join(', ');
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML='<input type="button" class="button-green" value="Delete" id="del_admin_'+i+'" />';
				newTR.appendChild(newTD);
				//
				var newtr = $('admins_table').appendChild(newTR);	
				Event.observe(newtr,'mouseover',self.hoverAdmin,false);
				Event.observe(newtr,'mouseout',self.unhoverAdmin,false);
				Event.observe(newtr,'click',self.editAdmin,false);
				Event.observe($('del_admin_'+i),'click',self.deleteAdmin,false);
			}
		}
		else
		{
			Element.show($('no_results'));
		}
	};
	this.editAdmin = function (e)
	{
		var row=Event.element(e).parentNode
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				$('admin_error_msg').hide();
				$('manage_admin_btn').value='Update';
				if(adminWin)
				{
					
					adminWin.setTitle('<b>Edit Admin</b>');
					
					adminWin.show(); 
				}
				else
				{
					adminWin = new Window('admin_win', {title:'<b>Edit Admin</b>',className:'alphacube',resizable: false, hideEffect:Element.hide, showEffect:Element.show, minWidth: 10});
					adminWin.setContent('admin_manage', true, true);
					adminWin.setLocation(250, 300);
					adminWin.toFront();	
					adminWin.show(); 
				}
				var form=$('admin_form');
				form.adminID.value=self.dataCache[idx]['adminID'];
				form.name.value=self.dataCache[idx]['name'];
				form.email_address.value=self.dataCache[idx]['email_address'];
				var access_array=self.dataCache[idx]['access'].split(',');
				var obj=eval("form.elements['access[]']");
				//
				for(var i=0;i<obj.options.length;i++)
				{
					if(access_array.indexOf(obj.options[i].value)>=0)
					{
						obj.options[i].selected=true;
					}
				}
			}
		}
	};
	this.deleteAdmin = function (e)
	{
		var idx=Event.element(e).id.replace(/del_admin_/,'');
		Dialog.confirm("Are you sure you want to delete "+self.dataCache[idx]['name']+" as an Admin?", {windowParameters: {className:'alphacube',width:300}, buttonClass: "button-green", id: "myDialogId", cancel:function(win) {}, ok:function (win) {self.delAdmin(idx);} });
		Event.stop(e);	
	};
	this.delAdmin = function (idx)
	{
		new Ajax.Request('_server.php', {method:'post', parameters:'task=delete_admin&adminID='+self.dataCache[idx]['adminID'], onSuccess:function () 			{Dialog.closeInfo();self.getAdmins();}});
	};
	this.hoverAdmin = function (e)
	{
		var row=Event.element(e).parentNode
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				Element.addClassName(row,'hoverRow');
			}
		}
	};
	this.unhoverAdmin = function (e)
	{
		var row=Event.element(e).parentNode
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				Element.removeClassName(row,'hoverRow');
			}
		}
	};
}
function news()
{
	var self=this;
	this.init = function ()
	{
		Dialog.closeInfo();
		
		Event.observe($('add_news_btn'),'click',self.newNews,false);
		Event.observe($('manage_news_btn'),'click',self.manageNews,false);
		self.getNews();
	};
	this.unloadEvents = function ()
	{
		Event.stopObserving($('add_news_btn'),'click',self.newNews,false);
		Event.stopObserving($('manage_news_btn'),'click',self.manageNews,false);
		tinyMCE.execCommand('mceRemoveControl', true, 'news_content' );
	};
	this.newNews = function ()
	{
		$('news_error_msg').hide();
		$('manage_news_btn').value="Add";
		Form.reset($('news_form'));
		if(newsWin!=null)
		{
			$('news_form').newsID.value='';
			newsWin.setTitle('<b>Add News Item</b>');
			newsWin.show(); 
		}
		else
		{
			newsWin = new Window('news_win', {title:'<b>Add News Item</b>',className:'alphacube',resizable: false, hideEffect:Element.hide, showEffect:Element.show, minWidth: 600,minHeight:400});
			newsWin.setContent('news_manage', true, true);
			newsWin.setLocation(150, 200);		
			newsWin.toFront();	
			newsWin.show(); 
			newsWin.updateHeight();
			newsWin.updateWidth();
			tinyMCE.execCommand( 'mceAddControl', true, 'news_content' );
			
		}
		tinyMCE.execCommand('mceResetDesignMode');
		tinyMCE.setContent('');
		
	};
	this.manageNews = function ()
	{
		var newsID=$('news_form').newsID.value;
		var date=$('news_form').date.value;
		var subject=$('news_form').subject.value;
		var content=tinyMCE.getContent();
		//
		var task=($('news_form').newsID.value==''?'insert_news':'update_news');
		new Ajax.Request('_server.php', {method:'post', parameters:'task='+task+'&newsID='+newsID+'&date='+date+'&subject='+subject+'&content='+escape(content), onSuccess:self.processManageNews});
	};
	this.processManageNews = function (data,json)
	{
		$('news_error_msg').style.color=(json['status']?'green':'red');
		$('news_error_msg').innerHTML=json['message'];
		$('news_error_msg').show();
		if(json['status'])
		{
			if($('news_form').newsID.value=='')
			{
				newsWin.setTitle('Edit News');
				$('news_form').newsID.value=json['newsID'];
				$('manage_news_btn').value='Update';
			}
		}
		newsWin.updateHeight();
		self.getNews();
	};
	this.getNews = function ()
	{
		Element.hide($('news_results'));
		Element.show($('loading'));
		new Ajax.Request('_server.php', {method:'post', parameters:'task=get_news_list', onSuccess:self.populateResults});
	};
	this.populateResults = function (data,json)
	{
		var json=eval('(' + data.responseText + ')');
		// first remove all other results
		removeAllChildren($('news_table'));
		Element.hide($('loading'));
		self.dataCache=json;
		if(json.length>0)
		{
			Element.show($('news_results'));
			for(var i=0;i<json.length;i++)
			{
				var newTR=document.createElement('tr');
				newTR.id='news_row_'+i
				newTR.setAttribute('idx',i);
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['real_date'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML=json[i]['subject'];
				newTR.appendChild(newTD);
				//
				var newTD=document.createElement('td');
				newTD.innerHTML='<input type="button" class="button-green" value="Delete" id="del_news_'+i+'" />';
				newTR.appendChild(newTD);
				//
				var newtr = $('news_table').appendChild(newTR);	
				Event.observe(newtr,'mouseover',self.hoverNews,false);
				Event.observe(newtr,'mouseout',self.unhoverNews,false);
				Event.observe(newtr,'click',self.editNews,false);
				Event.observe($('del_news_'+i),'click',self.deleteNews,false);
			}
		}
		else
		{
			Element.show($('no_results'));
		}
	};
	this.editNews = function (e)
	{
		var row=Event.element(e).parentNode
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				$('news_error_msg').hide();
				$('manage_news_btn').value='Update';
				if(newsWin)
				{
					newsWin.setTitle('<b>Edit News</b>');
					newsWin.show(); 
					
				}
				else
				{
					newsWin = new Window('news_win', {title:'<b>Edit News</b>',className:'alphacube',resizable: false, hideEffect:Element.hide, showEffect:Element.show, minWidth: 10});
					newsWin.setContent('news_manage', true, true);
					newsWin.setLocation(150, 200);		
					newsWin.toFront();	
					newsWin.show(); 
					newsWin.updateHeight();
					newsWin.updateWidth();
					tinyMCE.execCommand( 'mceAddControl', true, 'news_content' );
				}
				var form=$('news_form');
				form.newsID.value=self.dataCache[idx]['newsID'];
				form.date.value=self.dataCache[idx]['real_date'];
				form.subject.value=self.dataCache[idx]['subject'];
				tinyMCE.setContent(self.dataCache[idx]['content']);
				tinyMCE.execCommand('mceResetDesignMode');
			}
		}
	};
	this.deleteNews = function (e)
	{
		var idx=Event.element(e).id.replace(/del_news_/,'');
		Dialog.confirm("Are you sure you want to delete the new item - "+self.dataCache[idx]['subject']+"?", {windowParameters: {className:'alphacube',width:300}, buttonClass: "button-green", id: "myDialogId", cancel:function(win) {}, ok:function (win) {self.delNews(idx);} });
		Event.stop(e);	
	};
	this.delNews = function (idx)
	{
		new Ajax.Request('_server.php', {method:'post', parameters:'task=delete_news&newsID='+self.dataCache[idx]['newsID'], onSuccess:function () 			{Dialog.closeInfo();self.getNews();}});
	};
	this.hoverNews = function (e)
	{
		var row=Event.element(e).parentNode
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				Element.addClassName(row,'hoverRow');
			}
		}
	};
	this.unhoverNews = function (e)
	{
		var row=Event.element(e).parentNode
		if(row.nodeName=='TR')
		{
			var idx=row.attributes['idx'].value;
			if(idx)
			{
				Element.removeClassName(row,'hoverRow');
			}
		}
	};
}