
//----------------------------------------------------------
// Script Initialization
//----------------------------------------------------------

var tag_dropdown;
var industry_dropdown;
var tech_dropdown;

var filter_results_heading;

var all_case_studies;

window.onload = function()
{
	var casestudies_container_children;
	var child;
	
	// get drop down controls
	tag_dropdown = document.getElementById('sel_tag_filter');
	industry_dropdown = document.getElementById('sel_industry_filter');
	tech_dropdown = document.getElementById('sel_tech_filter');
	
	// get header element
	filter_results_heading = document.getElementById('filter_results_text');
	
	// build array of case study divs
	all_case_studies = new Array();
	
	casestudies_container_children = document.getElementById('casestudies_container').childNodes;

	for( var i = 0; i < casestudies_container_children.length; i++ )
	{
		child = casestudies_container_children.item(i);
		if ((child.tagName == 'DIV') && (child.attributes['class'].value == 'casestudy'))
		{
			all_case_studies.push(child);
		}
	}
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

//----------------------------------------------------------
// Hide/Reveal Helpers
//----------------------------------------------------------

function showDiv(elem)
{
	if (elem.nodeType == 1)
	{
		elem.style.display = 'block';
	}
}

function hideDiv(elem)
{
	if (elem.nodeType == 1)
	{
		elem.style.display = 'none';
	}
}

function showAllDivs(elems)
{
	var elem;
	
	for( var i = 0; i < elems.length; i++ ) {
		elem = elems[i];
		showDiv(elem);			
	}
}

//----------------------------------------------------------
// Results Heading Helpers
//----------------------------------------------------------

function setResultsHeading(text)
{
	filter_results_heading.innerHTML = text;
}

function clearResultsHeading()
{
	setResultsHeading('');
}

function setResultsHeadingFilteredBy(filter_val)
{
	setResultsHeading("All Case Studies filtered by '" + filter_val + "':");
}

//----------------------------------------------------------
// DropDown Helpers
//----------------------------------------------------------

function getDropdownSelectedIndex(filter_dropdown)
{
	return filter_dropdown.selectedIndex;
}

function getDropdownSelectedText(filter_dropdown)
{
	return filter_dropdown.options[getDropdownSelectedIndex(filter_dropdown)].innerHTML;
}

//----------------------------------------------------------
// Utility Functions
//----------------------------------------------------------

function clearFilterResults()
{
	clearResultsHeading();
	showAllDivs(all_case_studies);
}

//----------------------------------------------------------
// Filtering Helpers
//----------------------------------------------------------

function doesCaseStudyMatchFilter(filter_type, filter_value, case_study_elem)
{
	var i;
	var child;
	var children;
	
	// find & inspect all lists in the case study
	children = case_study_elem.getElementsByTagName('UL');
	for ( i = 0; i < children.length; i++ )
	{
		child = children.item(i);
		// look for the list we're interested in
		if (child.attributes['class'].value == filter_type)
		{
			// iterate through list's contents (items)
			children = child.childNodes;
			for ( i = 0; i < children.length; i++ )
			{
				child = children.item(i);
				
				// IE can add extra spaces to list elements; trimming addresses this
				if (child.innerHTML.trim() == filter_value.trim())
				{
					// if list contains value we're filtering for, return true
					return true;
				}
			}
		}
	}
		
	return false;
}

function execFilter(filter_dropdown, filter_type)
{
	var case_study;
	
	// if first item in list is selected, reset filter results
	if (getDropdownSelectedIndex(filter_dropdown) == 0)
	{
		clearFilterResults();
	}
	else
	{
		// iterate through all case studies
		for( var i = 0; i < all_case_studies.length; i++ )
		{
			case_study = all_case_studies[i];
			
			// if case study contains value we're filtering for, show it;
			// otherwise, hide it
			if (doesCaseStudyMatchFilter(filter_type, getDropdownSelectedText(filter_dropdown), case_study))
			{
				showDiv(case_study);
			}
			else
			{
				hideDiv(case_study);
			}
		}
	}	
}

//----------------------------------------------------------
// Event Handlers called from document form elements
//----------------------------------------------------------

function filterTags()
{
	industry_dropdown.selectedIndex = 0;
	tech_dropdown.selectedIndex = 0;

	setResultsHeadingFilteredBy(getDropdownSelectedText(tag_dropdown));

	execFilter(tag_dropdown, 'tags');
}

function filterIndustries()
{
	tag_dropdown.selectedIndex = 0;
	tech_dropdown.selectedIndex = 0;

	setResultsHeadingFilteredBy(getDropdownSelectedText(industry_dropdown));

	execFilter(industry_dropdown, 'industries');
}

function filterTechnologies()
{
	industry_dropdown.selectedIndex = 0;
	tag_dropdown.selectedIndex = 0;

	setResultsHeadingFilteredBy(getDropdownSelectedText(tech_dropdown));

	execFilter(tech_dropdown, 'technologies');
}

function filtersReset()
{
	tag_dropdown.selectedIndex = 0;
	industry_dropdown.selectedIndex = 0;
	tech_dropdown.selectedIndex = 0;
	
	clearFilterResults();
}



