(function($) {
    $.fn.search = function() {
        return this.each(function() {
            var element = $(this);
            var container = element.parent();
            var offset = container.offset();
            var div = $('<div>').addClass('search-items-container');
            var cdiv = $('<div>').addClass('search-items');
            var sdiv = $('<div>').addClass('suggest-items');
            
            element.after(div.append(sdiv).append(cdiv));
            element.bind('keyup focus', function(event) {
            		if(event.which == 40){
            			var sitems = sdiv.find('.suggest-item');
            			if(sitems.length > 0){
	            			var hsitems = sdiv.find('.suggest-item.hover');
	            			if(hsitems.length == 0){
	            				$(sitems[0]).addClass('hover');
	            			}else{
	            				$(hsitems[0]).removeClass('hover').next().addClass('hover');
	            			}
	           				element.val(sdiv.find('.suggest-item.hover').text());
            			}
            		}else if(event.which == 38){
            			var sitems = sdiv.find('.suggest-item');
            			if(sitems.length > 0){
	            			var hsitems = sdiv.find('.suggest-item.hover');
	            			if(hsitems.length == 0){
	            				$(sitems[sitems.length-1]).addClass('hover');
	            			}else{
	            				$(hsitems[0]).removeClass('hover').prev().addClass('hover');
	            			}
	           				element.val(sdiv.find('.suggest-item.hover').text());
            			}
            		}else if (event.which == 13) {
                    // now takw whats in the search field, url eoncdoe it and append to querystring, then redirect to test.aspx
                    var terms = $(this).val();
                    var re = /^\d{5}$|^\d{5}-\d{4}$/;
                    var is_zip = re.test(terms);
                    if(is_zip) document.location.href = 'locator.aspx?1=1&find=' + terms; 
                    else SearchResults(terms);
                } else {
                    var cmd_arg = element.val();
                    //trace('cmd_arg:' + cmd_arg);
                    if (cmd_arg.length > 0) {
                        var data = {};
                        data.cmd = 'Search';
												data.sid = $('#source_id').val();
                        data.cmd_arg = cmd_arg;
                        var service_url = 'default.ashx';
                        $.getJSON(service_url, data, function(data) {
                            cdiv.empty();
                            cdiv.append($('<div>').addClass('header').html('Featured Links'));
                            cdiv.find('.header').each(function(i, o){
                              Cufon.replace(this, { fontFamily: 'ChunkFive' });
                            });
                            if (data.items.length == 0) { cdiv.hide(); if(sdiv.is(':hidden')) div.hide();  } else { cdiv.show(); div.show(); }

                            for (var i = 0; i < data.items.length; i++) {
                                var item = data.items[i];

                                if (false) {
                                    //trace('item.Title:' + item.Title);
                                    //trace('item.Description:' + item.Description);
                                    //trace('item.CorporateFlag:' + item.CorporateFlag);
                                    //trace('item.PromotionFlag:' + item.PromotionFlag);
                                    //trace('item.Target:' + item.Target);
                                }

                                var sitem = $('<div>').addClass('search-item');
                                //item.Target = item.CorporateFlag == 'true'? '_blank':'_self';

                                var sthumb = $('<div>').addClass('thumb').html($('<a>').data('term', item.Title).attr('href', furl(item.Url)).attr('target', item.Target).append($('<img>').attr('alt', item.Title).attr('src', 'images/search-view/' + item.Thumb)).click(function() {
                                    search_log(this);
                                }));

                                sitem.append(sthumb);

                                var scontent = $('<div>').addClass('content');
                                
                                  var d = item.Title;
                                    if(d.length > 36){
                                    d = d.substr(0, 36);
                                    if(d.lastIndexOf(' ') != -1){
                                      d = d.substr(0, d.lastIndexOf(' '));
                                    }else{
                                      d = d.substr(0, 26);
                                    }
                                    d += '...';
                                   }
                                
                                scontent.append($('<div>').addClass('text').html($('<a>').data('term', item.Title).attr('href', furl(item.Url)).attr('target', item.Target).html(d).click(function() {
                                    search_log(this);

                                })));
                                //scontent.append($('<div>').addClass('likes').html(item.Likes + " Likes"));

                                if (item.CorporateFlag == 'true') {
                                  sitem.addClass('corporate');
                                  item.DisplayName = "Learn More";
                                  var d = item.Description;
                                    if(d.length > 40){
                                    d = d.substr(0, 40);
                                    if(d.lastIndexOf(' ') != -1){
                                      d = d.substr(0, d.lastIndexOf(' '));
                                    }else{
                                      d = d.substr(0, 30);
                                    }
                                    d += '...';
                                   }
                                    scontent.append($('<div>').addClass('description').html(d));
                                    scontent.append($('<div>').addClass('found').html('<a href="' + furl(item.Url.toLowerCase()) + '" target="' + item.Target + '">' + item.DisplayName + '</a>'));
                                } else if (item.PromotionFlag == 'true') {
                                    sitem.addClass('promotion');
                                    item.DisplayName = item.Url.toLowerCase().replace('http://', '').replace('https://', '');
                                    if (item.DisplayName == "locator.aspx") item.DisplayName = "Find a Store";
                                    else if (item.DisplayName == "www.facebook.com/slurpee?v=app_171309566218941") item.DisplayName = "Slurpee Unity Tour 2010";
                                    else item.DisplayName = "Learn More";
  
                                  var d = item.Description;
                                    if(d.length > 40){
                                      d = d.substr(0, 40);
                                      if(d.lastIndexOf(' ') != -1){
                                        d = d.substr(0, d.lastIndexOf(' '));
                                      }else{
                                        d = d.substr(0, 30);
                                      }
                                      d += '...';
                                    }
  
                                    scontent.append($('<div>').addClass('description').html(d));
                                    scontent.append($('<div>').addClass('found').html('<a href="' + furl(item.Url.toLowerCase()) + '" target="' + item.Target + '">' + item.DisplayName + '</a>'));
                                } else {
                                    scontent.append($('<div>').addClass('categories').html("Related Categories: " + item.Categories));
                                }

                                sitem.append(scontent);

                                cdiv.append(sitem);
                            }
                            
                            if(div.find('.footer').length == 0){
                              div.append(
                                $('<div>').addClass('footer').append(
                                  $('<div>').addClass('footer-left').html('View All Search Results').bind('click', function(event) {
                                      var terms = $(element).val();
                                      var re = /^\d{5}$|^\d{5}-\d{4}$/;
                                      var is_zip = re.test(terms);
                                      if(is_zip) document.location.href = 'locator.aspx?1=1&find=' + terms; 
                                      else SearchResults(terms);
                                  })
                                ).append(
                                  $('<div>').addClass('footer-right').html('Close').bind('click', function(event) {
                                      $('#search').blur();
                                      div.fadeOut('fast');
                                  })
                                )
                              );
                            }

                        });
                        
                        
                        var data = {};
                        data.cmd = 'Suggest';
												data.sid = $('#source_id').val();
                        data.cmd_arg = cmd_arg;
                        var service_url = 'default.ashx';
                        
                        $.getJSON(service_url, data, function(data) {
                            sdiv.empty();
                            sdiv.append($('<div>').addClass('header').html('Suggestions'));
                             //trace('data.items.length:' + data.items.length);
                              
                              
                              if (data.items.length == 0) { sdiv.hide(); if(cdiv.is(':hidden')) div.hide();  } else { sdiv.show(); div.show(); }
  
                            for (var i = 0; i < data.items.length; i++) {
                                var item = data.items[i];
  
                                if (i < 10) {
                                    //trace('item.Name:' + item.Name);
                                }
  
                                var sitem = $('<div>').addClass('suggest-item').html(item.Name).hover(function(){
                                  $(this).addClass('hover');
                                }, function(){
                                  $(this).removeClass('hover');
                                }).click(function(){
                                  var terms = $(this).text();
                                  var re = /^\d{5}$|^\d{5}-\d{4}$/;
                                  var is_zip = re.test(terms);
                                  if(is_zip) document.location.href = 'locator.aspx?1=1&find=' + terms; 
                                  else SearchResults(terms);
                                });
                                sdiv.append(sitem);
                            }
  
                        });
                        
                        
                        
                    } else {
                        div.hide();
                    }
                }
            });

        });
    };
})(jQuery);

