﻿// ----
// AJAX
// ----
function createAjaxObj() {
	// alert("createAjaxObj()");
	
	var reqObj = false;
	
	if (window.XMLHttpRequest) {
		// If Mozilla, Safari etc
		reqObj = new XMLHttpRequest();
		if (reqObj.overrideMimeType) {
			reqObj.overrideMimeType('text/xml');
		}
	} else {
		if (window.ActiveXObject) {
			// If IE
			var aXmlHttpVersions = ["Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];

			for (var i = 0; i < aXmlHttpVersions.length; i++) {
				try {
					reqObj = new ActiveXObject(aXmlHttpVersions[i]);
					if (reqObj) {
						break;
					}
				}
				catch (objException) {
					// Catch object exception errors so they don't display to the user...
				}
			}
		}
	}
	return reqObj;
}

function newAjaxObject() {
	var ajaxObj = new Object();
	
	ajaxObj.basedomain = "http://" + window.location.hostname;
	ajaxObj.reqObj = createAjaxObj();
	ajaxObj.filetype = "txt";
	ajaxObj.addrandomnumber = 0; // Set to 1 or 0. See documentation.
	
	ajaxObj.getAjaxRequest = function(url, parameters, filetype, callbackfunc, callbackargs) {
		
		ajaxObj.reqObj = createAjaxObj(); // Recreate ajax object to defeat cache problem in IE
		
		if (ajaxObj.addrandomnumber == 1) { // Further defeat caching problem in IE?
			var parameters = parameters + "&ajaxcachebust=" + new Date().getTime();
		}
		
		if (this.reqObj) {
			this.filetype = filetype;
			this.callbackargs = callbackargs;
			this.reqObj.onreadystatechange = function() {
				callbackfunc(ajaxObj);
			}
			if (parameters == '') {
			    this.reqObj.open('GET', url, true);
			} else {
			    if (url.indexOf("?") == -1) {
			        url = url + "?";
			    }
			    this.reqObj.open('GET', url + parameters, true);
			}
			this.reqObj.send(null);
		}
	};
	
	ajaxObj.postAjaxRequest = function(url, parameters, callbackfunc, filetype, callbackargs) {
		// alert("postAjaxRequest()");
		
		ajaxObj.reqObj = createAjaxObj(); // Recreate ajax object to defeat cache problem in IE
		
		if (this.reqObj) {
			this.filetype = filetype;
			this.callbackargs = callbackargs;
			this.reqObj.onreadystatechange = function() {
				callbackfunc(ajaxObj);
			}
			this.reqObj.open('POST', url, true);
			this.reqObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			this.reqObj.setRequestHeader("Content-length", parameters.length);
			this.reqObj.setRequestHeader("Connection", "close");
			this.reqObj.send(parameters);
		}
	};
	
	return( ajaxObj );
}

//function getEventCalendar(dateRequest) {
//	var ao = newAjaxObject();
//	
//	var url = '/FOE_Presentation/controls/getEventCalendar.aspx';		// Base URL
//	var parameters = 'date='+dateRequest;				// String arguments to be passed in the URL (GET) or array (POST)
//	var filetype = "txt";								// Response element type: can be either "txt" or "xml"
//	var callbackfunc = eventCalendarWidgetCallback;		// Callback function
//	var callbackargs = "ajax_calendar";					// Additional arguments to pass to the callback function
//	
//	ao.getAjaxRequest(url, parameters, filetype, callbackfunc, callbackargs);
//	
//	return false;
//}

function getEventCalendar(dateRequest, siteId) {
	var ao = newAjaxObject();
	
	var parameters
	if (siteId == null)
	{
	    parameters = 'date='+dateRequest
	}
	else
	{
	    parameters = 'date=' + dateRequest + '&SiteId=' + siteId;
	}
	var url = '/controls/getEventCalendar.aspx';		// Base URL
	//var url = '/FOE_Presentation/controls/getEventCalendar.aspx';		// Base URL
	//var parameters = 'date='+dateRequest +'SiteId=' + siteId;				// String arguments to be passed in the URL (GET) or array (POST)
	var filetype = "txt";								// Response element type: can be either "txt" or "xml"
	var callbackfunc = eventCalendarWidgetCallback;		// Callback function
	var callbackargs = "ajax_calendar";					// Additional arguments to pass to the callback function
	
	ao.getAjaxRequest(url, parameters, filetype, callbackfunc, callbackargs);
	
	return false;
}

// AJAX CALLBACK
function eventCalendarWidgetCallback(ajaxObj) {
	var myajax = ajaxObj.reqObj;
	var myfiletype = ajaxObj.filetype;
	var mycallbackargs = ajaxObj.callbackargs;
					
	if (myajax.readyState == 4) { // If request of file completed
		if (myajax.status == 200 || window.location.href.indexOf("http") == -1) { // If request was successful or running script locally
			if (myfiletype == "txt") {
				if ((myajax.responseText).length < 1) {
				    document.getElementById(mycallbackargs).innerHTML = "<ul><li>We're sorry, no events are available for this date.</li></ul>";
				} else {
				    document.getElementById(mycallbackargs).innerHTML = myajax.responseText;
				    calendarInit();
				    tooltipInit();
				}
			} else {
				// myajax.responseXML;
			}
		} else {
			document.getElementById(mycallbackargs).innerHTML = "<ul><li>We're sorry, no events are available for this date.</li></ul>";			
		}
	} else {
		// readyState: 0 = uninitialized, 1 = loading, 2 = loaded, 3 = interactive, 4 = complete
		// readyStateArray = Array('uninitialized','loading','loaded','interactive','complete');
		// document.getElementById(mycallbackargs).innerHTML = readyStateArray[myajax.readyState];
	}
}
