﻿var openCalendar = null;
var calendarStateMaintainer = null;
var _useDebug = false;

function DefineHiddenFields(elementId) {
	if (document.getElementById(elementId)) {
		calendarStateMaintainer = document.getElementById(elementId);		
	}
}

function PositionCalendar(elementId) {      

	// Make sure this element exists.
	var calendarHolder = (document.getElementById(elementId)) ? document.getElementById(elementId) : null;
	 
	if(openCalendar == calendarHolder) {	
		HideCalendar(calendarHolder.id);
		return;
	} else {	
		if(!_useDebug) {calendarHolder.style.display = "block"; } else { calendarHolder.style.MozOpacity = 1.0; }		
		openCalendar = calendarHolder;	
	}
	
	var styleString = ((!_useDebug) ? "display:block;" : "-moz-opacity:1.0;");
	if(calendarStateMaintainer) {
		calendarStateMaintainer.value = styleString;
	}
}

function HideCalendar(elementId) {
	var element = document.getElementById(elementId);
	if(element) {
		if(!_useDebug) { element.style.display = "none"; } else { element.style.MozOpacity = 0.4; }
		if(calendarStateMaintainer) {
			calendarStateMaintainer.value = ((!_useDebug) ? "display:none;" : "-moz-opacity:0.4");
		}
		openCalendar = null;
	}
}

function SetDateSingle(input, id) {
    document.getElementById(id).value = input;
}

function PreventTyping(eventObj) {
	if(!document.all) {
		eventObj.preventDefault();
		eventObj.stopPropagation();
	} else {
		eventObj.returnValue = false;
		eventObj.cancelBubble = false;		
	}
}

function InitializeCalendars(startingElementId) {
	if(startingElementId) {
		var container = document.getElementById(startingElementId);
		if(container) {
			//AddDayClickEvents(container);
		}
	}
}

function AddDayClickEvents(container) {
	var tds = container.getElementsByTagName("td");
	if(tds) {
		var cnt = tds.length;
		for(var i = 0; i < cnt; i++) {
			if(ContainsClassName(tds[i], "selectable")) {
				var link = tds[i].getElementsByTagName("a")[0];
				if(link) { link.onclick = OnDayClick; }
			}
		}
	}
}

/*
function AddCalendarToggleEvents(togglerId, targetId) {	
	var toggler = document.getElementById(togglerId);
	if(toggler && targetId) {
		toggler.onclick = function() {PositionCalendar(targetId); }
	}
	
}

function OnCalendarClick() { PositionCalendar(this); }*/

function ContainsClassName(item, cssClass) {
	return (item && item.className && (item.className.indexOf(cssClass) > -1))
}

function OnDayClick() { 
	var calendar = GetParentCalendar(this);
	if(calendar && calendar.id) {
		HideCalendar(calendar.id);
	}
}

function GetParentCalendar(child) {
	if(ContainsClassName(child.parentNode, "calendar")) {
		return child.parentNode;
	} else if (child.parentNode) {
		return GetParentCalendar(child.parentNode);
	} else {
		return null;
	}
}