	function search()
	{
		var form = document.getElementById("calendarForm");
		form.submit();
	}

	function enableSearch()
	{
		var search = document.getElementById("searchButton");
		search.disabled = false;
	}

	function setCalendarDate_0(year, month, day) 
	{	  
		month = parseInt(month,10);
		day = parseInt(day,10);
		month = (month <= 9 ? "0" + month : month);
		day = (day <= 9 ? "0" + day : day);
		var from = month + "/" + day + "/" + year;
		document.getElementById("from").value = from;
		drawDate();
		enableSearch();
	}

	function setCalendarDate_1(year, month, day) 
	{	  
		month = parseInt(month,10);
		day = parseInt(day,10);
		month = (month <= 9 ? "0" + month : month);
		day = (day <= 9 ? "0" + day : day);
		var to = month + "/" + day + "/" + year;
		document.getElementById("to").value = to;
		drawDate();
		enableSearch();
	}

	function setDay(day)
	{
		localMonth = month + 1;
		localMonth = (localMonth <= 9 ? "0" + localMonth : localMonth);
		day = (day <= 9 ? "0" + day : day);

		setCalendarDate_0(year, localMonth, day);
		setCalendarDate_1(year, localMonth, day);
		drawDate();
		enableSearch();
	}

	function setWeek(week)
	{
		eval('var week = [' + week + ']');
		localMonth = month + 1;
		localMonth = (localMonth <= 9 ? "0" + localMonth : localMonth);

		//Initial Day
		var lengthAux = 0;
		day = week[lengthAux];
		while(day == null)
		{
			lengthAux++;
			day = week[lengthAux];
		}		

		day = (day <= 9 ? "0" + day : day);

		setCalendarDate_0(year, localMonth, day);

		//Final Day
		var lengthAux = week.length - 1;
		day = week[lengthAux];
		while(day == null)
		{
			lengthAux--;
			day = week[lengthAux];
		}
		day = (day <= 9 ? "0" + day : day);

		setCalendarDate_1(year, localMonth, day);
		drawDate();
		enableSearch();
	}

	function setMonth()
	{
		localMonth = month + 1;
		localMonth = (localMonth <= 9 ? "0" + localMonth : localMonth);

		day = 1;
		day = (day <= 9 ? "0" + day : day);


		setCalendarDate_0(year, localMonth, day);

		day = totalDays;
		day = (day <= 9 ? "0" + day : day);
		setCalendarDate_1(year, localMonth, day);
		drawDate();
		enableSearch();
	}

	function drawDate()
	{
		clearDate();
		initialDate = document.getElementById("from").value;
		finalDate = document.getElementById("to").value;

		if(initialDate != null && initialDate != "" && finalDate != null && finalDate != "")
		{
			initialDateArray = initialDate.split("/");
			initialMonth = parseInt(initialDateArray[0],10);
			initialMonthShifted  = parseInt(initialDateArray[0],10) - 1;
			initialDay = parseInt(initialDateArray[1],10);
			initialYear = parseInt(initialDateArray[2],10);

			finalDateArray = finalDate.split("/");
			finalMonth = parseInt(finalDateArray[0],10);
			finalMonthShifted = parseInt(finalDateArray[0],10) - 1;
			finalDay = parseInt(finalDateArray[1],10);
			//alert(finalDate);
			finalYear = parseInt(finalDateArray[2],10);
		
			fromDate = new Date(initialYear,initialMonthShifted,initialDay);
			toDate = new Date(finalYear,finalMonthShifted,finalDay);
			while (fromDate <= toDate)
			{
				//alert(fromDate);
				initialMonth = fromDate.getMonth()
				//initialMonthShifted  = parseInt(initialDateArray[0],10) - 1;
				initialMonthShifted  = initialMonth;
				initialDay = fromDate.getDate();
				initialYear = fromDate.getYear();
				if (initialYear < 1900)
				{
					initialYear += 1900;
				}
				//alert(initialMonthShifted); 
				//alert(initialDay);
				//alert(initialYear);
				var id = initialMonthShifted + "/" + initialDay + "/" + initialYear;
				//alert("id " + id);
				var element = document.getElementById(id);
				//alert(element);
				if(element)
				{					
					//element.style.backgroundColor = '#FFA500';
					element.className = "active";
					
				}
				fromDate = new Date(initialYear,initialMonth,initialDay + 1);				
			}
		}
	}

	function clearDate()
	{
		for(i = 1;i <= totalDays;i++)
		{
			var id = month + "/" + i + "/" + year;
			var element = document.getElementById(id);

			//element.style.backgroundColor  = "#FFFFFF";
			element.className = "day";
		}
	}

	function addCalendarFilter(calendar)
	{
		calendars = document.getElementById("calendarTypes");
		if(!(isInArray(calendars,calendar)))
		{
			if(calendars.value != "")
			{
				calendars.value += "," + calendar;
			}
			else
			{
				calendars.value = calendar;
			}
			drawCalendarCategories();
			enableSearch();
		}
	}

	function addEventFilter(event)
	{
		events = document.getElementById("eventTypes");
		if(!(isInArray(events,event)))
		{
			if(events.value != "")
			{
				events.value += "," + event;
			}
			else
			{
				events.value = event;
			}
			drawEventCategories();
			enableSearch();
		}
	}

	function removeCalendarFilter(event)
	{
		calendars = document.getElementById("calendarTypes");
		var newArrayValues = calendars.value.split(",");
		calendars.value = "";
		element = document.getElementById("calendarFilters");
		element.innerHTML = "";
		for(var i = 0; i < newArrayValues.length; i++)
		{
			//alert(i + " " + newArrayValues[i] + " " + event);
			if(newArrayValues[i] != event)
			{
				addCalendarFilter(newArrayValues[i]);
			}
		}
		drawCalendarCategories();
	}

	function removeEventFilter(event)
	{
		calendars = document.getElementById("eventTypes");
		var newArrayValues = calendars.value.split(",");
		calendars.value = "";
		element = document.getElementById("eventFilters");
		element.innerHTML = "";
		for(var i = 0; i < newArrayValues.length; i++)
		{
			if(newArrayValues[i] != event)
			{
				addEventFilter(newArrayValues[i]);
			}
		}
		drawEventCategories();
	}

	function removeAllCalendarFilter()
	{
		calendars = document.getElementById("calendarTypes");
		calendars.value = "";
		drawCalendarCategories();
		//element = document.getElementById("calendarFilters");
		//element.innerHTML = "";
	}

	function removeAllEventFilter()
	{
		calendars = document.getElementById("eventTypes");
		calendars.value = "";
		drawEventCategories();
	}

	function selectAllCalendarFilter()
	{
		removeAllCalendarFilter();
		enableSearch();		
	}

	function selectAllEventFilter()
	{
		removeAllEventFilter();
		enableSearch();
	}

	function isInArray(arrayValues,value)
	{
		newArrayValues = arrayValues.value.split(",");
		for(i = 0; i < newArrayValues.length; i++)
		{
			if(newArrayValues[i] == value)
			{
				return true;
			}
		}
		return false;
	}

	function drawCalendarCategories()
	{
		calendars = document.getElementById("calendarTypes");		
		element = document.getElementById("calendarFilters");
		element.innerHTML = "";
		if (calendars.value != "")
		{
			var newArrayValues = calendars.value.split(",");
			for(i = 0; i < newArrayValues.length; i++)
			{
				element.innerHTML += "<li nowrap>" + calendarCategories[newArrayValues[i]] + "<a href=\"javascript:removeCalendarFilter('"+ 	newArrayValues[i] +"');\">remove</a></li>";
			}
		}
		else
		{
			element.innerHTML = "<li>All";
		}
	}


	function drawEventCategories()
	{
		calendars = document.getElementById("eventTypes");		
		element = document.getElementById("eventFilters");
		element.innerHTML = "";
		if (calendars.value != "")
		{
			var newArrayValues = calendars.value.split(",");
			for(i = 0; i < newArrayValues.length; i++)
			{
				element.innerHTML += "<li nowrap>" + eventCategories[newArrayValues[i]] + "<a href=\"javascript:removeEventFilter('"+ newArrayValues[i] +"');\">remove</a></li>";
			}
		}
		else
		{
			element.innerHTML = "<li>All";
		}
	}

	function clearAll()
	{
		document.getElementById("from").value = today;
		document.getElementById("to").value = today;
		document.getElementById("allCalendarTypes").checked = false;
		document.getElementById("allEventTypes").checked = false;
		
		clearDate();
		document.getElementById("keyword").value = "";
		//removeAllCalendarFilter();
		//removeAllEventFilter();
		disableCheckBoxes("calendarTypes");
		disableCheckBoxes("eventTypes");
		drawDate();		
	}

	//### CALENDAR ###
		Calendar._DN = new Array(
		"Sunday",
		"Monday",
		"Tuesday",
		"Wednesday",
		"Thursday",
		"Friday",
		"Saturday",
		"Sunday"
	);

	Calendar._SDN = new Array(
		"Sun",
		"Mon",
		"Tue",
		"Wed",
		"Thu",
		"Fri",
		"Sat",
		"Sun"
	);

	Calendar._MN = new Array(
		"January",
		"February",
		"March",
		"April",
		"May",
		"June",
		"July",
		"August",
		"September",
		"October",
		"November",
		"December"
	);

	Calendar._SMN = new Array(
		"Jan",
		"Feb",
		"Mar",
		"Apr",
		"May",
		"Jun",
		"Jul",
		"Aug",
		"Sep",
		"Oct",
		"Nov",
		"Dec"
	);

	Calendar._TT = {};

	Calendar._TT["ABOUT"] = "Use the \xab and \xbb buttons to select the year. Use the {0} and {1} buttons to select the month. Hold the mouse button on any of the above buttons for faster selection.";
	Calendar._TT["ABOUT"] = Calendar._TT["ABOUT"].replace("{0}", String.fromCharCode(0x2039));
	Calendar._TT["ABOUT"] = Calendar._TT["ABOUT"].replace("{1}", String.fromCharCode(0x203a));

	Calendar._TT["ABOUT_TIME"] = "";
	Calendar._TT["CLOSE"] = "Close";
	Calendar._TT["DAY_FIRST"] = "Display %s First";
	Calendar._TT["DRAG_TO_MOVE"] = "";
	Calendar._TT["GO_TODAY"] = "Today";
	Calendar._TT["INFO"] = "Help";
	Calendar._TT["NEXT_MONTH"] = "Next Month";
	Calendar._TT["NEXT_YEAR"] = "Next Year";
	Calendar._TT["PART_TODAY"] = "";
	Calendar._TT["PREV_MONTH"] = "Previous Month";
	Calendar._TT["PREV_YEAR"] = "Previous Year";
	Calendar._TT["SEL_DATE"] = "Select Date";
	Calendar._TT["SUN_FIRST"] = "";
	Calendar._TT["TIME_PART"] = "";
	Calendar._TT["TODAY"] = "Today";
	Calendar._TT["WK"] = "";

	Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
	Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";

	Calendar._TT["WEEKEND"] = "0,6";

	// Calendar Stuff
	var _EXT_MAILINGLISTBUILDER_calObj_0 = new Calendar(false, null, _EXT_MAILINGLISTBUILDER_calendarOnSelect_0, _EXT_MAILINGLISTBUILDER_calendarOnClose);
	_EXT_MAILINGLISTBUILDER_calObj_0.weekNumbers = false;
	_EXT_MAILINGLISTBUILDER_calObj_0.firstDayOfWeek = 0;
	_EXT_MAILINGLISTBUILDER_calObj_0.setTtDateFormat("%A, %B %e, %Y");
	_EXT_MAILINGLISTBUILDER_calObj_0.setRange(1915, 2015);

	function _EXT_MAILINGLISTBUILDER_calendarOnClick_0() {
		_EXT_MAILINGLISTBUILDER_calObj_0.create();
		//_EXT_MAILINGLISTBUILDER_calObj_0.setDate(new Date());
		_EXT_MAILINGLISTBUILDER_calObj_0.showAtElement(document.getElementById('_EXT_MAILINGLISTBUILDER_calendar_input_0_button'), 'br');
	}
	function _EXT_MAILINGLISTBUILDER_calendarOnClose(cal) {
		cal.hide();
	};

	function _EXT_MAILINGLISTBUILDER_calendarOnSelect_0(cal) {
		if (cal.dateClicked) {
			var month = cal.date.getMonth() + 1;
			var day = cal.date.getDate();
			var year = cal.date.getFullYear();
			setCalendarDate_0(year, month, day);
			cal.callCloseHandler();
		}
	};

	// Calendar Stuff
	var _EXT_MAILINGLISTBUILDER_calObj_1 = new Calendar(false, null, _EXT_MAILINGLISTBUILDER_calendarOnSelect_1, _EXT_MAILINGLISTBUILDER_calendarOnClose);
	_EXT_MAILINGLISTBUILDER_calObj_1.weekNumbers = false;
	_EXT_MAILINGLISTBUILDER_calObj_1.firstDayOfWeek = 0;
	_EXT_MAILINGLISTBUILDER_calObj_1.setTtDateFormat("%A, %B %e, %Y");
	_EXT_MAILINGLISTBUILDER_calObj_1.setRange(1915, 2015);

	function _EXT_MAILINGLISTBUILDER_calendarOnClick_1() {
		_EXT_MAILINGLISTBUILDER_calObj_1.create();
		//_EXT_MAILINGLISTBUILDER_calObj_1.setDate(new Date());
		_EXT_MAILINGLISTBUILDER_calObj_1.showAtElement(document.getElementById('_EXT_MAILINGLISTBUILDER_calendar_input_1_button'), 'br');
	}
	function _EXT_MAILINGLISTBUILDER_calendarOnClose(cal) {
		cal.hide();
	};

	function _EXT_MAILINGLISTBUILDER_calendarOnSelect_1(cal) {
		if (cal.dateClicked) {
			var month = cal.date.getMonth() + 1;
			var day = cal.date.getDate();
			var year = cal.date.getFullYear();
			setCalendarDate_1(year, month, day);
			cal.callCloseHandler();
		}
	};

//### END CALENDAR ###
	function drawBlueDay(element)
	{
		if(element.className != "noDay")
		{
			element.className = "hover";
		}
	}

	function drawBlue(element)
	{
		parentElement = element.parentNode;
		if(parentElement.tagName == "TR")
		{
			var childElement = null;
		    var children = parentElement.childNodes;

		    for (var i=1; i<children.length; i++)
		    {
				tagNameUpper = children.item(i).tagName;
				childNameUpper = "TD";
				if(tagNameUpper == childNameUpper)
				{
					if(children.item(i).className != "noDay")
					{
						children.item(i).className = "hover";
					}
		        }
			}//for       
		}
		drawBlueDay(element);
	}

	function drawBlueMonth(element)
	{
		parentTable = document.getElementById("calendarTable");		
		var parendChildren = parentTable.childNodes;
		//Get the TBODY tag
		for (var k=0; k<parendChildren.length; k++)
		{
			if(parendChildren.item(k).tagName == "TBODY")
			{
				parentTable = parendChildren.item(k);
			}
		}

		var childrenTR = parentTable.childNodes;
		var firstTR = false;
		for (var i=0; i<childrenTR.length; i++)
		{
			childTR = childrenTR.item(i);
			if(childTR.tagName == "TR" && firstTR)
			{				
				var childrenTD = childTR.childNodes;
				var firstTD = false;
				for (var j=0; j<childrenTD.length; j++)
				{
					tagNameUpper = childrenTD.item(j).tagName;
					childNameUpper = "TD";
					if(tagNameUpper == childNameUpper && firstTD == true)
					{			
						if(childrenTD.item(j).className != "noDay")
						{
							childrenTD.item(j).className = "hover";
						}
				       }
					else
					{
						if(tagNameUpper == childNameUpper)
						{
							firstTD = true;
						}
					}
				}//for	
			}//if
			else
			{
				if(childTR.tagName == "TR")
				{
					firstTR = true;
				}
			}			
		}//for
		drawBlueDay(element);
	}

	function drawInitial(parameterClassName)
	{		
		drawDate();
		parentTable = document.getElementById("calendarTable");
		var parendChildren = parentTable.childNodes;
		for (var k=0; k<parendChildren.length; k++)
		{
			if(parendChildren.item(k).tagName == "TBODY")
			{
				parentTable = parendChildren.item(k);
			}
		}
		var childrenTR = parentTable.childNodes;
		for (var i=0; i<childrenTR.length; i++)
		{
			childTR = childrenTR.item(i);
			var childrenTD = childTR.childNodes;
			for(var j = 0; j<childrenTD.length; j++)
			{
				child = childrenTD.item(j);
				if(child.className == "hover")
				{
					child.className = parameterClassName;
				}
			}		
		}
	}

	function changeCheckBoxes(element,fieldName)
	{
		if(element.checked)
		{
			enableCheckBoxes(fieldName);
		}
		else
		{
			disableCheckBoxes(fieldName);
		}
	}

	function enableCheckBoxes(fieldName)
	{
		var values = document.getElementsByName(fieldName);
		for(i = 0;i < values.length;i++)
		{
			values[i].checked = true;
		}
	}

	function disableCheckBoxes(fieldName)
	{
		var values = document.getElementsByName(fieldName);
		for(i = 0;i < values.length;i++)
		{
			values[i].checked = false;
		}
	}

	function submitEventDetail(eventInode)
	{
		eventField = document.getElementById("event");
		eventField.value = eventInode;
		var form = document.getElementById("calendarForm");
		form.action = "/about_mac/news_events/detail_view.dot";
		form.submit();
	}

	function goToDate(month,year)
	{
		var form = document.getElementById("calendarForm");
		form.action =  form.action  + "?month=" + month + "&year=" + year;
		form.submit();
	}

