var DATA_FILTERING_FUNCTION = null;

var JID_FOR_SB_CONTENT = "#dfContent";
var JID_FOR_DFSC_BY_CLASS = JID_FOR_SB_CONTENT + " .dfsc";
var JID_FOR_DFC_KW = "#dfkwtext";
var JID_FOR_DFSC_BY_ID = "#dfsc";
var JID_FOR_DF_BY_ID = "#df";
var JID_FOR_DFC_BY_CLASS = "#dfContent .dfc[id!='dfckw']";
var JID_FOR_DF_BY_CLASS = JID_FOR_SB_CONTENT + " table.df";
var JID_FOR_DFC_BY_ID = "#dfc";
var JID_FOR_DF_CONTAINER = JID_FOR_SB_CONTENT + " table.df[id!='dftkw']";
var JID_FOR_FOCUS_AREA_CONTAINER = "#dfFocusArea";
var JID_FOR_FOCUS_AREA_OPT = JID_FOR_FOCUS_AREA_CONTAINER + " input[name='focusArea']";
var JID_FOR_SLIDER_CONTROL = "#outerLayout div.ui-slider";
var JID_FOR_CLEAR_DF_CONTROL = "#outerLayout a.clearDF";

var DF_TEXT = '<tr class="df"><td class="dfo"><input class="dfcb" type="radio" name="dfsc${index}" value="${value}" ${checked} /></td><td class="dft">${text}</td></tr>';
var DF_TEMPLATE = $.template(DF_TEXT);

var DF_ATTRIBUTE_NAMES = ["","","",""];

var DF_VALUES_JIDS =
[
	"input[name='dfsc0']:checked",
	"input[name='dfsc1']:checked",
	"input[name='dfsc2']:checked",
	"input[name='dfsc3']:checked"		
]

var DF_UPDATED_EVENT = "DF_UPDATED";

//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// Purpose:  Creates the <dataFilter> XML elements for
// the currently selected data filters.
// Last Revision Date:  12/10/2008
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
function GetDataFiltersDefinitions()
{
	try
	{
		var dfs = [];
		
		// Calculate the length of the current # of filter elements.
		var i = DF_VALUES_JIDS.length;
		
		// Numbers are considered false if and only if they are zero. 
		while (i--)
		{
			if (DF_ATTRIBUTE_NAMES[i].length > 0) 
			{
				dfs.push("<dataFilter attributeName='");
				dfs.push(DF_ATTRIBUTE_NAMES[i]);
				dfs.push("' attributeValue='");
				dfs.push($(DF_VALUES_JIDS[i]).val().replace("&", "~|~"));
				dfs.push("'/>");
			}
		}
	
		// Add the keyword filter.
		var kwf = $(JID_FOR_DFC_KW);
	
		if (kwf.length === 1)
		{
			var kw = $(kwf).val();
			
			if (kw.length > 0)
			{
				var rkw = kw.replace("&", "~|~");
				
				dfs.push("<dataFilter attributeName='mediaFileAbstract' attributeValue='");
				dfs.push(rkw);
				dfs.push("'/>");
				
				dfs.push("<dataFilter attributeName='mediaFileTitle' attributeValue='");
				dfs.push(rkw);
				dfs.push("'/>");
			}			
		}
		
		// The join method join two or more array objects element together with a specified separator.
		// The join method returns a String object that contains each element converted to a string and concatenated together.
		return dfs.join('');
	}
	catch (e)
	{
		alert("There was an exception during the GetDataFiltersDefinitions() function:\n\n" + e);
	}
}

//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// Purpose:  Retrieves the currently selected focus area.
// Last Revision Date:  12/10/2008
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
function GetDataFilterFocusAreaValue()
{
	try
	{
		return ($(JID_FOR_FOCUS_AREA_OPT + ":checked").val());
	}
	catch (e)
	{
		alert("There was an exception during the GetDataFilterFocusAreaValue() function:\n\n" + e);
	}
}

//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// Purpose:  Performs the AJAX request to retrieve data filtering options.
// Last Revision Date:  12/10/2008
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
function GetDataFilteringOptions()
{
	try
	{
		if (_DFServiceProxy != null) 
		{
			_DFServiceProxy.invoke("GetFilterOptionsForFilterFocusArea", 
			{
				"filterFocusArea":GetDataFilterFocusAreaValue()
			}, 
			function(dataFilter)
			{
				// Hide all of the dataFilter controls.
				$(JID_FOR_DF_BY_CLASS).hide();
				
				// Clear all captions.
				$(JID_FOR_DFC_BY_CLASS).html("");
								
				if (dataFilter != null) 
				{				
					// Set the captions.
					$.each(dataFilter.DataFilterCaptions, function(index, value)
					{
						$(JID_FOR_DFC_BY_ID + index.toString()).html(value);
					});
					
					// Clear the attribute names.
					$.each(DF_ATTRIBUTE_NAMES, function(index)
					{
						DF_ATTRIBUTE_NAMES[index] = "";
					});
					
					// Set the attribute names.
					$.each(dataFilter.DataFilterAttributeNames, function(index, value)
					{
						DF_ATTRIBUTE_NAMES[index] = value;
					});
					
					// Set the options.
					$.each(dataFilter.DataFilterOptions, function(index, value)
					{
						var JID = (JID_FOR_DF_BY_ID + index.toString());
						
						$(JID).empty();
						
						$.each(value, function(index2, value2)
						{
							$(JID).append(DF_TEMPLATE, {index:index,value: value2,text: value2,checked:""});
						});
						
						$(JID).append(DF_TEMPLATE, {index:index,value:"",text:"Show All",checked:"checked='checked'"});				
							
						$("#dftkw").show();				
						$(JID_FOR_DF_BY_CLASS + ":eq(" + (index + 1) + ")").show();
					});
					
					try
					{
						$(SECTION_SELECTORS.EVENT_TARGET).trigger(DF_UPDATED_EVENT);
					}
					catch (e)
					{
						$("#eventTarget").trigger(DF_UPDATED_EVENT);
					}			
				}
			}, 
			function(errorMessage)
			{
				alert(errorMessage);
			});
		}
	}
	catch (e)
	{
		alert("There was an exception during the GetDataFilteringOptions() function:\n\n" + e);
	}	
}

//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// Purpose:  Retrieves the current value for the keyword filter textbox control.
// Last Revision Date:  12/10/2008
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
function GetKeywordFilterText()
{
	try
	{
		return (jQuery.trim($(JID_FOR_DFC_KW).val()));
	}
	catch (e)
	{
		return ("");
	}
}

$(document).ready(function()
{	
	// Was a keyword text value specified in the querystring?
	$(JID_FOR_DFC_KW).val($.queryStringParameter('kw'));

    GetDataFilteringOptions();
		
	$(JID_FOR_DFC_KW).blur(function()
	{
		$(SECTION_SELECTORS.EVENT_TARGET).trigger(DF_UPDATED_EVENT);
	});
	
	$(JID_FOR_DFC_KW).bind("keypress", function(e) 
	{
		  var code = (e.charCode || e.keyCode);
		  
		  // Enter key was pressed:
		  if (code == 13)
		  {
		  	 $(SECTION_SELECTORS.EVENT_TARGET).trigger(DF_UPDATED_EVENT);
		  }
	});
	
    $(JID_FOR_FOCUS_AREA_OPT).click(function() {GetDataFilteringOptions();});	

	// Clear all selections by forcing the selection of the "Show All" option.
    $(JID_FOR_CLEAR_DF_CONTROL).click(function()
    {
		if ($(JID_FOR_SLIDER_CONTROL).length > 0)
		{
			$(JID_FOR_SLIDER_CONTROL).slider("value", 0);
		}		
			
		$(JID_FOR_DFC_KW).val("");
        $(JID_FOR_SB_CONTENT + " input.dfcb[value='']").attr("checked", "checked");
		$(SECTION_SELECTORS.EVENT_TARGET).trigger(DF_UPDATED_EVENT);
    });    
});