jQuery(document).ready(function($) {
    // Code that uses jQuery's $ can follow here.
    jQuery( '.criteres_list' ).hover(
        function() {
            jQuery(this).children( '.sub_criteres' ).addClass( 'hover' );
        },
        function() {
            jQuery(this).children( '.sub_criteres' ).removeClass( 'hover' );
        }
    );

    /* AJAX AND CRITERES */
    function stringToArray( string )
    {
        if ( string == "")
        {
            return new Array();
        }
        else
        {
            return string.split( ',' );
        }
    }
    
    function addCriteres( node_id, class_id )
    {
        var criteres_communs = stringToArray( jQuery( class_id ).val() );
        
        criteres_communs.push( node_id );
        criteres_communs = jQuery.unique( criteres_communs );
        jQuery( class_id ).val( criteres_communs.toString() );
        
        updateSearchAjax();
    }
       
    function removeCriteres( node_id, class_id )
    {
        var criteres_communs = stringToArray( jQuery( class_id ).val() );
        if ( jQuery.inArray( node_id, criteres_communs ) != -1 )
        {
            criteres_communs.splice( jQuery.inArray( node_id, criteres_communs ), 1 );
            jQuery( class_id ).val( criteres_communs.toString() );
            
            updateSearchAjax();
        }
    }
    
    function updateSearchAjax()
    {
        var criteres = new Array( stringToArray( jQuery( '#criteres_communs' ).val() ),
                                  stringToArray( jQuery( '#criteres_onglet_0' ).val() ),
                                  stringToArray( jQuery( '#criteres_onglet_1' ).val() ),
                                  stringToArray( jQuery( '#criteres_onglet_2' ).val() ),
                                  stringToArray( jQuery( '#criteres_onglet_3' ).val() ),
                                  stringToArray( jQuery( '#criteres_onglet_4' ).val() ) );
        jQuery.ajax({
            type: 'POST',
            url: '/ajax/search/'+jQuery( '#sitra_object_id' ).val()+'/'+jQuery( '#limit' ).val()+'/'+jQuery( '#offset' ).val()+'/'+jQuery( '#orderBy' ).val()+'/'+jQuery( '#order' ).val(),
            data: jQuery.param({'criteres[]': criteres}),
            success: function( data ) {
                var current_criteres = new Array( stringToArray( jQuery( '#criteres_communs' ).val() ),
                                          stringToArray( jQuery( '#criteres_onglet_0' ).val() ),
                                          stringToArray( jQuery( '#criteres_onglet_1' ).val() ),
                                          stringToArray( jQuery( '#criteres_onglet_2' ).val() ),
                                          stringToArray( jQuery( '#criteres_onglet_3' ).val() ),
                                          stringToArray( jQuery( '#criteres_onglet_4' ).val() ) );
                if ( criteres.toString() == current_criteres.toString() )
                {
                    //If searched criteres == current criteres
                    jQuery( '#search_result' ).html( data );
                }
            }
        });
    }
    
    jQuery( '.orderBy' ).click( function() {
        if ( jQuery( '#orderBy' ).val() == jQuery(this).attr( 'orderBy' ) )
        {
            if ( jQuery( '#order' ).val() == "asc" )
            {
                jQuery( '#order' ).val( 'desc' );
            }
            else
            {
                jQuery( '#order' ).val( 'asc' );
            }
        }
        else
        {
            jQuery( '#orderBy' ).val( jQuery(this).attr( 'orderBy' ) );
            jQuery( '#order' ).val( 'asc' );
        }
        updateSearchAjax();
        return false;
    });
    
    jQuery( '.sub_criteres' ).children( 'li' ).click( function() {
        var node_id = jQuery(this).attr( 'node_id' );
        var selected = stringToArray( jQuery(this).parent( 'ul' ).parent( '.criteres_list' ).children( '.sous_famille:first' ).val() );
        
        if ( jQuery.inArray( node_id, selected ) == -1 )
        {
            selected.push( jQuery(this).attr( 'node_id' ) );
            jQuery(this).parent( 'ul' ).parent( '.criteres_list' ).children( '.sous_famille' ).val( selected.toString() )
            jQuery(this).parent( 'ul' ).parent( '.criteres_list' ).children( '.selected_criteres' ).append( '<span node_id="'+node_id+'">' + jQuery(this).html() + '</span>' )
            jQuery(this).parent( 'ul' ).parent( '.criteres_list' ).children( '.selected_criteres' ).children( 'span' ).unbind( 'click' );
            jQuery(this).parent( 'ul' ).parent( '.criteres_list' ).children( '.selected_criteres' ).children( 'span' ).click( function() {
                var node_id = jQuery(this).attr( 'node_id' );
                var selected = stringToArray( jQuery(this).parent( '.selected_criteres' ).parent( '.criteres_list' ).children( '.sous_famille:first' ).val() );
                if ( jQuery.inArray( node_id, selected ) != -1 )
                {
                    selected.splice( jQuery.inArray( node_id, selected ), 1 );
                    jQuery(this).parent( '.selected_criteres' ).parent( '.criteres_list' ).children( '.sous_famille' ).val( selected.toString() )
                    
                    removeCriteres( node_id, '#criteres_communs' );
                }
                jQuery(this).remove();
            });

            addCriteres( node_id, '#criteres_communs' );
        }
    });

    jQuery( '.checkCriteres' ).click( function() {
        if ( jQuery(this).attr( 'checked' ) == 'checked' )
        {
            addCriteres( jQuery(this).val(), jQuery(this).attr( 'class_id' ) );
        }
        else
        {
            removeCriteres( jQuery(this).val(), jQuery(this).attr( 'class_id' ) );
        }
    });
    /* END AJAX AND CRITERES */
    
    jQuery( '.onglet_orange_deploy' ).click( function() {
        if ( jQuery(this).parent( '.onglet_orange' ).hasClass( 'deployed' ) )
        {
            //Clic again => close
            jQuery( '.onglet_orange' ).removeClass( 'deployed' );
        }
        else
        {
            //Clic => open
            jQuery( '.onglet_orange' ).removeClass( 'deployed' );
            jQuery(this).parent( '.onglet_orange' ).addClass( 'deployed' );
        }
        affine_also_padding();
    });
    
    jQuery( '.onglet_orange_close' ).click( function() {
        jQuery( '.onglet_orange' ).removeClass( 'deployed' );
    });
    
    jQuery( '#sort_nom' ).click( function() {
        if ( jQuery( '#sort_nom' ).attr( 'sort' ) == 'asc' )
        {
            jQuery( '#sort_nom' ).attr( 'sort', 'desc' );
        }
        else
        {
            jQuery( '#sort_nom' ).attr( 'sort', 'asc' );
        }
        return false;
    });
    jQuery( '#sort_commune' ).click( function() {
        if ( jQuery( '#sort_commune' ).attr( 'sort' ) == 'asc' )
        {
            jQuery( '#sort_commune' ).attr( 'sort', 'desc' );
        }
        else
        {
            jQuery( '#sort_commune' ).attr( 'sort', 'asc' );
        }
        return false;
    });
    jQuery( '#sort_price' ).click( function() {
        if ( jQuery( '#sort_price' ).attr( 'sort' ) == 'asc' )
        {
            jQuery( '#sort_price' ).attr( 'sort', 'desc' );
        }
        else
        {
            jQuery( '#sort_price' ).attr( 'sort', 'asc' );
        }
        return false;
    });

    $('.split_4').easyListSplitter({ colNumber: 4 });
    $('.split_2').easyListSplitter({ colNumber: 2 });

    jQuery( '.filter_letter' ).click( function() {
        jQuery( '.letter_commune' ).hide();
        jQuery( '#letter_commune_'+jQuery(this).attr( 'letter' ) ).show();

        affine_also_padding();
        return false;
    });

    function affine_also_padding() {
        var new_padding = 5 + jQuery('.subonglet_orange:visible').height();
        jQuery('#affine_also').css( 'padding-bottom', new_padding+'px' );
    }
});

