// Freedom Web Calendar Script

var xhr;

function calendar_init()
{
    xhr = new Array();
    for(var i=0; i<calendarCount; i++)
    {
        var req;
        if(window.XMLHttpRequest) req = new XMLHttpRequest();
        else if(window.ActiveXObject) req = new ActiveXObject("Microsoft.XMLHTTP");
        xhr[i] = req;
        calendar_navigate(i, '', '');
    }
}

function calendar_navigate(id, month, year)
{
    var req = xhr[id];
    var filterTypeId = "";
    var searchString = "";
    if(document.getElementById('selCalendarFilter_' + id)) filterTypeId = document.getElementById('selCalendarFilter_' + id).value;
    if(document.getElementById('tfCalendarSearch_' + id)) searchString = document.getElementById('tfCalendarSearch_' + id).value;
    var url = "scripts/calendar.php?displayType=" + calendarDisplayType[id] + "&id=" + id + "&dataSource=" + calendarDataSource + "&month=" + month + "&year=" + year + "&filterTypeId=" + filterTypeId + "&searchString=" + searchString + "&allowSearch=" + calendarAllowSearch[id] + "&allowFilter=" + calendarAllowFilter[id] + "&largeLink=" + calendarLargeLink[id];
    if(calendarPreview[id] == 1) url += "&preview=1";
    req.open("GET", url, true);
    req.onreadystatechange = function(){ calendar_callback(id) };
    req.send(null);
}

function calendar_callback(id)
{
    var req = xhr[id];
    obj = document.getElementById("calendar_" + id);
    calendar_setFade(0, id);
    if(req.readyState == 4)
    {
        if(req.status == 200)
        {
            response = req.responseText;
            obj.innerHTML = response;
            calendar_fade(0, id);
        }
        else
        {
            calendar_fade(100, id);
            obj.innerHTML = "Could not retrieve calendar data.";
        }
    }
}

function calendar_fade(amt, id)
{
	if(amt <= 100)
	{
		calendar_setFade(amt, id);
		amt += 10;
		setTimeout("calendar_fade(" + amt + ", " + id + ")", 5);
    }
}

function calendar_setFade(amt, id)
{
	obj = document.getElementById("calendar_" + id);
	
	if(obj)
	{
	    amt = (amt == 100)?99.999:amt;

	    // IE
	    obj.style.filter = "alpha(opacity:"+amt+")";
      
	    // Safari<1.2, Konqueror
        obj.style.KHTMLOpacity = amt/100;
      
	    // Mozilla and Firefox
        obj.style.MozOpacity = amt/100;

	    // Safari 1.2, newer Firefox and Mozilla, CSS3
        obj.style.opacity = amt/100;
	}
}

function calendar_showDetails(id, day)
{
    document.getElementById('calendar_' + id + '_default').style.display = 'none';
    for(var i=0; i<32; i++) if(document.getElementById('calendar_' + id + '_' + i)) document.getElementById('calendar_' + id + '_' + i).style.display = 'none';
    if(document.getElementById('calendar_' + id + '_' + day)) document.getElementById('calendar_' + id + '_' + day).style.display = 'block';
}

function calendar_showAll(id, month, year)
{
    if(document.getElementById('selCalendarFilter_' + id)) document.getElementById('selCalendarFilter_' + id).selectedIndex=0;
    if(document.getElementById('tfCalendarSearch_' + id)) document.getElementById('tfCalendarSearch_' + id).value='';
    calendar_navigate(id, month, year);
}