// JavaScript Document

autoCompleteFieldId = '';
jQuery(document).ready(function()
{
	 jQuery("body").click(function (evt) {
         var target = evt.target;
         if(autoCompleteFieldId !== '' && target.id !== autoCompleteFieldId ){
			 jQuery("#autocomplete-"+autoCompleteFieldId).hide();
        }                
    });
	
	jQuery("#search_criteria .option .field input[type=text]").live('keypress', function(keyPressed){
		type =  jQuery(this).attr('name');
		autoCompleteFieldId = jQuery(this).attr('id');
		if(keyPressed.keyCode == '13'){
			$object = jQuery("#autocomplete-list-"+type+" tr.selected");
			if($object.length){
				$object.removeClass('selected');
				keyPressed.preventDefault();
				jQuery(this).val($object.find('td').html().replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>'));
				jQuery("#autocomplete-"+autoCompleteFieldId).hide();
				return false;
			}
		}
	});
	
	jQuery("#search_criteria .option .field input[type=text]").live('keyup', function(keyPressed){
		type =  jQuery(this).attr('name');
		autoCompleteFieldId = jQuery(this).attr('id');
		value = jQuery(this).val();
		if(keyPressed.keyCode == '38' || keyPressed.keyCode == '40'){
			selectSuggestion(type, keyPressed.keyCode);
			keyPressed.preventDefault();
			return false;
		}
		else if(keyPressed.keyCode == '13')
			return false;
		else{
			if(value.length > 0){
				jQuery.ajax({
					url: '/scripts/autocomplete.php',
					data: { action: type, search: value},
					success: function(html){
						html = html.replace(/^\s+|\s+$/g,"");
						if(html.length > 0){
							jQuery("#autocomplete-"+autoCompleteFieldId).html(html);
							jQuery("#autocomplete-"+autoCompleteFieldId).show();
						}else{
							jQuery("#autocomplete-"+autoCompleteFieldId).hide();
						}
					},
					type: 'post'
				});
			}
			else{
				jQuery("#autocomplete-"+autoCompleteFieldId).hide();
			}
		}
	}).blur( function(){autoCompleteFieldId = jQuery(this).attr('id'); jQuery("#autocomplete-"+autoCompleteFieldId).hide();});
	
	jQuery(".autocomplete-value").live('click', function(){
		value = jQuery(this).html();
		jQuery("#"+autoCompleteFieldId).val(value.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>'));
		jQuery("#autocomplete-"+autoCompleteFieldId).hide();
	});
	
	jQuery(".autocomplete-list tr.do-hover").live('mouseover', function(){ 
			jQuery(".autocomplete-list tr.selected").removeClass("selected");	
			jQuery(this).addClass("selected");
	});
	jQuery(".autocomplete-list tr").live('mouseout', function(){ 	jQuery(this).removeClass("selected");});
});

function hoverSuggestion($this, tableId){
	jQuery(".autocomplete-list tr").removeClass("selected");
	$this.addClass("selected");
}

function selectSuggestion(tableId, code){
	$object = jQuery("#autocomplete-list-"+tableId+" tr.selected");

	if($object.length){
		id = $object.attr('id');
		id = id.replace(tableId+"-", '');
	}else
		id = 0;
		
	switch(code){
		case 13: 
			jQuery("#search_criteria .option .field input[name='"+tableId+"']").val($object.find('td').html());
			break;
		case 38: 
			jQuery("#autocomplete-list-"+tableId+" tr#"+tableId+"-"+id).removeClass("selected");
			if(id > 1)
				jQuery("#autocomplete-list-"+tableId+" tr#"+tableId+"-"+(id-1)).addClass("selected");
			break;
		case 40: 
			jQuery("#autocomplete-list-"+tableId+" tr#"+tableId+"-"+id).removeClass("selected");
			jQuery("#autocomplete-list-"+tableId+" #"+tableId+"-"+(parseInt(id)+1)).addClass("selected");
			break;
	}
}
