var DropDownFilter = new Class({


	initialize: function(filter, callback)
	{
		var arrowUp = new Image();
		arrowUp.src = "img/frontend/bullet-open.png";
		
		this.bullet = filter.getElement('.bullet');
		this.body = filter.getElement('.body');
		this.callback = callback;
		
		var self = this;

		$$(this.bullet).addEvent('mouseenter', function() {
			$(self.body).setStyle('display', 'block');
			$(self.bullet).setStyle('background-image', 'url(img/frontend/bullet-open.png');
		});

		$$(filter).addEvent('mouseleave', function() {
			$(self.body).setStyle('display', 'none');
			$(self.bullet).setStyle('background-image', 'url(img/frontend/bullet.png');
		});
		
		var checkboxes = $(self.body).getElements('input');
		checkboxes.removeEvents('click');
		checkboxes.addEvent('click',function(){
                       
			
            var allChbClicked = $(this).getParent('label').get('class') == 'all';
            var allChbChecked = allChbClicked && $(this).get('checked');
            
			if ( allChbClicked ) {
				var c = $(this);
				
                if( c.get('checked') ){
                   checkboxes.each(function(item) {
                       
                       if( item.getParent('label').get('class') != 'all' ){
                            item.set('checked', false );
                       }else{
                           item.set('checked', true );
                       }
                   }); 
                }else{
                    /* do nothing on "uncheck all" */
                }                
			}
            
			var checked = new Array();
			checkboxes.each(function(item, i) {
				if ( (allChbChecked ||  $(item).get('checked')) && $(item).get('value') ) {
					checked.push($(item).get('value'));
				}
			});
            
            /* Only "all" is checked others unchecked */
			if ( checked.length == checkboxes.length - 1 || checked.length == 0) {
                $(self.body).getElements('input').set('checked', '');
				$(self.body).getElements('.all input').set('checked', 'checked');
			} else {
                
                if( !allChbClicked ){
                    $(self.body).getElements('.all input').set('checked', '');
                }
			}
			callback(checked.join());
                        
		})
	}
})
