function DirectoryView(id) { this.id = id; }
DirectoryView._s = null;
DirectoryView._path = '';
DirectoryView.prototype.Select = function(e) {
    DirectoryView._s = this;
    DirectoryView.Select(e);
}
DirectoryView.prototype.GetPath = function() {
    return DirectoryView._path;
}
DirectoryView.Select = function(e) {
    $(DirectoryView._s.id + '__items').select('div').invoke('removeClassName', 'hilite');
    
    var d = e.select('div')[0];
    if (d && d.hasClassName('folder'))
        DirectoryView.LoadFolder(d.id);
    else
    {
        e.addClassName('hilite');
        DirectoryView._s = e;
        var img = $(e).select('img')[0];
        DirectoryView.LoadItemDetails(img);
    }
}
DirectoryView.LoadItemDetails = function(e) {
    BA.Call({ parameters: { service: 'Ctrl.directoryView.loadDetails', 
        path: DirectoryView._path + e.alt }, 
        onComplete: DirectoryView.OnDetailsLoaded });
}
DirectoryView.OnDetailsLoaded = function(t) {
    $('details').innerHTML = t.responseText;
    $('delete').show('block');
    $('btnDelete').observe('click', DirectoryView.Delete);
}
DirectoryView.Delete = function() {
    if (!confirm(GetLabel('confirmDeleteMedia'))) return;
    var e = DirectoryView._s;
    $(e).parentNode.removeChild(e);
    BA.Call({ parameters: { service: 'Ctrl.directoryView.delete', 
        path: DirectoryView._path + $(e).select('img')[0].alt }, 
        onComplete: DirectoryView.OnDeleted });
}
DirectoryView.OnDeleted = function() {
    $('details').innerHTML = '';
    $('delete').hide();
    DirectoryView.UpdateStatus();
}
DirectoryView.UpdateStatus = function() {
    $('amount').innerHTML = $(this.id + "__items").select('div.item').length;
}
DirectoryView.LoadFolder = function(f) {
    DirectoryView.ChangeDirectory(f);
    $(DirectoryView._s.id).handler.params.directory = DirectoryView._path;
    $(DirectoryView._s.id).handler.loaded = false;
    $(DirectoryView._s.id).handler.Load();
}
DirectoryView.OnFolderLoaded = function() {}
DirectoryView.ChangeDirectory = function(f) {
    if (f != '..')
        DirectoryView._path += f.trim() + '/';
    else
    {
        var p = DirectoryView._path.split('/');
        p.length = p.length - 2;
        DirectoryView._path = p.join('/') + '/';
        
        if (DirectoryView._path.length == 1)
            DirectoryView._path = '';
    } 
}
DirectoryView.RemoveFilter = function() {
    $(this.id + "__items").select('div.hidden','div.item').invoke('switchClass','hidden','item');
    DirectoryView.UpdateStatus();
}
DirectoryView.Filter = function(f) {
    var all = $(this.id + "__items").select('div.hidden','div.item').invoke(
        'switchClass','item','hidden');
    switch (f)
    {
        case 'images':
            $(this.id + "__items").select('div>img[alt$=jpg]', 'div>img[alt$=gif]', 
                'div>img[alt$=png]').each( function(e) { 
                    e.parentNode.switchClass('hidden', 'item'); } );
            break;
        
        case 'docs':
            $(this.id + "__items").select('div>img[alt$=pdf]', 'div>img[alt$=doc]', 
                'div>img[alt$=xls]', 'div>img[alt$=psd]').each(
                    function(e) { e.parentNode.switchClass('hidden', 'item'); }
            );
            break;
    }
    DirectoryView.UpdateStatus();
}

