jQuery( function() {

	//on page load, first check for query string search terms
	returnQueryStringSearch();

	// filter on keyup action in the search field
	jQuery('#filterSearchTerm').keyup(function() {
		filterSearch(jQuery(this).val());
	});

});


// theoriginal  main filtering function
function filterSearch(searchTerms) {

    var searchTerm = jQuery.trim(searchTerms).toLowerCase();                       
    
    jQuery('.filterable').each( function(index,element) {
    	
    	var jqThis = jQuery(this);
    	
    	if( searchTerm=='' ) {
    		if( !jqThis.is(":visible") ) {
    			jqThis.fadeIn('fast');
    		}
    		return;
    	}
    	
        var classes = this.className.split(/\s+/);
        for (var i = 0; i < classes.length; i++) {
        	var rawTerm = jQuery.trim(classes[i]);
        	var index = rawTerm.indexOf('fword-'); 
            if (index===0) {
                var term = rawTerm.substring(index+6).toLowerCase();
                term = term.replace(/[^0-9a-zA-Z]/g,' ');                                      
                
                // see if search term matches any fwords                    
                if( term.indexOf(searchTerm)==0 ) {
                	if( !jqThis.is(":visible") ) {
                		//alert("term='"+term+"'; searchTerm='"+searchTerm+"'")
                		jqThis.fadeIn('fast');
                	}
                	return;                    	
                }// if
                
                // tokenize fwords and see if search term matches any tokens
                var termTokens = term.split(' ');
                for (var j = 0; j < termTokens.length; j++) {                    	
                	if( termTokens[j].indexOf(searchTerm)==0 ) {
                		if( !jqThis.is(":visible") ) {
                			jqThis.fadeIn('fast');
                		}
                		return;
                	}
                }// for                   
            }
        }
        
        // hide since there was no match
        if( jqThis.is(":visible") ) {
        	jqThis.hide();
        }
        	        
    });
	
}
 
// look for the values of a search in the query string in case 
// someone hit enter or loaded the page with search values
function returnQueryStringSearch(){
	//get the whole query string and split it into matched x=y sets
	hu = window.location.search.substring(1);
	gy = hu.split("&");
	
	//loop through and split to get terms
	for (i=0;i<gy.length;i++) {
		ft = gy[i].split("=");
		
		//look for the search terms keyword
		if (ft[0] == 'filterSearchTerm') {
			allTerms = ft[1];
			
			//if there's one term filter by that
			if (allTerms.indexOf('+')==0){
				filterSearch(allTerms)
			}else{
				//otherwise run filters for each term
				eachTerm = allTerms.split('+')
				for (j=0;j<eachTerm.length;j++) {
					filterSearch(eachTerm[j])
				}
			}
		}
	}
}
