jQuery(document).ready(function(){
	var timeoutId = false;
        if(jQuery("#searchterm").val() == "") {
          jQuery("#searchterm").css({ 'font-weight' : 'normal', 'color' : '#888888' });
          jQuery("#searchterm").val("Product name, catalog #, or cas #");
        }
        jQuery("#searchterm").focus(function() {
          jQuery(this).filter(function() {
            if(jQuery("#searchterm").val() == "Product name, catalog #, or cas #") {
              jQuery("#searchterm").css({ 'font-weight' : 'bold', 'color' : '#000000' });
              jQuery("#searchterm").val("");
            }
          }).val("");
        });
        jQuery("#searchterm").blur(function() {
          jQuery(this).filter(function() {
            if(jQuery("#searchterm").val() == "") {
              jQuery("#searchterm").css({ 'font-weight' : 'normal', 'color' : '#888888' });
              jQuery("#searchterm").val("Product name, catalog #, or cas #");
            }
          }).val("Product name, catalog #, or cas #");
        });


	// Default settings
	// Turn caching off for all ajax requests because IE (7 and 8) likes to cache requests, which causes items to not update properly
	jQuery.ajaxSetup({
		cache: false
	});

	//Ajax manager
	// Used for queuing ajax requests, for live search
	jQuery.manageAjax.create("ls_lifo", {
		queue: 'clear',
		maxRequests: 1,
		abortOld: true
	});

	// Turn off the autocomplete for the live search box
	// Doing it this way because autocomplete isn't a 'valid' attribute, but does work
	jQuery('#searchterm').attr("autocomplete", "off");

    jQuery(window).resize(function() {
		if(jQuery('#suggest').length > 0) {
			jQuery('#suggest').remove();
		}
	});
    
    jQuery('#searchterm').paste(function(event) {
		submitLiveSearch();
    });
	
		jQuery('#searchterm').keyup(function(e) {
			e.preventDefault();
	
			if(jQuery(this).val().length <= 0) {
				if(jQuery('#suggest').length > 0) {
					jQuery('#suggest').empty().hide();
				}
			} else {
				switch(e.keyCode) {
					case 37:
					case 39:
						// Ignore
						return;
						break;
					case 38:   // Up
						e.preventDefault();
	
						if(jQuery('.suggestItemSelected').length <= 0) {
							jQuery('.suggestItem:last').addClass("suggestItemSelected");
						} else {
							if(jQuery('.suggestItemSelected').is(":first-child")) {
								next = $('.suggestItem:last');
							} else {
								next = jQuery('.suggestItemSelected').prev();
							}
	
							jQuery('.suggestItemSelected').removeClass("suggestItemSelected");
							next.addClass("suggestItemSelected");
						}
	
						break;
					case 40:   // Down
						e.preventDefault();
						if(jQuery('.suggestItemSelected').length <= 0) {
							
							jQuery('.suggestItem:first').addClass("suggestItemSelected");
						} else {
							if(jQuery('.suggestItemSelected').is(":last-child")) {
								next = jQuery('.suggestItem:first');
							} else {
								next = jQuery('.suggestItemSelected').next();
							}
	
							jQuery('.suggestItemSelected').removeClass("suggestItemSelected");
							next.addClass("suggestItemSelected");
						}
	
						break;
					case 13:
						if (jQuery('.suggestItemSelected').length == 1) {
							e.preventDefault();
							var redirectUrl = $('.suggestItemSelected a').attr('href');
							window.location = redirectUrl; 
							return false;
						} else {
							jQuery('#suggest').fadeOut("fast", function() {
								jQuery('#suggest').remove();
								jQuery('#frmSearch').submit();
							});
						}
						break;
					default:
						if (typeof timeoutId === 'number') {
							clearTimeout(timeoutId);
							delete timeoutId;
						}
						if (jQuery('#searchterm').val().length > 2) {
							submitLiveSearch();
						} else {
							timeoutId = setTimeout(submitLiveSearch,1000);
						}
						break;
				}
			}
		});


 });

var submitLiveSearch = function() {
	// Create the suggest frame, if it doesn't already exist
	var el = jQuery("#searchfs");
                            var pos = el.offset();
                            var hOff = parseInt(el.outerHeight()) + 4;
                            var wOff = parseInt(el.outerWidth()) - 2;
                            var pTop = pos.top - 2;
                            var pLeft = pos.left;
                            
                            //Workaround for IE 6 and 7 positioning problem
                            var ie = jQuery.browser.msie && parseInt( jQuery.browser.version ) < 8;
                            if (ie) {
                              pLeft = pLeft + ((parseInt(jQuery(window).width()) - parseInt(jQuery(document).width())) / 2);
                            }
    if(jQuery('#suggest').length <= 0) {
    	jQuery('body').append('<div id="suggest"></div>');
    	jQuery("#suggest").css({ position: "absolute", marginLeft: 0, marginTop: hOff, top: pTop, left: pLeft, width: wOff,'z-index':1000 });
    } else {
        jQuery('#suggest:hidden').fadeIn("fast");
    }
	
	jQuery.manageAjax.clear('ls_lifo');
	jQuery.manageAjax.add('ls_lifo', {
        type: "GET",
        dataType : 'json',
		url: "live_search.php?q=" + jQuery('#searchterm').val(),
		beforeSend: function(request) {
		},
		success: function(data) {
			var wrapper = $('<div />');
			if (data && data.results) {
				jQuery.each(data.results,function(idx,val) {
					var temp = $('<div/>').html(val.name);
					var resType = (val.pid !== undefined) ? {id:'pid',link:'product'} : {id:'cid',link:'category'};
					var linkHref = data.base + data[resType.link] + val[resType.id];
					var linkTitle = temp.html() + ' - ' + val[resType.id];
					wrapper.append(buildLink(linkHref,linkTitle));
				});
			}
			if (data && data.links) {
				jQuery.each(data.links,function(idx,val) {
					wrapper.append(buildLink(val.href,val.title));
				});
			}
			
			jQuery('#suggest').empty().append(wrapper);
			if(data == "") {
				jQuery('#suggest').html('<div class="suggestItem cb" style="overflow: hidden;"><div>No results found...</div></div>')
                                            }
                                            jQuery("#suggest").bind('mouseleave',function(){
                                                    jQuery("#suggest").fadeOut("slow");
                                            });
                                            jQuery("#searchterm").bind('mouseenter',function(){
                                              if(jQuery("#suggest:visible").length == 0) {
                                                    jQuery("#suggest").fadeIn("fast");
                                              }
                                            });
		},
		error: function(request, status, error) {
		}
	});
};

var buildLink = function(href,text) {
	var container = $('<div class="suggestItem cb" style="overflow:hidden" />');
	var link = $('<a href="' + href + '" onclick="var s=s_gi(\'' + s_account + '\'); s.linkTrackVars=\'events\'; s.linkTrackEvents=\'event49\'; s.events=\'event49\'; s.tl(this,\'o\',\'Live Search\');" />');
	link.append(text);
	container.append(link);
	return container;
};
