var last_selected_item = "";

function lyr_nav_hide_products()
{
    var items = $('narrow_by_list').select('a', 'input');
    n = items.length;
    for (i=0; i<n; ++i){
        items[i].addClassName('lyr-nav-disabled');
    }
    
    if (typeof(adj_slider) != 'undefined')
        adj_slider.setDisabled();
    
    var divs = $$('div.lyr-nav-progress');
    for (var i=0; i<divs.length; ++i)
        divs[i].show();
}

function lyr_nav_show_products(transport)
{
    var resp = {} ;
    if (transport && transport.responseText){
        try {
            resp = eval('(' + transport.responseText + ')');
	    /*new Ajax.Request("http://cccser.com/nick/devgento/sneakerdoctor/lyrnav/ajax/breadcrumb/" + '?' + $('lyr-nav-params').value, 
        	{method: 'get', onSuccess: lyr_nav_show_breadcrumb}
    	    );*/	
        }
        catch (e) {
            resp = {};
        }
    }

    if (resp.products){
        var el = $('lyr-nav-container');
        var ajaxUrl = $('lyr-nav-ajax').value;
        
        el.update(resp.products.gsub(ajaxUrl, $('lyr-nav-url').value));
        lyr_nav_toolbar_init(); // reinit listeners
                
        $('lyr-nav-navigation').update(resp.layer.gsub(ajaxUrl, $('lyr-nav-url').value));
	$('bread_crumb').update(resp.breadcrumbs.gsub(ajaxUrl, $('lyr-nav-url').value));
        $('lyr-nav-ajax').value = ajaxUrl;
    }
    
    var items = $('narrow_by_list').select('a','input');
    n = items.length;

    for (i=0; i<n; ++i){
        items[i].removeClassName('lyr-nav-disabled');
    }
    if (typeof(adj_slider) != 'undefined')
        adj_slider.setEnabled();
}

function lyr_nav_add_params(k, v, isSingleVal)
{
    var el = $('lyr-nav-params');
    var params = el.value.parseQuery();

    var strVal = params[k];
    if (typeof strVal == 'undefined' || !strVal.length){
        params[k] = v;
    }
    else if('clear' == v ){
        params[k] = 'clear';
    }
    else {
        if (k == 'price')
            var values = strVal.split(',');
        else
            var values = strVal.split('-');
        
//        var values = strVal.split('-');
        if (-1 == values.indexOf(v)){
            if (isSingleVal)
                values = [v];
            else 
                values.push(v);
        } 
        else {
            values = values.without(v);
        }

        params[k] = values.join('-');
    } 

   el.value = Object.toQueryString(params).gsub('%2B', '+');
}



function lyr_nav_make_request()
{
    lyr_nav_hide_products();
// tmp aitoc    
    var params = $('lyr-nav-params').value.parseQuery();
    
    if (!params['dir'])
    {
        $('lyr-nav-params').value += '&dir=' + 'desc';
    }
// tmp aitoc    

    new Ajax.Request($('lyr-nav-ajax').value + '?' + $('lyr-nav-params').value + '&attributevalue=' + $('lyr-nav-params-value').value,
        {method: 'get', onSuccess: lyr_nav_show_products}
    );
}


function adj_update_links(evt, className, isSingleVal)
{
    var link = Event.findElement(evt, 'A'),
        sel = className + '-selected';

    if (link.hasClassName(sel))
        link.removeClassName(sel);    
    else
        link.addClassName(sel);

    var itemsvalue = $('narrow_by_list').getElementsByClassName(sel);
    var i, n = itemsvalue.length;
    var string = "";
    for (i=0; i<n; ++i){
	string = string+itemsvalue[i].innerHTML+","+itemsvalue[i].id.split('-')[1]+"@";
    }
    $('lyr-nav-params-value').value =string;
    //only one  price-range can be selected
    if (isSingleVal){
        var items = $('narrow_by_list').getElementsByClassName(className);
        var i, n = items.length;
        for (i=0; i<n; ++i){
            if (items[i].hasClassName(sel) && items[i].id != link.id)
                items[i].removeClassName(sel);
        }
    }
//$('lyr-nav-params-value').value += link.innerHTML+"-";
    
    lyr_nav_add_params(link.id.split('-')[0], link.id.split('-')[1], isSingleVal);
    $("last_selected").value = "event_"+link.id.split('-')[0];
    last_selected_item = "event_"+link.id.split('-')[0];
    lyr_nav_make_request();    
    
    Event.stop(evt);    
}


function lyr_nav_attribute_listener(evt)
{
    lyr_nav_add_params('p', 'clear', 1);
    adj_update_links(evt, 'lyr-nav-attribute', 0);
}

function lyr_nav_sizeattribute_listener(evt)
{
    lyr_nav_add_params('p', 'clear', 1);
    adj_update_links(evt, 'lyr-nav-sizeattribute', 0);
}

function lyr_nav_icon_listener(evt)
{
    lyr_nav_add_params('p', 'clear', 1);
    adj_update_links(evt, 'lyr-nav-icon', 0);
}

function lyr_nav_price_listener(evt)
{
    lyr_nav_add_params('p', 'clear', 1);
    adj_update_links(evt, 'lyr-nav-price', 1);
}

function lyr_nav_clear_listener(evt)
{
    var link = Event.findElement(evt, 'A'),
        varName = link.id.split('-')[0];
    
    lyr_nav_add_params('p', 'clear', 1);
    lyr_nav_add_params(varName, 'clear', 1);
    
    if ('price' == varName){
        var from =  $('lyr-nav-price-from'),
            to   = $('lyr-nav-price-to');
          
        if (Object.isElement(from)){
            from.value = from.name;
            to.value   = to.name;
        }
    }
    
    lyr_nav_make_request();    
    
    Event.stop(evt);  
}


function lyr_nav_round(num){
    num = parseFloat(num);
    if (isNaN(num))
        num = 0;
        
    return Math.round(num);
}

function lyr_nav_price_input_listener(evt){
    if (evt.type == 'keypress' && 13 != evt.keyCode)
        return;
        
    if (evt.type == 'keypress')
    {
        var inpObj = Event.findElement(evt, 'INPUT');
    }
    else 
    {
        var inpObj = Event.findElement(evt, 'BUTTON');
    }
        
    var sKey = inpObj.id.split('---')[1];
        
    var numFrom = lyr_nav_round($('lyr-nav-price-from---' + sKey).value),
        numTo   = lyr_nav_round($('lyr-nav-price-to---' + sKey).value);
 
    if ((numFrom<0.01 && numTo<0.01) || numFrom<0 || numTo<0)   
        return;

    lyr_nav_add_params('p', 'clear', 1);
//    lyr_nav_add_params('price', numFrom + ',' + numTo, true);
    lyr_nav_add_params(sKey, numFrom + ',' + numTo, true);
    lyr_nav_make_request();         
}

function lyr_nav_category_listener(evt){
    var link = Event.findElement(evt, 'A');
    var catId = link.id.split('-')[1];

    var reg = /cat=/;
    if (reg.test(link.href)){ //is search
        lyr_nav_add_params('cat', catId, 1);
        lyr_nav_add_params('p', 'clear', 1);
        lyr_nav_make_request(); 
        Event.stop(evt);  
    }
    //do not stop event
}

function lyr_nav_toolbar_listener(evt){
    lyr_nav_toolbar_make_request(Event.findElement(evt, 'A').href);
    Event.stop(evt); 
}

function lyr_nav_toolbar_make_request(href)
{
    var pos = href.indexOf('?');
    if (pos > -1){
        $('lyr-nav-params').value = href.substring(pos+1, href.length);
    }
    lyr_nav_make_request();
}


function lyr_nav_toolbar_init()
{
//    var items = $('lyr-nav-container').select('.pages a', '.view-by a');
    var items = $('lyr-nav-container').select('.pages a', '.view-mode a', '.sort-by a');
    var i, n = items.length;
    for (i=0; i<n; ++i){
        Event.observe(items[i], 'click', lyr_nav_toolbar_listener);
    }
}

function lyr_nav_dt_listener(evt){
    var e = Event.findElement(evt, 'DT');
    e.nextSiblings()[0].toggle();
    e.toggleClassName('lyr-nav-dt-selected');
    $('last_selected').value = this.id;
    last_selected_item = this.id;
    adj_hide_extra_section(this.id);
}

function lyr_nav_clearall_listener(evt)
{
    var params = $('lyr-nav-params').value.parseQuery();
    $('lyr-nav-params').value = 'adjclear=true';
    if (params['q'])
    {
        $('lyr-nav-params').value += '&q=' + params['q'];
    }
    lyr_nav_make_request();
    Event.stop(evt); 
}

function lyr_nav_init()
{
    var items, i, j, n, 
        classes = ['category', 'attribute', 'sizeattribute', 'icon', 'price', 'clear', 'dt', 'clearall'];
    for (j=0; j<classes.length; ++j){
        items = $('narrow_by_list').select('.lyr-nav-' + classes[j]);
        n = items.length;
        for (i=0; i<n; ++i){
            Event.observe(items[i], 'click', eval('lyr_nav_' + classes[j] + '_listener'));
        }
    }

// start new fix code    
    items = $('narrow_by_list').select('.lyr-nav-price-input-id');
    
    n = items.length;
    
    var btn = $('lyr-nav-price-go');
    
    for (i=0; i<n; ++i)
    {
        btn = $('lyr-nav-price-go---' + items[i].value);
        if (Object.isElement(btn)){
            Event.observe(btn, 'click', lyr_nav_price_input_listener);
            Event.observe($('lyr-nav-price-from---' + items[i].value), 'keypress', lyr_nav_price_input_listener);
            Event.observe($('lyr-nav-price-to---' + items[i].value), 'keypress', lyr_nav_price_input_listener);
        }
    }
// finish new fix code

   if(last_selected_item != "")	
   {
	$(last_selected_item).className = "lyr-nav-dt";
	$("sub_"+last_selected_item).style.display = "";
	if($($("default_open").value))
	{
		if($("default_open").value != last_selected_item)
	 	{	
        	    $($("default_open").value).className = "lyr-nav-dt lyr-nav-dt-selected";
		    $($("default_sub_open").value).style.display = "none";
	        }
	}
   }
   else
   {
	if($($("default_open").value))
	{
	        $($("default_open").value).className = "lyr-nav-dt";
        	$($("default_sub_open").value).style.display = "";
	}
   }
}


function adj_hide_extra_section(last_item)
{
    var items = $('narrow_by_list').select('.lyr-nav-dt');
    var i, n;
    n = items.length;
    for (i=0; i<n; ++i)
    {
		if(last_item == items[i].id)
		{
			if($("sub_"+items[i].id).style.display == "")
			{
				$(items[i].id).className = "lyr-nav-dt";
        			$("sub_"+items[i].id).style.display = "";
			}
			else
			{
				$(items[i].id).className = "lyr-nav-dt lyr-nav-dt-selected";
        			$("sub_"+items[i].id).style.display = "none";
			}
		}
		else
		{
			$(items[i].id).className = "lyr-nav-dt lyr-nav-dt-selected";
        		$("sub_"+items[i].id).style.display = "none";	
		}
    }
}
  
function lyr_nav_create_slider(width, from, to, max_price) 
{
    var price_slider = $('lyr-nav-price-slider');

    return new Control.Slider(price_slider.select('.handle'), price_slider, {
      range: $R(0, width),
      sliderValue: [from, to],
      restricted: true,
      
      onChange: function (values){
        var f = lyr_nav_round(max_price*values[0]/width),
            t = lyr_nav_round(max_price*values[1]/width);
            
        lyr_nav_add_params('price', f + ',' + t, true);
          
        // we can change values without sliding  
        $('lyr-nav-range-from').update(f); 
        $('lyr-nav-range-to').update(t);
            
        lyr_nav_make_request();  
      },
      onSlide: function(values) { 
          $('lyr-nav-range-from').update(lyr_nav_round(max_price*values[0]/width));
          $('lyr-nav-range-to').update(lyr_nav_round(max_price*values[1]/width));
      }
    });
}

function lyr_nav_calculate(width, from, to, min_price, max_price, value)
{
    var calculated = lyr_nav_round(((max_price-min_price)*value/width) + min_price);
    
    return calculated;
}

