var selected_day = false;
var week_days = new Array();
var month_names = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
var day_names = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');

function show_icon_hover_div(div_type, event){
	if (mouseover_div_ids != "null" && typeof(mouseover_div_ids) != "undefined"){
		timeout_show_hover_div(mouseover_div_ids[div_type], event, 5);
	}
}

function hide_icon_hover_div(div_type){
	if (mouseover_div_ids != "null" && typeof(mouseover_div_ids) != "undefined"){
		var div_id = mouseover_div_ids[div_type];
	}
	if (div_id != null && typeof(div_id) != "undefined"){
		var div_id_array = div_id.split("_");
		div_id = div_id_array[0] + "_" + div_id_array[1] + "_" + div_id_array[2];
		hide_hover_div(div_id);
	}
}

function close_month_popup() {
	document.getElementById('month_day_view').style.display = 'none';
	//hide_event_details();
}

function month_popup(day) {
	var month_popup_div = document.getElementById('month_day_view');
	var cell = document.getElementById('cell'+day)
	var windowHeight=document.all? document.body.clientHeight : window.innerHeight;
	var view_day = document.getElementById('month_day_view_date');
	var content = document.getElementById('month_day_view_content');
	var loc = get_position(document.getElementById('cell'+day));

	month_popup_div.className = cell.className;

	if (typeof days =="undefined") {return;}//we're not done loading the calendar
	selected_day = day;
	
	view_day.innerHTML = 'Events for '+month_names[months[day]-1]+' '+days[day];
	
	// Add in any holidays
	var holiday_div = document.getElementById("holiday_div");
	holiday_div.innerHTML = "";
	if(typeof(holidays[day]) != "undefined")	{
		sep = "";
		for(i=0; i<holidays[day].length; i++)	{
			holiday_div.innerHTML += sep+holidays[day][i];
			sep = "<br/>";
		}
		holiday_div.style.display = "block";
	}
	else	{
		holiday_div.style.display = "none";
	}
	
	content.style.height = '300px';
	content.style.overflow = 'auto';
	content.innerHTML ='';

	var extra = am_pm = '';

	if (openedElementDetails != "" && openedElementClone != "" && openedElementParent != ""){
		openedElementParent.appendChild(openedElementDetails);
		//removeChildren(openedElementClone);
		openedElementDetails.style.display = 'none';
		//openedElementClone.parentNode.removeChild(openedElementClone);
		openedElementClone = "";
		openedElementDetails = "";
		openedElementParent = "";
	}
	
	if (typeof events[day] != 'undefined') {
		for(var i in events[day]) {
			if (typeof(events[day][i])!="function") {
				extra = '';
				if (events[day][i]['contiguous_event_loc']!= null && typeof events[day][i]['contiguous_event_loc'] !='undefined') {
					//extra = ' (Day '+events[day][i]['contiguous_event_loc']+' out of '+events[day][i]['max_contiguous']+')';
				}
	
				if(typeof(events[day][i]["custom_monthview_display"]) == "undefined")	{
					if(events[day][i]["all_day"]==1)	{
						if (typeof(events[day][i]['custom_header_display'])!="undefined" && events[day][i]['custom_header_display']!=null && events[day][i]['custom_header_display']) {
							var innerHTML = '<div class="event" onmouseover="highlight_event(this)" id="event_'+day+'_'+i+'" >'+events[day][i]['custom_header_display']+''+' ';
						}
						else {
							var innerHTML = '<div class="event" onmouseover="highlight_event(this)" id="event_'+day+'_'+i+'" onclick="display_event_details('+day+','+i+', this)">'+events[day][i]['subject']+''+' ';
						}
					}
					else	{
						if ( events[day][i]['start_time']) {
							var start = parseInt(events[day][i]['start_time'].substr(0,2), 10);
							if (start>=12) {
								start = (start-12)
								if (start==0) start = 12;
								am_pm = ' PM';
							} else {
								if (start==0) start = 12;
								am_pm = ' AM';
							}
							extra += ' at '+(start)+":"+events[day][i]['start_time'].substr(events[day][i]['start_time'].length-5, 2)+am_pm;
						}
						if ( events[day][i]['end_time']) {
							var end = parseInt(events[day][i]['end_time'].substr(0,2), 10);
							if (end>=12) {
								end = (end-12)
								if (end==0) end = 12;
								am_pm = ' PM';
							} else {
								if (end==0) end = 12;
								am_pm = ' AM';
							}
							extra += ' to '+(end)+':'+events[day][i]['end_time'].substr(events[day][i]['end_time'].length-5, 2)+am_pm;
						}
						
						if (typeof(events[day][i]['custom_header_display'])!="undefined" && events[day][i]['custom_header_display']!=null && events[day][i]['custom_header_display']) {
							var innerHTML = '<div class="event" onmouseover="highlight_event(this)" id="event_'+day+'_'+i+'">'+events[day][i]['custom_header_display']+extra+' ';
						}
						else {
							var innerHTML = '<div class="event" onmouseover="highlight_event(this)" id="event_'+day+'_'+i+'" onclick="display_event_details('+day+','+i+', this)">'+events[day][i]['subject']+extra+' ';
						}
					}
				}
				else	{
					var innerHTML = '<div class="event" onmouseover="highlight_event(this)" id="event_'+day+'_'+i+'" onclick="display_event_details('+day+','+i+', this)">'+events[day][i]["custom_monthview_display"]+''+' ';
				}
	
	
	
				innerHTML += '<div style="background-color:#fff;border:1px solid black;display:none;padding-top:0px;padding-bottom:9px" id = "detail_'+i+'">';
				innerHTML += '<div class="calendar-event-popup-menubar">';
				if (events[day][i]['_can_view']) {
					// If the event is here, we can view it
					innerHTML += '<a style="color:#000" onmouseout="hide_icon_hover_div(\'view\')" onmouseover="show_icon_hover_div(\'view\', event)" class = "view" href="javascript:view_event('+events[day][i]["event_id"]+', '+events[day][i]["event_manager_id"]+')">&nbsp;</a>';
				}
				if (events[day][i]['_can_copy']) {
					innerHTML += '<a style="color:#000" onmouseout="hide_icon_hover_div(\'copy\')" onmouseover="show_icon_hover_div(\'copy\', event)" class = "copy" href="javascript:edit_event('+day+', '+i+', \''+content.parentNode.id+'\', true)">&nbsp;</a>';
				}
				if (events[day][i]['_can_edit']) {
					innerHTML += '<a style="color:#000" onmouseout="hide_icon_hover_div(\'edit\')" onmouseover="show_icon_hover_div(\'edit\', event)" class = "edit" href="javascript:edit_event('+day+', '+i+', \''+content.parentNode.id+'\', false)">&nbsp;</a>';
				}
				if (events[day][i]['_can_delete']) {
					innerHTML += '<a style="color:#000" onmouseout="hide_icon_hover_div(\'remove\')" onmouseover="show_icon_hover_div(\'remove\', event)" class="delete" href="javascript:remove_event('+day+','+i+')">&nbsp;</a>';
				}
				if (events[day][i]['_can_delete'] || events[day][i]['_can_edit'] || events[day][i]['_can_copy']){
					innerHTML += "<img src = '../../images/divider_icon.gif' height='75%' style='padding:0px;margin:0px;' />";
				}
				if (events[day][i]['_can_set_permission']) {
					innerHTML += "<a style='color:#000' onmouseout=\"hide_icon_hover_div(\'permissions\')\" onmouseover=\"show_icon_hover_div(\'permissions\', event)\" class='permission' href='calendar_actions.php?flag=event_permission&event_manager_id="+events[day][i]["event_manager_id"]+"&event_id="+events[day][i]["event_id"]+"'>&nbsp;</a>";
				}
				if (events[day][i]['_can_set_share']) {
					innerHTML += "<a style='color:#000' onmouseout=\"hide_icon_hover_div(\'share\')\" onmouseover=\"show_icon_hover_div(\'share\', event)\" class='share' href='calendar_actions.php?flag=event_share&event_manager_id="+events[day][i]["event_manager_id"]+"&event_id="+events[day][i]["event_id"]+"'>&nbsp;</a>";
				}
				if ((events[day][i]['_can_set_permission'] || events[day][i]['_can_set_share']) && events[day][i]['_can_approve']){
					innerHTML += "<img src = '../../images/divider_icon.gif' height='75%' style='padding:0px;margin:0px;' />";
				}
				if(events[day][i]["_can_approve"])	{
					innerHTML += "<a style='color:#000' onmouseout=\"hide_icon_hover_div(\'approve\')\" onmouseover=\"show_icon_hover_div(\'approve\', event)\" class='approve' href='javascript:void(confirm_approve("+day+", "+i+"))'>&nbsp;</a>";
					innerHTML += "<a style='color:#000' onmouseout=\"hide_icon_hover_div(\'reject\')\" onmouseover=\"show_icon_hover_div(\'reject\', event)\" class='reject' href='javascript:void(confirm_reject("+day+", "+i+"))'>&nbsp;</a>";
				}
				if (!events[day][i]['_can_set_share'] && !events[day][i]['_can_set_permission'] && !events[day][i]['_can_delete'] && !events[day][i]['_can_edit'] && !events[day][i]['_can_copy']){
					//innerHTML += "Event Details";
				}
				innerHTML += "</div>";
				innerHTML += "<p style='font-weight: normal; font-size: small; color:black'>"+(events[day][i]['details'].length?events[day][i]['details']:'No event details.</p>');
	
				innerHTML += '</div></div>';
				content.innerHTML += innerHTML;
			}
		}
	}
	else {
		content.innerHTML = '<center>There are no events for this date.</center>';
	}
	
	month_popup_div.style.zIndex=99;
	month_popup_div.style.position = 'absolute';
	close_open_windows();
	current_open_div = month_popup_div;
	month_popup_div.style.display = 'block';
	month_popup_div.style.width = '300px';
	month_popup_div.style.height = 'auto';


	if ((loc[0]+315)>windowWidth) {
		loc[0] = loc[0]-((loc[0]+315) - windowWidth);
	}
	if (typeof(ymin)=="undefined") {
		ymin = 0;
	}
	month_popup_div.style.left = loc[0] - 7;
	if ((loc[1] - 7 + month_popup_div.clientHeight - document.body.scrollTop) > windowHeight && ymin< (loc[1] - 14 - ((loc[1] - 7 + month_popup_div.clientHeight - document.body.scrollTop) - windowHeight))) {
		month_popup_div.style.top = loc[1] - 14 - ((loc[1] - 7 + month_popup_div.clientHeight - document.body.scrollTop) - windowHeight);
	}
	else {
		month_popup_div.style.top = loc[1]-7;
	}

}



function highlight_event(element) {
	if (typeof highlighted_event !='undefined') {
		highlighted_event.className = 'event';
	}
	element.className='event-highlight';
	highlighted_event = element
}

var openedElementDetails = "";
var openedElementClone = "";
var openedElementParent = "";
var eventDate = new Array();
var eventTitle = new Array();

function close_detail(elem){
	elem = document.getElementById(elem);
	if (elem != null && typeof(elem) != "undefined"){
		elem.style.display = "none";
	}
}

function open_detail(elem){
	if (elem != null && typeof(elem) != "undefined"){
		document.getElementById(elem).style.display = "block";
	}
}

function max_min_details(elem, title_elem, new_elem_id){
	elem = document.getElementById(elem);
	title_elem = document.getElementById(title_elem);

	if (elem != null && typeof(elem) != "undefined"){
		if (elem.style.display == 'none'){
			elem.style.display = 'block';
			change_title(new_elem_id, true);
		}
		else{
			elem.style.display = 'none';
			change_title(new_elem_id, false);
		}
	}
}

function change_title(new_elem_id, maxBool){
	/*var title_elem = document.getElementById(new_elem_id + "_details_title");
	if (maxBool == true){
		title_elem.innerHTML = eventTitle[new_elem_id];
	}
	else{
		title_elem.innerHTML = eventDate[new_elem_id];
	}*/
}

function min_details(elem){
	elem = document.getElementById(elem);

	if (elem != null && typeof(elem) != "undefined"){
			elem.style.display = 'none';
	}
}

function check_is_details_showing(elem){
	if (elem != null && typeof(elem) != "undefined"){
		var parentElem = document.getElementById('month_day_view_details');
		for (var i = 0; i < parentElem.childNodes.length; i++){
			if (parentElem.childNodes[i].id != null && typeof(parentElem.childNodes[i].id) != "undefined"){
				if (parentElem.childNodes[i].id == elem.id){
					return true;
				}
			}
		}
	}
	return false;
}

function display_event_details(day,event,elem) {

	element = document.getElementById('detail_'+event);
	if (element != null && typeof(element) != "undefined"){
		element.style.display='block';
	}

	var parentElement = document.getElementById('month_day_view');

	var temp_elem = elem.cloneNode(true);
	var new_elem = temp_elem;
	new_elem.id = elem.id + "_clone";
	var detailsContainer = document.getElementById('month_day_view_details');
	if (!check_is_details_showing(new_elem)){
		new_elem.style.width = "100%";
		var the_date = document.getElementById('month_day_view_date').innerHTML;
		the_date = the_date.substring(11, the_date.length);
		var split_array = new_elem.innerHTML.split('\<');
		split_array_temp = split_array[0];
		if (split_array_temp.length > 38){
			split_array_temp = split_array_temp.substring(0, 35) + "...";
		}

		eventDate[new_elem.id] = the_date;
		eventTitle[new_elem.id] = split_array_temp;
		split_array[0] =  "<table class='calendar-event-details-popup-menu' width='100%' border='0'>\n";
		split_array[0] += " <tr>\n";
		split_array[0] += "  <td id='"+new_elem.id+"_details_title' colspan='1' onclick=\"max_min_details('"+new_elem.id+"_details', '"+new_elem.id+"_details_title', '"+new_elem.id+"');\" style='color:white; font-weight:bold;font-family:arial'>"+the_date+"<br />"+split_array_temp+"</td>\n";
		split_array[0] += "  <td align='right'>\n";
		split_array[0] += "   <img src = '../../images/calendar_close_button.gif' onclick=\"min_details('"+new_elem.id+"_details');close_detail('"+new_elem.id+"')\" />\n";
		split_array[0] += "  </td>\n";
		split_array[0] += " </tr>\n";
		split_array[0] += "</table><div id='"+new_elem.id+"_details' style='background-color:white;height:100%;'>\n";
		split_array[0] += element.innerHTML;
		var outputString = split_array[0];
		//for (var i = 1; i < split_array.length; i++){
			//outputString += "<" + split_array[i];
		//}
		outputString += "</div>";
		new_elem.innerHTML = outputString;
		new_elem.className = "calendar-event-details-popup";
		new_elem.setAttribute('onclick','void(0)');
		new_elem.setAttribute('onmouseover','void(0)');
		new_elem.style.display="block";
		detailsContainer.appendChild(new_elem);
	}
	else{
		open_detail(new_elem.id);
		max_min_details(new_elem.id+"_details", new_elem.id+"_details_title", new_elem.id);

	}
	if (element != null && typeof(element) != "undefiend"){
		element.style.display = "none";
	}

	if (parentElement.style.left.substring(0, parentElement.style.left.length - 2) > screen.width - 600){
		detailsContainer.style.left = -305;
	}
	else{
		detailsContainer.style.left = 305;
	}

	openedElementDetails = element;
	openedElementClone = new_elem;
	openedElementParent = elem;
}

function findPositionY(oLink) {
  if (oLink.offsetParent){
	for(posY = 0; oLink.offsetParent; oLink = oLink.offsetParent){
		posY += oLink.offsetTop;
	}
	return posY;
  }
  else {
	return oLink.y;
  }
}

function findPositionX(oLink) {
  if(oLink.offsetParent) {
	for(var posX = 0; oLink.offsetParent; oLink = oLink.offsetParent){
		posX += oLink.offsetLeft;
	}
	return posX;
  }
  else {
	return oLink.x;
  }
}

function setVisibleChildren(tbody){
	for(var i = 0; i < tbody.childNodes.length; i++){
		//tbody.childNodes[i].style.display = 'block';
	}
}

function removeChildren(node){
   //if(node == undefined || node == null){
	  //return;
   //}

//	while (node.hasChildNodes()){
//		node.removeChild(node.firstChild);
	//}
}



function edit_event(day, event, element_id, is_copy) {
	event_object = events[day][event];
	
	dim_main_window();		// Dim the main window
	
	url = "calendar_save_event.php?flag="+((is_copy)?"copy":"update")+"&event_manager_id="+event_object["event_manager_id"]+"&event_id="+event_object["event_id"];
	modal_dialog.setURL(url);
	modal_dialog.setCentered(true);
	modal_dialog.setWidth(Math.floor(get_win_width()*.9));
	modal_dialog.setHeight(Math.floor(get_win_height()*.9));
	modal_dialog.setHelp(false);
	modal_dialog.setEdge("sunken");
	modal_dialog.showScrollBars(true);
	modal_dialog.setResizable(true);
	modal_dialog.modal("modal_dialog_win");
	
	//close_open_windows();		// Do we wish to uncomment this line?
}


function new_event(element_id) {
	var new_event_year = current_year;
	if (current_month==12 && months[selected_day]==1) {
		new_event_year++;
	} else if (current_month==1 && months[selected_day]==12) {
		new_event_year--;
	}
	
	// add_event() will check for the request flag as is needed
	add_event(new_event_year+'-'+(months[selected_day]<10?'0'+months[selected_day]:months[selected_day])+'-'+(days[selected_day]<10?'0'+days[selected_day]:days[selected_day]), element_id);
}


function remove_event(day,event) {
	event_object = events[day][event];
	
	if (event_object['has_other_dates']==1) {

		var new_event_year = current_year;
		if (current_month==12 && months[selected_day]==1) {
			new_event_year++;
		} else if (current_month==1 && months[selected_day]==12) {
			new_event_year--;
		}

		document.getElementById('delete_event_title').innerHTML = event_object['subject'];
	    var div = document.getElementById('month_day_view');
		document.getElementById('recurrence_delete_date').value = new_event_year+'-'+(months[selected_day]<10?'0'+months[selected_day]:months[selected_day])+'-'+(days[selected_day]<10?'0'+days[selected_day]:days[selected_day]);
		delete_event_dialog.setPosition(div.style.left,div.style.top);
		div.style.display='none';
		//hide_event_details();
		delete_event_dialog.show();
	} else {
		if (confirm('Are you sure you want to remove this '+event_object["type"]+'?')) {
			window.location.href = './calendar_actions.php?event_id='+event_object['event_id']+'&event_manager_id='+event_object['event_manager_id']+'&flag=delete_event';
		}
	}
}


function view_month() {
	document.getElementById('month_calendar').style.display = 'block';
	document.getElementById('date_heading_text').innerHTML = month_names[(current_month-1)]+' '+current_year;
	var previous = 12;
	if (current_month>1) { previous = current_month-1;}
	var previous_link = document.getElementById('date_heading_previous_link');
	if (typeof previous_link != 'undefined' && previous_link!= null) {
		previous_link.href = './view_calendar.php?month='+previous;
		document.getElementById('date_heading_next_link').href = './view_calendar.php?month='+next;
	}
	var next = 1;
	if (current_month<12) { next = current_month+1;}
		document.getElementById('week_calendar').style.display = 'none';
	document.getElementById('list_link').href = './view_calendar_list.php?from_date='+calendar_start+'&to_date='+calendar_end;
}

function view_day(element) {
	var cell = week_days[element.id];
	cell_month = months[cell];
	cell_day = days[cell];
	cell_year = current_year;//still just temp
	window.location.href='./view_calendar_list.php?from_date='+cell_year+'-'+cell_month+'-'+cell_day+'&to_date='+cell_year+'-'+cell_month+'-'+cell_day+'&display=week&day='+cell_day+'&month='+cell_month+'&year='+current_year;
}

function next_week() {
	if (selected_day+7>=calendar_last_day_index) {
		if (current_month==12) {
			window.location.href='./view_calendar.php?month=1&year='+(current_year+1)+'&display=week&day='+(calendar_end_day<28?calendar_end_day+1:1);
		}
		else {
			window.location.href='./view_calendar.php?month='+(current_month+1)+'&display=week&day='+(calendar_end_day<28?calendar_end_day+1:1);
		}
	}
	else {
		selected_day+=7;
		view_week();
	}

}
function last_week() {
	if (selected_day-7<0) {
		if (current_month==1) {
			window.location.href='./view_calendar.php?month=12&day='+(calendar_start_day>1?calendar_start_day-1:28)+'&year='+(current_year-1)+'&display=week';
		}
		else {
			window.location.href='./view_calendar.php?month='+(current_month-1)+'&day='+(calendar_start_day>1?calendar_start_day-1:28)+'&display=week';
		}
	}
	else {
		selected_day-=7;
		view_week();
	}

}

function view_week(selectedDate, offsetDays) {
    close_open_windows();
	if (typeof selectedDate != "undefined")	{
        selected_day = parseInt(parseInt(selectedDate, 10) + parseInt(offsetDays, 10), 10);
	}

	document.getElementById('month_calendar').style.display = 'none';
	document.getElementById('week_calendar').style.display = 'block';
	var cell = selected_day;
	var start_day = cell- (cell % 7);
	document.getElementById('date_heading_text').innerHTML = month_names[months[start_day]-1]+' '+days[start_day]+', '+current_year+ ' - ' + month_names[months[start_day+6]-1]+' '+days[start_day+6]+', '+current_year;

	var previous_link = document.getElementById('date_heading_previous_link');
	if (typeof previous_link != "undefined" && previous_link!=null) {
		previous_link.href = 'javascript:last_week()';
		document.getElementById('date_heading_next_link').href = 'javascript:next_week()';
	}

	document.getElementById('list_link').href = './view_calendar_list.php?cal-view=list&from_date='+current_year+'-'+months[start_day]+'-'+days[start_day]+'&to_date='+current_year+'-'+months[start_day+6]+'-'+days[start_day+6];
	for(i=start_day;i<start_day+7;i++) {
		current_cell = document.getElementById('week_cell'+(i-start_day));
		current_cell.style.backgroundColor = '';
		current_cell.className = document.getElementById('cell'+(i)).className;
		current_cell.innerHTML = document.getElementById('cell'+(i)).innerHTML;
		week_days[current_cell.id] =i;

	}
	document.getElementById('month_day_view').style.display = 'none';
	//hide_event_details();
}


function view_this_day(){
    window.location = "./view_calendar_list.php?year="+current_year+'&month='+(months[selected_day]<10?'0'+months[selected_day]:months[selected_day])+'&view=day&day='+(days[selected_day]<10?'0'+days[selected_day]:days[selected_day]);
}

function view_this_week(viewType, selectedYear, selectedMonth, selectedDay){
	if (viewType == "list"){
//	    document.location = "./view_calendar_list.php?cal-view=list&month="+(selectedMonth)+"&year="+(selectedYear)+"&day="+(selectedDay)+"&view=week";
		var cell = selectedDay;
		var start_day = cell- (cell % 7);
		document.location = './view_calendar_list.php?cal-view=list&view=week&from_date='+selectedYear+'-'+selectedMonth+'-'+selectedDay+'&to_date='+selectedYear+'-'+selectedMonth+'-'+(selectedDay+7);
	}
	else{
		document.location = "./view_calendar.php?month="+(selectedMonth)+"&view=week&year="+(selectedYear)+"&day="+(selectedDay)+"&view=week";
	}  
}
