Ignore:
Timestamp:
06/16/12 09:54:21 (7 years ago)
Author:
gogo
Message:

Update to latest of
https://github.com/sleemanj/mootools-filemanager

Location:
branches/MootoolsFileManager-Update/plugins/MootoolsFileManager/mootools-filemanager
Files:
2 added
12 edited

Legend:

Unmodified
Added
Removed
  • branches/MootoolsFileManager-Update/plugins/MootoolsFileManager/mootools-filemanager/Assets/Connector/FileManager.php

    r1309 r1319  
    5858 *     Note that currently support for copying subdirectories is missing. 
    5959 *     The parameter $action = 'move'. 
     60 *     UploadIsComplete_cb (function/reference, default is *null*) Upload complete callback which can be used to post process a newly upload file. 
     61 *     The parameter $action = 'upload'. 
     62 *     DownloadIsComplete_cb (function/reference, default is *null*) Download complete callback which can be used to post process after a file has been downloaded file. 
     63 *     The parameter $action = 'download'. 
     64 *     DestroyIsComplete_cb (function/reference, default is *null*) Destroy complete callback which can be used to cleanup after a newly deleted/destroyed file. 
     65 *     The parameter $action = 'destroy'. 
    6066 * 
    6167 * Obsoleted options: 
     
    525531 
    526532 
    527 require(strtr(dirname(__FILE__), '\\', '/') . '/Tooling.php'); 
    528 require(strtr(dirname(__FILE__), '\\', '/') . '/Image.class.php'); 
     533require_once(strtr(dirname(__FILE__), '\\', '/') . '/Tooling.php'); 
     534require_once(strtr(dirname(__FILE__), '\\', '/') . '/Image.class.php'); 
    529535 
    530536 
     
    10311037                        'DestroyIsAuthorized_cb' => null, 
    10321038                        'MoveIsAuthorized_cb' => null, 
     1039                         
     1040                        'UploadIsComplete_cb' => null, 
     1041                        'DownloadIsComplete_cb' => null, 
     1042                        'DestroyIsComplete_cb' => null, 
     1043                         
    10331044                        'showHiddenFoldersAndFiles' => false,      // Hide dot dirs/files ? 
    1034                         'useGetID3IfAvailable' => true 
     1045                        'useGetID3IfAvailable' => true, 
     1046                        'enableXSendFile' => false 
    10351047                ), (is_array($options) ? $options : array())); 
    10361048 
     
    18251837                                        'content' => 'destroyed' 
    18261838                                )); 
     1839                         
     1840                        if (!empty($this->options['DestroyIsComplete_cb']) && function_exists($this->options['DestroyIsComplete_cb'])) 
     1841                                $this->options['DestroyIsComplete_cb']($this, 'destroy', $fileinfo);     
     1842                         
    18271843                        return; 
    18281844                } 
     
    21302146                                $fsize = filesize($file); 
    21312147                                $fi = pathinfo($legal_url); 
     2148                                 
     2149                                // Based on the gist here: https://gist.github.com/854168 
     2150                                // Reference: http://codeutopia.net/blog/2009/03/06/sending-files-better-apache-mod_xsendfile-and-php/ 
     2151                                // We should: 
     2152                                // 1. try to use Apache mod_xsendfile 
     2153                                // 2. Try to chunk the file into pieces 
     2154                                // 3. If the file is sufficiently small, send it directly 
    21322155 
    21332156                                $hdrs = array(); 
     
    21442167                                        break; 
    21452168                                } 
     2169                                 
    21462170                                $hdrs[] = 'Content-Disposition: attachment; filename="' . $fi['basename'] . '"'; // use 'attachment' to force a download 
    2147                                 $hdrs[] = 'Content-length: ' . $fsize; 
    2148                                 $hdrs[] = 'Expires: 0'; 
    2149                                 $hdrs[] = 'Cache-Control: must-revalidate, post-check=0, pre-check=0'; 
    2150                                 $hdrs[] = '!Cache-Control: private'; // flag as FORCED APPEND; use this to open files directly 
     2171                                 
     2172                                // Content length isn't requied for mod_xsendfile (Apache handles this for us) 
     2173                                $modx = $this->options['enableXSendFile'] && function_exists('apache_get_modules') && in_array('mod_xsendfile', apache_get_modules()); 
     2174                                if ($modx) 
     2175                                { 
     2176                                        $hdrs[] = 'X-Sendfile: '.$file; 
     2177                                } 
     2178                                else 
     2179                                { 
     2180                                        $hdrs[] = 'Content-length: ' . $fsize; 
     2181                                        $hdrs[] = 'Expires: 0'; 
     2182                                        $hdrs[] = 'Cache-Control: must-revalidate, post-check=0, pre-check=0'; 
     2183                                        $hdrs[] = '!Cache-Control: private'; // flag as FORCED APPEND; use this to open files directly 
     2184                                } 
    21512185 
    21522186                                $this->sendHttpHeaders($hdrs); 
    2153  
    2154                                 fpassthru($fd); 
     2187                                 
     2188                                if (!$modx) 
     2189                                { 
     2190                                        $chunksize = 4*1024; // 4KB blocks 
     2191                                        if ($fsize > $chunksize) 
     2192                                        { 
     2193                                                // Turn off compression which prevents files from being re-assembled properly (especially zip files) 
     2194                                                function_exists('apache_setenv') && @apache_setenv('no-gzip', 1); 
     2195                                                @ini_set('zlib.output_compression', 0); 
     2196                                                 
     2197                                                // Turn off any additional buffering by the server 
     2198                                                @ini_set('implicit_flush', 1); 
     2199                                                 
     2200                                                // Disable any timeouts 
     2201                                                @set_time_limit(0); 
     2202                                                while (!feof($fd)) 
     2203                                                { 
     2204                                                        echo @fread($fd, $chunksize); 
     2205                                                        ob_flush(); 
     2206                                                        flush(); 
     2207                                                } 
     2208                                        } 
     2209                                        else 
     2210                                        { 
     2211                                                fpassthru($fd); 
     2212                                        } 
     2213                                } 
     2214 
    21552215                                fclose($fd); 
     2216                                 
     2217                                if (!empty($this->options['DownloadIsComplete_cb']) && function_exists($this->options['DownloadIsComplete_cb'])) 
     2218                                  $this->options['DownloadIsComplete_cb']($this, 'download', $fileinfo); 
     2219         
    21562220                                return; 
    21572221                        } 
    21582222                         
    21592223                        $emsg = 'read_error'; 
     2224 
     2225                         
    21602226                } 
    21612227                catch(FileManagerException $e) 
     
    24332499                                        'name' => basename($file) 
    24342500                                )); 
     2501                         
     2502                        if (!empty($this->options['UploadIsComplete_cb']) && function_exists($this->options['UploadIsComplete_cb'])) 
     2503                                $this->options['UploadIsComplete_cb']($this, 'upload', $fileinfo); 
     2504                         
    24352505                        return; 
    24362506                } 
  • branches/MootoolsFileManager-Update/plugins/MootoolsFileManager/mootools-filemanager/Assets/Connector/Image.class.php

    r1309 r1319  
    2020 
    2121 
    22 define('IMAGE_PROCESSING_MEMORY_MAX_USAGE', 64); // memory_limit setting, in Megabytes; increase when Image class reports too often the images don't fit in memory. 
     22define('IMAGE_PROCESSING_MEMORY_MAX_USAGE', 160); // memory_limit setting, in Megabytes; increase when Image class reports too often the images don't fit in memory. 
    2323 
    2424class Image { 
  • branches/MootoolsFileManager-Update/plugins/MootoolsFileManager/mootools-filemanager/Assets/Css/FileManager.css

    r1309 r1319  
    940940 
    941941div.filemanager-wrapper div.img { 
     942        position: relative; 
    942943        width: 260px; 
    943944        height: 260px; 
     
    10071008        border-top: 1px solid #bebebe; 
    10081009} 
     1010div.filemanager-filelist ul { 
     1011        background: none; 
     1012        padding: 0; 
     1013        margin: 0; 
     1014        width: auto; 
     1015        height: auto; 
     1016        border: none; 
     1017} 
     1018div.filemanager-filelist li { 
     1019        display: inline-block; 
     1020} 
     1021 
    10091022div.filemanager-filelist .fi, div.gallery-image { 
    10101023        position: relative; 
  • branches/MootoolsFileManager-Update/plugins/MootoolsFileManager/mootools-filemanager/Assets/js/milkbox/css/milkbox.css

    r1309 r1319  
    33#mbox-overlay{ 
    44        background-color: #000; /* set the Milkbox overlay color // opacity: see the js options */ 
    5         z-index:9999; 
     5        z-index:50000; 
    66        cursor: pointer; 
    77} 
  • branches/MootoolsFileManager-Update/plugins/MootoolsFileManager/mootools-filemanager/Assets/js/milkbox/milkbox.js

    r1309 r1319  
    11/* 
    2         Milkbox v3.0 - required: mootools.js v1.3 core + more (see the relative js file for details about used modules) 
    3  
    4         by Luca Reghellin (http://www.reghellin.com) Dicember 2010, MIT-style license. 
     2        Milkbox v3.0.3 - required: mootools.js v1.3 core + more (see the relative js file for details about used modules) 
     3 
     4        by Luca Reghellin (http://www.reghellin.com) September 2011, MIT-style license. 
    55        Inspiration Lokesh Dhakar (http://www.lokeshdhakar.com/projects/lightbox2/) 
    6         AND OF COURSE, SPECIAL THANKS TO THE MOOTOOLS DEVELOPERS AND DEVELOPERS HELPING ALL AROUND THE WORLD 
     6        AND OF COURSE, SPECIAL THANKS TO THE MOOTOOLS DEVELOPERS AND THE OTHER DEVELOPERS HELPING ALL AROUND THE WORLD 
    77*/ 
    88 
     
    2525                fileboxBorderColor:'#000000', 
    2626                fileboxPadding:'0px', 
    27                 resizeDuration:0.5, 
     27                resizeDuration:.5, 
    2828                resizeTransition:'sine:in:out',/*function (ex. Transitions.Sine.easeIn) or string (ex. 'bounce:out')*/ 
    2929                autoPlay:false, 
     
    3232                autoSize:true, 
    3333                autoSizeMaxHeight:0,//only if autoSize==true 
    34                 autoSizeMaxWidth:0,//only if autoSize==true 
    35                 autoSizeMinHeight:0,//only if autoSize==true 
    36                 autoSizeMinWidth:0,//only if autoSize==true 
    3734                centered:false, 
    3835                imageOfText:'of', 
     
    4340 
    4441        initialize: function(options){ 
    45                 if (milkbox_singleton) { 
    46                         return milkbox_singleton; 
    47                 } 
     42                if (milkbox_singleton) return milkbox_singleton; 
    4843                milkbox_singleton = this; 
    4944 
    5045                this.setOptions(options); 
    51                 this.autoPlayBkup = { 
    52                         autoPlayDelay: this.options.autoPlayDelay, 
    53                         autoPlay: this.options.autoPlay 
    54                 }; 
     46                this.autoPlayBkup = { autoPlayDelay:this.options.autoPlayDelay, autoPlay:this.options.autoPlay }; 
    5547                this.fullOptionsBkup = {}; 
    5648                this.galleries = []; 
    5749                this.formElements = []; 
    58                 this.activated = false; 
     50                this.activated; 
    5951                this.busy = false; 
    6052                this.paused = false; 
    6153                this.closed = true; 
    62                 this.intId = null; 
    63                 this.loadCheckerId = null; 
     54                this.intId; 
     55                this.loadCheckerId; 
    6456                this.externalGalleries = []; 
    6557                this.singlePageLinkId = 0; 
    66  
    67                 this.currentIndex = 0; 
    68                 this.currentGallery = null; 
    69                 this.fileReady = false; 
     58                 
     59                this.currentIndex; 
     60                this.currentGallery; 
     61                this.fileReady; 
    7062                this.loadedImages = []; 
    71                 this.currentFile = null; 
    72  
    73                 this.display = null; 
    74  
     63                this.currentFile; 
     64                this.options_bkup; 
     65                 
     66                this.display; 
     67                 
    7568                this.getPageGalleries(); 
    76                 if(this.galleries.length !== 0){ 
    77                         this.prepare(true); 
    78                 } 
    79         }, 
    80  
     69                if(this.galleries.length != 0){ this.prepare(true); } 
     70        }, 
     71         
    8172        prepare:function(checkForm){ 
    82                 if(checkForm){ 
    83                         this.checkFormElements(); 
    84                 } 
     73                if(checkForm){ this.checkFormElements(); } 
    8574                this.prepareHTML(); 
    8675                this.prepareEventListeners(); 
    8776                this.activated = true; 
    8877        }, 
    89  
     78         
    9079        //utility 
    9180        open:function(gallery,index){ 
    9281                var i; 
    93  
    94                 if(!this.activated){ 
    95                         this.prepare(true); 
    96                 } 
    97  
    98                 var g = (instanceOf(gallery,MilkboxGallery) ? gallery : this.getGallery(gallery)); 
    99                 if(!g) { 
    100                         return false; 
    101                 } 
    102  
    103                 // [i_a] when 'index' is not an number, it may be a element reference or string: resolve such indexes too 
     82                 
     83                if(!this.activated){ this.prepare(true); } 
     84                                 
     85                var g = (instanceOf(gallery,MilkboxGallery)) ? gallery : this.getGallery(gallery); 
     86                if(!g) return false; 
     87                 
     88                // [i_a] when 'index' is not an number, it may be a element reference or string: resolve such indexes too 
    10489                if (typeOf(index) !== 'number') { 
    10590                        i = g.get_index_of(index); 
    106                         if (i !== -1) { 
    107                                 index = i; 
    108                         } 
    109                         // on failure, try to parse index as an integer value. (e.g. when index is a string representing a index number) 
    110                 } 
     91                        if(i !== -1){ index = i; } 
     92                } 
     93 
    11194                i = parseInt(index, 10); 
    112                 if (isNaN(i)) { 
    113                         i = 0; 
    114                 } 
     95                if(isNaN(i)){ i = 0; } 
    11596 
    11697                this.closed = false; 
    117                 var item = g.get_item(i);   // [i_a] index is undefined 
    118                 if(!item) { 
    119                         return false; 
    120                 } 
    121  
     98                var item = g.get_item(i); 
     99                if(!item) return false; 
     100                 
    122101                this.currentGallery = g; 
    123                 this.currentIndex = i;      // [i_a] 
    124  
     102                this.currentIndex = i; 
     103                                 
    125104                this.hideFormElements(); 
    126  
     105                 
    127106                this.display.set_mode(this.currentGallery.type); 
    128107                this.display.appear(); 
    129  
    130  
    131                 if(this.options.autoPlay || g.options.autoplay){ 
    132                         this.startAutoPlay(true); 
    133                 } 
     108                 
     109                 
     110                if(this.options.autoPlay || g.options.autoplay){ this.startAutoPlay(true); } 
    134111 
    135112                this.loadFile(item,this.getPreloads()); 
    136113                return true; 
    137114        }, 
    138  
    139  
     115         
     116         
    140117        //utility 
    141118        close:function(hideDisplay){ 
    142                 if(hideDisplay){ 
    143                         this.display.disappear(); 
    144                 } 
     119                if(hideDisplay){ this.display.disappear(); } 
    145120                this.showFormElements(); 
    146121                this.pauseAutoPlay(); 
    147122                this.stopLoadingCheck(); 
    148123                this.currentGallery = null; 
    149                 this.currentIndex = 0; 
     124                this.currentIndex = null; 
    150125                this.currentFile = null; 
    151126                this.busy = false; 
     
    153128                this.fileReady = false; 
    154129                this.closed = true; 
    155                 this.fireEvent('close'); 
     130         
     131                this.fireEvent('closed'); 
    156132        }, 
    157133 
    158134        startAutoPlay:function(opening){ 
    159                 var d = (this.currentGallery.options.autoplay_delay || this.options.autoPlayDelay); 
    160                 if(d < this.options.resizeDuration*2) { 
    161                         d = this.options.resizeDuration*2; 
    162                 } 
    163  
    164                 var f;   // [i_a] split decl and assignment in two statements as jsLint said: Problem at line 148 character 42: 'f' has not been fully defined yet. 
    165                 f = function(){ 
     135                var d = this.currentGallery.options.autoplay_delay || this.options.autoPlayDelay; 
     136                if(d < this.options.resizeDuration*2){ d = this.options.resizeDuration*2 }; 
     137 
     138                var f = function(){ 
    166139                        this.removeEvent('fileReady',f); 
    167140                        this.intId = this.navAux.periodical(d*1000,this,[null,'next']); 
    168                 }; 
     141                } 
    169142 
    170143                if(opening){ 
     
    176149                this.paused = false; 
    177150        }, 
    178  
     151         
    179152        pauseAutoPlay:function(){ 
    180                 if(this.intId){ 
    181                         clearInterval(this.intId); 
    182                         this.intId = null; 
    183                 } 
    184  
     153                if(this.intId){  
     154                        clearInterval(this.intId);  
     155                        this.intId = null;  
     156                } 
     157                 
    185158                this.paused = true; 
    186159        }, 
    187  
     160         
    188161        //utility 
    189162        //list:Array of objects or an object > [ { gallery:'gall1', autoplay:true, delay:6 } ] 
    190         //to permanently define autoplay options for any gallery 
     163        //to permanently define autoplay options for any gallery  
    191164        setAutoPlay:function(list){ 
    192                 var l = (typeOf(list) !== 'array' ? [list] : list); 
     165                var l = (typeOf(list) == 'object') ? [list] : list; 
    193166                l.each(function(item){ 
    194167                        var g = this.getGallery(item.gallery); 
    195                         if(!g){ 
    196                                 return; 
    197                         } 
    198                         var a = (item.autoplay == true ? item.autoplay : false); 
    199                         var d = ((item.delay && a) ? item.delay : this.options.autoPlayDelay); 
    200                         g.setOptions({ 
    201                                 autoplay:a, 
    202                                 autoplay_delay:d 
    203                         }).refresh(); 
     168                        if(!g){ return; } 
     169                        var a = (item.autoplay == true) ? item.autoplay : false; 
     170                        var d = (item.delay && a) ? item.delay : this.options.autoPlayDelay; 
     171                        g.setOptions({ autoplay:a, autoplay_delay:d }).refresh(); 
    204172                },this); 
    205173        }, 
    206174 
    207175 
    208         //utility 
     176        //utility        
    209177        //{href:'file1.jpg',size:'width:900,height:100', title:'text'} 
    210178        //show a file on the fly without gallery functionalities 
    211         openWithFile:function(file){ 
    212                 var g = new MilkboxGallery([file]); 
    213                 // [i_a] make sure this gallery is only created when there's actually something to show (supported formats and all that) 
    214                 if (g.items && g.items.length > 0) { 
    215                         this.open(g,0); 
    216                 } 
    217         }, 
    218  
     179        openWithFile:function(file, options){ 
     180                if(!this.activated){ this.prepare(); } 
     181         
     182                if(options){ 
     183                        this.refreshDisplay(options,true);//set custom options 
     184                } 
     185                 
     186                var g = new MilkboxGallery([file],{ remove_title:this.options.removeTitle }); 
     187                this.open(g,0); 
     188        }, 
     189         
    219190        getPreloads:function(){ 
    220191                var items = this.currentGallery.items; 
    221192                var index = this.currentIndex; 
    222                 if(items.length === 1) { 
    223                         return null; 
    224                 } 
    225  
    226                 var next = (index != items.length-1 ? items[index+1] : items[0]); 
    227                 var prev = (index != 0 ? items[index-1] : items[items.length-1]); 
    228                 var preloads = (prev == next ? [prev] : [prev,next]); //if gallery.length == 2, then prev == next 
    229                 return preloads; 
    230         }, 
    231  
     193                if(items.length == 1) return null; 
     194                 
     195                var next = (index != items.length-1) ? items[index+1] : items[0]; 
     196                var prev = (index != 0) ? items[index-1] : items[items.length-1]; 
     197                var preloads = (prev == next) ? [prev] : [prev,next]; //if gallery.length == 2, then prev == next 
     198                return preloads;                                         
     199        }, 
     200         
    232201        //LOADING 
    233202        loadFile:function(fileObj,preloads){ 
     
    236205                this.display.clear_content(); 
    237206                this.display.hide_bottom(); 
    238  
     207                 
    239208                if(this.checkFileType(fileObj,'swf')){ 
    240209                        this.loadSwf(fileObj); 
     
    244213                        this.loadImage(fileObj); 
    245214                } 
    246  
    247                 if(!this.checkFileType(fileObj,'swf')) { 
    248                         this.startLoadingCheck(); 
    249                 } 
    250                 if(preloads){ 
    251                         this.preloadFiles(preloads); 
    252                 } 
    253         }, 
    254  
     215                 
     216                if(!this.checkFileType(fileObj,'swf')) this.startLoadingCheck(); 
     217                if(preloads){ this.preloadFiles(preloads); } 
     218        }, 
     219         
    255220        //to prevent the loader to show if the file is cached 
    256221        startLoadingCheck:function(){ 
    257222                var t = 0; 
    258                 if (!this.loadCheckerId) 
    259                 { 
    260                         this.loadCheckerId = (function(){ 
    261                                 t+=1; 
    262                                 if(t > 5){ 
    263                                         if (this.loadCheckerId) 
    264                                         { 
    265                                                 // only show the loader when the timer has not been cleared yet! 
    266                                                 this.display.show_loader(); 
    267                                         } 
    268                                         this.stopLoadingCheck(); 
     223                if (!this.loadCheckerId) { 
     224                  this.loadCheckerId = (function(){ 
     225                         t+=1; 
     226                         if(t > 5){ 
     227                                if (this.loadCheckerId) { 
     228                                  // only show the loader when the timer has not been cleared yet! 
     229                                  this.display.show_loader(); 
    269230                                } 
    270                         }).periodical(100,this); 
    271                 } 
     231                                this.stopLoadingCheck(); 
     232                         } 
     233                  }).periodical(100,this); 
     234                }//end if 
    272235        }, 
    273236 
    274237        stopLoadingCheck:function(){ 
    275238                clearInterval(this.loadCheckerId); 
    276                 this.loadCheckerId = null; 
    277         }, 
    278  
     239        }, 
     240         
    279241        preloadFiles:function(preloads){ 
    280242                preloads.each(function(fileObj,index){ 
    281                         if(!this.checkFileType(fileObj,"swf") && !this.checkFileType(fileObj,"html")){ 
    282                                 this.preloadImage(fileObj.href); 
     243                        if(!this.checkFileType(fileObj,"swf") && !this.checkFileType(fileObj,"html")){  
     244                                this.preloadImage(fileObj.href);  
    283245                        } 
    284246                },this); 
    285247        }, 
    286  
     248         
    287249        preloadImage:function(file){ 
    288250                if(!this.loadedImages.contains(file)){ 
    289                         var imageAsset = new Asset.image(file, { 
     251                        var imageAsset = new Asset.image(file, {  
    290252                                onLoad:function(){ 
    291253                                        this.loadedImages.push(file); 
     
    297259        loadImage:function(fileObj){ 
    298260                var file = fileObj.href; 
    299                 var imageAsset = new Asset.image(file, { 
     261                var imageAsset = new Asset.image(file, {  
    300262                        onLoad:function(img){ 
    301                                 if(!this.loadedImages.contains(file)){ 
    302                                         //see next/prev events 
    303                                         this.loadedImages.push(file); 
    304                                 } 
     263                                if(!this.loadedImages.contains(file)){ this.loadedImages.push(file); };//see next/prev events 
    305264                                this.loadComplete(img,fileObj.caption); 
    306265                        }.bind(this) 
     
    313272                        height:fileObj.size.height, 
    314273                        vars:fileObj.vars, 
    315                         params:{ 
    316                                 wMode:'opaque', 
    317                                 swLiveConnect:'false' 
    318                         } 
    319                 }); 
    320  
    321                 this.loadComplete($(swfObj),fileObj.caption); 
     274                        params:{ wMode:'opaque', swLiveConnect:'false' } 
     275                }); 
     276                 
     277                this.loadComplete(document.id(swfObj),fileObj.caption); 
    322278        }, 
    323279 
    324280        loadHtml:function(fileObj){ 
    325  
     281                 
    326282                var query = (fileObj.vars ? '?' + Object.toQueryString(fileObj.vars) : ''); 
    327  
     283                var extras = (fileObj.extras ? fileObj.extras : ''); 
     284                 
    328285                var iFrame = new Element('iframe',{ 
    329                         src:fileObj.href+query, 
    330                         styles:{ 
    331                                 'border-style':'solid', 
    332                                 'border-width':'0px' 
     286                        'src':fileObj.href+query, 
     287                        'frameborder':0,//for IE... 
     288                        styles:{  
     289                                'border':'none' 
    333290                        } 
    334291                }); 
     
    340297                        }); 
    341298                } 
    342  
     299                 
    343300                this.loadComplete(iFrame,fileObj.caption); 
    344301        },//loadHtml 
     
    347304        //LOAD COMPLETE ********// 
    348305        loadComplete:function(file,caption){ 
    349  
    350                 if(this.closed) { 
    351                         return;//if an onload event were still running 
    352                 } 
    353  
     306                 
     307                if(this.closed) return;//if an onload event were still running 
     308                 
    354309                this.fileReady = true;//the file is loaded and ready to be showed (see next_prev_aux()) 
    355310                this.stopLoadingCheck(); 
    356311                this.currentFile = file; 
    357  
    358                 var timer; // split due to jsLint: Problem at line 338 character 31: 'timer' has not been fully defined yet. 
     312                var timer; 
    359313                timer = (function(){ 
    360314                        if(this.display.ready){ 
     
    363317                                } 
    364318                                clearInterval(timer); 
    365                         } 
     319                        }//end if 
    366320                }).periodical(100,this); 
    367  
     321                 
    368322                this.fireEvent('fileReady'); 
    369323        },//end loadComplete 
    370324 
    371325        checkFileType:function(file,type){ 
    372                 var href = (typeOf(file) !== 'string' ? file.href : file); 
    373                 var regexp = new RegExp('\\.('+type+')$','i'); 
    374                 return href.split('?')[0].test(regexp); 
     326                var href = (typeOf(file) != 'string') ? file.href : file; 
     327                var splitted = href.split('?')[0]; 
     328                var regexp = new RegExp("\.("+type+")$","i"); 
     329                var test = splitted.test(regexp); 
     330                 
     331                if(!test && type=="html"){ 
     332                        test = splitted.test(/\/\d+$/); 
     333                } 
     334                 
     335                return test; 
    375336        }, 
    376337 
     
    379340                var names = []; 
    380341                var links = $$('a[data-milkbox]'); 
    381  
     342                 
    382343                //check names 
    383344                links.each(function(link){ 
    384345                        var name = link.get('data-milkbox'); 
    385                         if(name === 'single'){ 
    386                                 var gallery = new MilkboxGallery(link,{ 
    387                                         name:'single'+this.singlePageLinkId++ 
    388                                 }); 
    389                                 // [i_a] make sure this gallery is only created when there's actually something to show (supported formats and all that) 
    390                                 if (gallery.items && gallery.items.length > 0) { 
    391                                         this.galleries.push(gallery); 
    392                                 } 
     346                        if(name == 'single'){ 
     347                                this.galleries.push(new MilkboxGallery(link,{name:'single'+this.singlePageLinkId++, remove_title:this.options.removeTitle })); 
    393348                        } else if(!names.contains(name)){ 
    394349                                names.push(name); 
    395350                        } 
    396351                },this); 
    397  
     352                                 
    398353                names.each(function(name){ 
    399                         var gallery = new MilkboxGallery($$('a[data-milkbox='+name+']'),{ 
    400                                 name:name 
    401                         }); 
    402                         // [i_a] make sure this gallery is only created when there's actually something to show (supported formats and all that) 
    403                         if (gallery.items && gallery.items.length > 0) { 
    404                                 this.galleries.push(gallery); 
    405                         } 
     354                        this.galleries.push(new MilkboxGallery($$('a[data-milkbox='+name+']'),{ name:name, remove_title:this.options.removeTitle })); 
    406355                },this); 
    407  
     356                 
    408357                //set default autoplay // override with setAutoPlay 
    409358                if(this.options.autoPlay){ 
    410                         this.galleries.each(function(g){ 
    411                                 g.setOptions({ 
    412                                         autoplay:this.options.autoPlay, 
    413                                         autoplay_delay:this.options.autoPlayDelay 
    414                                 }); 
    415                         }); 
    416                 } 
    417  
    418                 //console.log(this.galleries); 
     359                        this.galleries.each(function(g){  
     360                                g.setOptions({autoplay:this.options.autoPlay,autoplay_delay:this.options.autoPlayDelay}); 
     361                                g.refresh(); 
     362                        }.bind(this)); 
     363                } 
     364                 
    419365        },//getPageGalleries 
    420366 
    421         reloadPageGalleries:function(){ 
     367        reloadPageGalleries:function(){          
    422368                //reload page galleries 
    423369                this.removePageGalleryEvents(); 
    424370 
    425371                this.galleries = this.galleries.filter(function(gallery){ 
    426                         if(!gallery.external) { 
    427                                 gallery.clear(); 
    428                         } 
    429                         return gallery.external; 
    430                 }); 
    431  
     372                        if(!gallery.external) gallery.clear(); 
     373                        return gallery.external;  
     374                }); 
     375                 
    432376                this.getPageGalleries(); 
    433377                this.addPageGalleriesEvents(); 
    434  
    435                 if(!this.activated){ 
    436                         this.prepare(true); 
    437                 } 
     378                 
     379                if(!this.activated){ this.prepare(true); } 
    438380        },//end reloadPageGalleries 
    439381 
     
    441383        resetExternalGalleries:function(list){ 
    442384                this.galleries = this.galleries.filter(function(gallery){ 
    443                         if(gallery.external) { 
    444                                 gallery.clear(); 
    445                         } 
     385                        if(gallery.external) gallery.clear(); 
    446386                        return !gallery.external; 
    447387                }); 
    448388 
    449                 if(!list) { 
    450                         return; 
    451                 } 
    452                 var array = (typeOf(list) === 'array' ? list : [list]); 
    453                 array.each(function(data){ 
    454                         this.addGalleries(data); 
    455                 }, this); 
     389                if(!list) return; 
     390                var array = (typeOf(list) == 'array') ? list : [list]; 
     391                array.each(function(data){ this.addGalleries(data); }, this); 
    456392        }, 
    457393 
    458394        //utility 
    459395        addGalleries:function(data){ 
    460                 if(!this.activated){ 
    461                         this.prepare(true); 
    462                 } 
    463                 if (typeOf(data) === 'string' && data.split('?')[0].test(/\.(xml)$/i)) { 
     396                if(!this.activated){ this.prepare(true); } 
     397                if (typeOf(data) == 'string' && data.split('?')[0].test(/\.(xml)$/i)) { 
    464398                        this.loadXml(data); 
    465399                } else {//array or object 
    466400                        this.setObjectGalleries(data); 
    467401                } 
    468                 if(!this.activated){ 
    469                         this.prepare(true); 
    470                 } 
    471         }, 
    472  
     402                if(!this.activated){ this.prepare(true); } 
     403        }, 
     404         
    473405        loadXml:function(xmlfile){ 
    474406                var r = new Request({ 
     
    483415                                this.setXmlGalleries(new Element('div',{ html:t })); 
    484416                        }.bind(this), 
    485                         onFailure:function(transport){ 
    486                                 alert('Milkbox :: loadXml: XML file path error or local Ajax test: please test xml galleries on-line'); 
    487                         } 
     417                        onFailure:function(transport){ alert('Milkbox :: loadXml: XML file path error or local Ajax test: please test xml galleries on-line'); } 
    488418                }).send(); 
    489419        }, 
    490  
     420         
    491421        setXmlGalleries:function(container){ 
    492422                var c = container; 
    493423                var xml_galleries = c.getElements('.gallery'); 
     424                var links; 
     425                var aplist = []; 
    494426                xml_galleries.each(function(xml_gallery,i){ 
    495  
    496                         var options = { 
    497                                 name:xml_gallery.getProperty('name'), 
     427                                                 
     428                        var options = {  
     429                                name:xml_gallery.getProperty('name'),  
    498430                                autoplay:Boolean(xml_gallery.getProperty('autoplay')), 
    499431                                autoplay_delay:Number(xml_gallery.getProperty('autoplay_delay')) 
    500                         }; 
    501  
    502                         var links = xml_gallery.getChildren('a').map(function(tag){ 
    503                                 return { 
    504                                         href:tag.href, 
    505                                         size:tag.get('data-milkbox-size'), 
    506                                         title:tag.get('title') 
    507                                 }; 
     432                        } 
     433                         
     434                        var links = xml_gallery.getChildren('a').map(function(tag){  
     435                                return { href:tag.href, size:tag.get('data-milkbox-size'), title:tag.get('title') } 
    508436                        },this); 
    509  
    510                         var gallery = new MilkboxGallery(links,options); 
    511                         // [i_a] make sure this gallery is only created when there's actually something to show (supported formats and all that) 
    512                         if (gallery.items && gallery.items.length > 0) { 
    513                                 this.galleries.push(gallery); 
    514                         } 
     437                         
     438                        this.galleries.push(new MilkboxGallery(links,options)); 
    515439                },this); 
    516  
     440                         
    517441                this.fireEvent('xmlGalleries'); 
    518442        },//end setXmlGalleries 
    519  
    520         //[{ name:'gall1', autoplay:true, autoplay_delay:7, files:[{href:'file1.jpg',size:'width:900,height:100', title:'text'},{href:'file2.html',size:'w:800,h:200', title:'text'}] },{...},{...}] 
     443         
     444        //[{ name:'gall1', autoplay:true, autoplay_delay:7, files:[{href:'file1.jpg',size:'width:900,height:100', title:'text'},{href:'file2.html',size:'w:800,h:200', title:'text'}] },{...},{...}]     
    521445        setObjectGalleries:function(data){ 
    522                 var array = (typeOf(data) === 'array' ? data : [data]); 
     446                var array = (typeOf(data) == 'array') ? data : [data]; 
    523447                array.each(function(newobj){ 
    524448                        var options = { 
    525                                 name:newobj.name, 
     449                                name:newobj.name,  
    526450                                autoplay:newobj.autoplay, 
    527451                                autoplay_delay:newobj.autoplay_delay 
    528                         }; 
    529                         var gallery = new MilkboxGallery(newobj.files,options); 
    530                         // [i_a] make sure this gallery is only created when there's actually something to show (supported formats and all that) 
    531                         if (gallery.items && gallery.items.length > 0) { 
    532                                 this.galleries.push(gallery); 
    533                         } 
     452                        }                        
     453                        this.galleries.push(new MilkboxGallery(newobj.files,options)); 
    534454                },this); 
    535455        }, 
    536  
     456         
    537457        //utility 
    538458        getGallery:function(name){ 
    539                 var g = this.galleries.filter(function(gallery){ 
    540                         return gallery.name == name; 
    541                 },this); 
    542                 return (g[0] || null); 
    543         }, 
    544  
     459                var g = this.galleries.filter(function(gallery){ return gallery.name == name; },this); 
     460                return g[0] || null; 
     461        }, 
     462         
    545463        //HTML 
    546464        prepareHTML:function(){ 
    547465                this.display = new MilkboxDisplay({ 
    548                         init_width:this.options.initialWidth, 
    549                         init_height:this.options.initialHeight, 
    550                         overlay_opacity:this.options.overlayOpacity, 
    551                         margin_top:this.options.marginTop, 
    552                         filebox_border_color:this.options.fileboxBorderColor, 
    553                         filebox_padding:this.options.fileboxPadding, 
    554                         resize_duration:this.options.resizeDuration, 
    555                         resize_transition:this.options.resizeTransition, 
     466                        initialWidth:this.options.initialWidth, 
     467                        initialHeight:this.options.initialHeight, 
     468                        overlayOpacity:this.options.overlayOpacity, 
     469                        marginTop:this.options.marginTop, 
     470                        fileboxBorderWidth:this.options.fileboxBorderWidth, 
     471                        fileboxBorderColor:this.options.fileboxBorderColor, 
     472                        fileboxPadding:this.options.fileboxPadding, 
     473                        resizeDuration:this.options.resizeDuration, 
     474                        resizeTransition:this.options.resizeTransition, 
    556475                        centered:this.options.centered, 
    557                         auto_size:this.options.autoSize, 
    558                         autosize_max_height:this.options.autoSizeMaxHeight, 
    559                         autosize_max_width:this.options.autoSizeMaxWidth, 
    560                         autosize_min_height:this.options.autoSizeMinHeight, 
    561                         autosize_min_width:this.options.autoSizeMinWidth, 
    562                         image_of_text:this.options.imageOfText 
    563                 }); 
     476                        autoSize:this.options.autoSize, 
     477                        autoSizeMaxHeight:this.options.autoSizeMaxHeight, 
     478                        imageOfText:this.options.imageOfText 
     479                }); 
     480        }, 
     481         
     482        refreshDisplay:function(options,keepBackup){ 
     483                if(!this.activated) return; 
     484         
     485                var options_bkup = this.display.options;//save original options 
     486                var new_options = Object.merge({},options_bkup,options);         
     487                if(this.display){ this.display.clear() } 
     488                this.display = new MilkboxDisplay(new_options); 
     489                this.addDisplayEvents(); 
     490                 
     491                if(keepBackup){ 
     492                        this.options_bkup = options_bkup;//restored in close(); 
     493                } else { 
     494                        this.options_bkup = null; 
     495                } 
    564496        }, 
    565497 
    566498        checkFormElements:function(){ 
    567499                this.formElements = $$('select, textarea'); 
    568                 if(this.formElements.length === 0) { 
    569                         return; 
    570                 } 
     500                if(this.formElements.length == 0) return; 
    571501 
    572502                this.formElements = this.formElements.map(function(elem){ 
     
    576506                }); 
    577507        }, 
    578  
     508         
    579509        hideFormElements:function(){ 
    580                 if(this.formElements.length === 0) { 
    581                         return; 
    582                 } 
    583                 this.formElements.each(function(elem){ 
    584                         elem.setStyle('display','none'); 
    585                 }); 
    586         }, 
    587  
     510                if(this.formElements.length == 0) return; 
     511                this.formElements.each(function(elem){ elem.setStyle('display','none'); }); 
     512        }, 
     513         
    588514        showFormElements:function(){ 
    589                 if(this.formElements.length === 0) { 
    590                         return; 
    591                 } 
     515                if(this.formElements.length == 0) return; 
    592516                this.formElements.each(function(elem){ 
    593517                        elem.setStyle('visibility',elem.retrieve('visibility')); 
    594518                        elem.setStyle('display',elem.retrieve('display')); 
    595                 }); 
    596         }, 
    597  
     519                }) 
     520        }, 
     521         
    598522        //EVENTS 
    599523        addPageGalleriesEvents:function(){ 
    600                 var pageGalleries = this.galleries.filter(function(gallery){ 
    601                         return !gallery.external; 
    602                 }); 
     524                var pageGalleries = this.galleries.filter(function(gallery){ return !gallery.external }); 
    603525                pageGalleries.each(function(gallery){ 
    604526                        gallery.items.each(function(item){ 
     
    610532                },this); 
    611533        }, 
    612  
     534         
    613535        removePageGalleryEvents:function(){ 
    614                 var pageGalleries = this.galleries.filter(function(gallery){ 
    615                         return !gallery.external; 
    616                 }); 
     536                var pageGalleries = this.galleries.filter(function(gallery){ return !gallery.external }); 
    617537                pageGalleries.each(function(gallery){ 
    618538                        gallery.items.each(function(item){ 
     
    621541                }); 
    622542        }, 
    623  
    624         prepareEventListeners:function(){ 
    625  
    626                 this.addPageGalleriesEvents(); 
    627  
     543         
     544        addDisplayEvents:function(){ 
    628545                this.display.addEvent('nextClick',function(){ 
    629546                        this.navAux(true,'next'); 
    630547                }.bind(this)); 
    631  
     548                 
    632549                this.display.addEvent('prevClick',function(){ 
    633550                        this.navAux(true,'prev'); 
    634551                }.bind(this)); 
    635  
     552                 
    636553                this.display.addEvent('playPauseClick',function(){ 
    637554                        if(this.paused){ 
     
    642559                        this.display.set_paused(this.paused); 
    643560                }.bind(this)); 
    644  
     561                 
    645562                this.display.addEvent('disappear',function(){ 
     563                        if(this.options_bkup){ this.refreshDisplay(this.options_bkup); } 
    646564                        this.close(false); 
    647565                }.bind(this)); 
    648  
     566                 
    649567                this.display.addEvent('resizeComplete',function(){ 
    650568                        this.busy = false;//see navAux 
    651569                }.bind(this)); 
    652  
     570        }, 
     571 
     572        prepareEventListeners:function(){ 
     573                 
     574                this.addPageGalleriesEvents(); 
     575                this.addDisplayEvents(); 
     576                 
    653577                //reset overlay height and position onResize 
    654578                window.addEvent('resize',function(){ 
    655                         if(this.display.ready){ 
    656                                 this.display.resetOverlaySize(); 
    657                         } 
     579                        if(this.display.ready){ this.display.resetOverlaySize(); } 
    658580                }.bind(this)); 
    659  
     581                 
    660582                //keyboard next/prev/close 
    661583                window.document.addEvent('keydown',function(e){ 
    662                         if(this.busy == true || this.closed){ 
    663                                 return; 
     584                        if(this.busy == true || this.closed){ return; } 
     585                        if(e.key == 'right' || e.key == 'left' || e.key == 'space'){ e.preventDefault(); } 
     586 
     587                        if(this.display.mode != 'single'){ 
     588                                if(e.key == 'right' || e.key == 'space'){ this.navAux(e,'next'); } 
     589                                else if(e.key == 'left'){ this.navAux(e,'prev'); } 
    664590                        } 
    665                         switch (e.key) 
    666                         { 
    667                         case 'right': 
    668                         case 'space': 
    669                                 e.preventDefault(); 
    670                                 this.navAux(e,'next'); 
    671                                 break; 
    672  
    673                         case 'left': 
    674                                 e.preventDefault(); 
    675                                 this.navAux(e,'prev'); 
    676                                 break; 
    677  
    678                         case 'esc': 
    679                                 e.stop(); 
    680                                 this.close(true); 
    681                                 break; 
    682                         } 
     591                         
     592                        if(e.key == 'esc'){ this.display.disappear(); } 
    683593                }.bind(this)); 
    684594        }, 
    685595 
    686596        navAux:function(e,direction){ 
    687  
     597                                 
    688598                if(e){//called from a button/key event 
    689599                        this.pauseAutoPlay(); 
    690600                } else {//called from autoplay 
    691                         if(this.busy || !this.fileReady){ 
    692                                 //prevent autoplay() 
    693                                 return; 
    694                         } 
     601                        if(this.busy || !this.fileReady){ return; }//prevent autoplay() 
    695602                } 
    696603 
    697604                this.busy = true; //for keyboard and autoplay 
    698  
    699                 var i1, i2; 
    700  
    701                 if(direction === 'next'){ 
    702                         i1 = (this.currentIndex != this.currentGallery.items.length-1 ? this.currentIndex + 1 : 0); 
    703                         this.currentIndex = i1; 
    704                         i2 = (this.currentIndex != this.currentGallery.items.length-1 ? this.currentIndex + 1 : 0); 
     605                 
     606                var i, _i; 
     607 
     608                if(direction == "next"){ 
     609                        i= (this.currentIndex != this.currentGallery.items.length-1) ? this.currentIndex += 1 : this.currentIndex = 0; 
     610                        _i= (this.currentIndex != this.currentGallery.items.length-1) ? this.currentIndex + 1 : 0; 
    705611                } else { 
    706                         i1 = (this.currentIndex != 0 ? this.currentIndex - 1 : this.currentGallery.items.length-1); 
    707                         this.currentIndex = i1; 
    708                         i2 = (this.currentIndex != 0 ? this.currentIndex - 1 : this.currentGallery.items.length-1); 
    709                 } 
    710  
    711                 this.loadFile(this.currentGallery.get_item(i1),[this.currentGallery.get_item(i2)]); 
     612                        i= (this.currentIndex != 0) ? this.currentIndex -= 1 : this.currentIndex = this.currentGallery.items.length-1; 
     613                        _i= (this.currentIndex != 0) ? this.currentIndex - 1 : this.currentGallery.items.length-1;               
     614                }; 
     615 
     616                this.loadFile(this.currentGallery.get_item(i),[this.currentGallery.get_item(_i)]); 
    712617        } 
    713618 
     
    725630 
    726631        Implements:[Options,Events], 
    727  
     632         
    728633        options:{ 
    729                 init_width:100, 
    730                 init_height:100, 
    731                 overlay_opacity:1, 
    732                 margin_top:0, 
    733                 filebox_border_color:'#000000', 
    734                 filebox_padding:'0px', 
    735                 resize_duration:0.5, 
    736                 resize_transition:'sine:in:out', 
     634                initialWidth:100, 
     635                initialHeight:100, 
     636                overlayOpacity:1, 
     637                marginTop:0, 
     638                fileboxBorderWidth:'0px', 
     639                fileboxBorderColor:'#000000', 
     640                fileboxPadding:'0px', 
     641                resizeDuration:.5, 
     642                resizeTransition:'sine:in:out', 
    737643                centered:false, 
    738                 auto_size:false, 
    739                 autosize_max_height:0, 
    740                 autosize_max_width:0, 
    741                 autosize_min_height:0, 
    742                 autosize_min_width:0, 
    743                 fixup_dimension:true, 
    744                 image_of_text:'of', 
    745                 zIndex: 410000,  // required to be a high number > 400000 as the 'filemanager as tinyMCE plugin' sits at z-index 400K+ 
     644                autoSize:false, 
     645                autoSizeMaxHeight:0, 
     646                imageOfText:'of', 
    746647                onNextClick:function(){}, 
    747648                onPrevClick:function(){}, 
     
    750651                onResizeComplete:function(){} 
    751652        }, 
    752  
     653         
    753654        initialize: function(options){ 
    754655                this.setOptions(options); 
    755  
    756                 this.overlay = null; 
    757                 this.mainbox = null; 
    758                 this.filebox = null; 
    759                 this.bottom = null; 
    760                 this.controls = null; 
    761                 this.caption = null; 
    762                 this.close = null; 
    763                 this.next = null; 
    764                 this.prev = null; 
    765                 this.playpause = null; 
     656                 
     657                this.overlay; 
     658                this.mainbox; 
     659                this.filebox; 
     660                this.bottom; 
     661                this.controls; 
     662                this.caption; 
     663                this.close; 
     664                this.next; 
     665                this.prev; 
     666                this.playpause; 
    766667                this.paused = false; 
    767                 this.count = null; 
    768  
     668                this.count; 
     669                 
    769670                this.mode = 'standard'; 
    770671                this.ready = false;//after overlay and mainbox become visible == true 
    771  
    772                 this.overlay_show_fx = null; 
    773                 this.overlay_hide_fx = null; 
    774  
    775                 this.mainbox_show_fx = null; 
    776                 this.mainbox_hide_fx = null; 
    777                 this.mainbox_resize_fx = null; 
    778  
     672                 
     673                this.overlay_show_fx; 
     674                this.overlay_hide_fx; 
     675 
     676                this.mainbox_show_fx; 
     677                this.mainbox_hide_fx; 
     678                this.mainbox_resize_fx; 
     679                 
    779680                this.current_file = null; 
    780681 
     
    784685 
    785686        },//end init 
    786  
     687         
    787688        build_html:function(){ 
    788                 this.overlay = new Element('div', { 
     689                this.overlay = new Element('div', {  
    789690                        'id':'mbox-overlay', 
    790691                        'styles':{ 
     
    792693                                'position':'fixed', 
    793694                                'display':'none', 
    794                                 'z-index': this.options.zIndex, 
    795695                                'left':0, 
    796696                                'width':'100%', 
     
    801701                                'padding':0 
    802702                        } 
    803                 }).inject($(document.body)); 
     703                }).inject(document.id(document.body)); 
    804704 
    805705                this.mainbox = new Element('div', { 
    806706                        'id':'mbox-mainbox', 
    807707                        'styles': { 
    808                                 'position':(this.options.centered ? 'fixed' : 'absolute'), 
     708                                'position':(this.options.centered) ? 'fixed' : 'absolute', 
    809709                                'overflow':'hidden', 
    810710                                'display':'none', 
    811                                 'z-index': this.options.zIndex + 1,   // required to be > overlay.z-index 
    812                                 'width':this.options.init_width, 
    813                                 'height':this.options.init_height, 
     711                                'z-index':50001,//overlay z-index (see css) + 1 
     712                                'width':this.options.initialWidth, 
     713                                'height':this.options.initialHeight, 
    814714                                'opacity':0, 
    815715                                'margin':0, 
    816716                                'left':'50%', 
    817                                 'marginLeft':-(this.options.init_width/2), 
    818                                 'marginTop':(this.options.centered ? -(this.options.init_height/2) : ''), 
    819                                 'top':(this.options.centered ? '50%' : '') 
     717                                'marginLeft':-(this.options.initialWidth/2), 
     718                                'marginTop':(this.options.centered) ? -(this.options.initialHeight/2) : '', 
     719                                'top':(this.options.centered) ? '50%' : '' 
    820720                        } 
    821                 }).inject($(document.body)); 
    822  
    823                 this.filebox = new Element('div#mbox-filebox').inject(this.mainbox); 
    824  
     721                }).inject(document.id(document.body)); 
     722                 
     723                this.filebox = new Element('div',{ 
     724                        'id':'mbox-filebox', 
     725                        'styles':{ 
     726                                'border-style':'solid', 
     727                                'border-width':this.options.fileboxBorderWidth, 
     728                                'border-color':this.options.fileboxBorderColor, 
     729                                'padding':this.options.fileboxPadding, 
     730                                'opacity':0 
     731                        } 
     732                }).inject(this.mainbox); 
     733                 
    825734                this.bottom = new Element('div#mbox-bottom').setStyle('visibility','hidden').inject(this.mainbox); 
    826                 this.controls = new Element('div#mbox-controls'); //.setStyle('visibility','hidden'); 
     735                this.controls = new Element('div#mbox-controls'); 
    827736                this.caption = new Element('div#mbox-caption',{'html':'test'}).setStyle('display','none'); 
    828737 
    829738                this.bottom.adopt(new Element('div.mbox-reset'),this.controls, this.caption, new Element('div.mbox-reset')); 
    830  
     739                 
    831740                this.close = new Element('div#mbox-close'); 
    832741                this.next = new Element('div#mbox-next'); 
     
    834743                this.playpause = new Element('div#mbox-playpause'); 
    835744                this.count = new Element('div#mbox-count'); 
    836  
    837                 //$$(this.next, this.prev, this.count, this.playpause).setStyle('display','none'); 
     745                 
    838746                $$(this.next, this.prev, this.close, this.playpause).setStyles({ 
    839747                        'outline':'none', 
     
    843751                this.controls.adopt(new Element('div.mbox-reset'), this.close, this.next, this.prev, this.playpause, new Element('div.mbox-reset'), this.count); 
    844752        }, 
    845  
     753         
    846754        prepare_effects:function(){ 
    847                 this.overlay_show_fx = new Fx.Tween(this.overlay,{ 
     755                this.overlay_show_fx = new Fx.Tween(this.overlay,{  
    848756                                duration:'short', 
    849757                                link:'cancel', 
    850758                                property:'opacity', 
    851759                                onStart:function(){ 
    852                                         //console.log('overlay_show_fx start'); 
    853760                                        this.element.setStyles({ 
    854761                                                'top':-window.getScroll().y, 
    855                                                 'height':window.getScrollSize().y + window.getScroll().y, 
     762                                                'height':window.getScrollSize().y+window.getScroll().y, 
    856763                                                'display':'block' 
    857764                                        }); 
    858765                                }, 
    859766                                onComplete:function(){ 
    860                                         //console.log('overlay_show_fx complete'); 
    861767                                        this.mainbox_show_fx.start(1); 
    862768                                }.bind(this) 
    863769                }); 
    864770 
    865                 this.overlay_hide_fx = new Fx.Tween(this.overlay,{ 
     771                this.overlay_hide_fx = new Fx.Tween(this.overlay,{  
    866772                                duration:'short', 
    867773                                link:'cancel', 
     
    870776                                onComplete:function(){ 
    871777                                        this.overlay.setStyle('display','none'); 
     778                                        this.fireEvent('disappear'); 
    872779                                }.bind(this) 
    873780                }); 
    874  
    875                 this.mainbox_show_fx = new Fx.Tween(this.mainbox,{ 
     781                 
     782                this.mainbox_show_fx = new Fx.Tween(this.mainbox,{  
    876783                                duration:'short', 
    877784                                link:'cancel', 
    878785                                property:'opacity', 
    879786                                onStart:function(){ 
    880                                         //console.log('mainbox_show_fx start'); 
    881787                                        this.mainbox.setStyle('display','block'); 
    882788                                }.bind(this), 
    883789                                onComplete:function(){ 
    884                                         //console.log('mainbox_show_fx complete'); 
    885790                                        this.ready = true; 
    886791                                }.bind(this) 
    887792                }); 
    888793 
    889                 this.mainbox_hide_fx = new Fx.Tween(this.mainbox,{ 
     794                this.mainbox_hide_fx = new Fx.Tween(this.mainbox,{  
    890795                                duration:'short', 
    891796                                link:'cancel', 
     
    898803                                }.bind(this) 
    899804                }); 
    900  
    901  
    902                 this.mainbox_resize_fx = new Fx.Morph(this.mainbox,{ 
    903                                 duration:this.options.resize_duration*1000, 
    904                                 transition:this.options.resize_transition, 
     805                 
     806                 
     807                this.mainbox_resize_fx = new Fx.Morph(this.mainbox,{  
     808                                duration:this.options.resizeDuration*1000, 
     809                                transition:this.options.resizeTransition, 
    905810                                link:'cancel', 
    906811                                onStart:function(){ 
    907                                         //console.log('resize_fx start'); 
    908                                 }, 
     812                                        this.filebox.setStyle('opacity',0) 
     813                                }.bind(this), 
    909814                                onComplete:function(){ 
    910                                         var w, h; 
    911                                         w = this.current_file.width; 
    912                                         h = this.current_file.height; 
    913                                         if (w < this.options.autosize_min_width) w = this.options.autosize_min_width; 
    914                                         if (h < this.options.autosize_min_height) h = this.options.autosize_min_height; 
    915815                                        this.show_bottom(); 
    916                                         this.filebox.setStyle('width', w+'px'); 
    917                                         this.filebox.setStyle('height', h+'px'); 
    918                                         this.filebox.setStyle('opacity',0).grab(this.current_file).tween('opacity',1); 
     816                                        this.filebox.setStyle('height',this.current_file.height+'px'); 
     817                                        this.filebox.grab(this.current_file).tween('opacity',1); 
    919818                                        this.fireEvent('resizeComplete'); 
    920819                                }.bind(this) 
    921820                }); 
    922  
     821                 
    923822                this.filebox.set('tween',{ duration:'short', link:'chain' }); 
    924823        },//end prepare_effects 
    925  
     824         
    926825        prepare_events:function(){ 
    927                 $$(this.overlay,this.close).addEvent('click', function(){ 
    928                         this.disappear(); 
    929                 }.bind(this)); 
    930                 this.prev.addEvent('click',function(){ 
    931                         this.fireEvent('prevClick'); 
    932                 }.bind(this)); 
    933                 this.next.addEvent('click',function(){ 
    934                         this.fireEvent('nextClick'); 
    935                 }.bind(this)); 
    936                 this.playpause.addEvent('click',function(){ 
    937                         this.fireEvent('playPauseClick'); 
    938                 }.bind(this) ); 
     826                $$(this.overlay,this.close).addEvent('click', function(){ this.disappear(); }.bind(this)); 
     827                this.prev.addEvent('click',function(){ this.fireEvent('prevClick') }.bind(this)); 
     828                this.next.addEvent('click',function(){ this.fireEvent('nextClick') }.bind(this)); 
     829                this.playpause.addEvent('click',function(){ this.fireEvent('playPauseClick') }.bind(this) ); 
    939830        }, 
    940831 
    941832        show_file:function(file,caption,index,length){ 
    942833 
    943                 //this.clear_display(); 
    944834                this.hide_loader(); 
    945  
    946                 if(file.match && file.match('img') && (this.options.auto_size || this.options.centered)){ 
    947                         file = this.get_resized_image(file); 
    948                 } 
    949  
    950                 var file_size = { 
    951                         w:file.width.toInt(), 
    952                         h:file.height.toInt() 
     835                 
     836                if(file.match && file.match('img') && (this.options.autoSize || this.options.centered)){ 
     837                        var file = this.get_resized_image(file); 
    953838                }; 
    954                 if(!file_size.w || !file_size.h){ 
    955                         //data-milkbox-size not passed 
    956                         if (!this.options.fixup_dimension) { 
    957                                 alert('Milkbox error: you must pass size values if the file is swf or html or a free file (openWithFile)'); 
    958                                 return; 
    959                         } 
    960                         // assume some sensible defaults: 
    961                         var dims = Window.getSize(); 
    962                         file.width = dims.x; 
    963                         file.height = dims.y; 
    964                         file_size = { 
    965                                 w: dims.x * 0.85, 
    966                                 h: dims.y * 0.85 
    967                         }; 
    968                         file.set({ 'width':file_size.w.toInt(), 'height':file_size.h.toInt() }); 
    969                 } 
    970  
    971                 if(this.options.autosize_min_height > file_size.h){ 
    972                         var mt = Math.round((this.options.autosize_min_height - file_size.h) / 2); 
    973                         var mb = this.options.autosize_min_height - file_size.h - mt; 
    974                         file.setStyles({ 
    975                                 'margin-top': mt,       // no need to say "+'px'": mootools takes care of that! 
    976                                 'margin-bottom': mb 
    977                         }); 
    978                         file_size.h = this.options.autosize_min_height; 
    979                 } 
    980                 if(this.options.autosize_min_width > file_size.w){ 
    981                         var ml = Math.round((this.options.autosize_min_width - file_size.w) / 2); 
    982                         var mr = this.options.autosize_min_width - file_size.w - ml; 
    983                         file.setStyles({ 
    984                                 'margin-left': ml, 
    985                                 'margin-right': mr 
    986                         }); 
    987                         file_size.w = this.options.autosize_min_width; 
    988                 } 
    989  
    990                 file_size = Object.map(file_size,function(value){ 
    991                         return value.toInt(); 
    992                 }); 
    993  
    994                 this.caption.innerHTML = (caption ? caption : ''); 
     839 
     840                var file_size = { w:file.width.toInt(), h:file.height.toInt() }; 
     841                if(!file_size.w || !file_size.h){ alert('Milkbox error: you must pass size values if the file is swf or html or a free file (openWithFile)'); return; }//data-milkbox-size not passed 
     842                file_size = Object.map(file_size,function(value){ return value.toInt(); }); 
     843                 
     844                this.caption.innerHTML = (caption) ? caption : ''; 
    995845                this.update_count(index,length); 
    996  
     846                 
    997847                var filebox_addsize = this.filebox.getStyle('border-width').toInt()*2+this.filebox.getStyle('padding').toInt()*2; 
     848                                 
    998849                var final_w = file_size.w+filebox_addsize; 
    999  
     850                 
    1000851                //so now I can predict the caption height 
    1001852                var caption_adds = this.caption.getStyles('paddingRight','marginRight'); 
    1002                 this.caption.setStyle('width',final_w-caption_adds.paddingRight.toInt()-caption_adds.marginRight.toInt()); 
     853                this.caption.setStyle('width',final_w-caption_adds.paddingRight.toInt()-caption_adds.marginRight.toInt() - 2); 
    1003854                $$(this.bottom,this.controls).setStyle('height',Math.max(this.caption.getDimensions().height,this.controls.getComputedSize().totalHeight)); 
    1004855                var mainbox_size = this.mainbox.getComputedSize(); 
    1005856 
    1006857                var final_h = file_size.h+filebox_addsize+this.bottom.getComputedSize().totalHeight; 
    1007  
    1008                 var target_size = { 
     858                 
     859                var target_size = {  
    1009860                        w:final_w, 
    1010861                        h:final_h, 
    1011862                        total_w:final_w+mainbox_size.totalWidth-mainbox_size.width, 
    1012863                        total_h:final_h+mainbox_size.totalHeight-mainbox_size.height 
    1013                 }; 
    1014  
     864                } 
     865                 
    1015866                this.current_file = file; 
    1016867                this.resize_to(target_size); 
     
    1023874                var ratio; 
    1024875                var check; 
    1025  
    1026                 var i_size = { 
    1027                         w:image.get('width').toInt(), 
    1028                         h:image.get('height').toInt() 
    1029                 }; 
    1030  
     876                 
     877                var i_size = { w:image.get('width').toInt(), h:image.get('height').toInt() }; 
     878                 
    1031879                //cut out some pixels to make it better 
    1032880                var w_size = window.getSize(); 
    1033                 max_size = { 
    1034                         w:w_size.x-60, 
    1035                         h:w_size.y-68-this.options.margin_top*2 
     881                var max_size = {  
     882                        w:w_size.x-60,  
     883                        h:w_size.y-68-this.options.marginTop*2 
    1036884                }; 
    1037885 
     
    1045893                        check = 'w'; 
    1046894                } 
    1047  
    1048                 ratio = (ratio <= 1 ? ratio : 1); 
    1049  
    1050                 i_size = Object.map(i_size,function(value){ 
    1051                         return value*ratio; 
    1052                 }); 
    1053  
    1054                 ratio = (max_size[check]/i_size[check] <= 1 ? max_size[check]/i_size[check] : 1); 
    1055                 i_size = Object.map(i_size,function(value){ 
    1056                         return value*ratio; 
    1057                 }); 
    1058  
    1059                 if(this.options.autosize_max_height > 0){ 
    1060                         ratio = (this.options.autosize_max_height/i_size.h < 1 ? this.options.autosize_max_height/i_size.h : 1); 
    1061                         i_size = Object.map(i_size,function(value){ 
    1062                                 return value*ratio; 
    1063                         }); 
    1064                 } 
    1065                 if(this.options.autosize_max_width > 0){ 
    1066                         ratio = (this.options.autosize_max_width/i_size.w < 1 ? this.options.autosize_max_width/i_size.w : 1); 
    1067                         i_size = Object.map(i_size,function(value){ 
    1068                                 return value*ratio; 
    1069                         }); 
    1070                 } 
    1071  
    1072                 image.set({ 'width': Math.round(i_size.w), 'height': Math.round(i_size.h) }); 
    1073  
     895                 
     896                ratio = (ratio <= 1) ? ratio : 1; 
     897                 
     898                i_size = Object.map(i_size,function(value){ return Math.floor(value*ratio); }); 
     899                 
     900                ratio = (max_size[check]/i_size[check] <= 1) ? max_size[check]/i_size[check] : 1; 
     901                i_size = Object.map(i_size,function(value){ return Math.floor(value*ratio); }); 
     902                 
     903                if(this.options.autoSizeMaxHeight > 0){ 
     904                        ratio = (this.options.autoSizeMaxHeight/i_size.height < 1) ? this.options.autoSizeMaxHeight/i_size.height : 1; 
     905                        i_size = Object.map(i_size,function(value){ return Math.floor(value*ratio); }); 
     906                } 
     907 
     908                image.set({ 'width':i_size.w, 'height':i_size.h }); 
     909                 
    1074910                return image; 
    1075911        },//get_resized_image 
     
    1080916                        'height':target_size.h, 
    1081917                        'marginLeft':-(target_size.total_w/2).round(), 
    1082                         'marginTop':(this.options.centered ? -(target_size.total_h/2).round() : '') 
    1083                 }); 
    1084         }, 
    1085  
     918                        'marginTop':(this.options.centered) ? -(target_size.total_h/2).round() : '' 
     919                }); 
     920        }, 
     921         
    1086922        show_loader:function(){ 
    1087923                this.mainbox.addClass('mbox-loading'); 
    1088924        }, 
    1089  
     925         
    1090926        hide_loader:function(){ 
    1091927                this.mainbox.removeClass('mbox-loading'); 
     
    1098934                $$(this.bottom,this.controls).setStyle('height',''); 
    1099935        }, 
    1100  
     936         
    1101937        hide_bottom:function(){ 
    1102938                this.caption.setStyle('display','none'); 
     
    1108944                this.bottom.setStyle('visibility','visible'); 
    1109945        }, 
    1110  
     946         
    1111947        appear:function(){ 
    1112                 if(!this.options.centered){ 
    1113                         this.mainbox.setStyle('top',window.getScroll().y+this.options.margin_top); 
    1114                 } 
    1115                 this.overlay_show_fx.start(this.options.overlay_opacity); 
    1116         }, 
    1117  
     948                if(!this.options.centered){ this.mainbox.setStyle('top',window.getScroll().y+this.options.marginTop); } 
     949                this.overlay_show_fx.start(this.options.overlayOpacity); 
     950        }, 
     951         
    1118952        disappear:function(){ 
    1119953                this.cancel_effects(); 
    1120  
     954                 
    1121955                this.current_file = null; 
    1122956                this.ready = false; 
     
    1129963                this.caption.setStyle('display','none').empty(); 
    1130964                this.bottom.setStyle('visibility','hidden'); 
    1131  
     965                 
    1132966                //TODO anche opacity a 0 se si usa un tween per il file 
    1133967                this.filebox.setStyle('height','').empty(); 
    1134  
     968                 
    1135969                this.mainbox.setStyles({ 
    1136970                        'opacity':0, 
    1137971                        'display':'none', 
    1138                         'width':this.options.init_width, 
    1139                         'height':this.options.init_height, 
    1140                         'marginLeft':-(this.options.init_width/2), 
    1141                         'marginTop':(this.options.centered ? -(this.options.init_height/2) : ''), 
    1142                         'top':(this.options.centered ? '50%' : '') 
    1143                 }); 
    1144  
     972                        'width':this.options.initialWidth, 
     973                        'height':this.options.initialHeight, 
     974                        'marginLeft':-(this.options.initialWidth/2), 
     975                        'marginTop':(this.options.centered) ? -(this.options.initialHeight/2) : '', 
     976                        'top':(this.options.centered) ? '50%' : '' 
     977                }); 
     978                 
     979                this.filebox.setStyle('opacity',0); 
     980                 
    1145981                this.overlay_hide_fx.start(0); 
    1146  
    1147                 this.fireEvent('disappear'); 
     982                 
     983                //this.fireEvent('disappear'); 
    1148984        },//end disappear 
    1149  
     985         
    1150986        cancel_effects:function(){ 
    1151987                [this.mainbox_resize_fx, 
     
    1154990                this.overlay_hide_fx, 
    1155991                this.overlay_show_fx 
    1156                 ].each(function(fx){ 
    1157                         fx.cancel(); 
    1158                 }); 
    1159         }, 
    1160  
     992                ].each(function(fx){ fx.cancel(); }); 
     993        }, 
     994         
    1161995        set_mode:function(gallery_type){ 
    1162  
     996                 
    1163997                this.mode = gallery_type; 
    1164998                var close_w = this.close.getComputedSize().width; 
     
    11671001                var playpause_w = this.playpause.getComputedSize().width; 
    11681002                var offset = this.mainbox.getStyle('border-right-width').toInt();//for design purposes 
    1169  
     1003                 
    11701004                switch(gallery_type){ 
    11711005                        case 'autoplay': 
     
    11851019                                return; 
    11861020                } 
    1187  
     1021         
    11881022                this.caption.setStyle('margin-right',this.controls.getComputedSize().totalWidth); 
    11891023        },//end set_mode 
    1190  
     1024         
    11911025        set_paused:function(paused){ 
    11921026                this.paused = paused; 
    1193                 var pos = (this.paused ? '0 -66px' : ''); 
     1027                var pos = (this.paused) ? '0 -66px' : ''; 
    11941028                this.playpause.setStyle('background-position',pos); 
    11951029        }, 
    1196  
     1030         
    11971031        update_count:function(index,length){ 
    1198                 this.count.set('text',index+' '+this.options.image_of_text+' '+length); 
     1032                this.count.set('text',index+' '+this.options.imageOfText+' '+length); 
    11991033        }, 
    12001034 
    12011035        resetOverlaySize:function(){ 
    1202                 if(this.overlay.getStyle('opacity') == 0){ 
    1203                         //resize only if visible 
    1204                         return; 
    1205                 } 
    1206                 var h = window.getSize().y; 
    1207                 this.overlay.setStyles({ 'height':h }); 
     1036                if(this.overlay.getStyle('opacity') == 0){ return; };//resize only if visible 
     1037                var h = window.getScrollSize().y+window.getScroll().y; 
     1038                this.overlay.setStyles({ 'height':h, 'top':-window.getScroll().y }); 
     1039        }, 
     1040         
     1041        clear:function(){ 
     1042                this.overlay.destroy(); 
     1043                this.mainbox.destroy(); 
    12081044        } 
    1209  
     1045         
    12101046});//END 
    12111047 
     
    12151051 
    12161052//Class: MilkboxGallery 
    1217 //args: source,options 
     1053//args: source,options  
    12181054//      *source: element, elements, array 
    12191055//      *options: name, autoplay, autoplay_delay 
     
    12261062                name:null, 
    12271063                autoplay:null, 
    1228                 autoplay_delay:null 
     1064                autoplay_delay:null, 
     1065                remove_title:true 
    12291066        }, 
    12301067 
    12311068        initialize:function(source,options){ 
    1232  
     1069                 
    12331070                this.setOptions(options); 
    1234  
     1071                 
    12351072                this.source = source; 
    12361073                this.external = false; 
     
    12431080 
    12441081        prepare_gallery:function(){ 
    1245                 switch(typeOf(this.source)) 
    1246                 { 
    1247                 case 'element'://single 
    1248                         if(this.check_extension(this.source.href)){ 
    1249                                 this.items = [this.source]; 
    1250                         } 
    1251                         break; 
    1252                 case 'elements'://html 
    1253                         this.items = this.source.filter(function(link){ 
    1254                                 return this.check_extension(link.href); 
    1255                         },this); 
    1256                         break; 
    1257                 case 'array'://xml, array 
    1258                         this.items = this.source.filter(function(link){ 
    1259                                 return this.check_extension(link.href); 
    1260                         },this); 
    1261                         this.external = true; 
    1262                         break; 
    1263                 default: 
    1264                         return; 
    1265                 } 
    1266         }, 
    1267  
     1082                switch(typeOf(this.source)){ 
     1083                        case 'element'://single 
     1084                                if(this.check_extension(this.source.href)){ this.items = [this.source]; } 
     1085                                else{ alert('Wrong file extension: '+this.source.href); } 
     1086                                break; 
     1087                        case 'elements'://html 
     1088                                this.items = this.source.filter(function(link){ return this.check_extension(link.href); },this); 
     1089                                break; 
     1090                        case 'array'://xml, array 
     1091                                this.items = this.source.filter(function(link){ return this.check_extension(link.href); },this); 
     1092                                this.external = true; 
     1093                                break; 
     1094                        default: 
     1095                                return; 
     1096                } 
     1097                 
     1098                if(this.items.length == 0){ alert('Warning: gallery '+this.name+' is empty'); } 
     1099        }, 
     1100         
    12681101        //turns everything into an object 
    12691102        prepare_elements:function(){ 
    1270                 //console.log('items gallery', this.items); 
    1271                 if(!this.items || this.items.length === 0) { 
    1272                         return;   // [i_a] prevent crash when none have been set up 
    1273                 } 
    1274  
    12751103                this.items = this.items.map(function(item){ 
    12761104                        var splitted_url = item.href.split('?'); 
    12771105                        var output = {}; 
    1278                         output.element = (typeOf(item) === 'element' ? item : null); 
     1106                        output.element = (typeOf(item) == 'element') ? item : null; 
    12791107                        output.href = splitted_url[0]; 
    1280                         output.vars = (splitted_url[1] ? splitted_url[1].parseQueryString() : null); 
     1108                        output.vars = (splitted_url[1]) ? splitted_url[1].parseQueryString() : null; 
    12811109                        output.size = null; 
    1282                         output.caption = (output.element ? output.element.get('title') : item.title); 
    1283                         var size_string = (output.element ? output.element.get('data-milkbox-size') : item.size); 
    1284                         if(size_string){ 
    1285                                 output.size = Object.map(this.get_item_props(size_string),function(value,key){ 
    1286                                         return value.toInt(); 
    1287                                 }); 
    1288                         } 
     1110                        output.caption = (output.element) ? output.element.get('title') : item.title; 
     1111                        if(this.options.remove_title && output.element){ output.element.removeProperty('title') } 
     1112                         
     1113                        var size_string = (output.element) ? output.element.get('data-milkbox-size') : item.size; 
     1114                        if(size_string){ output.size = Object.map(this.get_item_props(size_string),function(value,key){ return value.toInt(); }); } 
     1115                         
     1116                        var extras = (output.element) ? output.element.get('data-milkbox-extras') : item.extras; 
     1117                        output.extras = (extras) ? extras : ''; 
     1118                         
    12891119                        return output; 
    12901120                },this); 
    1291  
    1292                 if(this.items.length === 0) { 
    1293                         return; 
    1294                 } 
    1295  
    1296                 this.type = (this.items.length === 1 ? 'single' : (this.options.autoplay ? 'autoplay' : 'standard')); 
    1297         }, 
    1298  
     1121                 
     1122                if(this.items.length == 0) return; 
     1123                 
     1124                this.type = (this.items.length == 1) ? 'single' : (this.options.autoplay) ? 'autoplay' : 'standard'; 
     1125        }, 
     1126         
    12991127        check_extension:function(string){ 
    1300                 return string.split('?')[0].test(/\.(gif|jpg|jpeg|png|bmp|tif|tiff|swf|html)$/i); 
    1301         }, 
    1302  
     1128                var splitted, regular_file, dyn_url; 
     1129                 
     1130                splitted  = string.split('?')[0]; 
     1131                 
     1132                regular_file = splitted.test(/\.(gif|jpg|jpeg|png|swf|html)$/i); 
     1133                if(!regular_file){ dyn_url = splitted.test(/\/\d+$/); } 
     1134                 
     1135                var pass = (regular_file || dyn_url) ? true : false; 
     1136                 
     1137                return pass; 
     1138        }, 
     1139         
    13031140        get_index_of:function(item){ 
    1304                 var index = (typeOf(item) === 'string' ? this.items.indexOf(this.items.filter(function(i){ 
    1305                                 return i.href === item; 
    1306                         })[0]) : this.items.indexOf(item)); 
    1307                 return index; 
    1308         }, 
    1309  
     1141                var index = (typeOf(item) == 'string') ? this.items.indexOf(this.items.filter(function(i){ return i.href === item; })[0]) : this.items.indexOf(item); 
     1142                return this.items.indexOf(item); 
     1143        }, 
     1144         
    13101145        get_item:function(index){ 
    13111146                return this.items[index]; 
    13121147        }, 
    1313  
     1148         
    13141149        get_item_props:function(prop_string){ 
    13151150                var props = {}; 
    1316                 prop_string.split(',').each(function(p,i){ 
     1151                var s = prop_string.split(',').each(function(p,i){ 
    13171152                        var clean = p.trim().split(':'); 
    13181153                        props[clean[0].trim()] = clean[1].trim(); 
     
    13201155                return props; 
    13211156        }, 
    1322  
     1157         
    13231158        refresh:function(){ 
    1324                 this.type = (this.items.length === 1 ? 'single' : (this.options.autoplay ? 'autoplay' : 'standard')); 
    1325         }, 
    1326  
     1159                this.type = (this.items.length == 1) ? 'single' : (this.options.autoplay) ? 'autoplay' : 'standard'; 
     1160        }, 
     1161         
    13271162        clear:function(){ 
    13281163                this.source = null; 
     
    13341169 
    13351170 
    1336 // Creating Milkbox instance: set __MILKBOX_NO_AUTOINIT__ to instantiate Milkbox somewhere else instead. 
    1337 if (typeof __MILKBOX_NO_AUTOINIT__ === 'undefined') 
    1338 { 
    1339         window.addEvent('domready', function(){ 
    1340                 this.milkbox = new Milkbox({ 
    1341                         centered:false 
    1342                 }); 
     1171//Creating Milkbox instance: you can comment this code and instantiate Milkbox somewhere else instead. 
     1172window.addEvent('domready', function(){  
     1173        //milkbox = new Milkbox({overlayOpacity:1, fileboxBorderWidth:'10px', fileboxBorderColor:'#ff0000', fileboxPadding:'20px', centered:true}); 
     1174        milkbox = new Milkbox({  
     1175                //autoPlay:true 
    13431176        }); 
    1344 } 
    1345  
    1346 /* 
    1347 jsLint settings: 
    1348 disallow undefined variables, assume browser 
    1349 predefined variables: alert, Class, Options, Events, instanceOf, typeOf, Request, Fx, Asset, Swiff, $, $$, Element 
    1350                       include these to shut up jsLint about further undefined/too early errors:     Milkbox, MilkboxGallery, MilkboxDisplay 
    1351 expect ~ 15 errors reported 
    1352 */ 
     1177}); 
  • branches/MootoolsFileManager-Update/plugins/MootoolsFileManager/mootools-filemanager/Language/Language.pt.js

    r1309 r1319  
    77*/ 
    88 
    9 FileManager.Language.en = { 
     9FileManager.Language.pt = { 
    1010        more: 'Detalhes', 
    1111        width: 'Largura:', 
  • branches/MootoolsFileManager-Update/plugins/MootoolsFileManager/mootools-filemanager/Source/FileManager.js

    r1309 r1319  
    8484                createFolders: false, 
    8585                filter: '', 
     86                listType: 'thumb',                                                              // the standard list type can be 'list' or 'thumb' 
    8687    keyboardNavigation: true,         // set to false to turn off keyboard navigation (tab, up/dn/pageup/pagedn etc) 
    8788                detailInfoMode: '',               // (string) whether you want to receive extra metadata on select/etc. and/or view this metadata in the preview pane (modes: '', '+metaHTML', '+metaJSON'. Modes may be combined) 
     
    9293                hideClose: false, 
    9394                hideOverlay: false, 
    94                 hideQonDelete: false, 
     95                hideOnDelete: false, 
    9596                hideOnSelect: true,               // (boolean). Default to true. If set to false, it leavers the FM open after a picture select. 
    9697    showDirGallery: true, 
     
    135136                this.root = null; 
    136137                this.CurrentDir = null; 
    137                 this.listType = 'list'; 
     138                this.listType = this.options.listType; 
    138139                this.dialogOpen = false; 
    139140                this.storeHistory = false; 
     
    273274                        this.diag.log('pathTitle-click event: ', e, ' @ ', e.target.outerHTML); 
    274275                        e.stop(); 
    275                         if (this.header.getElement('span.filemanager-dir') != null) { 
     276                        if (this.header.getElement('span.filemanager-dir') !== null) { 
    276277                                this.selectablePath.setStyle('width',(this.header.getSize().x - this.pathTitle.getSize().x - 55)); 
    277278                                this.selectablePath.replaces(this.clickablePath); 
     
    373374                                'style' : 'margin-right: 10px;', 
    374375                                'title': this.language.toggle_side_boxes 
    375                         }).set('opacity',0.5).addEvents({ 
     376                        }).setStyle('opacity',0.5).addEvents({ 
    376377                                click: this.toggleList.bind(this) 
    377378                        }); 
     
    380381                                'class':'listType', 
    381382                                'title': this.language.toggle_side_list 
    382                         }).set('opacity',1).addEvents({ 
     383                        }).setStyle('opacity',1).addEvents({ 
    383384                                click: this.toggleList.bind(this) 
    384385                        }); 
     386 
     387                if(this.listType == 'thumb') { 
     388                        this.browserMenu_thumb.setStyle('opacity',1); 
     389                        this.browserMenu_list.setStyle('opacity',0.5); 
     390                } 
     391 
     392                // set startup list type 
     393                if(this.options.thumbnailList === true) 
     394                        this.toggleList.bind(this); 
    385395 
    386396                // Add a scroller to scroll the browser list when dragging a file 
     
    395405                }); 
    396406 
     407    if(this.options.showDirGallery) 
     408    { 
    397409// Partikule : Thumbs list in preview panel 
    398410                this.browserMenu_thumbList = new Element('a',{ 
     
    419431                        }.bind(this)); 
    420432// /Partikule 
    421  
     433    } 
    422434 
    423435                this.browser_dragndrop_info = new Element('a',{ 
     
    427439                this.browser_paging = new Element('div',{ 
    428440                                'id':'fm_view_paging' 
    429                         }).set('opacity', 0); // .setStyle('visibility', 'hidden'); 
     441                        }).setStyle('opacity', 0); // .setStyle('visibility', 'hidden'); 
    430442                this.browser_paging_first = new Element('a',{ 
    431443                                'id':'paging_goto_first' 
    432                         }).set('opacity', 1).addEvents({ 
     444                        }).setStyle('opacity', 1).addEvents({ 
    433445                                click: this.paging_goto_first.bind(this) 
    434446                        }); 
    435447                this.browser_paging_prev = new Element('a',{ 
    436448                                'id':'paging_goto_previous' 
    437                         }).set('opacity', 1).addEvents({ 
     449                        }).setStyle('opacity', 1).addEvents({ 
    438450                                click: this.paging_goto_prev.bind(this) 
    439451                        }); 
    440452                this.browser_paging_next = new Element('a',{ 
    441453                                'id':'paging_goto_next' 
    442                         }).set('opacity', 1).addEvents({ 
     454                        }).setStyle('opacity', 1).addEvents({ 
    443455                                click: this.paging_goto_next.bind(this) 
    444456                        }); 
    445457                this.browser_paging_last = new Element('a',{ 
    446458                                'id':'paging_goto_last' 
    447                         }).set('opacity', 1).addEvents({ 
     459                        }).setStyle('opacity', 1).addEvents({ 
    448460                                click: this.paging_goto_last.bind(this) 
    449461                        }); 
     
    522534                // Thumbs list container (in preview panel) 
    523535                this.dir_filelist = new Element('div', {'class': 'filemanager-filelist'}); 
     536                // creates a list, HELPS to make the thumblist DRAGABLE 
     537                this.dir_filelist_thumbUl = new Element('ul'); 
     538                this.dir_filelist_thumbUl.inject(this.dir_filelist); 
    524539 
    525540// /Partikule 
     
    553568                        } 
    554569                }); 
     570 
     571                // add toolTips 
    555572                if (!this.options.hideClose) { 
    556573                        this.tips.attach(this.closeIcon); 
    557574                } 
     575                this.tips.attach(this.browserMenu_thumb); 
     576                this.tips.attach(this.browserMenu_list); 
     577                this.tips.attach(this.browserMenu_thumbList); 
    558578 
    559579                this.imageadd = Asset.image(this.assetBasePath + 'Images/add.png', { 
     
    563583                                'z-index': this.options.zIndex + 1600 
    564584                        } 
    565                 }).set('opacity', 0).set('tween', {duration: 'short'}).inject(this.container); 
     585                }).setStyle('opacity', 0).set('tween', {duration: 'short'}).inject(this.container); 
    566586 
    567587                if (!this.options.hideOverlay) { 
     
    734754                else 
    735755                { 
    736                         var parent = (this.options.parentContainer != null ? $(this.options.parentContainer) : this.container.getParent()); 
     756                        var parent = (this.options.parentContainer !== null ? document.id(this.options.parentContainer) : this.container.getParent()); 
    737757                        if (parent) 
    738758                        { 
     
    769789                if (e) e.stop(); 
    770790 
     791                // if the clicked elelement is from the preview gallery, get the corresponding element 
     792                if(el.retrieve('el_ref')) 
     793                                el = el.retrieve('el_ref'); 
     794 
    771795                // ignore mouse clicks while drag&drop + resulting copy/move is pending. 
    772796                // 
    773797                // Theoretically only the first click originates from the same mouse event as the 'drop' event, so we 
    774798                // COULD reset 'drop_pending' after processing that one. 
    775                 if (this.drop_pending != 0) 
     799                if (this.drop_pending !== 0) 
    776800                { 
    777801                        this.drop_pending = 0; 
     
    811835 
    812836                        this.switchButton4Current(); 
     837 
     838                        // // // now make sure we can see the selected item in the left pane: scroll there: 
     839                        this.browserSelection('current'); 
    813840                } 
    814841        }, 
     
    817844 
    818845        /** 
    819          * Catches both single and double click on thumb list icon in the directory preview thumb/gallery list 
    820          */ 
    821         relayDblClick: function(e, self, dg_el, file, clicks) 
     846        * Catches double clicks and open the file if selectable is true */ 
     847        relayDblClick: function(e, el) 
    822848        { 
     849                if(this.options.selectable === false) 
     850                        return; 
    823851                if (e) e.stop(); 
    824852 
    825                 this.diag.log('on relayDblClick file = ', file, ', current dir: ', this.CurrentDir, ', # clicks: ', clicks); 
     853                this.diag.log('on relayDblClick file = ', el.retrieve('file'), ', current dir: ', this.CurrentDir); 
    826854 
    827855                this.tips.hide(); 
    828856 
    829                 var el_ref = dg_el.retrieve('el_ref'); 
    830  
    831                 if (this.Current) 
    832                 { 
    833                         this.Current.removeClass('selected'); 
    834                 } 
    835  
    836                 this.Current = el_ref.addClass('selected'); 
    837                 file = el_ref.retrieve('file'); 
    838  
    839                 this.CurrentFile = file; 
    840  
    841                 // now make sure we can see the selected item in the left pane: scroll there: 
    842                 this.browserSelection('none'); 
    843  
    844                 // only simulate the 'select' button click by doubleclick on thumbnail in directory preview, when 'select' is actually allowed. 
    845                 if (clicks === 2 && this.options.selectable) 
    846                 { 
     857                this.CurrentFile = el.retrieve('file'); 
     858 
     859                if (this.CurrentFile.mime !== 'text/directory') 
    847860                        this.open_on_click(null); 
    848                 } 
    849                 else 
    850                 { 
    851                         // the single-click action is to simulate a click on the corresponding line in the directory view (left pane) 
    852                         this.relayClick(e, el_ref); 
    853                 } 
    854861        }, 
    855862 
     
    859866                if (e) e.stop(); 
    860867 
    861                 $$('.filemanager-browserheader a.listType').set('opacity',0.5); 
     868                $$('.filemanager-browserheader a.listType').setStyle('opacity',0.5); 
    862869                if (!this.browserMenu_thumb.retrieve('set',false)) { 
    863870                        this.browserMenu_list.store('set',false); 
    864                         this.browserMenu_thumb.store('set',true).set('opacity',1); 
     871                        this.browserMenu_thumb.store('set',true).setStyle('opacity',1); 
    865872                        this.listType = 'thumb'; 
    866873                        if (typeof jsGET !== 'undefined') jsGET.set('fmListType=thumb'); 
    867874                } else { 
    868875                        this.browserMenu_thumb.store('set',false); 
    869                         this.browserMenu_list.store('set',true).set('opacity',1); 
     876                        this.browserMenu_list.store('set',true).setStyle('opacity',1); 
    870877                        this.listType = 'list'; 
    871878                        if (typeof jsGET !== 'undefined') jsGET.set('fmListType=list'); 
     
    912919                        case 'fmFile': 
    913920                                var hot_item = (this.Current && this.Current.retrieve('file')); 
    914                                 if (hot_item == null || value !== hot_item.name) 
     921                                if (hot_item === null || value !== hot_item.name) 
    915922                                { 
    916923                                        this.browser.getElements('span.fi span').each((function(current) 
     
    946953                if (typeof loaddir === 'undefined') loaddir = null; 
    947954 
    948                 if (loaddir == null && typeof jsGET !== 'undefined') 
    949                 { 
    950                         if (jsGET.get('fmPath') != null) 
     955                if (loaddir === null && typeof jsGET !== 'undefined') 
     956                { 
     957                        if (jsGET.get('fmPath') !== null) 
    951958                        { 
    952959                                loaddir = jsGET.get('fmPath'); 
    953960                        } 
    954961                } 
    955                 if (loaddir == null) 
     962                if (loaddir === null) 
    956963                { 
    957964                        if (this.CurrentDir) 
     
    970977                                this.diag.log('on show: set onShow on fmFile: ', jsGET.get('fmFile')); 
    971978                        } 
    972                         if (jsGET.get('fmListType') != null) { 
    973                                 $$('.filemanager-browserheader a.listType').set('opacity',0.5); 
     979                        if (jsGET.get('fmListType') !== null) { 
     980                                $$('.filemanager-browserheader a.listType').setStyle('opacity',0.5); 
    974981                                this.listType = jsGET.get('fmListType'); 
    975982                                if (this.listType === 'thumb') 
    976                                         this.browserMenu_thumb.store('set',true).set('opacity',1); 
     983                                        this.browserMenu_thumb.store('set',true).setStyle('opacity',1); 
    977984                                else 
    978                                         this.browserMenu_list.store('set',true).set('opacity',1); 
     985                                        this.browserMenu_list.store('set',true).setStyle('opacity',1); 
    979986                        } 
    980987                        jsGET.set({ 
     
    14371444                                                this.view_fill_timer = null; 
    14381445 
     1446                                                // was here before 
     1447                                        } 
     1448                                } 
     1449 
     1450                                // -> move this here, so it always reloads the thumbnail pane in the preview window 
    14391451                                                rerendering_list = true; 
    14401452                                                this.fill(null, this.get_view_fill_startindex(), this.listPaginationLastSize); 
    1441                                         } 
    1442                                 } 
     1453 
    14431454                                // make sure fade does not clash with parallel directory (re)load: 
    14441455                                if (!rerendering_list) 
     
    14521463                                } 
    14531464                                this.browserLoader.fade(0); 
     1465 
     1466                                // clear preview pane thumbnails 
     1467                                // this.dir_filelist.empty(); 
     1468 
    14541469                        }).bind(this), 
    14551470                        onComplete: function() {}, 
     
    14641479 
    14651480        destroy: function(file) { 
    1466                 if (this.options.hideQonDelete) { 
     1481                if (this.options.hideOnDelete) { 
    14671482                        this.destroy_noQasked(file); 
    14681483                } 
     
    15571572 
    15581573        browserSelection: function(direction) { 
    1559                 var csel; 
     1574                var csel,current; 
    15601575 
    15611576                this.diag.log('browserSelection : direction = ', direction); 
    1562                 if (this.browser.getElement('li') == null) return; 
     1577                if (this.browser.getElement('li') === null) return; 
    15631578 
    15641579                if (direction === 'go-bottom') 
     
    15691584                        // blow away any lingering 'selected' after a page switch like that 
    15701585                        csel = this.browser.getElement('span.fi.selected'); 
    1571                         if (csel != null) 
     1586                        if (csel !== null) 
    15721587                                csel.removeClass('selected'); 
    15731588                } 
     
    15791594                        // blow away any lingering 'selected' after a page switch like that 
    15801595                        csel = this.browser.getElement('span.fi.selected'); 
    1581                         if (csel != null) 
     1596                        if (csel !== null) 
    15821597                                csel.removeClass('selected'); 
    15831598                } 
    1584                 else if (this.browser.getElement('span.fi.hover') == null && this.browser.getElement('span.fi.selected') == null) 
     1599                else if (this.browser.getElement('span.fi.hover') === null && this.browser.getElement('span.fi.selected') === null) 
    15851600                { 
    15861601                        // none is selected: select first item (folder/file) 
    15871602                        current = this.browser.getFirst('li').getElement('span.fi'); 
    15881603                } 
     1604                else if(direction === 'current') { 
     1605                        current = this.Current; 
     1606                } 
    15891607                else 
    15901608                { 
    15911609                        // select the current file/folder or the one with hover 
    1592                         var current = null; 
    1593                         if (this.browser.getElement('span.fi.hover') == null && this.browser.getElement('span.fi.selected') != null) { 
     1610                        current = null; 
     1611                        if (this.browser.getElement('span.fi.hover') === null && this.browser.getElement('span.fi.selected') !== null) { 
    15941612                                current = this.browser.getElement('span.fi.selected'); 
    15951613                        } 
    1596                         else if (this.browser.getElement('span.fi.hover') != null) { 
     1614                        else if (this.browser.getElement('span.fi.hover') !== null) { 
    15971615                                current = this.browser.getElement('span.fi.hover'); 
    15981616                        } 
     
    16281646                        // when we're at the bottom of the view and there are more pages, go to the next page: 
    16291647                        next = current.getNext('li'); 
    1630                         if (next == null) 
     1648                        if (next === null) 
    16311649                        { 
    16321650                                if (this.paging_goto_next(null, 'go-bottom')) 
     
    16371655                                for ( ; stepsize > 0; stepsize--) { 
    16381656                                        next = current.getNext('li'); 
    1639                                         if (next == null) 
     1657                                        if (next === null) 
    16401658                                                break; 
    16411659                                        current = next; 
     
    16681686                        // when we're at the top of the view and there are pages before us, go to the previous page: 
    16691687                        var previous = current.getPrevious('li'); 
    1670                         if (previous == null) 
     1688                        if (previous === null) 
    16711689                        { 
    16721690                                if (this.paging_goto_prev(null, 'go-top')) 
     
    16771695                                for ( ; stepsize > 0; stepsize--) { 
    16781696                                        previous = current.getPrevious('li'); 
    1679                                         if (previous == null) 
     1697                                        if (previous === null) 
    16801698                                                break; 
    16811699                                        current = previous; 
     
    17001718                        this.Current = current; 
    17011719                        csel = this.browser.getElement('span.fi.selected'); 
    1702                         if (csel != null) // remove old selected one 
     1720                        if (csel !== null) // remove old selected one 
    17031721                                csel.removeClass('selected'); 
    17041722 
     
    17071725                        this.diag.log('on key ENTER file = ', currentFile); 
    17081726                        if (currentFile.mime === 'text/directory') { 
    1709                                 this.load(currentFile.dir + currentFile.name /*.replace(this.root,'')*/); 
     1727                                this.load(currentFile.path /*.replace(this.root,'')*/); 
    17101728                        } 
    17111729                        else { 
     
    17251743                        var parent = current.getParent('li'); 
    17261744                        next = parent.getNext('li'); 
    1727                         if (next == null) { 
     1745                        if (next === null) { 
    17281746                                next = parent.getPrevious('li'); 
    17291747                        } 
    1730                         if (next != null) { 
     1748                        if (next !== null) { 
    17311749                                next = next.getElement('span.fi'); 
    17321750                                next.addClass('hover'); 
     
    18961914 
    18971915                // Adding the thumbnail list in the preview panel: blow away any pre-existing list now, as we'll generate a new one now: 
    1898                 this.dir_filelist.empty(); 
     1916                this.dir_filelist_thumbUl.empty(); 
    18991917 
    19001918                // set history 
     
    21942212                        file = j.dirs[idx]; 
    21952213 
    2196                         if (idx % 10 == 0) { 
     2214                if (idx % 10 === 0) { 
    21972215                                // try not to spend more than 100 msecs per (UI blocking!) loop run! 
    21982216                                loop_duration = new Date().getTime() - loop_starttime; 
     
    22402258                        editButtons.each(function(v) { 
    22412259                                //icons.push( 
    2242                                 Asset.image(this.assetBasePath + 'Images/' + v + '.png', {title: this.language[v]}).addClass('browser-icon').set('opacity', 0).addEvent('mouseup', (function(e, target) { 
     2260                                Asset.image(this.assetBasePath + 'Images/' + v + '.png', {title: this.language[v]}).addClass('browser-icon').setStyle('opacity', 0).addEvent('mouseup', (function(e, target) { 
    22432261                                        // this = el, self = FM instance 
    22442262                                        e.preventDefault(); 
     
    22752293                                file = j.files[idx - dir_count]; 
    22762294 
    2277                                 if (idx % 10 == 0) { 
     2295                                if (idx % 10 === 0) { 
    22782296                                        // try not to spend more than 100 msecs per (UI blocking!) loop run! 
    22792297                                        loop_duration = new Date().getTime() - loop_starttime; 
     
    24532471                                } 
    24542472 
     2473                                // add double click functionality to the list elements 
     2474                                if(this.options.selectable === true) { 
     2475                                        el.addEvent('dblclick', (function(e) { 
     2476                                                self.diag.log('is_file:DBLCLICK: ', e); 
     2477                                                var node = this; 
     2478                                                self.relayDblClick.apply(self, [e, node]); 
     2479                                        }).bind(el)); 
     2480                                } 
     2481 
    24552482                                editButtons = []; 
    24562483 
     
    24612488 
    24622489                                editButtons.each(function(v) { 
    2463                                         Asset.image(this.assetBasePath + 'Images/' + v + '.png', {title: this.language[v]}).addClass('browser-icon').set('opacity', 0).addEvent('mouseup', (function(e, target) { 
     2490                                        Asset.image(this.assetBasePath + 'Images/' + v + '.png', {title: this.language[v]}).addClass('browser-icon').setStyle('opacity', 0).addEvent('mouseup', (function(e, target) { 
    24642491                                                // this = el, self = FM instance 
    24652492                                                e.preventDefault(); 
     
    25102537// Partikule 
    25112538// Thumbs list 
     2539// edit: Fabian Vogelsteller: made thumblist DRAGGABLE 
    25122540 
    25132541                                // use a closure to keep a reference to the current dg_el, otherwise dg_el, file, etc. will carry the values they got at the end of the loop! 
    25142542                                (function(dg_el, el, file) 
    25152543                                { 
    2516                                         dg_el.store('el_ref', el).addEvents({ 
    2517                                                 'click': function(e) 
    2518                                                 { 
    2519                                                         clearTimeout(self.dir_gallery_click_timer); 
    2520                                                         self.dir_gallery_click_timer = self.relayDblClick.delay(700, self, [e, this, dg_el, file, 1]); 
    2521                                                 }, 
    2522                                                 'dblclick': function(e) 
    2523                                                 { 
    2524                                                         clearTimeout(self.dir_gallery_click_timer); 
    2525                                                         self.dir_gallery_click_timer = self.relayDblClick.delay(0, self, [e, this, dg_el, file, 2]); 
    2526                                                 } 
    2527                                         }); 
    2528  
    2529                                         dg_el.inject(this.dir_filelist); 
     2544                                        var thumbLi = new Element('li'); 
     2545 
     2546                                        dg_el.store('el_ref', el).store('file',file).store('parent',thumbLi); 
     2547 
     2548                                        thumbLi.inject(this.dir_filelist_thumbUl); 
     2549                                        dg_el.inject(thumbLi); 
    25302550                                }).bind(this)(dg_el, el, file); 
    25312551 
     
    25632583                //this.diag.log(' + time taken in array traversal + revert = ', duration); 
    25642584 
     2585                // -> made preview thumblist DRAGGABLE 
     2586                // add the thumbnail pane in preview window to the dropable elements 
     2587                this.dir_filelist.getChildren('ul li div.fi').each((function(thumb){ 
     2588                        els[0].push(thumb); 
     2589                }).bind(this)); 
     2590 
     2591                // make draggable 
    25652592                if (support_DnD_for_this_dir) { 
    25662593                        // -> make draggable 
     
    27502777                                                                                this.view_fill_timer = null; 
    27512778 
    2752                                                                                 rerendering_list = true; 
    2753                                                                                 this.fill(null, this.get_view_fill_startindex(), this.listPaginationLastSize); 
     2779                                                                                // was here 
    27542780                                                                        } 
    27552781                                                                } 
     2782 
     2783                                                                // -> moves this here so it always reloads the thumbnail pane in the preview window 
     2784                                                                rerendering_list = true; 
     2785                                                                this.fill(null, this.get_view_fill_startindex(), this.listPaginationLastSize); 
    27562786 
    27572787                                                                // make sure fade does not clash with parallel directory (re)load: 
     
    27952825                } 
    27962826 
     2827                // add tooltip for drag n drop icon 
     2828                this.tips.attach(this.browser_dragndrop_info); 
     2829 
    27972830                // check how much we've consumed so far: 
    27982831                duration = new Date().getTime() - starttime; 
     
    29252958 
    29262959                        this.diag.log('fillInfo: request detail for file: ', Object.clone(file), ', dir: ', dir); 
    2927       if(this.options.showDirGallery == false && file.mime === 'text/directory') return; 
     2960      if(this.options.showDirGallery === false && file.mime === 'text/directory') return; 
    29282961                        var tx_cfg = this.options.mkServerRequestURL(this, 'detail', { 
    29292962                                                        directory: this.dirname(file.path), 
     
    31503183              .inject(previewArea); 
    31513184               
    3152     previewArea = new Element('div', {class: 'filemanager-preview-content'}).inject(previewArea); 
     3185    previewArea = new Element('div', {'class': 'filemanager-preview-content'}).inject(previewArea); 
    31533186     
    31543187    var dewplayer = this.assetBasePath + '/dewplayer.swf'; 
     
    31753208                }); 
    31763209 
    3177                 $(appearOn).addEvents({ 
     3210                document.id(appearOn).addEvents({ 
    31783211                        mouseenter: (function() { 
    3179                                                         this.set('opacity', opacity[0]); 
     3212                                                        this.setStyle('opacity', opacity[0]); 
    31803213                                                }).bind(icon), 
    31813214                        mouseleave: (function() { 
    3182                                                         this.set('opacity', opacity[1]); 
     3215                                                        this.setStyle('opacity', opacity[1]); 
    31833216                                                }).bind(icon) 
    31843217                }); 
     
    37183751                if (autofocus_el) 
    37193752                { 
    3720                         if (('autofocus' in autofocus_el) && !(Browser.Engine && Browser.Engine.webkit)) 
    3721                         { 
    37223753                                // HTML5 support: see    http://diveintohtml5.org/detect.html 
    3723                                 // 
    3724                                 // Unfortunately, it's not really working for me in webkit browsers (Chrome, Safari)  :-(( 
    3725                                 autofocus_el.set('autofocus', 'autofocus'); 
    3726                                 autofocus_el = null; 
    3727                         } 
    3728                         else 
    3729                         { 
    3730                                 // Safari / Chrome have trouble focussing on things not yet fully rendered! 
    3731                         } 
     3754                        autofocus_el.setProperty('autofocus', 'autofocus'); 
     3755      autofocus_el.focus(); 
    37323756                } 
    37333757                this.el.center().fade(1).get('tween').chain((function() { 
     
    38633887                this.resize(); 
    38643888 
    3865                 this.el.setStyles({ 
    3866                         opacity: 0, 
    3867                         display: 'block' 
    3868                 }).get('tween'). /* pause(). */ start('opacity', 0.5); 
     3889                this.el.setStyle('display', 'block'); 
     3890                this.el.fade('hide').fade(0.5); 
    38693891 
    38703892                window.addEvent('resize', this.resize.bind(this)); 
     
    39083930                if (this.objects && this.objects.length) { 
    39093931                        this.objects.each(function(el) { 
    3910                                 el.style.visibility = 'visible'; 
     3932                                        el.setStyle('visibility', 'visible'); 
    39113933                        }); 
    39123934                } 
  • branches/MootoolsFileManager-Update/plugins/MootoolsFileManager/mootools-filemanager/Source/Gallery.js

    r1309 r1319  
    99 
    1010requires: 
    11   core/1.3.1: '*' 
    12   more/1.3.1.1: [Sortables] 
     11  core/1.4.5: '*' 
     12  more/1.4.0.1: [Sortables] 
    1313 
    1414provides: FileManager.Gallery 
     
    7373                                } 
    7474                                self.hideClone(); 
    75                                 self.wrapper.setStyle('display', 'none'); 
     75                                // self.wrapper.setStyle('display', 'none'); 
    7676                        }, 
    7777 
     
    9090                        styles: 
    9191                        { 
    92                                 'z-index': this.options.zIndex + 10 
     92                                'z-index': this.options.zIndex - 10 
    9393                        } 
    9494                }).inject(this.container); 
     
    105105                        styles: 
    106106                        { 
    107                                 'z-index': this.options.zIndex + 750 
    108                         }, 
    109                         tween: {duration: 'short'}, 
    110                         opacity: 0, 
    111                         events: { 
    112                                 mouseenter: function() { 
    113                                         if (self.options.closeCaptionEditorOnMouseOut) 
    114                                         { 
    115                                                 clearTimeout(timer); 
    116                                         } 
    117                                 }, 
    118                                 mouseleave: function(e) { 
    119                                         var target = this; 
    120  
    121                                         if (self.options.closeCaptionEditorOnMouseOut) 
    122                                         { 
    123                                                 timer = (function() { 
    124                                                         self.removeClone(e, target); 
    125                                                 }).delay(500); 
    126                                         } 
    127                                 } 
    128                         } 
     107                                'z-index': this.options.zIndex + 750, 
     108                                'opacity': 0, 
     109                                'display': 'none' 
     110                        }, 
     111                        tween: {duration: 'short'} 
    129112                }).adopt( 
    130113                        new Element('span', {text: this.language.gallery.text}), 
     
    178161                        w: wrapper_pos.width 
    179162                }; 
    180  
    181163                this.droppables.push(this.gallery); 
    182164 
     
    285267 
    286268                this.hideClone(); 
    287                 this.wrapper.setStyle('display', 'none'); 
     269                // this.wrapper.setStyle('display', 'none'); 
    288270        }, 
    289271 
     
    329311                var cw = this.captionImgContainerSize.x; 
    330312                var ch = this.captionImgContainerSize.y; 
     313                var redux; 
    331314                if (w > cw) 
    332315                { 
    333                         var redux = cw / w; 
     316                        redux = cw / w; 
    334317                        w *= redux; 
    335318                        h *= redux; 
     
    337320                if (h > ch) 
    338321                { 
    339                         var redux = ch / h; 
     322                        redux = ch / h; 
    340323                        w *= redux; 
    341324                        h *= redux; 
     
    380363                }); 
    381364 
    382                 //li_wrapper.set('opacity', 0); 
     365                // clone image for caption container 
     366                //li_wrapper.setStyle('opacity', 0); 
    383367                this.clone = img_el.clone(); 
    384                 this.clone.store('file', file).store('parent', li_wrapper).addClass('filemanager-clone').setStyles(this.animation.from).set({ 
    385                         morph: {link: 'chain'}, 
     368                this.clone.store('file', file).store('parent', li_wrapper).addClass('filemanager-clone').set({ 
    386369                        styles: { 
    387                                 position: 'absolute', 
     370                                position: 'relative', 
     371                                width: w, 
     372                                height: h, 
     373                                top: ((260- h) / 2) - 2, 
     374                                left: ((260- w) / 2) - 1, 
    388375                                'z-index': this.options.zIndex + 800 
    389                         }, 
    390                         events: { 
    391                                 click: function(e) { 
    392                                         if (!self.files[name]) 
    393                                                 return; 
    394                                         self.fireEvent('galleryPreview', [file.path, self.files[name], li_wrapper, self]); 
    395                                 } 
    396                         } 
    397                 }).inject(document.body).morph(this.animation.to).get('morph').chain(function() { 
    398                         if (!self.files[name]) 
    399                                 return; 
    400                         self.input.set('value', self.files[name].caption || ''); 
    401                         self.wrapper.setStyles({ 
    402                                 opacity: 1, 
    403                                 display: 'block', 
    404                                 left: self.animation.to.left + self.captionDialogOffsets.x /* -12 */, 
    405                                 top: self.animation.to.top + self.captionDialogOffsets.y /* -53 */ 
    406                         }).fade(1).get('tween').chain(function() { 
    407                                 self.input.focus(); 
    408                         }); 
    409                 }); 
     376                        } 
     377                }).inject(self.wrapper.getChildren('div.img')[0]); 
     378 
     379                // blend in the caption container 
     380                if (!this.files[name]) 
     381                        return; 
     382                this.input.set('value', self.files[name].caption || ''); 
     383                this.wrapper.setStyles({ 
     384                        'position':'fixed', 
     385                        'display': 'block', 
     386                        'left': this.animation.to.left /* -12 */, 
     387                        'top': this.animation.to.top - this.captionDialogOffsets.y /* -53 */ 
     388                }).fade('hide').fade(1).get('tween').chain((function() { 
     389                        this.input.focus(); 
     390                }).bind(this)); 
    410391        }, 
    411392 
     
    426407                var cw = this.imgContainerSize.x; 
    427408                var ch = this.imgContainerSize.y; 
     409                var redux; 
    428410                if (w > cw) 
    429411                { 
    430                         var redux = cw / w; 
     412                        redux = cw / w; 
    431413                        w *= redux; 
    432414                        h *= redux; 
     
    434416                if (h > ch) 
    435417                { 
    436                         var redux = ch / h; 
     418                        redux = ch / h; 
    437419                        w *= redux; 
    438420                        h *= redux; 
     
    461443                                        if (e) e.stop(); 
    462444                                        if (!self.isSorting) { 
    463                                                  self.show_caption_editor(img_el, li_wrapper, file); 
     445                                                self.show_caption_editor(img_el, li_wrapper, file); 
    464446                                        } 
    465447                                        self.isSorting = false; 
     
    527509                        events: { 
    528510                                click: function(e) { 
    529                                         if (e) e.stop(); 
    530  
     511                                        if(e) e.stop(); 
    531512                                        self.erasePicture(name); 
    532513                                } 
    533514                        } 
    534515                }); 
    535  
    536                 /* 
    537                  * as 'imgcontainer.getSize() won't deliver the dimensions as set in the CSS, we turn it the other way around: 
    538                  * we set the w/h of the image container here explicitly; the CSS can be used for other bits of styling. 
    539                  */ 
     516                // hide on start 
     517                destroyIcon.setStyle('opacity',0); 
     518 
     519                /** 
     520                * as 'imgcontainer.getSize() won't deliver the dimensions as set in the CSS, we turn it the other way around: 
     521                * we set the w/h of the image container here explicitly; the CSS can be used for other bits of styling. 
     522                */ 
    540523                var imgcontainer = new Element('div', { 
    541524                        'class': 'gallery-image', 
     
    671654                this.files[name].caption = (this.input.value || ''); 
    672655 
    673                 this.clone.morph(this.animation.from).get('morph').clearChain().chain((function() { 
    674                         //this.clone.retrieve('parent').set('opacity', 1); 
    675                         this.clone.destroy(); 
    676                 }).bind(this)); 
     656                self = this; 
    677657 
    678658                this.wrapper.fade(0).get('tween').chain(function() { 
    679659                        this.element.setStyle('display', 'none'); 
     660                        self.clone.destroy(); 
    680661                }); 
    681662        }, 
     
    688669                var parent = this.clone.retrieve('parent'); 
    689670                if (parent) { 
    690                         //parent.set('opacity', 1); 
     671                        //parent.setStyle('opacity', 1); 
    691672                } 
    692673                this.clone.destroy(); 
    693674                this.wrapper.setStyles({ 
    694675                        opacity: 0, 
    695                         display: 'none' 
     676                        'display': 'none' 
    696677                }); 
    697678        }, 
  • branches/MootoolsFileManager-Update/plugins/MootoolsFileManager/mootools-filemanager/Source/Uploader/Fx.ProgressBar.js

    r1309 r1319  
    3030 
    3131  initialize: function(element, options) { 
    32     this.element = $(element); 
     32    this.element = document.id(element); 
    3333    this.parent(options); 
    3434 
     
    7070    this.element.setStyle('backgroundPosition', css + ' 0px').title = Math.round(to) + '%'; 
    7171 
    72     var text = $(this.options.text); 
     72    var text = document.id(this.options.text); 
    7373    if (text) text.set('text', Math.round(to) + '%'); 
    7474 
  • branches/MootoolsFileManager-Update/plugins/MootoolsFileManager/mootools-filemanager/Source/Uploader/Swiff.Uploader.js

    r1309 r1319  
    126126 
    127127    // container options for Swiff class 
    128     this.options.container = this.box = new Element('span', {'class': 'swiff-uploader-box',events: { click: function(e) { e.stopPropagation(); } }}).inject($(this.options.container) || document.body); 
     128    this.options.container = this.box = new Element('span', {'class': 'swiff-uploader-box',events: { click: function(e) { e.stopPropagation(); } }}).inject(document.id(this.options.container) || document.body); 
    129129 
    130130    // target 
    131     this.target = $(this.options.target); 
     131    this.target = document.id(this.options.target); 
    132132    if(this.target) { 
    133133      var scroll = window.getScroll(); 
     
    226226  initializeSwiff: function() { 
    227227    this.appendCookieData();          // looks like there's a bit of trouble with xSetOptions, so we circumvent it by passing it all in one go through xInitialize 
    228         //if (typeof console !== 'undefined' && console.log) console.log('initializeSwiff: data count = ' + this.options.data.length + ' : ' + this.options.data); 
     228        // if (typeof console !== 'undefined' && console.log) console.log('initializeSwiff: data count = ' + this.options.data.length + ' : ' + this.options.data); 
    229229 
    230230    // extracted options for the swf 
     
    259259  reposition: function(coords) { 
    260260    // update coordinates, manual or automatically 
    261     coords = coords || (this.target && this.target.offsetHeight) 
    262       ? this.target.getCoordinates(this.box.getOffsetParent()) 
    263       : {top: window.getScrollTop(), left: 0, width: 40, height: 40}; 
     261    coords = coords || (this.target && this.target.offsetHeight) ? this.target.getCoordinates(this.box.getOffsetParent()) : {top: window.getScrollTop(), left: 0, width: 40, height: 40}; 
    264262    this.box.setStyles(coords); 
    265263    this.fireEvent('reposition', [coords, this.box, this.target]); 
     
    267265 
    268266  setOptions: function(options) { 
    269         //if (typeof console !== 'undefined' && console.log) console.log('Swiff.Uploader: BASE::setOptions'); 
     267        // if (typeof console !== 'undefined' && console.log) console.log('Swiff.Uploader: BASE::setOptions'); 
    270268    if (options) { 
    271269      if (options.url) options.url = Swiff.Uploader.qualifyPath(options.url); 
     
    274272      if (this.loaded) { 
    275273                this.remote('xSetOptions', options); 
    276           } 
     274    } 
    277275    } 
    278276    return this; 
     
    316314  appendCookieData: function() { 
    317315    var append = this.options.appendCookieData; 
    318         //if (typeof console !== 'undefined' && console.log) console.log('appendCookieData: ' + (1 * append) + ' / ' + append); 
     316        // if (typeof console !== 'undefined' && console.log) console.log('appendCookieData: ' + (1 * append) + ' / ' + append); 
    319317    if (!append) return; 
    320318 
     
    323321    document.cookie.split(/;\s*/).each(function(cookie) { 
    324322      cookie = cookie.split('='); 
    325           //if (typeof console !== 'undefined' && console.log) console.log('appendCookieData: cookie: "' + cookie[0] + '"(' + cookie.length + ') = "' + (cookie.length > 1 ? cookie[1] : '???') + '"'); 
     323      //if (typeof console !== 'undefined' && console.log) console.log('appendCookieData: cookie: "' + cookie[0] + '"(' + cookie.length + ') = "' + (cookie.length > 1 ? cookie[1] : '???') + '"'); 
    326324      if (cookie.length == 2) { 
    327325        //hash['\"' + decodeURIComponent(cookie[0]) + '\"'] = decodeURIComponent(cookie[1]);    // allow session IDs such as the ASP.NET ones, which come with a dot, etc. 
     
    331329 
    332330    var data = this.options.data || {}; 
    333     if (typeOf(append) === 'string') { 
    334                 data[append] = hash; 
    335         } 
    336     else { 
    337                 Object.append(data, hash); 
    338         } 
    339  
     331    if (typeOf(append) == 'string') { 
     332      data[append] = hash; 
     333  } else { 
     334    Object.append(data, hash); 
     335  } 
    340336    this.setOptions({data: data}); 
    341337  }, 
     
    484480      if (options.url) { 
    485481                options.url = Swiff.Uploader.qualifyPath(options.url); 
    486           } 
     482    } 
    487483      this.base.remote('xFileSetOptions', this.id, options); 
    488484      this.options = Object.merge(this.base.options, options); 
Note: See TracChangeset for help on using the changeset viewer.