var folId, folders;
var nahranoPoprve = false;

// je voláno z @layout.phtml a pozor, i z HandleEditForm
function foldersRegister(Y, obnovitStrom) {
    var cfg = { on: { complete: RefreshFolders } };
    if(obnovitStrom) {cfg.arguments = {obnovitStrom: true} }
    Y.io(REMOTE_URL + "?action=list&type=folders", cfg);
}
        
function folRozbal(folId, foldersObj, targetId, vypsatFrontu) {
      
    targetId = targetId ? targetId : "#folder"+folId;
    if(vypsatFrontu) {
        zmenNastaveniFronty("n", "folderId", folId);
        zmenFrontu("n");
    }
    
    var f = Y.one(targetId);
    Y.all("div.folder p").removeClass("otevreny");
    if(f.one("p")) f.one("p").addClass("otevreny");
    if(f.one("span")) {
        Y.detach('editFolder|click');
        f.one("span").on('editFolder|click', function(e) {
            editFolder(this.folderObject);
            e.cancelBubble = true;
        });
    }
    
    var sourozenci = f.get('parentNode').all("div.folder");
    sourozenci.each(function() 
    {
        this.removeClass()
        this.all('div.folder').remove();
    });
    
    if((folId != -1 || targetId == "#folders") && typeof foldersObj != "undefined") {
        for(var i = 0; i < foldersObj.length; i++) {
            var f = foldersObj[i];
            if(folId == f.parent) {
                Y.one(targetId).appendChild(
                    Y.Node.create("<div id='folder"+f.id+"' class='folder'><p>"+f.fname+"<span></span></p></div>")
                );
                Y.one("#folder"+f.id+" span").folderObject = f;
            }
        }
    }
    
    if(targetId == "#folders") {
        Y.one("#folders").append(Y.Node.create("<div id='folder-1' class='folder'><p>FTP</span></p></div>"));        
    }
}
function RefreshFolders(transactionId, response, arguments) {
    if(!response.responseText) { return null; }

    var odpoved = eval('('+response.responseText+')');
    
    folders = odpoved.folders;    
    
    if((!nahranoPoprve || arguments.obnovitStrom) && Y.one("#folders") != null ) {
        Y.one("#folders").set("innerHTML", "");
        folRozbal(-1, folders, "#folders", false);
        
        if(Y.all(".folder")) Y.all(".folder").on('click', function(e) {
            if(e.target.get("nodeName") != "SPAN") {
                
                Y.io("/nahraj/?invalidateall=1");
                
                folRozbal(parseInt(e.target.get('parentNode').get('id').toString().replace("folder", "")), folders, false, true);
            }
        });
        
        var buttonAdd = Y.Node.create("<button id='addFolder'>Přidat</button>");
        buttonAdd.on('click', function() { editFolder(); });
        Y.one("#folders").append(buttonAdd)
                         .append(Y.Node.create("<div class='cleaner'></div>"));
        
        nahranoPoprve = true;
    }
}

// Dialog pro úpravu existující nebo vytvoření nové složky (záletí na parametru)
// Vyžadováno: folderObject.fname, folderObject.id, folderObject.parent
function editFolder(folderObject) {
    if(!folderObject) {
        /* Dále budeme sledovat folderObject.id == null, jestli jde o editaci nebo přidání nové složky */
        folderObject = {
                            fname: "", 
                            id: null, 
                            parent: -1
                        };
    }
    var nazevFormulare = folderObject.id ? "Upravit složku" : "Vytvořit složku";
    var form = Y.Node.create("<form id='editFolder' class='editDialog' method='post'><h2>"+nazevFormulare+"</h2><table></table></form>");
    var tr1 = Y.Node.create("<tr><th><label>Název složky</label></th><td></td></tr>");
    tr1.one("td").append(Y.Node.create("<input type='hidden' name='action' value='setinfo' />"));
    tr1.one("td").append(Y.Node.create("<input type='hidden' name='parent' value='"+folderObject.parent+"' />"));
    tr1.one("td").append(Y.Node.create("<input type='hidden' name='type' id='editFolderType' value='"+(folderObject.id ? "rename_folder" : "create_folder")+"' />"));
    tr1.one("td").append(Y.Node.create("<input type='text' name='fname' value='"+folderObject.fname+"' />"));
    tr1.one("td").append(Y.Node.create("<input type='hidden' name='folder' value='"+folderObject.id+"' />"));
    form.one("table").append(tr1);
    var tr2 = Y.Node.create("<tr><th><label>Zařazení</label></th><td></td></tr>");
    
    var select = Y.Node.create("<select name='parent'></select>");
    var optionNejvys = Y.Node.create("<option id='folderOptionNejvys' value='-1'>(nejvýš)</option>");
    if(folderObject.id == null || folderObject.parent == -1) {
        optionNejvys.setAttribute("selected", "selected");
    }
    select.append(optionNejvys);
    if(typeof folders != "undefined") {
        for(var i = 0; i < folders.length; i++) {
            if(folders[i].id == folderObject.id) {continue;} // Složku nelze přesunout samu do sebe
            var option = Y.Node.create("<option></option>")
                               .set("id", "folderOption"+folders[i].id)
                               .set("value", folders[i].id) 
                               .set("innerHTML", folders[i].fname);
            if(folders[i].id == folderObject.parent) { option.setAttribute("selected", "selected"); }
            select.append(option);
        }
    }

    
    tr2.one("td").append(select);
    form.one("table").append(tr2);
    
    form.append(Y.Node.create("<p></p>"));
    
    /*Tlačítko "smazat" - jen pro editaci souboru*/
    if(folderObject.id) {
        form.one("p").append("<input id='editFolderDelete' class='velkeTlacitko' value='Smazat' type='submit' />");
        form.one("#editFolderDelete").on("click", function(e) {
           if(confirm("Opravdu chceš smazat tuto složku?")) {
               Y.one("#editFolderType").set("value", "delete_folder");
           } else {
               e.preventDefault();
           }
        });
    }
    
    /* Tlačítko "Storno" */
    form.one("p").append("<button id='editFolderStorno' class='velkeTlacitko'>Storno</button>");
    form.one("#editFolderStorno").on("click", function(e) {
       e.preventDefault();
       closePopup();
    });
    
    /* Tlačítko OK */
    form.one("p").prepend("<input type='submit' id='editFolderOK' class='velkeTlacitko' value='OK' />");
    form.one("#editFolderOK").on("click", function(e) {
        //Y.io().. tady asi nemusí pořádně nic být, obsluhu zařídí níže HandleEditForm
    });
    
    form.on('submit', handleRemoteForm, HandleEditForm);
    
    popup("editFolder", form);
}
