// JavaScript Document
var request= null;
function createRequest () 
{
  try {
		request = new XMLHttpRequest();
		if (request.overrideMimeType) {
			request.overrideMimeType('text/xml');
		}
		if (!request) {
			alert('Cannot create XMLHTTP instance');
			return false;
		}
	} catch (trymicrosoft) {
	  try {
		   request = new ActiveXObject("msxml2.XMLHTTP");
	} catch (othermicrosoft) {
	  try {
		   request = new ActiveXObject("Microsoft.XMLHTTP");
	} catch (failed) {
		   request = null;
		 }
	   }
	}
	if (request == null)
	  alert("Error creating request object!");
}//ends createRequest function
	
function ajaxGet(url, el){
	createRequest();
	request.open("GET", url, true);
	request.onreadystatechange = function() { sendback = updateDiv(el); }
	request.send(null);
}

function updateDiv(el){
	if (request.readyState == 4) {
		var data = request.responseText;
		//we have to remove a <br /> tag that is somehow getting attached to data?
		data = data.replace("<br />", "");
		
		//now we must determine what kind of data we have ? json, xml, raw text ?
		try{ 
			var json = eval('(' + data + ')');
		}catch(err){
			//not json, do nothing allow the script to continue
		}
		if(json){
			runJson(json);
		}
		else {
			//now check if it's xml
			if(data.indexOf("<?xml version='1.0' encoding='UTF-8' standalone='yes'?>") > -1){
				var xmlDoc = parseXML(data);
				//updatePage(xmlDoc);
				var nodes = xmlDoc.childNodes[0].childNodes;
			}
		}
		if(el){
			// determine whether el is an object or standolone element
			if(el.e || el.run){
				el.e.innerHTML = data;
				el.run(); //now run whatever function was set as the "run" method
			}else el.innerHTML = data;
		}
	}	
	return false;
}

function runJson(obj){
	for(i in obj){
		//alert(i + " = " + obj[i]);	
		if(i=='update'){
			var id = obj[i].id;
			var value = obj[i].value;
			var el = document.getElementById(id);
			el.innerHTML = value;
		}
	}
}

function updatePage(xml){

	var page = xmlDoc.childNodes[0].childNodes[1].attributes.name.nodeValue;
	switch(page){
		case "tasks":
		var updateArray = xmlDoc.childNodes[0].childNodes[1].childNodes
		//for every 3 array values only 1 is an actual node.
		//it apparently counts "whitespace"? before and after a node as a node?
		//alert(updateArray[1].childNodes.length);
		for(var i=0;i<updateArray[1].childNodes.length;i++){
			//alert("node name: "+updateArray[1].childNodes[i].nodeName);
			//alert("node name: "+updateArray[1].childNodes[i].nodeValue);
			var node = updateArray[1].childNodes[i];
			//find the "el" node 
			if(node.nodeName == "el"){
				var id = node.attributes.id.nodeValue;	
				var value = node.attributes.value.nodeValue;
				//for each id/value pair we need to grab that el and change it's value
				var el = document.getElementById(id);
				el.innerHTML = value;
			}
		}
		break;
	}
}
//POST DATA XML REQUEST
var post; // variable for posting information
function loadXMLPosDoc(url,postData,el) {
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        post = new XMLHttpRequest();
        post.onreadystatechange = processPosChange;
        post.open("POST", url, false);
		post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        post.send(postData);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
		alert("active xobject");
        post = new ActiveXObject("Microsoft.XMLHTTP");
        if (post) {
            post.onreadystatechange = processPosChange;
            post.open("POST", url, false);
			post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            post.send(postData);
        }
    }
}

function grabPosXML (tagName) {
return pos.responseXML.documentElement.getElementsByTagName(tagName)[0].childNodes[0].nodeValue;
}

function processPosChange() {
    //page loaded "complete"
	alert("process hit");
    if (pos.readyState == 4) {
        // page is "OK"
		alert("comment added");
        if (pos.status == 200){
			if(grabPosXML("posStatus") == 'NOTOK') { 
				alert('There were problems Sending Email. Please check back in a couple minutes');
			}
		}
	}
	return false;
}