function select_venue(current_venue) {
	var url = "/venues/";
	if( current_venue != '0' ) {
		url = "/venues/?v=" +current_venue;
	}
	window.location = url;
}

function select_date(current_date) {
	var url = "/events/?d=" +current_date;
	window.location = url;
}

function evaluate_time() {
	var result = ""; //"(all-day event)"; 

	// we only want to specify a start time if it's not an all-day event
	var element = document.getElementById("bec-is-allday");
	if( !element.checked ) {
		// get and format start time
		element = document.getElementById("bec-start-hour");
		var start_hour = element.value; //parseInt(element.value);
		element = document.getElementById("bec-start-min");
		var start_min  = parseInt(element.value);
		element = document.getElementById("bec-start-ispm");
		var start_ampm = "am";
		if( element.checked ) {
			start_ampm = "pm";
		}
		if( start_min > 0 ) {
			var start_min_string = start_min;
			if( start_min < 10 ) {
				start_min_string = "0" +start_min_string;
			}
			result = "at " +start_hour +":" +start_min_string +start_ampm;
		}
		else {
			result = start_hour +start_ampm;
		}

		// get and format end time 
		element = document.getElementById("bec-has-no-endtime");
		if( !element.checked ) {
			var end_time_result = "";
			element = document.getElementById("bec-end-hour");
			var end_hour = parseInt(element.value); 
			element = document.getElementById("bec-end-min");
			var end_min  = parseInt(element.value);
			element = document.getElementById("bec-end-ispm");
			var end_ampm = "am";
			if( element.checked ) {
				end_ampm = "pm";
			}
			if( end_min > 0 ) {
				var end_min_string = end_min;
				if( end_min < 10 ) {
					end_min_string = "0" +end_min_string;
				}
				end_time_result = end_hour +":" +end_min_string +end_ampm;
			}
			else {
				end_time_result = end_hour +end_ampm;
			}
			
			result = result +" til " +end_time_result;
		}
	}

	return result;
}

function evaluate_enddate(recurType) {
	var result = "";
	var myDate = new Date();
	var month  = myDate.getMonth();
	var day    = myDate.getDate();
	var year   = myDate.getYear();

	switch( recurType ) {
		case "daily":
			if( document.getElementById("bec-daily-neverend").checked ) {
				result = "forever";
			}
			else {
				month = parseInt(document.getElementById("bec-recur-daily-end-month").value);
				day   = parseInt(document.getElementById("bec-recur-daily-end-date").value);
				year  = parseInt(document.getElementById("bec-recur-daily-end-year").value);

				result = "thru " +month +"/" +day +"/" +year;
			}
			break;
		case "weekly":
			if( document.getElementById("bec-weekly-neverend").checked ) {
				result = "forever";
			}
			else {
				month = parseInt(document.getElementById("bec-recur-weekly-end-month").value);
				day   = parseInt(document.getElementById("bec-recur-weekly-end-date").value);
				year  = parseInt(document.getElementById("bec-recur-weekly-end-year").value);

				result = "thru " +month +"/" +day +"/" +year;
			}
			break;
		case "monthly":
			if( document.getElementById("bec-monthly-neverend").checked ) {
				result = "forever";
			}
			else {
				month = parseInt(document.getElementById("bec-recur-monthly-end-month").value);
				day   = parseInt(document.getElementById("bec-recur-monthly-end-date").value);
				year  = parseInt(document.getElementById("bec-recur-monthly-end-year").value);

				result = "thru " +month +"/" +day +"/" +year;
			}
			break;
		case "yearly":
			if( document.getElementById("bec-yearly-neverend").checked ) {
				result = "forever";
			}
			else {
				month = parseInt(document.getElementById("bec-recur-yearly-end-month").value);
				day   = parseInt(document.getElementById("bec-recur-yearly-end-date").value);
				year  = parseInt(document.getElementById("bec-recur-yearly-end-year").value);

				result = "thru " +month +"/" +day +"/" +year;
			}
			break;
	}

	return result;
}

function evaluate_weekdays() {
	var result = "on ";
	var count = 0;
	if( document.getElementById("bec-weekly-day-s").checked ) {
		result = result +"Sun"; 
		count++;
	}
	if( document.getElementById("bec-weekly-day-m").checked ) {
		if( count > 0 ) {
			result = result +"/";
		}
		result = result +"Mon"; 
		count++;
	}
	if( document.getElementById("bec-weekly-day-t").checked ) {
		if( count > 0 ) {
			result = result +"/";
		}
		result = result +"Tue"; 
		count++;
	}
	if( document.getElementById("bec-weekly-day-w").checked ) {
		if( count > 0 ) {
			result = result +"/";
		}
		result = result +"Wed"; 
		count++;
	}
	if( document.getElementById("bec-weekly-day-r").checked ) {
		if( count > 0 ) {
			result = result +"/";
		}
		result = result +"Thu"; 
		count++;
	}
	if( document.getElementById("bec-weekly-day-f").checked ) {
		if( count > 0 ) {
			result = result +"/";
		}
		result = result +"Fri"; 
		count++;
	}
	if( document.getElementById("bec-weekly-day-a").checked ) {
		if( count > 0 ) {
			result = result +"/";
		}
		result = result +"Sat"; 
		count++;
	}

	return result;
}

function evaluate_single_date() {
	var result = "Occurs ";

	var startMonth = parseInt(document.getElementById("bec-start-month").value);
	var startDate  = parseInt(document.getElementById("bec-start-date").value);
	var startYear  = parseInt(document.getElementById("bec-start-year").value);
	var endMonth   = parseInt(document.getElementById("bec-end-month").value);
	var endDate    = parseInt(document.getElementById("bec-end-date").value);
	var endYear    = parseInt(document.getElementById("bec-end-year").value);

	if( !(( startMonth == endMonth ) && ( startDate == endDate ) && ( startYear == endYear )) ) {
		result = result +"from " +startMonth +"/" +startDate;
		result = result +" to "  +endMonth   +"/" +endDate +"," +evaluate_time();
	}
	else {
		result = result +"on " +startMonth +"/" +startDate +"/" +startYear +" " +evaluate_time();
	}

	return result;
}

function evaluate_monthly_relative(isRelativeDate){
	result = "";

	var date = parseInt(document.getElementById("bec-start-date").value);
	if( isRelativeDate ) {
		var month = parseInt(document.getElementById("bec-start-month").value);
		var year  = parseInt(document.getElementById("bec-start-year").value);
		var myDate = new Date();
		myDate.setFullYear(year, month-1, date);
		var dayOfWeek = myDate.getDay();
		var tempDate = date - 7;
		if( tempDate < 1 ) {
			result = "1st";
		}
		else {
			tempDate = tempDate - 7;
			if( tempDate < 1 ) {
				result = "2nd";
			}
			else {
				tempDate = tempDate - 7;
				if( tempDate < 1 ) {
					result = "3rd";
				}
				else {
					tempDate = tempDate - 7;
					if( tempDate < 1) {
						result = "4th";
					}
					else {
						result = "5th";
					}
				}
			}
		}
		switch( dayOfWeek ) {
			case 0: 
				result = result + " Sun"; 
				break;
			case 1:
				result = result + " Mon";
				break;
			case 2:
				result = result + " Tue";
				break;
			case 3:
				result = result + " Wed";
				break;
			case 4:
				result = result + " Thu";
				break;
			case 5:
				result = result + " Fri";
				break;
			case 6:
				result = result + " Sat";
				break;
		}
	}
	else {
		if( date === 1 ) {
			result = "1st";
		}
		else if( date === 2 ) {
			result = result + "2nd";
		}
		else if( date === 3 ) {
			result = result + "3rd";
		}
		else if( date === 21 ) {
			result = result + "21st";
		}
		else if( date === 22 ) {
			result = result + "22nd";
		}
		else if( date === 23 ) {
			result = result + "23rd";
		}
		else if( date === 31 ) {
			result = result + "31st";
		}
		else {
			result = result + date + "th";
		}
	}

	return result;
}

function evaluate_yearly_relative(isRelativeDate){
	result = "";

	var month = parseInt(document.getElementById("bec-start-month").value);
	var date  = parseInt(document.getElementById("bec-start-date").value);
	if( isRelativeDate ) {
		var year  = parseInt(document.getElementById("bec-start-year").value);
		var myDate = new Date();
		myDate.setFullYear(year, month-1, date);
		var dayOfWeek = myDate.getDay();
		var tempDate = date - 7;
		if( tempDate < 1 ) {
			result = "1st ";
		}
		else {
			tempDate = tempDate - 7;
			if( tempDate < 1 ) {
				result = "2nd";
			}
			else {
				tempDate = tempDate - 7;
				if( tempDate < 1 ) {
					result = "3rd";
				}
				else {
					tempDate = tempDate - 7;
					if( tempDate < 1) {
						result = "4th";
					}
					else {
						result = "5th";
					}
				}
			}
		}
		switch( dayOfWeek ) {
			case 0: 
				result = result + " Sun"; 
				break;
			case 1:
				result = result + " Mon";
				break;
			case 2:
				result = result + " Tue";
				break;
			case 3:
				result = result + " Wed";
				break;
			case 4:
				result = result + " Thu";
				break;
			case 5:
				result = result + " Fri";
				break;
			case 6:
				result = result + " Sat";
				break;
		}
		result = result +" of ";
		switch( month ) {
			case 1:
				result = result +" Jan";
				break;
			case 2:
				result = result +" Feb";
				break;
			case 3:
				result = result +" Mar";
				break;
			case 4:
				result = result +" Apr";
				break;
			case 5:
				result = result +" May";
				break;
			case 6:
				result = result +" Jun";
				break;
			case 7:
				result = result +" Jul";
				break;
			case 8:
				result = result +" Aug";
				break;
			case 9:
				result = result +" Sep";
				break;
			case 10:
				result = result +" Oct";
				break;
			case 11:
				result = result +" Nov";
				break;
			case 12:
				result = result +" Dec";
				break;
		}
	}
	else {
		result = month +"/" +date;
	}

	return result;
}

function evaluate_daily_recurrence() {
	var result = "Occurs every ";
	var element = document.getElementById("bec-daily-days");
	var days = parseInt(element.value); 
	if( days > 1 ) {
		result = result +element.value +" days";
	}
	else {
		result = result +" day";
	}
	result = result +" " +evaluate_time(); 
	result = result +", " +evaluate_enddate("daily");

	return result;
}

function evaluate_weekly_recurrence() {
	var result = "Occurs every "; 
	var element = document.getElementById("bec-weekly-weeks");
	var weeks = parseInt(element.value); 
	if( weeks > 1 ) {
		result = result +element.value +" weeks";
	}
	else {
		result = result +" week";
	}
	result = result +" "  +evaluate_time(); 
	result = result +", " +evaluate_weekdays();
	result = result +", " +evaluate_enddate("weekly");

	return result;
}

function evaluate_monthly_recurrence() {
	var result = "Occurs ";
	result = result +evaluate_monthly_relative(document.getElementById("bec-recur-monthly-relative").checked);
	result = result + " of every ";
	var element = document.getElementById("bec-monthly-months");
	var months = parseInt(element.value);
	if( months > 1 ) {
		result = result +element.value +" months";
	}
	else {
		result = result +" month";
	}
	result = result +" "  +evaluate_time();
	result = result +", " +evaluate_enddate("monthly");

	return result;
}

function evaluate_yearly_recurrence() {
	var result = "Occurs ";
	result = result +evaluate_yearly_relative(document.getElementById("bec-recur-yearly-relative").checked);
	result = result + " of every year";
	result = result +" "  +evaluate_time();
	result = result +", " +evaluate_enddate("yearly");

	return result;
}

function update_gui() {
	// variables we'll want to pass to status function
	var isAllDayEvent    = false;
	var hasNoEndTime     = true; 
	var isRecurringEvent = false;
	var recurType        = "none";

	// enable/disable the entire entry based on isevent checkbox
	var doDisable = !document.getElementById("bec-isevent").checked;
	document.getElementById("bec-is-allday").disabled   = doDisable;
	document.getElementById("bec-start-month").disabled = doDisable;
	document.getElementById("bec-start-date").disabled  = doDisable;
	document.getElementById("bec-start-year").disabled  = doDisable;
	document.getElementById("bec-start-hour").disabled  = doDisable;
	document.getElementById("bec-start-min").disabled   = doDisable;
	document.getElementById("bec-start-ispm").disabled  = doDisable;
	document.getElementById("bec-end-month").disabled   = doDisable;
	document.getElementById("bec-end-date").disabled    = doDisable;
	document.getElementById("bec-end-year").disabled    = doDisable;
	document.getElementById("bec-isrecurring").disabled = doDisable;

	// if event entry is not disabled, update accordingly 
	if( !doDisable ) {
		// enable/disable start/end times based on allday event checkbox
		isAllDayEvent = document.getElementById("bec-is-allday").checked; 
		document.getElementById("bec-start-hour").disabled     = isAllDayEvent;
		document.getElementById("bec-start-min").disabled      = isAllDayEvent;
		document.getElementById("bec-start-ispm").disabled     = isAllDayEvent;
		document.getElementById("bec-has-no-endtime").disabled = isAllDayEvent;
		document.getElementById("bec-end-hour").disabled       = isAllDayEvent;
		document.getElementById("bec-end-min").disabled        = isAllDayEvent;
		document.getElementById("bec-end-ispm").disabled       = isAllDayEvent;
		if( !isAllDayEvent ) {
			hasNoEndTime = document.getElementById("bec-has-no-endtime").checked; 
			document.getElementById("bec-end-hour").disabled = !(!isAllDayEvent && !hasNoEndTime);
			document.getElementById("bec-end-min").disabled  = !(!isAllDayEvent && !hasNoEndTime);
			document.getElementById("bec-end-ispm").disabled = !(!isAllDayEvent && !hasNoEndTime);
		}

		// enable/disable recurring event div based on recurring event check
		isRecurringEvent = document.getElementById("bec-isrecurring").checked;
		for( i=0; i<document.getElementById("bec-recurringdiv").childNodes.length; i++) {
			var recurElement = document.getElementById("bec-recurringdiv").childNodes[i];
			if( recurElement.checked && isRecurringEvent ) {
				recurType = recurElement.value;
			}
			recurElement.disabled = !isRecurringEvent && recurElement.checked;
		}

		update_recurtype(recurType);
	}
	update_status(!doDisable, isAllDayEvent, hasNoEndTime, isRecurringEvent, recurType);
}

function update_recurtype(recurtype) {
	var element = document.getElementById("bec-recurdetails");
	var element_children = element.childNodes;
	var element_to_show = null; 
	for( var i=0; i<element_children.length; i++) {
		element_children[i].className = "hidden"; 
	}

	switch( recurtype ) {
		case "daily":
			element_to_show = document.getElementById("bec-recurdaily");
			var isNeverEnding = document.getElementById("bec-daily-neverend").checked;
			document.getElementById("bec-recur-daily-end-month").disabled = isNeverEnding;
			document.getElementById("bec-recur-daily-end-date").disabled  = isNeverEnding;
			document.getElementById("bec-recur-daily-end-year").disabled  = isNeverEnding;
			break;
		case "weekly":
			element_to_show = document.getElementById("bec-recurweekly");
			var isNeverEnding = document.getElementById("bec-weekly-neverend").checked;
			document.getElementById("bec-recur-weekly-end-month").disabled = isNeverEnding;
			document.getElementById("bec-recur-weekly-end-date").disabled  = isNeverEnding;
			document.getElementById("bec-recur-weekly-end-year").disabled  = isNeverEnding;
			break;
		case "monthly":
			element_to_show = document.getElementById("bec-recurmonthly");
			var isNeverEnding = document.getElementById("bec-monthly-neverend").checked;
			document.getElementById("bec-recur-monthly-end-month").disabled = isNeverEnding;
			document.getElementById("bec-recur-monthly-end-date").disabled  = isNeverEnding;
			document.getElementById("bec-recur-monthly-end-year").disabled  = isNeverEnding;
			break;
		case "yearly":
			element_to_show = document.getElementById("bec-recuryearly");
			var isNeverEnding = document.getElementById("bec-yearly-neverend").checked;
			document.getElementById("bec-recur-yearly-end-month").disabled = isNeverEnding;
			document.getElementById("bec-recur-yearly-end-date").disabled  = isNeverEnding;
			document.getElementById("bec-recur-yearly-end-year").disabled  = isNeverEnding;
			break;
		default:
			element_to_show = document.getElementById("bec-norecurrence"); 
	}
	if( element_to_show !== null ) {
		element_to_show.className = "shown";
	}
}

function update_status(isEvent, isAllDayEvent, hasNoEndTime, isRecurringEvent, recurType) {
	var status_msg = "No event defined."; 

	if( isEvent ) {
		if( isRecurringEvent ) {
			switch( recurType ) {
				case "daily":
					status_msg = evaluate_daily_recurrence();
					break;
				case "weekly":
					status_msg = evaluate_weekly_recurrence();
					break;
				case "monthly":
					status_msg = evaluate_monthly_recurrence();
					break;
				case "yearly":
					status_msg = evaluate_yearly_recurrence();
					break;
				//default:
			}
		}
		else {
			status_msg = evaluate_single_date();
		}
	}

	var element = document.getElementById("bec-event-status");
	if( element != null ) {
		element.innerHTML = status_msg; 
	}
}

function update_weekly_recur_day(month, day, year) {
	if( month === "" ) {
		month = document.getElementById("bec-start-month").value;
	}
	if( day === "" ) {
		day = document.getElementById("bec-start-date").value;
	}
	if( year === "" ) {
		year = document.getElementById("bec-start-year").value;
	}

	var myDate = new Date();
	myDate.setFullYear(year, month-1, day);
	var dayOfWeek = myDate.getDay();
	switch( dayOfWeek ) {
		case 0: 
			document.getElementById("bec-weekly-day-s").checked = true;
			document.getElementById("bec-weekly-day-m").checked = false;
			document.getElementById("bec-weekly-day-t").checked = false;
			document.getElementById("bec-weekly-day-w").checked = false;
			document.getElementById("bec-weekly-day-r").checked = false;
			document.getElementById("bec-weekly-day-f").checked = false;
			document.getElementById("bec-weekly-day-a").checked = false;
			break;
		case 1:
			document.getElementById("bec-weekly-day-s").checked = false;
			document.getElementById("bec-weekly-day-m").checked = true;
			document.getElementById("bec-weekly-day-t").checked = false;
			document.getElementById("bec-weekly-day-w").checked = false;
			document.getElementById("bec-weekly-day-r").checked = false;
			document.getElementById("bec-weekly-day-f").checked = false;
			document.getElementById("bec-weekly-day-a").checked = false;
			break;
		case 2:
			document.getElementById("bec-weekly-day-s").checked = false;
			document.getElementById("bec-weekly-day-m").checked = false;
			document.getElementById("bec-weekly-day-t").checked = true;
			document.getElementById("bec-weekly-day-w").checked = false;
			document.getElementById("bec-weekly-day-r").checked = false;
			document.getElementById("bec-weekly-day-f").checked = false;
			document.getElementById("bec-weekly-day-a").checked = false;
			break;
		case 3:
			document.getElementById("bec-weekly-day-s").checked = false;
			document.getElementById("bec-weekly-day-m").checked = false;
			document.getElementById("bec-weekly-day-t").checked = false;
			document.getElementById("bec-weekly-day-w").checked = true;
			document.getElementById("bec-weekly-day-r").checked = false;
			document.getElementById("bec-weekly-day-f").checked = false;
			document.getElementById("bec-weekly-day-a").checked = false;
			break;
		case 4:
			document.getElementById("bec-weekly-day-s").checked = false;
			document.getElementById("bec-weekly-day-m").checked = false;
			document.getElementById("bec-weekly-day-t").checked = false;
			document.getElementById("bec-weekly-day-w").checked = false;
			document.getElementById("bec-weekly-day-r").checked = true;
			document.getElementById("bec-weekly-day-f").checked = false;
			document.getElementById("bec-weekly-day-a").checked = false;
			break;
		case 5:
			document.getElementById("bec-weekly-day-s").checked = false;
			document.getElementById("bec-weekly-day-m").checked = false;
			document.getElementById("bec-weekly-day-t").checked = false;
			document.getElementById("bec-weekly-day-w").checked = false;
			document.getElementById("bec-weekly-day-r").checked = false;
			document.getElementById("bec-weekly-day-f").checked = true;
			document.getElementById("bec-weekly-day-a").checked = false;
			break;
		case 6:
			document.getElementById("bec-weekly-day-s").checked = false;
			document.getElementById("bec-weekly-day-m").checked = false;
			document.getElementById("bec-weekly-day-t").checked = false;
			document.getElementById("bec-weekly-day-w").checked = false;
			document.getElementById("bec-weekly-day-r").checked = false;
			document.getElementById("bec-weekly-day-f").checked = false;
			document.getElementById("bec-weekly-day-a").checked = true;
			break;
	}
}

function update_endmonth(monthValue) {
	if( document.getElementById("bec-has-no-endtime").checked ) {
		var endMonthElement = document.getElementById("bec-end-month");
		for( var i=0; i<endMonthElement.childNodes.length; i++ ) {
			if( endMonthElement.childNodes[i].value == monthValue ) {
				endMonthElement.selectedIndex = endMonthElement.childNodes[i].index;
				endMonthElement.childNodes[i].selected == true;
				break;
			}
		}
	}
	update_weekly_recur_day(monthValue, "", "");
}

function update_enddate(dateValue) {
	if( document.getElementById("bec-has-no-endtime").checked ) {
		document.getElementById("bec-end-date").value = dateValue;
	}
}

function update_endyear(yearValue) {
	if( document.getElementById("bec-has-no-endtime").checked ) {
		document.getElementById("bec-end-year").value = yearValue;
	}
}

function update_endhour(hourValue) {
	if( document.getElementById("bec-has-no-endtime").checked ) {
		document.getElementById("bec-end-hour").value = hourValue;
	}
}

function update_endmin(minValue) {
	if( document.getElementById("bec-has-no-endtime").checked ) {
		document.getElementById("bec-end-min").value = minValue;
	}
}

function update_endispm(isPMValue) {
	if( document.getElementById("bec-has-no-endtime").checked ) {
		document.getElementById("bec-end-ispm").checked = isPMValue;
	}
}
