function makeAjaxRequest(url,parameters,targetDiv) {
	var ox = zXmlHttp.createRequest();
	ox.open('get', url + parameters + "&ms=" + new Date().getTime(), true);
	
	var box = document.getElementById(targetDiv);
	ox.onreadystatechange = function() {
		if (ox.readyState > 0 && ox.readyState <4) {
			box.innerHTML = "<p class=\"ajax_message\">Just a moment... " +
				"Fetching data from server...</p>";	
		}
		if (ox.readyState == 4) {
			if (ox.status == 200) {
				box.innerHTML = ox.responseText;
			}
		}
	};
	ox.send(null);	
}


///////////////////////////////////////////////
///////////////////////////////////////////////


function submitAjaxForm(obj,url,targetDiv) {
  var getstr = "?";
  for (i=0; i<obj.childNodes.length; i++) {
     if (obj.childNodes[i].tagName == "input") {
		if (obj.childNodes[i].type == "text" || obj.childNodes[i].type == "hidden") {
		   getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
		}
		if (obj.childNodes[i].type == "checkbox") {
		   if (obj.childNodes[i].checked) {
			  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
		   } else {
			  getstr += obj.childNodes[i].name + "=&";
		   }
		}
		if (obj.childNodes[i].type == "radio") {
		   if (obj.childNodes[i].checked) {
			  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
		   }
		}
	 }   
	 if (obj.childNodes[i].tagName == "SELECT") {
		var sel = obj.childNodes[i];
		getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
	 }
	 if (obj.childNodes[i].tagName == "TEXTAREA") {
		 getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
	 }
	 
  }
  makeAjaxRequest(url,getstr,targetDiv);
}// Instantiate the "zXmlHttp" object to be used in opening Ajax connections

var zXml={useActiveX:(typeof ActiveXObject!="undefined"),useDom:document.implementation&&document.implementation.createDocument,useXmlHttp:(typeof XMLHttpRequest!="undefined")};zXml.ARR_XMLHTTP_VERS=["MSXML2.XmlHttp.6.0","MSXML2.XmlHttp.3.0"];zXml.ARR_DOM_VERS=["MSXML2.DOMDocument.6.0","MSXML2.DOMDocument.3.0"];function zXmlHttp(){}zXmlHttp.createRequest=function(){if(zXml.useXmlHttp){return new XMLHttpRequest();}else if(zXml.useActiveX){if(!zXml.XMLHTTP_VER){for(var i=0;i<zXml.ARR_XMLHTTP_VERS.length;i++){try{new ActiveXObject(zXml.ARR_XMLHTTP_VERS[i]);zXml.XMLHTTP_VER=zXml.ARR_XMLHTTP_VERS[i];break;}catch(oError){;}}}if(zXml.XMLHTTP_VER){return new ActiveXObject(zXml.XMLHTTP_VER);}else{throw new Error("Could not create XML HTTP Request.");}}else{throw new Error("Your browser doesn't support an XML HTTP Request.");}};zXmlHttp.isSupported=function(){return zXml.useXmlHttp||zXml.useActiveX;};function zXmlDom(){}zXmlDom.createDocument=function(){if(zXml.useDom){var oXmlDom=document.implementation.createDocument("","",null);oXmlDom.parseError={valueOf:function(){return this.errorCode;},toString:function(){return this.errorCode.toString()}};oXmlDom.__initError__();oXmlDom.addEventListener("load",function(){this.__checkForErrors__();this.__changeReadyState__(4);},false);return oXmlDom;;}else if(zXml.useActiveX){if(!zXml.DOM_VER){for(var i=0;i<zXml.ARR_DOM_VERS.length;i++){try{new ActiveXObject(zXml.ARR_DOM_VERS[i]);zXml.DOM_VER=zXml.ARR_DOM_VERS[i];break;}catch(oError){;}}}if(zXml.DOM_VER){return new ActiveXObject(zXml.DOM_VER);}else{throw new Error("Could not create XML DOM document.");}}else{throw new Error("Your browser doesn't support an XML DOM document.");}};zXmlDom.isSupported=function(){return zXml.useDom||zXml.useActiveX;};var oMozDocument=null;if(typeof XMLDocument!="undefined"){oMozDocument=XMLDocument;}else if(typeof Document!="undefined"){oMozDocument=Document;}if(oMozDocument&&!window.opera){oMozDocument.prototype.readyState=0;oMozDocument.prototype.onreadystatechange=null;oMozDocument.prototype.__changeReadyState__=function(iReadyState){this.readyState=iReadyState;if(typeof this.onreadystatechange=="function"){this.onreadystatechange();}};oMozDocument.prototype.__initError__=function(){this.parseError.errorCode=0;this.parseError.filepos=-1;this.parseError.line=-1;this.parseError.linepos=-1;this.parseError.reason=null;this.parseError.srcText=null;this.parseError.url=null;};oMozDocument.prototype.__checkForErrors__=function(){if(this.documentElement.tagName=="parsererror"){var reError=/>([\s\S]*?)Location:([\s\S]*?)Line Number(\d+),Column(\d+):<sourcetext>([\s\S]*?)(?:\-*\^)/;reError.test(this.xml);this.parseError.errorCode=-999999;this.parseError.reason=RegExp.$1;this.parseError.url=RegExp.$2;this.parseError.line=parseInt(RegExp.$3);this.parseError.linepos=parseInt(RegExp.$4);this.parseError.srcText=RegExp.$5;}};oMozDocument.prototype.loadXML=function(sXml){this.__initError__();this.__changeReadyState__(1);var oParser=new DOMParser();var oXmlDom=oParser.parseFromString(sXml,"text/xml");while(this.firstChild){this.removeChild(this.firstChild);}for(var i=0;i<oXmlDom.childNodes.length;i++){var oNewNode=this.importNode(oXmlDom.childNodes[i],true);this.appendChild(oNewNode);}this.__checkForErrors__();this.__changeReadyState__(4);};oMozDocument.prototype.__load__=oMozDocument.prototype.load;oMozDocument.prototype.load=function(sURL){this.__initError__();this.__changeReadyState__(1);this.__load__(sURL);};Node.prototype.__defineGetter__("xml",function(){var oSerializer=new XMLSerializer();return oSerializer.serializeToString(this,"text/xml");});Node.prototype.__defineGetter__("text",function(){var sText="";for(var i=0;i<this.childNodes.length;i++){if(this.childNodes[i].hasChildNodes()){sText+=this.childNodes[i].text;}else{sText+=this.childNodes[i].nodeValue;}}return sText;});}function zXslt(){}zXslt.transformToText=function(oXml,oXslt){if(typeof XSLTProcessor!="undefined"){var oProcessor=new XSLTProcessor();oProcessor.importStylesheet(oXslt);var oResultDom=oProcessor.transformToDocument(oXml);var sResult=oResultDom.xml;if(sResult.indexOf("<transformiix:result")>-1){sResult=sResult.substring(sResult.indexOf(">")+1,sResult.lastIndexOf("<"));}return sResult;;}else if(zXml.useActiveX){return oXml.transformNode(oXslt);}else{throw new Error("No XSLT engine found.");}};function zXPath(){}zXPath.selectNodes=function(oRefNode,sXPath,oXmlNs){if(typeof XPathEvaluator!="undefined"){oXmlNs=oXmlNs||{};var nsResolver=function(sPrefix){return oXmlNs[sPrefix];};var oEvaluator=new XPathEvaluator();var oResult=oEvaluator.evaluate(sXPath,oRefNode,nsResolver,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);var aNodes=new Array;if(oResult!=null){var oElement=oResult.iterateNext();while(oElement){aNodes.push(oElement);oElement=oResult.iterateNext();}}return aNodes;}else if(zXml.useActiveX){if(oXmlNs){var sXmlNs="";for(var sProp in oXmlNs){sXmlNs+="xmlns:"+sProp+"=\'"+oXmlNs[sProp]+"\' ";}oRefNode.ownerDocument.setProperty("SelectionNamespaces",sXmlNs);};return oRefNode.selectNodes(sXPath);}else{throw new Error("No XPath engine found.");}};zXPath.selectSingleNode=function(oRefNode,sXPath,oXmlNs){if(typeof XPathEvaluator!="undefined"){;oXmlNs=oXmlNs||{};var nsResolver=function(sPrefix){return oXmlNs[sPrefix];};var oEvaluator=new XPathEvaluator();var oResult=oEvaluator.evaluate(sXPath,oRefNode,nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null);if(oResult!=null){return oResult.singleNodeValue;}else{return null;};}else if(zXml.useActiveX){if(oXmlNs){var sXmlNs="";for(var sProp in oXmlNs){sXmlNs+="xmlns:\'"+sProp+"="+oXmlNs[sProp]+"\' ";}oRefNode.ownerDocument.setProperty("SelectionNamespaces",sXmlNs);};return oRefNode.selectSingleNode(sXPath);}else{throw new Error("No XPath engine found.");}};function zXMLSerializer(){}zXMLSerializer.prototype.serializeToString=function(oNode){var sXml="";switch(oNode.nodeType){case 1:sXml="<"+oNode.tagName;for(var i=0;i<oNode.attributes.length;i++){sXml+=" "+oNode.attributes[i].name+"=\""+oNode.attributes[i].value+"\"";}sXml+=">";for(var i=0;i<oNode.childNodes.length;i++){sXml+=this.serializeToString(oNode.childNodes[i]);}sXml+="</"+oNode.tagName+">";break;case 3:sXml=oNode.nodeValue;break;case 4:sXml="<![CDATA["+oNode.nodeValue+"]]>";break;case 7:sXml="";break;case 8:sXml="<!--"+oNode.nodevalue+"-->";break;case 9:for(var i=0;i<oNode.childNodes.length;i++){sXml+=this.serializeToString(oNode.childNodes[i]);}break;};return sXml;};

// JavaScript Document

// This function sends the call to the server script and receives an 
// XML-formatted document in response
function request_dish(id)
{
	var ox = zXmlHttp.createRequest();
	ox.open("get","scripts/lookup_record.php?id=" + id,true);
	
	var actions = document.getElementById("actions");
	var title = document.getElementById("title");
	
	// "title" id's default stylings
	var titleFontStyle = title.style.fontStyle;
	var titleTextTransform = title.style.textTransform;
	var titleBackgroundColor = "#feffd2";
	var titleFontSize = title.style.fontSize;
	var titleColor = title.style.color;
	
	ox.onreadystatechange = function() {
		if (ox.readyState > 0 && ox.readyState <4) {
			
			// Display "Please wait" message with custom styling
			//title.style.fontStyle = "italic";
			//title.style.textTransform = "none";
			title.style.backgroundColor = "#d2feff";
			//title.style.fontSize = "15px";
			title.style.color = "red";
			title.innerHTML = "Please wait; fetching data from server...";
			actions.style.display = "none";
			
			document.getElementById("actionstatus").innerHTML = "";
				
		}
		if (ox.readyState == 4) {
			if (ox.status == 200) {
				// restore default stylings
				title.innerHTML = "";
				title.style.fontStyle = titleFontStyle;
				title.style.textTransform = titleTextTransform;
				title.style.backgroundColor = titleBackgroundColor;
				title.style.fontSize = titleFontSize;
				title.style.color = titleColor;
				actions.style.display = "block";
				
				document.getElementById("actionstatus").innerHTML = "";
				
				processXmlResponse(ox.responseXML);
			}
		}
	};
	ox.send(null);	
}

// This function parses the XML response from the server
function processXmlResponse(response)
{
    nodes = response.getElementsByTagName('item'); 
			// returns only nodes that are item nodes.
			// this removes the response and xml nodes

    for ( i=0; i < nodes.length; i++ )
    {
        var node = nodes.item(i);
		ht = new String (getData(node,'data'));
		ht = ht.replace("[CDATA[","");
		ht = ht.replace("]]","");
		if (document.getElementById(getData(node,'divid')))
		{
			document.getElementById(getData(node,'divid')).innerHTML = ht;
		}
    }
}


function getData( myNode, myNodeName )
{
    var subNodes = myNode.childNodes;
    for ( j=0; j < subNodes.length; j++ )
    {
        var subNode = subNodes.item(j);
        if ( subNode.nodeName == myNodeName )
        {
			// this is cross browser ( ie and firefox ) compatible
            return subNode.childNodes.item(0).nodeValue;
        }
    }
    return "";
}




// ADD FOOD ITEMS TO DAILY JOURNAL //

function add_to_journal()
{
	var ox = zXmlHttp.createRequest();
	// get current item's ID
	ox.open("get","scripts/add_to_journal.php",true);
	ox.onreadystatechange = function() {
		if (ox.readyState > 0 && ox.readyState < 4) {
			document.getElementById("actionstatus").innerHTML = 
				"<p>Just a moment...</p>";
		}
		if (ox.readyState == 4) {
			if (ox.status == 200) {
				addstatus = new String (ox.responseText);
				document.getElementById("actionstatus").innerHTML = addstatus;			
			}
			else {
				alert("An error occurred: " + ox.statusText);
			}
		}
	}
	ox.send(null);	
}











// ADD FOOD ITEMS TO "FAVORITES" //

function add_to_favorites()
{
	var ox = zXmlHttp.createRequest();
	// get current item's ID
	ox.open("get","scripts/add_to_favorites.php",true);
	ox.onreadystatechange = function() {
		if (ox.readyState > 0 && ox.readyState < 4) {
			document.getElementById("actionstatus").innerHTML = 
				"<p>Just a moment...</p>";
		}
		if (ox.readyState == 4) {
			if (ox.status == 200) {
				addstatus = new String (ox.responseText);
				document.getElementById("actionstatus").innerHTML = addstatus;			
			}
			else {
				alert("An error occurred: " + ox.statusText);
			}
		}
	}
	ox.send(null);	
}



function onloadFunctions() {
	
}

//window.onerror = handleError;
function handleError() {
	return true;
}


function toggleElementDisplay(id,display) {
	var vis = document.getElementById(id);
	vis.style.display = display;
}


function showpic(tablePrefix,picID,altText) {
	//window.open('images/fetchPhoto.php?id='+picID+'&page='+tablePrefix
	//			+'&size=full');
	toggleElementDisplay("showPopupPic","block");
	makeAjaxRequest("showPopupPic.php","?id="+picID+"&page="+tablePrefix,
				"showPopupPic");
}


function savePageEdits() {
	// process submission of WYSIWYG Page Editor Form	
}



function showSubNavHoverPic(id,e) {
	var newdiv = document.createElement('div');
	newdiv.setAttribute('id','subnavhoverpic'+id);
	newdiv.setAttribute('class','subnavhoverpic');
	newdiv.innerHTML = '<p><img src="images/fetchPhoto.php?page=subpage'
		+ '&size=tinythumb&id=' + id + '" style=\"margin:0px;padding:0px;'
		+ 'border:3px solid #eeeeee\" /></p>';
	newdiv.style.position = 'absolute';


	var posx = 0;
	var posy = 0;
	var e=(!e)?window.event:e;
	if (typeof e.pageX == "number")
	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (typeof e.clientX == "number")
	{
		posx = e.clientX;
		posy = e.clientY;
	}

	newdiv.style.top = posy + 5 + "px";
	newdiv.style.left = posx + 30 + "px";
	
	var maindiv = document.getElementById('mainContainer');
	maindiv.appendChild(newdiv);
}



function hideSubNavHoverPic(id) {
	var maindiv = document.getElementById('mainContainer');
	var olddiv = document.getElementById('subnavhoverpic'+id);
	maindiv.removeChild(olddiv);
}


