var req;
var email_req;

function initCalendar() {
	if (BrowserDetect.browser == "Explorer" && BrowserDetect.version < 7) {
		toggleThePopUp('open', 'unsupported_browser');
		document.getElementById("calback").innerHTML = '';
		document.getElementById("day_heading").innerHTML = '';
		document.getElementById("mini_calendar").style.display = 'none';
	} else {
		cleanWhitespace(document.getElementById('calendar_list'));
	}
}


function gotoToday(){
	var today = new Date();
	var day = today.getDate();
	var month = today.getMonth()+1;
	var year = today.getYear();
	if(year<1000){
		year+=1900;
	}
	curDate=year+"-"+month+"-"+day;
	navigate();
}

function cal_setView(view){
	curView=view;
	var day = getCurDay();
	if (view=='month'){
		getObject("calendar").innerHTML = '';
		getObject('day_heading').style.visibility = 'visible';
		getObject('day_heading').style.display = 'block';
		getObject('big_month_year').style.display = 'block';
	} else {
		getObject("calendar").innerHTML = '';
		getObject('day_heading').style.visibility = 'hidden';
		getObject('day_heading').style.display = 'none';
		getObject('big_month_year').style.display = 'none';	
	}
	if (view!='month' && day==0){
		gotoToday();
	} else {
		navigate();
	}
}

function cal_prevNext(num){
	var day = getCurDay();
	var month = getCurMonth();
	var year = getCurYear();
	
	if(curView=='month'){
		month=Number(month)+Number(num);
		if (month==13){
			month=1;
			year=Number(year)+1;
		} else if (month==0){
			month=12;
			year=Number(year)-1;
		}
		
		var today = new Date();
		var todayDay = today.getDate();
		var todayMonth = today.getMonth()+1;
		var todayYear = today.getYear();
		if(todayYear<1000){
			todayYear+=1900;
		}		
		
		if(month==todayMonth && year==todayYear){
			day=todayDay;
		}else{
			day = 0;
		}
		curDate=year+"-"+month+"-"+day;
	}else if(curView=='week'){
		var newDate = new Date();
		month = Number(month)-1;
		day = Number(day)+(Number(num)*7);
		newDate.setFullYear(year,month,day);
		
		day = newDate.getDate();
		month = newDate.getMonth()+1;
		year = newDate.getYear();
		if(year<1000){
			year+=1900;
		}		
		curDate=year+"-"+month+"-"+day;
	}else{
		var newDate = new Date();
		month = Number(month)-1;
		day = Number(day)+(Number(num));
		newDate.setFullYear(year,month,day);
		
		day = newDate.getDate();
		month = newDate.getMonth()+1;
		year = newDate.getYear();
		if(year<1000){
			year+=1900;
		}		
		curDate=year+"-"+month+"-"+day;
	}
	navigate();
}

function downloadEvents(num){
	var day = getCurDay();
	var month = getCurMonth();
	var year = getCurYear();
	
	if(num=='all'){
		parent.location.href = "webcal://www.unquowa.org/calendar/php/calendar_ics.php?num="+num+"&curCalendarList="+curCalendarList;
	}else if(num!=null){
		parent.location.href = "php/calendar_ics.php?num="+num;
	}else{
		parent.location.href = "php/calendar_ics.php?day="+day+"&month="+month+"&year="+year+"&view="+curView+"&curCalendarList="+curCalendarList;
	}
}

function downloadEvent(num){
	parent.location.href = "php/calendar_ics.php?num="+num;
}

function printEvent(num){
	window.open('php/calendar_print_event.php?num='+num,'print_version','menubar=0,status=1,scrollbars=1,resizable=1,width=600,height=450,left = 320,top = 250');
}

function emailSingleEvent(num){
	var to_email = document.email_single_event.to_email.value;
	var from_email = document.email_single_event.from_email.value;
	var message = document.email_single_event.message.value;
	var day = getCurDay();
	var month = getCurMonth();
	var year = getCurYear();

		var parameters = "to_email="+to_email+"&from_email="+from_email+"&message="+message+"&num="+num;
	
	var url = "php/calendar_email_events.php";
	
	if(window.XMLHttpRequest) {
		email_req = new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		email_req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	email_req.open("POST", url, true);
	email_req.onreadystatechange = emailSingleEventCallback;
	email_req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	email_req.setRequestHeader("Content-length", parameters.length);
	email_req.setRequestHeader("Connection", "close");
	email_req.send(parameters);
}
function emailSingleEventCallback() {	
	if(email_req.readyState == 4) {
		var response = email_req.responseXML;	
		var resp = response.getElementsByTagName("response");
		var sent = resp[0].getElementsByTagName("sent")[0].childNodes[0].nodeValue;
		
		if (sent == 'sent'){
			document.email_single_event.style.display = 'none';
			getObject('popup_email_sent_message').innerHTML = "Email sent successfully.";
			getObject('popup_email_sent_message').style.display = 'block';
			document.email_single_event.to_email.value = "Send to email address";
			document.email_single_event.from_email.value = "Send from email address";
			document.email_single_event.message.value = "Your message";
			document.email_single_event.to_email.className = "form_light";
			document.email_single_event.from_email.className = "form_light";
			document.email_single_event.message.className = "form_light";
		}else{
			document.email_single_event.to_email.value = resp[0].getElementsByTagName("to_email")[0].childNodes[0].nodeValue;
			document.email_single_event.from_email.value = resp[0].getElementsByTagName("from_email")[0].childNodes[0].nodeValue;			
			if(document.email_single_event.to_email.value=='Invalid Email Address'){
				document.email_single_event.to_email.className = 'red';
			}
			if(document.email_single_event.from_email.value=='Invalid Email Address'){
				document.email_single_event.from_email.className = 'red';
			}
		}
	}
}

function emailEvents(num){
	var to_email = document.email_page_url.to_email.value;
	var from_email = document.email_page_url.from_email.value;
	var message = document.email_page_url.message.value;
	var day = getCurDay();
	var month = getCurMonth();
	var year = getCurYear();

	if(num!=null){
		var parameters = "to_email="+to_email+"&from_email="+from_email+"&message="+message+"&num="+num;
	}else{
		var parameters = "to_email="+to_email+"&from_email="+from_email+"&message="+message+"&day="+day+"&month="+month+"&year="+year+"&view="+curView+"&curCalendarList="+curCalendarList;
	}
	
	var url = "php/calendar_email_events.php";
	
	if(window.XMLHttpRequest) {
		email_req = new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		email_req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	email_req.open("POST", url, true);
	email_req.onreadystatechange = emailPageCallback;
	email_req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	email_req.setRequestHeader("Content-length", parameters.length);
	email_req.setRequestHeader("Connection", "close");
	email_req.send(parameters);
}

function emailEventsCallback(){
	
}

function navigate() {
	curDate = reformatDate(curDate);
	var day = getCurDay();
	var month = getCurMonth();
	var year = getCurYear();

	var url = "php/calendar.php?day="+day+"&month="+month+"&year="+year+"&view="+curView+"&curCalendarList="+curCalendarList+"&showAllCalendarList="+showAllCalendarList;
	
	if(window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	req.open("GET", url, true);
	req.onreadystatechange = callback;
	req.send(null);		
}

function callback() {	
	if(req.readyState == 4) {
		var response = req.responseXML;	
		var resp = response.getElementsByTagName("response");
		getObject("calendar").innerHTML = resp[0].getElementsByTagName("content")[0].childNodes[0].nodeValue;
		getObject('big_month_year').innerHTML = resp[0].getElementsByTagName("nameYear")[0].childNodes[0].nodeValue;
	}
}

function fade(amt) {
	if(amt <= 100) {
		setFade(amt);
		amt += 10;
		setTimeout("fade("+amt+")", 5);
    }
}

function setFade(amt) {
	var obj = getObject("calendar");
	amt = (amt == 100)?99.999:amt;
	obj.style.filter = "alpha(opacity:"+amt+")";
	obj.style.KHTMLOpacity = amt/100;
	obj.style.MozOpacity = amt/100;
	obj.style.opacity = amt/100;
}

function toggleDaySelected(id){
	var newSelectedDay = document.getElementById(id);
	if (newSelectedDay.className != "daySelected" && newSelectedDay.className != "holidaySelected"){
		if (newSelectedDay.className == "holiday"){
			newSelectedDay.className = "holidaySelected";
		} else {
			newSelectedDay.className = "daySelected";
		}
		var curDay = getCurDay();
		if (curDay!=0){
			if (getObject(curDate).className == 'holidaySelected'){
				getObject(curDate).className = "holiday";
			} else {
				getObject(curDate).className = "normalDay";
			}
		}
		curDate = id;
	}
}

function toggleCheckBox(id){
	obj = document.getElementById(id);
	obj.childNodes[2].onselectstart = function () { return false; }
	obj.childNodes[2].onmousedown = function () { return false; }	
	if (obj.childNodes[1].className != "color_checkbox sel"){
		obj.childNodes[1].className = "color_checkbox sel";
		var calShow = document.getElementsByName(id);
		for (i=0;i<calShow.length;i++){
			calShow[i].style.visibility = "visible";
			calShow[i].style.display = "block";
		}
		curCalendarList = curCalendarList+id+"|";
		curTotalCalendars = curTotalCalendars+1;
		if(curTotalCalendars == totalCalendars){
			var setSelectAllState = document.getElementById("select_all_calendars");
			setSelectAllState.childNodes[1].className = "color_checkbox sel";
			setSelectAllState.childNodes[2].firstChild.nodeValue = "Deselect All Calendars";
		}
	} else {
		obj.childNodes[1].className = "color_checkbox";
		var calHide = document.getElementsByName(id);
		for (i=0;i<calHide.length;i++){
			calHide[i].style.visibility = "hidden";
			calHide[i].style.display = "none";
		}
		var idMark = id+'|';
		curCalendarList = curCalendarList.replace(idMark, '');
		curTotalCalendars = curTotalCalendars-1;
		var setSelectAllState = document.getElementById("select_all_calendars")
		setSelectAllState.childNodes[1].className = "color_checkbox";
		setSelectAllState.childNodes[2].firstChild.nodeValue = "Select All Calendars";
	}
}

function toggleCalendarSelectAll(obj){
	obj.childNodes[2].onselectstart = function () { return false; }
	obj.childNodes[2].onmousedown = function () { return false; }	
	if (obj.childNodes[1].className != "color_checkbox sel"){
		obj.childNodes[1].className = "color_checkbox sel";
		obj.childNodes[2].firstChild.nodeValue = "Deselect All Calendars";
		var unselectedArray = getElementsByClassName("color_checkbox", "div", document.getElementById("calendar_list"));
		for (i=0;i<unselectedArray.length;i++){
			unselectedArray[i].className = "color_checkbox sel";
		}
		if (curView == 'month') {
			var calShow = getElementsByClassName("calevent", "div", document.getElementById("calendar"));
		} else if (curView == 'day') {
			var calShow = getElementsByClassName("dayView_event", "div", document.getElementById("calendar"));
		} else {
			var calShow = getElementsByClassName("weekView_event", "div", document.getElementById("calendar"));
		}
		for (i=0;i<calShow.length;i++){
			calShow[i].style.visibility = "visible";
			calShow[i].style.display = "block";
		}
		curCalendarList = showAllCalendarList;
		curTotalCalendars = totalCalendars;
	} else {
		obj.childNodes[1].className = "color_checkbox";
		obj.childNodes[2].firstChild.nodeValue = "Select All Calendars";
		var selectedArray = getElementsByClassName("color_checkbox sel", "div", document.getElementById("calendar_list"));
		for (i=0;i<selectedArray.length;i++){
			selectedArray[i].className = "color_checkbox";
		}
		if (curView == 'month') {
			var calShow = getElementsByClassName("calevent", "div", document.getElementById("calendar"));
		} else if (curView == 'day') {
			var calShow = getElementsByClassName("dayView_event", "div", document.getElementById("calendar"));
		} else {
			var calShow = getElementsByClassName("weekView_event", "div", document.getElementById("calendar"));
		}
		for (i=0;i<calShow.length;i++){
			calShow[i].style.visibility = "hidden";
			calShow[i].style.display = "none";
		}
		curCalendarList = "|";
		curTotalCalendars = 0;	
	}
}

function toggleMiniCalSelected(obj,day,month,year){
	var currSel = getElementsByClassName("selected", "td", document.getElementById("mini_calendar"));
	for (i=0;i<currSel.length;i++) {
		currSel[i].className = "";
	}

	obj.className = "selected";
	var curDay = getCurDay();
	var curMonth = getCurMonth();
	var curYear = getCurYear();
	
	if(curView=='month' && month==curMonth && year==curYear){
		var newSelectedDate = year+"-"+month+"-"+day;
		newSelectedDate = reformatDate(newSelectedDate);
		toggleDaySelected(newSelectedDate);			
	} else {
		curDate=year+"-"+month+"-"+day;
		navigate();		
	}
}

function getCurDay(){
	var curDateSplit = curDate.split("-");
	var curDay = curDateSplit[2];
	return curDay;
}

function getCurMonth(){
	var curDateSplit = curDate.split("-");
	var curMonth = curDateSplit[1];
	return curMonth;
}

function getCurYear(){
	var curDateSplit = curDate.split("-");
	var curYear = curDateSplit[0];
	return curYear;
}

function reformatDate(d) {
	var DateSplit = d.split("-");
	var Year = DateSplit[0];
	var Month = DateSplit[1];
	var Day = DateSplit[2];
	if (Month.length<2){
		Month='0'+Month;
	}
	if (Day.length<2){
		Day='0'+Day;
	}
	reformattedDate=Year+"-"+Month+"-"+Day;
	return reformattedDate;
}
