function xmlHttpRequest()
{
	var xmlHttp;
	try
	{  
		// Firefox, Opera 8.0+, Safari  
		xmlHttp=new XMLHttpRequest();  
	}
	catch (e)
	{  
		// Internet Explorer  
		try
		{    
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");    
		}
		catch (e)
		{
			try
			{      
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)
			{
				alert("Your browser does not support AJAX!");
				return false;
			}    
		}  
	}
	return xmlHttp;
}
function initURL()
{
	url		= 'http://www.mpequity.com/investors/scripts/investor.php';
	query	= '';
}
function messageHandler(alertConfirm,message)
{
	if (alertConfirm=='alert')
		return alert(message);
	else
		return confirm(message);
}
function init()
{
	if (cookieEnabled())
	{
		initURL();
		var gotoMe	= readCookie('gotoMe');
		var reset	= readCookie('reset');
		
		if (reset=='y')
			showReset();
		else if (gotoMe!='' && gotoMe!=null)
			eval(gotoMe);
		else
			showLogin();
	}
}
function cookieEnabled()
{
	var enabled	= readCookie('cookieTest');
	if (enabled==null||enabled=='')
	{
		output	= '<div class="jsError"><p>Cookies must be enabled to access the Investor Portal</p></div>';
		document.getElementById('output').innerHTML = output;
		return false;
	}
	else
		return true;
}
function showLogin()
{
	var heading			= '';
	var output			= '';
	var submit			= '';
	var forgotUsername	= '';
	var forgotPassword	= '';
	
	var admin	= readCookie('admin');
	if (admin==1)
		var isAdmin = true;
	else
		var isAdmin	= false;
	
	if (isAdmin)
	{
		heading 		= 'Administration Login';
		forgotUsername	= 'forgotCredentials(\'username\')';
		forgotPassword	= 'forgotCredentials(\'password\')';
	}
	else
	{
		heading 		= 'Log in to review and download your Investment Reports'; 
		forgotUsername	= 'forgotCredentials(\'username\')';
		forgotPassword	= 'forgotCredentials(\'password\')';		
	}

	output 	+= '<p>&nbsp;</p>';
	output 	+= '<h4>Mountain Plains Equity Investor Portal</h4>';
	output 	+= '<h4>'+heading+'</h4>';
	output 	+= '<p><label for="username">Username:</label><input type="text" name="username" id="username" tabindex="1" />';
	if (isAdmin)
		output += '&nbsp;<a href="javascript:void(0)" onclick="'+forgotUsername+'"><em>Forgot Username</em></a>';
	output	+= '</p>';
	output 	+= '<p><label for="password">Password:</label><input type="password" name="password" id="password" tabindex="2" />';
	if (isAdmin)
		output += '&nbsp;<a href="javascript:void(0)" onclick="'+forgotPassword+'"><em>Forgot Password</em></a>';
	output	+= '</p>';
	if (!isAdmin)
		output	+= '<h4>If you do not know your username or password, please call<br />Mountain Plains Equity Group at (406) 254-1677</h4>';
	else
		output 	+= '<p>&nbsp;</p>';
	output 	+= '<p>';
	output 	+= '<input type="button" class="submit" name="submit" id="submit" value="Login" onclick="login()" tabindex="3" />';
	output 	+= '<input type="button" class="submit" name="reset" id="reset" value="Reset" onclick="init()" />';
	output 	+= '</p>';	

	document.getElementById('output').innerHTML = output;
	document.getElementById('username').focus();
}
function login()
{
	var username = document.getElementById('username').value;
	var password = document.getElementById('password').value;
	
	if (username=='' || password=='')
		return messageHandler('alert','Please enter both username and password');
	
	initURL();
	query 	= '?Action=login'+'&Username='+escape(username)+'&Password='+md5(password);
	url 	+= query;

	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{	
		if (xmlHttp.readyState == 4)
		{
			var output 	= '';
			var xml		= xmlHttp.responseXML;
	
			if (xml!=null)
			{
				var returnCode	= xml.getElementsByTagName('returnCode')[0].childNodes[0].nodeValue;
				if (returnCode==-1)
					return messageHandler('alert','Authentication Failed');
				else
				{
					var logger		= xml.getElementsByTagName('logger')[0].childNodes[0].nodeValue;
					var loggerID	= xml.getElementsByTagName('loggerID')[0].childNodes[0].nodeValue;
					document.cookie = 'loggerID='+loggerID;
					document.cookie = 'logger='+logger;
					
					var isAdmin	= readCookie('admin');

					if (isAdmin==1)
						adminMain();		
					else
						listReports();
				}
			}
		}
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);
}
function forgotCredentials(credential)
{
	var output	= '';
	var submit	= '';
	var heading	= 'Please enter your email address';
	
	if (credential=='password')
		heading	+= ' and username';
	
	submit 	= 'sendCredentials(\''+credential+'\')';

	output 	+= '<p>&nbsp;</p>';
	output 	+= '<h4>Mountain Plains Equity Investor Portal</h4>';
	output 	+= '<h4>'+heading+'</h4>';
	output 	+= '<p><label for="email">Email:</label><input type="text" name="email" id="email" /></p>';
	if (credential=='password')
		output 	+= '<p><label for="username">Username:</label><input type="text" name="username" id="username" /></p>';	
	output 	+= '<p>';
	output 	+= '<input type="button" class="submit" name="submit" id="submit" value="Submit" onclick="'+submit+'" />';
	output 	+= '<input type="button" class="submit" name="reset" id="reset" value="Return" onclick="init()" />';
	output 	+= '</p>';	

	document.getElementById('output').innerHTML = output;
	document.getElementById('email').focus();

	return true;
}
function sendCredentials(credential)
{
	var email = document.getElementById('email').value;
	if (email=='')
		return messageHandler('alert','Please enter your email address');
	
	initURL()
	query	= '?Action=sendCredentials';
	url		+= query;
	
	if (credential=='username')
		url	+= '&Credential=username&Email='+escape(email);
	else
	{
		var username = document.getElementById('username').value;
		if (username=='')
			return messageHandler('alert','Please enter your username');
		
		url	+= '&Credential=password&Email='+escape(email)+'&Username='+escape(username);
	}
		
	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{	
		if (xmlHttp.readyState == 4)
		{
			var output 	= '';
			var xml		= xmlHttp.responseXML;
			
			if (xml!=null)
			{		
				var returnCode		= xml.getElementsByTagName('returnCode')[0].childNodes[0].nodeValue;
				if (returnCode==-1)
					return messageHandler('alert','Your profile could not be found in the Mountain Plains Equity database');
				else
				{
					if (credential=='username')
						var message = 'Your username has been emailed to you';
					else
						var message	= 'Instructions for resetting your password have been emailed to you';
						
					if (messageHandler('confirm',message))
						init();
				}
			}				
		}
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);

	return true;
}
function showReset()
{
	var output = '';
	var id	= readCookie('resetID');

	output	+= '<h4>Reset Password</h4>';
	output	+= '<h4>Use the form below to reset your password.';
	output	+= '<span id="pageTimer"></span>';
	output	+= '</h4>';
	
	output	+= '<p><label for="newPassword">New Password:</label><input type="password" name="newPassword" id="newPassword" /></p>';
	output	+= '<p><label for="confirmPassword">Confirm Password:</label><input type="password" name="confirmPassword" id="confirmPassword" /></p>';
	output	+= '<p class="bold"><a href="javascript:void(0)" onclick="resetPassword(\'outside\',\''+id+'\')">Reset Password</p>';
	
	document.getElementById('output').innerHTML = output;
	document.getElementById('newPassword').focus();	

	sec = 00;
	min = 03;
	countDown();
}
function countDown()
{
	sec--;
	if (sec == -01)
	{
		sec = 59;
		min = min - 1;
	}

	var time = min+' minutes and '+sec+' seconds';
	
	document.getElementById('pageTimer').innerHTML = '<br /><br />NOTE: This page will expire in '+time;
	
	var timer = window.setTimeout('countDown();', 1000);
	
	if (min == '00' && sec == '00')
	{ 
		sec = "00"; 
		window.clearTimeout(timer);
		deleteCookie('reset');
		init();
	}
}
function resetPassword(insideOutside,id)
{
	initURL();
	//query	= '?Action=resetPassword&PasswordID='+id;
	query	= '?Action=resetPassword';
	query	+= '&IO='+insideOutside;
	
	var password = document.getElementById('newPassword').value;
	var confirm	 = document.getElementById('confirmPassword').value;
	
	if (password==''||confirm=='')
		return messageHandler('alert','Please enter and confirm new password');
	else if (password!=confirm)
		return messageHandler('alert','Password confirmation does not match. Please re-enter');
	else if (!validatePassword(password))
		return messageHandler('alert','Password does not meet strength criteria:\n\n\tMinimum of 8 characers\n\tCombination of upper/lower case\n\tAt least one number\n\nPlease re-enter');
	else
	{
		query += '&Password='+md5(password);
	
		if (insideOutside=='inside')
		{
			var loggerID = readCookie('loggerID');
			if (loggerID==id)
			{
				var currPassword = document.getElementById('currPassword').value;
				if (currPassword=='')
					return messageHandler('alert','Please enter current password');
				else if (currPassword == password)
					return messageHandler('alert','New password is the same as current password. Please re-enter.');
				else
					query	+= '&Table=a';
				
				var logMeout 	= true;
			}	
			else
			{
				query += '&Table=i';
				var logMeOut	= false;
			}
				
			query	+= '&PasswordID='+md5(id);
		}
		else
		{
			var admin = readCookie('admin');
			if (admin!=''&&admin!=null&&admin==1)
				query += '&Table=a';
			else
				query += '&Table=i';
			query	+= '&PasswordID='+id;
			var logMeOut = false;
		}
		url += query;

		var xmlHttp = xmlHttpRequest();
		xmlHttp.onreadystatechange = function()
		{	
			if (xmlHttp.readyState == 4)
			{
				var xml	= xmlHttp.responseXML;
				
				if (xml!=null)
				{
					var returnCode	= xml.getElementsByTagName('returnCode')[0].childNodes[0].nodeValue;
					if (returnCode==-1)
						return messageHandler('alert','Username/Password combination already exists. Please re-enter');
					else if (returnCode==-2)
						return messageHandler('alert','Your profile cannot be found in the Mountain Plains Equity Group database');
					else if (returnCode==-9999)
						return messageHandler('alert','Database cannot be accessed. Please try again later.');
					else
					{
						deleteCookie('reset');
						deleteCookie('resetID');
						deleteCookie('resetEmail');
						deleteCookie('gotoMe');
						var message = 'Password successfully changed';
						
						/*
						if (logMeOut==true)
						{
							message += '\nPlease log in';
							logout();
							messageHandler('confirm',message);
						}
						else
						{
							listInvestors();
							messageHandler('confirm',message);					
						}
						*/
						if (insideOutside=='inside')
						{
							var loggerID = readCookie('loggerID');
							if (loggerID==id)
								listAdmin();
							else
								listInvestors();
							messageHandler('confirm',message);
						}
						else
						{
							message += '\nPlease log in';
							logout();
							messageHandler('confirm',message);
						}
						
					}
				}
			}
		}
		xmlHttp.open('post', url, true);
		xmlHttp.send(null);
		
		return true;
	}
}
function adminMain()
{
	document.cookie = "gotoMe=adminMain()";
	var logger	= readCookie('logger');
	var output 	= '';

	output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="logout();">Logout</a></h3>';
	output	+= '<p>&nbsp;</p>';
	output	+= '<h4>';
	output	+= 'Mountain Plains Equity Group Investor Portal';
	output 	+= '</h4>';
	
	output 	+= '<p><a href="javascript:void(0)" onclick="listAdmin()">Manage Administrators</a></p>';
	output 	+= '<p><a href="javascript:void(0)" onclick="listFunds()">Manage Investment Funds</a></p>';
	output 	+= '<p><a href="javascript:void(0)" onclick="listInvestors()">Manage Investors</a></p>';

	document.getElementById('output').innerHTML = output;
}
function listReports()
{
	initURL();
	query	= '?Action=reportTypes';
	url		+= query;

	document.cookie = 'gotoMe=listReports()';

	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{	
		if (xmlHttp.readyState == 4)
		{
			var output 	= '';
			var xml	= xmlHttp.responseXML;
			if (xml!=null)
			{
				logger	= readCookie('logger');
				loggerID= readCookie('loggerID');
				
				var admin	= readCookie('admin');
				if (admin==''||admin==null)
					var isAdmin = false;
				else
					var isAdmin = true;
				
				if (isAdmin)
				{
					var returnTo 	= 'adminMain()';
					var returnText 	= 'Return';
				}
				else
				{
					var returnTo	= 'logout()';
					var returnText	= 'Logout';
				}
										
				output 	+= '';
				output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');'+returnTo+'">'+returnText+'</a></h3>';
				output	+= '<p>&nbsp;</p>';
				output	+= '<h4>Mountain Plains Equity Group Investor Portal</h4>';	
				output	+= '<h4>Categories</h4>';

				var reportTypes	= xml.getElementsByTagName('reportTypes');
				for (var i=0; i<reportTypes.length; i++)
				{
					reportData 	= reportTypes[i];
					reportID	= reportData.getElementsByTagName('reportID')[0].childNodes[0].nodeValue;
					reportType	= reportData.getElementsByTagName('reportType')[0].childNodes[0].nodeValue;
					isK1		= reportData.getElementsByTagName('k1')[0].childNodes[0].nodeValue;
					output 		+= '<p><a href="javascript:void(0)" onclick="listFunds(\''+reportID+'\')">'+reportType+'</a></p>'; 
				}
				var investorID = readCookie('loggerID');

				output 	+= '<p><a href="javascript:void(0)" onclick="listYears(\''+investorID+'\',\'0\',\'0\')">All Files</a></p>'; 
				output 	+= '<p>&nbsp;</p>';	

				document.getElementById('output').innerHTML = output;

			}
		}
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);
}
function listAdmin()
{
	var admin = readCookie('admin');
	if (admin!=1)
	{
		logout();
		return false;
	}

	initURL();
	query	= '?Action=listAdmin'
	url		+= query;

	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{	
		if (xmlHttp.readyState == 4)
		{
			var output 	= '';
			var xml		= xmlHttp.responseXML;
			
			if (xml!=null)
			{
				document.cookie = "gotoMe=listAdmin()";
				
				var logger	= readCookie('logger');
				
				output 	+= '';
				output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');adminMain()">Return</a></h3>';
				output	+= '<p>&nbsp;</p>';
				output	+= '<h4>';
				output	+= 'Mountain Plains Equity Group Investor Portal';
				output 	+= '</h4>';	
				output 	+= '<h4>Administrators</h4>';
				
				var administrators = xml.getElementsByTagName('admin');
				output	+= '<table width="60%">';
				for (var i=0; i<administrators.length; i++)
				{
					adminData 	= administrators[i];
					adminID		= adminData.getElementsByTagName('adminID')[0].childNodes[0].nodeValue;
					adminName	= adminData.getElementsByTagName('adminName')[0].childNodes[0].nodeValue;
					
					output		+= '<tr>';
					output		+= '<td>'+adminName+'</td>';
					output		+= '<td align="right">';
					output		+= '<a href="javascript:void(0)" onclick="manageAdmin(\'edit\',\''+adminID+'\')">Edit</a>&nbsp;&nbsp;|&nbsp;';
					output		+= '<a href="javascript:void(0)" onclick="manageAdmin(\'resetPassword\',\''+adminID+'\')">Password</a>&nbsp;&nbsp;|&nbsp;';
					output		+= '<a href="javascript:void(0)" onclick="manageAdmin(\'delete\',\''+adminID+'\')">Delete</a>';
					output		+= '</td>';
					output		+= '</tr>';
				}
				output	+= '<tr><td colspan="2">&nbsp;</td></tr>';
				output	+= '<tr><td colspan="2"><a href="javascript:void(0)" onclick="manageAdmin(\'add\',-1)">Add new administrator</a></td></tr>';
				output	+= '</table>'
				
				document.getElementById('output').innerHTML = output;

			}
		}
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);
}
function manageAdmin(action,adminID)
{
	var output 	= '';
	var logger	= readCookie('logger');
	var admin 	= readCookie('admin');
	if (admin!=1)
	{
		logout();
		return false;
	}
	document.cookie = 'gotoMe=manageAdmin(\''+action+'\','+adminID+')';
	
	switch (action)
	{
		case 'add':
			output 	+= '';
			output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listAdmin()">Return</a></h3>';
			output	+= '<p>&nbsp;</p>';
			output	+= '<h4>Mountain Plains Equity Group Investor Portal</h4>';	
			output	+= '<h4>Add Administrator</h4>';
			output	+= '<h4 class="required">Required Fields</h4>';
			
			output	+= '<p><label for="adminName" class="required">Name:</label><input type="text" name="adminName" id="adminName" /></p>';
			output	+= '<p><label for="adminEmail" class="required">Email:</label><input type="text" name="adminEmail" id="adminEmail" /></p>';
			output	+= '<p><label for="adminUsername" class="required">Username:</label><input type="text" name="adminUsername" id="adminUsername" /></p>';
			output	+= '<p><label for="adminPassword" class="required">Password:</label><input type="password" name="adminPassword" id="adminPassword" /></p>';
			output	+= '<p><label for="adminConfirm" class="required">Confirm Password:</label><input type="password" name="adminConfirm" id="adminConfirm" /></p>';
			output	+= '<p class="bold"><a href="javascript:void(0)" onclick="updateAdmin(\''+adminID+'\')">Add Administrator</p>';
			
			document.getElementById('output').innerHTML = output;
			document.getElementById('adminName').focus();		
			break;
			
		case 'edit':
			initURL();
			query	= '?Action=editAdmin&AdminID='+adminID;
			url		+= query;

			var xmlHttp = xmlHttpRequest();
			xmlHttp.onreadystatechange = function()
			{	
				if (xmlHttp.readyState == 4)
				{
					var output 	= '';
					var xml = xmlHttp.responseXML;
					
					if (xml!=null)
					{
						adminName		= xml.getElementsByTagName('adminName')[0].childNodes[0].nodeValue;
						adminEmail		= xml.getElementsByTagName('adminEmail')[0].childNodes[0].nodeValue;
						adminUsername	= xml.getElementsByTagName('adminUsername')[0].childNodes[0].nodeValue;												
						
						output 	+= '';
						output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listAdmin()">Return</a></h3>';
						output	+= '<p>&nbsp;</p>';
						output	+= '<h4>';
						output	+= 'Mountain Plains Equity Group Investor Portal';
						output 	+= '</h4>';
						output	+= '<h4>Edit Administrator: '+adminName+'</h4>';
		
						output	+= '<p><label for="adminName">Name:</label><input type="text" name="adminName" id="adminName" value="'+adminName+'" /></p>';
						output	+= '<p><label for="adminEmail">Email:</label><input type="text" name="adminEmail" id="adminEmail" value="'+adminEmail+'" /></p>';
						output	+= '<p><label for="adminUsername">Username:</label><input type="text" name="adminUsername" id="adminUsername" value="'+adminUsername+'" /></p>';
						output	+= '<p class="bold"><a href="javascript:void(0)" onclick="updateAdmin(\''+adminID+'\')">Update Administrator</p>';
						
						document.getElementById('output').innerHTML = output;
						document.getElementById('adminName').focus();
					}
				}
			}
			xmlHttp.open('post', url, true);
			xmlHttp.send(null);
			break;
			
		case 'resetPassword':
			var loggerID	= readCookie('loggerID');
			if (adminID!=loggerID)
			{
				alert('You can only reset your own password');
				return false;
			}		
			initURL();
			query	= '?Action=editAdmin&AdminID='+adminID;
			url		+= query;

			var xmlHttp = xmlHttpRequest();
			xmlHttp.onreadystatechange = function()
			{			
				if (xmlHttp.readyState == 4)
				{
					var output 	= '';
					var xml = xmlHttp.responseXML;
					
					if (xml!=null)
					{
						adminName		= xml.getElementsByTagName('adminName')[0].childNodes[0].nodeValue;
			
						output 	+= '';
						output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listAdmin()">Return</a></h3>';
						output	+= '<p>&nbsp;</p>';
						output	+= '<h4>';
						output	+= 'Mountain Plains Equity Group Investor Portal';
						output 	+= '</h4>';	
						output	+= '<h4>Reset Password for Administrator: '+adminName+'</h4>';
						
						output	+= '<p><label for="currPassword">Current Password:</label><input type="password" name="currPassword" id="currPassword" /></p>';
						output	+= '<p><label for="newPassword">New Password:</label><input type="password" name="newPassword" id="newPassword" /></p>';
						output	+= '<p><label for="confirmPassword">Confirm Password:</label><input type="password" name="confirmPassword" id="confirmPassword" /></p>';
						output	+= '<p class="bold"><a href="javascript:void(0)" onclick="resetPassword(\'inside\',\''+adminID+'\')">Reset Password</p>';
						
						document.getElementById('output').innerHTML = output;
						document.getElementById('adminName').focus();	
					}
				}
			}		
			xmlHttp.open('post', url, true);
			xmlHttp.send(null);			
			break;
	
		case 'delete':
			var loggerID	= readCookie('loggerID');
			if (adminID==loggerID)
				return messageHandler('alert','You cannot delete yourself');
			
			if (!confirm('Delete this administrator?'))
				return false;
			
			initURL();
			query	= '?Action=deleteAdmin&AdminID='+adminID;
			url		+= query;
			
			var xmlHttp = xmlHttpRequest();
			xmlHttp.onreadystatechange = function()
			{
				listAdmin();
			}
			xmlHttp.open('post', url, true);
			xmlHttp.send(null);
			break;
	
		default:
			return false;
	}
	
	return true;
}
function updateAdmin(adminID)
{
	initURL();

	if (adminID==-1)
		query	= '?Action=addAdmin';
	else
		query	= '?Action=updateAdmin&AdminID='+adminID;

	var adminName 		= document.getElementById('adminName').value;
	var adminEmail		= document.getElementById('adminEmail').value;
	var adminUsername	= document.getElementById('adminUsername').value;
	
	if (adminName=='' || adminEmail=='' || adminUsername=='')
		return messageHandler('alert','Please enter all fields');
	
	query += '&Name='+escape(adminName)+'&Email='+escape(adminEmail)+'&Username='+escape(adminUsername);
	
	
	if (adminID==-1)
	{
		var password 	= document.getElementById('adminPassword').value;
		var confirm		= document.getElementById('adminConfirm').value;
	
		if (password=='' || confirm=='')
			return messageHandler('alert','Please enter and confirm password');
		else if (password!=confirm)
			return messageHandler('alert','Password confirmation does not match');
		else if (!validatePassword(password))
			return messageHandler('alert','Password does not meet strength criteria:\n\n\tMinimum of 8 characers\n\tCombination of upper/lower case\n\tAt least one number\n\nPlease re-enter');
		else
			query += '&Password='+md5(password);	
	}
	url += query;

	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{	
		if (xmlHttp.readyState == 4)
		{
			var xml	= xmlHttp.responseXML;
			
			if (xml!=null)
			{
				var returnCode	= xml.getElementsByTagName('returnCode')[0].childNodes[0].nodeValue;
				if (returnCode==-1)
					return messageHandler('alert','Username/Password combination already exists. Please re-enter');
				else if (returnCode==-2)
					return messageHandler('alert','Email address is invalid. Please re-enter.');
				else if (returnCode==-9999)
					return messageHandler('alert','Database cannot be accessed. Please try again later.');
				else
				{
					if (adminID==-1)
						var message = 'Administrator successfully added';
					else
					{
						document.cookie	= 'logger='+adminName;
						var message	= 'Administrator information successfully updated';
					}
						
					listAdmin();
					messageHandler('confirm',message);
				}			
			}
		}
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);
	
	return true;
}
function listFunds(reportID)
{
	var admin	= readCookie('admin');
	if (admin==''||admin==null)
		var isAdmin = false;
	else
		var isAdmin = true;

	initURL();
	query	= '?Action=listFunds&ReportID='+reportID;

	if (!isAdmin)
	{
		var investorID = readCookie('loggerID');
		query	+= '&InvestorID='+investorID;
	}
	
	document.cookie = 'gotoMe=listFunds(\''+reportID+'\')';
	url	+= query;

	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{	
		if (xmlHttp.readyState == 4)
		{
			var output 	= '';
			var xml		= xmlHttp.responseXML;
			
			if (xml!=null)
			{
				var heading	= 'Investment Funds';
				if (isAdmin)
					var returnTo 	= 'adminMain()';
				else
				{
					var returnTo	= 'listReports()';
					var reportType	= xml.getElementsByTagName('reportType')[0].childNodes[0].nodeValue;
					heading += ' : '+reportType;
				}
				
				var logger	= readCookie('logger');
				var loggerID= readCookie('loggerID');
				
				output 	+= '';
				output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');'+returnTo+'">Return</a></h3>';
				output	+= '<p>&nbsp;</p>';
				output	+= '<h4>Mountain Plains Equity Group Investor Portal</h4>';	
				output 	+= '<h4>'+heading+'</h4>';

				var funds = xml.getElementsByTagName('fund');
				output	+= '<table border="0">';
				for (var i=0; i<funds.length; i++)
				{
					fundData 	= funds[i];
					fundID		= fundData.getElementsByTagName('fundID')[0].childNodes[0].nodeValue;
					fundName	= fundData.getElementsByTagName('fundName')[0].childNodes[0].nodeValue;
					
					output		+= '<tr>';
					output		+= '<td width="50%">'+fundName+'</td>';
					output		+= '<td align="right" width="50%">';
					if (!isAdmin)
					{
						output	+= '<a href="javascript:void(0)" onclick="listYears(\''+investorID+'\',\''+reportID+'\',\''+fundID+'\')">Files</a>';
						//if (loggerID==31)
						//	output	+= '&nbsp;&nbsp;|&nbsp;&nbsp;<a href="javascript:void(0)" onclick="listK1(\''+investorID+'\',\''+fundID+'\')">K1</a>';
					}
					else
						output		+= '<a href="javascript:void(0)" onclick="manageFunds(\'files\',\''+fundID+'\')">Files</a>';
					if (isAdmin!=''&&isAdmin!=null)
					{
						output		+= '&nbsp;|&nbsp;<a href="javascript:void(0)" onclick="manageFunds(\'investors\',\''+fundID+'\')">Investors</a>&nbsp;|&nbsp;';
						output		+= '<a href="javascript:void(0)" onclick="manageFunds(\'edit\',\''+fundID+'\')">Edit</a>&nbsp;|&nbsp;';
						output		+= '<a href="javascript:void(0)" onclick="manageFunds(\'delete\',\''+fundID+'\')">Delete</a>';
					}
					output		+= '</td>';
					output		+= '</tr>';
				}
				if (isAdmin!=''&&isAdmin!=null)
				{
					output	+= '<tr><td colspan="2">&nbsp;</td></tr>';
					output	+= '<tr><td colspan="2"><a href="javascript:void(0)" onclick="manageFunds(\'add\',-1)">Add new Investment Fund</a></td></tr>';
				}
				output	+= '</table>'

				document.getElementById('output').innerHTML = output;

			}
		}
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);

	return true;
}
function manageFunds(action,fundID)
{
	var output 	= '';
	var loggerID= readCookie('loggerID');
	var logger	= readCookie('logger');
	var admin 	= readCookie('admin');
	
	initURL();

	document.cookie = 'gotoMe=manageFunds(\''+action+'\','+fundID+')';
	
	switch (action)
	{
		case 'add':
			var fundID= -1;
			output 	+= '';
			output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listFunds(\'0\')">Return</a></h3>';
			output	+= '<p>&nbsp;</p>';
			output	+= '<h4>';
			output	+= 'Mountain Plains Equity Group Investor Portal';
			output 	+= '</h4>';	
			output	+= '<h4>Add Investment Fund</h4>';

			output	+= '<p><label for="fundName">Fund Name:</label><input type="text" name="fundName" id="fundName" /></p>';
			output	+= '<p class="bold"><a href="javascript:void(0)" onclick="updateFund(\''+fundID+'\')">Add Investment Fund</p>';
			
			document.getElementById('output').innerHTML = output;
			document.getElementById('fundName').focus();
			break;
			
		case 'edit':
			query	= '?Action=editFund&FundID='+fundID;
			url		+= query;

			var xmlHttp = xmlHttpRequest();
			xmlHttp.onreadystatechange = function()
			{	
				if (xmlHttp.readyState == 4)
				{
					var output 	= '';
					var xml	= xmlHttp.responseXML;
					
					if (xml!=null)
					{
						var fundName		= xml.getElementsByTagName('fundName')[0].childNodes[0].nodeValue;
												
						output 	+= '';
						output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listFunds(\'0\')">Return</a></h3>';
						output	+= '<p>&nbsp;</p>';
						output	+= '<h4>';
						output	+= 'Mountain Plains Equity Group Investor Portal';
						output 	+= '</h4>';	
						output	+= '<h4>Edit Investment Fund: '+fundName+'</h4>';
		
						output	+= '<p><label for="fundName">Fund:</label><input type="text" name="fundName" id="fundName" value="'+fundName+'" /></p>';
						output	+= '<p class="bold"><a href="javascript:void(0)" onclick="updateFund(\''+fundID+'\')">Update</p>';
						
						document.getElementById('output').innerHTML = output;
					}
				}
			}
			xmlHttp.open('post', url, true);
			xmlHttp.send(null);
			break;
			
		case 'investors':
			query	= '?Action=fundInvestors&FundID='+fundID;
			url		+= query;

			var xmlHttp = xmlHttpRequest();
			xmlHttp.onreadystatechange = function()
			{	
				if (xmlHttp.readyState == 4)
				{
					var output 	= '';
					var xml	= xmlHttp.responseXML;
					
					if (xml!=null)
					{
						var fundName  			= xml.getElementsByTagName('fundName')[0].childNodes[0].nodeValue;
						var investorCount 		= xml.getElementsByTagName('investorCount')[0].childNodes[0].nodeValue;
						var moreInvestorsCount	= xml.getElementsByTagName('moreInvestorsCount')[0].childNodes[0].nodeValue;
							
						output 	+= '';
						output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listFunds(\'0\')">Return</a></h3>';
						output	+= '<p>&nbsp;</p>';
						output	+= '<h4>';
						output	+= 'Mountain Plains Equity Group Investor Portal';
						output 	+= '</h4>';	
						output	+= '<h4>Investors for '+fundName+'</h4>';

						if (investorCount>0)
						{
							var investors 	= xml.getElementsByTagName('investors');
							for (var i=0; i<investors.length; i++)
							{
								investorData 	= investors[i];
								investorID		= investorData.getElementsByTagName('investorID')[0].childNodes[0].nodeValue;
								investorName	= investorData.getElementsByTagName('investorName')[0].childNodes[0].nodeValue;
								
								output			+= '<p><input type="checkbox" name="fundInvestors" id="fundInvestors" value="'+investorID+'" checked="checked" onclick="fundLink(\'unlink\',\''+fundID+'\',\''+investorID+'\')" />'+investorName+'</p>';
	
							}
						}
						else
							output	+= '<p>There are no investors for '+fundName+'</p>'; 

						output	+= '<p>&nbsp;</p>';
						if (moreInvestorsCount>0)
						{
							output	+= '<p>Add Investors:</p>';
							var moreInvestors	= xml.getElementsByTagName('moreInvestors');
							for (var i=0; i<moreInvestors.length; i++)
							{
								investorData 	= moreInvestors[i];
								investorID		= investorData.getElementsByTagName('investorID')[0].childNodes[0].nodeValue;
								investorName	= investorData.getElementsByTagName('investorName')[0].childNodes[0].nodeValue;
								
								output		+= '<p><input type="checkbox" name="moreInvestors" id="moreInvestors" value="'+investorID+'" onclick="fundLink(\'link\',\''+fundID+'\',\''+investorID+'\')" />'+investorName+'</p>';
							}
						}
						output	+= '<p">&nbsp;</p>';

						
						document.getElementById('output').innerHTML = output;
		
					}
				}
			}
			xmlHttp.open('post', url, true);
			xmlHttp.send(null);		
			break;
			
		case 'files':
			query	= '?Action=reportTypes&FundID='+fundID;
			url		+= query;

			var xmlHttp = xmlHttpRequest();
			xmlHttp.onreadystatechange = function()
			{	
				if (xmlHttp.readyState == 4)
				{
					var output 	= '';
					var xml	= xmlHttp.responseXML;
					
					if (xml!=null)
					{
						var fundName		= xml.getElementsByTagName('fundName')[0].childNodes[0].nodeValue;
												
						output 	+= '';
						output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listFunds(\'0\')">Return</a></h3>';
						output	+= '<p>&nbsp;</p>';
						output	+= '<h4>Mountain Plains Equity Group Investor Portal</h4>';	
						output	+= '<h4>'+fundName+' : Categories </h4>';
						var reportTypes	= xml.getElementsByTagName('reportTypes')
						for (var i=0; i<reportTypes.length; i++)
						{
							reportData 	= reportTypes[i];
							reportID	= reportData.getElementsByTagName('reportID')[0].childNodes[0].nodeValue;
							reportType	= reportData.getElementsByTagName('reportType')[0].childNodes[0].nodeValue;
							isK1		= reportData.getElementsByTagName('k1')[0].childNodes[0].nodeValue;
							output 		+= '<p><a href="javascript:void(0)" onclick="listYears(\'0\',\''+reportID+'\',\''+fundID+'\')">'+reportType+'</a></p>'; 
						}

						output 	+= '<p><a href="javascript:void(0)" onclick="listYears(\'0\',\'0\',\''+fundID+'\')">All Files</a></p>'; 
						output 	+= '<p>&nbsp;</p>';	

						document.getElementById('output').innerHTML = output;
		
					}
				}
			}
			xmlHttp.open('post', url, true);
			xmlHttp.send(null);		
			break;
	
		case 'delete':
			if (!confirm('Delete this fund?'))
				return false;
			
			query	= '?Action=deleteFund&FundID='+fundID;
			url		+= query;

			var xmlHttp = xmlHttpRequest();
			xmlHttp.onreadystatechange = function()
			{	
				listFunds(0);
			}
			xmlHttp.open('post', url, true);
			xmlHttp.send(null);				
			break;
	
		default:
			return false;
	}
	
	return true;
}
function updateFund(fundID)
{
	initURL();
	var error	= false;
	
	if (fundID==-1)
		query	= '?Action=addFund';
	else
		query	= '?Action=updateFund&FundID='+fundID;

	var fundName = document.getElementById('fundName').value;
	if (fundName=='')
	{
		alert('Please enter fund name');
		return false;
	}
	else
		query 	+= '&Fund='+escape(fundName);
	
	url	+= query;

	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{	
		if (xmlHttp.readyState == 4)
		{
			var xml	= xmlHttp.responseXML;
			
			if (xml!=null)
			{
				var returnCode	= xml.getElementsByTagName('returnCode')[0].childNodes[0].nodeValue;
				if (returnCode==-1)
					return messageHandler('alert','Database cannot be accessed. Please try again later.');
				else
				{
					if (fundID==-1)
						var message = 'Fund successfully added';
					else
						var message	= 'Fund information successfully updated';
						
					messageHandler('confirm',message);
					listFunds(0);		
				}			
			}
		}
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);

	return true;
}
function listInvestors()
{
	var admin = readCookie('admin');
	if (admin!=1)
	{
		logout();
		return false;
	}
	
	initURL();
	query	= '?Action=listInvestors';
	url		+= query;
	
	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{	
		if (xmlHttp.readyState == 4)
		{
			var output 	= '';
			var xml		= xmlHttp.responseXML;
			
			if (xml!=null)
			{
				document.cookie = "gotoMe=listInvestors()";
				
				var logger	= readCookie('logger');
				
				output 	+= '';
				output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');adminMain()">Return</a></h3>';
				output	+= '<p>&nbsp;</p>';
				output	+= '<h4>';
				output	+= 'Mountain Plains Equity Group Investor Portal';
				output 	+= '</h4>';	
				output 	+= '<h4>Investors</h4>';

				var investors = xml.getElementsByTagName('investor');
				output	+= '<table width="60%">';
				for (var i=0; i<investors.length; i++)
				{
					investorData 	= investors[i];
					investorID		= investorData.getElementsByTagName('investorID')[0].childNodes[0].nodeValue;
					investorName	= investorData.getElementsByTagName('investorName')[0].childNodes[0].nodeValue;
					
					output		+= '<tr>';
					output		+= '<td>'+investorName+'</td>';
					output		+= '<td align="right">';
					output		+= '<a href="javascript:void(0)" onclick="manageInvestors(\'funds\',\''+investorID+'\')">Funds</a>&nbsp;|&nbsp;';
					output		+= '<a href="javascript:void(0)" onclick="manageInvestors(\'edit\',\''+investorID+'\')">Edit</a>&nbsp;|&nbsp;';
					output		+= '<a href="javascript:void(0)" onclick="manageInvestors(\'resetPassword\',\''+investorID+'\')">Password</a>&nbsp;&nbsp;|&nbsp;';
					output		+= '<a href="javascript:void(0)" onclick="manageInvestors(\'delete\',\''+investorID+'\')">Delete</a>';
					output		+= '</td>';
					output		+= '</tr>';
				}
				output	+= '<tr><td colspan="2">&nbsp;</td></tr>';
				output	+= '<tr><td colspan="2"><a href="javascript:void(0)" onclick="manageInvestors(\'add\',-1)">Add new Investor</a></td></tr>';
				output	+= '</table>'

				document.getElementById('output').innerHTML = output;

			}
		}
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);

	return true;
}
function manageInvestors(action,investorID)
{
	var output 	= '';
	var logger	= readCookie('logger');
	var admin 	= readCookie('admin');
	if (admin!=1)
	{
		logout();
		return false;
	}
	document.cookie = 'gotoMe=manageInvestors(\''+action+'\','+investorID+')';
	initURL();
	
	switch (action)
	{
		case 'add':
			output 	+= '';
			output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listInvestors()">Return</a></h3>';
			output	+= '<p>&nbsp;</p>';
			output	+= '<h4>Mountain Plains Equity Group Investor Portal</h4>';	
			output	+= '<h4>Add Investor</h4>';
			output	+= '<h4 class="required">Required Fields*</h4>';

			output	+= '<p><label for="investorName" class="required">Name:</label><input type="text" name="investorName" id="investorName" /></p>';
			output	+= '<p><label for="investorEmail">Email:</label><input type="text" name="investorEmail" id="investorEmail" /></p>';
			output	+= '<p><label for="investorUsername" class="required">Username:</label><input type="text" name="investorUsername" id="investorUsername" /></p>';
			output	+= '<p><label for="investorPassword" class="required">Password:</label><input type="password" name="investorPassword" id="investorPassword" /></p>';
			output	+= '<p><label for="investorConfirm" class="required">Confirm Password:</label><input type="password" name="investorConfirm" id="investorConfirm" /></p>';
			output	+= '<p class="bold"><a href="javascript:void(0)" onclick="updateInvestor(\''+investorID+'\')">Add Investor</p>';
			
			document.getElementById('output').innerHTML = output;
			document.getElementById('investorName').focus();
			break;
			
		case 'edit':
			query	= '?Action=editInvestor&InvestorID='+investorID;
			url		+= query;
			
			var xmlHttp = xmlHttpRequest();
			xmlHttp.onreadystatechange = function()
			{	
				if (xmlHttp.readyState == 4)
				{
					var output 	= '';
					var xml = xmlHttp.responseXML;
					
					if (xml!=null)
					{									
						investorName		= xml.getElementsByTagName('investorName')[0].childNodes[0].nodeValue;
						investorEmail		= xml.getElementsByTagName('investorEmail')[0].childNodes[0].nodeValue;
						investorUsername	= xml.getElementsByTagName('investorUsername')[0].childNodes[0].nodeValue;
						
						if (investorEmail=='**** NO EMAIL ****')
							investorEmail = '';
												
						output 	+= '';
						output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listInvestors()">Return</a></h3>';
						output	+= '<p>&nbsp;</p>';
						output	+= '<h4>';
						output	+= 'Mountain Plains Equity Group Investor Portal';
						output 	+= '</h4>';	
						output	+= '<h4>Edit Investor: '+investorName+'</h4>';
		
						output	+= '<p><label for="investorName">Name:</label><input type="text" name="investorName" id="investorName" value="'+investorName+'" /></p>';
						output	+= '<p><label for="investorEmail">Email:</label><input type="text" name="investorEmail" id="investorEmail" value="'+investorEmail+'" /></p>';
						output	+= '<p>';
						output	+= '<label for="investorUsername">Username:</label><input type="text" name="investorUsername" id="investorUsername" value="'+investorUsername+'" />';
						output 	+= '</p>';
						output	+= '<p class="bold"><a href="javascript:void(0)" onclick="updateInvestor(\''+investorID+'\')">Update Investor</p>';
						
						document.getElementById('output').innerHTML = output;
						document.getElementById('investorName').focus();
					}
				}
			}
			xmlHttp.open('post', url, true);
			xmlHttp.send(null);
			break;
			
		case 'resetPassword':
			query	= '?Action=editInvestor&InvestorID='+investorID;
			url		+= query;

			var xmlHttp = xmlHttpRequest();
			xmlHttp.onreadystatechange = function()
			{			
				if (xmlHttp.readyState == 4)
				{
					var output 	= '';
					var xml = xmlHttp.responseXML;
					
					if (xml!=null)
					{
						investorName		= xml.getElementsByTagName('investorName')[0].childNodes[0].nodeValue;
			
						output 	+= '';
						output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listInvestors()">Return</a></h3>';
						output	+= '<p>&nbsp;</p>';
						output	+= '<h4>';
						output	+= 'Mountain Plains Equity Group Investor Portal';
						output 	+= '</h4>';	
						output	+= '<h4>Reset Password for Investor: '+investorName+'</h4>';
						
						output	+= '<p><label for="newPassword">New Password:</label><input type="password" name="newPassword" id="newPassword" /></p>';
						output	+= '<p><label for="confirmPassword">Confirm Password:</label><input type="password" name="confirmPassword" id="confirmPassword" /></p>';
						output	+= '<p class="bold"><a href="javascript:void(0)" onclick="resetPassword(\'inside\',\''+investorID+'\')">Reset Password</p>';
						
						document.getElementById('output').innerHTML = output;
						document.getElementById('adminName').focus();	
					}
				}
			}		
			xmlHttp.open('post', url, true);
			xmlHttp.send(null);			
			break;			
			
		case 'funds':
			query	= '?Action=investorFunds&InvestorID='+investorID;
			url		+= query;

			var xmlHttp = xmlHttpRequest();
			xmlHttp.onreadystatechange = function()
			{	
				if (xmlHttp.readyState == 4)
				{
					var output 	= '';
					var xml	= xmlHttp.responseXML;
					
					if (xml!=null)
					{
						var investorName	= xml.getElementsByTagName('investorName')[0].childNodes[0].nodeValue;
						var fundsCount		= xml.getElementsByTagName('fundsCount')[0].childNodes[0].nodeValue;
						var moreFundsCount	= xml.getElementsByTagName('moreFundsCount')[0].childNodes[0].nodeValue;
						
						output 	+= '';
						output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listInvestors()">Return</a></h3>';
						output	+= '<p>&nbsp;</p>';
						output	+= '<h4>';
						output	+= 'Mountain Plains Equity Group Investor Portal';
						output 	+= '</h4>';	
						output	+= '<h4>Investment Funds for '+investorName+'</h4>';
						
						if (fundsCount>0)
						{
							var investorFunds 	= xml.getElementsByTagName('investorFunds');
							for (var i=0; i<investorFunds.length; i++)
							{
								fundData 	= investorFunds[i];
								fundID		= fundData.getElementsByTagName('fundID')[0].childNodes[0].nodeValue;
								fundName	= fundData.getElementsByTagName('fundName')[0].childNodes[0].nodeValue;
								output		+= '<p><input type="checkbox" name="'+fundName+'" id="'+fundName+' value="'+fundID+'" checked="checked" onclick="fundLink(\'unlink\',\''+fundID+'\',\''+investorID+'\')" />'+fundName+'</p>';
							}
						}
						else
							output	+= '<p>No funds selected</p>';
						output	+= '<p>&nbsp;</p>';
						if (moreFundsCount>0)
						{
							output	+= '<p>Add Funds:</p>';
							var additionalFunds	= xml.getElementsByTagName('additionalFunds');
							for (var i=0; i<additionalFunds.length; i++)
							{
								fundData 	= additionalFunds[i];
								fundID		= fundData.getElementsByTagName('fundID')[0].childNodes[0].nodeValue;
								fundName	= fundData.getElementsByTagName('fundName')[0].childNodes[0].nodeValue;
								
								output		+= '<p><input type="checkbox" name="'+fundName+'" id="'+fundName+' value="'+fundID+'" onclick="fundLink(\'link\',\''+fundID+'\',\''+investorID+'\')" />'+fundName+'</p>';
							}
						}
						output	+= '<p">&nbsp;</p>';
						
						document.getElementById('output').innerHTML = output;
		
					}
				}
			}
			xmlHttp.open('post', url, true);
			xmlHttp.send(null);
			break;
	
		case 'delete':
			if (!confirm('Delete this investor?'))
				return false;
				
			query	= '?Action=deleteInvestor&InvestorID='+investorID;
			url		+= query;
			//var url		= 'http://www.mpequity.com/investors/scripts/investor.php?Action=deleteInvestor&InvestorID='+investorID;
			var xmlHttp = xmlHttpRequest();
			xmlHttp.onreadystatechange = function()
			{	
				listInvestors();
			}
			xmlHttp.open('post', url, true);
			xmlHttp.send(null);	
			break;
	
		default:
			return false;
	}
	
	return true;
}
function updateInvestor(investorID)
{
	initURL();

	if (investorID==-1)
		query	= '?Action=addInvestor';
	else
		query	= '?Action=updateInvestor&InvestorID='+investorID;

	var investorName 		= document.getElementById('investorName').value;
	var investorEmail		= document.getElementById('investorEmail').value;
	var investorUsername	= document.getElementById('investorUsername').value;
	
	if (investorName=='' || investorUsername=='')
		return messageHandler('alert','Please enter all fields');
	
	query += '&Name='+escape(investorName)+'&Email='+escape(investorEmail)+'&Username='+escape(investorUsername);
	
	
	if (investorID==-1)
	{
		var password 	= document.getElementById('investorPassword').value;
		var confirm		= document.getElementById('investorConfirm').value;
	
		if (password=='' || confirm=='')
			return messageHandler('alert','Please enter and confirm password');
		else if (password!=confirm)
			return messageHandler('alert','Password confirmation does not match');
		else if (!validatePassword(password))
			return messageHandler('alert','Password does not meet strength criteria:\n\n\tMinimum of 8 characers\n\tCombination of upper/lower case\n\tAt least one number\n\nPlease re-enter');
		else
			query += '&Password='+md5(password);	
	}
	url += query;

	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{	
		if (xmlHttp.readyState == 4)
		{
			var xml	= xmlHttp.responseXML;
			
			if (xml!=null)
			{
				var returnCode	= xml.getElementsByTagName('returnCode')[0].childNodes[0].nodeValue;
				if (returnCode==-1)
					return messageHandler('alert','Username/Password combination already exists. Please re-enter.');
				else if (returnCode==-2)
					return messageHandler('alert','Email address is invalid. Please re-enter.');
				else if (returnCode==-9999)
					return messageHandler('alert','Database cannot be accessed. Please try again later.');
				else
				{	
					if (investorID==-1)
					{
						var newInvestorID = xml.getElementsByTagName('investorID')[0].childNodes[0].nodeValue;
						var message = 'Investor successfully added';
						manageInvestors('funds',newInvestorID);
						messageHandler('confirm',message);
					}
					else
					{
						var message	= 'Investor information successfully updated';
						listInvestors();
						messageHandler('confirm',message);
					}		
				}			
			}
		}
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);
	
	return true;
}
function fundLink(linkAction,fundID,investorID)
{
	initURL();

	query	= '?Action=fundLink&LinkAction='+linkAction+'&FundID='+fundID+'&InvestorID='+investorID;
	url 	+= query;
	
	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{
		init();
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);
	
	return true;
}
function listYears(investorID,reportID,fundID)
{
	initURL();

	query	= '?Action=listYears'+'&InvestorID='+investorID+'&ReportID='+reportID+'&FundID='+fundID;
	url		+= query;

	document.cookie = 'gotoMe=listYears(\''+investorID+'\',\''+reportID+'\','+fundID+')';

	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{
		if (xmlHttp.readyState == 4)
		{
			var output 	= '';
			var xml		= xmlHttp.responseXML;
			
			if (xml!=null)
			{	
				var logger		= readCookie('logger');
				var admin 		= readCookie('admin');
				
				if (admin==''||admin==null)
					var isAdmin = false;
				else if (admin==1)
					var isAdmin = true;				
				
				if (fundID!=0)
				{
					var fundName	= xml.getElementsByTagName('fundName')[0].childNodes[0].nodeValue;
					var heading 	= fundName;
				}
				else
					var heading		= 'All Files';
				if (reportID!=0)
				{
					var reportType	= xml.getElementsByTagName('reportType')[0].childNodes[0].nodeValue;
					heading 		+= ' : '+reportType;
				}
				var yearCount	= xml.getElementsByTagName('yearCount')[0].childNodes[0].nodeValue;

				output 	+= '';
				if (isAdmin)
					output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');manageFunds(\'files\',\''+fundID+'\')">Return</a></h3>';
				else
				{
					if (reportID==0)
						output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listReports()">Return</a></h3>';
					else
						output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listFunds(\''+reportID+'\')">Return</a></h3>';
				}
				output	+= '<p>&nbsp;</p>';
				output	+= '<h4>Mountain Plains Equity Group Investor Portal</h4>';	
				output 	+= '<h4>'+heading+'</h4>';
				
				output	+= '<p>&nbsp;</p>';
				
				if (yearCount>0)
				{
					var years	= xml.getElementsByTagName('years');
					for (var i=0; i<years.length; i++)
					{
						yearData	= years[i];
						year		= yearData.getElementsByTagName('year')[0].childNodes[0].nodeValue;
						if (fundID==0&&reportID==0)
							output	+= '<p><a href="javascript:void(0)" onclick="showFilesByYear(\''+investorID+'\',\'0\',\''+year+'\')">'+year+'</a></p>';
						else
							output	+= '<p><a href="javascript:void(0)" onclick="showFiles(\''+investorID+'\',\''+reportID+'\',\''+fundID+'\',\''+year+'\')">'+year+'</a></p>';
					}
				}
				else
					output += '<p>No uploaded files</p>';
					
				if (isAdmin&&reportID!=0)
					output 	+= '<p><a href="javascript:void(0)" onclick="showFiles(\''+investorID+'\',\''+reportID+'\',\''+fundID+'\',\'0\')">Upload New File:</a></p>';
				
				document.getElementById('output').innerHTML = output;
			}
		}
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);
	
	return true;
}
function listK1(investorID)
{
	initURL();

	query	= '?Action=listK1'+'&InvestorID='+investorID;
	url		+= query;

	document.cookie = 'gotoMe=listK1(\''+investorID+'\')';

	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{
		if (xmlHttp.readyState == 4)
		{
			var output 	= '';
			var xml		= xmlHttp.responseXML;
			
			if (xml!=null)
			{	
				var logger		= readCookie('logger');
				var admin 		= readCookie('admin');
				
				if (admin==''||admin==null)
					var isAdmin = false;
				else if (admin==1)
					var isAdmin = true;				
				
				var yearCount	= xml.getElementsByTagName('yearCount')[0].childNodes[0].nodeValue;

				output 	+= '';
				output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listReports()">Return</a></h3>';
				output	+= '<p>&nbsp;</p>';
				output	+= '<h4>Mountain Plains Equity Group Investor Portal</h4>';	
				output 	+= '<h4>Investment Funds : K1</h4>';
				output	+= '<p>&nbsp;</p>';
				
				if (yearCount>0)
				{
					var years	= xml.getElementsByTagName('years');
					for (var i=0; i<years.length; i++)
					{
						yearData	= years[i];
						year		= yearData.getElementsByTagName('year')[0].childNodes[0].nodeValue;
						output		+= '<p><a href="javascript:void(0)" onclick="listFundsK1(\''+investorID+'\',\''+year+'\')">'+year+'</a></p>';
					}
				}
				else
					output += '<p>No uploaded files</p>';
				
				document.getElementById('output').innerHTML = output;
			}
		}
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);
	
	return true;
}
function showFiles(investorID,reportID,fundID,year)
{
	initURL();
	query	= '?Action=showFiles&ReportID='+reportID+'&FundID='+fundID+'&InvestorID='+investorID;
	if (year!=0)
		query	+= '&Year='+year;
	document.cookie = 'gotoMe=showFiles(\''+investorID+'\',\''+reportID+'\',\''+fundID+'\',\''+year+'\')';
	url		+= query;

	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{
		if (xmlHttp.readyState == 4)
		{
			var output 	= '';
			var xml		= xmlHttp.responseXML;
			
			if (xml!=null)
			{
				var logger		= readCookie('logger');
				var admin 		= readCookie('admin');
				
				if (admin==''||admin==null)
					var isAdmin = false;
				else if (admin==1)
					var isAdmin = true;
							
				if (fundID!=0)
				{
					var fundName	= xml.getElementsByTagName('fundName')[0].childNodes[0].nodeValue;
					var heading 	= fundName;
				}
				else
					var heading		= 'All Files';
				if (reportID!=0)
				{
					var reportType	= xml.getElementsByTagName('reportType')[0].childNodes[0].nodeValue;
					var k1Report	= xml.getElementsByTagName('k1Report')[0].childNodes[0].nodeValue;
					heading 		+= ' : '+reportType;
				}
				else
					heading			+= ' : All Categories';
				
				if (year!=0)
					heading 		+= ' : '+year;
							
				var fileCount	= xml.getElementsByTagName('fileCount')[0].childNodes[0].nodeValue;
				
				output 	+= '';
				output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listYears(\''+investorID+'\',\''+reportID+'\',\''+fundID+'\')">Return</a></h3>';
				output	+= '<p>&nbsp;</p>';
				output	+= '<h4>Mountain Plains Equity Group Investor Portal</h4>';	
				output 	+= '<h4>'+heading+'</h4>';
				output	+= '<p>&nbsp;</p>';

				if (fileCount>0)
				{
					output	+= '<table border="0">';
					output	+= '<tr class="tableHeader">';
					output	+= '<td width="35%">File Name</td>';
					if (reportID==0)
						output	+= '<td width="35%">Category</td>';
					else
					{
						if (k1Report=='Y')
							output	+= '<td width="35%">Investor</td>';
						else					
							output	+= '<td width="35%">File Description</td>';
					}
					output	+= '<td width="5%">&nbsp;</td>';
					
					var files	= xml.getElementsByTagName('files');
					for (var i=0; i<files.length; i++)
					{
						fileData 	= files[i];
						fileID		= fileData.getElementsByTagName('fileID')[0].childNodes[0].nodeValue;
						fileName	= fileData.getElementsByTagName('fileName')[0].childNodes[0].nodeValue;
						k1File		= fileData.getElementsByTagName('k1File')[0].childNodes[0].nodeValue;

						if (reportID==0)
						{
							fileTypeID	= fileData.getElementsByTagName('reportID')[0].childNodes[0].nodeValue;
							fileType	= fileData.getElementsByTagName('reportType')[0].childNodes[0].nodeValue;
						}
						else
						{
							if (k1File=='Y')
								k1Investor	= fileData.getElementsByTagName('fileDesc')[0].childNodes[0].nodeValue;
							else
							{
								fileDesc	= fileData.getElementsByTagName('fileDesc')[0].childNodes[0].nodeValue;
								if (fileDesc == '**** NO DESCRIPTION ****')
									fileDesc = '&nbsp;';
							}
						}
						output		+= '<tr>';
						output		+= '<td>'+fileName+'</td>';
						if (reportID==0)
							output	+= '<td><a href="javascript:void(0)" onclick="listYears(\''+investorID+'\',\''+fileTypeID+'\',\''+fundID+'\')">'+fileType+'</a></td>';
						else if (k1File=='Y')
							output	+= '<td>'+k1Investor+'</td>';
						else						
							output	+= '<td>'+fileDesc+'</td>';
						output		+= '<td align="center">';
						output		+= '<a href="javascript:void(0)" onclick="downloadFile(\''+fileID+'\')">Download</a>';
						if (isAdmin)
							output	+= '&nbsp;|&nbsp;<a href="javascript:void(0)" onclick="deleteFile(\''+fileID+'\')">Delete</a>';
						output		+= '</td>';

						output		+= '</tr>';
					}
					output	+= '</table>';
					
				}
				else
					output += '<p>No uploaded files</p>';

				if (isAdmin&&reportID!=0)
				{
					output	+= '<p><hr /></p>';
					output 	+= '<h4>Upload New File:</h4>';
					output	+= '<h4>NOTE: Maximum upload file size is 8 megabytes</h4>';
					output 	+= '<form name="frmUpload" id="frmUpload" enctype="multipart/form-data" action="/investors/filemanager/upload.php?FundID='+fundID+'&ReportID='+reportID+'" target="upload_target" method="post"">';
					output 	+= '<p><label for="upload">File:</label><input type="file" class="file" name="upload" id="upload" /></p>';
					if (year==0)
						year='';
					output 	+= '<p><label for="year">Year:</label><input type="text" class="year" name="year" id="year" size="4" maxlength="4" value="'+year+'" /></p>';
					output 	+= '<p><label for="description">Description:</label><input type="text" class="description" name="description" id="description" /><a href="javascript:void(0)" onclick="document.frmUpload.submit()">Upload</a></p>';
					output 	+= '<iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe>';
					output 	+= '</form>';
				}
				document.getElementById('output').innerHTML = output;
			}
		}
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);
}
function listFundsK1(investorID,year)
{
	initURL();
	query	= '?Action=listFundsK1&InvestorID='+investorID+'&Year='+year;

	document.cookie = 'gotoMe=listFundsK1(\''+investorID+'\',\''+year+'\')';
	url		+= query;
	
	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{
		if (xmlHttp.readyState == 4)
		{
			var output 	= '';
			var xml		= xmlHttp.responseXML;
			
			if (xml!=null)
			{
				var logger		= readCookie('logger');
				var admin 		= readCookie('admin');
				
				if (admin==''||admin==null)
					var isAdmin = false;
				else if (admin==1)
					var isAdmin = true;
							
				var heading 	= 'Investment Funds : '+year+' : K-1';
				//var fileCount	= xml.getElementsByTagName('fileCount')[0].childNodes[0].nodeValue;
				
				output 	+= '';
				output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listK1(\''+investorID+'\')">Return</a></h3>';
				output	+= '<p>&nbsp;</p>';
				output	+= '<h4>Mountain Plains Equity Group Investor Portal</h4>';	
				output 	+= '<h4>'+heading+'</h4>';

				var funds = xml.getElementsByTagName('fund');
				output	+= '<table border="0">';
				for (var i=0; i<funds.length; i++)
				{
					fundData 	= funds[i];
					fundID		= fundData.getElementsByTagName('fundID')[0].childNodes[0].nodeValue;
					fundName	= fundData.getElementsByTagName('fundName')[0].childNodes[0].nodeValue;
					k1ID		= fundData.getElementsByTagName('k1ID')[0].childNodes[0].nodeValue;
					
					output		+= '<tr>';
					output		+= '<td width="50%">'+fundName+'</td>';
					output		+= '<td align="right" width="50%">';
					//output		+= '<a href="javascript:void(0)" onclick="showK1(\''+investorID+'\',\''+fundID+'\',\''+year+'\')">K-1</a>';
					output		+= '<a href="javascript:void(0)" onclick="downloadFile(\''+k1ID+'\')">K-1</a>';
					output		+= '</td>';
					output		+= '</tr>';
				}

				output	+= '</table>'
				document.getElementById('output').innerHTML = output;
			}
		}
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);
}
function showAllFiles(investorID,fundID)
{
	initURL();

	query	= '?Action=showAllFiles';
	if (investorID!=0)
		query += '&InvestorID='+investorID
	else if(fundID!=0)
		query += '&FundID='+fundID
	url		+= query;

	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{
		if (xmlHttp.readyState == 4)
		{
			var output 	= '';
			var xml		= xmlHttp.responseXML;
			
			if (xml!=null)
			{
				document.cookie = 'gotoMe=showAllFiles(\''+investorID+'\',\''+fundID+'\')';
				
				var admin		= readCookie('admin');
				var logger		= readCookie('logger');
				
				if (admin==1)
					var isAdmin = true;
				else
					var isAdmin = false;
									
				var fileCount	= xml.getElementsByTagName('fileCount')[0].childNodes[0].nodeValue;
				
				if (fundID!=0)
				{
					fundName = xml.getElementsByTagName('fundName')[0].childNodes[0].nodeValue;
					var heading = fundName+' : All Files';
				}
				else
					var heading = 'All Files';
				
				
				output 	+= '';
				if (!isAdmin)
					output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listReports()">Return</a></h3>';
				else
					output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');manageFunds(\'files\',\''+fundID+'\')">Return</a></h3>';
				output	+= '<p>&nbsp;</p>';
				output	+= '<h4>Mountain Plains Equity Group Investor Portal</h4>';	
				output 	+= '<h4>'+heading+'</h4>';
				
				output	+= '<p>&nbsp;</p>';

				if (fileCount>0)
				{
					var files	= xml.getElementsByTagName('files');
					for (var i=0; i<files.length; i++)
					{
						fileData	= files[i];
						//fundID		= fileData.getElementsByTagName('fundID')[0].childNodes[0].nodeValue;
						//reportID	= fileData.getElementsByTagName('reportID')[0].childNodes[0].nodeValue;
						year		= fileData.getElementsByTagName('year')[0].childNodes[0].nodeValue;
						//output		+= '<p><a href="javascript:void(0)" onclick="showFiles(\''+reportID+'\',\''+fundID+'\',\''+year+'\')">'+year+'</a></p>';
						output		+= '<p><a href="javascript:void(0)" onclick="showFilesByYear(\''+investorID+'\',\''+fundID+'\',\''+year+'\')">'+year+'</a></p>';
					}
				}
				else
					output += '<p>No uploaded files</p>';
					
				document.getElementById('output').innerHTML = output;
			}
		}
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);
}
function showFilesByYear(investorID,fundID,year)
{
	initURL();

	query	= '?Action=showFilesByYear&Year='+year;
	if (investorID!=0)
		query += '&InvestorID='+investorID
	else if(fundID!=0)
		query += '&FundID='+fundID	
	
	url		+= query;
	
	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{
		if (xmlHttp.readyState == 4)
		{
			var output 	= '';
			var xml		= xmlHttp.responseXML;
			
			if (xml!=null)
			{
				document.cookie = 'gotoMe=showFilesByYear(\''+investorID+'\',\''+fundID+'\',\''+year+'\')';
				
				var logger		= readCookie('logger');
									
				var fileCount	= xml.getElementsByTagName('fileCount')[0].childNodes[0].nodeValue;
				
				output 	+= '';
				output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');listYears(\''+investorID+'\',\'0\',\''+fundID+'\')">Return</a></h3>';
				//output	+= '<h3>'+logger+' | <a href="javascript:void(0)" onclick="deleteCookie(\'gotoMe\');showAllFiles(\''+investorID+'\',\''+fundID+'\')">Return</a></h3>';
				output	+= '<p>&nbsp;</p>';
				output	+= '<h4>Mountain Plains Equity Group Investor Portal</h4>';	
				output 	+= '<h4>All Files : '+year+'</h4>';
				
				output	+= '<p>&nbsp;</p>';
				
				if (fileCount>0)
				{
					output	+= '<table>';
					output	+= '<tr class="tableHeader">';
					output	+= '<td width="35%">Investment Fund</td>';
					output	+= '<td width="25%">Category</td>';
					output	+= '<td width="35%">File Name</td>';
					output	+= '<td width="5%">&nbsp;</td>';
					
					var files	= xml.getElementsByTagName('files');
					for (var i=0; i<files.length; i++)
					{
						fileData 	= files[i];
						fileID		= fileData.getElementsByTagName('fileID')[0].childNodes[0].nodeValue;
						fileName	= fileData.getElementsByTagName('fileName')[0].childNodes[0].nodeValue;
						fundID		= fileData.getElementsByTagName('fundID')[0].childNodes[0].nodeValue;
						fundName	= fileData.getElementsByTagName('fundName')[0].childNodes[0].nodeValue;
						categoryID	= fileData.getElementsByTagName('categoryID')[0].childNodes[0].nodeValue;
						category	= fileData.getElementsByTagName('category')[0].childNodes[0].nodeValue;	
						output		+= '<tr>';
						output		+= '<td>'+fundName+'</td>';
						output		+= '<td>'+category+'</td>';
						output		+= '<td>'+fileName+'</td>';
						output		+= '<td align="center">';
						output		+= '<a href="javascript:void(0)" onclick="downloadFile(\''+fileID+'\')">Download</a>';
						output		+= '</td>';

						output		+= '</tr>';
					}
					output	+= '</table>';
					
				}
				else
					output += '<p>No uploaded files</p>';
					
				document.getElementById('output').innerHTML = output;
			}
		}
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);
}
function stopUpload(result,fundID,isK1,k1ID,year)
{
	var resultMsg = '';
	
	if (result==0)
	{
		if (isK1=='Y')
			selectInvestor(fundID,k1ID,year);
		else
			init();
	}
	else if (result==1)
		return messageHandler('alert','No file selected for upload');
	else if (result==2)
		return messageHandler('alert','Invalid file type');
	else if (result==3)
		return messageHandler('alert','Could not upload file');
	else if (result==4)
		return messageHandler('alert','Year is invalid');	
	else if (result==5)
		return messageHandler('alert','A file by this name already exists. Please delete the existing file before uploading.');		
		
	return true;   
}
function selectInvestor(fundID,k1ID,year)
{
	var admin = readCookie('admin');
	if (admin!=1)
	{
		logout();
		return false;
	}
	
	initURL();
	query	= '?Action=selectInvestors&FundID='+fundID;
	url		+= query;

	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{	
		if (xmlHttp.readyState == 4)
		{
			var output 	= '';
			var xml		= xmlHttp.responseXML;
			
			if (xml!=null)
			{
				document.cookie = 'gotoMe=selectInvestor(\''+fundID+'\',\''+k1ID+'\',\''+year+'\')';
				var logger	= readCookie('logger');
				var loggerID= readCookie('loggerID');
				
				var fund = xml.getElementsByTagName('fund')[0].childNodes[0].nodeValue;
				
				output 	+= '';
				output	+= '<h3>'+logger+'</h3>';
				output	+= '<p>&nbsp;</p>';
				output	+= '<h4>';
				output	+= 'Mountain Plains Equity Group Investor Portal';
				output 	+= '</h4>';	
				output 	+= '<h4>'+fund+' : K-1 : '+year+' : Select Investor</h4>';

				var investors = xml.getElementsByTagName('investor');
				output	+= '<table width="60%">';
				for (var i=0; i<investors.length; i++)
				{
					investorData 	= investors[i];
					investorID		= investorData.getElementsByTagName('investorID')[0].childNodes[0].nodeValue;
					investorName	= investorData.getElementsByTagName('investorName')[0].childNodes[0].nodeValue;
					
					output		+= '<tr>';
					output		+= '<td>'+investorName+'</td>';
					output		+= '<td align="right">';
					output		+= '<input type="radio" name="investorID" id="investorID" value="'+investorID+'" onclick="k1Link(\''+fundID+'\',\''+k1ID+'\',\''+investorID+'\',\''+year+'\')" />';
					output		+= '</td>';
					output		+= '</tr>';
				}
				output	+= '</table>'

				document.getElementById('output').innerHTML = output;

			}
		}
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);

	return true;
}
function k1Link(fundID,k1ID,investorID,year)
{
	initURL();

	query	= '?Action=k1Link&K1ID='+k1ID+'&InvestorID='+investorID+'&FundID='+fundID+'&Year='+year;
	url 	+= query;

	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{
		deleteCookie('gotoMe');
		manageFunds('files',fundID);
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);
	
	return true;
}
function downloadFile(fileID)
{
	var loggerID 	= readCookie('loggerID');
	var downLoadURL	= 'http://www.mpequity.com/investors/filemanager/download.php?FileID='+fileID+'&LoggerID='+loggerID;
	window.open(downLoadURL,'Download','toolbar=0,status=0,directories=0,menubar=0,location=0,resizeable=0,scrollbars=0,height=30,width=50');
	return true;
}
function deleteFile(fileID)
{
	if (!confirm('Delete this file?'))
		return false;
		
	initURL();

	query	= '?Action=deleteFile&FileID='+fileID;
	url		+= query;
	
	var xmlHttp = xmlHttpRequest();
	xmlHttp.onreadystatechange = function()
	{
		if (xmlHttp.readyState == 4)
		{
			init();
		}
	}
	xmlHttp.open('post', url, true);
	xmlHttp.send(null);

	return true;
}
function windowSize()
{
	var w = 0;
	var h = 0;

	//IE
	if(!window.innerWidth)
	{
		//strict mode
		if(!(document.documentElement.clientWidth == 0))
		{
			w = document.documentElement.clientWidth;
			h = document.documentElement.clientHeight;
		}
		//quirks mode
		else
		{
			w = document.body.clientWidth;
			h = document.body.clientHeight;
		}
	}
	//w3c
	else
	{
		w = window.innerWidth;
		h = window.innerHeight;
	}
	return {width:w,height:h};
}
function windowCenter()
{
	var width 	= 0;
	var height 	= 0;

	var _x 		= 0;
	var _y 		= 0;
	var offsetX = 0;
	var offsetY = 0;

	//IE
	if(!window.pageYOffset)
	{
		//strict mode
		if(!(document.documentElement.scrollTop == 0))
		{
			offsetY = document.documentElement.scrollTop;
			offsetX = document.documentElement.scrollLeft;
		}
		//quirks mode
		else
		{
			offsetY = document.body.scrollTop;
			offsetX = document.body.scrollLeft;
		}
	}
	//w3c
	else
	{
		offsetX = window.pageXOffset;
		offsetY = window.pageYOffset;
	}

	_x = windowSize().width;
	_y = windowSize().height;
	
	_x = (_x/2)+offsetX;
	_y = (_y/2)+offsetY;

	return{x:_x,y:_y};
}
function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ')
			c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0)
			return c.substring(nameEQ.length,c.length);
	}
	return null;
}
function logout()
{
	deleteCookie('gotoMe');
	deleteCookie('logger');
	deleteCookie('loggerID');
	//deleteCookie('admin');

	init();
}
function deleteCookie(cookie)
{
	var cookie_date = new Date ( );  // current date & time
	cookie_date.setTime ( cookie_date.getTime() - 1 );
	document.cookie = cookie + "=; expires=" + cookie_date.toGMTString();
}
function validatePassword (pw, options)
{
	/*
		Password Validator 0.1
		(c) 2007 Steven Levithan <stevenlevithan.com>
		MIT License
	*/
	// default options (allows any password)
	var o = {
		lower:    1,
		upper:    1,
		//alpha:    0, /* lower + upper */
		numeric:  1,
		special:  0,
		length:   [8, Infinity],
		custom:   [ /* regexes and/or functions */ ],
		badWords: ['password'],
		//badSequenceLength: 0,
		noQwertySequences: false,
		noSequential:      false
	};

	for (var property in options)
		o[property] = options[property];

	var	re = {
			lower:   /[a-z]/g,
			upper:   /[A-Z]/g,
			alpha:   /[A-Z]/gi,
			numeric: /[0-9]/g,
			special: /[\W_]/g
		},
		rule, i;

	// enforce min/max length
	if (pw.length < o.length[0] || pw.length > o.length[1])
		return false;

	// enforce lower/upper/alpha/numeric/special rules
	for (rule in re){
		if ((pw.match(re[rule]) || []).length < o[rule])
			return false;
	}

	// enforce word ban (case insensitive)
	for (i = 0; i < o.badWords.length; i++) {
		if (pw.toLowerCase().indexOf(o.badWords[i].toLowerCase()) > -1)
			return false;
	}

	// enforce the no sequential, identical characters rule
	if (o.noSequential && /([\S\s])\1/.test(pw))
		return false;

	// enforce alphanumeric/qwerty sequence ban rules
	if (o.badSequenceLength) {
		var	lower   = "abcdefghijklmnopqrstuvwxyz",
			upper   = lower.toUpperCase(),
			numbers = "0123456789",
			qwerty  = "qwertyuiopasdfghjklzxcvbnm",
			start   = o.badSequenceLength - 1,
			seq     = "_" + pw.slice(0, start);
		for (i = start; i < pw.length; i++) {
			seq = seq.slice(1) + pw.charAt(i);
			if (
				lower.indexOf(seq)   > -1 ||
				upper.indexOf(seq)   > -1 ||
				numbers.indexOf(seq) > -1 ||
				(o.noQwertySequences && qwerty.indexOf(seq) > -1)
			) {
				return false;
			}
		}
	}

	// enforce custom regex/function rules
	for (i = 0; i < o.custom.length; i++) {
		rule = o.custom[i];
		if (rule instanceof RegExp) {
			if (!rule.test(pw))
				return false;
		} else if (rule instanceof Function) {
			if (!rule(pw))
				return false;
		}
	}

	// great success!
	return true;
}
function md5(str)
{ 
	// Calculate the md5 hash of a string   
	//  
	// version: 909.322 
	// discuss at: http://phpjs.org/functions/md5 
	// original by: Webtoolkit.info (http://www.webtoolkit.info/) 
	// namespaced by: Michael White (http://getsprink.com) 
	// tweaked by: Jack 
	// improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) 
	// input by: Brett Zamir (http://brett-zamir.me) 
	// bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) 
	// depends on: utf8_encode 
	// example 1: md5('Kevin van Zonneveld'); 
	// returns 1: '6e658d4bfcb59cc13f96c14450ac40b9' 
	var xl; 
 
	var rotateLeft = function (lValue, iShiftBits)
	{ 
		return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits)); 
	}; 
 
	var addUnsigned = function (lX,lY)
	{ 
		var lX4,lY4,lX8,lY8,lResult; 
		lX8 = (lX & 0x80000000); 
		lY8 = (lY & 0x80000000); 
		lX4 = (lX & 0x40000000); 
		lY4 = (lY & 0x40000000); 
		lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF); 
		if (lX4 & lY4)
		{ 
			return (lResult ^ 0x80000000 ^ lX8 ^ lY8); 
		} 
		if (lX4 | lY4)
		{ 
			if (lResult & 0x40000000)
			{ 
				return (lResult ^ 0xC0000000 ^ lX8 ^ lY8); 
			}
			else
			{ 
				return (lResult ^ 0x40000000 ^ lX8 ^ lY8); 
			} 
		}
		else
		{ 
			return (lResult ^ lX8 ^ lY8); 
		} 
	}; 
 
	var _F = function (x,y,z) { return (x & y) | ((~x) & z); }; 
	var _G = function (x,y,z) { return (x & z) | (y & (~z)); }; 
	var _H = function (x,y,z) { return (x ^ y ^ z); }; 
	var _I = function (x,y,z) { return (y ^ (x | (~z))); }; 
 
	var _FF = function (a,b,c,d,x,s,ac)
	{ 
		a = addUnsigned(a, addUnsigned(addUnsigned(_F(b, c, d), x), ac)); 
		return addUnsigned(rotateLeft(a, s), b); 
	}; 
 
	var _GG = function (a,b,c,d,x,s,ac)
	{ 
		a = addUnsigned(a, addUnsigned(addUnsigned(_G(b, c, d), x), ac)); 
		return addUnsigned(rotateLeft(a, s), b); 
	}; 
 
	var _HH = function (a,b,c,d,x,s,ac)
	{ 
		a = addUnsigned(a, addUnsigned(addUnsigned(_H(b, c, d), x), ac)); 
		return addUnsigned(rotateLeft(a, s), b); 
	}; 
	
	var _II = function (a,b,c,d,x,s,ac)
	{ 
		a = addUnsigned(a, addUnsigned(addUnsigned(_I(b, c, d), x), ac)); 
		return addUnsigned(rotateLeft(a, s), b); 
	}; 
 
	var convertToWordArray = function (str)
	{ 
		var lWordCount; 
		var lMessageLength = str.length; 
		var lNumberOfWords_temp1=lMessageLength + 8; 
		var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64; 
		var lNumberOfWords = (lNumberOfWords_temp2+1)*16; 
		var lWordArray=new Array(lNumberOfWords-1); 
		var lBytePosition = 0; 
		var lByteCount = 0; 
		while ( lByteCount < lMessageLength )
		{ 
			lWordCount = (lByteCount-(lByteCount % 4))/4; 
			lBytePosition = (lByteCount % 4)*8; 
			lWordArray[lWordCount] = (lWordArray[lWordCount] | (str.charCodeAt(lByteCount)<<lBytePosition)); 
			lByteCount++; 
		} 
		lWordCount = (lByteCount-(lByteCount % 4))/4; 
		lBytePosition = (lByteCount % 4)*8; 
		lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition); 
		lWordArray[lNumberOfWords-2] = lMessageLength<<3; 
		lWordArray[lNumberOfWords-1] = lMessageLength>>>29; 
		return lWordArray; 
	}; 
 
	var wordToHex = function (lValue)
	{ 
		var wordToHexValue="",wordToHexValue_temp="",lByte,lCount; 
		for (lCount = 0;lCount<=3;lCount++)
		{ 
			lByte = (lValue>>>(lCount*8)) & 255; 
			wordToHexValue_temp = "0" + lByte.toString(16); 
			wordToHexValue = wordToHexValue + wordToHexValue_temp.substr(wordToHexValue_temp.length-2,2); 
		} 
		return wordToHexValue; 
	}; 
 
	var x=[], 
	k,AA,BB,CC,DD,a,b,c,d, 
	S11=7, S12=12, S13=17, S14=22, 
	S21=5, S22=9 , S23=14, S24=20, 
	S31=4, S32=11, S33=16, S34=23, 
	S41=6, S42=10, S43=15, S44=21; 
 
	str = this.utf8_encode(str); 
	x = convertToWordArray(str); 
	a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; 
 
	xl = x.length; 
	for (k=0;k<xl;k+=16)
	{ 
		AA=a; BB=b; CC=c; DD=d; 
		a=_FF(a,b,c,d,x[k+0], S11,0xD76AA478); 
		d=_FF(d,a,b,c,x[k+1], S12,0xE8C7B756); 
		c=_FF(c,d,a,b,x[k+2], S13,0x242070DB); 
		b=_FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE); 
		a=_FF(a,b,c,d,x[k+4], S11,0xF57C0FAF); 
		d=_FF(d,a,b,c,x[k+5], S12,0x4787C62A); 
		c=_FF(c,d,a,b,x[k+6], S13,0xA8304613); 
		b=_FF(b,c,d,a,x[k+7], S14,0xFD469501); 
		a=_FF(a,b,c,d,x[k+8], S11,0x698098D8); 
		d=_FF(d,a,b,c,x[k+9], S12,0x8B44F7AF); 
		c=_FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1); 
		b=_FF(b,c,d,a,x[k+11],S14,0x895CD7BE); 
		a=_FF(a,b,c,d,x[k+12],S11,0x6B901122); 
		d=_FF(d,a,b,c,x[k+13],S12,0xFD987193); 
		c=_FF(c,d,a,b,x[k+14],S13,0xA679438E); 
		b=_FF(b,c,d,a,x[k+15],S14,0x49B40821); 
		a=_GG(a,b,c,d,x[k+1], S21,0xF61E2562); 
		d=_GG(d,a,b,c,x[k+6], S22,0xC040B340); 
		c=_GG(c,d,a,b,x[k+11],S23,0x265E5A51); 
		b=_GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA); 
		a=_GG(a,b,c,d,x[k+5], S21,0xD62F105D); 
		d=_GG(d,a,b,c,x[k+10],S22,0x2441453); 
		c=_GG(c,d,a,b,x[k+15],S23,0xD8A1E681); 
		b=_GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8); 
		a=_GG(a,b,c,d,x[k+9], S21,0x21E1CDE6); 
		d=_GG(d,a,b,c,x[k+14],S22,0xC33707D6); 
		c=_GG(c,d,a,b,x[k+3], S23,0xF4D50D87); 
		b=_GG(b,c,d,a,x[k+8], S24,0x455A14ED); 
		a=_GG(a,b,c,d,x[k+13],S21,0xA9E3E905); 
		d=_GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8); 
		c=_GG(c,d,a,b,x[k+7], S23,0x676F02D9); 
		b=_GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A); 
		a=_HH(a,b,c,d,x[k+5], S31,0xFFFA3942); 
		d=_HH(d,a,b,c,x[k+8], S32,0x8771F681); 
		c=_HH(c,d,a,b,x[k+11],S33,0x6D9D6122); 
		b=_HH(b,c,d,a,x[k+14],S34,0xFDE5380C); 
		a=_HH(a,b,c,d,x[k+1], S31,0xA4BEEA44); 
		d=_HH(d,a,b,c,x[k+4], S32,0x4BDECFA9); 
		c=_HH(c,d,a,b,x[k+7], S33,0xF6BB4B60); 
		b=_HH(b,c,d,a,x[k+10],S34,0xBEBFBC70); 
		a=_HH(a,b,c,d,x[k+13],S31,0x289B7EC6); 
		d=_HH(d,a,b,c,x[k+0], S32,0xEAA127FA); 
		c=_HH(c,d,a,b,x[k+3], S33,0xD4EF3085); 
		b=_HH(b,c,d,a,x[k+6], S34,0x4881D05); 
		a=_HH(a,b,c,d,x[k+9], S31,0xD9D4D039); 
		d=_HH(d,a,b,c,x[k+12],S32,0xE6DB99E5); 
		c=_HH(c,d,a,b,x[k+15],S33,0x1FA27CF8); 
		b=_HH(b,c,d,a,x[k+2], S34,0xC4AC5665); 
		a=_II(a,b,c,d,x[k+0], S41,0xF4292244); 
		d=_II(d,a,b,c,x[k+7], S42,0x432AFF97); 
		c=_II(c,d,a,b,x[k+14],S43,0xAB9423A7); 
		b=_II(b,c,d,a,x[k+5], S44,0xFC93A039); 
		a=_II(a,b,c,d,x[k+12],S41,0x655B59C3); 
		d=_II(d,a,b,c,x[k+3], S42,0x8F0CCC92); 
		c=_II(c,d,a,b,x[k+10],S43,0xFFEFF47D); 
		b=_II(b,c,d,a,x[k+1], S44,0x85845DD1); 
		a=_II(a,b,c,d,x[k+8], S41,0x6FA87E4F); 
		d=_II(d,a,b,c,x[k+15],S42,0xFE2CE6E0); 
		c=_II(c,d,a,b,x[k+6], S43,0xA3014314); 
		b=_II(b,c,d,a,x[k+13],S44,0x4E0811A1); 
		a=_II(a,b,c,d,x[k+4], S41,0xF7537E82); 
		d=_II(d,a,b,c,x[k+11],S42,0xBD3AF235); 
		c=_II(c,d,a,b,x[k+2], S43,0x2AD7D2BB); 
		b=_II(b,c,d,a,x[k+9], S44,0xEB86D391); 
		a=addUnsigned(a,AA); 
		b=addUnsigned(b,BB); 
		c=addUnsigned(c,CC); 
		d=addUnsigned(d,DD); 
	} 
	var temp = wordToHex(a)+wordToHex(b)+wordToHex(c)+wordToHex(d); 
	return temp.toLowerCase(); 
}
function utf8_encode ( argString )
{ 
	// Encodes an ISO-8859-1 string to UTF-8   
	//  
	// version: 909.322 
	// discuss at: http://phpjs.org/functions/utf8_encode 
	// original by: Webtoolkit.info (http://www.webtoolkit.info/) 
	// improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) 
	// improved by: sowberry 
	// tweaked by: Jack 
	// bugfixed by: Onno Marsman 
	// improved by: Yves Sucaet 
	// bugfixed by: Onno Marsman 
	// bugfixed by: Ulrich 
	// example 1: utf8_encode('Kevin van Zonneveld'); 
	// returns 1: 'Kevin van Zonneveld' 
	var string = (argString+''); // .replace(/\r\n/g, "\n").replace(/\r/g, "\n"); 
	 
	var utftext = ""; 
	var start, end; 
	var stringl = 0; 
 
	start = end = 0; 
	stringl = string.length; 
	for (var n = 0; n < stringl; n++)
	{ 
		var c1 = string.charCodeAt(n); 
		var enc = null; 
	 
		if (c1 < 128)
		{ 
			end++; 
		}
		else if (c1 > 127 && c1 < 2048)
		{ 
			enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128); 
		}
		else
		{ 
			enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128); 
		} 
	
		if (enc !== null)
		{ 
			if (end > start)
			{ 
				utftext += string.substring(start, end); 
			} 
			utftext += enc; 
			start = end = n+1; 
		} 
	} 
 
	if (end > start)
	{ 
		utftext += string.substring(start, string.length); 
	} 
 
	return utftext; 
}
window.onload = init;

