window.onload = Security;

var request = false;
try {
 request = new XMLHttpRequest();
} catch (trymicrosoft) {
 try {
   request = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (othermicrosoft) {
   try {
     request = new ActiveXObject("Microsoft.XMLHTTP");
   } catch (failed) {
     request = false;
   }
 }
}
if (!request)
alert("Error initializing XMLHttpRequest!");
/********************************************/
var request2 = false;
try {
 request2 = new XMLHttpRequest();
} catch (trymicrosoft) {
 try {
   request2 = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (othermicrosoft) {
   try {
     request2 = new ActiveXObject("Microsoft.XMLHTTP");
   } catch (failed) {
     request2 = false;
   }
 }
}
if (!request2)
alert("Error initializing XMLHttpRequest!");

/******************/
/* Trim functions */
/******************/
function LTrim( value ) {
var re = /\s*((\S+\s*)*)/;
return value.replace(re, "$1");
}
function RTrim( value ) {
var re = /((\s*\S+)*)\s*/;
return value.replace(re, "$1");
}
function trim( value ) {
return LTrim(RTrim(value));
}
/*************************/
/* End of trim functions */
/*************************/
function Security(){
url = "PHP/checkSecurity.php";
request.open("GET", url, true);
request.onreadystatechange = SecurityResponse;
request.send(null);
}

function SecurityResponse(){
if (request.readyState == 4)
	{
	if (request.status == 200)
      		{
      		response = request.responseText;
      		response = trim(response);

      		if (response != 'M') window.location = "http://www.hospitalregisters.com/index.html";
      		CreateList();
      		} 
  	 else
   		{
   		alert("status is " + request.status);
   		}
   	} 
}
/****************************/
/* Retrieve the information */
/* and create the list      */
/****************************/
function CreateList(){
url = "PHP/getResearchers.php";
request.open("GET", url, true);
request.onreadystatechange = DrawList;
request.send(null);
}

function DrawList(){
if (request.readyState == 4)
 	{
 	if (request.status == 200)
   		{
     	response = request.responseText;
     	response = trim(response);

 		if (response == "X")
 			{
 			parent.history.back(); 			
 			}     	
     		
     	rlist = request.responseText;
 		rlist = trim(rlist);
 		
 		records = rlist.split("#");
 		
 		rtable = "<table id = 'researcherstable'>";
 		rtable += "<thead><tr>";
 		rtable += "<th colspan = '2' rowspan = '2'>Manage</th>";
 		rtable += "<th>Name</th>";
 		rtable += "<th>Log-in Name</th>";
 		rtable += "<th>Telephone</th>";
 		rtable += "<th>E-mail</th>";
 		rtable += "<th>Projects</th>";
 		rtable += "</tr>";
 		rtable += "</thead><tbody>";
 		
 		for (j=0;j<records.length;j++)
 			{
 			fields = records[j].split("|");
 			name = fields[0];
 			username = fields[1];
 			telephone = fields[2];
 			email = fields[3];
 			projectlist = fields[4];
 			
 			namedata = '"' + username + '"';
 			
 			emaildata = "<a href='mailto:" + email + "'>" + email + "</a>";
 			
 			mbutton = "<button onclick = 'Manage(" + namedata + ")' title = 'Manage'>M</button>";
 			xbutton = "<button onclick = 'Delete(" + namedata + ")' title = 'Delete'>X</button>";

 			var projectdata = "";

 			if (projectlist)
 				{
 				projects = projectlist.split("~");
 			
 				if (projects.length == 1)
 					{
 					projectdata = projectlist;
 					}
 				else
 					{
 					projectdata = "<select>";
 					for (k=0;k<projects.length;k++)
 						{
 						projectdata += "<option>" + projects[k] + "</option>";
 						}
 					projectdata += "</select>";
 					}
 				}
 			rtable += "<tr>";
 			rtable += "<td class = 'rbutton'>" + mbutton + "</td>";
 			rtable += "<td class = 'rbutton'>" + xbutton + "</td>";
 			rtable += "<td>" + name + "</td>";
 			rtable += "<td>" + username + "</td>";
 			rtable += "<td>" + telephone + "</td>";
 			rtable += "<td>" + emaildata + "</td>";
 			rtable += "<td>" + projectdata + "</td>";
 			rtable += "</tr>";
 				
 			}
		rtable += "</tbody></table>"
 		
 		document.getElementById("tablecontainer").innerHTML = rtable;
 		var t = new SortableTable(document.getElementById('researcherstable'), 750);
     	}
   else
   		{
     	alert("status is " + request.status);
     	}
 	}
}

function Manage(username){
url = "PHP/getResearcherDetails.php?username=" + escape(username);
request.open("GET", url, true);
request.onreadystatechange = writeDetails;
request.send(null);
}

function writeDetails(){
if (request.readyState == 4)
	{
	if (request.status == 200)
   		{
   		data = trim(request.responseText);
		parts = data.split("|");
		
		document.researcherdetails.name.value = parts[0];
		document.researcherdetails.email.value = parts[1];
		document.researcherdetails.username.value = parts[2];
		document.researcherdetails.address1.value = parts[3];
		document.researcherdetails.address2.value = parts[4];
		document.researcherdetails.town.value = parts[5];
		document.researcherdetails.postcode.value = parts[6];
		document.researcherdetails.telephone.value = parts[7];
		ResearcherDetails('visible');
		} 
   else
   		{
     	alert("status is " + request.status);
     	}
 	}
}

function Email(email){
if(!email) return;
   	email = trim(email);
     	var to = email;
		var subject = "Message from United Kingdom Hospital Register";
		var doc = "mailto:" + to + "?subject=" + escape(subject); 
		window.location = doc;
}

function UpdateResearcher(){
/**************/
/* Check name */
/**************/
who = document.researcherdetails.name.value;
who = trim(who);
if(!who)
	{
	alert("Please enter his/her name");
	document.researcherdetails.name.focus();
	return;
	}

/***************/
/* Check email */
/***************/
mail = document.researcherdetails.email.value;
mail = trim(mail);
if(!mail)
	{
	alert("An e-mail is needed to send the username & password.");
	document.researcherdetails.email.focus();
	return;
	}
var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter.test(mail))
	{
	alert("There's a fault in this e-mail address")
	document.researcherdetails.email.focus();
	return;
	}

address1 = 	document.researcherdetails.address1.value;
address2 = 	document.researcherdetails.address2.value;
town = 		document.researcherdetails.town.value;
postcode = 	document.researcherdetails.postcode.value;
telephone = document.researcherdetails.telephone.value;
username = 	document.researcherdetails.username.value;
/***************************************/	
/* Gather up data and send to PHP file */
/***************************************/
var url = "PHP/updateResearcher.php?";
url += "name=" + escape(who);
url += "&address1=" + escape(address1);
url += "&address2=" + escape(address2);
url += "&town=" + escape(town);
url += "&telephone=" + escape(telephone);
url += "&postcode=" + escape(postcode);
url += "&email=" + escape(mail);
url += "&username=" + escape(username);
request.open("GET", url, true);
request.onreadystatechange = updateOK;
request.send(null);
}

function updateOK(){
if (request.readyState == 4)
	{
	if (request.status == 200)
   		{
   		ResearcherDetails('hidden');
   		CreateList();
   		} 
	else
   		{
     	alert("status is " + request.status);
     	}
	}
}

function Delete(username){
url = "PHP/removeResearcher.php?username=" + escape(username);alert(url);
request.open("GET", url, true);
request.onreadystatechange = Funeral;
request.send(null);
}

function Funeral(){
if (request.readyState == 4)
	{
	if (request.status == 200)
   		{
   		alert(request.responseText);
   		ResearcherDetails('hidden');
   		CreateList();
   		} 
   else
   		{
     	alert("status is " + request.status);
     	}
 	}
}

function CreatePassword(){
vowels = new Array("a", "e", "i", "o", "u", "ae", "oe");  
cons = new Array("b", "c", "d", "g", "h", "j", "k", "l", "m", "n", "p", "r", "s", "t", "u", "v", "w", "tr",  
"cr", "br", "fr", "th", "dr", "ch", "ph", "wr", "st", "sp", "sw", "pr", "sl", "cl", "kl");  
  
num_vowels = vowels.length - 1;  
num_cons = cons.length - 1;  

word = "";
for(i = 0; i < 8; i++)
	{
	vrand = Math.round(num_vowels*Math.random())
	crand = Math.round(num_cons*Math.random())  
	word += cons[crand];
	word += vowels[vrand];
	}
password = word.substring(0,8);
return password;   
}

function AddResearcher(){
/**************/
/* Check name */
/**************/
who = document.newresearcher.name.value;
who = trim(who);
if(!who)
	{
	alert("Please enter his/her name");
	document.newresearcher.name.focus();
	return;
	}

/***************/
/* Check email */
/***************/
mail = document.newresearcher.email.value;
mail = trim(mail);
if(!mail)
	{
	alert("An e-mail is needed to send the username & password.");
	document.newresearcher.email.focus();
	return;
	}
var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter.test(mail))
	{
	alert("There's a fault in this e-mail address")
	document.newresearcher.email.focus();
	return;
	}

uname = document.newresearcher.username.value;
uname = trim(uname);

if (!uname)
	{
	alert("No username created");
	document.newresearcher.username.focus();
	return;
	}

if (uname.length<6 || uname.length >20)
	{
	alert("Please make the Username between 6 and 20 letters long");
	document.newresearcher.username.focus();
	return;
	}

address1 = document.newresearcher.address1.value;
address2 = document.newresearcher.address2.value;
town = document.newresearcher.town.value;
postcode = document.newresearcher.postcode.value;
telephone = document.newresearcher.telephone.value;
password = CreatePassword();

/***************************************/	
/* Gather up data and send to PHP file */
/***************************************/
var url = "PHP/addResearcher.php?";
url += "name=" + escape(who);
url += "&address1=" + escape(address1);
url += "&address2=" + escape(address2);
url += "&town=" + escape(town);
url += "&telephone=" + escape(telephone);
url += "&postcode=" + escape(postcode);
url += "&email=" + escape(mail);
url += "&username=" + escape(uname);
url += "&password=" + escape(password);
request.open("GET", url, true);
request.onreadystatechange = SendOK;
request.send(null);
}

function SendOK(){
Message = "";
if (request.readyState == 4)
	{
	if (request.status == 200)
   		{
   		NewResearcher('hidden');
   		CreateList();
   		}
	}    
}

function NewResearcher(state){
document.getElementById("new").style.visibility = state;
}

function ResearcherDetails(state){
document.getElementById("details").style.visibility = state;
}

/*************/
/* Databases */
/*************/
function Databases(){
var ele = document.getElementById("databasesub");
if (ele.style.visibility == "hidden")
	{
	ele.style.visibility = "visible";
	}
else
	{
	ele.style.visibility = "hidden";
	}
}
