/**
 * @author Yakubov Andrey
 */
$(function() {
	
	/*-----------------------------------*/
	/* Массив кнопок для быстрого поиска */ 
	/*-----------------------------------*/
    var KEY = {
        UP: 38,
        DOWN: 40,
        DEL: 46,
        TAB: 9,
        RETURN: 13,
        ESC: 27,
        COMMA: 188,
        PAGEUP: 33,
        PAGEDOWN: 34,
        BACKSPACE: 8
    };
	
    /*-----------------------------------*/
    /* Поле ввода для быстрого поиска    */ 
    /*-----------------------------------*/	
    var $search_input = $("#search");

    /*-----------------------------------*/
    /* Таймаут для вывода выпадашки      */ 
    /*-----------------------------------*/ 	
    var timeout;
 
    /*-----------------------------------*/
    /* Текущий индекс в выпадашке        */ 
    /*-----------------------------------*/     
    var currentIndex = 0;

    /*----------------------------------------------------*/
    /* Обработка события нажатия кнопки в быстром поиске  */ 
    /*----------------------------------------------------*/   	
    $search_input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) 
    {
        switch (event.keyCode) {
        
            case KEY.UP:
            
                if (currentIndex>0) 
                    currentIndex--;
                selectQuickSearchItem(currentIndex);               
                break;
                
            case KEY.DOWN:
                var mx = parseInt($('#result_count').val());
                
                if (mx<10)
                {
                    if (currentIndex<(mx-1))
                        currentIndex++;                 
                }
                else
                {
                    if (currentIndex<9)
                        currentIndex++;                 
                }               

                selectQuickSearchItem(currentIndex);               
                break;
                
            case KEY.RETURN:
                if ($("#result_" + currentIndex).attr("href") != undefined) {
                    document.location = ($("#result_" + currentIndex).attr("href"));
                }
                break;
                
            default:
                currentIndex = 0;
                clearTimeout(timeout);
                timeout = setTimeout(onChange, 50);             
                break;
        }
       });
	   
    /*-----------------------------------*/
    /* Ограничения на ввод цен           */ 
    /*-----------------------------------*/  	   
    $('#upper_price').numeric();
	$('#down_price').numeric();
});

/**
 * Выбор элемента в выпадашке
 * @param {int} индекс элемента
 */
function selectQuickSearchItem(index_to_select)
{
	$("#result_" + (index_to_select-1)).removeClass("quicksearchactive");
	$("#result_" + (index_to_select+1)).removeClass("quicksearchactive");
    $("#result_" + index_to_select).addClass("quicksearchactive");
}

/**
 * Срабатывает когда произошел ввод в поле быстрого поиска
 */
function onChange()
{
    quickSearch($("#search").val()); 
}

/**
 * Запрос на сервер для результатов быстрог поиска
 * @param {string} запрос
 */
function quickSearch(val)
{
    if (val.length <3)
    {
        $("#search_res").hide();
        return;
    }
    else
    {
        JsHttpRequest.query(
              "/search?request_mode=ajax",
              {'query' : val, 'ajax_action' : 'search_query'},
              function(result, errors) {
                 if(errors)
                 {
                    if(!production_flag){alert(errors);}
                 }
                 
                 if (result)
                 {
                    //result = result.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + val.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<span id='highlight'>$1</span>");
                    $("#search_res").html(result);
                    $("#search_res").show();
                    
                    selectQuickSearchItem(0);
                    //alert($("#search_res").html());
                 }
              },
              true
          );        
    }    
}
/**
 * Полный поиск
 * @param {string} val
 */
function fullSearch(val)
{
    document.location = "/search?q="+val;	
}

function selectAllBrands()
{
	$("#brands > * > * > input:checkbox").attr({'checked' : 'checked'});
}

function deselectAllBrands()
{
    $("#brands > * > * > input:checkbox").removeAttr('checked');   
}

function fullCriteriaSearch(search_form)
{
    JsHttpRequest.query(
          "/search?request_mode=ajax",
          {'form' : search_form, 'ajax_action' : 'search_criteria'},
          function(result, errors) {
             if(errors)
             {
                if(!production_flag){alert(errors);}
             }
                 
             if (result)
             {
                $('#full_result').html(result);
                window.location.hash = 'idontknow_results';
             }
          },
          true
      );   
}

function deselectAllCriteria()
{
    $("#brands > * > * > input:checkbox").removeAttr('checked');
	$("#down_price").val("");
	$("#upper_price").val("");
	$("#categories > * > input:checkbox").removeAttr('checked');
	//$("#status > * > input:checkbox").removeAttr('checked');
	$("#towho > * > input:checkbox").removeAttr('checked');
	//$("#sel_year > * > input:checkbox").removeAttr('checked');
}

function loadBrands() {
	
	//$('#f').css('opacity', '0.5');
	//$('#fullCriteriaSearchButton').attr('disabled', 'disabled');
	
	var selected_cats = [];
	
	$('#categories input:checked').each(function(){
	
		selected_cats.push(
			$(this).attr('id').substr(4)
		);
		
	});
	
	JsHttpRequest.query(
          "/?request_mode=ajax",
          {
          	'selected_cats' : selected_cats, 
          	'ajax_action' : 'load_brands',
          	'target_block_name' : 'SearchCriteriaBlock'
          	},
          function(result, errors) {
             if(errors)
             {
                if(!production_flag){alert(errors);}
             }
                 
             if (result)
             {
                $('#brands').html(result);
             }
             
             //$('#fullCriteriaSearchButton').removeAttr('disabled');
             //$('#f').css('opacity', '1.0');
          },
          true
      );
	
}


function fieldOnFocus(field, hint)
{
    if (field.value == hint) {
		field.value = '';
		field.style.color = "#000000";
	}
}

function fieldOnBlur(field, hint)
{
     if (field.value == '') {
	 	field.value = hint;
		field.style.color = "#808080";
	 }
}


function filterByCat(id, a_tag) {
	
	if ( id == 0 ) {
		$('div.brands_products').show();
	} else {
		$('div.brands_products').not('#brand_parent_id_'+id).hide();
		$('#brand_parent_id_'+id).show();
	}
	
	$('#filter a.current').removeClass('current');
	$(a_tag).addClass('current');
	
}


function add_subscription() {
	
	$('#email_error').hide();
	
	var emailReg = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	
	var email = $('#email').val();
	
	if ( !emailReg.test(email) ) {
		
		$('#email_error').show();
		
		return false;
		
	}
	
	JsHttpRequest.query(
          "/news?request_mode=ajax",
          {
          	'ajax_action' : 'subscribe_me',
          	'email' : email
          	},
          function(result, errors) {
             if(errors)
             {
                if(!production_flag){alert(errors);}
             }
                 
             if (result)
             {
             	if ( result.email_error) {
             		$('#email_error').show();
             	} else {
                	$('#subscription_li').remove();
             	}
             }
          },
          true
      );
	
}