/* meetings.js */
$(document).ready(function() {
// getMeetings
$.getMeetings = function( meetingid ) {	
	$.get("/co/acsd50/Board.nsf/LT-GetMeetings?open&" + Math.random(), { query1: "x"}, 
		function(data){ 
			$("#meetings").html(data);
			// Remove empty categories
			$("h3", "#meeting-accordion").each( function() {
				theNext = $(this).next("div");
				if ( ! $.trim( $(theNext).text() ) ) {
					$(this).remove();
					$(theNext).remove();
				}
			});
			$("#meeting-accordion").accordion({ collapsible: false, autoHeight: false });  // meeting accordion
			$.attachMeetingListFunctions();
		}
	);					
}	
// getDrafts
$.getDrafts = function( meetingid ) {	
	$.get("/co/acsd50/Board.nsf/LT-GetDrafts?open&" + Math.random(), { query1: "x"}, 
		function(data){
			$("#drafts").html(data);
			$.attachMeetingListFunctions();
		}
	);
}
// getTemplates
$.getTemplates = function( meetingid ) {	
	$.get("/co/acsd50/Board.nsf/LT-GetTemplates?open&" + Math.random(), { query1: "x"}, 
		function(data){
			$("#templates").html(data);
			$.attachMeetingListFunctions();
		}
	);
}
// getMeeting
$.getMeeting = function( meetingid ) {	
	$("#meeting-content").empty();
	$.get("/co/acsd50/Board.nsf/LT-GetMeeting?open&" + Math.random(), { id: meetingid }, 
		function(data){ 
			$("#meeting-content").html(data);
			$("#current-meeting").val( meetingid );
			
			// Show & Hide Buttons
			if ( ! meetingid || meetingid == "draft" || meetingid == "template") {
				// New Meeting
				$(".content-navigation img.edit", "#wrap-meeting").addClass("display-none");
				$(".content-navigation img.save", "#wrap-meeting").removeClass("display-none");
				$("#edit-meeting", "#wrap-meeting").show();
				$("#view-meeting", "#wrap-meeting").hide();
			} else {
				// Existing Meeting
				$(".content-navigation img.edit", "#wrap-meeting").removeClass("display-none");
				$(".content-navigation img.save", "#wrap-meeting").addClass("display-none");
				$("#edit-meeting", "#wrap-meeting").hide();
				$("#view-meeting", "#wrap-meeting").show();
			}
			// Attach Button hover info
			$.updateToolTips( $("#tab-meetings .content-navigation img") );
			// Attach Meeting Functions
			$.attachMeetingFunctions();
		}
	);					
}	
// attachMeetingFunctions
$.attachMeetingFunctions = function() {						
	// Big Buttons
	$(".meeting-buttons a", "#wrap-meeting").hover( function () { $(this).addClass("ui-state-hover"); }, function () { $(this).removeClass("ui-state-hover"); } );
	// Show the content area
	$("#wrap-meeting").closest(".pane-content").show();
}	
// Meeting click - live
$("#tab-meetings .pane-navigation .meeting").live("click", function() { 		
	if ( $.checkChangesMade() ) { return; }   // if data needs to be saved, then don't advance
	var meetingID = $(this).attr('id');
	// left nav highlighting
	$("#tab-meetings .pane-navigation .meeting").removeClass("active");
	$(this).addClass('active'); 
	$("#current-meeting").val( meetingID );
	$.getMeeting( meetingID );
	// clear current-agenda-item prior to loading meeting, if no goto id is set
	if (queryGotoID == "") {
		$("#current-agenda-item").val('')
	}
	$.getAgenda( meetingID ); 
	$("#li-agenda").show();
	// if goto id is specified then show Agenda tab
	if (queryGotoID != "") {
		$("#li-agenda > a").trigger("click");
		queryGotoID = "";  // clear goto id so subsequent meeting loads don't automatically trigger this item
	}
	
	return false;
});
// attachMeetingListFunctions
$.attachMeetingListFunctions = function() {	
	// If a meeting is current, then open it 
	var currentmeetingid = $("#current-meeting").val();
//	var currentmeetingstatus = $("#current-meeting-status").val();
	if ( currentmeetingid != "" ) {
		var item = $("a[id=" + currentmeetingid + "]:first", "#tab-meetings");
		$(item).parent().prev("h3").trigger("click");  
		$(item).trigger("click");
	}
	if ( ! isPublisher ) { return }
	// Meeting right-click
	$(".meeting", "#meetings").contextMenu('myMenu1', {
		onShowMenu: function(e, menu) {
			var preliveoak = $(e.target).closest("a").attr("preliveoak");
			$('li', menu).not("#current, #delete, #duplicate, #draft", menu).remove();
			if (preliveoak == "1") { $('li', menu).filter("#duplicate", menu).remove(); }
			return menu;
		}, 
		bindings: {
			'duplicate': function(t) {
				$.duplicateMeeting( $(t).attr('id') );
			},
			'delete': function(t) {
				if ( confirm('Delete the entire meeting?') ) { 
					$.deleteMeetingByID( $(t).attr('id') );
					$(t).hide();
					$.getMeetings();
				}
			},
			'current': function(t) {
				$.post("/co/acsd50/Board.nsf/LT-ToggleCurrent?open&" + Math.random(), 
					{ id : $(t).attr('id') }, 
					function(data){ 
						switch($.trim(data))
						{
							case "1" : $( ".meeting" + $(t).attr('id') ).addClass('current'); break;
							case "0" : $( ".meeting" + $(t).attr('id') ).removeClass('current'); break;
						}
						$.getPacket();
						$.getMeetings();
					}
				);
			},
			'draft': function(t) {
				$.meetingMakeDraft( $(t).attr('id') );
			}
		}
	});
	// Drafts right-click
	$(".meeting", "#drafts").contextMenu('myMenu1', {
		onShowMenu: function(e, menu) {
			var preliveoak = $(e.target).closest("a").attr("preliveoak");
			$('li', menu).not("#delete, #duplicate, #active", menu).remove();
			if (preliveoak == "1") { $('li', menu).filter("#duplicate", menu).remove(); }
			return menu;
		}, 
		bindings: {
			'duplicate': function(t) {
				$.duplicateMeeting( $(t).attr('id') );
			},
			'delete': function(t) {
				if ( confirm('Delete the entire meeting?') ) { 
					$.deleteMeetingByID( $(t).attr('id') );
					$(t).hide();
					$.getMeetings(); 
				}
			},
			'active': function(t) {
				$.meetingMakeActive( $(t).attr('id') );
			}
		}
	});
	// Template right-click
	$(".meeting", "#templates").contextMenu('myMenu1', {
		onShowMenu: function(e, menu) {
			var preliveoak = $(e.target).closest("a").attr("preliveoak");
			$('li', menu).not("#delete, #draftfromtemplate", menu).remove();
			if (preliveoak == "1") { $('li', menu).filter("#duplicate", menu).remove(); }
			return menu;
		}, 
		bindings: {
			'draftfromtemplate': function(t) {
				$.duplicateMeeting( $(t).attr('id') );
			},
			'delete': function(t) {
				if ( confirm('Delete the entire meeting?') ) { 
					$.deleteMeetingByID( $(t).attr('id') );
					$(t).hide();
					$.getMeetings();
				}
			}	
		}
	});
}	
// deleteMeetingByID
$.deleteMeetingByID = function( uniqueid ) {	
	$.get("/co/acsd50/Board.nsf/LT-DeleteMeetingByID?open&" + Math.random(), { id: uniqueid }, 
		function(data){ 
			$.quickAlert("Meeting Deleted", "The meeting has been deleted.", 2000);
		}
	);					
}	
// Edit Meeting
$(".content-navigation img.edit", "#wrap-meeting").live( "click", function() {
	// show & hide buttons
	$(".content-navigation img.edit", "#wrap-meeting").addClass("display-none");
	$(".content-navigation img.save", "#wrap-meeting").removeClass("display-none");
	$("#view-meeting", "#wrap-meeting").hide();
	$("#edit-meeting", "#wrap-meeting").show();
	return false;
		
});
// Save Meeting
$(".content-navigation img.save", "#wrap-meeting").live( "click", function() {
	var meetingid = $("[name=unique]", "#meeting-form").val();
	var meetingstatus = $("[name=status]", "#meeting-form").val();
	var query = $("#meeting-form").serialize();
	$.ajax({
		type: "POST",
		url: "/co/acsd50/Board.nsf/LT-SaveMeeting?open&" + Math.random(),
		dataType: "html",
		data: query,
		success: function(){
			$("#current-meeting").val( meetingid );
			$("#current-meeting-status").val( meetingstatus );
			$("#li-meetings .tab-menuitems [key=" + meetingstatus + "]").trigger("click");
		}
	});
	return false;	
			
});
// Generate Minutes
$.generateMinutes = function() {
	$.ajax({ 
		type: "POST", 
		url: "/co/acsd50/Board.nsf/LT-GenerateMinutes?open&login&id=" + Math.random(), 
		cache: false, 
		dataType: "html",
		data: { id: $("#current-meeting").val() },
		success: function(data){ 
			$("#minutes .hidden").html(data);  // put in hidden div for numbering
			// number the agenda from the current open meeting
			// $("#minutes .hidden").find(".category, .item").each( function() {
			//	$(this).find(".order").html( $("#agenda").find("#" + $(this).attr("unique")).find(".order").text()  );
			// }); 
			$("#minutes textarea").val( $("#minutes .hidden").html() );  // put in editor
		}
	});
}
// Get Minutes
$.getMinutes = function() {
	$.ajax({ 
		type: "POST", 
		url: "/co/acsd50/Board.nsf/LT-GetMinutes?open&login" + Math.random(), 
		cache: false, 
		dataType: "html",
		data: { id: $("#current-meeting").val() },
		success: function(data){ 
			if ( $.trim(data) == "" ) { 
				$.generateMinutes();
			} else {
				$("#minutes textarea").val(data);
			}
		}
	});
}
// Save Minutes
$.saveMinutes = function() {
	thehtml = $("#minutes textarea").val();
	$("#minutes .textonly").html( thehtml );
	$.ajax({ 
		type: "POST", 
		url: "/co/acsd50/Board.nsf/LT-SaveMinutes?open&login&id=" + Math.random(), 
		cache: false, 
		dataType: "html",
		data: { id: $("#current-meeting").val(), minutes: $("#minutes textarea").val(), minutes_text: $("#minutes .textonly").text() },
		success: function(data){ 
		}
	});
}
// Generate Meeting Minutes button
$("#btn-generate-minutes").live("click", function() {
	// minutes
	$.windowResize();
	$.addMinutesEditors();
	$("#minutes-dialog").dialog("open");
	return false;
});
// View Meeting Minutes button
$(".btn-view-minutes").live("click", function() {
	meetingid = $(this).attr("key");
	// minutes
	$.ajax({ 
		type: "POST",
		url: "/co/acsd50/Board.nsf/LT-GetMinutes?open&login" + Math.random(), 
		cache: false, 
		dataType: "html",
		data: { id: meetingid },
		success: function(data){ 
			$("#generic-dialog").html(data);
			$("#generic-dialog").dialog("open");
		}
	});
	return false;
});
// Meeting Minutes Dialog
$("#minutes-dialog").dialog({
	autoOpen: false,
	bgiframe: true,
	width: $(window).width()-50,
	height: $(window).height()-50,
	modal: true,
	resizable: false,
	draggable: false,
	buttons: {
		'Close': function() {
			if ( ! confirm("Close without saving changes?") ) { return false; }
			$(this).dialog('close');
			$.windowResize();
		},
		'Save': function() {
			$(this).dialog('close');
			$.saveMinutes();
			$.windowResize();
		},
		'Print': function() {
			// Copy to print div
			$("#for-print").html( $("#minutes textarea").val() );
			window.print();
		}
	}
});
// Generate Minutes button
$("#btn-generate-minutes2").live("click", function() {
	if ( ! confirm("Generate minutes?  This will overwrite any changes.") ) { return false; }
	$.generateMinutes();
	$.windowResize();
});
// Add Minutes Editors
$.addMinutesEditors = function() {
	$("#minutes textarea").each( function() {
		var id = $(this).attr("id");
		var instance = CKEDITOR.instances[ id ];
		if ( instance ) { CKEDITOR.remove( instance ); }
	}).ckeditor( 
		function( ) { 
			$.getMinutes(); 
		}, 
		{ customConfig : '/co/acsd50/Board.nsf/javascript/ckconfig-minutes.js?open&' } 
	);
};
// getCurrentMeetingStatus
$.getCurrentMeetingStatus = function() {
	return $("#current-meeting-status").val();	
};
// initialize
$(".tab-menuitem", "#li-meetings").live( "click", function() {
	var key = $(this).attr("key");
	$("#tab-meetings .pane-navigation > div").not(".search-box, .btn-navigation").hide();
	$("#current-meeting-status").val( key );
	// Destroy Agenda Item Editors
	// $.destroyAgendaItemEditors();
	$("#agenda-content").empty();
	$("#li-agenda").hide();
	// Hide Meeting Content
	// $("#meeting-content").empty();
	// Empty Left Nav
	$("#meetings, #drafts, #templates, #my-agenda-items").empty();
	switch (key)
	{
		case "active":
			$("#tab-meetings #wrap-meetings").show();
			$("#tab-meetings .tab-title").html("Active Meetings");
			$.getMeetings();
			break;
		case "draft":
			$("#tab-meetings #wrap-drafts").show();
			$("#tab-meetings .tab-title").html("Draft Meetings");
			$.getDrafts();
			break;
		case "template":
			$("#tab-meetings #wrap-templates").show();
			$("#tab-meetings .tab-title").html("Meeting Templates");
			$.getTemplates();
			break;
		case "my-items":
			$("#tab-meetings #wrap-my-items").show();
			$("#tab-meetings .tab-title").html("My Agenda Items");
			$.getMyItems();
			break;
		case "workflow":
			$("#tab-meetings #wrap-workflow").show();
			$("#tab-meetings .tab-title").html("Workflow");
			$.getWorkflowStatus();
			break;
		default:
			$("#tab-meetings #wrap-meetings").show();
	}
	
});
// Add Draft Meeting button
$("#wrap-drafts .btn-navigation img").click( function() {
	if ( $.checkChangesMade() ) { return; }   // if data needs to be saved, then don't advance
	$("#current-meeting").val("");
	$("#tab-meetings .pane-navigation .meeting").removeClass("active");
	$("#agenda-content").html("");
	$("#agenda").html("");
	$.getMeeting("draft");
});
// Add Meeting Template button
$("#wrap-templates .btn-navigation img").click( function() {
	if ( $.checkChangesMade() ) { return; }   // if data needs to be saved, then don't advance
	$("#current-meeting").val("");
	$("#tab-meetings .pane-navigation .meeting").removeClass("active");
	$("#agenda-content").html("");
	$("#agenda").html("");
	$.getMeeting("template");
});
// Agenda button
$("#btn-view-agenda").live("click", function() {
	$("#li-agenda > a").trigger("click");
	return false;
});
// Initial Setup
// $("#tab-meetings #wrap-meetings").show();
// $("#tab-meetings .tab-title").html("Active Meetings");
});
