(function( $ ){
	
  $.fn.whisperer = function(options) {
    var settings = {
		'min_char' : '2',
		'ajax_url' : '/inshop/scripts/whisperer.aspx?term=',
		'form_name' : 'header-search-form',
		'position_left' : '0',
		'position_top' : '0',
		'zindex' : '999'
	};
	

		if ( options ) { 
	        $.extend( settings, options );
	    }
		

		return this.each(function() {
			make_html(this);
			active_mouse_over();
			
			// if move key pressed
			$(settings.search_input, this).live('keydown', function(key) {
				if (key.keyCode == 37 || key.keyCode == 39 || key.keyCode == 38 || key.keyCode == 40  || key.keyCode == 13 || key.keyCode == 32 || key.keyCode == 27) {
					if (key.keyCode == 40) {move('down');};
					if (key.keyCode == 38) {move('up');};
					if (key.keyCode == 13) {
						if ($("ul.whisperer li").hasClass('active')) {
							enter();
						}
						else{
							Search("."+settings.form_name);	
						};
						return false;
					};
				};
			});
			
			
			
			$("ul.whisperer li").live('keydown', function(event) {
				alert("keydown");
			//	 event.stopPropagation();
			});
			
			// Search
			$("button", this).live("click", function() {
				Search("."+settings.form_name);
			});
			
			
			// active whisperer on keyup
			$(settings.search_input, this).live('keyup', function(key) {
				// moving keys
				if (key.keyCode == 37 || key.keyCode == 39 || key.keyCode == 38 || key.keyCode == 40  || key.keyCode == 13 || key.keyCode == 32 || key.keyCode == 27) {
					
				}
				else{
					var searchphrase = $(this).val();
					// fixing searchphrase
					searchphrase = searchphrase.replace(/ /gi, "+");
			 		clear_whisper();
					whisper(settings.ajax_url+searchphrase);
				}
			});
			
			// HIDE on click out
			$('html').click(function() {
			 	$(".whisperer-cover").hide();
			});
			$('.whisperer-cover').click(function(event){
			     event.stopPropagation();
			});

			
			

		});
	
		

function make_html(cover) {
	$(cover).css({'position':'relative', 'z-index':settings.zindex}).append('<div class="whisperer-cover"><ul class="whisperer"></ul></div>');
	$(".whisperer-cover").css({'position':'absolute', 'top':settings.position_top, 'left':settings.position_left}).hide();	
}

function whisper(url) {
	$.ajax({
		url: url,
		type: 'GET',
		dataType: 'xml',
		success: function(Xml) {
			$('Item', Xml).each(function() {
				var name = $(this).attr("name");
				var image = $(this).attr("image");
				var url = $(this).attr("url");
				var html = '<li><a href="'+url+'">'+name+'</a></li>';
				$("ul.whisperer").append(html);

			});
		$(".whisperer-cover").show();
		
			
		}
	});
}

function clear_whisper() {
	$("ul.whisperer li").remove();
	$(".whisperer-cover").hide();
}

function move(direction) {
	if (direction == 'down') {
		if ($("ul.whisperer li").hasClass('active')) {
			$('ul.whisperer li.active').toggleClass("active").next("li").toggleClass("active");
		}
		else{
			$('ul.whisperer li:first').addClass("active");
		}
	};
	if (direction == 'up') {
		if ($("ul.whisperer li").hasClass('active')) {
			$('ul.whisperer li.active').toggleClass("active").prev("li").toggleClass("active");
		}
		else{
			$('ul.whisperer li:last').addClass("active");
		}
	};
}	

function enter() {
	if ($('ul.whisperer li.active').hasClass('active')) {
		var pro_url = $('ul.whisperer li.active a').attr("href");
		window.location.href = pro_url;
		return false;
	};
}

function Search(form) {
	$(form).submit();
	return false;
}


function active_mouse_over() {
	$("ul.whisperer li").live("mouseover mouseout", function(event) {
		$("ul.whisperer li").removeClass('active');
		if ( event.type == "mouseover" ) {
		   $(this).addClass("active");
		}
	})
}



  };
})( jQuery );
