var filterDetailsHeight = '';

function selectFilterTabs(searchOn,quickOn,advancedOn){
	var searchLink = document.getElementById('searchLink');
	var searchFilterValue = document.getElementById('searchFilterValue');
	var quickLink = document.getElementById('quickLink');
	var advancedLink = document.getElementById('advancedLink');
	
	var searchFilter = document.getElementById('searchFilter');
	var quickFilterCell = document.getElementById('quickFilterCell');
	var advancedFilterCell = document.getElementById('advancedFilterCell');
	
	var filterSummaryCell = document.getElementById('filterSummaryCell');

	if (searchOn){
		displayOn(searchFilter);
		searchLink.className = "filterTabSelected";
		filterSummaryCell.style.display = "none";
		messageBanner.setMessage("All previous filters are removed when searching.");
	}
	else {
		displayOff(searchFilter);
		searchLink.className = "filterTabUnselected";
	}
	if (quickOn){
		displayOn(quickFilterCell);
		quickLink.className = "filterTabSelected";
		filterSummaryCell.style.display = "block";
	}
	else {
		displayOff(quickFilterCell);
		quickLink.className = "filterTabUnselected";
	}
	if (advancedOn){
		displayOn(advancedFilterCell);
		advancedLink.className = "filterTabSelected";
		filterSummaryCell.style.display = "block";
	}
	else {
		displayOff(advancedFilterCell);
		advancedLink.className = "filterTabUnselected";
	}	
}

function flipToAdvancedFilter()
{
	selectFilterTabs(false,false,true);
}

function flipToQuickFilter()
{
	selectFilterTabs(false,true,false);
}

function flipToSearch()
{
	selectFilterTabs(true,false,false);
}

function deleteFilter(filterNum) {
	setAskToLoadReport(true);
	if (activeReport){
		activeReport.reportFilters.deleteFilter(filterNum);
		refreshReport();
	}
    showFilters();
}

function setSearchText(text){
	var searchFilterValue = document.getElementById('searchFilterValue');
	searchFilterValue.value = text;
}

function performSearch(){
	var searchFilterValue = document.getElementById('searchFilterValue');
	var keyword = searchFilterValue.value;
	//warning on short keywords
	var minKeywordLength = 3;
	if (keyword.length < minKeywordLength){
		messageBanner.setMessage("Keywords must be at least " + minKeywordLength + " characters long.");
	}
	else {
		addFilterForSearch(keyword,true);
	}
	
	updateSearchLink(keyword);
}

function updateSearchLink(keyword) {
	var linkToSearch = document.getElementById('linkToSearch');

	// hide the "Link to this Search" link if no keywords were entered
	if (keyword == null || keyword == "") {
		linkToSearch.style.display = "none";
	}
	else {
		var keywordSearchUrl = contextPath + "/network/digest/view.mb?keywordSearch=" + encodeURIComponent(keyword);
		
		// appending the username to the url if the user is searching from "My Activities"
		if(isCallerActivitiesOnly()) {
		    var acct = new MBAccount();
		    keywordSearchUrl += "&digestUsername=" + acct.getUsername();
		}
	
		//update link to search
		var linkToSearch = document.getElementById('linkToSearch');
		linkToSearch.href = keywordSearchUrl;
	
		linkToSearch.style.display = "inline";
	}
}

function performFormSearch(){
	performSearch();
	//always return false because we do not want the form to submit ever
	return false;
}

function clearSearchAndRefresh(){
	clearFilters();
	var search = document.getElementById("searchFilterValue");
	if (search) { search.value = ''; }
	refreshReport();
	updateSearchLink("");
}
	
function addFilterForSearch(keyword,refresh) {
	if (activeReport){
		//clear all deleteable filters
		activeReport.reportFilters.clearFilters();
		//add keyword search
		var display = "Keyword = " + keyword;
		var qfvalue = '+' + keyword.replace(/\s/g,'* +') + "*";
		qfvalue = qfvalue.replace(/'/g,"''");
		var qftype = FILTER_TYPE_KEYWORD;
		notifyQuickFilterAdded(qftype,display,qfvalue,refresh);	
	}
}
	
function showFilterDetails()
{  
    // filterDetails.style.overflow = 'visible';
	var filterDetails = document.getElementById('filterDetails');
	var filterDetailsLink = document.getElementById('filterDetailsLink');
	//save for later
	if (filterDetailsHeight == ''){
		filterDetailsHeight = filterDetails.style.height;	
	}
    filterDetails.style.height = '';
    filterDetailsLink.innerHTML = "Hide Details";
    filterDetailsLink.setAttribute('href','javascript:hideFilterDetails()');
}

function hideFilterDetails()
{
	var filterDetails = document.getElementById('filterDetails');
	var filterDetailsLink = document.getElementById('filterDetailsLink');	
	
    //filterDetails.style.overflow = 'hidden';
    filterDetails.style.height = filterDetailsHeight;
    filterDetailsLink.innerHTML = "Show Details";
    filterDetailsLink.setAttribute('href','javascript:showFilterDetails()');
}

/**ITerates through each filter and shows the filter in the summary area.*/
function showFilters() {
	var filterDetailsLink = document.getElementById('filterDetailsLink');
	var TESTER_SPAN_START = "<span class='role_customer_service' >";
	var TESTER_SPAN_END = "</span>";
	var SPLITTER = "<br/>";
	var FILTER_SPAN_START = "<span class='small' style='white-space:nowrap;'>";
	var FILTER_SPAN_END = "</span>";	

	var DEL_START = " <a class='small' href='javascript:deleteFilter(";
	var DEL_END = ")'>Delete</a>";	
	var innerHTML = "";
	if (activeReport){
		var filterArray = activeReport.reportFilters.filters;
        //display the more details link only if there are many filters.
		if(filterArray.length > 3)
        {
        	filterDetailsLink.style.visibility = "visible";
        }
        else
        {
        	filterDetailsLink.style.visibility = "hidden";
        }
		for (var f = 0; f < filterArray.length;f++) {
			var revf = filterArray.length - f - 1;
			var acct = new MBAccount();
			var isCustomerService = acct.isCustomerService();

			if (filterArray[revf].hidden == false) {
				innerHTML += filterArray[revf].displayName;
				if (filterArray[revf].canDelete == true || isCustomerService) {
					innerHTML += DEL_START + revf + DEL_END;
				}
				innerHTML += SPLITTER;
			}
			else {
				if (isCustomerService) {
	               	//if (filterArray[revf].canDelete == true) {
	               		innerHTML += TESTER_SPAN_START + filterArray[revf].displayName + DEL_START + revf + DEL_END + TESTER_SPAN_END;
	               	//}
	               	//else{
	               		//innerHTML += TESTER_SPAN_START + filterArray[revf].displayName + TESTER_SPAN_END;
	        		//}
	                innerHTML += SPLITTER;					
				}
			}
		}
		if (innerHTML != "" && innerHTML != SPLITTER){
			var filterSummary = document.getElementById('FilterSummary');
			filterSummary.innerHTML = innerHTML;
		}
		else {
			var filterSummary = document.getElementById('FilterSummary');
			filterSummary.innerHTML = "No Filters<br />";
		}
	}
	else {
		alert('error, no active report.');
	}
}
