/*
#######################################
Editor Controller for core javascript library
#######################################
*/

var EditPanel = new Class({
    
    editMode: false,
    
    initialize: function(){
        this.currentElement = null;
        this.currentContent = null;
        this.setEditMode(true);
    },
    
    setEditMode: function(status) {
        if(status && this.editMode == false)
        {
            // Create admin menu
            var adminMenuContent = '';
            adminMenuContent += '<ul id="admin-buttons" onmouseout="javascript:editPanel.adminCombobox(false)">';
            adminMenuContent += '<li id="admin-title"><a id="admin-combobox" onmouseover="editPanel.adminCombobox(true)">Panneau d\'administration <span id="margin">&nbsp;</span></a> | </li>';
            adminMenuContent += '<li id="admin-button1"></li>';
            adminMenuContent += '<li id="admin-button2"></li>';
            adminMenuContent += '<li id="admin-button3"></li>';
            adminMenuContent += '<li id="admin-button4"></li>';
            adminMenuContent += '<li id="admin-button5"></li>';
            adminMenuContent += '<li id="admin-button6"></li>';
            adminMenuContent += '</ul>';
            var container = $('wrap');
            var adminMenu = container.insertBefore(new Element("div", {'id':'admin-menu'}), container.firstChild);
            adminMenu.setStyle('opacity', '0');
            adminMenu.set('html', adminMenuContent)
            this.updateEditMode(historyManager.getCurrentLocation());
            adminMenu.fade('in');
            if($$('.rmsaccordion')) page.refresh();
            this.editMode = true;
        }
        else if (status == false && this.editMode == true)
        {
            this.editMode = false;
            var fadeOut = new Fx.Tween($('admin-menu'), {
                'duration': 'normal',
                onComplete:function() {
                    $('admin-menu').destroy();
                    delete window.editPanel;
                    page.refresh();
                }
            })
            fadeOut.start('opacity', 0);
        }
    },
    
    adminCombobox: function(status) {
        if(status) {
            if(!$('combobox-menu')) {
                var comboboxContent = '';
                comboboxContent += '<ul>'
                comboboxContent += '<li href="/user/list" onclick="page.load(\'/user/list\'); editPanel.adminCombobox(false); return false;" \
                onmouseover="editPanel.adminCombobox(true)" onmouseout="editPanel.adminCombobox(false)">Gérer les utilisateurs</li>'
                comboboxContent += '<li href="/newsletter/list" onclick="page.load(\'/newsletter/list\'); editPanel.adminCombobox(false); return false;" \
                onmouseover="editPanel.adminCombobox(true)" onmouseout="editPanel.adminCombobox(false)">Gérer la newsletter</li>'
                comboboxContent += '<li onclick="editPanel.adminCombobox(false); javascript:auth.logout();" \
                onmouseover="editPanel.adminCombobox(true)" onmouseout="editPanel.adminCombobox(false)">Quitter l\'administration</li>'
                comboboxContent += '</ul>'
                newCombobox = new Element('div', {'id':'combobox-menu'}).inject($('admin-menu'));
                newCombobox.set('html', comboboxContent);
                newCombobox.setStyle('opacity', '0');
            }
            $('combobox-menu').set('tween', {'duration': 250});
            $('combobox-menu').tween('opacity', 1);
        }
        else {
            if($('combobox-menu')) {
                $('combobox-menu').set('tween', {'duration': 250, onComplete: function() {
                    $('combobox-menu').destroy();
                }});
                $('combobox-menu').tween('opacity', 0);
            }
        }
    },
    
    updateEditMenu: function(button1, button2, button3, button4, button5, button6) {
        $('admin-button1').set('html', button1);
        $('admin-button2').set('html', button2);
        $('admin-button3').set('html', button3);
        $('admin-button4').set('html', button4);
        $('admin-button5').set('html', button5);
        $('admin-button6').set('html', button6);
    },
    
    updateActiveContent: function(element, menu, css, savecallback) {
        if(menu == "complex") { menu = "save,cancel,|,undo,redo,|,bold,italic,hr,charmap,|,link,unlink,image,media,|,bullist,numlist"; }
        else { menu = "save,cancel,|,undo,redo"; }
        element.addEvent('click', function() { if(session.adminMode && editPanel.currentElement == null) editPanel.editText(this, menu, css, savecallback); });
        element.addEvent('mouseenter', function() { if(session.adminMode && editPanel.currentElement == null) this.setStyles({'background-color':'#FFF'}); });
        element.addEvent('mouseleave', function() { if(session.adminMode && editPanel.currentElement == null) this.setStyle('background-color', ''); });
    },
    
    updateEditContent: function() {
        // Content
        this.updateActiveContent($$('.rmstitle'), "simple", "tinymce_title.css", "editPanel.changeContent");
        this.updateActiveContent($$('.rmssubtitle'), "simple", "tinymce_subtitle.css", "editPanel.changeContent");
        this.updateActiveContent($$('.rmstext'), "complex", "tinymce_text.css", "editPanel.changeContent");
        // Codex
        this.updateActiveContent($$('.rmscodexword'), "simple", "tinymce_title.css", "codex.format_reference");
        this.updateActiveContent($$('.rmscodexdef'), "complex", "tinymce_text.css", "codex.format_reference");
        // Post
        this.updateActiveContent($$('.news-title'), "simple", "tinymce_title.css", "post.format_reference");
        this.updateActiveContent($$('.news-text'), "complex", "tinymce_text.css", "post.format_reference");
    },
    
    updateEditMode: function(path) {
        if(!path) path = historyManager.getCurrentLocation();
        path = (path.match('^/+(.*)$'))?path.match('^/+(.*)$')[1]:path;
        var currentPage = path.split('/')[0];
        var page_level = path.split('/').length;
        if(path.length > 1) var currentChild = path.split('/')[1];
        // Update admin menu
        if(currentPage == 'news') {
            if(path.split('/')[1] == "categories") {
                var addCat1 = '|';
                var addCat2 = '<a onClick="javascript:post.add_category()">ajouter une catégorie</a>';
            }
            else {
                var addCat1 = '';
                var addCat2 = '';
            }
            this.updateEditMenu(
                '<a onClick="javascript:post.add_news()">ajouter une news</a>',
                '<a onClick="javascript:page.load(\'/news/categories/list\')">gérer les catégories</a>',
                 addCat1, addCat2, '', '');
        } else if(currentPage == 'liens' || currentPage == 'links') {
            var page_control1 = '<a onClick="javascript:page.addLightbox(\''+currentPage+'/nouvelle_page/new\', \'ajouter une page\')">ajouter une page</a>';
            var page_control2 = "";
            var page_control3 = "";
            if (page_level > 1) {
                page_control2 += '<a onClick="javascript:page.addLightbox(\''+path+'/edit\', \'Editer la page\')">éditer</a>';
                page_control3 += '<a onClick="javascript:page.addLightboxConfirm(\'Supprimer la page\')">supprimer</a>';
            }
            var linkContent = '';
            linkContent += '<form id="link_form" action="#" method="post">';
            linkContent += '<input type="text" id="add_link" size="33" />';
            linkContent += '<input type="submit" class="button" value="ajouter un lien" />';
            this.updateEditMenu(page_control1, page_control2, page_control3, '|', linkContent, '');
            $('link_form').addEvent('submit', function(e) { e.stop(); editPanel.addLink($('add_link').value); });
        } else if(currentPage == 'documentation') {
            var docContent = '';
            docContent += '<form id="upload" name="upload" enctype="multipart/form-data" action="/file/upload/download" method="post" target="upload_result">';
            docContent += '<fieldset id="uploadField"><div id="uploadContainer">';
            docContent += '<input type="text" id="textPath" class="uploadPath" readonly="readonly" />';
            docContent += '<input type="file" name="file_data" id="filePath" class="uploadFile" onmousedown="return false" onkeydown="return false" onchange="$(\'textPath\').value = this.value" />';
            docContent += '<span class="button">parcourir...</span>';
            docContent += '</div></fieldset>';
            docContent += '<input type="hidden" name="file_type" id="file_type" value="" />'
            docContent += '<input class="button" type="submit" value="ajouter" /></form>';
            this.updateEditMenu(
                '<a onClick="javascript:page.addLightbox(\''+currentPage+'/nouvelle_page/new\', \'Ajouter une page\')">ajouter une page</a>',
                '<a onClick="javascript:page.addLightbox(\''+path+'/edit\', \'Editer la page\')">éditer</a>',
                '<a onClick="javascript:page.addLightboxConfirm(\'Supprimer la page\')">supprimer</a>',
                '|',
                docContent,
                ''
            );
            //$('filePath').setStyle('opacity','0');
            $('upload').addEvent('submit', function(e) { e.stop(); editPanel.addDownload($('filePath').value); });
        } else if(currentPage == 'codex' && currentChild.length == 1) {
            var codexContent = '';
            codexContent += '<form id="definition" action="/codex/create" method="post">'
            codexContent += '<input type="text" name="word" id="definition_word" onfocus="javascript:editPanel.resetInput($(\'definition_word\'))" />'
            codexContent += '<input type="hidden" name="author" id="definition_author" value="" />'
            codexContent += '<input type="hidden" name="lang" id="definition_lang" value="" />'
            codexContent += '<input type="submit" class="button" value="ajouter une définition" />'
            this.updateEditMenu(codexContent, '', '', '', '', '');
            $('definition').addEvent('submit', function(e) { e.stop(); codex.add_reference($('definition_word').value); });
        } else if(currentPage == 'user') {
            this.updateEditMenu(
                '<a onClick="javascript:page.addLightbox(\'/user/new\', \'Ajouter un utilisateur\')">ajouter un utilisateur</a>', '', '', '', '', '');
        } else if(currentPage == 'newsletter') {
            this.updateEditMenu('', '', '', '', '', '', '');
        } else if(page_level > 1) {
            this.updateEditMenu(
                '<a onClick="javascript:page.addLightbox(\''+currentPage+'/nouvelle_page/new\', \'ajouter une page\')">ajouter une page</a>',
                '<a onClick="javascript:page.addLightbox(\''+path+'/edit\', \'Editer la page\')">éditer</a>',
                '<a onClick="javascript:page.addLightboxConfirm(\'Supprimer la page\')">supprimer</a>',
                '|',
                '<a onClick="javascript:editPanel.addParagraph()">ajouter un paragraphe</a>',
                '<a onClick="javascript:editPanel.addAccordion()">ajouter un accordéon</a>'
            );
        } else {
            var checked = '';
            if ($$('div.page-published[id='+path+']').length > 0) {
                if ($$('div.page-published[id='+path+']')[0].getAttribute('name') == "True") {
                    checked = 'checked="checked"';
                };
            };
            var pageAddButton = '';
            var separator = "";
            if (!$('page-title') && path.split('/')[0] != 'index') {
                pageAddButton = '<a onClick="javascript:page.addLightbox(\''+currentPage+'/nouvelle_page/new\', \'ajouter une page\')">ajouter une page</a>';
                separator = "|";
            }
            var pagePublishButton = '';
            pagePublishButton += '<div style="float:left;">Publiée : </div>';
            pagePublishButton += '<input style="float:right;margin-top:0px;" type="checkbox" name="update-form-published" id="update-form-published" '+checked+' onchange="javascript: editPanel.togglePublished(); return false;" />';
            pagePublishButton += '<div class="clear"></div>';
            this.updateEditMenu(pageAddButton, separator, '', '', '', pagePublishButton);
        }
        // make menu-list sortable
        if ($('menu-list')) {
            for (i=0; i < $$('.menu-list-element').length; i++) {
                var list_pointer = new Element('div', {
                    id:'pointer',
                    'class':'list-pointer',
                    'styles': {
                        'float':'left',
                        "cursor": "pointer",
                        'width': '16px',
                        'height': '16px'
                    }
                });
                var list_clear = new Element('div', {
                    id:"clear",
                    "class":"clear"
                });
                
                $$('.menu-list-element').setStyle('flaot', 'left');
                list_pointer.set('html', '&nbsp;&diams;&nbsp;');
                $$('.menu-list-element')[i].grab(list_pointer,'top');
            }
            var sort = new Sortables($('menu-list').getElement('ul'), {
                handle: '.list-pointer',
                constrain: true,
                clone: false,
                onComplete: this.reorderPages
            });
            //$('menu-list').
        }
        // Update admin content
        this.updateEditContent();
    },
    
    reorderPages: function() {
        // reassign order indexes
        order_indexes = $$('.menu-list-element');
        for (index = 0; index < order_indexes.length; index++) {
            order = order_indexes[index];
            path = order.getElement('a').get('href');
            path = (path.match('^/+(.*)$'))?path.match('^/+(.*)$')[1]:path;
            order.setProperty('name',index);
            // Update the page
            var urlUpdate = new Request.HTML({
                url: '/'+path+'/update',
                urlEncoded:true,
                data: "update-form-ordering_index="+index,
                onSuccess: function() {
                    page.msgConfirm('Ordre des pages modifié');
                    //page.refresh();
                }
            });
            urlUpdate.post();
        }
    },
    
    togglePublished: function(path) {
        if(!path) path = historyManager.getCurrentLocation();
        path = (path.match('^/+(.*)$'))?path.match('^/+(.*)$')[1]:path;
        if ($$('div.page-published[id='+path+']').length > 0) {
            published = $$('div.page-published[id='+path+']')[0].getAttribute('name');
            var published_param = '';
            if (published == 'True') {
                published_param = 'False';
            } else {
                published_param = 'True';
            }
            $$('div.page-published[id='+path+']')[0].setAttribute('name',published_param);
            this.saveContent();
        }
    },
    
    setCurrent: function(element) {
        // Memorize the current element's id and content
        this.currentElement = element;
        if(element) {
            this.currentContent = element.innerHTML;
            this.currentWidth = element.getStyle('width');
            this.currentHeight = element.getStyle('height').toInt() + 20 +"px";
            element.removeProperty('style');
        }
    },
    
    resetContent: function() {
        // Reset the current element's content
        if(this.currentElement != null) {
            tinyMCE.execCommand('mceFocus', false, 'tinyTextArea');
            tinyMCE.execCommand('mceRemoveControl', false, 'tinyTextArea');
            $('tinyForm').destroy();
            this.currentElement.set('html', this.currentContent);
            window.focus(this.currentElement);
            (function(){ editPanel.setCurrent(null); }).delay(100);
        };
    },
    
    changeContent: function(element_id, html, body) {
        var newContent = tinyMCE.get('tinyTextArea').getContent();
        
        tinyMCE.execCommand('mceFocus', false, 'tinyTextArea');
        tinyMCE.execCommand('mceRemoveControl', false, 'tinyTextArea');
        $('tinyForm').destroy();
        window.focus(this.currentElement);
        this.currentElement.set('html', newContent);
        (function(){ editPanel.setCurrent(null) }).delay(100);
        
        var activeElement = this.currentElement;
        var activeElement_parent = this.currentElement.parentNode;
        var activeElement_category = this.currentElement.parentNode.parentNode;
        var activeElement_layout = this.currentElement.parentNode.parentNode.parentNode;
        
        if(activeElement.innerHTML == '') {
            if(activeElement.getAttribute('class')=='rmstitle') {
                if(activeElement_parent.getAttribute('class')=='rmsaccordion') { activeElement.set('html', '- Titre'); }            // Accordion title
                else { activeElement.destroy(); } }                                                                                 // Normal Title
            if(activeElement.getAttribute('class')=='rmssubtitle') {
                activeElement.set('html', '- Document'); }                                                                          // Upload title
            else if(activeElement.getAttribute('class')=='rmstext') {
                if(activeElement_parent.getAttribute('class')=='rmsparagraph' || activeElement_parent.getAttribute('class')=='link') { 
                        activeElement_parent.destroy(); }                                                                           // In paragraph
                else { if(activeElement_category.getAttribute('class')=='file') {
                        if(activeElement_layout.childNodes.length == 2) { activeElement_layout.destroy(); }
                        editPanel.removeDownloadFile(activeElement_category.getAttribute('id')); }                                  // In file download
                    activeElement_category.destroy(); } }                                                                           // In accordion & news
            else if(activeElement.getAttribute('class')=='rmstext static') {
                activeElement.set('html', 'Veuillez saisir un texte (zone obligatoire)');}}                                         // Static text
        else if(activeElement.getAttribute('class')=='rmstitle' && activeElement.innerHTML.substring(0, 2) != '- ') {
            activeElement.set('html', '- ' + activeElement.innerHTML);                                                              // Format title
        };
        
        this.saveContent();
    },
    
    saveContent: function() {
        
        var path = historyManager.getCurrentLocation();
        path = (path.match('^/+(.*)$'))?path.match('^/+(.*)$')[1]:path;
        var currentPage = path.split('/')[0];
        
        // grab other attributes
        var published='';
        if ($$('div.page-published[id='+path+']').length > 0) {
            published = "&update-form-published=" + $$('div.page-published[id='+path+']')[0].getAttribute('name');
        }
        
        // Change the title and path to be dynamic
        if($$('.title')[0]) {
            var newTitle = '${c.page.title}';
            var ancientTitle = $$('.title')[0].innerHTML;
            $$('.title')[0].set('html', newTitle);
        }
        else {
            var ancientTitle = currentPage;
            var ancientPath = path;
        }
        
        // Clear the events' styles
        $$('.rmstitle').removeProperty('style');
        $$('.rmssubtitle').removeProperty('style');
        $$('.rmstext').removeProperty('style');
        $$('.rmsnote').removeProperty('style');
        $$('.module').set('html', '');
        $$('.file').removeProperty('style');
        $$('.delete-button').removeProperty('style');
        $$('input').value == '';
        $$('select').value == '';
        $$('textarea').value == '';
        
        
        // Format the page
        var path = historyManager.getCurrentLocation();
        path = (path.match('^/+(.*)$'))?path.match('^/+(.*)$')[1]:path;
        var currentPage = path.split('/')[0];
        if($(currentPage + '-content')) {
            if ($$('.column-right').length >0) {
                var newContent = $$('.column-right')[0].innerHTML.toString();
            } else {
                var newContent = $(currentPage + '-content').innerHTML.toString();
            }
        }
        else {
            var newContent = $('content').innerHTML.toString()
        }
        newContent = encodeURIComponent(newContent);
        
        // Return the title to normal
        if($$('.title')[0]) $$('.title')[0].set('html', ancientTitle);
        
        // Update the page
        var rawPage = historyManager.getCurrentLocation();
        rawPage = (rawPage.match('^/+(.*)$'))?rawPage.match('^/+(.*)$')[1]:rawPage;
        var template = '';
        if(rawPage.split('/').length > 1) template = '&content_tpl=page-template/menu-list.mako';
        var urlUpdate = new Request.HTML({
            url: historyManager.getCurrentLocation()+'/update',
            urlEncoded:true,
            data: "update_file=1&update-form-title="+ancientTitle+"&update-form-path="+rawPage+"&content_str="+newContent+published+template,
            onSuccess: function() {
                page.msgConfirm('Fichier sauvegardé');
                page.refresh();
            }
        });
        urlUpdate.post();
    },
    
    resetInput: function(id) {
        switch(id.value) {
            case 'saisissez un mot': id.value = ''; break;
            case 'ce mot existe déjà': id.value = ''; break;
            case 'erreur de saisie': id.value = ''; break;
        }
    },
    
    formatEditor: function(inst) {
        (function(){ $('tinyTextArea_ifr').setStyles({'width':editPanel.currentWidth, 'height':editPanel.currentHeight}); }).delay(100);
    },
    
    createTextArea: function() {
        // Delete the content and create a textArea
        if(this.currentElement.getAttribute('class') == 'news-text') {
            var tiny_text = post.swap_content();
        }
        else {
            var tiny_text = this.currentContent;
        }
        
        var textAreaContent = '';
        textAreaContent += '<form id="tinyForm" name="tinyForm" method="post" action="">';
        textAreaContent += '<textarea id="tinyTextArea" name="tinyTextArea" rows="5" cols="30">' + tiny_text + '</textarea>';
        textAreaContent += '</form>';
        this.currentElement.set('html', textAreaContent);
    },
    
    addParagraph: function() {
        var path = historyManager.getCurrentLocation();
        path = (path.match('^/+(.*)$'))?path.match('^/+(.*)$')[1]:path;
        var currentPage = path.split('/')[0];
        // Create elements
        var newParagraphContent = '';
        newParagraphContent += '<span class="delete-button" onclick="editPanel.deleteButton(this.getParent())"><img src="/images/btadmin-delete.gif" alt="supprimer" /></span>';
        newParagraphContent += '<h2 class="rmstitle">- Titre du paragraphe</h2>';
        newParagraphContent += '<div class="rmstext">Cliquer sur ce texte afin de l\'éditer</div>';
        newParagraph = new Element('div', {'class':'rmsparagraph'}).inject((currentPage+'-content'));
        newParagraph.set('html', newParagraphContent);
        // Initialize
        newParagraph.setStyle('opacity', '0');
        newParagraph.fade('in');
        this.updateEditContent();
    },
    
    addAccordion: function() {
        var path = historyManager.getCurrentLocation();
        path = (path.match('^/+(.*)$'))?path.match('^/+(.*)$')[1]:path;
        var currentPage = path.split('/')[0];
        // Create elements
        var newAccordionContent = '';
        newAccordionContent += '<span class="delete-button" onclick="editPanel.deleteButton(this.getParent())"><img src="/images/btadmin-delete.gif" alt="supprimer" /></span>';
        newAccordionContent += '<dt class="rmstitle">- Titre de l\'accordion</dt>';
        newAccordionContent += '<dd>';
        newAccordionContent += '<div class="rmsnote">accordion</div>';
        newAccordionContent += '<div class="rmstext">Cliquer sur ce texte afin de l\'éditer</div>';
        newAccordionContent += '</dd>';
        newAccordion = new Element('div', {'class':'rmsaccordion'}).inject((currentPage+'-content'));
        newAccordion.set('html', newAccordionContent);
        // Initialize
        $$('.rmsnote').setStyle('display', 'block');
        newAccordion.setStyle('opacity', '0');
        newAccordion.fade('in');
        this.updateEditContent();
    },
    
    addNews: function(category, link) {
        var path = historyManager.getCurrentLocation();
        path = (path.match('^/+(.*)$'))?path.match('^/+(.*)$')[1]:path;
        var currentPage = path.split('/')[0];
        // Create elements
        var newNewsContent = '';
        newNewsContent += '<a href="'+link+'"><img class="news-type" src="/images/news-'+category+'.png" alt="'+category+'" /></a>';
        newNewsContent += '<div class="news-paragraph">';
        newNewsContent += '<h3><a class="rmssubtitle news-title" href="'+link+'">Titre de la news</a></h3>';
        newNewsContent += '<div class="rmstext news-text">Cliquer sur ce texte afin de l\'éditer</div>';
        newNewsContent += '<div class="news-published">Publié ${locale_date}</div>';
        newNewsContent += '</div>';
        newNewsContent += '<div class="clear"></div>';
        newNews = new Element('div', {'class':'news'}).inject($('news-content'));
        newNews.set('html', newNewsContent);
        // Initialize
        newNews.setStyle('opacity', '0');
        newNews.fade('in');
        this.updateEditContent();
    },
    
    addLink: function(link) {
        if(link == '' || link == 'entrez une adresse internet') {
            $('add_link').value = 'entrez une adresse internet';
        }
        else {
            if (link.split('http://').length < 2) {
                    link = 'http://' + link;
            };
            // Create elements
            var new_link_content = '';
            new_link_content += '<span class="delete-button button-low" onclick="editPanel.deleteButton(this.getParent())"><img src="/images/btadmin-delete.gif" alt="supprimer" /></span>'
            new_link_content += '<a class="rmslinktitle" href="' + link + '">- ' + link + '</a>';
            new_link_content += '<div class="rmstext">Description du lien</div>';
            if ($$('.column-right-bis') > 0) {
                new_link = new Element('div', {'class':'link'}).inject($$('.column-right-bis')[0]);
            } else if ($$('.column-right') > 0) {
                new_link = new Element('div', {'class':'link'}).inject($$('.column-right')[0]);
            } else if ($(historyManager.getCurrentLocation().split('/')[1]+"-content")) {
                new_link = new Element('div', {'class':'link'}).inject($(historyManager.getCurrentLocation().split('/')[1]+"-content"));
            }
            new_link.set('html', new_link_content);
            // Initialize
            new_link.setStyle('opacity', '0');
            new_link.set('tween', {duration: 'normal', onComplete: function() {
                editPanel.updateEditContent();
                editPanel.saveContent();
            }})
            new_link.tween('opacity', 1);
            $('add_link').value = '';
        }
    },
    
    addDownload: function(link) {
        if(link) {
            var title = link.split('/');
            title = title.pop();
            
            // Format type
            
            var type = link.split('.');
            type = type.pop().toLowerCase();
            type = type.substr(0, 3);
            switch(type) {
                case 'pdf' : type='pdf'; break;
                case 'doc' : type='doc'; break;
                case 'txt' : type='doc'; break;
                case 'rtf' : type='doc'; break;
                case 'xls' : type='xls'; break;
                case 'xla' : type='xls'; break;
                case 'ppt' : type='ppt'; break;
                case 'ppz' : type='ppt'; break;
                case 'pps' : type='ppt'; break;
                case 'pot' : type='ppt'; break;
                case 'docx' : type='doc'; break;
                case 'xlsx' : type='xls'; break;
                case 'pptx' : type='ppt'; break;
                case 'ppzx' : type='ppt'; break;
                case 'ppsx' : type='ppt'; break;
                case 'potx' : type='ppt'; break;
                case 'odt' : type='doc'; break;
                case 'odp' : type='ppt'; break;
                case 'ods' : type='xls'; break;
                default : type=null;
            };
            
            // Upload content if type valid
            
            if(type) {
                $('textPath').value = URLify($('textPath').value);
                $('file_type').value = type;
                $('upload').setProperty('action',$('upload').getProperty('action')+'/'+URLify($('textPath').value.split(type)[0]));
                var new_result = new Element('iframe', { 'name': 'upload_result', 'id': 'upload_result', 'class': 'result' }).inject($('upload'));
                var interval_result = function() {
                    if(($('upload_result').contentDocument.getElementById('response'))) {
                        console.log($('upload_result').contentDocument.getElementById('response').innerHTML)
                        switch($('upload_result').contentDocument.getElementById('response').innerHTML) {
                            case 'success':
                                $('textPath').value = 'transfert réussi';
                                editPanel.addDownloadFile(title, type);
                                break;
                            case 'cancel':
                                $('textPath').value = 'ce fichier existe déjà';
                                break;
                            default:
                                $('textPath').value = 'erreur de transfert';
                        }
                        $clear(intervalID);
                    }
                }
                var intervalID = interval_result.periodical(500);
                document.upload.submit();
            }
            else {
                $('textPath').value = 'format invalide';
            }
            $('filePath').value = '';
        }
        else {
            $('textPath').value = 'uploadez un fichier';
        };
    },
    
    addDownloadFile: function(title, type) {
        var path = historyManager.getCurrentLocation();
        path = (path.match('^/+(.*)$'))?path.match('^/+(.*)$')[1]:path;
        var currentPage = path.split('/')[0];
        
        if($$('.download-'+type).length == 0) {
            newContainer = new Element('div', {'class':'download-'+type}).inject((currentPage+'-content'));
            newContainer.set('html', '<h2>- Documents '+ type.toUpperCase() +' concernant ...</h2>');
        }
        
        title = title.split('.')[0];
        slug = URLify(title) + "." + type;
        //Create elements
        var newFileContent = '';
        newFileContent += '<a class="file-icon" href="/download/' + slug + '" onMouseOver="javascript:iconAnim(this, \'over\')" onMouseOut="javascript:iconAnim(this, \'out\')">';
        newFileContent += '<img src="/images/doc-' + type + '.gif" />';
        newFileContent += '</a>';
        newFileContent += '<span class="delete-button button-low" onclick="editPanel.deleteButton(this.getParent()); editPanel.removeDownloadFile(this.getParent().getAttribute(\'id\'))"><img src="/images/btadmin-delete.gif" alt="supprimer" /></span>'
        newFileContent += '<div class="file-text">';
        newFileContent += '<div class="rmssubtitle file-title">' + title + '</div>';
        newFileContent += '<div class="rmstext">Description du fichier</div>';
        newFileContent += '<a class="file-download" href="/download/' + slug + '">- CONSULTER</a>';
        newFileContent += '</div>';
        newFileContent += '<div class="clear"></div>';
        newFile = new Element('div', {'id': slug, 'class': 'file'}).inject($$('.download-'+type)[0]);
        newFile.set('html', newFileContent);
        // Initialize
        newFile.setStyle('opacity', '0');
        newFile.fade('in');
        editPanel.updateEditContent();
        editPanel.saveContent();
    },
    
    removeDownloadFile: function(file) {
        var newResult = new Element('div', { 'id': 'upload_result', 'class': 'result' }).inject($('admin-menu'));
        var removeRequest = new Request.HTML({ 
            url: '/file/delete/download/' + file,
            update: $('upload_result'),
            onComplete: function() {
                $('upload_result').destroy();
            }
        });
        removeRequest.post();
    },
    
    deleteButton: function(target) {
        target.destroy();
        editPanel.saveContent();
    },
    
    editText: function(element, menu, css, savecallback) {
        this.setCurrent(element);
        this.createTextArea();

        tinyMCE.init({
            language : session.get('lang'),
            mode : "exact",
            elements : "tinyTextArea",
            theme : "advanced",
            skin : "o2k7",
            skin_variant : "black",
            auto_resize : true,
            plugins : "safari,pagebreak,save,iespell, media,print,contextmenu,paste,noneditable,visualchars,nonbreaking,xhtmlxtras,inlinepopups",

            theme_advanced_buttons1 : menu,
            theme_advanced_buttons2 : "",
            theme_advanced_buttons3 : "",
            theme_advanced_toolbar_location : "top",
            theme_advanced_toolbar_align : "left",
            theme_advanced_path : false,
            theme_advanced_statusbar_location : "none",
            theme_advanced_resizing : true,
            forced_root_block : false,
            force_br_newlines : true,
            force_p_newlines : false,

            content_css : "/stylesheets/" + css,            
            width: editPanel.currentWidth,
            height: editPanel.currentHeight,
            
            save_oncancelcallback : "editPanel.resetContent",
            save_onsavecallback : savecallback,
            init_instance_callback : "editPanel.formatEditor"
        });
    }
    
});