xref: /dokuwiki/lib/scripts/media.js (revision bebc031cee5b38e55f394ca1bb72721f77ac5e52)
1/*jslint white: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: false, strict: true, newcap: true, immed: true */
2/*global jQuery, window, DOKU_BASE*/
3"use strict";
4
5/**
6 * JavaScript functionalitiy for the media management popup
7 *
8 * @author Andreas Gohr <andi@splitbrain.org>
9 * @author Pierre Spring <pierre.spring@caillou.ch>
10 */
11(function ($) {
12    /**
13     * Open or close a subtree using AJAX
14     *
15     * @author Andreas Gohr <andi@splitbrain.org>
16     */
17    toggle = function (event) {
18        var clicky, listitem, sublist, link, ul;
19
20        var clicky = $(this);
21        var listitem = clicky.parent();
22
23        // if already open, close by removing the sublist
24        var sublist = listitem.find('ul').first();
25        if(sublist.size()){
26            sublist.remove(); // TODO: really? we could just hide it, right?
27            clicky.attr('src', DOKU_BASE + 'lib/images/plus.gif');
28            event.preventDefault(); // TODO: really here?
29            return;
30        }
31
32        // get the enclosed link (is always the first one)
33        link = listitem.find('a').first();
34
35        //prepare the new ul
36        ul = $('<ul/>');
37
38        //fixme add classname here
39
40        $.post(
41            DOKU_BASE + 'lib/exe/ajax.php',
42            link.attr('search').substr(1) + '&call=medians',
43            function (data) {
44                ul.html(data)
45                listitem.append(ul);
46            },
47            'html'
48        );
49
50        clicky.attr('src', DOKU_BASE + 'lib/images/minus.gif');
51    };
52
53    $(function () {
54        $('#media__tree').delegate('img', 'click', toggle);
55    });
56}(jQuery));
57
58var media_manager = {
59    keepopen: false,
60    hide: false,
61    align: false,
62    popup: false,
63    id: false,
64    display: false,
65    link: false,
66    size: false,
67    ext: false,
68
69    /**
70     * Attach event handlers to all "folders" below the given element
71     *
72     * @author Andreas Gohr <andi@splitbrain.org>
73     */
74    treeattach: function(obj){
75        if(!obj) return;
76
77        var items = obj.getElementsByTagName('li');
78        for(var i=0; i<items.length; i++){
79            var elem = items[i];
80
81            // attach action to make the +/- clickable
82            var clicky = elem.getElementsByTagName('img')[0];
83            clicky.style.cursor = 'pointer';
84            //addEvent(clicky,'click',function(event){ return media_manager.toggle(event,this); });
85
86            // attach action load folder list via AJAX
87            var link = elem.getElementsByTagName('a')[0];
88            link.style.cursor = 'pointer';
89            addEvent(link,'click',function(event){ return media_manager.list(event,this); });
90        }
91    },
92
93    /**
94     * Attach the image selector action to all links below the given element
95     * also add the action to autofill the "upload as" field
96     *
97     * @author Andreas Gohr <andi@splitbrain.org>
98     */
99    selectorattach: function(obj){
100        if(!obj) return;
101
102        var items = getElementsByClass('select',obj,'a');
103        for(var i=0; i<items.length; i++){
104            var elem = items[i];
105            elem.style.cursor = 'pointer';
106            addEvent(elem,'click',function(event){ return media_manager.select(event,this); });
107        }
108
109        // hide syntax example
110        items = getElementsByClass('example',obj,'div');
111        for(var i=0; i<items.length; i++){
112            elem = items[i];
113            elem.style.display = 'none';
114        }
115
116        var file = $('upload__file');
117        if(!file) return;
118        addEvent(file,'change',media_manager.suggest);
119    },
120
121    /**
122     * Attach deletion confirmation dialog to the delete buttons.
123     *
124     * Michael Klier <chi@chimeric.de>
125     */
126    confirmattach: function(obj){
127        if(!obj) return;
128
129        items = getElementsByClass('btn_media_delete',obj,'a');
130        for(var i=0; i<items.length; i++){
131            var elem = items[i];
132            addEvent(elem,'click',function(e){
133                if(e.target.tagName == 'IMG'){
134                    var name = e.target.parentNode.title;
135                }else{
136                    var name = e.target.title;
137                }
138                if(!confirm(LANG['del_confirm'] + "\n" + name)) {
139                    e.preventDefault();
140                    return false;
141                } else {
142                    return true;
143                }
144            });
145        }
146    },
147
148    /**
149     * Creates checkboxes for additional options
150     *
151     * @author Andreas Gohr <andi@splitbrain.org>
152     */
153    attachoptions: function(obj){
154        if(!obj) return;
155
156        // keep open
157        if(opener){
158            var kobox  = document.createElement('input');
159            kobox.type = 'checkbox';
160            kobox.id   = 'media__keepopen';
161            if(DokuCookie.getValue('keepopen')){
162                kobox.checked  = true;
163                kobox.defaultChecked = true; //IE wants this
164                media_manager.keepopen = true;
165            }
166            addEvent(kobox,'click',function(event){ return media_manager.togglekeepopen(event,this); });
167
168            var kolbl  = document.createElement('label');
169            kolbl.htmlFor   = 'media__keepopen';
170            kolbl.innerHTML = LANG['keepopen'];
171
172            var kobr = document.createElement('br');
173
174            obj.appendChild(kobox);
175            obj.appendChild(kolbl);
176            obj.appendChild(kobr);
177        }
178
179        // hide details
180        var hdbox  = document.createElement('input');
181        hdbox.type = 'checkbox';
182        hdbox.id   = 'media__hide';
183        if(DokuCookie.getValue('hide')){
184            hdbox.checked = true;
185            hdbox.defaultChecked = true; //IE wants this
186            media_manager.hide    = true;
187        }
188        addEvent(hdbox,'click',function(event){ return media_manager.togglehide(event,this); });
189
190        var hdlbl  = document.createElement('label');
191        hdlbl.htmlFor   = 'media__hide';
192        hdlbl.innerHTML = LANG['hidedetails'];
193
194        var hdbr = document.createElement('br');
195
196        obj.appendChild(hdbox);
197        obj.appendChild(hdlbl);
198        obj.appendChild(hdbr);
199        media_manager.updatehide();
200    },
201
202    /**
203     * Toggles the keep open state
204     *
205     * @author Andreas Gohr <andi@splitbrain.org>
206     */
207    togglekeepopen: function(event,cb){
208        if(cb.checked){
209            DokuCookie.setValue('keepopen',1);
210            media_manager.keepopen = true;
211        }else{
212            DokuCookie.setValue('keepopen','');
213            media_manager.keepopen = false;
214        }
215    },
216
217    /**
218     * Toggles the hide details state
219     *
220     * @author Andreas Gohr <andi@splitbrain.org>
221     */
222    togglehide: function(event,cb){
223        if(cb.checked){
224            DokuCookie.setValue('hide',1);
225            media_manager.hide = true;
226        }else{
227            DokuCookie.setValue('hide','');
228            media_manager.hide = false;
229        }
230        media_manager.updatehide();
231    },
232
233    /**
234     * Sets the visibility of the image details accordingly to the
235     * chosen hide state
236     *
237     * @author Andreas Gohr <andi@splitbrain.org>
238     */
239    updatehide: function(){
240        var obj = $('media__content');
241        if(!obj) return;
242        var details = getElementsByClass('detail',obj,'div');
243        for(var i=0; i<details.length; i++){
244            if(media_manager.hide){
245                details[i].style.display = 'none';
246            }else{
247                details[i].style.display = '';
248            }
249        }
250    },
251
252    /**
253     * shows the popup for a image link
254     */
255    select: function(event,link){
256        var id = link.name.substr(2);
257
258        media_manager.id = id;
259        if(!opener){
260            // if we don't run in popup display example
261            var ex = $('ex_'+id.replace(/:/g,'_'));
262            if(ex.style.display == ''){
263                ex.style.display = 'none';
264            } else {
265                ex.style.display = '';
266            }
267            return false;
268        }
269
270        media_manager.ext = false;
271        var dot = id.lastIndexOf(".");
272        if (dot != -1) {
273            var ext = id.substr(dot,id.length);
274
275            if (ext != '.jpg' && ext != '.jpeg' && ext != '.png' && ext != '.gif' && ext != '.swf') {
276                media_manager.insert(null);
277                return false;
278            }
279        } else {
280            media_manager.insert(null);
281            return false;
282        }
283
284        media_manager.popup.style.display = 'inline';
285        media_manager.popup.style.left = event.pageX + 'px';
286        media_manager.popup.style.top = event.pageY + 'px';
287
288        // set all buttons to outset
289        media_manager.outSet('media__linkbtn1');
290        media_manager.outSet('media__linkbtn2');
291        media_manager.outSet('media__linkbtn3');
292        media_manager.outSet('media__linkbtn4');
293
294        media_manager.outSet('media__alignbtn0');
295        media_manager.outSet('media__alignbtn1');
296        media_manager.outSet('media__alignbtn2');
297        media_manager.outSet('media__alignbtn3');
298
299        media_manager.outSet('media__sizebtn1');
300        media_manager.outSet('media__sizebtn2');
301        media_manager.outSet('media__sizebtn3');
302        media_manager.outSet('media__sizebtn4');
303
304
305        if (ext == '.swf') {
306            media_manager.ext = 'swf';
307
308            // disable display buttons for detail and linked image
309            $('media__linkbtn1').style.display = 'none';
310            $('media__linkbtn2').style.display = 'none';
311
312            // set the link button to default
313            if (media_manager.link != false) {
314                if ( media_manager.link == '2' || media_manager.link == '1')  {
315                    media_manager.inSet('media__linkbtn3');
316                    media_manager.link = '3';
317                    DokuCookie.setValue('link','3');
318                } else {
319                    media_manager.inSet('media__linkbtn'+media_manager.link);
320                }
321            } else if (DokuCookie.getValue('link')) {
322                if ( DokuCookie.getValue('link') == '2' ||  DokuCookie.getValue('link') == '1')  {
323                    // this options are not availible
324                    media_manager.inSet('media__linkbtn3');
325                    media_manager.link = '3';
326                    DokuCookie.setValue('link','3');
327                } else {
328                    media_manager.inSet('media__linkbtn'+DokuCookie.getValue('link'));
329                    media_manager.link = DokuCookie.getValue('link');
330                }
331            } else {
332                // default case
333                media_manager.link = '3';
334                media_manager.inSet('media__linkbtn3');
335                DokuCookie.setValue('link','3');
336            }
337
338            // disable button for original size
339            $('media__sizebtn4').style.display = 'none';
340
341        } else {
342            media_manager.ext = 'img';
343
344            // ensure that the display buttons are there
345            $('media__linkbtn1').style.display = 'inline';
346            $('media__linkbtn2').style.display = 'inline';
347            $('media__sizebtn4').style.display = 'inline';
348
349            // set the link button to default
350            if (DokuCookie.getValue('link')) {
351                media_manager.link = DokuCookie.getValue('link');
352            }
353            if (media_manager.link == false) {
354                // default case
355                media_manager.link = '1';
356                DokuCookie.setValue('link','1');
357            }
358            media_manager.inSet('media__linkbtn'+media_manager.link);
359        }
360
361        if (media_manager.link == '4') {
362            media_manager.align = false;
363            media_manager.size = false;
364            $('media__align').style.display = 'none';
365            $('media__size').style.display = 'none';
366        } else {
367            $('media__align').style.display = 'block';
368            $('media__size').style.display = 'block';
369
370            // set the align button to default
371            if (media_manager.align != false) {
372                media_manager.inSet('media__alignbtn'+media_manager.align);
373            } else if (DokuCookie.getValue('align')) {
374                media_manager.inSet('media__alignbtn'+DokuCookie.getValue('align'));
375                media_manager.align = DokuCookie.getValue('align');
376            } else {
377                // default case
378                media_manager.align = '0';
379                media_manager.inSet('media__alignbtn0');
380                DokuCookie.setValue('align','0');
381            }
382
383            // set the size button to default
384            if (DokuCookie.getValue('size')) {
385                media_manager.size = DokuCookie.getValue('size');
386            }
387            if (media_manager.size == false || (media_manager.size === '4' && ext === '.swf')) {
388                // default case
389                media_manager.size = '2';
390                DokuCookie.setValue('size','2');
391            }
392            media_manager.inSet('media__sizebtn'+media_manager.size);
393
394            $('media__sendbtn').focus();
395        }
396
397       return false;
398    },
399
400    /**
401     * build the popup window
402     *
403     * @author Dominik Eckelmann <eckelmann@cosmocode.de>
404     */
405    initpopup: function() {
406
407        media_manager.popup = document.createElement('div');
408        media_manager.popup.setAttribute('id','media__popup');
409
410        var root = document.getElementById('media__manager');
411        if (root == null) return;
412        root.appendChild(media_manager.popup);
413
414        var headline    = document.createElement('h1');
415        headline.innerHTML = LANG.mediatitle;
416        var headlineimg = document.createElement('img');
417        headlineimg.src = DOKU_BASE + 'lib/images/close.png';
418        headlineimg.id  = 'media__closeimg';
419        addEvent(headlineimg,'click',function(event){ return media_manager.closePopup(event,this); });
420        headline.insertBefore(headlineimg, headline.firstChild);
421        media_manager.popup.appendChild(headline);
422        drag.attach(media_manager.popup,headline);
423
424        // link
425
426        var linkp = document.createElement('p');
427
428        linkp.id = "media__linkstyle";
429        if (media_manager.display == "2") {
430            linkp.style.display = "none";
431        }
432
433        var linkl = document.createElement('label');
434        linkl.innerHTML = LANG.mediatarget;
435        linkp.appendChild(linkl);
436
437        var linkbtns = ['lnk', 'direct', 'nolnk', 'displaylnk'];
438        for (var i = 0 ; i < linkbtns.length ; ++i) {
439            var linkbtn = document.createElement('button');
440            linkbtn.className = 'button';
441            linkbtn.value = i + 1;
442            linkbtn.id    = "media__linkbtn" + (i + 1);
443            linkbtn.title = LANG['media' + linkbtns[i]];
444            linkbtn.style.borderStyle = 'outset';
445            addEvent(linkbtn,'click',function(event){ return media_manager.setlink(event,this); });
446
447            var linkimg = document.createElement('img');
448            linkimg.src = DOKU_BASE + 'lib/images/media_link_' + linkbtns[i] + '.png';
449
450            linkbtn.appendChild(linkimg);
451            linkp.appendChild(linkbtn);
452        }
453
454        media_manager.popup.appendChild(linkp);
455
456        // align
457
458        var alignp    = document.createElement('p');
459        var alignl    = document.createElement('label');
460
461        alignp.appendChild(alignl);
462        alignp.id = 'media__align';
463        if (media_manager.display == "2") {
464            alignp.style.display = "none";
465        }
466        alignl.innerHTML = LANG['mediaalign'];
467
468        var alignbtns = ['noalign', 'left', 'center', 'right'];
469        for (var n = 0 ; n < alignbtns.length ; ++n) {
470            var alignbtn = document.createElement('button');
471            var alignimg = document.createElement('img');
472            alignimg.src = DOKU_BASE + 'lib/images/media_align_' + alignbtns[n] + '.png';
473
474            alignbtn.id    = "media__alignbtn" + n;
475            alignbtn.value = n;
476            alignbtn.title = LANG['media' + alignbtns[n]];
477            alignbtn.className = 'button';
478            alignbtn.appendChild(alignimg);
479            alignbtn.style.borderStyle = 'outset';
480            addEvent(alignbtn,'click',function(event){ return media_manager.setalign(event,this); });
481
482            alignp.appendChild(alignbtn);
483        }
484
485        media_manager.popup.appendChild(alignp);
486
487        // size
488
489        var sizep    = document.createElement('p');
490        var sizel    = document.createElement('label');
491
492        sizep.id = 'media__size';
493        if (media_manager.display == "2") {
494            sizep.style.display = "none";
495        }
496        sizep.appendChild(sizel);
497        sizel.innerHTML = LANG['mediasize'];
498
499        var sizebtns = ['small', 'medium', 'large', 'original'];
500        for (var size = 0 ; size < sizebtns.length ; ++size) {
501            var sizebtn = document.createElement('button');
502            var sizeimg = document.createElement('img');
503
504            sizep.appendChild(sizebtn);
505            sizeimg.src = DOKU_BASE + 'lib/images/media_size_' + sizebtns[size] + '.png';
506
507            sizebtn.className = 'button';
508            sizebtn.appendChild(sizeimg);
509            sizebtn.value = size + 1;
510            sizebtn.id    = 'media__sizebtn' + (size + 1);
511            sizebtn.title = LANG['media' + sizebtns[size]];
512            sizebtn.style.borderStyle = 'outset';
513            addEvent(sizebtn,'click',function(event){ return media_manager.setsize(event,this); });
514        }
515
516        media_manager.popup.appendChild(sizep);
517
518        // send and close button
519
520        var btnp = document.createElement('p');
521        media_manager.popup.appendChild(btnp);
522        btnp.setAttribute('class','btnlbl');
523
524        var cls = document.createElement('input');
525        cls.type  = 'button';
526        cls.setAttribute('class','button');
527        cls.value = LANG['mediaclose'];
528        btnp.appendChild(cls);
529        addEvent(cls,'click',function(event){ return media_manager.closePopup(event,this); });
530
531        var btn  = document.createElement('input');
532        btn.type = 'button';
533        btn.id   = 'media__sendbtn';
534        btn.setAttribute('class','button');
535        btn.value = LANG['mediainsert'];
536        btnp.appendChild(btn);
537        addEvent(btn,'click',function(event){ return media_manager.insert(event); });
538    },
539
540    /**
541     * Insert the clicked image into the opener's textarea
542     *
543     * @author Andreas Gohr <andi@splitbrain.org>
544     * @author Dominik Eckelmann <eckelmann@cosmocode.de>
545     */
546    insert: function(event){
547        var id = media_manager.id;
548        // set syntax options
549        $('media__popup').style.display = 'none';
550
551        var opts       = '';
552        var optsstart  = '';
553        var alignleft  = '';
554        var alignright = '';
555
556        if (media_manager.ext == 'img' || media_manager.ext == 'swf') {
557
558            if (media_manager.link == '4') {
559                    opts = '?linkonly';
560            } else {
561
562                if (media_manager.link == "3" && media_manager.ext == 'img') {
563                    opts = '?nolink';
564                    optsstart = true;
565                } else if (media_manager.link == "2" && media_manager.ext == 'img') {
566                    opts = '?direct';
567                    optsstart = true;
568                }
569
570                var s = parseInt(media_manager.size);
571
572                if (s && s >= 1) {
573                    opts += (optsstart)?'&':'?';
574                    if (s=="1") {
575                        opts += '100';
576                        if (media_manager.ext == 'swf') {
577                            opts += 'x62';
578                        }
579                    } else if (s=="2") {
580                        opts += '200';
581                        if (media_manager.ext == 'swf') {
582                            opts += 'x123';
583                        }
584                    } else if (s=="3"){
585                        opts += '300';
586                        if (media_manager.ext == 'swf') {
587                            opts += 'x185';
588                        }
589                    }
590                }
591                if (media_manager.align == '1') {
592                    alignleft = '';
593                    alignright = ' ';
594                }
595                if (media_manager.align == '2') {
596                    alignleft = ' ';
597                    alignright = ' ';
598                }
599                if (media_manager.align == '3') {
600                    alignleft = ' ';
601                    alignright = '';
602                }
603            }
604        }
605        opener.insertTags('wiki__text','{{'+alignleft+id+opts+alignright+'|','}}','');
606
607        if(!media_manager.keepopen) window.close();
608        opener.focus();
609        return false;
610    },
611
612    /**
613     * list the content of a namespace using AJAX
614     *
615     * @author Andreas Gohr <andi@splitbrain.org>
616     */
617    list: function(event,link){
618        // prepare an AJAX call to fetch the subtree
619        var ajax = new sack(DOKU_BASE + 'lib/exe/ajax.php');
620        ajax.AjaxFailedAlert = '';
621        ajax.encodeURIString = false;
622        if(ajax.failed) return true;
623
624        cleanMsgArea();
625
626        var content = $('media__content');
627        content.innerHTML = '<img src="'+DOKU_BASE+'lib/images/loading.gif" alt="..." class="load" />';
628
629        ajax.elementObj = content;
630        ajax.afterCompletion = function(){
631            media_manager.selectorattach(content);
632            media_manager.confirmattach(content);
633            media_manager.updatehide();
634            media_manager.initFlashUpload();
635        };
636        ajax.runAJAX(link.search.substr(1)+'&call=medialist');
637        return false;
638    },
639
640    /**
641     * Prefills the wikiname.
642     *
643     * @author Andreas Gohr <andi@splitbrain.org>
644     */
645    suggest: function(){
646        var file = $('upload__file');
647        var name = $('upload__name');
648        if(!file || !name) return;
649
650        var text = file.value;
651        text = text.substr(text.lastIndexOf('/')+1);
652        text = text.substr(text.lastIndexOf('\\')+1);
653        name.value = text;
654    },
655
656
657    initFlashUpload: function(){
658        if(!hasFlash(8)) return;
659        var oform  = $('dw__upload');
660        var oflash = $('dw__flashupload');
661        if(!oform || !oflash) return;
662
663        var clicky = document.createElement('img');
664        clicky.src     = DOKU_BASE+'lib/images/multiupload.png';
665        clicky.title   = LANG['mu_btn'];
666        clicky.alt     = LANG['mu_btn'];
667        clicky.style.cursor = 'pointer';
668        clicky.onclick = function(){
669                            oform.style.display  = 'none';
670                            oflash.style.display = '';
671                         };
672        oform.appendChild(clicky);
673    },
674
675    /**
676     * closes the link type popup
677     */
678    closePopup: function(event) {
679        $('media__popup').style.display = 'none';
680    },
681
682    /**
683     * set the align
684     *
685     * @author Dominik Eckelmann <eckelmann@cosmocode.de>
686     */
687    setalign: function(event,cb){
688        if(cb.value){
689            DokuCookie.setValue('align',cb.value);
690            media_manager.align = cb.value;
691            media_manager.outSet("media__alignbtn0");
692            media_manager.outSet("media__alignbtn1");
693            media_manager.outSet("media__alignbtn2");
694            media_manager.outSet("media__alignbtn3");
695            media_manager.inSet("media__alignbtn"+cb.value);
696        }else{
697            DokuCookie.setValue('align','');
698            media_manager.align = false;
699        }
700    },
701    /**
702     * set the link type
703     *
704     * @author Dominik Eckelmann <eckelmann@cosmocode.de>
705     */
706    setlink: function(event,cb){
707        if(cb.value){
708            DokuCookie.setValue('link',cb.value);
709            media_manager.link = cb.value;
710            media_manager.outSet("media__linkbtn1");
711            media_manager.outSet("media__linkbtn2");
712            media_manager.outSet("media__linkbtn3");
713            media_manager.outSet("media__linkbtn4");
714            media_manager.inSet("media__linkbtn"+cb.value);
715            var size = document.getElementById("media__size");
716            var align = document.getElementById("media__align");
717            if (cb.value != '4') {
718                size.style.display  = "block";
719                align.style.display = "block";
720            } else {
721                size.style.display  = "none";
722                align.style.display = "none";
723            }
724        }else{
725            DokuCookie.setValue('link','');
726            media_manager.link = false;
727        }
728    },
729
730    /**
731     * set the display type
732     *
733     * @author Dominik Eckelmann <eckelmann@cosmocode.de>
734     */
735    setdisplay: function(event,cb){
736        if(cb.value){
737            DokuCookie.setValue('display',cb.value);
738            media_manager.display = cb.value;
739            media_manager.outSet("media__displaybtn1");
740            media_manager.outSet("media__displaybtn2");
741            media_manager.inSet("media__displaybtn"+cb.value);
742
743        }else{
744            DokuCookie.setValue('display','');
745            media_manager.align = false;
746        }
747    },
748
749    /**
750     * sets the border to outset
751     */
752    outSet: function(id) {
753        var ele = document.getElementById(id);
754        if (ele == null) return;
755        ele.style.borderStyle = "outset";
756    },
757    /**
758     * sets the border to inset
759     */
760    inSet: function(id) {
761        var ele = document.getElementById(id);
762        if (ele == null) return;
763        ele.style.borderStyle = "inset";
764    },
765
766    /**
767     * set the image size
768     *
769     * @author Dominik Eckelmann <eckelmann@cosmocode.de>
770     */
771    setsize: function(event,cb){
772        if (cb.value) {
773            DokuCookie.setValue('size',cb.value);
774            media_manager.size = cb.value;
775            for (var i = 1 ; i <= 4 ; ++i) {
776                media_manager.outSet("media__sizebtn" + i);
777            }
778            media_manager.inSet("media__sizebtn"+cb.value);
779        } else {
780            DokuCookie.setValue('size','');
781            media_manager.width = false;
782        }
783    }
784};
785
786addInitEvent(function(){
787    //media_manager.treeattach($('media__tree'));
788    media_manager.selectorattach($('media__content'));
789    media_manager.confirmattach($('media__content'));
790    media_manager.attachoptions($('media__opts'));
791    media_manager.initpopup();
792    media_manager.initFlashUpload();
793});
794