window.addEvent('domready', add_events);
var filter_history = null;
var loop_break_field = '&_HISTORYBACK_';

function submitFilter(filter_form, url)
{
    var datas = "";
    filter_form.getFormElements().each(function(el){
        if (el.type == 'hidden' || el.checked == undefined || el.checked == true)
        {
            datas += el.name+'='+el.value+'&';
        }
    });
    submitForm(url + '?' +datas);
}

function submitForm(url)
{
    // destroy all remaining tool-text
    $(document.body).getElements('div.tool-tip').each(function(item, index){
        item.parentNode.removeChild(item);
    });
    var ajax_update = new Ajax(url, {
		method: 'get',
        data: null
	}).request();

    ajax_update.onSuccess = function() {
        var message = this.transport.responseText;
        filter_history.addState(url.indexOf("?") > -1 ? url.split('?')[1] + loop_break_field : '');
        refreshDisplay(message);
    }
}


function refreshDisplay( message )
{
    $('filter').innerHTML = message;
    add_events();
}

function appendFormInput(input_name, input_value)
{
        var new_input = new Element('input',{ 'type': 'hidden', 'name': input_name, 'value': input_value})
        $('pinpin_filter_form').appendChild(new_input); // adding an input to filter_form
}

function branchComps(the_comps)
{
    the_comps.addEvent('click', function(e){
        // removing default action to custom it
        new Event(e).preventDefault();
        submitForm(this.href); // submiting form via Ajax
        return false;
    });
}

function add_events()
{
    filter_history = new HistoryManager();
    var prev_hash = filter_history.getCurrentHash();

    if (!(prev_hash.indexOf(loop_break_field) > -1))
    {
        if (prev_hash.length  > 0)
        {
            submitForm('/pinpin/filter/?'+prev_hash + loop_break_field);
            return false;
        }
    }
    else
    {
        var clean_reg = new RegExp(loop_break_field, "g");
        var new_hash = prev_hash.replace(clean_reg, '');
        filter_history.addState(new_hash);
    }

    // Adding tooltip info
    $$('.infoBulle').each(
      function(elem) {
      	new Tips($(elem), {
    	    initialize:function() {
    	        this.fx = new Fx.Style(this.toolTip, 'opacity', {duration: 500, wait: false}).set(0);
    	    },
    	    onShow: function(toolTip) {
    	        this.fx.start(1);
    	    },
    	    onHide: function(toolTip) {
    	        this.fx.start(0);
    	    }
    	});
      }
    );
    
    form = $('pinpin_filter_form');
    $$('.conditions').each(
        function(elem) {
             // removing default action to custom it
            elem.addEvent('click', function(e){
                new Event(e).preventDefault();
                submitFilter($('pinpin_filter_form'), '/pinpin/filter');
    		});
        }
    );

    // Connecting categories links
    $$('.conditions_link').each(
        function(elem) {
             // removing default action to custom it
            elem.addEvent('click', function(e){
                new Event(e).preventDefault();
                submitForm(elem.href+ loop_break_field);
    		});
        }
    );

    // connecting select 
       $('model_order_select').addEvent('change', function(e){
                new Event(e).preventDefault();
                submitFilter($('pinpin_filter_form'), '/pinpin/filter');
    		});
    // branching pagination
    branchComps($('pagination_top').getElements('a'));  
    branchComps($('pagination_bottom').getElements('a'));

    branchComps($('color_block_list').getElements('a[id^=color_block_]')); // branching colors
    branchComps($('col2').getElements('a[id^=filter_cat_]'));  // branching cat filter links 
}

