/* ---- */
/* AJAX */
/* ---- */
var loadingHTML 	= "<div class=\"ajax-loader\"><img src=\"images/ajax-loader.gif\" alt=\"Please Wait\" /> Loading...</div>";
var loadingHTML_sm 	= "<div class=\"ajax-loader-sm\"><img src=\"images/ajax-loader-sm.gif\" alt=\"Please Wait\" /> Loading...</div>";
var modalHTML 		= "<div class=\"ajax-loader\">Your file is being retrieved...</div>";

function loadCommElement( elmt, outID, callback )
{	
	if ( outID != 'undefined' )
		$(outID).html( modalHTML );
		
	// Tell the user what we are doing
	var url = elmt.attr("href");
	
	if ( typeof(outID) != 'undefined' && /(\.html?|\.cgi|\.php)/.test(url) )
	{
		// Show the loading graphic
		$(outID).html( loadingHTML_sm );
		$.post( url, { ajaxrand: Math.floor(Math.random()*5000) }, 
				callback || function(data) { $(outID).html( data ); });
	}
	else if ( /(\.html?|\.cgi|\.php|\.pdf)/.test(url) )
	{
		elmt.nyroModalManual();
	}
	else
	{
		elmt.commIFrame();
	}
}

/* ------------------ */
/* Comm jQuery Plugin */
/* ------------------ */
(function($) {
	$.comm = {
	  init : function() {
		if ( $.runOnce("comm") )
		{
			$.History.bind( function(hash) {
				var h = hash.split('&')[0];
				var link = $("#comm-menu a[href$=#"+h+"]:first");
				link.click();
			});
		}
		
		$.comm.ajaxURL( "#comm-menu" );
		$.comm.ajaxURL( "#nav-comm" );
	  }, // End .init()
		
	  ajaxURL : function(id) {
		$(id +" li a").attr("href", function() {
			return this.href.replace("?","#");
		});
	  } // End .ajaxURL
	  
	};
	
	// Extend the commTab functionality to work with CGI
	$.extend( $.commTabs, {
		initTabs : function() { },
		loadTab : function( link ) {
			if ( link.closest("li").hasClass("active") )
				return;
				
			// Show the loading graphic
			$("#comm-internal div:first").html( loadingHTML );
			
			$.post( link.attr("href").replace("#", "?ajax&"),
					{ ajaxrand: Math.floor(Math.random()*5000) }, 
					function(data) {
						$("#comm-internal div:first").html( data ).hide().fadeIn("medium");
						$.History.trigger();
					});
		}
	});
})(jQuery);

/* --------------------- */
/* Minutes jQuery Plugin */
/* --------------------- */
(function($) {
	$.commMinutes = {
	  init : function() {
		if ( $.runOnce("minutes") )
		{
			$(".min-date").livequery( 'click', function(event) {
				$(this).next(".min-files").slideToggle();
			});
			$(".min-files a").livequery( 'click', function(event) {
				loadCommElement( $(this), '#min-content' );
				event.preventDefault();
			});
		}
		
		$(".min-files").hide();
	  } // End .init()
	  
	}; // End $.commMinutes
})(jQuery);

/* --------------------- */
/* Finance jQuery Plugin */
/* --------------------- */
(function($) {
	$.commFinance = {
	  init : function() {
		if ( $.runOnce("finance") )
		{
			$.History.bind('finance', function(state) {
				var crumbs = state.split('&');
				// Send first-level crumbs to our years (#finance&{year})
				if ( crumbs.length > 1 && crumbs[1] )
					$("#fin-years a[href$=&"+crumbs[1]+"]").click();
					
				// Send second-level crumbs to our months (#finance&{year}&{month})
				if ( crumbs.length > 2 && crumbs[2] )
					$("#fin-months a[href$=&"+crumbs[2]+"]").click();
				else {
					// We don't have a second level, ensure we hide excess info
					$("#fin-months li").removeClass("active");
					$("#fin-files").slideUp("medium");
				}
				
				// Send third-level crumbs to our files (#finance&{year}&{month}&{file}
				if ( crumbs.lenth > 3 && crumbs[3] )
					$("#fin-files a[href$="+crumbs[3]+"]").click();
			});
			
			// Clicking a year link activates the months tabs
			$("#fin-years a").livequery( 'click', function(event) {
				if ( $(this).closest("li").hasClass("active") )
					return event.preventDefault();
				$("#fin-years li").removeClass("active");
				$(this).closest("li").addClass("active");
				$("#fin-files").slideUp("medium");
				$("#fin-months").slideDown("medium");
				$.commFinance.loadLevel( "#fin-months", $(this) );
			});
			// Clicking a month link activates the files tab
			$("#fin-months a").livequery( 'click', function(event) {
				if ( $(this).closest("li").hasClass("active") )
					return event.preventDefault();
				$("#fin-months li").removeClass("active");
				$(this).closest("li").addClass("active");
				$("#fin-files").slideDown("medium");
				$.commFinance.loadLevel( "#fin-files", $(this) );
			});
			// Clicking a file loads the content
			$("#fin-files a").livequery( 'click', function(event) {
				$("#fin-files li").removeClass("active");
				$(this).closest("li").addClass("active");
				loadCommElement( $(this) );
				event.preventDefault();
			});
		}
		
		$("#fin-months, #fin-files").hide();
		$.comm.ajaxURL("#fin-menuitems");
	  }, // End .init()
	  
	  loadLevel : function( levelid, elmt ) {
		$(levelid).html( loadingHTML_sm );
		$.post( elmt.attr("href").replace("#","?ajax&"), 
			{ ajaxrand: Math.floor(Math.random()*5000) },
			function(data) {
				$(levelid).hide().html( data ).fadeIn("medium");
				$.comm.ajaxURL(levelid);
				setTimeout( "$.History.trigger()", 80 );
			});
	  } // End .loadFiles()
	  
	};
})(jQuery);
