var xmlHttp;

function GetXmlHttpObject()
{
var xmlHttp=null;
try
  {
  // Firefox, Opera 8.0+, Safari
  xmlHttp=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
  try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
return xmlHttp;
}

function performAsyncRequest(strParams) {
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null)
	  {
	  alert ("Your browser does not support AJAX!");
	  return;
	  }
	var url= URL_ENTRIES + "?sid=" + Math.random() + strParams;
	xmlHttp.onreadystatechange=entriesReturnedXML;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function cancelComment()
{
	document.getElementById("add_comment").innerHTML = 'Add Comment'
	document.getElementById("comment_to_add").style.display = "none"
	document.getElementById("comment_to_add").value = ''
	document.getElementById("cancel_comment").style.display = "none"
}

function saveComment()
{
	var elem=document.getElementById(URL_PARAM_COMMENT)
	
	strComment = escape( elem.value )
	strEntryID = document.getElementById(URL_PARAM_ENTRY).value
	
	if (strComment.length==0)
	  { 
	  return;
	  }
	 // Reset the comment elements
	 //cancelComment()
	//document.getElementById("add_comment").innerHTML = 'Add Comment'
	//elem.style.display = "none"
	//elem.value = ''
	
	performAsyncRequest("&" + URL_PARAM_ASYNC + "=" + URL_PARAM_ASYNC_COMMENT + "&" + URL_PARAM_COMMENT + "=" + strComment + 
						"&" + URL_PARAM_ENTRY + "=" + strEntryID);
} 

function entriesReturnedXML() 
{ 
	if (xmlHttp.readyState==4)
	{
		//alert(xmlHttp.responseText)
		//alert(xmlHttp.responseXML)
		var xmlDoc=xmlHttp.responseXML.documentElement
		
		if (xmlDoc == null) {
			alert ("XML Document is NUll")
		}

		extractElementValues(xmlDoc);
		//extractElementAttribs(xmlDoc);
		//extractComments(xmlDoc);
		//extractFormValidationRules(xmlDoc);
		//extractLoggedInUser(xmlDoc);
		//extractFileUploadProgress(xmlDoc);
	}
}

function extractElementValues(xmlDoc) {
	var strID
	var strContent
	var blnRender
	//alert(xmlDoc.innerHTML)
	//alert( xmlDoc.getElementsByTagName("ELEMENT_ID/ID").length )
	var elems = xmlDoc.getElementsByTagName("ELEMENT_ID/ID");
	//alert ("Elements: " + (elems == null) )
	
	if (elems != null) {
		for (i = 0; i < elems.length; i++) {
			strID = getSafeElement( xmlDoc.getElementsByTagName("ELEMENT_ID/ID")[i] )
			blnRender = getSafeElement( xmlDoc.getElementsByTagName("ELEMENT_ID/RENDER")[i] )
			strContent = getSafeElement( xmlDoc.getElementsByTagName("ELEMENT_ID/CONTENT")[i] )
			//alert(strContent)
			if (strContent != "") {
				strContent = unescape( strContent )
			}
			setElementValue(strID, strContent, blnRender)
				
		}
	}
}

function setElementValue(strID, strContent, blnRender) {
	var elem = document.getElementById(strID)
	if (elem != null) { 
		if (elem.tagName == "INPUT") {
			elem.value = strContent
		} else {
			//alert ("Render: " + blnRender + ": " + (blnRender == "true")) 
			if (blnRender == "true") {
				//if (strID == "gallery_spacer") {
					//alert ("InnerHTML for ID: " + strID + "\n" + strContent)
				//}
				elem.innerHTML = strContent
			} else {
				
				var hasInnerText = (elem.innerText != undefined) ? true : false;
				//alert ("hasInnerText: " + hasInnerText + ": " + (hasInnerText == "true"))
				
				if(!hasInnerText){
					//alert ("textContent for ID: " + strID)
			        elem.textContent = strContent;
			    }else{
			    	//alert ("InnerText for ID: " + strID)
			        elem.innerText = strContent;
			    } 
			}
			
		}
	} else {
		alert( "Unknown element: [" + strID + "], Value: \n" + strContent) 
	}
}

function getSafeElement(elem) {
	if (elem != null) {
		if (elem.hasChildNodes()) {
			return elem.childNodes[0].nodeValue	
		} else {
			return ""	
		}
	} else {
		return ""
	}
}

function validateEntry(form) {
	var fields = [FLD_ENTRY_TITLE, FLD_CATEGORY_ID, FLD_ENTRY_SUMMARY];
	var titles = [TITLE_ENTRY_TITLE, TITLE_CATEGORY_ID, TITLE_ENTRY_SUMMARY];

	//alert("validating fields");
	for (f=0; f < fields.length; f++)
	{
		var elem = document.getElementById(fields[f]);
		if( elem.value.trim() == "" ) {
			alert( "You must enter a value for '" + titles[f] + "' before this entry can be saved." );
			elem.focus();
			return false;
		}
	}

	return checkAttatchments(form);;
}

function checkAttatchments(form) {
	allowSubmit = false;
	
	var elems = form.getElementsByTagName("input");
	//alert ("Elements: " + (elems == null) )
	
	if (elems != null) {
		//alert ("Elements Length: " + elems.length )
		for (var e = 0; e < elems.length; e++) {
			//alert ("Element[" + e + "] Type: " + elems[e].type + "\nElement[" + e + "] Value: " + elems[e].value );
			
			if ( elems[e].type == "file" ) {
				if (elems[e].value != '' && !( elems[e].value.endsWith(".gif")
						|| elems[e].value.endsWith(".jpg")
						|| elems[e].value.endsWith(".png") )) {
					alert( "You have chosen an invalid file for uploading.\nPlease choose an image file and then try saving again." );
					elems[e].focus();
					return false;	
				}
			}
		}
	}
	return true;
}

