// Querystring parameters should follow this order if they exist
// 1. q=[text]
// 2. type=[filter by category]
// 3. sort=[date|relevance]
// 4. dir=[asc|desc]

function submitSearch(search_location, e)
{

    var search_url = "/search.aspx";    
    var query = "";
    var search_submit = false;
	var is_enter = false;
    
    // Check if function is being called from onKeyPress event of search boxes. 
    if(search_location == "topSearchText" || search_location == "headerSearchText" || search_location == "formSearchText")
    {
		// if enter key is not pressed don't submit
		if (window.event) { e = window.event; }
		if (e.keyCode == 13)
		{
			search_submit = true;
			is_enter = true;
		}   
    }
    else
    {
        // Button Click
        search_submit = true;
    }
    
    if(search_submit == true)
    {

        filter = "";   
        sort = "";
        query = window.location.search;
    
        // Retain Filter
        if(query.indexOf("&type") > 0)
        {
            if(query.indexOf("&sort") > 0)
            {
                filter = query.substring(query.indexOf("&type"), query.indexOf("&sort"))
            }
            else
            {
                filter = query.substring(query.indexOf("&type"))
            }
        }

        // Retain Sort Param
        if(query.indexOf("&sort") > 0)
        {
            sort = query.substring(query.indexOf("&sort"))
        }
		else
		{
			// Default Sort to Date Descending Order except for forms.
			/*
			if(search_location != "formSearch" && search_location != "formSearchText")
			{
				sort = "&sort=date&dir=desc";
			}
			*/
		}
    
        if(search_location == "topSearch" || search_location == "topSearchText")
        {
            var searchTxt = document.getElementById("topSearch");
            if(searchTxt)
            {
                query = "?q=" + escape(searchTxt.value) + filter + sort;
            }
            else
            {
                query = "?q=" + filter + sort;
            }
        }
        else if(search_location == "headerSearch" || search_location == "headerSearchText")
        {
            var searchTxt = document.getElementById("headSearch");
            if(searchTxt)
            {
                query = "?q=" + escape(searchTxt.value) + filter + sort;
            }
            else
            {
                query = "?q=" + filter + sort;
            }
        }
        else if(search_location == "formSearch" || search_location == "formSearchText")
        {
            var searchTxt = document.getElementById("formSearch");
            if(searchTxt)
            {
                query = "?q=" + escape(searchTxt.value);
                query += "&type=forms" + sort;
            }
            else
            {
                query = "?q=&type=forms" + sort;
            }
        }
        window.location = search_url + query;

        if(is_enter == true)
        {
            return false;
        }
    }
}

function filterSearch(filter_type, sort_order)
{

    var search_url = "/search.aspx";    

    sort = "";
    query = window.location.search;
    
    
    if(sort_order == "date_desc")
    {
        sort = "&sort=date&dir=desc";
    }
    else if(sort_order == "date_asc")
    {
        sort = "&sort=date&dir=asc";        
    }
    else
    {
        sort = "";
    }
    
    // Retain Sort Param
    /*
    if(query.indexOf("&sort") > 0)
    {
        sort = query.substring(query.indexOf("&sort"))
    }
    */
    
    // Retain Query Param
    if(query.indexOf("?q=") < 0)
    {
        query = "?q=";
    }
    else if(query.indexOf("&") > 0)
    {
        query = query.substring(query.indexOf("?"), query.indexOf("&"));
    }
    
    // Add Filter Param
    if(filter_type != "")
    {
        query += "&type=" + filter_type;
    }
    
    query += sort;
                    
    window.location = search_url + query;
    
    return false;
}

// Function for the Sort By links on the Search Results page.
function sortSearch(sort_type)
{
    var search_url = "/search.aspx";
    
    filter = "";  
	sortdirection = "";
    query = window.location.search;
	
	// Assign sort direction if exists.
	if(query.indexOf("&sort=date") > 0)
	{
		if(query.indexOf("&dir") > 0)
		{
			if(query.indexOf("&dir=desc") > 0)
			{
				sortdirection = "&dir=asc";
			}
			else
			{
				sortdirection = "&dir=desc";
			}
		}
		else
		{
			sortdirection = "&dir=asc";
		}
	}
	else
	{
		sortdirection = "&dir=desc";
	}
	
    

    // Retain Filter
    if(query.indexOf("&type") > 0)
    {
        if(query.indexOf("&sort") > 0)
        {
            filter = query.substring(query.indexOf("&type"), query.indexOf("&sort"))
        }
        else
        {
            filter = query.substring(query.indexOf("&type"))
        }
    }        
    
    // Retain Query Param
    if(query.indexOf("?q=") < 0)
    {
        query = "?q=";
    }
    else if(query.indexOf("&") > 0)
    {
        query = query.substring(query.indexOf("?"), query.indexOf("&"));
    }
    
    query += filter;
    
    // Add Sort Param
    if(sort_type != "")
    {
		if(sort_type == "date")
		{
			query += "&sort=" + sort_type + sortdirection;
		}
		else
		{
			query += "&sort=" + sort_type;
		}
    }
	
	
   
    window.location = search_url + query;
    
    return false;
}
