/*
   	$Id: http.js 97 2006-05-24 11:37:02Z cvsus $
    Copyright (c) 2006 NILU
   
   	@Author(s): Robert Logna
   
	Purpose:
*/

var http_request = false;
//var url_getTodayDate = "/calendar/index.cfm?fuseaction=calendar.getTodayDate";

var daySelected = null;
var monthSelected = null;
var yearSelected = null;

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };

// Date initialization. We do not trust the system date on the client! Instead we get it from the server!
CalendarGetTodayDate();

function http_post(url,parameters, callback) {
	// branch for native XMLHttpRequest object
	if (window.XMLHttpRequest) {
		http_request = new XMLHttpRequest();
		http_request.onreadystatechange = callback;
		http_request.open("POST", url, true);
		http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		http_request.setRequestHeader("Content-length", parameters.length);
		http_request.setRequestHeader("Connection", "close");
		http_request.send(parameters);
	// branch for IE/Windows ActiveX version
	} else if (window.ActiveXObject) {
		http_request = new ActiveXObject("Microsoft.XMLHTTP");
		if (http_request) {
			http_request.onreadystatechange = callback;
			http_request.open("POST", url, true);
			http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			http_request.setRequestHeader("Content-length", parameters.length);
      		http_request.setRequestHeader("Connection", "close");
      		http_request.send(parameters);
		}
	}
}	

// Callback functions from Ajax call
function calendarNavigate_onRequestEnd() {
	// Only if http_request shows "loaded" and only if "OK"
   if (http_request.readyState == 4) { 
	   if (http_request.status == 200) { 
		   //alert(http_request.responseText); 
		   var containerObj = document.getElementById('CalendarContainer');
		   containerObj.innerHTML = http_request.responseText;
		   
	   } else { 
		   alert("An error occured during the request (code = " + http_request.status + ")");
	   } 
   } 
}

function calendarGetDate_onRequestEnd(){
   if (http_request.readyState == 4) { 
	   if (http_request.status == 200) { 
		  //alert(http_request.responseText);
		  var dateStampStr = http_request.responseText;
		  var dateStampArr = dateStampStr.split(",");
		  yearSelected = dateStampArr[0];
		  monthSelected = dateStampArr[1];
		  daySelected = dateStampArr[2];
	   } else { 
		   // Fallback, use clients system date
		   alert("An error occured during the request (code = " + http_request.status + ")");
	   } 
   }
}

// **************************************************************************************************************************

function CalendarGetTodayDate(){
	var postParams = "navigate=true";
	var f_callback = calendarGetDate_onRequestEnd;
	http_post(url_getTodayDate, postParams, f_callback);
}

function CalendarNavigate(url, navID, year, month, day){
	var postParams = "year=" + year 
					+ "&month=" + month 
					+ "&day=" + day
					+ "&navID=" + escape(navID);

	var f_callback = calendarNavigate_onRequestEnd;
	
	// Remember the date selected
	daySelected = day; 
	monthSelected = month;
	yearSelected = year;

	http_post(url, postParams, f_callback);
}
function CalendarNavigateTheme(url, navID, year, month, day,themeID){
	var postParams = "year=" + year 
					+ "&month=" + month 
					+ "&day=" + day
					+ "&navID=" + escape(navID)
					+ "&themeID="+escape(themeID);

	var f_callback = calendarNavigate_onRequestEnd;
	
	// Remember the date selected
	daySelected = day; 
	monthSelected = month;
	yearSelected = year;

	http_post(url, postParams, f_callback);
}

function CalendarDisplaySearch(url, navID){
	
	var f_callback = calendarNavigate_onRequestEnd;
	
	var postParams = "year=" + yearSelected 
					+ "&month=" + monthSelected 
					+ "&day=" + daySelected 
					+ "&navID=" + escape(navID) 
					+ "&search=true";
	
	http_post(url, postParams, f_callback);
}
function CalendarDisplaySearchTheme(url, navID,themeID){
	
	var f_callback = calendarNavigate_onRequestEnd;
	
	var postParams = "year=" + yearSelected 
					+ "&month=" + monthSelected 
					+ "&day=" + daySelected 
					+ "&navID=" + escape(navID) 
					+ "&themeID="+ escape(themeID)
					+ "&search=true";
	
	http_post(url, postParams, f_callback);
}

function CalendarDoSearch(url,navID){
	var f_callback = calendarNavigate_onRequestEnd;
	var htmlInputObj = document.getElementById("searchcriteria");
	var searchCriteria = htmlInputObj.value;
	var postParams = null;

	if (searchCriteria.trim().length > 0){
		postParams = "year=" + yearSelected 
						+ "&month=" + monthSelected 
						+ "&day=" + daySelected 
						+ "&navID=" + escape(navID) 
						+ "&search=true"
						+ "&criteria=" + escape(searchCriteria);
		
		http_post(url, postParams, f_callback);
	}
}
function CalendarDoSearchTheme(url,navID,themeID){
	var f_callback = calendarNavigate_onRequestEnd;
	var htmlInputObj = document.getElementById("searchcriteria");
	var searchCriteria = htmlInputObj.value;
	var postParams = null;

	if (searchCriteria.trim().length > 0){
		postParams = "year=" + yearSelected 
						+ "&month=" + monthSelected 
						+ "&day=" + daySelected 
						+ "&navID=" + escape(navID) 
						+ "&search=true"
						+ "&themeID=" +escape(themeID)
						+ "&criteria=" + escape(searchCriteria);
		
		http_post(url, postParams, f_callback);
	}
}
