var oldInput = "";
var lastInput = 0;
var selected = null;
var id = 0;
var keys = null;
var mode = '';

$(document).ready(function() {
	// Navigation
	$('#addKeyword input').keyup(function(e) {
		switch (e.keyCode) {
		case 38: // up
			moveSelect(-1);
			break;
		case 40: // down
			moveSelect(1);
			break;
		case 9: // tab
		case 13: // return
			keys = null;
			output.hide();
			break;
		default:
			search($(this).val(), $(this).siblings('div'));
			break;
		}
	});

	// Handle clicks actions
	$('#addKeyword div.searchOutput p').live('click', function() {
		id = keys.index($(this));
		setSelected($(this));
		$('form#addKeyword').trigger('submit');
	});

	$('#addKeyword div.searchOutput p').live('mouseover', function() {
		if (mode == 'keyboard') {
			unsetSelected();
			mode = 'mouse';
		}
		id = keys.index($(this));
		setSelected($(this));
	});

	$('#addKeyword div.searchOutput p').live('mouseout', function() {
		unsetSelected($(this));
	});

	// Submit by redirecting to the correct page
	$('form#addKeyword').submit(function() {
		if (selected == null)
			return false;

		var current = selected.attr('name');

		$(location).attr('href', current);
		return false;
	});
});

// Search keywords
function search(input, output) {

	// Check input
	if (input.length < 1 || input == oldInput) {
		output.html("").hide();
		return false;
	}
	oldInput = input;

	// Reset output
	id = 0;
	selected = null;

	// Get possible keywords
	$.ajax({
		type : "POST",
		url : "/search.php",
		data : "keyword=" + $(".search").val() + "&link=" + $("#base").val(),
		success : function(data) {
			var now = new Date().getTime();
			if (now >= lastInput) {
				output.html(data).show();
				keys = $('#addKeyword div').children('p');
			}
		},
		beforeSend : function() {
			if (keys == null)
				output.html('<p>Loading...</p>').show();
		},
		error : function(XMLHttpRequest, textStatus, errorThrown) {
			output.html("<p>Can't process your search. Sorry...</p>").show();
		}
	});
	lastInput = new Date().getTime();
}

// Select an item in list
function moveSelect(step) {
	mode = 'keyboard';
	if (keys == null)
		return false;

	// First movement
	if (selected == null) {
		id = 0;

		// Normal movement
	} else if (id + step >= 0 && id + step < keys.length) {
		id += step;
		selected.removeClass("selected");

		// Incorrect movement
	} else
		return false;

	// Update selected
	setSelected(keys.eq(id));

	return true;
}

// Set current selected item
function setSelected(item) {
	selected = item;
	selected.addClass("selected");
	$('#addKeyword input:first').val(selected.find('span:last').text());
	$('#addKeyword input[type=hidden]').val(selected.attr('name'));
}

// Unset selected element
function unsetSelected() {
	id = 0;
	if (selected != null) {
		selected.removeClass("selected");
	}
}

function hexatrade_setCookie(c_name, value, domain, expires) {
	var today = new Date();
	today.setTime( today.getTime() );

	if (expires) {
		expires = expires * 1000;
	}
	var expires_date = new Date( today.getTime() + expires );
	
    var path = "/";
	
	var c_value = escape(value)
			+ ((expires_date == null) ? "" : "; expires=" + expires_date.toUTCString())
			+ (( path ) ? ";path=" + path : "" )
			+ (( domain ) ? ";domain=" + domain : "" );
    document.cookie = c_name + "=" + c_value;
}

function hexatrade_getCookie(c_name) {
	var i, x, y, ARRcookies = document.cookie.split(";");
	for (i = 0; i < ARRcookies.length; i++) {
		x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
		y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
		x = x.replace(/^\s+|\s+$/g, "");
		if (x == c_name) {
			return unescape(y);
		}
	}
}

