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