var request = null;
var dlg2; //dialogs
var ann; //announcement text
var welcomeText = "Admin Logged In: ";
	
function createRequest()
{
	try
	{
		request = new XMLHttpRequest();
	}
	catch(trymicrosoft)
	{
		try
		{
			request = new ActiveXOject("Msxml2.XMLHTTP");
		}
		
		catch(othermicrosoft)
		{
			try
			{
				request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(failed)
			{
				request = null;
			}
		}
	}
	if (request == null)
	{
		alert("Error creating request object!");
	}
};

function getElementsByClassName(oElm, strTagName, strClassName)
{
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++)
	{
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className))
		{
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
};

function login()
{
	var username  = document.getElementById("username_input").value;
	var password =  document.getElementById("password_input").value;
	
	
	var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/

	if (username == '' || password == '')
	{
		alert("Required fields left blank");
	}
	else if (username.match(illegalChars) || password.match(illegalChars))
	{
		alert("Required fields contain illegal characters");
		document.getElementById("username_input").value = "";
		document.getElementById("password_input").value = "";
	}
	else
	{
		createRequest();
		var url="admin.php?username="+escape(username)+"&password="+escape(password);
		request.open("GET", url, true);
		request.onreadystatechange = checkLogin;
		request.send(null);
	}
};

function checkLogin()
{
	if (request.readyState == 4)
	{
		var response = request.responseText;
		
		if (response != "") //failed
		{
			//alert and clear boxes
			alert(response);
			document.getElementById("username_input").value = "";
			document.getElementById("password_input").value = "";
		}
		else //success
		{
			//redirect to home page
			window.location.href="selectlinks.php";
		}
		
	}
};

function logout()
{
	var c = confirm("You will be logged out, proceed?");
	if (c)
	{
		//visit logout.php with ajax
		createRequest();
		var url="logout.php";
		request.open("GET", url, true);
		request.send(null);
		
	}
};

function removeAllNewsItems()
{
	var cont = document.getElementById("bodyBlock").removeChild(document.getElementById("newsBox"));
};

function displayNewsItems()
{
	createRequest();
	var url="getNews.php";
	request.open("GET", url, true);
	request.onreadystatechange = displayNews;
	request.send(null);
};

function displayNews()
{
	var values = new Array();
	values.push("EMPTY_PLACEHOLDER");
	
	 if (request.readyState == 4) 
	 {
		 if (request.status == 200) 
		 {
	
			var xmldoc = request.responseXML;
			var NIs = xmldoc.getElementsByTagName('newsItem');
			
			for (var y = 0; y < NIs.length; y++)
			{
				for (var u=0; u<NIs[y].childNodes.length; u++)
				{
					//only element nodes
					if (NIs[y].childNodes[u].nodeType==1)
    				{
						//id, title, body, date
						values.push(NIs[y].childNodes[u].childNodes[0].nodeValue);
					}
				}
			}
			
			//create news items with new info
			var newsBox = document.createElement("DIV");
			newsBox.id = "newsBox";
			document.getElementById("bodyBlock").insertBefore(newsBox, document.getElementById("slideShow"));
			
			var rNews = document.createElement("SPAN");
			rNews.id = "rNews";
			newsBox.appendChild(rNews);
				
				var rText = document.createTextNode("Recent News");
				rNews.appendChild(rText);
				
			var aN = document.createElement("a");
			aN.id = "newi_button";
			aN.href="javascript:dlg2.show()";
			aN.alt="Add New";
			aN.style.display="block";
			newsBox.appendChild(aN);
				
				var aText = document.createTextNode("ADD NEW ITEM");
				aN.appendChild(aText);
			
			var counter = 0;
			for (var o=(values.length-1)/4; o>0; o--)
			{
				var t = document.createElement("table");
				t.cellSpacing = "0";
				t.className="newsItem i"+values[1 + (counter * 4)];
				newsBox.appendChild(t);
				
					var tr1 = document.createElement("TR");
					tr1.className="newsHeader";
					t.appendChild(tr1);
				
						var td1 = document.createElement("TD");
						td1.className="left";
						tr1.appendChild(td1);
						
							var txt1 = document.createTextNode(values[2 + (counter * 4)] + " - " + (values[4 + (counter * 4)]).substr(0,10));
							td1.appendChild(txt1);
						
						var td2 = document.createElement("TD");
						td2.className = "right";
						tr1.appendChild(td2);
						
							//remove button
							var a1 = document.createElement("A");
							a1.className = "miniButton";
							
							var img1 = document.createElement("IMG");
							img1.border="0";
							img1.src="remove.gif";
							img1.alt="Remove Item";
							
							a1.appendChild(img1);
							td2.appendChild(a1);
							
							var newsItemClassNameNumber = t.className.substr(10);
							a1.href="javascript:deleteNews("+newsItemClassNameNumber+")";
					
					var tr2 = document.createElement("TR");
					tr2.className = "newsBody";
					t.appendChild(tr2);
						
						var td3 = document.createElement("TD");
						td3.colSpan = "2";
						tr2.appendChild(td3);
						
							var txt2 = document.createTextNode(values[3 + (counter * 4)]);
							td3.appendChild(txt2);	
					
					counter = counter + 1 ;
			}
			
		 }
	 }
};

function deleteNews(id)
{
	//delete from database
	createRequest();
	var url="delNews.php?id=" + escape(id);
	request.open("GET", url, true);
	request.onreadystatechange = updateDeleteNews;
	request.send(null);
};

function editNews(id)
{
};

function addNewsItem()
{
	//get values
	var title = document.getElementById("newsTitle_input").value;
	var text = document.getElementById("newsBody_input").value;
	
	//clear values
	document.getElementById("newsTitle_input").value = "";
	document.getElementById("newsBody_input").value = "";
	
	//close dialog
	dlg2.hide();
	
	//add to database
	createRequest();
	var url="addNews.php?title=" + escape(title) + "&text=" + escape(text);
	request.open("GET", url, true);
	request.onreadystatechange = updateAddNews;
	request.send(null);
};

function updateAddNews ()
{
	if (request.readyState == 4)
	{
		var response = request.responseText;
		
		if (response != "") //error
		{
			alert(response);
		}
		else //success
		{
			refreshNews();
		}
	}
};

function updateDeleteNews()
{
	if (request.readyState == 4)
	{
		var response = request.responseText;
		
		if (response.length > 6) //failed
		{
			//alert and clear boxes
			alert(response);
		}
		else //success
		{
			refreshNews();
		}
	}
};

function IsNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

   for (i = 0; i < sText.length && IsNumber == true; i++) 
   { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
      {
         IsNumber = false;
      }
   }
   return IsNumber;
};
   

function editAnnouncementBox(newValue)
{
	createRequest();
	var url="editAnnounce.php?text="+escape(newValue);
	request.open("GET", url, true);
	request.onreadystatechange = updateAnnouncementBox;
	request.send(null);
};

function updateAnnouncementBox()
{
	if (request.readyState == 4)
	{
		var response = request.responseText;
		
		if (response != "") //error
		{
			alert(response);
		}
		else //success
		{
			//nothing
		}
	}
};

function refreshNews()
{
	removeAllNewsItems();
	displayNewsItems();	
};

function getUserInfo()
{
	
	var id = document.getElementById("ww_user_select").value;
	
	if (id != 0)
	{
		createRequest();
		var url="getUserInfo.php?id="+escape(id);
		request.open("GET", url, true);
		request.onreadystatechange = updateUserInfo;
		request.send(null);
	}
	else
	{
		clearContactForm();
	}
};

function updateUserInfo()
{
	if (request.readyState == 4)
	{
		var response = request.responseText;
		var aInfo = response.split("|");
		
		if (!aInfo.length>1)
		{
			//error
			alert(response);
		}
		else
		{
			//paste info into boxes
			document.getElementById("ww_name").value= aInfo[1] + " " + aInfo[0];
			document.getElementById("ww_email").value= aInfo[2];
			document.getElementById("ww_phext").value= aInfo[3];
			document.getElementById("ww_area").value= aInfo[4];
			document.getElementById("ww_role").value= aInfo[5];
			document.getElementById("ww_image").value= aInfo[6];
			
			//pic
			var img = document.getElementById("ww_form_imgBox");
			var newImg = img.cloneNode(false); // no child nodes;
			img.parentNode.replaceChild(newImg,img);
			
			var i = document.createElement("IMG");
			i.style.height="100px";
			i.style.width="80px";
			i.src="images/" + aInfo[6];
			
			newImg.appendChild(i);
			
		}
	}
	
};

function clearContactForm()
{
	//clear all
	document.getElementById("ww_name").value = "";
	document.getElementById("ww_email").value = "";
	document.getElementById("ww_phext").value = "";
	document.getElementById("ww_area").value = "";
	document.getElementById("ww_role").value = "";
	document.getElementById("ww_user_select").value = "0";
	
	//pic
	var img = document.getElementById("ww_form_imgBox");
	var newImg = img.cloneNode(false); // no child nodes;
	img.parentNode.replaceChild(newImg,img);
};

function addContact()
{
	var id = document.getElementById("ww_user_select").value;
	
	if (id == 0) //continue
	{
		
		var error = "";
		
		var name = document.getElementById("ww_name").value;
		var email = document.getElementById("ww_email").value;
		var ph = document.getElementById("ww_phext").value;
		var area = document.getElementById("ww_area").value;
		var role = document.getElementById("ww_role").value;
		var image = document.getElementById("ww_image").value;
		
		var illegalChars= /[\(\)\<\>\;\:\\\"\[\]]/
		var emailChars = /[\@\.]/
		
		//check information - name
		if (name.match(illegalChars))
		{
			error += "Name contains illegal characters \r\n";
		}
		if (name == "")
		{
			error += "Name field empty \r\n";
		}
		if (! (name.match(" ")) )
		{
			error += "Please enter the name in the format: fname lname \r\n";
		}
		else
		{
			var loc = name.lastIndexOf(' ');
			var fname = name.substring(0,loc);
			var lname = name.substring(loc + 1, name.length);
		}
		//check information - email
		if (email.match(illegalChars))
		{
			error += "E-mail contains illegal characters \r\n";
		}
		if (! (email.match(emailChars)) )
		{
			error += "E-mail is invalid \r\n";
		}
		if (email == "")
		{
			error += "E-mail field empty \r\n";
		}
		//check information - phone extension
		if ( !(IsNumeric(ph)) )
		{
			error += "Phone Extension is not numeric \r\n";
		}
		if (ph.match(illegalChars))
		{
			error += "Phone Extension contains illegal chars \r\n";
		}
		if (ph == "")
		{
			error += "Phone Extension is empty \r\n";
		}
		//check information area
		if (area.match(illegalChars))
		{
			error += "Area contains illegal chars \r\n";
		}
		if (area == "")
		{
			error += "Area is empty \r\n";
		}
		//check information role
		if (role.match(illegalChars))
		{
			error += "Role contains illegal chars \r\n";
		}
		if (role == "")
		{
			error += "Role is empty \r\n";
		}
		if (image.match(illegalChars))
		{
			error += "Image contains illegal characters";
		}
		
		if (error == "") //all went well
		{
			createRequest();
			var url="addContact.php?lname=" + escape(lname) + "&fname=" + escape(fname) + "&email=" + escape(email) +
						"&ph=" + escape(ph) + "&area=" + escape(area) + "&role=" + escape(role) + "&image=" + escape(image);
			request.open("GET", url, true);
			request.onreadystatechange = updateAddContact;
			request.send(null);
		}
	}
	else //error
	{
		alert("To add a new user, you must select 'UNION STAFF' on the listbox.");
	}
};

function updateAddContact()
{
	if (request.readyState == 4)
	{
		var response = request.responseText;
		
		if (response == "") //all went well
		{
			window.location.reload(true);
		}
		else
		{
			alert(response);
		}
	}
};

function editContact()
{
	var id = document.getElementById("ww_user_select").value;
	
	if (id != 0)
	{
		var error = "";
		
		var name = document.getElementById("ww_name").value;
		var email = document.getElementById("ww_email").value;
		var ph = document.getElementById("ww_phext").value;
		var area = document.getElementById("ww_area").value;
		var role = document.getElementById("ww_role").value;
		var image = document.getElementById("ww_image").value;
		
		var illegalChars= /[\(\)\<\>\;\:\\\"\[\]]/
		var emailChars = /[\@\.]/
		
		//check information - name
		if (name.match(illegalChars))
		{
			error += "Name contains illegal characters \r\n";
		}
		if (name == "")
		{
			error += "Name field empty \r\n";
		}
		if (! (name.match(" ")) )
		{
			error += "Please enter the name in the format: fname lname \r\n";
		}
		else
		{
			var loc = name.lastIndexOf(' ');
			var fname = name.substring(0,loc);
			var lname = name.substring(loc + 1, name.length);
		}
		//check information - email
		if (email.match(illegalChars))
		{
			error += "E-mail contains illegal characters \r\n";
		}
		if (! (email.match(emailChars)) )
		{
			error += "E-mail is invalid \r\n";
		}
		if (email == "")
		{
			error += "E-mail field empty \r\n";
		}
		//check information - phone extension
		if ( !(IsNumeric(ph)) )
		{
			error += "Phone Extension is not numeric \r\n";
		}
		if (ph.match(illegalChars))
		{
			error += "Phone Extension contains illegal chars \r\n";
		}
		if (ph == "")
		{
			error += "Phone Extension is empty \r\n";
		}
		//check information area
		if (area.match(illegalChars))
		{
			error += "Area contains illegal chars \r\n";
		}
		if (area == "")
		{
			error += "Area is empty \r\n";
		}
		//check information role
		if (role.match(illegalChars))
		{
			error += "Role contains illegal chars \r\n";
		}
		if (role == "")
		{
			error += "Role is empty \r\n";
		}
		
		if (error == "") //all went well
		{
			createRequest();
			var url="editContact.php?id=" + escape(id) + "&lname=" + escape(lname) + "&fname=" + escape(fname) + "&email=" + escape(email) +
						"&ph=" + escape(ph) + "&area=" + escape(area) + "&role=" + escape(role);
			request.open("GET", url, true);
			request.onreadystatechange = updateEditContact;
			request.send(null);
		}
	}
	else
	{
		alert("You must select someone in order to edit their information");
	}
};

function updateEditContact()
{
	if (request.readyState == 4)
	{
		var response = request.responseText;
		
		if (response == "") //all went well
		{
			window.location.reload(true);
		}
		else
		{
			alert(response);
		}
	}
};

function deleteContact()
{
	var id = document.getElementById("ww_user_select").value;
	
	if (id != 0 ) //good
	{
		var c = confirm("Are you sure you wish to delete this person?");
		
		if (c)
		{
			createRequest();
			var url="deleteContact.php?id="+escape(id);
			request.open("GET", url, true);
			request.onreadystatechange = updateDeleteContact;
			request.send(null);
		}
	}
	else
	{
		alert("Please select someone to delete");
	}
};

function updateDeleteContact()
{
	if (request.readyState == 4)
	{
		var response = request.responseText;
		
		if (response == "") //all went well
		{
			window.location.reload(true);
		}
		else
		{
			alert(response);
		}
	}
};

function submitForm()
{
	document.adminForm.submit();
};

function insertRecords()
{
	var Title = document.getElementById("title").value;
	var FileName = document.getElementById("filename").value;
	var UrlName = document.getElementById("urlname").value;
	var Location = document.getElementById("location").value;
	
	  if((Title == "") || (Location == ""))
	  {
			alert("ERROR in insert");
			var mainDiv = document.getElementById("number2");
			var replaceMessage = "INSERT will not be performed if at least the title or location EMPTY!!!";
			replaceText(mainDiv, replaceMessage);
	  }
	  else
	  {
			var url = "insert.php?title="+escape(Title)+"&filename="+escape(FileName)+"&urlname="+escape(UrlName)
								  +"&location="+escape(Location);
			
			var confirm_button = confirm("Really Insert?");
			
			if(confirm_button == true)
			{
				createRequest();
				if(request)
				{
					request.open("GET", url, true);
					request.onreadystatechange = showInsert;
					request.send(null);
				}
			}
			else
			{
				alert("Error in retrieving values");
			}
	  }		
};

//Display the appropriate message to the user
function showInsert() 
{
  if (request.readyState == 4) 
  {
    if (request.status == 200) 
	{
      var response = request.responseText;

      // Locate form on page
      var mainDiv = document.getElementById("number2");
      var replaceMessage = response;
	  replaceText(mainDiv, replaceMessage);
		
	  var Title = "";
	  document.getElementById("title").value = Title;
				
	  var FileName = "";
	  document.getElementById("filename").value = FileName;
				
	  var UrlName = "";
	  document.getElementById("urlname").value = UrlName;
				
	  var Location = "";
	  document.getElementById("location").value = Location;
    } 
	else 
	{
		alert("Unsuccessful");
	}
  }
};


//First, retrieve values from this form, then pass them on to the update.php script for processing...
//Adequate error checking against the passing of empty values, especially (well, only) in the title and location fields...
function updateRecords(ID)
{
	var Title = document.getElementById("title").value;
	var FileName = document.getElementById("filename").value;
	var UrlName = document.getElementById("urlname").value;
	var Location = document.getElementById("location").value;
	
	  if((Title == "") || (Location == ""))
	  {
			alert("Error In Update");
			var mainDiv = document.getElementById("number2");
			var replaceMessage = "Update will not be performed if at least the title or location EMPTY!!!";
			replaceText(mainDiv, replaceMessage);
	  }
	  else
	  {
			var url = "update.php?id="+escape(ID)+"&title="+escape(Title)+"&filename="+escape(FileName)+"&urlname="+escape(UrlName)
								  +"&location="+escape(Location);
			
			var confirm_button = confirm("Really Update?");
			
			if(confirm_button == true)
			{
				createRequest();
				if(request)
				{
					request.open("GET", url, true);
					request.onreadystatechange = showMessage;
					request.send(null);
				}
			}
			else
			{
				alert("Error in retrieving values");
			}
	  }		
};

//Display the appropriate message to the user
function showMessage() 
{
  if (request.readyState == 4) 
  {
    if (request.status == 200) 
	{
      var response = request.responseText;
	  
      // Locate form on page
      var mainDiv = document.getElementById("number2");
      var replaceMessage = response;
	  replaceText(mainDiv, replaceMessage);
		
	  var Title = "";
	  document.getElementById("title").value = Title;
				
	  var FileName = "";
	  document.getElementById("filename").value = FileName;
				
	  var UrlName = "";
	  document.getElementById("urlname").value = UrlName;
				
	  var Location = "";
	  document.getElementById("location").value = Location;
    } 
	else 
	{
		alert("Unsuccessful");
	}
	
  }
};

//First, retrieve value from the form, then pas them on to the update.php script for processing...
//Adequate error checking against the passing of empty values...
function deleteRecords(ID)
{
	var Title = document.getElementById("title").value;
	var FileName = document.getElementById("filename").value;
	var UrlName = document.getElementById("urlname").value;
	var Location = document.getElementById("location").value;
	
	  if((Title == "") || (Location == ""))
	  {
			alert("Please ensure that the selected values are valid!");
			var mainDiv = document.getElementById("number2");
			var replaceMessage = "DELETE will not be performed if values are not selected first!!!";
			replaceText(mainDiv, replaceMessage);
	  }
	  else
	  {
			var url = "delete.php?id="+escape(ID)+"&title="+escape(Title)+"&filename="+escape(FileName)+"&urlname="+escape(UrlName)
								  +"&location="+escape(Location);
			
			var confirm_button = confirm("Really Delete?");
			
			if(confirm_button == true)
			{
				createRequest();
				if(request)
				{
					request.open("GET", url, true);
					request.onreadystatechange = showDelete;
					request.send(null);
				}
			}
			else
			{
				alert("Error in delete");
			}
	  }
};

function showDelete() 
{
  if (request.readyState == 4) 
  {
    if (request.status == 200) 
	{
      var response = request.responseText;
	  
      // Locate form on page
      var mainDiv = document.getElementById("number2");
      var replaceMessage = response;
	  replaceText(mainDiv, replaceMessage);
		
	  var Title = "";
	  document.getElementById("title").value = Title;
				
	  var FileName = "";
	  document.getElementById("filename").value = FileName;
				
	  var UrlName = "";
	  document.getElementById("urlname").value = UrlName;
				
	  var Location = "";
	  document.getElementById("location").value = Location;
    } 
	else 
	{
		alert("Delete was Unsuccessful");
	}
	
  }
};