
/*---- SHOW/HIDE projectzoeker ----*/

function toggleProjectzoeker () {
    if ( $('projectZoekerBody').hasClass('project-zoeker-collapsed') ) {
        $('projectZoekerBody').removeClass('project-zoeker-collapsed');
        $('projectZoekerBody').addClass('project-zoeker-expanded');
        $('projectzoekerCon').removeClass('hidden');
    } else {
        $('projectZoekerBody').addClass('project-zoeker-collapsed');
        $('projectZoekerBody').removeClass('project-zoeker-expanded');
        $('projectzoekerCon').addClass('hidden');
    }
}
	

ProjectFilter = {};
ProjectFilter.items = [];
ProjectFilter.formId = 0;
ProjectFilter.LOADING_DELAY = 550;
ProjectFilter.ITEMS_PER_PAGE = 9;

ProjectFilter.getItemId = function ( item ) {
    if ( 'id' in item ) {
	    return parseInt(item.id.match ( /_([0-9]+)$/ ) [1]);
    }
    return null;
}
ProjectFilter.init = function ( updateList ) {
    ProjectFilter.updateList = updateList;
    
    $ES('div.project-item', $('project-list')).each ( function ( item ) {
        item.removed=false;
        ProjectFilter.items.push(item);
    } );
    $A($('projectFilterForm').elements).each ( function ( element ) {
        if ( element.nodeName.toLowerCase () == 'select' ) {
            $(element).addEvent ( 'change', ProjectFilter.sendForm );
        } else if ( element.nodeName.toLowerCase() == 'input' && element.type.toLowerCase() == 'checkbox' ) {
            $(element.parentNode).addEvent ( 'click', ProjectFilter.sendForm );
        }
    } );
    var formIdInput = new Element('input', {'type':'hidden','name':'formId','value':ProjectFilter.formId} );
    
    $('projectFilterForm').appendChild(formIdInput);
}

ProjectFilter.removeItem = function ( item ) {
    if ( !item.removed ) {
        item.style.display='none';
        item.removed = true;
    } 
}

ProjectFilter.addItem = function ( item ) {
    item.addClass ( 'loading' );
    item.removeClass.delay(ProjectFilter.LOADING_DELAY,item,'loading'); 
    if ( item.removed ) {
        item.style.display='block';
        item.removed = false;
    } 
}


ProjectFilter.filter = function ( selectedItems ) {
    var addItems = [];
    if ( ProjectFilter.updateList && ProjectFilter.items.length ) {
	    $each ( ProjectFilter.items, function ( item ) {
	        if ( selectedItems.contains ( ProjectFilter.getItemId(item) ) ) {
	            addItems.push ( item );
	        } else {
	            ProjectFilter.removeItem(item);
	        }
	    } );
	    addItems.each(function( item ) {
	        ProjectFilter.addItem(item);
	    } );
	    ProjectFilter.pager.reload( false );
    }
    ProjectFilter.displayItemCount ( selectedItems.length );
}

ProjectFilter.sendForm = function ( selectedItems ) {
    $('projectFilterForm').elements['formId'].value = (++ProjectFilter.formId); 
    $('projectFilterForm').send ( {
        onComplete:function(r){
            var response = Json.evaluate(r);
            // makes sure only the last of the sent form's response is processed.
            if ( response.formId == ProjectFilter.formId ) {
                ProjectFilter.filter(response.ids);
            }
        }
    } );
}

ProjectFilter.getNumberImage = function ( nr ) {
    var ret = new Image();
    ret.src='gfx/headings/num_' + nr + '.gif';
    return ret;
}

ProjectFilter.displayItemCount = function ( itemCount ) {
    var c = '' + itemCount;
    var images = [];
    for( var i = 0; i < c.length; i ++ ) {
        var ch = c.substr(i,1);
        images.push(ProjectFilter.getNumberImage(ch));
    }
    $('projectCountCell').setHTML('');
    
    images.each ( function ( i ) {
        $('projectCountCell').appendChild(i);
    } );
}

ProjectFilter.Pager = TdhPager.extend ( {
    getPagingElement:function () {
        var ret =$('project-paging');
        return ret;
    },
    
    display:function ( item, first ) {
        if ( item.hasClass('paging-hidden') ) {
            item.removeClass('paging-hidden');
            if ( !first ) {
                item.addClass('loading');
                item.removeClass.delay(ProjectFilter.LOADING_DELAY,item,'loading');
            } 
        }
    },
    
    isIncluded:function ( item ) {
        return !item.removed;
    }
} );
