function createXMLHttpRequest() {
    if (typeof XMLHttpRequest != "undefined") {
        return new XMLHttpRequest();
    } else if (typeof ActiveXObject != "undefined") {
        return new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        throw new Error("XMLHttpRequest not supported");
    }
}

function showCompletedWorks(cworkTitle)
{
	var pageURL = "lib/displayCompletedWorks.php?title="+cworkTitle;
	grabCompletedWorksDetail(pageURL);
}

function grabCompletedWorksDetail(file) 
{
	var request = createXMLHttpRequest();
	request.onreadystatechange = function() {parseCompletedWorksResponse(request)};
	request.open("GET",file,true);
	request.send(null);
}

function parseCompletedWorksResponse(request) 
{
	if(request.readyState == 4)
	{
		if(request.status == 200 || request.status == 304)
		{
			var results = document.getElementById("divCompletedWorksDetail");
			results.innerHTML = request.responseText;
			//fade the div content to get user attention
			colorFade('divTitle','text','cf7e59','000000',100,20);
			colorFade('divSynopsis','text','cf7e59','000000',100,20);
		} 
		else 
		{
			var results = document.getElementById("divCompletedWorksDetail");
			results.innerHTML = "<h2>Error -- Could not retrieve content</h2>";
		}
	}
}


function showNews(beginDate,rowCount)
{
	var pageURL = "lib/displayNews.php?postDate="+beginDate+"&count="+rowCount;
	grabNewsDetail(pageURL);
}

function grabNewsDetail(file) 
{
	var request = createXMLHttpRequest();
	request.onreadystatechange = function() {parseNewsResponse(request)};
	request.open("GET",file,true);
	request.send(null);
}

function parseNewsResponse(request) 
{
	if(request.readyState == 4)
	{
		if(request.status == 200 || request.status == 304)
		{
			var results = document.getElementById("divLatestNews");
			results.innerHTML = request.responseText;
		} 
		else 
		{
			var results = document.getElementById("divLatestNews");
			results.innerHTML = "<h2>Error -- Could not retrieve news content</h2>";
		}
	}
}

function showNewsList()
{
	var pageURL = "lib/newsList.php";
	grabNewsList(pageURL);
}

function grabNewsList(file) 
{
	var request = createXMLHttpRequest();
	request.onreadystatechange = function() {parseNewsListResponse(request)};
	request.open("GET",file,true);
	request.send(null);
}

function parseNewsListResponse(request) 
{
	if(request.readyState == 4)
	{
		if(request.status == 200 || request.status == 304)
		{
			var results = document.getElementById("divNewsList");
			results.innerHTML = request.responseText;
		} 
		else 
		{
			var results = document.getElementById("divNewsList");
			results.innerHTML = "<h2>Error -- Could not retrieve news list</h2>";
		}
	}
}

function editNewsItem(divID)
{
  var divNewsID = document.getElementById('divnewsID_'+divID);
  var divPostDate = document.getElementById('divPostDate_'+divID);
  var divTitle = document.getElementById('divTitle_'+divID);
  var divText = document.getElementById('divText_'+divID);
  var divPhotoURL = document.getElementById('divPhotoURL_'+divID);
  var divPicX = document.getElementById('divPicX_'+divID);
  var divPicY = document.getElementById('divPicY_'+divID);
  var divActive = document.getElementById('divActive_'+divID);
  var divresult = document.getElementById('postResult');
  

  var hidNewsID = document.getElementById('hidNewsID');
  var txtTitle = document.getElementById('txtTitle');
  var txtPhotoURL = document.getElementById('txtPhotoURL');
  var txtPhotoX = document.getElementById('txtPhotoX');
  var txtPhotoY = document.getElementById('txtPhotoY');
  var chkActive = document.getElementById('chkActive');
  var txtContent = document.getElementById('txtContent');
  divresult.innerHTML = "";
  hidNewsID.value = divNewsID.innerHTML;
  txtTitle.value = divTitle.innerHTML;
  txtPhotoURL.value = divPhotoURL.innerHTML;
  txtPhotoX.value = divPicX.innerHTML;
  txtPhotoY.value = divPicY.innerHTML;
  txtContent.value = divText.innerHTML;
  if(divActive.innerHTML == "1")
    {
      chkActive.checked = true;
    }
  else
    {
      chkActive.checked = false;
    }
}

function showMessageList()
{
	var pageURL = "lib/visitorMessageList.php";
	grabMessageList(pageURL);
}

function grabMessageList(file) 
{
	var request = createXMLHttpRequest();
	request.onreadystatechange = function() {parseMessageListResponse(request)};
	request.open("GET",file,true);
	request.send(null);
}

function parseMessageListResponse(request) 
{
	if(request.readyState == 4)
	{
		if(request.status == 200 || request.status == 304)
		{
			var results = document.getElementById("divMessageList");
			results.innerHTML = request.responseText;
		} 
		else 
		{
			var results = document.getElementById("divMessageList");
			results.innerHTML = "<h2>Error -- Could not retrieve visitor message list</h2>";
		}
	}
}

function displayFullMessage(divShortID,divLongID,urlObj)
{
	var divLongMessage = document.getElementById(divLongID);
	var divShortMessage = document.getElementById(divShortID);
	if(divLongMessage.style.display == "none")
	{
		divLongMessage.style.display = "block";
		divShortMessage.style.display = "none";
		urlObj.innerHTML = "Hide full message";
	}
	else
	{
		divLongMessage.style.display = "none";
		divShortMessage.style.display = "block";
		urlObj.innerHTML = "Show full message";
	}
}

function displayZoomIcon(imageSRC)
{
	var imageLocation = imageSRC.src.replace("_thumb.png","_thumb_mouseover.png");
	imageSRC.src = imageLocation; 
	imageSRC.style.cursor = "pointer";
}

function hideZoomIcon(imageSRC)
{
	var imageLocation = imageSRC.src.replace("_thumb_mouseover.png","_thumb.png");
	imageSRC.src = imageLocation;
	imageSRC.style.cursor = "default";
}

function getElementDimensions(objElement)
{
  var arrayObjDimensions = new Array(4);
  arrayObjDimensions[0] = objElement.offsetLeft;
  arrayObjDimensions[1] = objElement.offsetTop
  arrayObjDimensions[2] = objElement.offsetWidth
  arrayObjDimensions[3] = objElement.offsetHeight
  return arrayObjDimensions;
}

function browserType()
{
	var browser='';
	if (navigator.appName.indexOf('Microsoft') != -1)
	{
		return 'IE';
	}
	else if (navigator.appName.indexOf('Netscape') != -1)
	{
		return 'NETSCAPE';
	}
	else return 'IE';
}

function showShadowDIV(clientBrowserType,divZindex)
{
	var shadowDIV = document.getElementById("divShadowDiv");
	//only create the shadow DIV if it does not yet exist;
	if(shadowDIV == null)
	{
		var shadowDIV = document.createElement('div');
		shadowDIV.setAttribute("id","divShadowDiv");
		//add the DIV to the DOM
		document.body.appendChild(shadowDIV);
	}
	shadowDIV.style.display = "block";
	shadowDIV.style.left = 0;
	shadowDIV.style.top = 0;
	shadowDIV.style.width = "100%";
	shadowDIV.style.height = "100%";
	shadowDIV.style.background ="#CCCCCC";
	shadowDIV.style.position = "absolute";
	shadowDIV.style.zIndex= divZindex;
	//set the opaque value depending on the type of browser
	if(clientBrowserType == "IE")
	{	
		shadowDIV.style.filter = "alpha(opacity=45)";
	}
	else
	{
		shadowDIV.style.opacity = "0.45";
	}
}

function hideZoomedImage(objImage)
{
	document.body.removeChild(objImage);
	document.getElementById("divShadowDiv").style.display = "none";
}

function createImageElement(imgElementID)
{
	var imgEl = document.getElementById(imgElementID);
	//only create the shadow DIV if it does not yet exist;
	if(imgEl == null)
	{
		var imgEl = document.createElement('img');
		imgEl.setAttribute("id",imgElementID);
		//add the DIV to the DOM
		document.body.appendChild(imgEl);
	}
	else
	{
		document.body.removeChild(imgEl);
		var imgEl = document.createElement('img');
		imgEl.setAttribute("id",imgElementID);
		//add the DIV to the DOM
		document.body.appendChild(imgEl);
	}
	imgEl.style.border = "4px solid #7A6649";
	imgEl.onclick = function(){hideZoomedImage(this)};
	imgEl.setAttribute("title","Click to Close");
	return imgEl;
}

function showZoomImage(imageName,imgElementID)
{
	var myBrowser = browserType();
	showShadowDIV(myBrowser,1);
	var imageToDisplay = createImageElement(imgElementID);
	imageToDisplay.setAttribute("src",imageName);
	imageToDisplay.style.position = "absolute";
	imageToDisplay.style.display="block";
	imageToDisplay.style.zIndex = "2";
	//cannot get dimensions of image until it is displayed on page
	//workaround may be to set visibility=0 then get dimensions, position, and set visibility=1
	var dimensionsOfPicture = getElementDimensions(imageToDisplay);
	//set the dimensions to 95% of the image; this works with both 4:3 & 16:9 monitors
	var aspectRatio = dimensionsOfPicture[2]/dimensionsOfPicture[3];
	//usually the page height is smaller than width; so use this as the base for percentage
	if(myBrowser == "IE")
	{
		var newHeight = (document.body.offsetHeight * 0.95);
		var newWidth = (newHeight * aspectRatio);
	}
	else
	{
		var newHeight = (window.innerHeight * 0.95);
		var newWidth = (newHeight * aspectRatio);
	}
	imageToDisplay.style.width= newWidth;
	imageToDisplay.style.height= newHeight;
	if(myBrowser == "IE")
	{
		imageToDisplay.style.left = (document.body.offsetWidth/2) - (newWidth/2);
	    imageToDisplay.style.top = (document.body.offsetHeight/2) - (newHeight/2);	
	}
	else
	{
		imageToDisplay.style.left = (window.innerWidth/2) - (newWidth/2);
		imageToDisplay.style.top = (window.innerHeight/2) - (newHeight/2);
	}
}



function verifyContactUser()
{
	var myBrowser = browserType();
	//showShadowDIV(myBrowser,1);
	//unhide reCAPTCHA div
	var divReCaptcha = document.getElementById("divreCAPTCHA");
	if (divReCaptcha.style.display == "none")
	{
		divReCaptcha.style.display = "block";
	}
	divReCaptcha.style.zIndex = "2";
	//reposition DIV to absolute center
	var dimensionsOfDIV = getElementDimensions(divReCaptcha);
	if(myBrowser == "IE")
	{
		divReCaptcha.style.left = (document.body.offsetWidth/2) - (dimensionsOfDIV[2]/2);
		divReCaptcha.style.top = (document.body.offsetHeight/2) - (dimensionsOfDIV[3]/2);	
	}
	else
	{
		divReCaptcha.style.left = (window.innerWidth/2) - (dimensionsOfDIV[2]/2);
		divReCaptcha.style.top = (window.innerHeight/2) - (dimensionsOfDIV[3]/2);
	}
}
