/***********************************************
 * Ajax Includes contents into a specified div *
 ***********************************************/

//To include a page, invoke ajaxinclude("afile.htm", "divId")
//Included file MUST be from the same domain as the page displaying it.

var rootdomain="http://"+window.location.hostname;

//Includes the content of the url into the given div and apply the specified CSS to the document
function ajaxIncludeGetWithCSS(elementId, url, cssRef) {
	writeCssElement(cssRef);
	ajaxIncludeGet(elementId, url);
}

//Post the form data to the given URL loading the given css
function ajaxIncludePostWithCSS(elementId, formId, url, cssRef) {
	writeCssElement(cssRef);
	ajaxIncludePost(elementId, formId, url);
}

//Includes the content of the url into the given div
function ajaxIncludeGet(elementId, url) {
	var page_request = false;
	if (window.XMLHttpRequest) // if Mozilla, Safari etc
		page_request = new XMLHttpRequest();
		else if (window.ActiveXObject){ // if IE
			try {
				page_request = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch (e){
				try{
					page_request = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e){}
			}
		} else {
			return false;
		}
	page_request.open("GET", url, false); //get page synchronously 
	page_request.setRequestHeader("X-View-Mode", "html/fragment");
	page_request.setRequestHeader("Connection", "close");
	page_request.send(null);
	writeContent(page_request, elementId);
}

//Includes the content of the url into the given div
function ajaxIncludePost(elementId, formName, url) {
	var page_request = false;
	var postData = preparePostData(formName);
	
	if (window.XMLHttpRequest) // if Mozilla, Safari etc
		page_request = new XMLHttpRequest();
	else if (window.ActiveXObject){ // if IE
		try {
			page_request = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e){
			try{
				page_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e){}
		}
	} else {
		return false;
	}
	page_request.open("POST", url, false); //get page synchronously 
	page_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	page_request.setRequestHeader("X-View-Mode", "html/fragment");
	page_request.setRequestHeader("Content-length", postData.length);
	page_request.setRequestHeader("Connection", "close");
	page_request.send(postData);
	writeContent(page_request, elementId);
}


//Prepare the Post request based upon form data
function preparePostData(formName) {
	var theForm = document.forms[formName]
	var numElements = theForm.elements.length;
	var postString = "";
	
	for(var i = 0; i < numElements; i++) {
		if ((theForm.elements[i].type == "radio") || (theForm.elements[i].type == "checkbox")) {
			if (theForm.elements[i].checked) {
				if(postString.length > 1)
					postString += "&";
				postString += theForm.elements[i].name+"="+encodeURIComponent(theForm.elements[i].value);
			}
		} else if (theForm.elements[i].type == "select") {
			if(postString.length > 1)
				postString += "&";
			postString += theForm.elements[i].name+"="+encodeURIComponent(theForm.elements[i].selectedIndex);		
		} else if (theForm.elements[i].type == "submit") {
			//Do nothing
			;
		} else {
			if(postString.length > 1)
				postString += "&";
			postString += theForm.elements[i].name+"="+encodeURIComponent(theForm.elements[i].value);
		}
	}
	
	return postString;
}


//writes the content into the div.
function writeContent(page_request, elementId){
	var theDiv = document.getElementById(elementId);
	if (window.location.href.indexOf("http")==-1 || page_request.status==200) {
		if (theDiv) {
			theDiv.innerHTML=page_request.responseText;
		} else {
			theDiv.innerHTML="Content NOT Available.";
		}
	} else {
		theDiv.innerHTML="Content NOT Available.";
	}
}

//Writes the given CSS link into the head section of the page
function writeCssElement(cssRef) {
	var headElement = document.getElementsByTagName("head").item(0);
	if (headElement) {
		var fileRef=document.createElement("link");
		fileRef.setAttribute("rel", "stylesheet");
		fileRef.setAttribute("type", "text/css");
		fileRef.setAttribute("href", cssRef);
		headElement.appendChild(fileRef);
	}
}




