/* PersonList for jQuery 1.3.2+
 * Author: NOSE Design AG, Sebastian Wohlrab <sebastian.wohlrab@nose.ch>
 * Date: 2010-05-17
 * Requirements: [jQuery 1.3.2, jQuery EasIng]
 */

(function($){
    $.fn.extend({ 
        personList: function(options) {
            var defaults = {
                'personClass'   : '.person',
                'summaryClass'  : '.person_summary',
                'clickClass'    : '.openCV',
                'cvClass'       : '.person_cv',
                'cvInnerClass'  : '.person_cv_inner',
                'cvSummaryCheck': '.person_name',
                'easing'        : 'easeOutExpo',
                'duration'      : 300
            };

            var options = $.extend(defaults, options);

            return this.each(function() {
                var o = options;
                var obj = $(this);
                var persons = $(this).find( o.personClass );

                persons.each(function( i, person ) {
                    var summary = $( $( person ).find( o.summaryClass )[0] );
                    var open = $( $( person) .find( o.clickClass )[0] );
                    var cv = $( person ).find( o.cvClass )[0];

                    if ( summary.find( o.cvSummaryCheck )[0].innerHTML.length > 2 ) {
                        

                        summary.bind('mouseover', function(e) {
                            $( e.currentTarget ).addClass('hover');
                        });
                        summary.bind('mouseleave', function(e) {
                            $( e.currentTarget ).removeClass('hover');
                        });

                        if ( $( cv ).find( o.cvInnerClass ).height() > 0 ) {
                            open.bind('click', function( e ) {
                                e.preventDefault();
                                
                                if ( $( cv ).find( o.cvInnerClass ).height() > 0 ) {
                                    if ( !$( cv ).hasClass('show') ) {
                                        persons.each(function( i, el ) {
                                            var cvOther = $( el ).find( o.cvClass )[0];
                                            var summaryOther = $( el ).find( o.summaryClass )[0];

                                            if ( $( cvOther ).hasClass('show') ) {
                                                $( $( summaryOther ).parent() ).removeClass( 'hover' );
                                                $( cvOther ).animate({'height' : 0 }, o.duration, o.easing, function() {
                                                    $( cvOther ).removeClass('show');
                                                });
                                            }
                                        });
                                        $( $( cv ).parent() ).addClass('hover');

                                        $( cv ).animate({'height' : $( cv ).find( o.cvInnerClass ).outerHeight() }, o.duration, o.easing, function() {
                                            $( cv ).addClass( 'show' );
                                        });
                                    }
                                }
                            });
                        }
                        else {
                            summary.css({'cursor': 'default'});
                        }
                    }
                    else {
                        summary.css({'cursor': 'default'});
                    }
                });
            });
        }
    });
})(jQuery);
