/*
    
    name: recentSearches
    file: jquery.recentSearches.js
    author: gregory tomlinson
    copyright: (c) 2010 bit.ly
    Dual licensed under the MIT and GPL licenses.
    ////////////////////////////////////
    ////////////////////////////////////
    dependencies: jQuery 1.4.2
    ////////////////////////////////////
    ////////////////////////////////////            

*/

(function($){
    
    $.fn.recentSearches = function( term, options ) {
        
        var el=this, o = $.extend(true, {}, defaults, options );

	    cookie = getCookie('terms');
	    if(cookie) { 
	        terms = cookie.split(',').reverse();
	        addTermToCookie( term );
	    } else {
	        //if( $.trim( term ).length > 0 ) terms.push( term );
	        addTermToCookie( term );	        
	    }

        el.html( buildRecentSearches() );
        
        return this;
        
        
        function addTermToCookie( search ) {
            if( $.trim( search ).length <= 0  ) {
                terms = terms.reverse();
                return;
            }
            
            var position = jQuery.inArray(search, terms)
            if( position > -1 ) terms.splice(position,1);            
            if(terms.length > 3) terms = terms.slice( terms.length-4 );
            // TODO:
            // this logic is wrong...
            terms.push( search );
            writeCookie( 'terms', terms.reverse().join(","), 60 );
            //
            
        }
        
        function buildRecentSearches() {
            
            if(terms.length <= 0) return "";
            

            
            var lis=[], 
                html = '<div class="searchTermsListBox"> <h6>Previous:</h6> ';
                    html += '<ul class="searchTermsList">';
                        
                        for(var i=0; i<terms.length; i++) {
                            lis.push(  '<li><a href="/a/search/?q='+ terms[i] + '">' + terms[i] + '</a></li>' );
                        }
                        
                        html += lis.join(", ");
                        
                    html += '</ul>';
                    html += '<div class="hr"><hr /></div>'
                html += '</div>';
                
            return html;
            
        }
        
        
        // TODO
        // replace these with the jquery.cookie.js methods
        function getCookie(name) {
            var r = document.cookie.match("\\b" + name + "=([^;]*)\\b");
            return r ? r[1] : undefined;            
        }

        function writeCookie( name, value, days ) {
            if (days) {
                var date = new Date();
                date.setTime(date.getTime()+(days*24*60*60*1000));
                var expires = "; expires="+date.toGMTString();
            }
            else var expires = "";
            document.cookie = name+"="+value+expires+"; path=/";

        }        

    }
    
    var terms = [], termsMap = {}, cookie, ready=false, 
        defaults = {
            url : '',
            params : {
            
            }
        }
    

    
})(jQuery);
