var xmlHttp;
var calEntryMonth = "";
var calEntryYear = "";

function getPressReleases()
{
	simpleGet('prFunc.php','get',displayPRStateChanged,null);
}

function editPressRelease(id) {
	simpleGet('prFunc.php','edit',displayPREdit,{"id": id});
}

function newPressRelease()
{
	xmlHttp = GetXmlHttpObject();
	if( xmlHttp == null ) {
		alert("Browser does not support HTTP Request");
		return;
	}
	var poststr = "pr_new_date_entry=" + encodeURIComponent( document.getElementById("pr_new_date_entry").value ) +
								"&pr_new_title_entry=" + encodeURIComponent( document.getElementById("pr_new_title_entry").value ) +
								"&pr_new_content_entry=" + encodeURIComponent( document.getElementById("pr_new_content_entry").value ) +
								"&action=new";

	xmlHttp.onreadystatechange = displayNewPR;
	xmlHttp.open("POST","include/prFunc.php",true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", poststr.length);
	xmlHttp.setRequestHeader("Connection", "close");
	xmlHttp.send(poststr);
}

function deletePressRelease(id)
{
	var answer = confirm("Really delete this press release?");
	if( answer ) {
		simpleGet('prFunc.php','del',displayNewPR,{"id": id});
	}
}

function viewPressRelease(id)
{
	simpleGet('prFunc.php','view',displayPR,{"id": id});
}

function viewJobListing(id)
{
  simpleGet('jlFunc.php','view',displayJL,{"id": id});
}

function getJobListings()
{
	simpleGet('jlFunc.php','get',displayJobListings,null);
}

function editJobListing(id) {
	simpleGet('jlFunc.php','edit',displayJLEdit,{"id": id});
}


function handleJLCategory(selection)
{
	if( selection == "new" ) {
		document.getElementById("newJCCat").style.display = "block";
	}
}

function addJobCategory()
{
	var val = document.getElementById("jl_new_catname_entry").value;

	if( val != "" && val != null ) {
		simpleGet('jlFunc.php','addcat',processAddCategory,{"cat": encodeURIComponent(val)});
	}
	else {
		alert("Must input a new category name");
	}
}

function deleteJobCategory(id) {
	var answer = confirm("Really delete this job category?");
	if( answer ) {
		simpleGet('jlFunc.php','delcat',processAddJobListing,{"id": id});
	}
}

function newJobListing()
{
	var cat = document.getElementById("jl_new_category_entry").value;
	var val = document.getElementById("jl_new_title_entry").value;
  var pdate = document.getElementById("jl_new_date_entry").value;
  var desc = document.getElementById("jl_new_content_entry").value;

	if( cat == "" || cat == null || cat == "select" || cat == "new" ) {
		alert("Must select a valid job category");
		return;
	}

  if( desc == null ) {
    desc = "";
  }

	if( val != "" && val != null ) {
    if( pdate != "" && pdate != null ) {
      simpleGet('jlFunc.php','new',processAddJobListing,{"title": encodeURIComponent(val),"post_date": encodeURIComponent(pdate),"cat": encodeURIComponent(cat),"desc": encodeURIComponent(desc)});
    }
    else {
      alert("Must input a post date\npdate: " + pdate + "\njl_new_date_entry: " + document.getElementById("jl_new_date_entry").value);
    }
	}
	else {
		alert("Must input a new job title");
	}
}

function deleteJobListing(id) {
	var answer = confirm("Really delete this job listing?");
	if( answer ) {
		simpleGet('jlFunc.php','del',processAddJobListing,{"id": id});
	}
}

function getCalendarEvents()
{
	simpleGet('calFunc.php','get',displayCalendarEvents,null);
}

function getEventsFor(mon,year)
{
	calEntryMonth = null;
	calEntryYear = null;

	simpleGet('calFunc.php','getfor',displayCalendarEvents,{"mon": mon,"year": year});
}

function getEventsForCategory(mon,year,category)
{
	calEntryMonth = null;
	calEntryYear = null;

	simpleGet('calFunc.php','getforcat',displayCalendarEvents,{"mon": mon,"year": year,"cat": category});
}

function viewCalendarEvent(id,category)
{
	var parseVars = new Object();
	parseVars.id = id;
	if( category != "" ) {
		parseVars.cat = encodeURIComponent(category);
	}

	simpleGet('calFunc.php','view',displayCalendarEvent,parseVars);
}

function deleteCalendarEvent(id,eDate) {
	var answer = confirm("Really delete this event?");
	if( answer ) {
		var dateArr = eDate.split('-');
		calEntryMonth = dateArr[1];
		calEntryYear = dateArr[0];

		simpleGet('calFunc.php','del',displayCalendarEventsFor,{"id": id});
	}
}

function editCalendarEvent(id) {
	simpleGet('calFunc.php','edit',displayCalendarEdit,{"id": id});
}

function newCalendarCategory()
{
	var val = document.getElementById("cat_new_title").value;

	if( val != "" && val != null ) {
		simpleGet('calFunc.php','addcat',processAddCalCategory,{"cat": encodeURIComponent(val)});
	}
	else {
		alert("Must input a new category name");
	}
}

/// state change functions

function displayPRStateChanged()
{
	if( xmlHttp.readyState == 4 ) {
		document.getElementById("contentTitleArea").innerHTML = '<img id="contentTitle" src="' + defaultTitleSrc + '"/>';
		document.getElementById("prArea").innerHTML = xmlHttp.responseText;
	}
}

function displayNewPR()
{
	simpleXMLProcess(getPressReleases);
}

function displayPREdit()
{
	if( xmlHttp.readyState == 4 || xmlHttp.readyState == "complete" ) {
    var xmlDoc = xmlHttp.responseXML;
    var code = xmlDoc.getElementsByTagName("code")[0].childNodes[0].nodeValue;
    var text = xmlDoc.getElementsByTagName("text")[0].childNodes[0].nodeValue;
    var id = xmlDoc.getElementsByTagName("id")[0].childNodes[0].nodeValue;
    var date = xmlDoc.getElementsByTagName("date")[0].childNodes[0].nodeValue;
    var title = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
    var content = xmlDoc.getElementsByTagName("content")[0].childNodes[0].nodeValue;

		if(code != 0 ) {
			alert(text);
		}
    else {
      document.getElementById("pr_edit_id").value = id;
      document.getElementById("pr_edit_date_entry").value = date;
      document.getElementById("pr_edit_title_entry").value = title;
      document.getElementById("pr_edit_content_entry").value = content;
      myEditEditor.setEditorHTML(content);
      document.getElementById("prEditForm").style.display = "block";
      document.getElementById("prForm").style.display = "none";
    }
	}
}

function displayPR()
{
	if( xmlHttp.readyState == 4 || xmlHttp.readyState == "complete" ) {
		var xmlDoc = xmlHttp.responseXML;
		var code = xmlDoc.getElementsByTagName("code")[0].childNodes[0].nodeValue;
		var text = xmlDoc.getElementsByTagName("text")[0].childNodes[0].nodeValue;
		var date = xmlDoc.getElementsByTagName("date")[0].childNodes[0].nodeValue;
		var title = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
		var contentAr = xmlDoc.getElementsByTagName("content");
		var content = "";

		for(i = 0;i < contentAr.length;i++) {
			content = content + "<p>" + contentAr[i].childNodes[0].nodeValue + "</p>";
		}

		content = content + "<p><span id='pr_return' onclick='getPressReleases()'>[Return to List]</span></p>";

		if(code != 0 ) {
			alert(text);
		}
		else {
			document.getElementById("contentTitleArea").innerHTML = "<span style='font-size: 12pt; font-weight: bold;'>" + title + " - " + date + "</span>";
			document.getElementById("prArea").innerHTML = content;
		}
	}
}

function displayJL()  // copied from displayPR...
{
	if( xmlHttp.readyState == 4 || xmlHttp.readyState == "complete" ) {
		var xmlDoc = xmlHttp.responseXML;
		var code = xmlDoc.getElementsByTagName("code")[0].childNodes[0].nodeValue;
		var text = xmlDoc.getElementsByTagName("text")[0].childNodes[0].nodeValue;
		var date = xmlDoc.getElementsByTagName("date")[0].childNodes[0].nodeValue;
		var title = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
		var contentAr = xmlDoc.getElementsByTagName("content");
		var content = "";

		for(i = 0;i < contentAr.length;i++) {
			content = content + "<p>" + contentAr[i].childNodes[0].nodeValue + "</p>";
		}

		content = content + "<p><span id='jl_return' onclick='getJobListings()'>[Return to List]</span></p>";

		if(code != 0 ) {
			alert(text);
		}
		else {
			document.getElementById("contentTitleArea").innerHTML = "<span style='font-size: 12pt; font-weight: bold;'>" + title + " - " + date + "</span>";
			document.getElementById("jlArea").innerHTML = content;
		}
	}
}

function displayJobListings()
{
	if( xmlHttp.readyState == 4 ) {
		document.getElementById("contentTitleArea").innerHTML = '<img id="contentTitle" src="' + defaultTitleSrc + '"/>';
		//document.getElementById("contentTitle").src = defaultTitleSrc;
		document.getElementById("jlArea").innerHTML = xmlHttp.responseText;
	}
}

function displayJLEdit()
{
	if( xmlHttp.readyState == 4 || xmlHttp.readyState == "complete" ) {
    var xmlDoc = xmlHttp.responseXML;
    var code = xmlDoc.getElementsByTagName("code")[0].childNodes[0].nodeValue;
    var text = xmlDoc.getElementsByTagName("text")[0].childNodes[0].nodeValue;
    var id = xmlDoc.getElementsByTagName("id")[0].childNodes[0].nodeValue;
    var pdate = xmlDoc.getElementsByTagName("date")[0].childNodes[0].nodeValue;
    var title = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
    var content = "";
    if( xmlDoc.getElementsByTagName("content")[0].childNodes[0] != undefined ) {
      content = xmlDoc.getElementsByTagName("content")[0].childNodes[0].nodeValue;
    }

		if(code != 0 ) {
			alert(text);
		}
    else {
      document.getElementById("jl_edit_id").value = id;
      document.getElementById("jl_edit_date_entry").value = pdate;
      document.getElementById("jl_edit_title_entry").value = title;
      document.getElementById("jl_edit_content_entry").value = content;
      myEditEditor.setEditorHTML(content);
      document.getElementById("jlEditForm").style.display = "block";
      document.getElementById("jl_form").style.display = "none";
      location.href = "#forms_anchor";
    }
	}
}


function processAddCategory()
{
	simpleXMLProcess(getJobListings);
}

function processAddJobListing()
{
	simpleXMLProcess(getJobListings);
}

function displayCalendarEvents()
{
	if( xmlHttp.readyState == 4 ) {
		document.getElementById("calArea").innerHTML = xmlHttp.responseText;
		document.getElementById("calForm").style.display = "block";
	}
}

function displayCalendarEventsFor()
{
	if( xmlHttp.readyState == 4 ) {
		if( calEntryMonth != null && calEntryYear != null
			&& calEntryMonth > 0 && calEntryMonth <= 12 ) {
			getEventsFor(calEntryMonth,calEntryYear);
		}
	}
}

function displayCalendarEvent()
{
	if( xmlHttp.readyState == 4 || xmlHttp.readyState == "complete" ) {
		var xmlDoc = xmlHttp.responseXML;
		var code = xmlDoc.getElementsByTagName("code")[0].childNodes[0].nodeValue;
		var text = xmlDoc.getElementsByTagName("text")[0].childNodes[0].nodeValue;

		if(code != 0 ) {
			alert(text);
			return;
		}

		var monArr = new Array("January","February","March","April","May",
			"June","July","August","September","October","November","December");

		var d = new Date();

		var date = xmlDoc.getElementsByTagName("date")[0].childNodes[0].nodeValue;
		dateArr = date.split('-');

		d.setFullYear(dateArr[0]);
		d.setMonth(dateArr[1]-1);
		d.setDate(dateArr[2]);

		var title = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
		var category = decodeURI(xmlDoc.getElementsByTagName("category")[0].childNodes[0].nodeValue);
		var contentAr = xmlDoc.getElementsByTagName("content");
		var content = "<div style='font-size: 11pt; font-weight: bold;'>" + title + " - ";
		content = content + monArr[d.getMonth()] + " " + d.getDate() + ", " + d.getFullYear() + "</div><br />\n";

		for(i = 0;i < contentAr.length;i++) {
			content = content + "<p>" + contentAr[i].childNodes[0].nodeValue + "</p>";
		}


		content = content + "<p><span id='cal_return' onclick='getEventsForCategory";

		content = content + "("	+ stripZeros(dateArr[1]) + "," + stripZeros(dateArr[0] + ",\"" + category + "\"");

		content = content + ")'>[Return to List]</span></p>";

//		alert(content);
		document.getElementById("calArea").innerHTML = content;
	}
}

function processAddCalCategory()
{
	simpleXMLProcess(getCalendarEvents);
}

function displayCalendarEdit()
{
	if( xmlHttp.readyState == 4 ) {
		document.getElementById("calArea").innerHTML = xmlHttp.responseText;
		document.getElementById("calForm").style.display = "none";
	}
}

/// utility functions /////////////////////////////////////////////////////

function GetXmlHttpObject()
{
	var xmlHttp=null;

	try {
		// Firefox, Opera 8, Safari
		xmlHttp = new XMLHttpRequest();
	} catch(e) {
		// IE
		try {
			xmlHttp = new ActiveXObject("Msxml12.XMLHTTP");
		} catch(e) {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

	return xmlHttp;
}

function stripZeros(inputStr) {
	var result = inputStr
	while (result.substring(0,1) == "0") {
		result = result.substring(1,result.length)
	}
	return result
}

function simpleGet(phpFile,submitAction,stateChangeFunc,passVars) {
	xmlHttp = GetXmlHttpObject();
	if( xmlHttp == null ) {
		alert("Browser does not support HTTP Request");
		return;
	}

	var url = "include/" + phpFile + "?action=" + submitAction;
	if( passVars != null ) {
		for( var pVar in passVars ) {
			url += "&" + pVar + "=" + passVars[pVar];
		}
	}
	url += "&sid=" + Math.random();

	xmlHttp.onreadystatechange = stateChangeFunc;
	xmlHttp.open("GET",url,"true");
	xmlHttp.send(null);
}

function simpleXMLProcess(procFunc) {
	if( xmlHttp.readyState == 4 || xmlHttp.readyState == "complete" ) {
		var xmlDoc = xmlHttp.responseXML;

		var code = xmlDoc.getElementsByTagName("code")[0].childNodes[0].nodeValue;
		var text = xmlDoc.getElementsByTagName("text")[0].childNodes[0].nodeValue;

		if(code != 0 ) {
			alert(text);
		}
		else {
			procFunc();
		}
	}
}

// from http://www.tek-tips.com/faqs.cfm?fid=4862
// this has been added due to a conflict with employment.php and the newsletter subscription
// code in include/footer.php which both called window.onload.
// placing a copy of this function directly in include/footer as well in case dbhooks not included
function addOnloadEvent(fnc){
  if ( typeof window.addEventListener != "undefined" )
    window.addEventListener( "load", fnc, false );
  else if ( typeof window.attachEvent != "undefined" ) {
    window.attachEvent( "onload", fnc );
  }
  else {
    if ( window.onload != null ) {
      var oldOnload = window.onload;
      window.onload = function ( e ) {
        oldOnload( e );
        window[fnc]();
      };
    }
    else
      window.onload = fnc;
  }
}
