<!--

//Requires Validator.js to be loaded on the same page

var bBadDates = false;
var DateSet = false;
var bCanEdit = true;
var CalFirstDate = null;
var CalLastDate = null;

function PreLoadCalender(sFirstDate, sLastDate, iId)
{
	if (sFirstDate.length > 0) {
		DateSet = true;
		CalFirstDate = SetDateFromArray(sFirstDate.split("-"));
		CalLastDate = SetDateFromArray(sLastDate.split("-"));

		LoadCalender(CalFirstDate.getFullYear(), (CalFirstDate.getMonth() + 1), iId);
	}
	else {
		LoadCalender(0, 0, iId);
	}
}

function LoadNoEditCalender(sFirstDate, sLastDate, iId)
{
	var sUri = "./smallcalender.php?edit=no&year=0&month=0";
	bCanEdit = false;

	if (sFirstDate.length > 0) {
		DateSet = true;
		CalFirstDate = SetDateFromArray(sFirstDate.split("-"));
		CalLastDate = SetDateFromArray(sLastDate.split("-"));

		sUri = "./smallcalender.php?edit=no&id="+iId+"&year="+CalFirstDate.getFullYear()+"&month="+(CalFirstDate.getMonth() + 1);
	}

	LoadHTML(sUri, "SmallCalender");
}

function RentRequest()
{
	var sFirstDate = Validator.dateTime.filterDateTime(CalFirstDate.toLocaleString(), "Y-m-d");
	var sLastDate = Validator.dateTime.filterDateTime(CalLastDate.toLocaleString(), "Y-m-d");
	var iId = document.getElementById("id").value;
	var sUri = "../../rentrequest.php?id="+iId+"&start="+sFirstDate+"&end="+sLastDate

	document.location.href = sUri;
}

function ResetCalender()
{
	bBadDates = false;
	ClearDates();
	DateSet = false;
	CalFirstDate = null;
	CalLastDate = null;
}

function CheckDateInput(oInput)
{
	var sDate = Validator.trim(Validator.dateTime.filterDateTime(oInput.value));
	if (sDate.length == 0) {
		oInput.value = "";
		document.getEleentById("Message").innerHTML = oInput.name + " was not a valid date.";
		oInput.focus();
	}
	else {
		oInput.value = sDate;
	}
}

function LoadCalender(iYear, iMonth, iId)
{
	var sURL = "../../smallcalender.php?id="+iId+"&year="+iYear+"&month="+iMonth;

	LoadHTML(sURL,"SmallCalender");
}

function SetDateFromArray(DateArray)
{
	var NewDate = new Date();
	NewDate.setFullYear(DateArray[0], (DateArray[1] - 1), DateArray[2]);
	return SetDateFromDate(NewDate);
}

function SetDateFromInt(iDate)
{
	var NewDate = new Date();
	NewDate.setTime(iDate);
	return SetDateFromDate(NewDate);
}

function SetDateFromDate(OldDate)
{
	var NewDate = new Date();

	NewDate.setTime(0);
	NewDate.setFullYear(OldDate.getFullYear(), OldDate.getMonth(), OldDate.getDate());

	return NewDate;
}

function SelectDate(oCell)
{
	var oChecked = document.getElementById("Checked-"+oCell.id);
	var iType = (document.getElementById("Type-"+oCell.id).value - 0);
	var DateArray = oCell.id.split("-");

	if (oChecked.value == "") {
		oChecked.value = "Checked";
		oCell.className = 'CalenderSelected';
		if (!DateSet) {
			DateSet = true;
			CalFirstDate = SetDateFromArray(DateArray);
			CalLastDate = CalFirstDate;
			UpdateStatus();
		}
		else {
			CheckDates(DateArray);
		}
	}
	else if (oChecked.value == "Span") {
		oCell.className = 'CalenderSpan';
	}
	else {
		oChecked.value = "";
		DeselectDate(DateArray);
		if (iType == 0) {
			oCell.className='OtherMonth';
		}
		else if (iType == 1) {
			oCell.className='Available';
		}
	}
}

function DeselectDate(DateArray)
{
	var CurDate = SetDateFromArray(DateArray);
	if (CalFirstDate.getTime() == CalLastDate.getTime()) {
		var CellId = CurDate.getFullYear()+"-"+(CurDate.getMonth() + 1)+"-"+CurDate.getDate();
		var oCell = document.getElementById(CellId);
		var oChecked = document.getElementById("Checked-"+CellId);
		var iType = (document.getElementById("Type-"+CellId).value - 0);

		oChecked.value = "";
		if (iType == 0) {
			oCell.className='OtherMonth';
		}
		else if (iType == 1) {
			oCell.className='Available';
		}

		DateSet = false;
		CalFirstDate = null;
		CalLastDate = null;
	}
	else if (CurDate.getTime() == CalFirstDate.getTime()) {
		CurDate.setDate((CurDate.getDate() + 1));
		if (CurDate.getTime() <= CalLastDate.getTime()) {
			CalFirstDate = CurDate;
			SpanDates();
		}
	}
	else if (CurDate.getTime() == CalLastDate.getTime()) {
		CurDate.setDate((CurDate.getDate() - 1));
		if (CurDate.getTime() >= CalFirstDate.getTime()) {
			CalLastDate = CurDate;
			SpanDates();
		}
	}

	UpdateStatus();
}

function ClearDates() {
	if (CalFirstDate.getTime() != CalLastDate.getTime()) {
		for (var i = CalFirstDate.getTime(); i < (CalLastDate.getTime() + 86400000); i += 86400000) {
			var oDay = SetDateFromInt(i);
			var CellId = oDay.getFullYear()+"-"+(oDay.getMonth() + 1)+"-"+oDay.getDate();
			if (document.getElementById(CellId)) {
				var oCell = document.getElementById(CellId);
				var oChecked = document.getElementById("Checked-"+CellId);
				var iType = (document.getElementById("Type-"+CellId).value - 0);

				oChecked.value = "";
				if (iType == 0) {
					oCell.className = 'OtherMonth';
				}
				else if (iType == 1) {
					oCell.className = 'Available';
				}
				else if (iType == 2) {
					oCell.className = 'Reserved';
				}
			}
		}
	}
}

function CheckDates(DateArray)
{
	var CheckDate = SetDateFromArray(DateArray);

	ClearDates();

	//If CheckDate is after CalCurDate then it is the end date
	if (CheckDate.getTime() > CalLastDate.getTime()) {
		CalLastDate = CheckDate;
		SpanDates();
	}
	//Else CheckDate is equal to or older than the CalCurDate
	else if (CheckDate.getTime() < CalFirstDate.getTime()){
		CalFirstDate = CheckDate;
		SpanDates();
	}

	UpdateStatus();
}

function SpanDates()
{
	var CellId;
	var oCell;
	var oChecked;
	var oDay;
	var iType = 0;

	if (CalFirstDate.getTime() != CalLastDate.getTime()) {
		for (var i = CalFirstDate.getTime(); i < CalLastDate.getTime(); i += 86400000) {
			oDay = SetDateFromInt(i);
			CellId = oDay.getFullYear()+"-"+(oDay.getMonth() + 1)+"-"+oDay.getDate();
			if (document.getElementById(CellId)) {
				oCell = document.getElementById(CellId);
				oChecked = document.getElementById("Checked-"+CellId);
				iType = (document.getElementById("Type-"+CellId).value - 0);

				if (iType == 2) {
					bBadDates = true;
					break;
				}
				else if (oChecked.value != "Checked") {
					oChecked.value = "Span";
					oCell.className = 'CalenderSpan';
				}
			}
		}
	}

	CellId = CalFirstDate.getFullYear()+"-"+(CalFirstDate.getMonth() + 1)+"-"+CalFirstDate.getDate();
	if (document.getElementById(CellId)) {
		iType = (document.getElementById("Type-"+CellId).value - 0);
		if (iType != 2) {
			oCell = document.getElementById(CellId);
			oChecked = document.getElementById("Checked-"+CellId);

			oChecked.value = "Checked";
			oCell.className = "CalenderSelected";
		}
		else {
			bBadDates = true;
		}
	}

	CellId = CalLastDate.getFullYear()+"-"+(CalLastDate.getMonth() + 1)+"-"+CalLastDate.getDate();
	if (document.getElementById(CellId)) {
		iType = (document.getElementById("Type-"+CellId).value - 0);
		if (iType != 2) {
			oCell = document.getElementById(CellId);
			oChecked = document.getElementById("Checked-"+CellId);

			oChecked.value = "Checked";
			oCell.className = "CalenderSelected";
		}
		else {
			bBadDates = true;
		}
	}
}

//Working on it
function MouseOver(oCell)
{
	if ((oCell.className != "CalenderSpan") && (oCell.className != "Reserved")) {
		oCell.className = 'CalenderHover';
	}
}

function MouseOut(oCell)
{
	var oChecked = document.getElementById("Checked-"+oCell.id);
	var iType = (document.getElementById("Type-"+oCell.id).value - 0);

	if (oChecked.value == "Checked") {
		oCell.className = 'CalenderSelected';
	}
	else if (oChecked.value == "Span") {
		oCell.className = 'CalenderSpan';
	}
	else {
		if (iType == 0) {
			oCell.className='OtherMonth';
		}
		else if (iType == 1) {
			oCell.className='Available';
		}
	}
}

function UpdateStatus()
{
	var sStatus = "";

	if (DateSet) {
		if (CalFirstDate.getTime() != CalLastDate.getTime()) {
			sStatus = "<b>"+Validator.dateTime.filterDateTime(CalFirstDate.toLocaleString(), "mm, dd 'y").replace(/ /g, "&nbsp;")+"</b> To <b>"+Validator.dateTime.filterDateTime(CalLastDate.toLocaleString(), "mm, dd 'y").replace(/ /g, "&nbsp;")+"</b>";
		}
		else {
			sStatus = "<b>"+Validator.dateTime.filterDateTime(CalFirstDate.toLocaleString(), "mm, dd 'y")+"</b>";
		}

		if (document.getElementById("FirstDate")) {
			document.getElementById("FirstDate").value = Validator.dateTime.filterDateTime(CalFirstDate.toLocaleString(), "Y-M-D");
			document.getElementById("LastDate").value = Validator.dateTime.filterDateTime(CalLastDate.toLocaleString(), "Y-M-D");
		}
	}
	else {
		if (document.getElementById("FirstDate")) {
			document.getElementById("FirstDate").value = "";
			document.getElementById("LastDate").value = "";
		}
	}

	if (bBadDates && bCanEdit) {
		bBadDates = false;
		ClearDates();
		DateSet = false;
		CalFirstDate = null;
		CalLastDate = null;
		sStatus = "<b style=\"color:red;\">Cannot select over reserved dates</b>";
	}

	document.getElementById("DateSelection").innerHTML = sStatus;
}

function LoadMonth(sDiv, sCalender)
{
	document.getElementById(sDiv).innerHTML = sCalender;
	if (DateSet) {
		SpanDates();
		UpdateStatus();
	}
}

function LoadHTML(sURL,sDiv)
{
	var req;
	req = false;
  // branch for native XMLHttpRequest object
  if(window.XMLHttpRequest) {
  	try {
			req = new XMLHttpRequest();
    }
		catch(e) {
			req = false;
    }
    	// branch for IE/Windows ActiveX version
  }
	else if(window.ActiveXObject) {
  	try {
   		req = new ActiveXObject("Msxml2.XMLHTTP");
  	}
		catch(e) {
    	try {
    		req = new ActiveXObject("Microsoft.XMLHTTP");
    	}
			catch(e) {
    		req = false;
    	}
		}
  }
	if(req) {
		//req.onreadystatechange = processReqChange;
		req.open("GET", sURL, true);
		req.onreadystatechange = function () {
		if (req.readyState == 4) {
			if(req.status == 200)
				LoadMonth(sDiv, req.responseText);
			else
				LoadMonth(sDiv, "Error Loading Source");
			}
		};
		req.send(null);
	}
}

//-->