function stahniFrontuN(nastaveni) {
    if(typeof nastaveni == 'undefined') {nastaveni = dejNastaveniFronty("n");}
    var folderId = typeof nastaveni["folderId"] == "undefined" ? "0" : nastaveni["folderId"];
    
    var cfg = { on: { complete: RefreshFrontaN } };
    Y.io(REMOTE_URL+"?action=list&type=uploads&uploads_limit="+DELKA_STRANKY+"&uploads_folder="+folderId, cfg);
}

function RefreshFrontaN(transactionId, response, arguments) {
    if(!Y.one("#fronta")) { return; }
    Y.one("#fronta").set("innerHTML", "");
    if(!response.responseText) { return null; }

    var odpoved = eval('('+response.responseText+')');
    var soubory = odpoved.files ? odpoved.files : odpoved.uploads;
    
    var t = Y.Node.create("<table><tfoot><tr><td colspan='4' class='strankovani'><a href='#' id='akceOznacitVse'>Označit vše</a> | <a href='#' id='akceOdznacit'>Odznačit</a><span class='legenda'><span class='verejny'>Veřejný</span><span class='soukromy'>Soukromý</span><span class='klasicky'>Klasický</span><span class='primy'>Přímý</span></span><br/><br/></td><td style='vertical-align: top;'>Souborů: <span id='velikost_fronty'>0</span></td></tr></tfoot><tr class='hlavicka'><td colspan='2'>Název</td><td>Detaily</td><td>Velikost</td><td colspan='2'>Staženo</td></tr></table>");
    t.one("td.strankovani").append(dejStrankovadlo(odpoved.uploads_count, DELKA_STRANKY, odpoved.uploads_start, prestrankujFrontuN));


    if(typeof soubory != "undefined") {
        for(var i = 0; i<soubory.length; i++) {

        var check = Y.Node.create("<input type='checkbox' />")
                          .set("id", soubory[i].id)
                          .setAttribute("rel", soubory[i].ddirectlink)
                          .addClass("oznacovac");
        
        var star = Y.Node.create("<div class='hvezdicka'></div>")
                         .setAttribute("rel", soubory[i].id)
                         .set("innerHTML", "&nbsp;");
        if(soubory[i].star=="1") {star.addClass("oblibena");}
        star.on("click", ToggleStar);
        
        var td0 = Y.Node.create("<td></td>")
                        .append(check)
                        .append(star);
        
        var td1 = Y.Node.create("<td></td>")
                        .addClass("nazev");
        
        if(typeof soubory[i].ddirectlink != "undefined" && soubory[i].ddirectlink) {
            var a = Y.Node.create("<a></a>")
                     .set("innerHTML", soubory[i].fname.zkrat())
                     .set("alt", soubory[i].fname)
                     .set("title", soubory[i].fname)
                     .set("href", soubory[i].ddirectlink);

            td1.append(a);
        } else {
            td1.set("innerHTML", soubory[i].fname);
        }

        var icko = Y.Node.create("<div class='icko'></div>")
                               .setAttribute("rel", soubory[i].id)
                               .set("innerHTML", "&nbsp;"); 
        icko.on("click", function(e) {
            var fileObject = e.currentTarget.fileObject;
            editFile(fileObject);
        });  
        icko.fileObject = soubory[i];                          
                            
        var directMark = Y.Node.create("<div class='directmark'></div>")
                               .setAttribute("rel", soubory[i].id)
                               .set("innerHTML", "&nbsp;"); 
        if(soubory[i].directmark=="1") {directMark.addClass("active");}
        directMark.on("click", ToggleDirect);                            
                            
        var publicMark = Y.Node.create("<div class='publicmark'></div>")
                               .setAttribute("rel", soubory[i].id)
                               .set("innerHTML", "&nbsp;"); 
        if(soubory[i].publicmark=="1") {publicMark.addClass("active");}
        publicMark.on("click", TogglePublic);    
        
        var td2 = Y.Node.create("<td></td>")
                   .append(icko) 
                   .append(directMark)
                   .append(publicMark) 
                   .addClass("info");
        
        var td3 = Y.Node.create("<td></td>")
                        .set("innerHTML", Math.round(soubory[i].fsize/1000000) + "&nbsp;MB")
                        .addClass("info");

        if(soubory[i].downloads != "0") {
            var naposledStazeno = new Date(parseInt(soubory[i].dtime)*1000);        
            var popisekStazeno = soubory[i].downloads + "x, " + String("0"+(naposledStazeno.getDate())).slice(-2) + "." + String("0"+(naposledStazeno.getMonth()+1)).slice(-2) + "." + String(naposledStazeno.getYear()).slice(-2);
        } else {
            var popisekStazeno = "0x";
        }
        
        var td4 = Y.Node.create("<td></td>")
                        .set("innerHTML", popisekStazeno)
                        .addClass("info");
        
        t.append( Y.Node.create("<tr></tr>")
                .append(td0)
                .append(td1)
                .append(td2)
                .append(td3)
                .append(td4)
                .addClass(i%2 ? "sudy" : "lichy")  );
    }
    }
    
    var button = Y.Node.create("<button>Smazat</button>")
                       .addClass("smazat");
    button.on("click", function() {
        if(confirm("Opravdu smazat všechny vybrané soubory?")) {
            var idecka = "";
            Y.all(".oznacovac").each(function(){
                if(this.get("checked")) {
                    idecka += ("id["+this.get("id")+"]="+this.get("id") + "&");
                }
            });
            
            var cfg = {
                method: "POST", 
                data: "action=setinfo&type=uploads_deletemark&"+idecka, 
                on: {complete: HandleDejZpravu},
                arguments: {zavolej: stahniFrontuN}
            };
            Y.io(REMOTE_URL, cfg);
        }
    });
    
    
    var buttonLinky = Y.Node.create("<button>Zobrazit odkazy</button>")
                       .addClass("zobrazitOdkazy");
    buttonLinky.on("click", handleZobrazitOdkazy);
    
    var pruhAkce = Y.Node.create("<div><span id='akceOznacene'></span></div>")
                          .addClass("akceFronty")
                          .prepend(buttonLinky)
                          .prepend(button);
    pruhAkce.one("#akceOznacene").append("Označené: <select id='hromadnaAkce'><option selected='selected' id='vyberAkci' value=''>(vyber akci)</option><optgroup label='Nastavit'><option class='optionPublic' rel='1' value='optionPublic1'>veřejné stahování</option><option class='optionPublic' rel='0' value='optionPublic0'>soukromé stahování</option><option class='optionDirect' rel='0' value='optionDirect0'>klasický download</option><option class='optionDirect' rel='1' value='optionDirect1'>přímý download</option></optgroup><optgroup label='Přesunout do' id='presunoutDo'></optgroup></select>");
    
    Y.one("#fronta").append(t).append(
        pruhAkce
    );
    
    Y.one("#velikost_fronty").set("innerHTML", odpoved.uploads_count);
    
    Y.one("#hromadnaAkce").on("change", function(e) {
        var options = this.get("options");
        var currentOption = options.item(this.get("selectedIndex"));
        
        if(currentOption.hasClass("optionPublic")) {
            // Hromadná práce se soubory - nastavení akce pro VEŘEJNÉ / SOUKROMÉ stahování
            window.newPublicState = currentOption.getAttribute("rel");
            window.publicIdecka = new Array;
            Y.all("input.oznacovac").each(function() {
                if(this.get("checked")) {
                    publicIdecka[this.getAttribute("id")] = newPublicState;
                }
            });
            
            var strIdecka = "";
            var i = 0;
            for(var id in publicIdecka) {
                strIdecka += "&id["+id+"]="+newPublicState;
            }
            
            var cfg={on: {complete: TogglePublicResponse}};
            Y.io(REMOTE_URL+"?action=setinfo&type=uploads_publicmark"+strIdecka, cfg);
        } else if(currentOption.hasClass("optionDirect")) {
            // Hromadná práce se soubory - nastavení akce pro KLASICKÉ / PŘÍMÉ stahování
            window.newDirectState = currentOption.getAttribute("rel");
            window.directIdecka = new Array;
            Y.all("input.oznacovac").each(function() {
                if(this.get("checked")) {
                    directIdecka[this.getAttribute("id")] = newDirectState;
                }
            });
            
            var strIdecka = "";
            var i = 0;
            for(var id in directIdecka) {
                strIdecka += "&id["+id+"]="+newDirectState;
            }
            
            var cfg={on: {complete: ToggleDirectResponse}};
            Y.io(REMOTE_URL+"?action=setinfo&type=uploads_directmark"+strIdecka, cfg);
        } else if(currentOption.hasClass("doSouboru")) {
            // Hromadná práce se soubory - přesun souborů do jiné složky
            window.newFolder = currentOption.getAttribute("value");
            window.moveIdecka = new Array;
            Y.all("input.oznacovac").each(function() {
                if(this.get("checked")) {
                    moveIdecka[this.getAttribute("id")] = newFolder;
                }
            });
            
            var strIdecka = "";
            var i = 0;
            for(var id in moveIdecka) {
                strIdecka += "&id["+id+"]="+newFolder;
            }
            
            var cfg={
                on: {complete: HandleDejZpravu},        
                arguments: {zavolej: stahniFrontuN}
            };
            Y.io(REMOTE_URL+"?action=setinfo&type=upload_to_folder&folder="+newFolder+strIdecka, cfg);
        }
    });
    
    // Seznam adresářů, do kterých bude možné přesunout soubory
    if(typeof folders != "undefined") {
        for(var i = 0; i < folders.length; i++) {
            var option = Y.Node.create("<option></option>")
                               .set("id", "folderOption"+folders[i].id)
                               .set("value", folders[i].id) 
                               .addClass("doSouboru")
                               .set("innerHTML", folders[i].fname);
            pruhAkce.one("optgroup#presunoutDo").append(option);
        }
    }
    Y.one("#vyberAkci").set("selected", true);

    Y.one("#akceOznacitVse").on("click", function(e){
        e.preventDefault();
        Y.all(".oznacovac").set("checked", true);
    });
    Y.one("#akceOdznacit").on("click", function(e){
        e.preventDefault();
        Y.all(".oznacovac").set("checked", false);
    });
}

function ToggleStar() {
    var cfg={on: {complete: ToggleStarResponse}};
    var novyStav = this.hasClass("oblibena") ? "0": "1";
    Y.io(REMOTE_URL+"?action=setinfo&type=uploads_star&id["+this.getAttribute("rel")+"]="+novyStav, cfg);
}

function ToggleStarResponse(transactionId, response, arguments) {
    var odpoved = eval('('+response.responseText+')');
    if(odpoved.status && odpoved.states) {
        for(var i = 0; i < odpoved.states.length; i++) {
            if(odpoved.states[i].state == 1) {
                Y.one(".hvezdicka[rel="+odpoved.states[i].id+"]").addClass("oblibena");
            } else {
                Y.one(".hvezdicka[rel="+odpoved.states[i].id+"]").removeClass("oblibena");
            }
        }    
    }
}

function ToggleDirect() {
    var cfg={on: {complete: ToggleDirectResponse}};
    if(typeof this.vynucenaHodnota != "undefined") {
        var novyStav = this.vynucenaHodnota;
        var rel = this.vynucenyRel;
    } else {
        var novyStav = this.hasClass("active") ? "0": "1";
        var rel = this.getAttribute("rel");
    }
    Y.io(REMOTE_URL+"?action=setinfo&type=uploads_directmark&id["+rel+"]="+novyStav, cfg);
}

function ToggleDirectResponse(transactionId, response, arguments) {
    var odpoved = eval('('+response.responseText+')');
    if(odpoved.status && odpoved.states) {
        for(var i = 0; i < odpoved.states.length; i++) {
            if(odpoved.states[i].state == 1) {
                Y.one(".directmark[rel="+odpoved.states[i].id+"]").addClass("active");
            } else {
                Y.one(".directmark[rel="+odpoved.states[i].id+"]").removeClass("active");
            }
        }    
    }
}

function TogglePublic() {
    var cfg={on: {complete: TogglePublicResponse}};
    if(typeof this.vynucenaHodnota != "undefined") {
        var novyStav = this.vynucenaHodnota;
        var rel = this.vynucenyRel;
    } else {
        var novyStav = this.hasClass("active") ? "0": "1";
        var rel = this.getAttribute("rel");
    }
    Y.io(REMOTE_URL+"?action=setinfo&type=uploads_publicmark&id["+rel+"]="+novyStav, cfg);
}

function TogglePublicResponse(transactionId, response, arguments) {
    var odpoved = eval('('+response.responseText+')');
    if(odpoved.status && odpoved.states) {
        for(var i = 0; i < odpoved.states.length; i++) {
            if(odpoved.states[i].state == 1) {
                Y.one(".publicmark[rel="+odpoved.states[i].id+"]").addClass("active");
            } else {
                Y.one(".publicmark[rel="+odpoved.states[i].id+"]").removeClass("active");
            }
        }    
    }
}

function editFile(fileObject) {
    var form = Y.Node.create("<form id='editFile' class='editDialog' method='post'><h2>Informace o souboru</h2><table style='text-align: left;'></table></form>")
                     .append(Y.Node.create("<input type='hidden' name='action' value='setinfo' />"));

    var tr2 = Y.Node.create("<tr><th><label>URL souboru</label></th><td></td></tr>");
    var inpURL = Y.Node.create("<input />")
                       .set("type", "text")
                       .set("value", fileObject.ddirectlink);
    tr2.append(inpURL);
    
    var tr3 = Y.Node.create("<tr><th><label>HTML odkaz</label></th><td></td></tr>");
    var inpHTML = Y.Node.create("<input />")
                       .set("type", "text")
                       .set("value", "<a href='"+fileObject.ddirectlink+"'>"+fileObject.ddirectlink+"</a>");
    tr3.append(inpHTML);
    
    var tr4 = Y.Node.create("<tr><th><label>Odkaz do fóra</label></th><td></td></tr>");
    var inpForum = Y.Node.create("<input />")
                       .set("type", "text")
                       .set("value", "[url='"+fileObject.ddirectlink+"]"+fileObject.ddirectlink+"[/url]");
    tr4.append(inpForum);
    
    var tr5 = Y.Node.create("<tr><th><label>Poznámka</label></th><td></td></tr>");
    var inpNote = Y.Node.create("<input />")
                       .set("type", "text")
                       .set("id", "editFileNote")
                       .set("value", fileObject.note);
    tr5.append(inpNote);
    
    var tr6 = Y.Node.create("<tr><th><label>Typy souboru</label></th><td></td></tr>");
    var inpPublic = Y.Node.create("<input />")
                       .set("name", "publicmark")
                       .set("type", "radio")
                       .set("id", "publicradio")
                       .set("checked", Y.one(".publicmark[rel="+fileObject.id+"]").hasClass("active") ? "checked" : "");
    inpPublic.on("click", TogglePublic, {vynucenaHodnota: 1, vynucenyRel: fileObject.id});
    var labelPublic = "<label for='publicradio'> veřejný download <small>Tento soubor bude veřejně vyhledatelný v megarapidu.<br /><br /></small></label>"
    
    var inpPrivate = Y.Node.create("<input />")
                       .set("name", "publicmark")
                       .set("type", "radio")
                       .set("id", "privateradio")
                       .set("checked", Y.one(".publicmark[rel="+fileObject.id+"]").hasClass("active") ? "" : "checked");
    inpPrivate.on("click", TogglePublic, {vynucenaHodnota: 0, vynucenyRel: fileObject.id});
    var labelPrivate = "<label for='privateradio'> soukromý download <small> Tento soubor bude přístupný pouze lidem, kteří na něj mají přímý odkaz. Nebude možné jej vyhledávat.<br /><br /></small></label>"
    
    var inpDirect = Y.Node.create("<input />")
                       .set("name", "directmark")
                       .set("type", "radio")
                       .set("id", "directradio")
                       .set("checked", Y.one(".directmark[rel="+fileObject.id+"]").hasClass("active") ? "checked" : "");
    inpDirect.on("click", ToggleDirect, {vynucenaHodnota: 1, vynucenyRel: fileObject.id});
    var labelDirect = "<label for='directradio'> přímý download <small>Kredity za stažení budou odečteny Vám a soubor bude stažen bez jakýchkoli kódů, přihlašování a čekání.<br /><br /></small></label>"
    
    var inpClassic = Y.Node.create("<input />")
                       .set("name", "directmark")
                       .set("type", "radio")
                       .set("id", "classicradio")
                       .set("checked", Y.one(".directmark[rel="+fileObject.id+"]").hasClass("active") ? "" : "checked");
    inpClassic.on("click", ToggleDirect, {vynucenaHodnota: 0, vynucenyRel: fileObject.id});
    var labelClassic = "<label for='classicradio'> klasický download <small> Kredity budou odečteny uživateli, který soubor stahuje, nebo bude umožněno omezené stahování pomocí free volby.<br /><br /></small></label>"
    
    tr6.append(inpPublic).append(labelPublic)
       .append(inpPrivate).append(labelPrivate)
       .append(inpDirect).append(labelDirect)
       .append(inpClassic).append(labelClassic);
    
    var tr7 = Y.Node.create("<tr><th><label>Přejmenovat</label></th><td></td></tr>");
    var inpRename = Y.Node.create("<input />")
                       .set("type", "text")
                       .set("id", "editFileName")
                       .set("value", fileObject.fname);
    tr7.append(inpRename);
    
    form.one("table").append(tr2)
                     .append(tr3)
                     .append(tr4)
                     .append(tr5)
                     .append(tr6)
                     .append(tr7);
    
    form.append(Y.Node.create("<p></p>"));
      
    /* Tlačítko "Storno" */
    form.one("p").append("<button id='editFileStorno' class='velkeTlacitko'>Storno</button>");
    form.one("#editFileStorno").on("click", function(e) {
       e.preventDefault();
       closePopup();
    });
    
    /* Tlačítko OK */
    form.one("p").prepend("<input type='submit' id='editFileOK' class='velkeTlacitko' value='OK' />");
    form.one("#editFileOK").on("click", function(e) {
        e.preventDefault();
        
        var cfg1 = {
            on: {complete: stahniFrontuN}
        };
        Y.io(REMOTE_URL+"?action=setinfo&id["+fileObject.id+"]="+Y.one("#editFileName").get("value")+"&type=uploads_rename", cfg1);
        
        var cfg2 = {
            on: {complete: stahniFrontuN}
        };
        Y.io(REMOTE_URL+"?action=setinfo&id["+fileObject.id+"]="+Y.one("#editFileNote").get("value")+"&type=uploads_note", cfg2);

        closePopup();
    });
    
    popup("editFile", form, 170);
}

function prestrankujFrontuN(stranka) {
    var nastaveni = dejNastaveniFronty("n");
    var folderId = typeof nastaveni["folderId"] == "undefined" ? "0" : nastaveni["folderId"];
    
    var cfg = { on: { complete: RefreshFrontaN } };
    Y.io(REMOTE_URL+"?action=list&type=uploads&uploads_limit="+DELKA_STRANKY+"&uploads_folder="+folderId+"&uploads_start="+((stranka-1) * DELKA_STRANKY), cfg);
}

