Merge branch 'master' of http://git.roojs.com/roojs1
authorAlan Knowles <alan@roojs.com>
Thu, 3 Mar 2016 08:20:36 +0000 (16:20 +0800)
committerAlan Knowles <alan@roojs.com>
Thu, 3 Mar 2016 08:20:36 +0000 (16:20 +0800)
283 files changed:
Roo/bootstrap/DocumentManager.js
Roo/bootstrap/UploadCropbox.js
css-bootstrap/document-manager.css
docs/files.html
docs/json/roodata.json
docs/symbols/Array.html
docs/symbols/Date.html
docs/symbols/Function.html
docs/symbols/Number.html
docs/symbols/Roo.Ajax.html
docs/symbols/Roo.BasicDialog.html
docs/symbols/Roo.BasicLayoutRegion.html
docs/symbols/Roo.BorderLayout.html
docs/symbols/Roo.BoxComponent.html
docs/symbols/Roo.Button.html
docs/symbols/Roo.CalendarPanel.html
docs/symbols/Roo.ColorPalette.html
docs/symbols/Roo.Component.html
docs/symbols/Roo.ComponentMgr.html
docs/symbols/Roo.CompositeElement.html
docs/symbols/Roo.CompositeElementLite.html
docs/symbols/Roo.ContentPanel.html
docs/symbols/Roo.DDView.html
docs/symbols/Roo.DatePicker.html
docs/symbols/Roo.DialogManager.html
docs/symbols/Roo.DomHelper.html
docs/symbols/Roo.DomQuery.html
docs/symbols/Roo.DomTemplate.html
docs/symbols/Roo.Editor.html
docs/symbols/Roo.Element.html
docs/symbols/Roo.EventManager.html
docs/symbols/Roo.EventObject.html
docs/symbols/Roo.Fx.html
docs/symbols/Roo.GridPanel.html
docs/symbols/Roo.HtmlEditorCore.html
docs/symbols/Roo.JsonView.html
docs/symbols/Roo.KeyMap.html
docs/symbols/Roo.KeyNav.html
docs/symbols/Roo.Layer.html
docs/symbols/Roo.LayoutDialog.html
docs/symbols/Roo.LayoutManager.html
docs/symbols/Roo.LayoutRegion.html
docs/symbols/Roo.LoadMask.html
docs/symbols/Roo.Login.html
docs/symbols/Roo.MasterTemplate.html
docs/symbols/Roo.NestedLayoutPanel.html
docs/symbols/Roo.PagingToolbar.html
docs/symbols/Roo.QuickTips.html
docs/symbols/Roo.ReaderLayout.html
docs/symbols/Roo.Resizable.html
docs/symbols/Roo.Shadow.html
docs/symbols/Roo.SplitBar.AbsoluteLayoutAdapter.html
docs/symbols/Roo.SplitBar.BasicLayoutAdapter.html
docs/symbols/Roo.SplitBar.html
docs/symbols/Roo.SplitButton.html
docs/symbols/Roo.SplitLayoutRegion.html
docs/symbols/Roo.TabPanel.html
docs/symbols/Roo.TabPanelItem.html
docs/symbols/Roo.Template.html
docs/symbols/Roo.Toolbar.Button.html
docs/symbols/Roo.Toolbar.Fill.html
docs/symbols/Roo.Toolbar.Item.html
docs/symbols/Roo.Toolbar.Separator.html
docs/symbols/Roo.Toolbar.Spacer.html
docs/symbols/Roo.Toolbar.SplitButton.html
docs/symbols/Roo.Toolbar.TextItem.html
docs/symbols/Roo.Toolbar.html
docs/symbols/Roo.TreePanel.html
docs/symbols/Roo.UpdateManager.BasicRenderer.html
docs/symbols/Roo.UpdateManager.defaults.html
docs/symbols/Roo.UpdateManager.html
docs/symbols/Roo.View.html
docs/symbols/Roo.ViewPanel.html
docs/symbols/Roo.XComponent#_tree.html
docs/symbols/Roo.XComponent.event.events.html
docs/symbols/Roo.XComponent.html
docs/symbols/Roo.XTemplate.html
docs/symbols/Roo.bootstrap.Alert.html
docs/symbols/Roo.bootstrap.Body.html
docs/symbols/Roo.bootstrap.Button.html
docs/symbols/Roo.bootstrap.ButtonGroup.html
docs/symbols/Roo.bootstrap.Calendar.html
docs/symbols/Roo.bootstrap.CheckBox.html
docs/symbols/Roo.bootstrap.Column.html
docs/symbols/Roo.bootstrap.ComboBox.html
docs/symbols/Roo.bootstrap.ComboBox2.html
docs/symbols/Roo.bootstrap.ComboBox_old.html
docs/symbols/Roo.bootstrap.Component.html
docs/symbols/Roo.bootstrap.Container.html
docs/symbols/Roo.bootstrap.DateField.html
docs/symbols/Roo.bootstrap.DocumentManager.html
docs/symbols/Roo.bootstrap.DocumentViewer.html
docs/symbols/Roo.bootstrap.Element.html
docs/symbols/Roo.bootstrap.Form.html
docs/symbols/Roo.bootstrap.Graph.html
docs/symbols/Roo.bootstrap.Header.html
docs/symbols/Roo.bootstrap.HtmlEditor.html
docs/symbols/Roo.bootstrap.Img.html
docs/symbols/Roo.bootstrap.Input.html
docs/symbols/Roo.bootstrap.LayoutMasonry.html
docs/symbols/Roo.bootstrap.Link.html
docs/symbols/Roo.bootstrap.LocationPicker.html
docs/symbols/Roo.bootstrap.Menu.html
docs/symbols/Roo.bootstrap.MenuItem.html
docs/symbols/Roo.bootstrap.MenuMgr.html
docs/symbols/Roo.bootstrap.MenuSeparator.html
docs/symbols/Roo.bootstrap.MessageBar.html
docs/symbols/Roo.bootstrap.MessageBox.html
docs/symbols/Roo.bootstrap.Modal.html
docs/symbols/Roo.bootstrap.MonthField.html
docs/symbols/Roo.bootstrap.NavGroup.html
docs/symbols/Roo.bootstrap.NavHeaderbar.html
docs/symbols/Roo.bootstrap.NavItem.html
docs/symbols/Roo.bootstrap.NavSidebar.html
docs/symbols/Roo.bootstrap.NavSidebarItem.html
docs/symbols/Roo.bootstrap.NavSimplebar.html
docs/symbols/Roo.bootstrap.Navbar.html
docs/symbols/Roo.bootstrap.Pagination.html
docs/symbols/Roo.bootstrap.PaginationItem.html
docs/symbols/Roo.bootstrap.PagingToolbar.html
docs/symbols/Roo.bootstrap.Popover.html
docs/symbols/Roo.bootstrap.Progress.html
docs/symbols/Roo.bootstrap.ProgressBar.html
docs/symbols/Roo.bootstrap.Radio.html
docs/symbols/Roo.bootstrap.Row.html
docs/symbols/Roo.bootstrap.Slider.html
docs/symbols/Roo.bootstrap.TabGroup.html
docs/symbols/Roo.bootstrap.TabPanel.html
docs/symbols/Roo.bootstrap.Table.AbstractSelectionModel.html
docs/symbols/Roo.bootstrap.Table.RowSelectionModel.html
docs/symbols/Roo.bootstrap.Table.html
docs/symbols/Roo.bootstrap.TableBody.html
docs/symbols/Roo.bootstrap.TableCell.html
docs/symbols/Roo.bootstrap.TableRow.html
docs/symbols/Roo.bootstrap.TextArea.html
docs/symbols/Roo.bootstrap.TimeField.html
docs/symbols/Roo.bootstrap.Tooltip.html
docs/symbols/Roo.bootstrap.TriggerField.html
docs/symbols/Roo.bootstrap.UploadCropbox.html
docs/symbols/Roo.bootstrap.dash.NumberBox.html
docs/symbols/Roo.bootstrap.dash.TabBox.html
docs/symbols/Roo.bootstrap.dash.TabPane.html
docs/symbols/Roo.bootstrap.dash.html
docs/symbols/Roo.bootstrap.html
docs/symbols/Roo.bootstrap.htmleditor.ToolbarStandard.html
docs/symbols/Roo.bootstrap.htmleditor.html
docs/symbols/Roo.bootstrap.menu.Item.html
docs/symbols/Roo.bootstrap.menu.Menu.html
docs/symbols/Roo.bootstrap.menu.Separator.html
docs/symbols/Roo.bootstrap.menu.html
docs/symbols/Roo.data.ArrayReader.html
docs/symbols/Roo.data.Connection.html
docs/symbols/Roo.data.DataProxy.html
docs/symbols/Roo.data.DataReader.html
docs/symbols/Roo.data.HttpProxy.html
docs/symbols/Roo.data.JsonReader.html
docs/symbols/Roo.data.JsonStore.html
docs/symbols/Roo.data.MemoryProxy.html
docs/symbols/Roo.data.Node.html
docs/symbols/Roo.data.Record.html
docs/symbols/Roo.data.ScriptTagProxy.html
docs/symbols/Roo.data.SimpleStore.html
docs/symbols/Roo.data.SortTypes.html
docs/symbols/Roo.data.Store.html
docs/symbols/Roo.data.Tree.html
docs/symbols/Roo.data.XmlReader.html
docs/symbols/Roo.data.html
docs/symbols/Roo.dd.DD.html
docs/symbols/Roo.dd.DDProxy.html
docs/symbols/Roo.dd.DDTarget.html
docs/symbols/Roo.dd.DragDrop.html
docs/symbols/Roo.dd.DragDropMgr.html
docs/symbols/Roo.dd.DragSource.html
docs/symbols/Roo.dd.DragZone.html
docs/symbols/Roo.dd.DropTarget.html
docs/symbols/Roo.dd.DropZone.html
docs/symbols/Roo.dd.Registry.html
docs/symbols/Roo.dd.ScrollManager.html
docs/symbols/Roo.dd.StatusProxy.html
docs/symbols/Roo.dd.html
docs/symbols/Roo.form.Action.html
docs/symbols/Roo.form.BasicForm.html
docs/symbols/Roo.form.Checkbox.html
docs/symbols/Roo.form.Column.html
docs/symbols/Roo.form.ComboBox.html
docs/symbols/Roo.form.ComboBoxArray.Item.html
docs/symbols/Roo.form.ComboBoxArray.html
docs/symbols/Roo.form.ComboCheck.html
docs/symbols/Roo.form.DateField.html
docs/symbols/Roo.form.DayPicker.html
docs/symbols/Roo.form.DisplayField.html
docs/symbols/Roo.form.FCKeditor.html
docs/symbols/Roo.form.Field.html
docs/symbols/Roo.form.FieldSet.html
docs/symbols/Roo.form.Form.html
docs/symbols/Roo.form.GridField.html
docs/symbols/Roo.form.Hidden.html
docs/symbols/Roo.form.HtmlEditor.ToolbarContext.html
docs/symbols/Roo.form.HtmlEditor.ToolbarStandard.html
docs/symbols/Roo.form.HtmlEditor.html
docs/symbols/Roo.form.Layout.html
docs/symbols/Roo.form.MonthField.html
docs/symbols/Roo.form.NumberField.html
docs/symbols/Roo.form.Radio.html
docs/symbols/Roo.form.Row.html
docs/symbols/Roo.form.Select.html
docs/symbols/Roo.form.Signature.html
docs/symbols/Roo.form.TextArea.html
docs/symbols/Roo.form.TextField.html
docs/symbols/Roo.form.TriggerField.html
docs/symbols/Roo.form.VTypes.html
docs/symbols/Roo.form.html
docs/symbols/Roo.grid.AbstractGridView.html
docs/symbols/Roo.grid.AbstractSelectionModel.html
docs/symbols/Roo.grid.Calendar.html
docs/symbols/Roo.grid.CellSelectionModel.html
docs/symbols/Roo.grid.ColumnModel.html
docs/symbols/Roo.grid.EditorGrid.html
docs/symbols/Roo.grid.Grid.html
docs/symbols/Roo.grid.GridEditor.html
docs/symbols/Roo.grid.GridView.html
docs/symbols/Roo.grid.PropertyGrid.html
docs/symbols/Roo.grid.RowSelectionModel.html
docs/symbols/Roo.grid.html
docs/symbols/Roo.html
docs/symbols/Roo.lib.Ajax.html
docs/symbols/Roo.lib.Dom.html
docs/symbols/Roo.lib.html
docs/symbols/Roo.mailer.Block.html
docs/symbols/Roo.mailer.BodyContainer.html
docs/symbols/Roo.mailer.Column.html
docs/symbols/Roo.mailer.html
docs/symbols/Roo.menu.Adapter.html
docs/symbols/Roo.menu.BaseItem.html
docs/symbols/Roo.menu.CheckItem.html
docs/symbols/Roo.menu.ColorItem.html
docs/symbols/Roo.menu.ColorMenu.html
docs/symbols/Roo.menu.DateItem.html
docs/symbols/Roo.menu.DateMenu.html
docs/symbols/Roo.menu.Item.html
docs/symbols/Roo.menu.Menu.html
docs/symbols/Roo.menu.MenuMgr.html
docs/symbols/Roo.menu.Separator.html
docs/symbols/Roo.menu.TextItem.html
docs/symbols/Roo.menu.html
docs/symbols/Roo.state.CookieProvider.html
docs/symbols/Roo.state.Manager.html
docs/symbols/Roo.state.Provider.html
docs/symbols/Roo.state.html
docs/symbols/Roo.tree.AsyncTreeNode.html
docs/symbols/Roo.tree.ColumnTree.html
docs/symbols/Roo.tree.DefaultSelectionModel.html
docs/symbols/Roo.tree.MultiSelectionModel.html
docs/symbols/Roo.tree.TreeEditor.html
docs/symbols/Roo.tree.TreeFilter.html
docs/symbols/Roo.tree.TreeLoader.html
docs/symbols/Roo.tree.TreeNode.html
docs/symbols/Roo.tree.TreeNodeUI.html
docs/symbols/Roo.tree.TreePanel.html
docs/symbols/Roo.tree.TreeSorter.html
docs/symbols/Roo.tree.html
docs/symbols/Roo.util.CSS.html
docs/symbols/Roo.util.ClickRepeater.html
docs/symbols/Roo.util.DelayedTask.html
docs/symbols/Roo.util.Format.html
docs/symbols/Roo.util.JSON.html
docs/symbols/Roo.util.Math.html
docs/symbols/Roo.util.MixedCollection.html
docs/symbols/Roo.util.Observable.html
docs/symbols/Roo.util.TextMetrics.Instance.html
docs/symbols/Roo.util.TextMetrics.html
docs/symbols/Roo.util.html
docs/symbols/String.html
docs/symbols/_calls.html
docs/symbols/src/Roo_bootstrap_ComboBox.js.html
docs/symbols/src/Roo_bootstrap_DocumentManager.js.html
docs/symbols/src/Roo_bootstrap_NavItem.js.html
docs/symbols/src/Roo_bootstrap_Table.js.html
docs/symbols/src/Roo_bootstrap_Tooltip.js.html
docs/symbols/src/Roo_bootstrap_UploadCropbox.js.html
docs/symbols/this.html
roojs-bootstrap-debug.js
roojs-bootstrap.js

index 4761963..2032bd1 100644 (file)
@@ -203,23 +203,32 @@ Roo.extend(Roo.bootstrap.DocumentManager, Roo.bootstrap.Component,  {
         
         this.renderProgressDialog();
         
-//        var _this = this;
+        var _this = this;
         
-//        window.addEventListener("resize", function() { _this.refresh(); } );
+        window.addEventListener("resize", function() { _this.refresh(); } );
         
         this.fireEvent('initial', this);
     },
     
     renderProgressDialog : function()
     {
+        var _this = this;
+        
         this.progressDialog = new Roo.bootstrap.Modal({
             cls : 'roo-document-manager-progress-dialog',
             allow_close : false,
             title : '',
-            buttons : Roo.bootstrap.Modal.OK, 
+            buttons : [
+                {
+                    name  :'cancel',
+                    weight : 'danger',
+                    html : 'Cancel'
+                }
+            ], 
             listeners : { 
-                btnclick : function() { 
-                     this.hide();
+                btnclick : function() {
+                    _this.uploadCancel();
+                    this.hide();
                 }
             }
         });
@@ -229,7 +238,7 @@ Roo.extend(Roo.bootstrap.DocumentManager, Roo.bootstrap.Component,  {
         this.progress = new Roo.bootstrap.Progress({
             cls : 'roo-document-manager-progress',
             active : true,
-            striped : true,
+            striped : true
         });
         
         this.progress.render(this.progressDialog.getChildContainer());
@@ -245,11 +254,6 @@ Roo.extend(Roo.bootstrap.DocumentManager, Roo.bootstrap.Component,  {
         this.progressBar.render(this.progress.getChildContainer());
     },
     
-    updateProgressDialog : function()
-    {
-        
-    },
-    
     onUploaderClick : function(e)
     {
         e.preventDefault();
@@ -270,11 +274,11 @@ Roo.extend(Roo.bootstrap.DocumentManager, Roo.bootstrap.Component,  {
             }
         }, this);
         
-        this.arrange();
+        this.queue();
         
     },
     
-    arrange : function()
+    queue : function()
     {
         this.selectorEl.dom.value = '';
         
@@ -286,191 +290,67 @@ Roo.extend(Roo.bootstrap.DocumentManager, Roo.bootstrap.Component,  {
             this.files = this.files.slice(0, this.boxes);
         }
         
+        this.uploader.show();
+        
+        if(this.files.length > this.boxes - 1){
+            this.uploader.hide();
+        }
+        
         var _this = this;
         
+        var files = [];
+        
         Roo.each(this.files, function(file){
             
             if(typeof(file.id) != 'undefined' && file.id * 1 > 0){
+                var f = this.renderPreview(file);
+                files.push(f);
                 return;
             }
             
             this.delegates.push(
                 (function(){
-                    _this.uploadStart(file);
+                    _this.process(file);
                 }).createDelegate(this)
             );
             
-//            if(file.type.indexOf('image') == -1){
-//                documents.push(
-//                    (function(){
-//                        _this.uploadDocument(file);
-//                    }).createDelegate(this)
-//                );
-//                return;
-//            }
-//            
-//            images.push(
-//                (function(){
-//                    _this.uploadImage(file);
-//                }).createDelegate(this)
-//            );
         }, this);
         
+        this.files = files;
+        
         if(!this.delegates.length){
+            this.refresh();
             return;
         }
         
         this.progressBar.aria_valuemax = this.delegates.length;
         
-        var delegate = this.delegates.shift();
-        
-        delegate();
+        this.arrange();
         
         return;
-        
-        
-        
-        var xhr = new XMLHttpRequest();
-        
-        Roo.each(this.files, function(file, index){
-            if(typeof(file.id) != 'undefined' && file.id * 1 > 0){
-                return;
-            }
-            
-            file.xhr = xhr;
-            
-            this.managerEl.createChild({
-                tag : 'div',
-                cls : 'roo-document-manager-loading',
-                cn : [
-                    {
-                        tag : 'div',
-                        tooltip : file.name,
-                        cls : 'roo-document-manager-thumb',
-                        html : '<i class="fa fa-spinner fa-pulse"></i>'
-                    }
-                ]
-
-            });
-            
-        }, this);
-        
-        if(this.files.length > this.boxes - 1 ){
-            this.uploader.hide();
-        }
-        
-        var headers = {
-            "Accept": "application/json",
-            "Cache-Control": "no-cache",
-            "X-Requested-With": "XMLHttpRequest"
-        };
-        
-        xhr.open(this.method, this.url, true);
-        
-        for (var headerName in headers) {
-            var headerValue = headers[headerName];
-            if (headerValue) {
-                xhr.setRequestHeader(headerName, headerValue);
-            }
-        }
-        
-        var _this = this;
-        
-        xhr.onload = function()
-        {
-            _this.xhrOnLoad(xhr);
-        }
-        
-        xhr.onerror = function()
-        {
-            _this.xhrOnError(xhr);
+    },
+    
+    arrange : function()
+    {
+        if(!this.delegates.length){
+            this.progressDialog.hide();
+            this.refresh();
+            return;
         }
         
-        var formData = new FormData();
-
-        formData.append('returnHTML', 'NO');
+        var delegate = this.delegates.shift();
         
-        Roo.each(this.files, function(file, index){
-            
-            if(typeof(file.id) != 'undefined' && file.id * 1 > 0){
-                return;
-            }
-            
-            formData.append(this.getParamName(index), file, file.name);
-            
-        }, this);
+        this.progressDialog.show();
         
-        if(this.fireEvent('prepare', this, formData) != false){
-            xhr.send(formData);
-        };
+        this.progressDialog.setTitle((this.progressBar.aria_valuemax - this.delegates.length) + ' / ' + this.progressBar.aria_valuemax);
         
-    },
-    
-    getParamName : function(i)
-    {
-        if(!this.multiple){
-            return this.paramName;
-        }
+        this.progressBar.update(this.progressBar.aria_valuemax - this.delegates.length);
         
-        return this.paramName + "_" + i;
+        delegate();
     },
     
     refresh : function()
     {
-        Roo.each(this.managerEl.select('.roo-document-manager-loading', true).elements, function(el){
-            el.remove();
-        }, this);
-        
-        
-        var files = [];
-        
-        Roo.each(this.files, function(file){
-            
-            if(typeof(file.id) == 'undefined' || file.id * 1 < 1){
-                return;
-            }
-            
-            if(file.target){
-                files.push(file);
-                return;
-            }
-            
-            var previewEl = this.managerEl.createChild({
-                tag : 'div',
-                cls : 'roo-document-manager-preview',
-                cn : [
-                    {
-                        tag : 'div',
-                        tooltip : file.filename,
-                        cls : 'roo-document-manager-thumb',
-                        html : '<img src="' + baseURL +'/Images/Thumb/' + this.thumbSize + '/' + file.id + '/' + file.filename + '">'
-                    },
-                    {
-                        tag : 'button',
-                        cls : 'close',
-                        html : 'x'
-                    }
-                ]
-            });
-            
-            var close = previewEl.select('button.close', true).first();
-            
-            close.on('click', this.onRemove, this, file);
-            
-            file.target = previewEl;
-            
-            var image = previewEl.select('img', true).first();
-            
-            image.on('click', this.onClick, this, file);
-            
-            files.push(file);
-            
-            return;
-            
-        }, this);
-        
-        this.files = files;
-        
         this.uploader.show();
         
         if(this.files.length > this.boxes - 1){
@@ -535,8 +415,12 @@ Roo.extend(Roo.bootstrap.DocumentManager, Roo.bootstrap.Component,  {
     
     xhrOnLoad : function(xhr)
     {
+        Roo.each(this.managerEl.select('.roo-document-manager-loading', true).elements, function(el){
+            el.remove();
+        }, this);
+        
         if (xhr.readyState !== 4) {
-            this.refresh();
+            this.arrange();
             this.fireEvent('exception', this, xhr);
             return;
         }
@@ -544,27 +428,16 @@ Roo.extend(Roo.bootstrap.DocumentManager, Roo.bootstrap.Component,  {
         var response = Roo.decode(xhr.responseText);
         
         if(!response.success){
-            this.refresh();
+            this.arrange();
             this.fireEvent('exception', this, xhr);
             return;
         }
         
-        var i = 0;
+        var file = this.renderPreview(response.data);
         
-        Roo.each(this.files, function(file, index){
-            
-            if(typeof(file.id) != 'undefined' && file.id * 1 > 0){
-                return;
-            }
-            
-            this.files[index] = response.data[i];
-            i++;
-            
-            return;
-            
-        }, this);
+        this.files.push(file);
         
-        this.refresh();
+        this.arrange();
         
     },
     
@@ -575,21 +448,160 @@ Roo.extend(Roo.bootstrap.DocumentManager, Roo.bootstrap.Component,  {
         var response = Roo.decode(xhr.responseText);
           
         Roo.log(response);
+        
+        this.arrange();
     },
     
-    uploadStart : function(file)
+    process : function(file)
     {
-        Roo.log('upload start');
-        Roo.log(file);
-        
         if(this.editable && file.type.indexOf('image') != -1){
-            Roo.log(this.fireEvent('edit', this, file));
+            this.fireEvent('edit', this, file);
+            return;
+        }
+        
+        this.uploadStart(file, false);
+        
+        return;
+    },
+    
+    uploadStart : function(file, crop)
+    {
+        this.xhr = new XMLHttpRequest();
+        
+        if(typeof(file.id) != 'undefined' && file.id * 1 > 0){
+            this.arrange();
             return;
         }
         
+        file.xhr = this.xhr;
+            
+        this.managerEl.createChild({
+            tag : 'div',
+            cls : 'roo-document-manager-loading',
+            cn : [
+                {
+                    tag : 'div',
+                    tooltip : file.name,
+                    cls : 'roo-document-manager-thumb',
+                    html : '<i class="fa fa-circle-o-notch fa-spin"></i>'
+                }
+            ]
+
+        });
+
+        this.xhr.open(this.method, this.url, true);
+        
+        var headers = {
+            "Accept": "application/json",
+            "Cache-Control": "no-cache",
+            "X-Requested-With": "XMLHttpRequest"
+        };
         
+        for (var headerName in headers) {
+            var headerValue = headers[headerName];
+            if (headerValue) {
+                this.xhr.setRequestHeader(headerName, headerValue);
+            }
+        }
         
+        var _this = this;
+        
+        this.xhr.onload = function()
+        {
+            _this.xhrOnLoad(_this.xhr);
+        }
+        
+        this.xhr.onerror = function()
+        {
+            _this.xhrOnError(_this.xhr);
+        }
+        
+        var formData = new FormData();
+
+        formData.append('returnHTML', 'NO');
+        
+        if(crop){
+            formData.append('crop', crop);
+        }
+        
+        formData.append(this.paramName, file, file.name);
+        
+        if(this.fireEvent('prepare', this, formData) != false){
+            this.xhr.send(formData);
+        };
+    },
+    
+    uploadCancel : function()
+    {
+        this.xhr.abort();
+        
+        this.delegates = [];
+        
+        Roo.each(this.managerEl.select('.roo-document-manager-loading', true).elements, function(el){
+            el.remove();
+        }, this);
+        
+        this.arrange();
+    },
+    
+    renderPreview : function(file)
+    {
+        if(typeof(file.target) != 'undefined' && file.target){
+            return file;
+        }
+        
+        var previewEl = this.managerEl.createChild({
+            tag : 'div',
+            cls : 'roo-document-manager-preview',
+            cn : [
+                {
+                    tag : 'div',
+                    tooltip : file.filename,
+                    cls : 'roo-document-manager-thumb',
+                    html : '<img src="' + baseURL +'/Images/Thumb/' + this.thumbSize + '/' + file.id + '/' + file.filename + '">'
+                },
+                {
+                    tag : 'button',
+                    cls : 'close',
+                    html : '<i class="fa fa-times-circle"></i>'
+                }
+            ]
+        });
+
+        var close = previewEl.select('button.close', true).first();
+
+        close.on('click', this.onRemove, this, file);
+
+        file.target = previewEl;
+
+        var image = previewEl.select('img', true).first();
+        
+        var _this = this;
+        
+        image.dom.addEventListener("load", function(){ _this.onPreviewLoad(file, image); });
+        
+        image.on('click', this.onClick, this, file);
+        
+        return file;
+        
+    },
+    
+    onPreviewLoad : function(file, image)
+    {
+        if(typeof(file.target) == 'undefined' || !file.target){
+            return;
+        }
+        
+        var width = image.dom.naturalWidth || image.dom.width;
+        var height = image.dom.naturalHeight || image.dom.height;
+        
+        if(width > height){
+            file.target.addClass('wide');
+            return;
+        }
+        
+        file.target.addClass('tall');
         return;
+        
     }
-    
 });
index d1cd96d..f910280 100644 (file)
@@ -12,8 +12,6 @@
  * @cfg {Number} errorTimeout default 3000
  * @cfg {Number} minWidth default 300
  * @cfg {Number} minHeight default 300
- * @cfg {Number} documentMinWidth default 640
- * @cfg {Number} documentMinHeight default 800
  * @cfg {Array} buttons default ['rotateLeft', 'pictureBtn', 'rotateRight']
  * @cfg {Boolean} isDocument (true|false) default false
  * 
@@ -125,8 +123,6 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
     buttons : false,
     canvasLoaded : false,
     isDocument : false,
-    documentMinWidth : 640,
-    documentMinHeight : 800,
     
     getAutoCreate : function()
     {
@@ -342,12 +338,14 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         this.imageEl.OriginWidth = this.imageEl.naturalWidth || this.imageEl.width;
         this.imageEl.OriginHeight = this.imageEl.naturalHeight || this.imageEl.height;
         
+        this.baseRotateLevel();
+        
         if(this.isDocument){
             this.setThumbBoxSize();
         }
         
         this.setThumbBoxPosition();
-        this.baseRotateLevel();
+        
         this.baseScaleLevel();
         
         this.draw();
@@ -455,16 +453,32 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
     {
         var minScale = this.thumbEl.getWidth() / this.minWidth;
         
-        var width = Math.ceil(this.imageEl.OriginWidth * this.getScaleLevel());
-        var height = Math.ceil(this.imageEl.OriginHeight * this.getScaleLevel());
+        if(this.minWidth < this.minHeight){
+            minScale = this.thumbEl.getHeight() / this.minHeight;
+        }
+        
+        var width = Math.ceil(this.imageEl.OriginWidth * this.getScaleLevel() / minScale);
+        var height = Math.ceil(this.imageEl.OriginHeight * this.getScaleLevel() / minScale);
+        
+        if(
+                this.isDocument &&
+                (this.rotate == 0 || this.rotate == 180) && 
+                (
+                    width > this.imageEl.OriginWidth || 
+                    height > this.imageEl.OriginHeight ||
+                    (width < this.minWidth && height < this.minHeight)
+                )
+        ){
+            return false;
+        }
         
         if(
                 this.isDocument &&
+                (this.rotate == 90 || this.rotate == 270) && 
                 (
-                    width / minScale > this.imageEl.OriginWidth || 
-                    height / minScale > this.imageEl.OriginHeight ||
-                    width / minScale < this.documentMinWidth ||
-                    height / minScale < this.documentMinHeight
+                    width > this.imageEl.OriginWidth || 
+                    height > this.imageEl.OriginHeight ||
+                    (width < this.minHeight && height < this.minWidth)
                 )
         ){
             return false;
@@ -474,10 +488,10 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
                 !this.isDocument &&
                 (this.rotate == 0 || this.rotate == 180) && 
                 (
-                    width / minScale < this.minWidth || 
-                    width / minScale > this.imageEl.OriginWidth || 
-                    height / minScale < this.minHeight || 
-                    height / minScale > this.imageEl.OriginHeight
+                    width < this.minWidth || 
+                    width > this.imageEl.OriginWidth || 
+                    height < this.minHeight || 
+                    height > this.imageEl.OriginHeight
                 )
         ){
             return false;
@@ -487,10 +501,10 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
                 !this.isDocument &&
                 (this.rotate == 90 || this.rotate == 270) && 
                 (
-                    width / minScale < this.minHeight || 
-                    width / minScale > this.imageEl.OriginWidth || 
-                    height / minScale < this.minWidth || 
-                    height / minScale > this.imageEl.OriginHeight
+                    width < this.minHeight || 
+                    width > this.imageEl.OriginWidth || 
+                    height < this.minWidth || 
+                    height > this.imageEl.OriginHeight
                 )
         ){
             return false;
@@ -506,8 +520,8 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
             
             var minScale = this.thumbEl.getWidth() / this.minWidth;
             
-            var bw = this.canvasEl.width / this.getScaleLevel();
-            var bh = this.canvasEl.height / this.getScaleLevel();
+            var bw = Math.ceil(this.canvasEl.width / this.getScaleLevel());
+            var bh = Math.ceil(this.canvasEl.height / this.getScaleLevel());
             
             this.startScale = this.scale;
             
@@ -520,8 +534,8 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
                 }
                 
                 if(
-                        bw * this.getScaleLevel() < this.thumbEl.getHeight() ||
-                        bh * this.getScaleLevel() < this.thumbEl.getWidth()
+                        Math.ceil(bw * this.getScaleLevel()) < this.thumbEl.getHeight() ||
+                        Math.ceil(bh * this.getScaleLevel()) < this.thumbEl.getWidth()
                 ){
                     continue;
                 }
@@ -559,9 +573,9 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         if(!this.isDocument && (this.canvasEl.height < this.thumbEl.getWidth() || this.canvasEl.width < this.thumbEl.getHeight())){
             
             var minScale = this.thumbEl.getWidth() / this.minWidth;
-            
-            var bw = this.canvasEl.width / this.getScaleLevel();
-            var bh = this.canvasEl.height / this.getScaleLevel();
+        
+            var bw = Math.ceil(this.canvasEl.width / this.getScaleLevel());
+            var bh = Math.ceil(this.canvasEl.height / this.getScaleLevel());
             
             this.startScale = this.scale;
             
@@ -574,8 +588,8 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
                 }
                 
                 if(
-                        bw * this.getScaleLevel() < this.thumbEl.getHeight() ||
-                        bh * this.getScaleLevel() < this.thumbEl.getWidth()
+                        Math.ceil(bw * this.getScaleLevel()) < this.thumbEl.getHeight() ||
+                        Math.ceil(bh * this.getScaleLevel()) < this.thumbEl.getWidth()
                 ){
                     continue;
                 }
@@ -730,141 +744,180 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         canvas.width = this.minWidth;
         canvas.height = this.minHeight;
 
-//        var centerX = canvas.width / 2;
-//        var centerY = canvas.height / 2;
-//
-//        context.translate(centerX, centerY);
-                
         switch (this.rotate) {
             case 0 :
                 
                 var width = (this.thumbEl.getWidth() / this.getScaleLevel() > this.imageEl.OriginWidth) ? this.imageEl.OriginWidth : (this.thumbEl.getWidth() / this.getScaleLevel());
                 var height = (this.thumbEl.getHeight() / this.getScaleLevel() > this.imageEl.OriginHeight) ? this.imageEl.OriginHeight : (this.thumbEl.getHeight() / this.getScaleLevel());
                 
-                var x = (this.thumbEl.getLeft(true) > this.previewEl.getLeft(true)) ? 0 : (this.thumbEl.getLeft(true) - this.previewEl.getLeft(true));
-                var y = (this.thumbEl.getTop(true) > this.previewEl.getTop(true)) ? 0 : (this.thumbEl.getTop(true) - this.previewEl.getTop(true));
+                var x = (this.thumbEl.getLeft(true) > this.previewEl.getLeft(true)) ? 0 : ((this.previewEl.getLeft(true) - this.thumbEl.getLeft(true)) / this.getScaleLevel());
+                var y = (this.thumbEl.getTop(true) > this.previewEl.getTop(true)) ? 0 : ((this.previewEl.getTop(true) - this.thumbEl.getTop(true)) / this.getScaleLevel());
                 
-                if()
-//                var scaleWidth = (width > this.minWidth) ? (this.minWidth / width) : 1;
-//                var scaleHeight = (height > this.minHeight) ? (this.minHeight / height) : 1;
-//                
-//                Roo.log([scaleWidth, scaleHeight]);
+                var targetWidth = this.minWidth - 2 * x;
+                var targetHeight = this.minHeight - 2 * y;
                 
+                var scale = 1;
                 
-//                Roo.log([this.thumbEl.getLeft(true), this.previewEl.getLeft(true)]);
+                if((x == 0 && y == 0) || (x == 0 && y > 0)){
+                    scale = targetWidth / width;
+                }
                 
-//                if(this.isDocument && this.thumbEl.getLeft(true) < this.previewEl.getLeft(true)){
-//                    scaleWidth = 1;
-//                }
+                if(x > 0 && y == 0){
+                    scale = targetHeight / height;
+                }
                 
-//                Roo.log([this.thumbEl.getTop(true), this.previewEl.getTop(true)]);
+                if(x > 0 && y > 0){
+                    scale = targetWidth / width;
+                    
+                    if(width < height){
+                        scale = targetHeight / height;
+                    }
+                }
                 
-//                if(this.isDocument && this.thumbEl.getTop(true) < this.previewEl.getTop(true)){
-//                    scaleHeight = 1;
-//                }
+                context.scale(scale, scale);
                 
-//                Roo.log([scaleWidth, scaleHeight]);
+                var sx = Math.min(this.canvasEl.width - this.thumbEl.getWidth(), this.thumbEl.getLeft(true) - this.previewEl.getLeft(true));
+                var sy = Math.min(this.canvasEl.height - this.thumbEl.getHeight(), this.thumbEl.getTop(true) - this.previewEl.getTop(true));
+
+                sx = sx < 0 ? 0 : (sx / this.getScaleLevel());
+                sy = sy < 0 ? 0 : (sy / this.getScaleLevel());
+
+                context.drawImage(imageCanvas, sx, sy, width, height, x, y, width, height);
                 
-//                if(!this.isDocument){
-//                    context.scale(scaleWidth, scaleHeight);
-//                }
+                break;
+            case 90 : 
                 
+                var width = (this.thumbEl.getWidth() / this.getScaleLevel() > this.imageEl.OriginHeight) ? this.imageEl.OriginHeight : (this.thumbEl.getWidth() / this.getScaleLevel());
+                var height = (this.thumbEl.getHeight() / this.getScaleLevel() > this.imageEl.OriginWidth) ? this.imageEl.OriginWidth : (this.thumbEl.getHeight() / this.getScaleLevel());
                 
-                var sx = (this.thumbEl.getLeft(true) - this.previewEl.getLeft(true)) / this.getScaleLevel();
-                var sy = (this.thumbEl.getTop(true) - this.previewEl.getTop(true)) / this.getScaleLevel();
-
-                if(this.imageEl.OriginWidth - width < x){
-                    sx = this.imageEl.OriginWidth - width;
+                var x = (this.thumbEl.getLeft(true) > this.previewEl.getLeft(true)) ? 0 : ((this.previewEl.getLeft(true) - this.thumbEl.getLeft(true)) / this.getScaleLevel());
+                var y = (this.thumbEl.getTop(true) > this.previewEl.getTop(true)) ? 0 : ((this.previewEl.getTop(true) - this.thumbEl.getTop(true)) / this.getScaleLevel());
+                
+                var targetWidth = this.minWidth - 2 * x;
+                var targetHeight = this.minHeight - 2 * y;
+                
+                var scale = 1;
+                
+                if((x == 0 && y == 0) || (x == 0 && y > 0)){
+                    scale = targetWidth / width;
                 }
-
-                if(this.imageEl.OriginHeight - height < y){
-                    sy = this.imageEl.OriginHeight - height;
+                
+                if(x > 0 && y == 0){
+                    scale = targetHeight / height;
                 }
+                
+                if(x > 0 && y > 0){
+                    scale = targetWidth / width;
+                    
+                    if(width < height){
+                        scale = targetHeight / height;
+                    }
+                }
+                
+                context.scale(scale, scale);
+                
+                var sx = Math.min(this.canvasEl.width - this.thumbEl.getWidth(), this.thumbEl.getLeft(true) - this.previewEl.getLeft(true));
+                var sy = Math.min(this.canvasEl.height - this.thumbEl.getHeight(), this.thumbEl.getTop(true) - this.previewEl.getTop(true));
 
-                sx = sx < 0 ? 0 : sx;
-                sy = sy < 0 ? 0 : sy;
-
+                sx = sx < 0 ? 0 : (sx / this.getScaleLevel());
+                sy = sy < 0 ? 0 : (sy / this.getScaleLevel());
+                
+                sx += (this.imageEl.OriginWidth > this.imageEl.OriginHeight) ? Math.abs(this.imageEl.OriginWidth - this.imageEl.OriginHeight) : 0;
+                
                 context.drawImage(imageCanvas, sx, sy, width, height, x, y, width, height);
                 
                 break;
-            case 90 : 
+            case 180 :
                 
-                var width = (this.minWidth > this.imageEl.OriginHeight) ? this.imageEl.OriginHeight : this.minWidth;
-                var height = (this.minHeight > this.imageEl.OriginWidth) ? this.imageEl.OriginWidth : this.minHeight;
+                var width = (this.thumbEl.getWidth() / this.getScaleLevel() > this.imageEl.OriginWidth) ? this.imageEl.OriginWidth : (this.thumbEl.getWidth() / this.getScaleLevel());
+                var height = (this.thumbEl.getHeight() / this.getScaleLevel() > this.imageEl.OriginHeight) ? this.imageEl.OriginHeight : (this.thumbEl.getHeight() / this.getScaleLevel());
                 
-                var x = (this.imageEl.OriginWidth > this.imageEl.OriginHeight) ? Math.abs(this.imageEl.OriginWidth - this.imageEl.OriginHeight) : 0;
+                var x = (this.thumbEl.getLeft(true) > this.previewEl.getLeft(true)) ? 0 : ((this.previewEl.getLeft(true) - this.thumbEl.getLeft(true)) / this.getScaleLevel());
+                var y = (this.thumbEl.getTop(true) > this.previewEl.getTop(true)) ? 0 : ((this.previewEl.getTop(true) - this.thumbEl.getTop(true)) / this.getScaleLevel());
                 
-                context.drawImage(imageCanvas, x, 0, width, height, width / 2 * - 1, height / 2 * -1, width, height);
+                var targetWidth = this.minWidth - 2 * x;
+                var targetHeight = this.minHeight - 2 * y;
                 
-                break;
-            case 180 :
+                var scale = 1;
                 
-                var width = (this.minWidth > this.imageEl.OriginWidth) ? this.imageEl.OriginWidth : this.minWidth;
-                var height = (this.minHeight > this.imageEl.OriginHeight) ? this.imageEl.OriginHeight : this.minHeight;
+                if((x == 0 && y == 0) || (x == 0 && y > 0)){
+                    scale = targetWidth / width;
+                }
                 
-                var x = (this.imageEl.OriginWidth > this.imageEl.OriginHeight) ? 0 : Math.abs(this.imageEl.OriginWidth - this.imageEl.OriginHeight);
-                var y = (this.imageEl.OriginWidth > this.imageEl.OriginHeight) ? Math.abs(this.imageEl.OriginWidth - this.imageEl.OriginHeight) : 0;
+                if(x > 0 && y == 0){
+                    scale = targetHeight / height;
+                }
                 
-                context.drawImage(imageCanvas, x, y, width, height, width / 2 * - 1, height / 2 * -1, width, height);
+                if(x > 0 && y > 0){
+                    scale = targetWidth / width;
+                    
+                    if(width < height){
+                        scale = targetHeight / height;
+                    }
+                }
+                
+                context.scale(scale, scale);
+                
+                var sx = Math.min(this.canvasEl.width - this.thumbEl.getWidth(), this.thumbEl.getLeft(true) - this.previewEl.getLeft(true));
+                var sy = Math.min(this.canvasEl.height - this.thumbEl.getHeight(), this.thumbEl.getTop(true) - this.previewEl.getTop(true));
+
+                sx = sx < 0 ? 0 : (sx / this.getScaleLevel());
+                sy = sy < 0 ? 0 : (sy / this.getScaleLevel());
+
+                sx += (this.imageEl.OriginWidth > this.imageEl.OriginHeight) ? 0 : Math.abs(this.imageEl.OriginWidth - this.imageEl.OriginHeight);
+                sy += (this.imageEl.OriginWidth > this.imageEl.OriginHeight) ? Math.abs(this.imageEl.OriginWidth - this.imageEl.OriginHeight) : 0;
+                
+                context.drawImage(imageCanvas, sx, sy, width, height, x, y, width, height);
                 
                 break;
             case 270 :
                 
-                var width = (this.minWidth > this.imageEl.OriginHeight) ? this.imageEl.OriginHeight : this.minWidth;
-                var height = (this.minHeight > this.imageEl.OriginWidth) ? this.imageEl.OriginWidth : this.minHeight;
+                var width = (this.thumbEl.getWidth() / this.getScaleLevel() > this.imageEl.OriginHeight) ? this.imageEl.OriginHeight : (this.thumbEl.getWidth() / this.getScaleLevel());
+                var height = (this.thumbEl.getHeight() / this.getScaleLevel() > this.imageEl.OriginWidth) ? this.imageEl.OriginWidth : (this.thumbEl.getHeight() / this.getScaleLevel());
+                
+                var x = (this.thumbEl.getLeft(true) > this.previewEl.getLeft(true)) ? 0 : ((this.previewEl.getLeft(true) - this.thumbEl.getLeft(true)) / this.getScaleLevel());
+                var y = (this.thumbEl.getTop(true) > this.previewEl.getTop(true)) ? 0 : ((this.previewEl.getTop(true) - this.thumbEl.getTop(true)) / this.getScaleLevel());
                 
-                var y = (this.imageEl.OriginWidth > this.imageEl.OriginHeight) ? 0 : Math.abs(this.imageEl.OriginWidth - this.imageEl.OriginHeight);
+                var targetWidth = this.minWidth - 2 * x;
+                var targetHeight = this.minHeight - 2 * y;
                 
-                context.drawImage(imageCanvas, 0, y, width, height, width / 2 * - 1, height / 2 * -1, width, height);
+                var scale = 1;
+                
+                if((x == 0 && y == 0) || (x == 0 && y > 0)){
+                    scale = targetWidth / width;
+                }
+                
+                if(x > 0 && y == 0){
+                    scale = targetHeight / height;
+                }
+                
+                if(x > 0 && y > 0){
+                    scale = targetWidth / width;
+                    
+                    if(width < height){
+                        scale = targetHeight / height;
+                    }
+                }
+                
+                context.scale(scale, scale);
+                
+                var sx = Math.min(this.canvasEl.width - this.thumbEl.getWidth(), this.thumbEl.getLeft(true) - this.previewEl.getLeft(true));
+                var sy = Math.min(this.canvasEl.height - this.thumbEl.getHeight(), this.thumbEl.getTop(true) - this.previewEl.getTop(true));
+
+                sx = sx < 0 ? 0 : (sx / this.getScaleLevel());
+                sy = sy < 0 ? 0 : (sy / this.getScaleLevel());
+                
+                sy += (this.imageEl.OriginWidth > this.imageEl.OriginHeight) ? 0 : Math.abs(this.imageEl.OriginWidth - this.imageEl.OriginHeight);
+                
+                context.drawImage(imageCanvas, sx, sy, width, height, x, y, width, height);
                 
                 break;
             default : 
                 break;
         }
         
-        
-        window.open(canvas.toDataURL(this.cropType));
-        
-        
-        
-        return;
-        
-        
-        
-        
-        
-        var canvas = document.createElement("canvas");
-        
-        var context = canvas.getContext("2d");
-        
-        canvas.width = this.minWidth;
-        canvas.height = this.minHeight;
-        
-        var cropWidth = this.thumbEl.getWidth();
-        var cropHeight = this.thumbEl.getHeight();
-        
-        var x = this.thumbEl.getLeft(true) - this.previewEl.getLeft(true);
-        var y = this.thumbEl.getTop(true) - this.previewEl.getTop(true);
-        
-        if(this.canvasEl.width - cropWidth < x){
-            x = this.canvasEl.width - cropWidth;
-        }
-        
-        if(this.canvasEl.height - cropHeight < y){
-            y = this.canvasEl.height - cropHeight;
-        }
-        
-        x = x < 0 ? 0 : x;
-        y = y < 0 ? 0 : y;
-        
-        context.drawImage(this.canvasEl, x, y, cropWidth, cropHeight, 0, 0, canvas.width, canvas.height);
-        
         this.cropData = canvas.toDataURL(this.cropType);
         
-        window.open(this.cropData);
-        
-        return;
-        
         this.fireEvent('crop', this, this.cropData);
         
     },
@@ -931,13 +984,34 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
     
     baseScaleLevel : function()
     {
+        var width, height;
+        
         if(this.isDocument){
-            this.documentBaseScaleLevel();
+            
+            if(this.baseRotate == 6 || this.baseRotate == 8){
+            
+                height = this.thumbEl.getHeight();
+                this.baseScale = height / this.imageEl.OriginWidth;
+
+                if(this.imageEl.OriginHeight * this.baseScale > this.thumbEl.getWidth()){
+                    width = this.thumbEl.getWidth();
+                    this.baseScale = width / this.imageEl.OriginHeight;
+                }
+
+                return;
+            }
+
+            height = this.thumbEl.getHeight();
+            this.baseScale = height / this.imageEl.OriginHeight;
+
+            if(this.imageEl.OriginWidth * this.baseScale > this.thumbEl.getWidth()){
+                width = this.thumbEl.getWidth();
+                this.baseScale = width / this.imageEl.OriginWidth;
+            }
+
             return;
         }
         
-        var width, height;
-        
         if(this.baseRotate == 6 || this.baseRotate == 8){
             
             width = this.thumbEl.getHeight();
@@ -961,17 +1035,6 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
             return;
         }
         
-//        this.baseScale = this.thumbEl.getWidth() / this.minWidth;
-//        
-//        this.scale = Math.log(this.thumbEl.getWidth() / this.imageEl.OriginWidth / this.baseScale) / Math.log(1.1);
-//        
-//        if(this.imageEl.OriginHeight * this.getScaleLevel() < this.thumbEl.getHeight()){
-//            this.scale = Math.log(this.thumbEl.getHeight() / this.imageEl.OriginHeight / this.baseScale) / Math.log(1.1);
-//        }
-//        
-//        return;
-        
-        
         width = this.thumbEl.getWidth();
         this.baseScale = width / this.imageEl.OriginWidth;
         
@@ -995,27 +1058,6 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         return;
     },
     
-    documentBaseScaleLevel : function()
-    {
-        var width, height;
-        
-        height = this.thumbEl.getHeight();
-        this.baseScale = height / this.imageEl.OriginHeight;
-        
-        if(this.imageEl.OriginWidth > this.imageEl.OriginHeight){
-            width = this.thumbEl.getWidth();
-            this.baseScale = width / this.imageEl.OriginWidth;
-        }
-        
-        var minScale = this.thumbEl.getWidth() / this.minWidth;
-        
-        if(this.baseScale > minScale){
-            this.baseScale = minScale;
-        }
-        
-        return;
-    },
-    
     getScaleLevel : function()
     {
         return this.baseScale * Math.pow(1.1, this.scale);
index 9c2d9a5..c2be17b 100644 (file)
     margin-top: 10px;
 }
 
+.roo-document-manager-preview.wide {
+    width: 50%;
+}
+
 .roo-document-manager-thumb,
 .roo-document-manager-upload-btn {
     width : 100%;
     top: 0px;
     right: 3px;
     font-size: 20px;
-    opacity: 0.5;
+    opacity: 1;
 }
 
 .roo-document-manager-preview > .close:hover {
-    opacity: 0.75;
+    color: #333;
 }
 
-
 /*
 * sm
 */
         max-height: 80px;
     }
     
+    .roo-document-manager-preview.wide {
+        width: 16.66666666%;
+    }
+    
     .roo-document-manager-thumb,
     .roo-document-manager-upload-btn {
         line-height: 80px;
         max-height: 100px;
     }
     
+    .roo-document-manager-preview.wide {
+        width: 16.66666666%;
+    }
+    
     .roo-document-manager-thumb,
     .roo-document-manager-upload-btn {
         line-height: 100px;
index b9c08c3..cd2c958 100644 (file)
                </div>
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspeciton Doc Generator</a> undefined on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspeciton Doc Generator</a> undefined on Thu Mar 03 2016 16:15:38 GMT+0800 (HKT)
                        Based on 
-                       <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a> on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a> on Thu Mar 03 2016 16:15:38 GMT+0800 (HKT)
                </div>
        </body>
 </html>
\ No newline at end of file
index 1aae718..61dfd45 100644 (file)
       "top"
      ]
     },
+    {
+     "name": "editable",
+     "type": "Boolean",
+     "desc": "allow edit when upload a image default true",
+     "memberOf": "",
+     "optvals": [
+      "true",
+      "false"
+     ]
+    },
     {
      "name": "cls",
      "type": "String",
      "type": "function",
      "desc": "Fires after the component is disabled."
     },
+    {
+     "name": "edit",
+     "sig": "function (_self, file)\n{\n\n}",
+     "type": "function",
+     "desc": "Fire when upload a image and editable set to true"
+    },
     {
      "name": "enable",
      "sig": "function (_self)\n{\n\n}",
      "desc": "default ['rotateLeft', 'pictureBtn', 'rotateRight']",
      "memberOf": ""
     },
+    {
+     "name": "isDocument",
+     "type": "Boolean",
+     "desc": "default false",
+     "memberOf": "",
+     "optvals": [
+      "true",
+      "false"
+     ]
+    },
     {
      "name": "cls",
      "type": "String",
      "type": "function",
      "desc": "Fire when resize"
     },
+    {
+     "name": "rotate",
+     "sig": "function (_self, pos)\n{\n\n}",
+     "type": "function",
+     "desc": "Fire when rotate the image"
+    },
     {
      "name": "show",
      "sig": "function (_self)\n{\n\n}",
index 129956b..8342eda 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b2b85f0..bc425f8 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 05833a6..770778c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6405f5e..17270b8 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1afe223..f041da6 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 5e8bb6b..d0d9b15 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f1de3e6..07c9124 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4edd71d..c638ffe 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1be2772..2afc1f9 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4e2066f..536622b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4382d68..0745c29 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index a674060..f336052 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 902773a..970b8b0 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3f00f42..9ff2429 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 26e3e09..5f3ade9 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2a90098..e8459ba 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 133f366..19f740a 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 27de4e5..6944878 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 94d93bc..182d1de 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index bb44b7a..63368fd 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1867ce0..0a86e1e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 017a94b..867a002 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index db7f8fe..04947da 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 775419a..055a3fe 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index cc9d8fb..ef666e3 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c6d6eff..0c02654 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 70ddcf2..730156b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 86687a9..0dee6e2 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6b73897..cd209aa 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 96fdbeb..83a140d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index a01ae5b..7fb0022 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index a409eac..c2405f8 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d99c077..888f346 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6d1e49a..269af5f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 8dcee59..2f71dcf 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index a7c8566..695e1d4 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e7dd825..7b02193 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index bb26f0b..32e2c1e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 901b850..9cf9f9c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 37e36ce..9e0b401 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 676c3ee..0edfc5a 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ce94c94..9a8abb2 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d800938..c2c1bb7 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3462cec..b236362 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 25d9336..a81d45f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 7272e3b..7344f73 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 994e81e..10bf2ba 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c46eb8e..5323fd1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b373209..28a5957 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 0b5f852..4988c85 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4b91175..c758e4b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3397ad3..5a9b118 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d850165..abd6d84 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 8068507..b509e11 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f2eb149..42eed6d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ea4068a..0d9e96e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 807d16f..aaa4b6c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b47a262..3a2bf70 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 47e93d7..7919aa4 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 375fc73..5a0c87a 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6346032..c72fe1c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f42ec3d..1d84a90 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d44f8cb..8cf1908 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 90b0d4a..1a06802 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e75267f..3caede5 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 0739af3..206efae 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 8c17639..892d463 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e6a598a..3ea3f2d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d5861e5..98ef425 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b73b438..9af6cea 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2792ab7..988213a 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index dc04413..344a340 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 0499930..301b73c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 0a96144..541565c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3b0ac9b..1d60862 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2c1f4e3..2fa49ec 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 7be3ef6..8286cf9 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3c35dc4..e1ea231 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4206299..bf28ada 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 919b1f6..2b19cf8 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 5ba3196..e1a289a 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ac2d3b2..263fccd 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 21fb6e0..62dbf40 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 0738927..29ef2de 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 151bc43..3cf21c2 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 18e245e..e7ac210 100644 (file)
         
        
                <tr class="config-row expandable config-row-alt0 notInherited">
+                  <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
+                   <td class="sig">
+
+                       <a id="Roo.bootstrap.DocumentManager-cfg-editable" name=".editable"></a>
+                       <div class="fixedFont">
+                               <b  class="itemname">editable</b> : <a href="http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Boolean">Boolean</a>
+                               
+                               
+                       </div>
+                 
+                       <div class="mdesc">
+                           <div class="short">allow edit when upload a image default true</div> 
+                       </div>
+                       
+                       <div class="mdesc">
+                           <div class="long">
+                    allow edit when upload a image default true
+                    <BR/>Possible Values: true, false
+                </div> 
+                       </div>
+                       
+                       
+
+                   </td>
+                   <td class="msource">
+                       
+                       Roo.bootstrap.DocumentManager
+                               
+                   </td>
+               </tr>
+        
+       
+               <tr class="config-row expandable config-row-alt1 notInherited">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt1">
+               <tr class="config-row expandable config-row-alt0">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt0 notInherited">
+               <tr class="config-row expandable config-row-alt1 notInherited">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt1 notInherited">
+               <tr class="config-row expandable config-row-alt0 notInherited">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt0">
+               <tr class="config-row expandable config-row-alt1">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt1 notInherited">
+               <tr class="config-row expandable config-row-alt0 notInherited">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt0 notInherited">
+               <tr class="config-row expandable config-row-alt1 notInherited">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt1 notInherited">
+               <tr class="config-row expandable config-row-alt0 notInherited">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt0 notInherited">
+               <tr class="config-row expandable config-row-alt1 notInherited">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt1">
+               <tr class="config-row expandable config-row-alt0">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt0 notInherited">
+               <tr class="config-row expandable config-row-alt1 notInherited">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt1">
+               <tr class="config-row expandable config-row-alt0">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt0 notInherited">
+               <tr class="config-row expandable config-row-alt1 notInherited">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt1">
+               <tr class="config-row expandable config-row-alt0">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt0 notInherited">
+               <tr class="config-row expandable config-row-alt1 notInherited">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt1">
+               <tr class="config-row expandable config-row-alt0">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
             </td>
         </tr>
        
-          <tr class="method-row expandable config-row-alt0">
+          <tr class="method-row expandable config-row-alt0 notInherited">
+            <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
+           
+            <td class="sig">
+                <a id="Roo.bootstrap.DocumentManager-event-*edit"></a>
+                
+              <div class="fixedFont">
+               <b class="itemname">edit</b> (<a href="./Roo.bootstrap.DocumentManager.html#constructor" roo:cls="Roo.bootstrap.DocumentManager.html#constructor">Roo.bootstrap.DocumentManager</a> <B><i>this</i></B>, <a href="http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Object">Object</a> <B><i>file</i></B>) 
+               
+               </div>
+
+                <div class="mdesc">
+
+                   <div class="short">Fire when upload a image and editable set to true
+                  
+               </div> 
+                   
+                    <div class="long">
+                   
+                       Fire when upload a image and editable set to true
+                   
+                       
+                       
+               
+                       
+                               <dl class="detailList">
+                               <dt class="heading">Parameters:</dt>
+                               
+                                       <dt>
+                                               <span class="fixedFont"><a href="./Roo.bootstrap.DocumentManager.html#constructor" roo:cls="Roo.bootstrap.DocumentManager.html#constructor">Roo.bootstrap.DocumentManager</a></span> <b>this</b>
+                                               
+                                       </dt>
+                                       <dd></dd>
+                               
+                                       <dt>
+                                               <span class="fixedFont"><a href="http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Object">Object</a></span> <b>file</b>
+                                               
+                                       </dt>
+                                       <dd></dd>
+                               
+                               </dl>
+                       
+                       
+                       
+                       
+                       
+                       
+                       
+
+                   
+                   
+                    
+                    </div>                    
+                </div>
+
+            </td>
+            <td class="msource">
+                Roo.bootstrap.DocumentManager
+            </td>
+        </tr>
+       
+          <tr class="method-row expandable config-row-alt1">
             <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
            
             <td class="sig">
             </td>
         </tr>
        
-          <tr class="method-row expandable config-row-alt1 notInherited">
+          <tr class="method-row expandable config-row-alt0 notInherited">
             <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
            
             <td class="sig">
             </td>
         </tr>
        
-          <tr class="method-row expandable config-row-alt0">
+          <tr class="method-row expandable config-row-alt1">
             <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
            
             <td class="sig">
             </td>
         </tr>
        
-          <tr class="method-row expandable config-row-alt1 notInherited">
+          <tr class="method-row expandable config-row-alt0 notInherited">
             <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
            
             <td class="sig">
             </td>
         </tr>
        
-          <tr class="method-row expandable config-row-alt0 notInherited">
+          <tr class="method-row expandable config-row-alt1 notInherited">
             <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
            
             <td class="sig">
             </td>
         </tr>
        
-          <tr class="method-row expandable config-row-alt1 notInherited">
+          <tr class="method-row expandable config-row-alt0 notInherited">
             <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
            
             <td class="sig">
             </td>
         </tr>
        
-          <tr class="method-row expandable config-row-alt0 notInherited">
+          <tr class="method-row expandable config-row-alt1 notInherited">
             <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
            
             <td class="sig">
             </td>
         </tr>
        
-          <tr class="method-row expandable config-row-alt1 notInherited">
+          <tr class="method-row expandable config-row-alt0 notInherited">
             <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
            
             <td class="sig">
             </td>
         </tr>
        
-          <tr class="method-row expandable config-row-alt0">
+          <tr class="method-row expandable config-row-alt1">
             <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
            
             <td class="sig">
             </td>
         </tr>
        
-          <tr class="method-row expandable config-row-alt1">
+          <tr class="method-row expandable config-row-alt0">
             <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
            
             <td class="sig">
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3c0fdb5..47d8048 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 62b71b2..4fc5043 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2fca064..48e9514 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c8d016a..be7f7c7 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6884df0..f38166c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 55340c3..6f7cc65 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2e82a58..9929b12 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 38b0363..3efbeb0 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index baa9843..91b48ac 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 57509c2..b69aaf6 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ac6fd98..f74439f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 224ad04..8ce3aab 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6cf866a..8129d1d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index de188ee..801ff76 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 0ec09ca..4716345 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 7498a9d..5a86d3b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1f91459..508944d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 17b849e..05b7e9d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6896266..425f3ac 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9435c9b..814dbcb 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index bd77ab7..13139c6 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2d57dcb..e174a67 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e840a87..afe6561 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index a70490b..4ff9959 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e306b5f..f89cb5b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3376ec8..26c0e70 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 62f66a5..0dfbd39 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3656000..9a70892 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 907caea..ac5efab 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9e2db50..3f95d9e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index cdda12e..8bfc4f0 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b15c7e4..7dda8e2 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 871775f..0bb885c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f716d59..ebe6733 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 7c3384c..89a083a 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9e925e0..d692f19 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b8c6f48..db47482 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 06efbb2..be0f9fc 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 268a1ab..d189666 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c5c338a..3aec9f7 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 552516c..54d4009 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 78a96e0..57869eb 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6a229f3..b581213 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f54e95f..671b434 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ba80137..35c3fa0 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9fd128e..c0e8360 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 10b93eb..1cf819d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c073874..f2406e7 100644 (file)
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt1">
+               <tr class="config-row expandable config-row-alt1 notInherited">
+                  <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
+                   <td class="sig">
+
+                       <a id="Roo.bootstrap.UploadCropbox-cfg-isDocument" name=".isDocument"></a>
+                       <div class="fixedFont">
+                               <b  class="itemname">isDocument</b> : <a href="http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Boolean">Boolean</a>
+                               
+                               
+                       </div>
+                 
+                       <div class="mdesc">
+                           <div class="short">default false</div> 
+                       </div>
+                       
+                       <div class="mdesc">
+                           <div class="long">
+                    default false
+                    <BR/>Possible Values: true, false
+                </div> 
+                       </div>
+                       
+                       
+
+                   </td>
+                   <td class="msource">
+                       
+                       Roo.bootstrap.UploadCropbox
+                               
+                   </td>
+               </tr>
+        
+       
+               <tr class="config-row expandable config-row-alt0">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt0 notInherited">
+               <tr class="config-row expandable config-row-alt1 notInherited">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt1 notInherited">
+               <tr class="config-row expandable config-row-alt0 notInherited">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt0">
+               <tr class="config-row expandable config-row-alt1">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt1 notInherited">
+               <tr class="config-row expandable config-row-alt0 notInherited">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt0">
+               <tr class="config-row expandable config-row-alt1">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt1">
+               <tr class="config-row expandable config-row-alt0">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
                </tr>
         
        
-               <tr class="config-row expandable config-row-alt0">
+               <tr class="config-row expandable config-row-alt1">
                   <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
                    <td class="sig">
 
             </td>
         </tr>
        
-          <tr class="method-row expandable config-row-alt1">
+          <tr class="method-row expandable config-row-alt1 notInherited">
+            <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
+           
+            <td class="sig">
+                <a id="Roo.bootstrap.UploadCropbox-event-*rotate"></a>
+                
+              <div class="fixedFont">
+               <b class="itemname">rotate</b> (<a href="./Roo.bootstrap.UploadCropbox.html#constructor" roo:cls="Roo.bootstrap.UploadCropbox.html#constructor">Roo.bootstrap.UploadCropbox</a> <B><i>this</i></B>, <a href="./String.html#constructor" roo:cls="String.html#constructor">String</a> <B><i>pos</i></B>) 
+               
+               </div>
+
+                <div class="mdesc">
+
+                   <div class="short">Fire when rotate the image
+                  
+               </div> 
+                   
+                    <div class="long">
+                   
+                       Fire when rotate the image
+                   
+                       
+                       
+               
+                       
+                               <dl class="detailList">
+                               <dt class="heading">Parameters:</dt>
+                               
+                                       <dt>
+                                               <span class="fixedFont"><a href="./Roo.bootstrap.UploadCropbox.html#constructor" roo:cls="Roo.bootstrap.UploadCropbox.html#constructor">Roo.bootstrap.UploadCropbox</a></span> <b>this</b>
+                                               
+                                       </dt>
+                                       <dd></dd>
+                               
+                                       <dt>
+                                               <span class="fixedFont"><a href="./String.html#constructor" roo:cls="String.html#constructor">String</a></span> <b>pos</b>
+                                               
+                                       </dt>
+                                       <dd></dd>
+                               
+                               </dl>
+                       
+                       
+                       
+                       
+                       
+                       
+                       
+
+                   
+                   
+                    
+                    </div>                    
+                </div>
+
+            </td>
+            <td class="msource">
+                Roo.bootstrap.UploadCropbox
+            </td>
+        </tr>
+       
+          <tr class="method-row expandable config-row-alt0">
             <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
            
             <td class="sig">
             </td>
         </tr>
        
-          <tr class="method-row expandable config-row-alt0 notInherited">
+          <tr class="method-row expandable config-row-alt1 notInherited">
             <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
            
             <td class="sig">
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 67999b8..7db986a 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 40fd132..a9e7efa 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 31d724b..d75b388 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index a684d64..3c7fb9f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e4498df..2bac380 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 95e28eb..059ff84 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f181c24..b863e14 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 279c8b9..b74250f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ff7dad9..04efabe 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e6387a3..6e8207f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 5038cb3..0ed2cf1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 29d4394..bae4dc1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ed28f5b..4c36564 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index fc73c92..0d8247b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 154fc87..b18e1cc 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e4f6567..4316c45 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d1e97cf..581ca0f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1f3bf88..4804824 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index bbf48c5..6a529d4 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3d1826f..1d2a02e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e7692ca..313e344 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b15e59c..e9a9c5b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9a5723c..63b5f65 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 7b18fcb..df46971 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 5db5012..cb82d1a 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3b245d8..0450a4d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b87279e..ff20a17 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9aa9706..4aa792c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f3eb9e5..b359e55 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index be46376..762c56f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b784233..9a57ba8 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 869c388..13c645b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d582e59..c643f90 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2d78d42..e1bf047 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 5b59348..ab672ae 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d5a2e77..8228577 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 96417f4..42eae73 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b7e8107..c3038a7 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 551aeab..18432f3 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 54eb79a..5f1b3b7 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 85cc035..e0178b4 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 79fe7bf..9fea533 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3a562bc..a9425c5 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 7867539..51c45a9 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 7b7efce..0fb70c5 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 148d228..893a063 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 26223f0..0ed3e3e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6ae0581..b50724c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 91d1eac..7fb1110 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 5dbdbc9..e868a9e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 796a0b4..b818653 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4794cbc..6debba1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 87384e8..690e593 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3d80022..c0f6e4f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ce7cc34..4e29703 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index a4fac6f..e67766f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f5f5902..f6c42bc 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6f137d0..a20089b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1a8d012..bc170b8 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ca150e8..95774b1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index df95027..4ffd3c4 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 5180290..81786c3 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 81b6e34..5bf6132 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1572118..35f2427 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 076706b..f766c3f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2880dbc..953b53a 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2d11692..f7da0ce 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6a0d4d3..dbc6667 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 91ec55a..ca72bf6 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 7747293..dd42cdb 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ceae080..b25363f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b139397..7a313bd 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 834964d..424a13e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index a4a857f..107e204 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b520eb1..fc80ebc 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 803d33a..a774b7f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 690af25..59a0a00 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index be16a2d..8d835e9 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 239749e..9a9bcee 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 53251ac..06ba9e8 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ca9d439..8256f84 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c62cecd..5ed4197 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4a1558e..f6ae87e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b1ff7e1..62d9e92 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9c502fd..32f0bed 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index de283f9..d30cc8c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:12 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:36 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d558dbb..5a68d0f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ed81573..a906d14 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 0ecdf14..8c53be3 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index dbda050..4a7faa0 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c5589eb..d646f1b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ac4b8b0..4ced791 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c823d63..1bedbf2 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1df4ed5..e46c1d0 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 62b3fd7..d22054d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2824f52..5e27ca3 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f0cbf57..f97b1b1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c25b34f..8ed1bb2 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d288ce1..707aaad 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ced0add..b6e5bf3 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6e70119..8136226 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2b12481..adbbaba 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 5a3df22..10c1187 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 85491e3..2dc846f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4f71ee8..2895001 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 654efdf..d130118 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 7685eab..b9abda6 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 790451f..f7ffde6 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 95d130c..9a540c4 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 48be653..d8f28d0 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b2acc3c..e2a4af2 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f5a930e..ba6812d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9f9be23..ce96726 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e24e4d9..035ca3d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 42a26e4..e68a018 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3dd775a..0ef959b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index bbee528..5c027bb 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 8a3c117..bfd7559 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c3b9662..d3acb01 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ae8ff45..b4cff23 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index fdf4436..0610adf 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 332dd3a..40b5b41 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 5295241..1c1b150 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4c43861..b898f35 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index aeb8036..d603179 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3f1b166..ee67faa 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ce4b170..e5604f7 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index bc61f74..865450a 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c0c99af..5c7219f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index afd1e1f..3c0c40c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e795e46..a174e19 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 79704b6..36e7858 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 66219d1..e6b8c47 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 8479ceb..6d5cb70 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index bb74bec..50b369b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d613b4b..43bbf0d 100644 (file)
         </span><span class="jsdoc-var">this.syncValue</span><span class="jsdoc-syntax">();
         
         </span><span class="jsdoc-var">this.validate</span><span class="jsdoc-syntax">();
+        
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.tickable </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">Roo.isTouch</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">this.view.refresh</span><span class="jsdoc-syntax">();
+        }
     },
     
     </span><span class="jsdoc-var">inputEl</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">()
 
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">listHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.touchViewListGroup.getHeight</span><span class="jsdoc-syntax">();
         
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">_this </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
+        
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">firstChecked </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">listHeight </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">bodyHeight</span><span class="jsdoc-syntax">){
-            (</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() { </span><span class="jsdoc-var">firstChecked.findParent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'li'</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.scrollIntoView</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.touchViewListGroup.dom</span><span class="jsdoc-syntax">); })</span><span class="jsdoc-var">.defer</span><span class="jsdoc-syntax">(500);
+            (</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() { </span><span class="jsdoc-var">firstChecked.findParent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'li'</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.scrollIntoView</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">_this.touchViewListGroup.dom</span><span class="jsdoc-syntax">); })</span><span class="jsdoc-var">.defer</span><span class="jsdoc-syntax">(500);
         }
         
     },
index d6a0628..4006276 100644 (file)
@@ -18,6 +18,7 @@
  * @cfg {String} fieldLabel
  * @cfg {Number} labelWidth default 4
  * @cfg {String} labelAlign (left|top) default left
+ * @cfg {Boolean} editable (true|false) allow edit when upload a image default true
  * 
  * @constructor
  * Create a new DocumentManager
          * @param {Roo.bootstrap.DocumentManager} this
          * @param {Object} file
          */
-        </span><span class="jsdoc-string">&quot;click&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
+        </span><span class="jsdoc-string">&quot;click&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/**
+         * @event edit
+         * Fire when upload a image and editable set to true
+         * @param {Roo.bootstrap.DocumentManager} this
+         * @param {Object} file
+         */
+        </span><span class="jsdoc-string">&quot;edit&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
         
     </span><span class="jsdoc-syntax">});
 };
     </span><span class="jsdoc-var">fieldLabel </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">,
     </span><span class="jsdoc-var">labelWidth </span><span class="jsdoc-syntax">: 4,
     </span><span class="jsdoc-var">labelAlign </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'left'</span><span class="jsdoc-syntax">,
+    </span><span class="jsdoc-var">editable </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+    </span><span class="jsdoc-var">delegates </span><span class="jsdoc-syntax">: [],
     
     </span><span class="jsdoc-var">getAutoCreate </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
     {   
             </span><span class="jsdoc-var">this.selectorEl.attr</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'multiple'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'multiple'</span><span class="jsdoc-syntax">);
         }
         
-        </span><span class="jsdoc-var">this.selectorEl.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'change'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onSelect</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-var">this.selectorEl.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'change'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onFileSelected</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
         
         </span><span class="jsdoc-var">this.uploader </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-document-manager-uploader'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.first</span><span class="jsdoc-syntax">();
         </span><span class="jsdoc-var">this.uploader.setVisibilityMode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.Element.DISPLAY</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.originalDisplay </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'block'</span><span class="jsdoc-syntax">;
         
-        </span><span class="jsdoc-var">this.uploader.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'click'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onUpload</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-var">this.uploader.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'click'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onUploaderClick</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+        
+        </span><span class="jsdoc-var">this.renderProgressDialog</span><span class="jsdoc-syntax">();
         
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">_this </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
         
         </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'initial'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
     },
     
-    </span><span class="jsdoc-var">onUpload </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">)
+    </span><span class="jsdoc-var">renderProgressDialog </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
     {
-        </span><span class="jsdoc-var">e.preventDefault</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">_this </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
         
+        </span><span class="jsdoc-var">this.progressDialog </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.bootstrap.Modal</span><span class="jsdoc-syntax">({
+            </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-document-manager-progress-dialog'</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">allow_close </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">title </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">buttons </span><span class="jsdoc-syntax">: [
+                {
+                    </span><span class="jsdoc-var">name  </span><span class="jsdoc-syntax">:</span><span class="jsdoc-string">'cancel'</span><span class="jsdoc-syntax">,
+                    </span><span class="jsdoc-var">weight </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'danger'</span><span class="jsdoc-syntax">,
+                    </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'Cancel'
+                </span><span class="jsdoc-syntax">}
+            ], 
+            </span><span class="jsdoc-var">listeners </span><span class="jsdoc-syntax">: { 
+                </span><span class="jsdoc-var">btnclick </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
+                    </span><span class="jsdoc-var">_this.uploadCancel</span><span class="jsdoc-syntax">();
+                    </span><span class="jsdoc-var">this.hide</span><span class="jsdoc-syntax">();
+                }
+            }
+        });
+         
+        </span><span class="jsdoc-var">this.progressDialog.render</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">));
+         
+        </span><span class="jsdoc-var">this.progress </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.bootstrap.Progress</span><span class="jsdoc-syntax">({
+            </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-document-manager-progress'</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">active </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">striped </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
+        </span><span class="jsdoc-syntax">});
+        
+        </span><span class="jsdoc-var">this.progress.render</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.progressDialog.getChildContainer</span><span class="jsdoc-syntax">());
+        
+        </span><span class="jsdoc-var">this.progressBar </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.bootstrap.ProgressBar</span><span class="jsdoc-syntax">({
+            </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-document-manager-progress-bar'</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">aria_valuenow </span><span class="jsdoc-syntax">: 0,
+            </span><span class="jsdoc-var">aria_valuemin </span><span class="jsdoc-syntax">: 0,
+            </span><span class="jsdoc-var">aria_valuemax </span><span class="jsdoc-syntax">: 12,
+            </span><span class="jsdoc-var">panel </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'success'
+        </span><span class="jsdoc-syntax">});
+        
+        </span><span class="jsdoc-var">this.progressBar.render</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.progress.getChildContainer</span><span class="jsdoc-syntax">());
+    },
+    
+    </span><span class="jsdoc-var">onUploaderClick </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">)
+    {
+        </span><span class="jsdoc-var">e.preventDefault</span><span class="jsdoc-syntax">();
         </span><span class="jsdoc-var">this.selectorEl.dom.click</span><span class="jsdoc-syntax">();
-        
     },
     
-    </span><span class="jsdoc-var">onSelect </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">)
+    </span><span class="jsdoc-var">onFileSelected </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">)
     {
         </span><span class="jsdoc-var">e.preventDefault</span><span class="jsdoc-syntax">();
         
             }
         }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
         
-        </span><span class="jsdoc-var">this.process</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-var">this.queue</span><span class="jsdoc-syntax">();
         
     },
     
-    </span><span class="jsdoc-var">process </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
+    </span><span class="jsdoc-var">queue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
     {
         </span><span class="jsdoc-var">this.selectorEl.dom.value </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
         
             </span><span class="jsdoc-var">this.files </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.files.slice</span><span class="jsdoc-syntax">(0, </span><span class="jsdoc-var">this.boxes</span><span class="jsdoc-syntax">);
         }
         
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">xhr </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">XMLHttpRequest</span><span class="jsdoc-syntax">();
-        
-        </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.files</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file.id</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">file.id </span><span class="jsdoc-syntax">* 1 &gt; 0){
-                </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-            }
-            
-            </span><span class="jsdoc-var">file.xhr </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">xhr</span><span class="jsdoc-syntax">;
-            
-            </span><span class="jsdoc-var">this.managerEl.createChild</span><span class="jsdoc-syntax">({
-                </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">,
-                </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-document-manager-loading'</span><span class="jsdoc-syntax">,
-                </span><span class="jsdoc-var">cn </span><span class="jsdoc-syntax">: [
-                    {
-                        </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">,
-                        </span><span class="jsdoc-var">tooltip </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">file.name</span><span class="jsdoc-syntax">,
-                        </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-document-manager-thumb'</span><span class="jsdoc-syntax">,
-                        </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'&lt;i class=&quot;fa fa-spinner fa-pulse&quot;&gt;&lt;/i&gt;'
-                    </span><span class="jsdoc-syntax">}
-                ]
-
-            });
-            
-        }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-var">this.uploader.show</span><span class="jsdoc-syntax">();
         
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.files.length </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.boxes </span><span class="jsdoc-syntax">- 1 ){
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.files.length </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.boxes </span><span class="jsdoc-syntax">- 1){
             </span><span class="jsdoc-var">this.uploader.hide</span><span class="jsdoc-syntax">();
         }
         
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">headers </span><span class="jsdoc-syntax">= {
-            </span><span class="jsdoc-string">&quot;Accept&quot;</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;application/json&quot;</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-string">&quot;Cache-Control&quot;</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;no-cache&quot;</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-string">&quot;X-Requested-With&quot;</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;XMLHttpRequest&quot;
-        </span><span class="jsdoc-syntax">};
-        
-        </span><span class="jsdoc-var">xhr.open</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.method</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.url</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-        
-        </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">headerName </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">headers</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">headerValue </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">headers</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">headerName</span><span class="jsdoc-syntax">];
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">headerValue</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-var">xhr.setRequestHeader</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">headerName</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">headerValue</span><span class="jsdoc-syntax">);
-            }
-        }
-        
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">_this </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
         
-        </span><span class="jsdoc-var">xhr.onload </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
-        {
-            </span><span class="jsdoc-var">_this.xhrOnLoad</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">xhr</span><span class="jsdoc-syntax">);
-        }
-        
-        </span><span class="jsdoc-var">xhr.onerror </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
-        {
-            </span><span class="jsdoc-var">_this.xhrOnError</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">xhr</span><span class="jsdoc-syntax">);
-        }
-        
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">formData </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">FormData</span><span class="jsdoc-syntax">();
-
-        </span><span class="jsdoc-var">formData.append</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'returnHTML'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'NO'</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">files </span><span class="jsdoc-syntax">= [];
         
-        </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.files</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">){
+        </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.files</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">){
             
             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file.id</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">file.id </span><span class="jsdoc-syntax">* 1 &gt; 0){
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">f </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.renderPreview</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-var">files.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">);
                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
             }
             
-            </span><span class="jsdoc-var">formData.append</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getParamName</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">file.name</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-var">this.delegates.push</span><span class="jsdoc-syntax">(
+                (</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+                    </span><span class="jsdoc-var">_this.process</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">);
+                })</span><span class="jsdoc-var">.createDelegate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">)
+            );
             
         }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
         
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'prepare'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">formData</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-var">xhr.send</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">formData</span><span class="jsdoc-syntax">);
-        };
+        </span><span class="jsdoc-var">this.files </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">files</span><span class="jsdoc-syntax">;
         
-    },
-    
-    </span><span class="jsdoc-var">getParamName </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)
-    {
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.multiple</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.paramName</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.delegates.length</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">this.refresh</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
         }
         
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.paramName </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;_&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">this.progressBar.aria_valuemax </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.delegates.length</span><span class="jsdoc-syntax">;
+        
+        </span><span class="jsdoc-var">this.arrange</span><span class="jsdoc-syntax">();
+        
+        </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
     },
     
-    </span><span class="jsdoc-var">refresh </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
+    </span><span class="jsdoc-var">arrange </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
     {
-        </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.managerEl.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-document-manager-loading'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.elements</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-var">el.remove</span><span class="jsdoc-syntax">();
-        }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.delegates.length</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">this.progressDialog.hide</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-var">this.refresh</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+        }
         
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">delegate </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.delegates.shift</span><span class="jsdoc-syntax">();
         
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">files </span><span class="jsdoc-syntax">= [];
+        </span><span class="jsdoc-var">this.progressDialog.show</span><span class="jsdoc-syntax">();
         
-        </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.files</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">){
-            
-            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file.id</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">file.id </span><span class="jsdoc-syntax">* 1 &lt; 1){
-                </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-            }
-            
-            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file.target</span><span class="jsdoc-syntax">){
-                </span><span class="jsdoc-var">files.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-            }
-            
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">previewEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.managerEl.createChild</span><span class="jsdoc-syntax">({
-                </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">,
-                </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-document-manager-preview'</span><span class="jsdoc-syntax">,
-                </span><span class="jsdoc-var">cn </span><span class="jsdoc-syntax">: [
-                    {
-                        </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">,
-                        </span><span class="jsdoc-var">tooltip </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">file.filename</span><span class="jsdoc-syntax">,
-                        </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-document-manager-thumb'</span><span class="jsdoc-syntax">,
-                        </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'&lt;img src=&quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">baseURL </span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">'/Images/Thumb/' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.thumbSize </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'/' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">file.id </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'/' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">file.filename </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot;&gt;'
-                    </span><span class="jsdoc-syntax">},
-                    {
-                        </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'button'</span><span class="jsdoc-syntax">,
-                        </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'close'</span><span class="jsdoc-syntax">,
-                        </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'x'
-                    </span><span class="jsdoc-syntax">}
-                ]
-            });
-            
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">close </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">previewEl.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'button.close'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.first</span><span class="jsdoc-syntax">();
-            
-            </span><span class="jsdoc-var">close.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'click'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onRemove</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-var">file.target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">previewEl</span><span class="jsdoc-syntax">;
-            
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">image </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">previewEl.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'img'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.first</span><span class="jsdoc-syntax">();
-            
-            </span><span class="jsdoc-var">image.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'click'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onClick</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-var">files.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-            
-        }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-var">this.progressDialog.setTitle</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">this.progressBar.aria_valuemax </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.delegates.length</span><span class="jsdoc-syntax">) + </span><span class="jsdoc-string">' / ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.progressBar.aria_valuemax</span><span class="jsdoc-syntax">);
         
-        </span><span class="jsdoc-var">this.files </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">files</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">this.progressBar.update</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.progressBar.aria_valuemax </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.delegates.length</span><span class="jsdoc-syntax">);
         
+        </span><span class="jsdoc-var">delegate</span><span class="jsdoc-syntax">();
+    },
+    
+    </span><span class="jsdoc-var">refresh </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
+    {
         </span><span class="jsdoc-var">this.uploader.show</span><span class="jsdoc-syntax">();
         
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.files.length </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.boxes </span><span class="jsdoc-syntax">- 1){
     
     </span><span class="jsdoc-var">xhrOnLoad </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">xhr</span><span class="jsdoc-syntax">)
     {
+        </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.managerEl.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-document-manager-loading'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.elements</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">el.remove</span><span class="jsdoc-syntax">();
+        }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+        
         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">xhr.readyState </span><span class="jsdoc-syntax">!== 4) {
-            </span><span class="jsdoc-var">this.refresh</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-var">this.arrange</span><span class="jsdoc-syntax">();
             </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'exception'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">xhr</span><span class="jsdoc-syntax">);
             </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
         }
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">response </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.decode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">xhr.responseText</span><span class="jsdoc-syntax">);
         
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">response.success</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-var">this.refresh</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-var">this.arrange</span><span class="jsdoc-syntax">();
             </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'exception'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">xhr</span><span class="jsdoc-syntax">);
             </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
         }
         
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0;
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">file </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.renderPreview</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">response.data</span><span class="jsdoc-syntax">);
         
-        </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.files</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">){
-            
-            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file.id</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">file.id </span><span class="jsdoc-syntax">* 1 &gt; 0){
-                </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-            }
-            
-            </span><span class="jsdoc-var">this.files</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">response.data</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
-            </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++;
-            
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-            
-        }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-var">this.files.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">);
         
-        </span><span class="jsdoc-var">this.refresh</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-var">this.arrange</span><span class="jsdoc-syntax">();
         
     },
     
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">response </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.decode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">xhr.responseText</span><span class="jsdoc-syntax">);
           
         </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">response</span><span class="jsdoc-syntax">);
-    }
+        
+        </span><span class="jsdoc-var">this.arrange</span><span class="jsdoc-syntax">();
+    },
     
+    </span><span class="jsdoc-var">process </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">)
+    {
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.editable </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">file.type.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'image'</span><span class="jsdoc-syntax">) != -1){
+            </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'edit'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+        }
+        
+        </span><span class="jsdoc-var">this.uploadStart</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
+        
+        </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+    },
     
+    </span><span class="jsdoc-var">uploadStart </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">crop</span><span class="jsdoc-syntax">)
+    {
+        </span><span class="jsdoc-var">this.xhr </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">XMLHttpRequest</span><span class="jsdoc-syntax">();
+        
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file.id</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">file.id </span><span class="jsdoc-syntax">* 1 &gt; 0){
+            </span><span class="jsdoc-var">this.arrange</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+        }
+        
+        </span><span class="jsdoc-var">file.xhr </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.xhr</span><span class="jsdoc-syntax">;
+            
+        </span><span class="jsdoc-var">this.managerEl.createChild</span><span class="jsdoc-syntax">({
+            </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-document-manager-loading'</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">cn </span><span class="jsdoc-syntax">: [
+                {
+                    </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">,
+                    </span><span class="jsdoc-var">tooltip </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">file.name</span><span class="jsdoc-syntax">,
+                    </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-document-manager-thumb'</span><span class="jsdoc-syntax">,
+                    </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'&lt;i class=&quot;fa fa-circle-o-notch fa-spin&quot;&gt;&lt;/i&gt;'
+                </span><span class="jsdoc-syntax">}
+            ]
+
+        });
+
+        </span><span class="jsdoc-var">this.xhr.open</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.method</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.url</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
+        
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">headers </span><span class="jsdoc-syntax">= {
+            </span><span class="jsdoc-string">&quot;Accept&quot;</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;application/json&quot;</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-string">&quot;Cache-Control&quot;</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;no-cache&quot;</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-string">&quot;X-Requested-With&quot;</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;XMLHttpRequest&quot;
+        </span><span class="jsdoc-syntax">};
+        
+        </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">headerName </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">headers</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">headerValue </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">headers</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">headerName</span><span class="jsdoc-syntax">];
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">headerValue</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-var">this.xhr.setRequestHeader</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">headerName</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">headerValue</span><span class="jsdoc-syntax">);
+            }
+        }
+        
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">_this </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
+        
+        </span><span class="jsdoc-var">this.xhr.onload </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
+        {
+            </span><span class="jsdoc-var">_this.xhrOnLoad</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">_this.xhr</span><span class="jsdoc-syntax">);
+        }
+        
+        </span><span class="jsdoc-var">this.xhr.onerror </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
+        {
+            </span><span class="jsdoc-var">_this.xhrOnError</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">_this.xhr</span><span class="jsdoc-syntax">);
+        }
+        
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">formData </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">FormData</span><span class="jsdoc-syntax">();
+
+        </span><span class="jsdoc-var">formData.append</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'returnHTML'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'NO'</span><span class="jsdoc-syntax">);
+        
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">crop</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">formData.append</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'crop'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">crop</span><span class="jsdoc-syntax">);
+        }
+        
+        </span><span class="jsdoc-var">formData.append</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.paramName</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">file.name</span><span class="jsdoc-syntax">);
+        
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'prepare'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">formData</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">this.xhr.send</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">formData</span><span class="jsdoc-syntax">);
+        };
+    },
     
-});</span></code></body></html>
\ No newline at end of file
+    </span><span class="jsdoc-var">uploadCancel </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
+    {
+        </span><span class="jsdoc-var">this.xhr.abort</span><span class="jsdoc-syntax">();
+        
+        </span><span class="jsdoc-var">this.delegates </span><span class="jsdoc-syntax">= [];
+        
+        </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.managerEl.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-document-manager-loading'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.elements</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">el.remove</span><span class="jsdoc-syntax">();
+        }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+        
+        </span><span class="jsdoc-var">this.arrange</span><span class="jsdoc-syntax">();
+    },
+    
+    </span><span class="jsdoc-var">renderPreview </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">)
+    {
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file.target</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">file.target</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">;
+        }
+        
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">previewEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.managerEl.createChild</span><span class="jsdoc-syntax">({
+            </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-document-manager-preview'</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">cn </span><span class="jsdoc-syntax">: [
+                {
+                    </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">,
+                    </span><span class="jsdoc-var">tooltip </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">file.filename</span><span class="jsdoc-syntax">,
+                    </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-document-manager-thumb'</span><span class="jsdoc-syntax">,
+                    </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'&lt;img src=&quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">baseURL </span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">'/Images/Thumb/' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.thumbSize </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'/' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">file.id </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'/' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">file.filename </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot;&gt;'
+                </span><span class="jsdoc-syntax">},
+                {
+                    </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'button'</span><span class="jsdoc-syntax">,
+                    </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'close'</span><span class="jsdoc-syntax">,
+                    </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'&lt;i class=&quot;fa fa-times-circle&quot;&gt;&lt;/i&gt;'
+                </span><span class="jsdoc-syntax">}
+            ]
+        });
+
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">close </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">previewEl.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'button.close'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.first</span><span class="jsdoc-syntax">();
+
+        </span><span class="jsdoc-var">close.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'click'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onRemove</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">);
+
+        </span><span class="jsdoc-var">file.target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">previewEl</span><span class="jsdoc-syntax">;
+
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">image </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">previewEl.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'img'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.first</span><span class="jsdoc-syntax">();
+        
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">_this </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
+        
+        </span><span class="jsdoc-var">image.dom.addEventListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;load&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){ </span><span class="jsdoc-var">_this.onPreviewLoad</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">image</span><span class="jsdoc-syntax">); });
+        
+        </span><span class="jsdoc-var">image.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'click'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onClick</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">);
+        
+        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">;
+        
+    },
+    
+    </span><span class="jsdoc-var">onPreviewLoad </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">image</span><span class="jsdoc-syntax">)
+    {
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file.target</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">file.target</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+        }
+        
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">image.dom.naturalWidth </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">image.dom.width</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">image.dom.naturalHeight </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">image.dom.height</span><span class="jsdoc-syntax">;
+        
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">file.target.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'wide'</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+        }
+        
+        </span><span class="jsdoc-var">file.target.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'tall'</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+        
+    }
+});
+</span></code></body></html>
\ No newline at end of file
index fd968cd..4d3fa6d 100644 (file)
     </span><span class="jsdoc-syntax">},
     </span><span class="jsdoc-var">setActive </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">state</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fire</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">is_was_active</span><span class="jsdoc-syntax">)
     {
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.active </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">state </span><span class="jsdoc-syntax">&amp; </span><span class="jsdoc-var">this.navId</span><span class="jsdoc-syntax">) {
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.active </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">state </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.navId</span><span class="jsdoc-syntax">) {
             </span><span class="jsdoc-var">this.was_active </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nv </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.bootstrap.NavGroup.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.navId</span><span class="jsdoc-syntax">);
             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">nv</span><span class="jsdoc-syntax">) {
index 22b11d2..53aa69a 100644 (file)
         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cm.getColumnCount</span><span class="jsdoc-syntax">(); </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
             
             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">config </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cm.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
-                    
+            
             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">= {
                 </span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'th'</span><span class="jsdoc-syntax">,
                 </span><span class="jsdoc-var">style </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">,
                 </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cm.getColumnHeader</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)
             };
             
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">hh </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
+            
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config.lgHeader</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">){
+                </span><span class="jsdoc-var">hh </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">'&lt;span class=&quot;hidden-xs hidden-sm hidden-md&quot;&gt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">config.lgHeader </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/span&gt;'</span><span class="jsdoc-syntax">;
+            }
+            
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config.mdHeader</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">){
+                </span><span class="jsdoc-var">hh </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">'&lt;span class=&quot;hidden-xs hidden-sm hidden-lg&quot;&gt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">config.mdHeader </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/span&gt;'</span><span class="jsdoc-syntax">;
+            }
+            
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config.smHeader</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">){
+                </span><span class="jsdoc-var">hh </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">'&lt;span class=&quot;hidden-xs hidden-md hidden-lg&quot;&gt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">config.smHeader </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/span&gt;'</span><span class="jsdoc-syntax">;
+            }
+            
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config.xsHeader</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">){
+                </span><span class="jsdoc-var">hh </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">'&lt;span class=&quot;hidden-sm hidden-md hidden-lg&quot;&gt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">config.xsHeader </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&lt;/span&gt;'</span><span class="jsdoc-syntax">;
+            }
+            
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">hh.length</span><span class="jsdoc-syntax">){
+                </span><span class="jsdoc-var">c.html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">hh</span><span class="jsdoc-syntax">;
+            }
+            
             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config.tooltip</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">){
                 </span><span class="jsdoc-var">c.tooltip </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">config.tooltip</span><span class="jsdoc-syntax">;
             }
index eddb22c..0b68117 100644 (file)
         //this.el.setXY([0,0]);
         </span><span class="jsdoc-var">this.el.show</span><span class="jsdoc-syntax">();
         </span><span class="jsdoc-comment">//this.el.dom.style.display='block';
-        </span><span class="jsdoc-var">this.el.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">placement</span><span class="jsdoc-syntax">);
         
-        </span><span class="jsdoc-comment">//this.el.appendTo(on_el);
+        //this.el.appendTo(on_el);
         
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getPosition</span><span class="jsdoc-syntax">();
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">box </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.getBox</span><span class="jsdoc-syntax">();
         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">autoPlace</span><span class="jsdoc-syntax">) {
             </span><span class="jsdoc-comment">// fixme..
         </span><span class="jsdoc-syntax">}
+        
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">align </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.bootstrap.Tooltip.alignment</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">placement</span><span class="jsdoc-syntax">];
+        
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">xy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.getAlignToXY</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.bindEl</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">align</span><span class="jsdoc-syntax">[0], </span><span class="jsdoc-var">align</span><span class="jsdoc-syntax">[1]);
+        
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">placement </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'top' </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">placement </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'bottom'</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">xy</span><span class="jsdoc-syntax">[0] &lt; 0){
+                </span><span class="jsdoc-var">placement </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'right'</span><span class="jsdoc-syntax">;
+            }
+            
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">xy</span><span class="jsdoc-syntax">[0] + </span><span class="jsdoc-var">this.el.getWidth</span><span class="jsdoc-syntax">() &gt; </span><span class="jsdoc-var">Roo.lib.Dom.getViewWidth</span><span class="jsdoc-syntax">()){
+                </span><span class="jsdoc-var">placement </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'left'</span><span class="jsdoc-syntax">;
+            }
+        }
+        
+        </span><span class="jsdoc-var">align </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.bootstrap.Tooltip.alignment</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">placement</span><span class="jsdoc-syntax">];
+        
         </span><span class="jsdoc-var">this.el.alignTo</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.bindEl</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">align</span><span class="jsdoc-syntax">[0],</span><span class="jsdoc-var">align</span><span class="jsdoc-syntax">[1]);
         </span><span class="jsdoc-comment">//var arrow = this.el.select('.arrow',true).first();
         //arrow.set(align[2], 
         
+        </span><span class="jsdoc-var">this.el.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">placement</span><span class="jsdoc-syntax">);
+        
         </span><span class="jsdoc-var">this.el.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'in fade'</span><span class="jsdoc-syntax">);
+        
         </span><span class="jsdoc-var">this.hoverState </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
         
         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.el.hasClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'fade'</span><span class="jsdoc-syntax">)) {
index 8a68870..04a5aa8 100644 (file)
@@ -13,6 +13,7 @@
  * @cfg {Number} minWidth default 300
  * @cfg {Number} minHeight default 300
  * @cfg {Array} buttons default ['rotateLeft', 'pictureBtn', 'rotateRight']
+ * @cfg {Boolean} isDocument (true|false) default false
  * 
  * @constructor
  * Create a new UploadCropbox
          * Fire when resize
          * @param {Roo.bootstrap.UploadCropbox} this
          */
-        </span><span class="jsdoc-string">&quot;resize&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
-        
+        </span><span class="jsdoc-string">&quot;resize&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/**
+         * @event rotate
+         * Fire when rotate the image
+         * @param {Roo.bootstrap.UploadCropbox} this
+         * @param {String} pos
+         */
+        </span><span class="jsdoc-string">&quot;rotate&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
     </span><span class="jsdoc-syntax">});
     
     </span><span class="jsdoc-var">this.buttons </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.buttons </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.bootstrap.UploadCropbox.footer.STANDARD</span><span class="jsdoc-syntax">;
     </span><span class="jsdoc-var">cropType </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'image/jpeg'</span><span class="jsdoc-syntax">,
     </span><span class="jsdoc-var">buttons </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
     </span><span class="jsdoc-var">canvasLoaded </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
+    </span><span class="jsdoc-var">isDocument </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
     
     </span><span class="jsdoc-var">getAutoCreate </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
     {
         </span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.imageEl.naturalWidth </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.imageEl.width</span><span class="jsdoc-syntax">;
         </span><span class="jsdoc-var">this.imageEl.OriginHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.imageEl.naturalHeight </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.imageEl.height</span><span class="jsdoc-syntax">;
         
-        </span><span class="jsdoc-var">this.setThumbBoxPosition</span><span class="jsdoc-syntax">();
         </span><span class="jsdoc-var">this.baseRotateLevel</span><span class="jsdoc-syntax">();
+        
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.isDocument</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">this.setThumbBoxSize</span><span class="jsdoc-syntax">();
+        }
+        
+        </span><span class="jsdoc-var">this.setThumbBoxPosition</span><span class="jsdoc-syntax">();
+        
         </span><span class="jsdoc-var">this.baseScaleLevel</span><span class="jsdoc-syntax">();
         
         </span><span class="jsdoc-var">this.draw</span><span class="jsdoc-syntax">();
         </span><span class="jsdoc-var">this.dragable </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
         </span><span class="jsdoc-var">this.pinching </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
         
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.isDocument </span><span class="jsdoc-syntax">&amp;&amp; (</span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() || </span><span class="jsdoc-var">this.canvasEl.height </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">())){
+            </span><span class="jsdoc-var">this.dragable </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+        }
+        
         </span><span class="jsdoc-var">this.mouseX </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.isTouch </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">e.browserEvent.touches</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.pageX </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">e.getPageX</span><span class="jsdoc-syntax">();
         </span><span class="jsdoc-var">this.mouseY </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.isTouch </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">e.browserEvent.touches</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.pageY </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">e.getPageY</span><span class="jsdoc-syntax">();
         
     {
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">minScale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">;
         
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.imageEl.OriginHeight </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.minWidth </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">minScale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">;
+        }
+        
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">minScale</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.imageEl.OriginHeight </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">minScale</span><span class="jsdoc-syntax">);
         
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(
+                </span><span class="jsdoc-var">this.isDocument </span><span class="jsdoc-syntax">&amp;&amp;
                 (</span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">== 0 || </span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">== 180) &amp;&amp; 
                 (
-                    </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">minScale </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.minWidth </span><span class="jsdoc-syntax">|| 
-                    </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">minScale </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">|| 
-                    </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">minScale </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">|| 
-                    </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">minScale </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight
+                    </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">|| 
+                    </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight </span><span class="jsdoc-syntax">||
+                    (</span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.minWidth </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">)
+                )
+        ){
+            </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+        }
+        
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(
+                </span><span class="jsdoc-var">this.isDocument </span><span class="jsdoc-syntax">&amp;&amp;
+                (</span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">== 90 || </span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">== 270) &amp;&amp; 
+                (
+                    </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">|| 
+                    </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight </span><span class="jsdoc-syntax">||
+                    (</span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">)
+                )
+        ){
+            </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+        }
+        
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(
+                !</span><span class="jsdoc-var">this.isDocument </span><span class="jsdoc-syntax">&amp;&amp;
+                (</span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">== 0 || </span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">== 180) &amp;&amp; 
+                (
+                    </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.minWidth </span><span class="jsdoc-syntax">|| 
+                    </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">|| 
+                    </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">|| 
+                    </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight
                 </span><span class="jsdoc-syntax">)
         ){
             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
         }
         
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(
+                !</span><span class="jsdoc-var">this.isDocument </span><span class="jsdoc-syntax">&amp;&amp;
                 (</span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">== 90 || </span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">== 270) &amp;&amp; 
                 (
-                    </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">minScale </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">|| 
-                    </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">minScale </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">|| 
-                    </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">minScale </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.minWidth </span><span class="jsdoc-syntax">|| 
-                    </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">minScale </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight
+                    </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">|| 
+                    </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">|| 
+                    </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.minWidth </span><span class="jsdoc-syntax">|| 
+                    </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight
                 </span><span class="jsdoc-syntax">)
         ){
             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
     
     </span><span class="jsdoc-var">onRotateLeft </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">)
     {   
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">minScale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">;
-        
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.height </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() || </span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">()){
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.isDocument </span><span class="jsdoc-syntax">&amp;&amp; (</span><span class="jsdoc-var">this.canvasEl.height </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() || </span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">())){
             
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bw </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">();
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bh </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.canvasEl.height </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">minScale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">;
+            
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bw </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bh </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.height </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
             
             </span><span class="jsdoc-var">this.startScale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.scale</span><span class="jsdoc-syntax">;
             
                 }
                 
                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(
-                        </span><span class="jsdoc-var">bw </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">() &lt; </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">() ||
-                        </span><span class="jsdoc-var">bh </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">() &lt; </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">()
+                        </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">bw </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">()) &lt; </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">() ||
+                        </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">bh </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">()) &lt; </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">()
                 ){
                     </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
                 }
         
         </span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">&lt; 90) ? 270 : </span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">- 90;
 
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.isDocument</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">this.setThumbBoxSize</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-var">this.setThumbBoxPosition</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-var">this.setCanvasPosition</span><span class="jsdoc-syntax">();
+        }
+        
         </span><span class="jsdoc-var">this.draw</span><span class="jsdoc-syntax">();
         
+        </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'rotate'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'left'</span><span class="jsdoc-syntax">);
+        
     },
     
     </span><span class="jsdoc-var">onRotateRight </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">)
     {
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">minScale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">;
-        
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.height </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() || </span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">()){
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.isDocument </span><span class="jsdoc-syntax">&amp;&amp; (</span><span class="jsdoc-var">this.canvasEl.height </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() || </span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">())){
             
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bw </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">();
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bh </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.canvasEl.height </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">minScale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">;
+        
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bw </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bh </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.height </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
             
             </span><span class="jsdoc-var">this.startScale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.scale</span><span class="jsdoc-syntax">;
             
                 }
                 
                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(
-                        </span><span class="jsdoc-var">bw </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">() &lt; </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">() ||
-                        </span><span class="jsdoc-var">bh </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">() &lt; </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">()
+                        </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">bw </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">()) &lt; </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">() ||
+                        </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">bh </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">()) &lt; </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">()
                 ){
                     </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
                 }
         
         </span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">&gt; 180) ? 0 : </span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">+ 90;
 
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.isDocument</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">this.setThumbBoxSize</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-var">this.setThumbBoxPosition</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-var">this.setCanvasPosition</span><span class="jsdoc-syntax">();
+        }
+        
         </span><span class="jsdoc-var">this.draw</span><span class="jsdoc-syntax">();
+        
+        </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'rotate'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'right'</span><span class="jsdoc-syntax">);
     },
     
     </span><span class="jsdoc-var">onRotateFail </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.canvasLoaded</span><span class="jsdoc-syntax">){
             </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
         }
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">canvas </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;canvas&quot;</span><span class="jsdoc-syntax">);
         
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">context </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">canvas.getContext</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;2d&quot;</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">imageCanvas </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;canvas&quot;</span><span class="jsdoc-syntax">);
         
-        </span><span class="jsdoc-var">canvas.width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-var">canvas.height </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">imageContext </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">imageCanvas.getContext</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;2d&quot;</span><span class="jsdoc-syntax">);
         
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cropWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">();
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cropHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-var">imageCanvas.width </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">imageCanvas.height </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">;
         
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumbEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.previewEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumbEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.previewEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">center </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">imageCanvas.width </span><span class="jsdoc-syntax">/ 2;
         
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropWidth </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropWidth</span><span class="jsdoc-syntax">;
-        }
+        </span><span class="jsdoc-var">imageContext.translate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">center</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">center</span><span class="jsdoc-syntax">);
         
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.height </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropHeight </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.canvasEl.height </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropHeight</span><span class="jsdoc-syntax">;
-        }
+        </span><span class="jsdoc-var">imageContext.rotate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">Math.PI </span><span class="jsdoc-syntax">/ 180);
+        
+        </span><span class="jsdoc-var">imageContext.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.imageEl</span><span class="jsdoc-syntax">, 0, 0, </span><span class="jsdoc-var">this.imageEl.OriginWidth</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">center </span><span class="jsdoc-syntax">* -1, </span><span class="jsdoc-var">center </span><span class="jsdoc-syntax">* -1, </span><span class="jsdoc-var">this.imageEl.OriginWidth</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">);
         
-        </span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">&lt; 0 ? 0 : </span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">&lt; 0 ? 0 : </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">canvas </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;canvas&quot;</span><span class="jsdoc-syntax">);
         
-        </span><span class="jsdoc-var">context.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cropWidth</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cropHeight</span><span class="jsdoc-syntax">, 0, 0, </span><span class="jsdoc-var">canvas.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">canvas.height</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">context </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">canvas.getContext</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;2d&quot;</span><span class="jsdoc-syntax">);
+                
+        </span><span class="jsdoc-var">canvas.width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">canvas.height </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">;
+
+        </span><span class="jsdoc-keyword">switch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.rotate</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-keyword">case </span><span class="jsdoc-syntax">0 :
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">() &gt; </span><span class="jsdoc-var">this.imageEl.OriginWidth</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">: (</span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">() &gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">this.imageEl.OriginHeight </span><span class="jsdoc-syntax">: (</span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.thumbEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) &gt; </span><span class="jsdoc-var">this.previewEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)) ? 0 : ((</span><span class="jsdoc-var">this.previewEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.thumbEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)) / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.thumbEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) &gt; </span><span class="jsdoc-var">this.previewEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)) ? 0 : ((</span><span class="jsdoc-var">this.previewEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.thumbEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)) / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">targetWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minWidth </span><span class="jsdoc-syntax">- 2 * </span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">;
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">targetHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">- 2 * </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">;
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= 1;
+                
+                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">== 0 &amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">== 0) || (</span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">== 0 &amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">&gt; 0)){
+                    </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetWidth </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">;
+                }
+                
+                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">&gt; 0 &amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">== 0){
+                    </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetHeight </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">;
+                }
+                
+                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">&gt; 0 &amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">&gt; 0){
+                    </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetWidth </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">;
+                    
+                    </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">){
+                        </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetHeight </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">;
+                    }
+                }
+                
+                </span><span class="jsdoc-var">context.scale</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">scale</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scale</span><span class="jsdoc-syntax">);
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.min</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">this.thumbEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.previewEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">));
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.min</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.height </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">this.thumbEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.previewEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">));
+
+                </span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">&lt; 0 ? 0 : (</span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                </span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">&lt; 0 ? 0 : (</span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+
+                </span><span class="jsdoc-var">context.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">imageCanvas</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sx</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sy</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">);
+                
+                </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-keyword">case </span><span class="jsdoc-syntax">90 : 
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">() &gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">this.imageEl.OriginHeight </span><span class="jsdoc-syntax">: (</span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">() &gt; </span><span class="jsdoc-var">this.imageEl.OriginWidth</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">: (</span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.thumbEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) &gt; </span><span class="jsdoc-var">this.previewEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)) ? 0 : ((</span><span class="jsdoc-var">this.previewEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.thumbEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)) / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.thumbEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) &gt; </span><span class="jsdoc-var">this.previewEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)) ? 0 : ((</span><span class="jsdoc-var">this.previewEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.thumbEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)) / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">targetWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minWidth </span><span class="jsdoc-syntax">- 2 * </span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">;
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">targetHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">- 2 * </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">;
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= 1;
+                
+                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">== 0 &amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">== 0) || (</span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">== 0 &amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">&gt; 0)){
+                    </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetWidth </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">;
+                }
+                
+                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">&gt; 0 &amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">== 0){
+                    </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetHeight </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">;
+                }
+                
+                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">&gt; 0 &amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">&gt; 0){
+                    </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetWidth </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">;
+                    
+                    </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">){
+                        </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetHeight </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">;
+                    }
+                }
+                
+                </span><span class="jsdoc-var">context.scale</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">scale</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scale</span><span class="jsdoc-syntax">);
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.min</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">this.thumbEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.previewEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">));
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.min</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.height </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">this.thumbEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.previewEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">));
+
+                </span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">&lt; 0 ? 0 : (</span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                </span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">&lt; 0 ? 0 : (</span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                
+                </span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">+= (</span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">Math.abs</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">) : 0;
+                
+                </span><span class="jsdoc-var">context.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">imageCanvas</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sx</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sy</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">);
+                
+                </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-keyword">case </span><span class="jsdoc-syntax">180 :
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">() &gt; </span><span class="jsdoc-var">this.imageEl.OriginWidth</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">: (</span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">() &gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">this.imageEl.OriginHeight </span><span class="jsdoc-syntax">: (</span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.thumbEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) &gt; </span><span class="jsdoc-var">this.previewEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)) ? 0 : ((</span><span class="jsdoc-var">this.previewEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.thumbEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)) / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.thumbEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) &gt; </span><span class="jsdoc-var">this.previewEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)) ? 0 : ((</span><span class="jsdoc-var">this.previewEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.thumbEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)) / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">targetWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minWidth </span><span class="jsdoc-syntax">- 2 * </span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">;
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">targetHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">- 2 * </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">;
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= 1;
+                
+                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">== 0 &amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">== 0) || (</span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">== 0 &amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">&gt; 0)){
+                    </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetWidth </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">;
+                }
+                
+                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">&gt; 0 &amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">== 0){
+                    </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetHeight </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">;
+                }
+                
+                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">&gt; 0 &amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">&gt; 0){
+                    </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetWidth </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">;
+                    
+                    </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">){
+                        </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetHeight </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">;
+                    }
+                }
+                
+                </span><span class="jsdoc-var">context.scale</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">scale</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scale</span><span class="jsdoc-syntax">);
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.min</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">this.thumbEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.previewEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">));
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.min</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.height </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">this.thumbEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.previewEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">));
+
+                </span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">&lt; 0 ? 0 : (</span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                </span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">&lt; 0 ? 0 : (</span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+
+                </span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">+= (</span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">) ? 0 : </span><span class="jsdoc-var">Math.abs</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">+= (</span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">Math.abs</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">) : 0;
+                
+                </span><span class="jsdoc-var">context.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">imageCanvas</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sx</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sy</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">);
+                
+                </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-keyword">case </span><span class="jsdoc-syntax">270 :
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">() &gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">this.imageEl.OriginHeight </span><span class="jsdoc-syntax">: (</span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">() &gt; </span><span class="jsdoc-var">this.imageEl.OriginWidth</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">: (</span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">() / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.thumbEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) &gt; </span><span class="jsdoc-var">this.previewEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)) ? 0 : ((</span><span class="jsdoc-var">this.previewEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.thumbEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)) / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.thumbEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) &gt; </span><span class="jsdoc-var">this.previewEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)) ? 0 : ((</span><span class="jsdoc-var">this.previewEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.thumbEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">)) / </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">targetWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minWidth </span><span class="jsdoc-syntax">- 2 * </span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">;
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">targetHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">- 2 * </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">;
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= 1;
+                
+                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">== 0 &amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">== 0) || (</span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">== 0 &amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">&gt; 0)){
+                    </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetWidth </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">;
+                }
+                
+                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">&gt; 0 &amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">== 0){
+                    </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetHeight </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">;
+                }
+                
+                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">&gt; 0 &amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">&gt; 0){
+                    </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetWidth </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">;
+                    
+                    </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">){
+                        </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetHeight </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">;
+                    }
+                }
+                
+                </span><span class="jsdoc-var">context.scale</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">scale</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scale</span><span class="jsdoc-syntax">);
+                
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.min</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">this.thumbEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.previewEl.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">));
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.min</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.height </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">this.thumbEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">this.previewEl.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">));
+
+                </span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">&lt; 0 ? 0 : (</span><span class="jsdoc-var">sx </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                </span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">&lt; 0 ? 0 : (</span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+                
+                </span><span class="jsdoc-var">sy </span><span class="jsdoc-syntax">+= (</span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">) ? 0 : </span><span class="jsdoc-var">Math.abs</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">);
+                
+                </span><span class="jsdoc-var">context.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">imageCanvas</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sx</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sy</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">);
+                
+                </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-keyword">default </span><span class="jsdoc-syntax">: 
+                </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
+        }
         
         </span><span class="jsdoc-var">this.cropData </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">canvas.toDataURL</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.cropType</span><span class="jsdoc-syntax">);
         
     
     </span><span class="jsdoc-var">setThumbBoxSize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
     {
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">= 300;
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.minWidth </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">;
+        
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.isDocument </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.imageEl</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">Math.max</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">Math.min</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">Math.min</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">Math.max</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">);
+            
+            </span><span class="jsdoc-var">this.minWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">;
+            
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">== 90 || </span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">== 270){
+                </span><span class="jsdoc-var">this.minWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">;
+                </span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">;
+            }
+        }
+        
+        </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">= 300;
+        </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.minWidth </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">);
         
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.minWidth </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">){
             </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">= 300;
     {
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">;
         
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.isDocument</span><span class="jsdoc-syntax">){
+            
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.baseRotate </span><span class="jsdoc-syntax">== 6 || </span><span class="jsdoc-var">this.baseRotate </span><span class="jsdoc-syntax">== 8){
+            
+                </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">();
+                </span><span class="jsdoc-var">this.baseScale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.imageEl.OriginWidth</span><span class="jsdoc-syntax">;
+
+                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.imageEl.OriginHeight </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.baseScale </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">()){
+                    </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">();
+                    </span><span class="jsdoc-var">this.baseScale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">;
+                }
+
+                </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+            }
+
+            </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-var">this.baseScale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">;
+
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.baseScale </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">()){
+                </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">();
+                </span><span class="jsdoc-var">this.baseScale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.imageEl.OriginWidth</span><span class="jsdoc-syntax">;
+            }
+
+            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+        }
+        
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.baseRotate </span><span class="jsdoc-syntax">== 6 || </span><span class="jsdoc-var">this.baseRotate </span><span class="jsdoc-syntax">== 8){
             
             </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">();
-            </span><span class="jsdoc-var">this.baseScale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-var">this.baseScale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">;
             
             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.imageEl.OriginHeight </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.baseScale </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">()){
                 </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">();
             </span><span class="jsdoc-var">this.baseScale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">;
         }
         
-        
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">){
             
             </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">();
         
     },
     
-    </span><span class="jsdoc-var">prepare </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">input</span><span class="jsdoc-syntax">)
-    {        
+    </span><span class="jsdoc-var">prepare </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">)
+    {   
         </span><span class="jsdoc-var">this.file </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
         </span><span class="jsdoc-var">this.exif </span><span class="jsdoc-syntax">= {};
         
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">input</span><span class="jsdoc-syntax">) === </span><span class="jsdoc-string">'string'</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-var">this.loadCanvas</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">input</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">) === </span><span class="jsdoc-string">'string'</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">this.loadCanvas</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">);
             </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
         }
         
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">input.files </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">input.files</span><span class="jsdoc-syntax">[0] || !</span><span class="jsdoc-var">this.urlAPI</span><span class="jsdoc-syntax">){
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">file </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">this.urlAPI</span><span class="jsdoc-syntax">){
             </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
         }
         
-        </span><span class="jsdoc-var">this.file </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">input.files</span><span class="jsdoc-syntax">[0];
-        </span><span class="jsdoc-var">this.cropType </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.file.type</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">this.file </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">file</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">this.cropType </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">file.type</span><span class="jsdoc-syntax">;
         
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">_this </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
         
                     </span><span class="jsdoc-syntax">}
                 ]
             }
+        ],
+        </span><span class="jsdoc-var">ROTATOR </span><span class="jsdoc-syntax">: [
+            {
+                </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'btn-group roo-upload-cropbox-rotate-left'</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">action </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'rotate-left'</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">cn </span><span class="jsdoc-syntax">: [
+                    {
+                        </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'button'</span><span class="jsdoc-syntax">,
+                        </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'btn btn-default'</span><span class="jsdoc-syntax">,
+                        </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'&lt;i class=&quot;fa fa-undo&quot;&gt;&lt;/i&gt;'
+                    </span><span class="jsdoc-syntax">}
+                ]
+            },
+            {
+                </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'btn-group roo-upload-cropbox-rotate-right'</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">action </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'rotate-right'</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">cn </span><span class="jsdoc-syntax">: [
+                    {
+                        </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'button'</span><span class="jsdoc-syntax">,
+                        </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'btn btn-default'</span><span class="jsdoc-syntax">,
+                        </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'&lt;i class=&quot;fa fa-repeat&quot;&gt;&lt;/i&gt;'
+                    </span><span class="jsdoc-syntax">}
+                ]
+            }
         ]
     }
 });
index d30ad07..a48a1da 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Mon Feb 22 2016 17:05:13 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Mar 03 2016 16:15:37 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d3487d9..5b57b6d 100644 (file)
@@ -5798,7 +5798,7 @@ Roo.extend(Roo.bootstrap.Table, Roo.bootstrap.Component,  {
         for(var i = 0, len = cm.getColumnCount(); i < len; i++){
             
             var config = cm.config[i];
-                    
+            
             var c = {
                 tag: 'th',
                 style : '',
@@ -24019,6 +24019,7 @@ Roo.extend(Roo.bootstrap.Alert, Roo.bootstrap.Component,  {
  * @cfg {Number} minWidth default 300
  * @cfg {Number} minHeight default 300
  * @cfg {Array} buttons default ['rotateLeft', 'pictureBtn', 'rotateRight']
+ * @cfg {Boolean} isDocument (true|false) default false
  * 
  * @constructor
  * Create a new UploadCropbox
@@ -24093,8 +24094,14 @@ Roo.bootstrap.UploadCropbox = function(config){
          * Fire when resize
          * @param {Roo.bootstrap.UploadCropbox} this
          */
-        "resize" : true
-        
+        "resize" : true,
+        /**
+         * @event rotate
+         * Fire when rotate the image
+         * @param {Roo.bootstrap.UploadCropbox} this
+         * @param {String} pos
+         */
+        "rotate" : true
     });
     
     this.buttons = this.buttons || Roo.bootstrap.UploadCropbox.footer.STANDARD;
@@ -24121,6 +24128,7 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
     cropType : 'image/jpeg',
     buttons : false,
     canvasLoaded : false,
+    isDocument : false,
     
     getAutoCreate : function()
     {
@@ -24336,8 +24344,14 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         this.imageEl.OriginWidth = this.imageEl.naturalWidth || this.imageEl.width;
         this.imageEl.OriginHeight = this.imageEl.naturalHeight || this.imageEl.height;
         
-        this.setThumbBoxPosition();
         this.baseRotateLevel();
+        
+        if(this.isDocument){
+            this.setThumbBoxSize();
+        }
+        
+        this.setThumbBoxPosition();
+        
         this.baseScaleLevel();
         
         this.draw();
@@ -24369,6 +24383,11 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         this.dragable = true;
         this.pinching = false;
         
+        if(this.isDocument && (this.canvasEl.width < this.thumbEl.getWidth() || this.canvasEl.height < this.thumbEl.getHeight())){
+            this.dragable = false;
+            return;
+        }
+        
         this.mouseX = Roo.isTouch ? e.browserEvent.touches[0].pageX : e.getPageX();
         this.mouseY = Roo.isTouch ? e.browserEvent.touches[0].pageY : e.getPageY();
         
@@ -24440,28 +24459,58 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
     {
         var minScale = this.thumbEl.getWidth() / this.minWidth;
         
-        var width = Math.ceil(this.imageEl.OriginWidth * this.getScaleLevel());
-        var height = Math.ceil(this.imageEl.OriginHeight * this.getScaleLevel());
+        if(this.minWidth < this.minHeight){
+            minScale = this.thumbEl.getHeight() / this.minHeight;
+        }
+        
+        var width = Math.ceil(this.imageEl.OriginWidth * this.getScaleLevel() / minScale);
+        var height = Math.ceil(this.imageEl.OriginHeight * this.getScaleLevel() / minScale);
+        
+        if(
+                this.isDocument &&
+                (this.rotate == 0 || this.rotate == 180) && 
+                (
+                    width > this.imageEl.OriginWidth || 
+                    height > this.imageEl.OriginHeight ||
+                    (width < this.minWidth && height < this.minHeight)
+                )
+        ){
+            return false;
+        }
+        
+        if(
+                this.isDocument &&
+                (this.rotate == 90 || this.rotate == 270) && 
+                (
+                    width > this.imageEl.OriginWidth || 
+                    height > this.imageEl.OriginHeight ||
+                    (width < this.minHeight && height < this.minWidth)
+                )
+        ){
+            return false;
+        }
         
         if(
+                !this.isDocument &&
                 (this.rotate == 0 || this.rotate == 180) && 
                 (
-                    width / minScale < this.minWidth || 
-                    width / minScale > this.imageEl.OriginWidth || 
-                    height / minScale < this.minHeight || 
-                    height / minScale > this.imageEl.OriginHeight
+                    width < this.minWidth || 
+                    width > this.imageEl.OriginWidth || 
+                    height < this.minHeight || 
+                    height > this.imageEl.OriginHeight
                 )
         ){
             return false;
         }
         
         if(
+                !this.isDocument &&
                 (this.rotate == 90 || this.rotate == 270) && 
                 (
-                    width / minScale < this.minHeight || 
-                    width / minScale > this.imageEl.OriginWidth || 
-                    height / minScale < this.minWidth || 
-                    height / minScale > this.imageEl.OriginHeight
+                    width < this.minHeight || 
+                    width > this.imageEl.OriginWidth || 
+                    height < this.minWidth || 
+                    height > this.imageEl.OriginHeight
                 )
         ){
             return false;
@@ -24473,12 +24522,12 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
     
     onRotateLeft : function(e)
     {   
-        var minScale = this.thumbEl.getWidth() / this.minWidth;
-        
-        if(this.canvasEl.height < this.thumbEl.getWidth() || this.canvasEl.width < this.thumbEl.getHeight()){
+        if(!this.isDocument && (this.canvasEl.height < this.thumbEl.getWidth() || this.canvasEl.width < this.thumbEl.getHeight())){
             
-            var bw = this.canvasEl.width / this.getScaleLevel();
-            var bh = this.canvasEl.height / this.getScaleLevel();
+            var minScale = this.thumbEl.getWidth() / this.minWidth;
+            
+            var bw = Math.ceil(this.canvasEl.width / this.getScaleLevel());
+            var bh = Math.ceil(this.canvasEl.height / this.getScaleLevel());
             
             this.startScale = this.scale;
             
@@ -24491,8 +24540,8 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
                 }
                 
                 if(
-                        bw * this.getScaleLevel() < this.thumbEl.getHeight() ||
-                        bh * this.getScaleLevel() < this.thumbEl.getWidth()
+                        Math.ceil(bw * this.getScaleLevel()) < this.thumbEl.getHeight() ||
+                        Math.ceil(bh * this.getScaleLevel()) < this.thumbEl.getWidth()
                 ){
                     continue;
                 }
@@ -24513,18 +24562,26 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         
         this.rotate = (this.rotate < 90) ? 270 : this.rotate - 90;
 
+        if(this.isDocument){
+            this.setThumbBoxSize();
+            this.setThumbBoxPosition();
+            this.setCanvasPosition();
+        }
+        
         this.draw();
         
+        this.fireEvent('rotate', this, 'left');
+        
     },
     
     onRotateRight : function(e)
     {
-        var minScale = this.thumbEl.getWidth() / this.minWidth;
-        
-        if(this.canvasEl.height < this.thumbEl.getWidth() || this.canvasEl.width < this.thumbEl.getHeight()){
+        if(!this.isDocument && (this.canvasEl.height < this.thumbEl.getWidth() || this.canvasEl.width < this.thumbEl.getHeight())){
             
-            var bw = this.canvasEl.width / this.getScaleLevel();
-            var bh = this.canvasEl.height / this.getScaleLevel();
+            var minScale = this.thumbEl.getWidth() / this.minWidth;
+        
+            var bw = Math.ceil(this.canvasEl.width / this.getScaleLevel());
+            var bh = Math.ceil(this.canvasEl.height / this.getScaleLevel());
             
             this.startScale = this.scale;
             
@@ -24537,8 +24594,8 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
                 }
                 
                 if(
-                        bw * this.getScaleLevel() < this.thumbEl.getHeight() ||
-                        bh * this.getScaleLevel() < this.thumbEl.getWidth()
+                        Math.ceil(bw * this.getScaleLevel()) < this.thumbEl.getHeight() ||
+                        Math.ceil(bh * this.getScaleLevel()) < this.thumbEl.getWidth()
                 ){
                     continue;
                 }
@@ -24559,7 +24616,15 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         
         this.rotate = (this.rotate > 180) ? 0 : this.rotate + 90;
 
+        if(this.isDocument){
+            this.setThumbBoxSize();
+            this.setThumbBoxPosition();
+            this.setCanvasPosition();
+        }
+        
         this.draw();
+        
+        this.fireEvent('rotate', this, 'right');
     },
     
     onRotateFail : function()
@@ -24662,31 +24727,200 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         if(!this.canvasLoaded){
             return;
         }
-        var canvas = document.createElement("canvas");
         
-        var context = canvas.getContext("2d");
+        var imageCanvas = document.createElement("canvas");
         
-        canvas.width = this.minWidth;
-        canvas.height = this.minHeight;
+        var imageContext = imageCanvas.getContext("2d");
         
-        var cropWidth = this.thumbEl.getWidth();
-        var cropHeight = this.thumbEl.getHeight();
+        imageCanvas.width = (this.imageEl.OriginWidth > this.imageEl.OriginHeight) ? this.imageEl.OriginWidth : this.imageEl.OriginHeight;
+        imageCanvas.height = (this.imageEl.OriginWidth > this.imageEl.OriginHeight) ? this.imageEl.OriginWidth : this.imageEl.OriginHeight;
         
-        var x = this.thumbEl.getLeft(true) - this.previewEl.getLeft(true);
-        var y = this.thumbEl.getTop(true) - this.previewEl.getTop(true);
+        var center = imageCanvas.width / 2;
         
-        if(this.canvasEl.width - cropWidth < x){
-            x = this.canvasEl.width - cropWidth;
-        }
+        imageContext.translate(center, center);
         
-        if(this.canvasEl.height - cropHeight < y){
-            y = this.canvasEl.height - cropHeight;
-        }
+        imageContext.rotate(this.rotate * Math.PI / 180);
         
-        x = x < 0 ? 0 : x;
-        y = y < 0 ? 0 : y;
+        imageContext.drawImage(this.imageEl, 0, 0, this.imageEl.OriginWidth, this.imageEl.OriginHeight, center * -1, center * -1, this.imageEl.OriginWidth, this.imageEl.OriginHeight);
         
-        context.drawImage(this.canvasEl, x, y, cropWidth, cropHeight, 0, 0, canvas.width, canvas.height);
+        var canvas = document.createElement("canvas");
+        
+        var context = canvas.getContext("2d");
+                
+        canvas.width = this.minWidth;
+        canvas.height = this.minHeight;
+
+        switch (this.rotate) {
+            case 0 :
+                
+                var width = (this.thumbEl.getWidth() / this.getScaleLevel() > this.imageEl.OriginWidth) ? this.imageEl.OriginWidth : (this.thumbEl.getWidth() / this.getScaleLevel());
+                var height = (this.thumbEl.getHeight() / this.getScaleLevel() > this.imageEl.OriginHeight) ? this.imageEl.OriginHeight : (this.thumbEl.getHeight() / this.getScaleLevel());
+                
+                var x = (this.thumbEl.getLeft(true) > this.previewEl.getLeft(true)) ? 0 : ((this.previewEl.getLeft(true) - this.thumbEl.getLeft(true)) / this.getScaleLevel());
+                var y = (this.thumbEl.getTop(true) > this.previewEl.getTop(true)) ? 0 : ((this.previewEl.getTop(true) - this.thumbEl.getTop(true)) / this.getScaleLevel());
+                
+                var targetWidth = this.minWidth - 2 * x;
+                var targetHeight = this.minHeight - 2 * y;
+                
+                var scale = 1;
+                
+                if((x == 0 && y == 0) || (x == 0 && y > 0)){
+                    scale = targetWidth / width;
+                }
+                
+                if(x > 0 && y == 0){
+                    scale = targetHeight / height;
+                }
+                
+                if(x > 0 && y > 0){
+                    scale = targetWidth / width;
+                    
+                    if(width < height){
+                        scale = targetHeight / height;
+                    }
+                }
+                
+                context.scale(scale, scale);
+                
+                var sx = Math.min(this.canvasEl.width - this.thumbEl.getWidth(), this.thumbEl.getLeft(true) - this.previewEl.getLeft(true));
+                var sy = Math.min(this.canvasEl.height - this.thumbEl.getHeight(), this.thumbEl.getTop(true) - this.previewEl.getTop(true));
+
+                sx = sx < 0 ? 0 : (sx / this.getScaleLevel());
+                sy = sy < 0 ? 0 : (sy / this.getScaleLevel());
+
+                context.drawImage(imageCanvas, sx, sy, width, height, x, y, width, height);
+                
+                break;
+            case 90 : 
+                
+                var width = (this.thumbEl.getWidth() / this.getScaleLevel() > this.imageEl.OriginHeight) ? this.imageEl.OriginHeight : (this.thumbEl.getWidth() / this.getScaleLevel());
+                var height = (this.thumbEl.getHeight() / this.getScaleLevel() > this.imageEl.OriginWidth) ? this.imageEl.OriginWidth : (this.thumbEl.getHeight() / this.getScaleLevel());
+                
+                var x = (this.thumbEl.getLeft(true) > this.previewEl.getLeft(true)) ? 0 : ((this.previewEl.getLeft(true) - this.thumbEl.getLeft(true)) / this.getScaleLevel());
+                var y = (this.thumbEl.getTop(true) > this.previewEl.getTop(true)) ? 0 : ((this.previewEl.getTop(true) - this.thumbEl.getTop(true)) / this.getScaleLevel());
+                
+                var targetWidth = this.minWidth - 2 * x;
+                var targetHeight = this.minHeight - 2 * y;
+                
+                var scale = 1;
+                
+                if((x == 0 && y == 0) || (x == 0 && y > 0)){
+                    scale = targetWidth / width;
+                }
+                
+                if(x > 0 && y == 0){
+                    scale = targetHeight / height;
+                }
+                
+                if(x > 0 && y > 0){
+                    scale = targetWidth / width;
+                    
+                    if(width < height){
+                        scale = targetHeight / height;
+                    }
+                }
+                
+                context.scale(scale, scale);
+                
+                var sx = Math.min(this.canvasEl.width - this.thumbEl.getWidth(), this.thumbEl.getLeft(true) - this.previewEl.getLeft(true));
+                var sy = Math.min(this.canvasEl.height - this.thumbEl.getHeight(), this.thumbEl.getTop(true) - this.previewEl.getTop(true));
+
+                sx = sx < 0 ? 0 : (sx / this.getScaleLevel());
+                sy = sy < 0 ? 0 : (sy / this.getScaleLevel());
+                
+                sx += (this.imageEl.OriginWidth > this.imageEl.OriginHeight) ? Math.abs(this.imageEl.OriginWidth - this.imageEl.OriginHeight) : 0;
+                
+                context.drawImage(imageCanvas, sx, sy, width, height, x, y, width, height);
+                
+                break;
+            case 180 :
+                
+                var width = (this.thumbEl.getWidth() / this.getScaleLevel() > this.imageEl.OriginWidth) ? this.imageEl.OriginWidth : (this.thumbEl.getWidth() / this.getScaleLevel());
+                var height = (this.thumbEl.getHeight() / this.getScaleLevel() > this.imageEl.OriginHeight) ? this.imageEl.OriginHeight : (this.thumbEl.getHeight() / this.getScaleLevel());
+                
+                var x = (this.thumbEl.getLeft(true) > this.previewEl.getLeft(true)) ? 0 : ((this.previewEl.getLeft(true) - this.thumbEl.getLeft(true)) / this.getScaleLevel());
+                var y = (this.thumbEl.getTop(true) > this.previewEl.getTop(true)) ? 0 : ((this.previewEl.getTop(true) - this.thumbEl.getTop(true)) / this.getScaleLevel());
+                
+                var targetWidth = this.minWidth - 2 * x;
+                var targetHeight = this.minHeight - 2 * y;
+                
+                var scale = 1;
+                
+                if((x == 0 && y == 0) || (x == 0 && y > 0)){
+                    scale = targetWidth / width;
+                }
+                
+                if(x > 0 && y == 0){
+                    scale = targetHeight / height;
+                }
+                
+                if(x > 0 && y > 0){
+                    scale = targetWidth / width;
+                    
+                    if(width < height){
+                        scale = targetHeight / height;
+                    }
+                }
+                
+                context.scale(scale, scale);
+                
+                var sx = Math.min(this.canvasEl.width - this.thumbEl.getWidth(), this.thumbEl.getLeft(true) - this.previewEl.getLeft(true));
+                var sy = Math.min(this.canvasEl.height - this.thumbEl.getHeight(), this.thumbEl.getTop(true) - this.previewEl.getTop(true));
+
+                sx = sx < 0 ? 0 : (sx / this.getScaleLevel());
+                sy = sy < 0 ? 0 : (sy / this.getScaleLevel());
+
+                sx += (this.imageEl.OriginWidth > this.imageEl.OriginHeight) ? 0 : Math.abs(this.imageEl.OriginWidth - this.imageEl.OriginHeight);
+                sy += (this.imageEl.OriginWidth > this.imageEl.OriginHeight) ? Math.abs(this.imageEl.OriginWidth - this.imageEl.OriginHeight) : 0;
+                
+                context.drawImage(imageCanvas, sx, sy, width, height, x, y, width, height);
+                
+                break;
+            case 270 :
+                
+                var width = (this.thumbEl.getWidth() / this.getScaleLevel() > this.imageEl.OriginHeight) ? this.imageEl.OriginHeight : (this.thumbEl.getWidth() / this.getScaleLevel());
+                var height = (this.thumbEl.getHeight() / this.getScaleLevel() > this.imageEl.OriginWidth) ? this.imageEl.OriginWidth : (this.thumbEl.getHeight() / this.getScaleLevel());
+                
+                var x = (this.thumbEl.getLeft(true) > this.previewEl.getLeft(true)) ? 0 : ((this.previewEl.getLeft(true) - this.thumbEl.getLeft(true)) / this.getScaleLevel());
+                var y = (this.thumbEl.getTop(true) > this.previewEl.getTop(true)) ? 0 : ((this.previewEl.getTop(true) - this.thumbEl.getTop(true)) / this.getScaleLevel());
+                
+                var targetWidth = this.minWidth - 2 * x;
+                var targetHeight = this.minHeight - 2 * y;
+                
+                var scale = 1;
+                
+                if((x == 0 && y == 0) || (x == 0 && y > 0)){
+                    scale = targetWidth / width;
+                }
+                
+                if(x > 0 && y == 0){
+                    scale = targetHeight / height;
+                }
+                
+                if(x > 0 && y > 0){
+                    scale = targetWidth / width;
+                    
+                    if(width < height){
+                        scale = targetHeight / height;
+                    }
+                }
+                
+                context.scale(scale, scale);
+                
+                var sx = Math.min(this.canvasEl.width - this.thumbEl.getWidth(), this.thumbEl.getLeft(true) - this.previewEl.getLeft(true));
+                var sy = Math.min(this.canvasEl.height - this.thumbEl.getHeight(), this.thumbEl.getTop(true) - this.previewEl.getTop(true));
+
+                sx = sx < 0 ? 0 : (sx / this.getScaleLevel());
+                sy = sy < 0 ? 0 : (sy / this.getScaleLevel());
+                
+                sy += (this.imageEl.OriginWidth > this.imageEl.OriginHeight) ? 0 : Math.abs(this.imageEl.OriginWidth - this.imageEl.OriginHeight);
+                
+                context.drawImage(imageCanvas, sx, sy, width, height, x, y, width, height);
+                
+                break;
+            default : 
+                break;
+        }
         
         this.cropData = canvas.toDataURL(this.cropType);
         
@@ -24696,8 +24930,23 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
     
     setThumbBoxSize : function()
     {
-        var height = 300;
-        var width = Math.ceil(this.minWidth * height / this.minHeight);
+        var width, height;
+        
+        if(this.isDocument && typeof(this.imageEl) != 'undefined'){
+            width = (this.imageEl.OriginWidth > this.imageEl.OriginHeight) ? Math.max(this.minWidth, this.minHeight) : Math.min(this.minWidth, this.minHeight);
+            height = (this.imageEl.OriginWidth > this.imageEl.OriginHeight) ? Math.min(this.minWidth, this.minHeight) : Math.max(this.minWidth, this.minHeight);
+            
+            this.minWidth = width;
+            this.minHeight = height;
+            
+            if(this.rotate == 90 || this.rotate == 270){
+                this.minWidth = height;
+                this.minHeight = width;
+            }
+        }
+        
+        height = 300;
+        width = Math.ceil(this.minWidth * height / this.minHeight);
         
         if(this.minWidth > this.minHeight){
             width = 300;
@@ -24743,10 +24992,36 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
     {
         var width, height;
         
+        if(this.isDocument){
+            
+            if(this.baseRotate == 6 || this.baseRotate == 8){
+            
+                height = this.thumbEl.getHeight();
+                this.baseScale = height / this.imageEl.OriginWidth;
+
+                if(this.imageEl.OriginHeight * this.baseScale > this.thumbEl.getWidth()){
+                    width = this.thumbEl.getWidth();
+                    this.baseScale = width / this.imageEl.OriginHeight;
+                }
+
+                return;
+            }
+
+            height = this.thumbEl.getHeight();
+            this.baseScale = height / this.imageEl.OriginHeight;
+
+            if(this.imageEl.OriginWidth * this.baseScale > this.thumbEl.getWidth()){
+                width = this.thumbEl.getWidth();
+                this.baseScale = width / this.imageEl.OriginWidth;
+            }
+
+            return;
+        }
+        
         if(this.baseRotate == 6 || this.baseRotate == 8){
             
             width = this.thumbEl.getHeight();
-            this.baseScale = height / this.imageEl.OriginHeight;
+            this.baseScale = width / this.imageEl.OriginHeight;
             
             if(this.imageEl.OriginHeight * this.baseScale < this.thumbEl.getWidth()){
                 height = this.thumbEl.getWidth();
@@ -24774,7 +25049,6 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
             this.baseScale = height / this.imageEl.OriginHeight;
         }
         
-        
         if(this.imageEl.OriginWidth > this.imageEl.OriginHeight){
             
             height = this.thumbEl.getHeight();
@@ -24881,22 +25155,22 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         
     },
     
-    prepare : function(input)
-    {        
+    prepare : function(file)
+    {   
         this.file = false;
         this.exif = {};
         
-        if(typeof(input) === 'string'){
-            this.loadCanvas(input);
+        if(typeof(file) === 'string'){
+            this.loadCanvas(file);
             return;
         }
         
-        if(!input.files || !input.files[0] || !this.urlAPI){
+        if(!file || !this.urlAPI){
             return;
         }
         
-        this.file = input.files[0];
-        this.cropType = this.file.type;
+        this.file = file;
+        this.cropType = file.type;
         
         var _this = this;
         
@@ -25274,6 +25548,32 @@ Roo.apply(Roo.bootstrap.UploadCropbox, {
                     }
                 ]
             }
+        ],
+        ROTATOR : [
+            {
+                tag : 'div',
+                cls : 'btn-group roo-upload-cropbox-rotate-left',
+                action : 'rotate-left',
+                cn : [
+                    {
+                        tag : 'button',
+                        cls : 'btn btn-default',
+                        html : '<i class="fa fa-undo"></i>'
+                    }
+                ]
+            },
+            {
+                tag : 'div',
+                cls : 'btn-group roo-upload-cropbox-rotate-right',
+                action : 'rotate-right',
+                cn : [
+                    {
+                        tag : 'button',
+                        cls : 'btn btn-default',
+                        html : '<i class="fa fa-repeat"></i>'
+                    }
+                ]
+            }
         ]
     }
 });
@@ -25297,6 +25597,7 @@ Roo.apply(Roo.bootstrap.UploadCropbox, {
  * @cfg {String} fieldLabel
  * @cfg {Number} labelWidth default 4
  * @cfg {String} labelAlign (left|top) default left
+ * @cfg {Boolean} editable (true|false) allow edit when upload a image default true
  * 
  * @constructor
  * Create a new DocumentManager
@@ -25353,7 +25654,14 @@ Roo.bootstrap.DocumentManager = function(config){
          * @param {Roo.bootstrap.DocumentManager} this
          * @param {Object} file
          */
-        "click" : true
+        "click" : true,
+        /**
+         * @event edit
+         * Fire when upload a image and editable set to true
+         * @param {Roo.bootstrap.DocumentManager} this
+         * @param {Object} file
+         */
+        "edit" : true
         
     });
 };
@@ -25373,6 +25681,8 @@ Roo.extend(Roo.bootstrap.DocumentManager, Roo.bootstrap.Component,  {
     fieldLabel : '',
     labelWidth : 4,
     labelAlign : 'left',
+    editable : true,
+    delegates : [],
     
     getAutoCreate : function()
     {   
@@ -25463,12 +25773,14 @@ Roo.extend(Roo.bootstrap.DocumentManager, Roo.bootstrap.Component,  {
             this.selectorEl.attr('multiple', 'multiple');
         }
         
-        this.selectorEl.on('change', this.onSelect, this);
+        this.selectorEl.on('change', this.onFileSelected, this);
         
         this.uploader = this.el.select('.roo-document-manager-uploader', true).first();
         this.uploader.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay = 'block';
         
-        this.uploader.on('click', this.onUpload, this);
+        this.uploader.on('click', this.onUploaderClick, this);
+        
+        this.renderProgressDialog();
         
         var _this = this;
         
@@ -25477,15 +25789,57 @@ Roo.extend(Roo.bootstrap.DocumentManager, Roo.bootstrap.Component,  {
         this.fireEvent('initial', this);
     },
     
-    onUpload : function(e)
+    renderProgressDialog : function()
     {
-        e.preventDefault();
+        var _this = this;
         
-        this.selectorEl.dom.click();
+        this.progressDialog = new Roo.bootstrap.Modal({
+            cls : 'roo-document-manager-progress-dialog',
+            allow_close : false,
+            title : '',
+            buttons : [
+                {
+                    name  :'cancel',
+                    weight : 'danger',
+                    html : 'Cancel'
+                }
+            ], 
+            listeners : { 
+                btnclick : function() {
+                    _this.uploadCancel();
+                    this.hide();
+                }
+            }
+        });
+         
+        this.progressDialog.render(Roo.get(document.body));
+         
+        this.progress = new Roo.bootstrap.Progress({
+            cls : 'roo-document-manager-progress',
+            active : true,
+            striped : true
+        });
+        
+        this.progress.render(this.progressDialog.getChildContainer());
+        
+        this.progressBar = new Roo.bootstrap.ProgressBar({
+            cls : 'roo-document-manager-progress-bar',
+            aria_valuenow : 0,
+            aria_valuemin : 0,
+            aria_valuemax : 12,
+            panel : 'success'
+        });
         
+        this.progressBar.render(this.progress.getChildContainer());
     },
     
-    onSelect : function(e)
+    onUploaderClick : function(e)
+    {
+        e.preventDefault();
+        this.selectorEl.dom.click();
+    },
+    
+    onFileSelected : function(e)
     {
         e.preventDefault();
         
@@ -25499,11 +25853,11 @@ Roo.extend(Roo.bootstrap.DocumentManager, Roo.bootstrap.Component,  {
             }
         }, this);
         
-        this.process();
+        this.queue();
         
     },
     
-    process : function()
+    queue : function()
     {
         this.selectorEl.dom.value = '';
         
@@ -25515,147 +25869,67 @@ Roo.extend(Roo.bootstrap.DocumentManager, Roo.bootstrap.Component,  {
             this.files = this.files.slice(0, this.boxes);
         }
         
-        var xhr = new XMLHttpRequest();
-        
-        Roo.each(this.files, function(file, index){
-            if(typeof(file.id) != 'undefined' && file.id * 1 > 0){
-                return;
-            }
-            
-            file.xhr = xhr;
-            
-            this.managerEl.createChild({
-                tag : 'div',
-                cls : 'roo-document-manager-loading',
-                cn : [
-                    {
-                        tag : 'div',
-                        tooltip : file.name,
-                        cls : 'roo-document-manager-thumb',
-                        html : '<i class="fa fa-spinner fa-pulse"></i>'
-                    }
-                ]
-
-            });
-            
-        }, this);
+        this.uploader.show();
         
-        if(this.files.length > this.boxes - 1 ){
+        if(this.files.length > this.boxes - 1){
             this.uploader.hide();
         }
         
-        var headers = {
-            "Accept": "application/json",
-            "Cache-Control": "no-cache",
-            "X-Requested-With": "XMLHttpRequest"
-        };
-        
-        xhr.open(this.method, this.url, true);
-        
-        for (var headerName in headers) {
-            var headerValue = headers[headerName];
-            if (headerValue) {
-                xhr.setRequestHeader(headerName, headerValue);
-            }
-        }
-        
         var _this = this;
         
-        xhr.onload = function()
-        {
-            _this.xhrOnLoad(xhr);
-        }
-        
-        xhr.onerror = function()
-        {
-            _this.xhrOnError(xhr);
-        }
-        
-        var formData = new FormData();
-
-        formData.append('returnHTML', 'NO');
+        var files = [];
         
-        Roo.each(this.files, function(file, index){
+        Roo.each(this.files, function(file){
             
             if(typeof(file.id) != 'undefined' && file.id * 1 > 0){
+                var f = this.renderPreview(file);
+                files.push(f);
                 return;
             }
             
-            formData.append(this.getParamName(index), file, file.name);
+            this.delegates.push(
+                (function(){
+                    _this.process(file);
+                }).createDelegate(this)
+            );
             
         }, this);
         
-        if(this.fireEvent('prepare', this, formData) != false){
-            xhr.send(formData);
-        };
+        this.files = files;
         
-    },
-    
-    getParamName : function(i)
-    {
-        if(!this.multiple){
-            return this.paramName;
+        if(!this.delegates.length){
+            this.refresh();
+            return;
         }
         
-        return this.paramName + "_" + i;
+        this.progressBar.aria_valuemax = this.delegates.length;
+        
+        this.arrange();
+        
+        return;
     },
     
-    refresh : function()
+    arrange : function()
     {
-        Roo.each(this.managerEl.select('.roo-document-manager-loading', true).elements, function(el){
-            el.remove();
-        }, this);
+        if(!this.delegates.length){
+            this.progressDialog.hide();
+            this.refresh();
+            return;
+        }
         
+        var delegate = this.delegates.shift();
         
-        var files = [];
+        this.progressDialog.show();
         
-        Roo.each(this.files, function(file){
-            
-            if(typeof(file.id) == 'undefined' || file.id * 1 < 1){
-                return;
-            }
-            
-            if(file.target){
-                files.push(file);
-                return;
-            }
-            
-            var previewEl = this.managerEl.createChild({
-                tag : 'div',
-                cls : 'roo-document-manager-preview',
-                cn : [
-                    {
-                        tag : 'div',
-                        tooltip : file.filename,
-                        cls : 'roo-document-manager-thumb',
-                        html : '<img src="' + baseURL +'/Images/Thumb/' + this.thumbSize + '/' + file.id + '/' + file.filename + '">'
-                    },
-                    {
-                        tag : 'button',
-                        cls : 'close',
-                        html : 'x'
-                    }
-                ]
-            });
-            
-            var close = previewEl.select('button.close', true).first();
-            
-            close.on('click', this.onRemove, this, file);
-            
-            file.target = previewEl;
-            
-            var image = previewEl.select('img', true).first();
-            
-            image.on('click', this.onClick, this, file);
-            
-            files.push(file);
-            
-            return;
-            
-        }, this);
+        this.progressDialog.setTitle((this.progressBar.aria_valuemax - this.delegates.length) + ' / ' + this.progressBar.aria_valuemax);
         
-        this.files = files;
+        this.progressBar.update(this.progressBar.aria_valuemax - this.delegates.length);
         
+        delegate();
+    },
+    
+    refresh : function()
+    {
         this.uploader.show();
         
         if(this.files.length > this.boxes - 1){
@@ -25720,8 +25994,12 @@ Roo.extend(Roo.bootstrap.DocumentManager, Roo.bootstrap.Component,  {
     
     xhrOnLoad : function(xhr)
     {
+        Roo.each(this.managerEl.select('.roo-document-manager-loading', true).elements, function(el){
+            el.remove();
+        }, this);
+        
         if (xhr.readyState !== 4) {
-            this.refresh();
+            this.arrange();
             this.fireEvent('exception', this, xhr);
             return;
         }
@@ -25729,27 +26007,16 @@ Roo.extend(Roo.bootstrap.DocumentManager, Roo.bootstrap.Component,  {
         var response = Roo.decode(xhr.responseText);
         
         if(!response.success){
-            this.refresh();
+            this.arrange();
             this.fireEvent('exception', this, xhr);
             return;
         }
         
-        var i = 0;
+        var file = this.renderPreview(response.data);
         
-        Roo.each(this.files, function(file, index){
-            
-            if(typeof(file.id) != 'undefined' && file.id * 1 > 0){
-                return;
-            }
-            
-            this.files[index] = response.data[i];
-            i++;
-            
-            return;
-            
-        }, this);
+        this.files.push(file);
         
-        this.refresh();
+        this.arrange();
         
     },
     
@@ -25760,11 +26027,164 @@ Roo.extend(Roo.bootstrap.DocumentManager, Roo.bootstrap.Component,  {
         var response = Roo.decode(xhr.responseText);
           
         Roo.log(response);
-    }
+        
+        this.arrange();
+    },
     
+    process : function(file)
+    {
+        if(this.editable && file.type.indexOf('image') != -1){
+            this.fireEvent('edit', this, file);
+            return;
+        }
+        
+        this.uploadStart(file, false);
+        
+        return;
+    },
     
+    uploadStart : function(file, crop)
+    {
+        this.xhr = new XMLHttpRequest();
+        
+        if(typeof(file.id) != 'undefined' && file.id * 1 > 0){
+            this.arrange();
+            return;
+        }
+        
+        file.xhr = this.xhr;
+            
+        this.managerEl.createChild({
+            tag : 'div',
+            cls : 'roo-document-manager-loading',
+            cn : [
+                {
+                    tag : 'div',
+                    tooltip : file.name,
+                    cls : 'roo-document-manager-thumb',
+                    html : '<i class="fa fa-circle-o-notch fa-spin"></i>'
+                }
+            ]
+
+        });
+
+        this.xhr.open(this.method, this.url, true);
+        
+        var headers = {
+            "Accept": "application/json",
+            "Cache-Control": "no-cache",
+            "X-Requested-With": "XMLHttpRequest"
+        };
+        
+        for (var headerName in headers) {
+            var headerValue = headers[headerName];
+            if (headerValue) {
+                this.xhr.setRequestHeader(headerName, headerValue);
+            }
+        }
+        
+        var _this = this;
+        
+        this.xhr.onload = function()
+        {
+            _this.xhrOnLoad(_this.xhr);
+        }
+        
+        this.xhr.onerror = function()
+        {
+            _this.xhrOnError(_this.xhr);
+        }
+        
+        var formData = new FormData();
+
+        formData.append('returnHTML', 'NO');
+        
+        if(crop){
+            formData.append('crop', crop);
+        }
+        
+        formData.append(this.paramName, file, file.name);
+        
+        if(this.fireEvent('prepare', this, formData) != false){
+            this.xhr.send(formData);
+        };
+    },
+    
+    uploadCancel : function()
+    {
+        this.xhr.abort();
+        
+        this.delegates = [];
+        
+        Roo.each(this.managerEl.select('.roo-document-manager-loading', true).elements, function(el){
+            el.remove();
+        }, this);
+        
+        this.arrange();
+    },
     
+    renderPreview : function(file)
+    {
+        if(typeof(file.target) != 'undefined' && file.target){
+            return file;
+        }
+        
+        var previewEl = this.managerEl.createChild({
+            tag : 'div',
+            cls : 'roo-document-manager-preview',
+            cn : [
+                {
+                    tag : 'div',
+                    tooltip : file.filename,
+                    cls : 'roo-document-manager-thumb',
+                    html : '<img src="' + baseURL +'/Images/Thumb/' + this.thumbSize + '/' + file.id + '/' + file.filename + '">'
+                },
+                {
+                    tag : 'button',
+                    cls : 'close',
+                    html : '<i class="fa fa-times-circle"></i>'
+                }
+            ]
+        });
+
+        var close = previewEl.select('button.close', true).first();
+
+        close.on('click', this.onRemove, this, file);
+
+        file.target = previewEl;
+
+        var image = previewEl.select('img', true).first();
+        
+        var _this = this;
+        
+        image.dom.addEventListener("load", function(){ _this.onPreviewLoad(file, image); });
+        
+        image.on('click', this.onClick, this, file);
+        
+        return file;
+        
+    },
+    
+    onPreviewLoad : function(file, image)
+    {
+        if(typeof(file.target) == 'undefined' || !file.target){
+            return;
+        }
+        
+        var width = image.dom.naturalWidth || image.dom.width;
+        var height = image.dom.naturalHeight || image.dom.height;
+        
+        if(width > height){
+            file.target.addClass('wide');
+            return;
+        }
+        
+        file.target.addClass('tall');
+        return;
+        
+    }
 });
+
 /*
 * Licence: LGPL
 */
index 2793824..2ef68c6 100644 (file)
@@ -984,8 +984,8 @@ if(this.faicon){A.cn[0].cls+=' fa '+this.faicon;}if(this.weight){A.cls+=' alert-
 },setIcon:function(A){if(this.faicon){this.el.select('.roo-alert-icon',true).first().removeClass(['fa','fa-'+this.faicon]);}this.faicon=Athis.el.select('.roo-alert-icon',true).first().addClass(['fa','fa-'+this.faicon]);},hide:function(){this.el.hide();},show:function(){this.el.show();
 }});
 // Roo/bootstrap/UploadCropbox.js
-Roo.bootstrap.UploadCropbox=function(A){Roo.bootstrap.UploadCropbox.superclass.constructor.call(this,A);this.addEvents({"beforeselectfile":true,"initial":true,"crop":true,"prepare":true,"exception":true,"beforeloadcanvas":true,"trash":true,"download":true,"footerbuttonclick":true,"resize":true});
-this.buttons=this.buttons||Roo.bootstrap.UploadCropbox.footer.STANDARD;};Roo.extend(Roo.bootstrap.UploadCropbox,Roo.bootstrap.Component,{emptyText:'Click to upload image',rotateNotify:'Image is too small to rotate',errorTimeout:3000,scale:0,baseScale:1,rotate:0,dragable:false,pinching:false,mouseX:0,mouseY:0,cropData:false,minWidth:300,minHeight:300,file:false,exif:{},baseRotate:1,cropType:'image/jpeg',buttons:false,canvasLoaded:false,getAutoCreate:function(){var A={tag:'div',cls:'roo-upload-cropbox',cn:[{tag:'div',cls:'roo-upload-cropbox-body',style:'cursor:pointer',cn:[{tag:'div',cls:'roo-upload-cropbox-preview'},{tag:'div',cls:'roo-upload-cropbox-thumb'},{tag:'div',cls:'roo-upload-cropbox-empty-notify',html:this.emptyText},{tag:'div',cls:'roo-upload-cropbox-error-notify alert alert-danger',html:this.rotateNotify}]},{tag:'div',cls:'roo-upload-cropbox-footer',cn:{tag:'div',cls:'btn-group btn-group-justified roo-upload-cropbox-btn-group',cn:[]}}]};
+Roo.bootstrap.UploadCropbox=function(A){Roo.bootstrap.UploadCropbox.superclass.constructor.call(this,A);this.addEvents({"beforeselectfile":true,"initial":true,"crop":true,"prepare":true,"exception":true,"beforeloadcanvas":true,"trash":true,"download":true,"footerbuttonclick":true,"resize":true,"rotate":true});
+this.buttons=this.buttons||Roo.bootstrap.UploadCropbox.footer.STANDARD;};Roo.extend(Roo.bootstrap.UploadCropbox,Roo.bootstrap.Component,{emptyText:'Click to upload image',rotateNotify:'Image is too small to rotate',errorTimeout:3000,scale:0,baseScale:1,rotate:0,dragable:false,pinching:false,mouseX:0,mouseY:0,cropData:false,minWidth:300,minHeight:300,file:false,exif:{},baseRotate:1,cropType:'image/jpeg',buttons:false,canvasLoaded:false,isDocument:false,getAutoCreate:function(){var A={tag:'div',cls:'roo-upload-cropbox',cn:[{tag:'div',cls:'roo-upload-cropbox-body',style:'cursor:pointer',cn:[{tag:'div',cls:'roo-upload-cropbox-preview'},{tag:'div',cls:'roo-upload-cropbox-thumb'},{tag:'div',cls:'roo-upload-cropbox-empty-notify',html:this.emptyText},{tag:'div',cls:'roo-upload-cropbox-error-notify alert alert-danger',html:this.rotateNotify}]},{tag:'div',cls:'roo-upload-cropbox-footer',cn:{tag:'div',cls:'btn-group btn-group-justified roo-upload-cropbox-btn-group',cn:[]}}]};
 return A;},onRender:function(ct,A){Roo.bootstrap.UploadCropbox.superclass.onRender.call(this,ct,A);if(this.buttons.length){Roo.each(this.buttons,function(bb){var B=this.el.select('.roo-upload-cropbox-footer div.roo-upload-cropbox-btn-group').first().createChild(bb);
 B.on('click',this.onFooterButtonClick.createDelegate(this,[bb.action],true));},this);}},initEvents:function(){this.urlAPI=(window.createObjectURL&&window)||(window.URL&&URL.revokeObjectURL&&URL)||(window.webkitURL&&webkitURL);this.bodyEl=this.el.select('.roo-upload-cropbox-body',true).first();
 this.bodyEl.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.previewEl=this.el.select('.roo-upload-cropbox-preview',true).first();this.previewEl.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.thumbEl=this.el.select('.roo-upload-cropbox-thumb',true).first();
@@ -998,19 +998,22 @@ this.notifyEl.dom.innerHTML=this.emptyText;},resize:function(){if(this.fireEvent
 break;case 'picture':this.beforeSelectFile(e);break;case 'trash':this.trash(e);break;case 'crop':this.crop(e);break;case 'download':this.download(e);break;default:break;}this.fireEvent('footerbuttonclick',this,A);},beforeSelectFile:function(e){this.fireEvent('beforeselectfile',this);
 },trash:function(e){this.fireEvent('trash',this);},download:function(e){this.fireEvent('download',this);},loadCanvas:function(A){if(this.fireEvent('beforeloadcanvas',this,A)!=false){this.reset();this.imageEl=document.createElement('img');var B=this;this.imageEl.addEventListener("load",function(){B.onLoadCanvas();
 });this.imageEl.src=A;}},onLoadCanvas:function(){this.bodyEl.un('click',this.beforeSelectFile,this);this.notifyEl.hide();this.thumbEl.show();this.footerEl.show();this.imageEl.OriginWidth=this.imageEl.naturalWidth||this.imageEl.width;this.imageEl.OriginHeight=this.imageEl.naturalHeight||this.imageEl.height;
-this.setThumbBoxPosition();this.baseRotateLevel();this.baseScaleLevel();this.draw();this.resize();this.canvasLoaded=true;},setCanvasPosition:function(){if(!this.canvasEl){return;}var pw=Math.ceil((this.bodyEl.getWidth()-this.canvasEl.width)/2);var ph=Math.ceil((this.bodyEl.getHeight()-this.canvasEl.height)/2);
-this.previewEl.setLeft(pw);this.previewEl.setTop(ph);},onMouseDown:function(e){e.stopEvent();this.dragable=true;this.pinching=false;this.mouseX=Roo.isTouch?e.browserEvent.touches[0].pageX:e.getPageX();this.mouseY=Roo.isTouch?e.browserEvent.touches[0].pageY:e.getPageY();
-},onMouseMove:function(e){e.stopEvent();if(!this.canvasLoaded){return;}if(!this.dragable){return;}var A=Math.ceil(this.thumbEl.getLeft(true));var B=Math.ceil(this.thumbEl.getTop(true));var C=Math.ceil(A+this.thumbEl.getWidth()-this.canvasEl.width);var D=Math.ceil(B+this.thumbEl.getHeight()-this.canvasEl.height);
-var x=Roo.isTouch?e.browserEvent.touches[0].pageX:e.getPageX();var y=Roo.isTouch?e.browserEvent.touches[0].pageY:e.getPageY();x=x-this.mouseX;y=y-this.mouseY;var E=Math.ceil(x+this.previewEl.getLeft(true));var F=Math.ceil(y+this.previewEl.getTop(true));E=(A<E)?A:((C>E)?C:E);
-F=(B<F)?B:((D>F)?D:F);this.previewEl.setLeft(E);this.previewEl.setTop(F);this.mouseX=Roo.isTouch?e.browserEvent.touches[0].pageX:e.getPageX();this.mouseY=Roo.isTouch?e.browserEvent.touches[0].pageY:e.getPageY();},onMouseUp:function(e){e.stopEvent();this.dragable=false;
-},onMouseWheel:function(e){e.stopEvent();this.startScale=this.scale;this.scale=(e.getWheelDelta()==1)?(this.scale+1):(this.scale-1);if(!this.zoomable()){this.scale=this.startScale;return;}this.draw();return;},zoomable:function(){var A=this.thumbEl.getWidth()/this.minWidth;
-var B=Math.ceil(this.imageEl.OriginWidth*this.getScaleLevel());var C=Math.ceil(this.imageEl.OriginHeight*this.getScaleLevel());if((this.rotate==0||this.rotate==180)&&(B/A<this.minWidth||B/A>this.imageEl.OriginWidth||C/A<this.minHeight||C/A>this.imageEl.OriginHeight)){return false;
-}if((this.rotate==90||this.rotate==270)&&(B/A<this.minHeight||B/A>this.imageEl.OriginWidth||C/A<this.minWidth||C/A>this.imageEl.OriginHeight)){return false;}return true;},onRotateLeft:function(e){var A=this.thumbEl.getWidth()/this.minWidth;if(this.canvasEl.height<this.thumbEl.getWidth()||this.canvasEl.width<this.thumbEl.getHeight()){var bw=this.canvasEl.width/this.getScaleLevel();
-var bh=this.canvasEl.height/this.getScaleLevel();this.startScale=this.scale;while(this.getScaleLevel()<A){this.scale=this.scale+1;if(!this.zoomable()){break;}if(bw*this.getScaleLevel()<this.thumbEl.getHeight()||bh*this.getScaleLevel()<this.thumbEl.getWidth()){continue;
-}this.rotate=(this.rotate<90)?270:this.rotate-90;this.draw();return;}this.scale=this.startScale;this.onRotateFail();return false;}this.rotate=(this.rotate<90)?270:this.rotate-90;this.draw();},onRotateRight:function(e){var A=this.thumbEl.getWidth()/this.minWidth;
-if(this.canvasEl.height<this.thumbEl.getWidth()||this.canvasEl.width<this.thumbEl.getHeight()){var bw=this.canvasEl.width/this.getScaleLevel();var bh=this.canvasEl.height/this.getScaleLevel();this.startScale=this.scale;while(this.getScaleLevel()<A){this.scale=this.scale+1;
-if(!this.zoomable()){break;}if(bw*this.getScaleLevel()<this.thumbEl.getHeight()||bh*this.getScaleLevel()<this.thumbEl.getWidth()){continue;}this.rotate=(this.rotate>180)?0:this.rotate+90;this.draw();return;}this.scale=this.startScale;this.onRotateFail();return false;
-}this.rotate=(this.rotate>180)?0:this.rotate+90;this.draw();},onRotateFail:function(){this.errorEl.show(true);var A=this;(function(){A.errorEl.hide(true);}).defer(this.errorTimeout);},draw:function(){this.previewEl.dom.innerHTML='';var A=document.createElement("canvas");
+this.baseRotateLevel();if(this.isDocument){this.setThumbBoxSize();}this.setThumbBoxPosition();this.baseScaleLevel();this.draw();this.resize();this.canvasLoaded=true;},setCanvasPosition:function(){if(!this.canvasEl){return;}var pw=Math.ceil((this.bodyEl.getWidth()-this.canvasEl.width)/2);
+var ph=Math.ceil((this.bodyEl.getHeight()-this.canvasEl.height)/2);this.previewEl.setLeft(pw);this.previewEl.setTop(ph);},onMouseDown:function(e){e.stopEvent();this.dragable=true;this.pinching=false;if(this.isDocument&&(this.canvasEl.width<this.thumbEl.getWidth()||this.canvasEl.height<this.thumbEl.getHeight())){this.dragable=false;
+return;}this.mouseX=Roo.isTouch?e.browserEvent.touches[0].pageX:e.getPageX();this.mouseY=Roo.isTouch?e.browserEvent.touches[0].pageY:e.getPageY();},onMouseMove:function(e){e.stopEvent();if(!this.canvasLoaded){return;}if(!this.dragable){return;}var A=Math.ceil(this.thumbEl.getLeft(true));
+var B=Math.ceil(this.thumbEl.getTop(true));var C=Math.ceil(A+this.thumbEl.getWidth()-this.canvasEl.width);var D=Math.ceil(B+this.thumbEl.getHeight()-this.canvasEl.height);var x=Roo.isTouch?e.browserEvent.touches[0].pageX:e.getPageX();var y=Roo.isTouch?e.browserEvent.touches[0].pageY:e.getPageY();
+x=x-this.mouseX;y=y-this.mouseY;var E=Math.ceil(x+this.previewEl.getLeft(true));var F=Math.ceil(y+this.previewEl.getTop(true));E=(A<E)?A:((C>E)?C:E);F=(B<F)?B:((D>F)?D:F);this.previewEl.setLeft(E);this.previewEl.setTop(F);this.mouseX=Roo.isTouch?e.browserEvent.touches[0].pageX:e.getPageX();
+this.mouseY=Roo.isTouch?e.browserEvent.touches[0].pageY:e.getPageY();},onMouseUp:function(e){e.stopEvent();this.dragable=false;},onMouseWheel:function(e){e.stopEvent();this.startScale=this.scale;this.scale=(e.getWheelDelta()==1)?(this.scale+1):(this.scale-1);
+if(!this.zoomable()){this.scale=this.startScale;return;}this.draw();return;},zoomable:function(){var A=this.thumbEl.getWidth()/this.minWidth;if(this.minWidth<this.minHeight){A=this.thumbEl.getHeight()/this.minHeight;}var B=Math.ceil(this.imageEl.OriginWidth*this.getScaleLevel()/A);
+var C=Math.ceil(this.imageEl.OriginHeight*this.getScaleLevel()/A);if(this.isDocument&&(this.rotate==0||this.rotate==180)&&(B>this.imageEl.OriginWidth||C>this.imageEl.OriginHeight||(B<this.minWidth&&C<this.minHeight))){return false;}if(this.isDocument&&(this.rotate==90||this.rotate==270)&&(B>this.imageEl.OriginWidth||C>this.imageEl.OriginHeight||(B<this.minHeight&&C<this.minWidth))){return false;
+}if(!this.isDocument&&(this.rotate==0||this.rotate==180)&&(B<this.minWidth||B>this.imageEl.OriginWidth||C<this.minHeight||C>this.imageEl.OriginHeight)){return false;}if(!this.isDocument&&(this.rotate==90||this.rotate==270)&&(B<this.minHeight||B>this.imageEl.OriginWidth||C<this.minWidth||C>this.imageEl.OriginHeight)){return false;
+}return true;},onRotateLeft:function(e){if(!this.isDocument&&(this.canvasEl.height<this.thumbEl.getWidth()||this.canvasEl.width<this.thumbEl.getHeight())){var A=this.thumbEl.getWidth()/this.minWidth;var bw=Math.ceil(this.canvasEl.width/this.getScaleLevel());
+var bh=Math.ceil(this.canvasEl.height/this.getScaleLevel());this.startScale=this.scale;while(this.getScaleLevel()<A){this.scale=this.scale+1;if(!this.zoomable()){break;}if(Math.ceil(bw*this.getScaleLevel())<this.thumbEl.getHeight()||Math.ceil(bh*this.getScaleLevel())<this.thumbEl.getWidth()){continue;
+}this.rotate=(this.rotate<90)?270:this.rotate-90;this.draw();return;}this.scale=this.startScale;this.onRotateFail();return false;}this.rotate=(this.rotate<90)?270:this.rotate-90;if(this.isDocument){this.setThumbBoxSize();this.setThumbBoxPosition();this.setCanvasPosition();
+}this.draw();this.fireEvent('rotate',this,'left');},onRotateRight:function(e){if(!this.isDocument&&(this.canvasEl.height<this.thumbEl.getWidth()||this.canvasEl.width<this.thumbEl.getHeight())){var A=this.thumbEl.getWidth()/this.minWidth;var bw=Math.ceil(this.canvasEl.width/this.getScaleLevel());
+var bh=Math.ceil(this.canvasEl.height/this.getScaleLevel());this.startScale=this.scale;while(this.getScaleLevel()<A){this.scale=this.scale+1;if(!this.zoomable()){break;}if(Math.ceil(bw*this.getScaleLevel())<this.thumbEl.getHeight()||Math.ceil(bh*this.getScaleLevel())<this.thumbEl.getWidth()){continue;
+}this.rotate=(this.rotate>180)?0:this.rotate+90;this.draw();return;}this.scale=this.startScale;this.onRotateFail();return false;}this.rotate=(this.rotate>180)?0:this.rotate+90;if(this.isDocument){this.setThumbBoxSize();this.setThumbBoxPosition();this.setCanvasPosition();
+}this.draw();this.fireEvent('rotate',this,'right');},onRotateFail:function(){this.errorEl.show(true);var A=this;(function(){A.errorEl.hide(true);}).defer(this.errorTimeout);},draw:function(){this.previewEl.dom.innerHTML='';var A=document.createElement("canvas");
 var B=A.getContext("2d");A.width=this.imageEl.OriginWidth*this.getScaleLevel();A.height=this.imageEl.OriginWidth*this.getScaleLevel();var C=this.imageEl.OriginWidth/2;if(this.imageEl.OriginWidth<this.imageEl.OriginHeight){A.width=this.imageEl.OriginHeight*this.getScaleLevel();
 A.height=this.imageEl.OriginHeight*this.getScaleLevel();C=this.imageEl.OriginHeight/2;}B.scale(this.getScaleLevel(),this.getScaleLevel());B.translate(C,C);B.rotate(this.rotate*Math.PI/180);B.drawImage(this.imageEl,0,0,this.imageEl.OriginWidth,this.imageEl.OriginHeight,C*-1,C*-1,this.imageEl.OriginWidth,this.imageEl.OriginHeight);
 this.canvasEl=document.createElement("canvas");this.contextEl=this.canvasEl.getContext("2d");switch(this.rotate){case 0:this.canvasEl.width=this.imageEl.OriginWidth*this.getScaleLevel();this.canvasEl.height=this.imageEl.OriginHeight*this.getScaleLevel();this.contextEl.drawImage(A,0,0,this.canvasEl.width,this.canvasEl.height,0,0,this.canvasEl.width,this.canvasEl.height);
@@ -1019,20 +1022,39 @@ break;}this.contextEl.drawImage(A,0,0,this.canvasEl.width,this.canvasEl.height,0
 if(this.imageEl.OriginWidth>this.imageEl.OriginHeight){this.contextEl.drawImage(A,0,Math.abs(this.canvasEl.width-this.canvasEl.height),this.canvasEl.width,this.canvasEl.height,0,0,this.canvasEl.width,this.canvasEl.height);break;}this.contextEl.drawImage(A,Math.abs(this.canvasEl.width-this.canvasEl.height),0,this.canvasEl.width,this.canvasEl.height,0,0,this.canvasEl.width,this.canvasEl.height);
 break;case 270:this.canvasEl.width=this.imageEl.OriginHeight*this.getScaleLevel();this.canvasEl.height=this.imageEl.OriginWidth*this.getScaleLevel();if(this.imageEl.OriginWidth>this.imageEl.OriginHeight){this.contextEl.drawImage(A,0,0,this.canvasEl.width,this.canvasEl.height,0,0,this.canvasEl.width,this.canvasEl.height);
 break;}this.contextEl.drawImage(A,0,Math.abs(this.canvasEl.width-this.canvasEl.height),this.canvasEl.width,this.canvasEl.height,0,0,this.canvasEl.width,this.canvasEl.height);break;default:break;}this.previewEl.appendChild(this.canvasEl);this.setCanvasPosition();
-},crop:function(){if(!this.canvasLoaded){return;}var A=document.createElement("canvas");var B=A.getContext("2d");A.width=this.minWidth;A.height=this.minHeight;var C=this.thumbEl.getWidth();var D=this.thumbEl.getHeight();var x=this.thumbEl.getLeft(true)-this.previewEl.getLeft(true);
-var y=this.thumbEl.getTop(true)-this.previewEl.getTop(true);if(this.canvasEl.width-C<x){x=this.canvasEl.width-C;}if(this.canvasEl.height-D<y){y=this.canvasEl.height-D;}x=x<0?0:x;y=y<0?0:y;B.drawImage(this.canvasEl,x,y,C,D,0,0,A.width,A.height);this.cropData=A.toDataURL(this.cropType);
-this.fireEvent('crop',this,this.cropData);},setThumbBoxSize:function(){var A=300;var B=Math.ceil(this.minWidth*A/this.minHeight);if(this.minWidth>this.minHeight){B=300;A=Math.ceil(this.minHeight*B/this.minWidth);}this.thumbEl.setStyle({width:B+'px',height:A+'px'});
-return;},setThumbBoxPosition:function(){var x=Math.ceil((this.bodyEl.getWidth()-this.thumbEl.getWidth())/2);var y=Math.ceil((this.bodyEl.getHeight()-this.thumbEl.getHeight())/2);this.thumbEl.setLeft(x);this.thumbEl.setTop(y);},baseRotateLevel:function(){this.baseRotate=1;
-if(typeof(this.exif)!='undefined'&&typeof(this.exif[Roo.bootstrap.UploadCropbox['tags']['Orientation']])!='undefined'&&[1,3,6,8].indexOf(this.exif[Roo.bootstrap.UploadCropbox['tags']['Orientation']])!=-1){this.baseRotate=this.exif[Roo.bootstrap.UploadCropbox['tags']['Orientation']];
-}this.rotate=Roo.bootstrap.UploadCropbox['Orientation'][this.baseRotate];},baseScaleLevel:function(){var A,B;if(this.baseRotate==6||this.baseRotate==8){A=this.thumbEl.getHeight();this.baseScale=B/this.imageEl.OriginHeight;if(this.imageEl.OriginHeight*this.baseScale<this.thumbEl.getWidth()){B=this.thumbEl.getWidth();
-this.baseScale=B/this.imageEl.OriginHeight;}if(this.imageEl.OriginWidth>this.imageEl.OriginHeight){B=this.thumbEl.getWidth();this.baseScale=B/this.imageEl.OriginHeight;if(this.imageEl.OriginWidth*this.baseScale<this.thumbEl.getHeight()){A=this.thumbEl.getHeight();
-this.baseScale=A/this.imageEl.OriginWidth;}}return;}A=this.thumbEl.getWidth();this.baseScale=A/this.imageEl.OriginWidth;if(this.imageEl.OriginHeight*this.baseScale<this.thumbEl.getHeight()){B=this.thumbEl.getHeight();this.baseScale=B/this.imageEl.OriginHeight;
-}if(this.imageEl.OriginWidth>this.imageEl.OriginHeight){B=this.thumbEl.getHeight();this.baseScale=B/this.imageEl.OriginHeight;if(this.imageEl.OriginWidth*this.baseScale<this.thumbEl.getWidth()){A=this.thumbEl.getWidth();this.baseScale=A/this.imageEl.OriginWidth;
-}}return;},getScaleLevel:function(){return this.baseScale*Math.pow(1.1,this.scale);},onTouchStart:function(e){if(!this.canvasLoaded){this.beforeSelectFile(e);return;}var A=e.browserEvent.touches;if(!A){return;}if(A.length==1){this.onMouseDown(e);return;}if(A.length!=2){return;
-}var B=[];for(var i=0,C;C=A[i];i++){B.push(C.pageX,C.pageY);}var x=Math.pow(B[0]-B[2],2);var y=Math.pow(B[1]-B[3],2);this.startDistance=Math.sqrt(x+y);this.startScale=this.scale;this.pinching=true;this.dragable=false;},onTouchMove:function(e){if(!this.pinching&&!this.dragable){return;
-}var A=e.browserEvent.touches;if(!A){return;}if(this.dragable){this.onMouseMove(e);return;}var B=[];for(var i=0,C;C=A[i];i++){B.push(C.pageX,C.pageY);}var x=Math.pow(B[0]-B[2],2);var y=Math.pow(B[1]-B[3],2);this.endDistance=Math.sqrt(x+y);this.scale=this.startScale+Math.floor(Math.log(this.endDistance/this.startDistance)/Math.log(1.1));
-if(!this.zoomable()){this.scale=this.startScale;return;}this.draw();},onTouchEnd:function(e){this.pinching=false;this.dragable=false;},prepare:function(A){this.file=false;this.exif={};if(typeof(A)==='string'){this.loadCanvas(A);return;}if(!A.files||!A.files[0]||!this.urlAPI){return;
-}this.file=A.files[0];this.cropType=this.file.type;var B=this;if(this.fireEvent('prepare',this,this.file)!=false){var C=new FileReader();C.onload=function(e){if(e.target.error){Roo.log(e.target.error);return;}var D=e.target.result,E=new DataView(D),F=2,G=E.byteLength-4,H,I;
+},crop:function(){if(!this.canvasLoaded){return;}var A=document.createElement("canvas");var B=A.getContext("2d");A.width=(this.imageEl.OriginWidth>this.imageEl.OriginHeight)?this.imageEl.OriginWidth:this.imageEl.OriginHeight;A.height=(this.imageEl.OriginWidth>this.imageEl.OriginHeight)?this.imageEl.OriginWidth:this.imageEl.OriginHeight;
+var C=A.width/2;B.translate(C,C);B.rotate(this.rotate*Math.PI/180);B.drawImage(this.imageEl,0,0,this.imageEl.OriginWidth,this.imageEl.OriginHeight,C*-1,C*-1,this.imageEl.OriginWidth,this.imageEl.OriginHeight);var D=document.createElement("canvas");var E=D.getContext("2d");
+D.width=this.minWidth;D.height=this.minHeight;switch(this.rotate){case 0:var F=(this.thumbEl.getWidth()/this.getScaleLevel()>this.imageEl.OriginWidth)?this.imageEl.OriginWidth:(this.thumbEl.getWidth()/this.getScaleLevel());var G=(this.thumbEl.getHeight()/this.getScaleLevel()>this.imageEl.OriginHeight)?this.imageEl.OriginHeight:(this.thumbEl.getHeight()/this.getScaleLevel());
+var x=(this.thumbEl.getLeft(true)>this.previewEl.getLeft(true))?0:((this.previewEl.getLeft(true)-this.thumbEl.getLeft(true))/this.getScaleLevel());var y=(this.thumbEl.getTop(true)>this.previewEl.getTop(true))?0:((this.previewEl.getTop(true)-this.thumbEl.getTop(true))/this.getScaleLevel());
+var H=this.minWidth-2*x;var I=this.minHeight-2*y;var J=1;if((x==0&&y==0)||(x==0&&y>0)){J=H/F;}if(x>0&&y==0){J=I/G;}if(x>0&&y>0){J=H/F;if(F<G){J=I/G;}}E.scale(J,J);var sx=Math.min(this.canvasEl.width-this.thumbEl.getWidth(),this.thumbEl.getLeft(true)-this.previewEl.getLeft(true));
+var sy=Math.min(this.canvasEl.height-this.thumbEl.getHeight(),this.thumbEl.getTop(true)-this.previewEl.getTop(true));sx=sx<0?0:(sx/this.getScaleLevel());sy=sy<0?0:(sy/this.getScaleLevel());E.drawImage(A,sx,sy,F,G,x,y,F,G);break;case 90:var F=(this.thumbEl.getWidth()/this.getScaleLevel()>this.imageEl.OriginHeight)?this.imageEl.OriginHeight:(this.thumbEl.getWidth()/this.getScaleLevel());
+var G=(this.thumbEl.getHeight()/this.getScaleLevel()>this.imageEl.OriginWidth)?this.imageEl.OriginWidth:(this.thumbEl.getHeight()/this.getScaleLevel());var x=(this.thumbEl.getLeft(true)>this.previewEl.getLeft(true))?0:((this.previewEl.getLeft(true)-this.thumbEl.getLeft(true))/this.getScaleLevel());
+var y=(this.thumbEl.getTop(true)>this.previewEl.getTop(true))?0:((this.previewEl.getTop(true)-this.thumbEl.getTop(true))/this.getScaleLevel());var H=this.minWidth-2*x;var I=this.minHeight-2*y;var J=1;if((x==0&&y==0)||(x==0&&y>0)){J=H/F;}if(x>0&&y==0){J=I/G;
+}if(x>0&&y>0){J=H/F;if(F<G){J=I/G;}}E.scale(J,J);var sx=Math.min(this.canvasEl.width-this.thumbEl.getWidth(),this.thumbEl.getLeft(true)-this.previewEl.getLeft(true));var sy=Math.min(this.canvasEl.height-this.thumbEl.getHeight(),this.thumbEl.getTop(true)-this.previewEl.getTop(true));
+sx=sx<0?0:(sx/this.getScaleLevel());sy=sy<0?0:(sy/this.getScaleLevel());sx+=(this.imageEl.OriginWidth>this.imageEl.OriginHeight)?Math.abs(this.imageEl.OriginWidth-this.imageEl.OriginHeight):0;E.drawImage(A,sx,sy,F,G,x,y,F,G);break;case 180:var F=(this.thumbEl.getWidth()/this.getScaleLevel()>this.imageEl.OriginWidth)?this.imageEl.OriginWidth:(this.thumbEl.getWidth()/this.getScaleLevel());
+var G=(this.thumbEl.getHeight()/this.getScaleLevel()>this.imageEl.OriginHeight)?this.imageEl.OriginHeight:(this.thumbEl.getHeight()/this.getScaleLevel());var x=(this.thumbEl.getLeft(true)>this.previewEl.getLeft(true))?0:((this.previewEl.getLeft(true)-this.thumbEl.getLeft(true))/this.getScaleLevel());
+var y=(this.thumbEl.getTop(true)>this.previewEl.getTop(true))?0:((this.previewEl.getTop(true)-this.thumbEl.getTop(true))/this.getScaleLevel());var H=this.minWidth-2*x;var I=this.minHeight-2*y;var J=1;if((x==0&&y==0)||(x==0&&y>0)){J=H/F;}if(x>0&&y==0){J=I/G;
+}if(x>0&&y>0){J=H/F;if(F<G){J=I/G;}}E.scale(J,J);var sx=Math.min(this.canvasEl.width-this.thumbEl.getWidth(),this.thumbEl.getLeft(true)-this.previewEl.getLeft(true));var sy=Math.min(this.canvasEl.height-this.thumbEl.getHeight(),this.thumbEl.getTop(true)-this.previewEl.getTop(true));
+sx=sx<0?0:(sx/this.getScaleLevel());sy=sy<0?0:(sy/this.getScaleLevel());sx+=(this.imageEl.OriginWidth>this.imageEl.OriginHeight)?0:Math.abs(this.imageEl.OriginWidth-this.imageEl.OriginHeight);sy+=(this.imageEl.OriginWidth>this.imageEl.OriginHeight)?Math.abs(this.imageEl.OriginWidth-this.imageEl.OriginHeight):0;
+E.drawImage(A,sx,sy,F,G,x,y,F,G);break;case 270:var F=(this.thumbEl.getWidth()/this.getScaleLevel()>this.imageEl.OriginHeight)?this.imageEl.OriginHeight:(this.thumbEl.getWidth()/this.getScaleLevel());var G=(this.thumbEl.getHeight()/this.getScaleLevel()>this.imageEl.OriginWidth)?this.imageEl.OriginWidth:(this.thumbEl.getHeight()/this.getScaleLevel());
+var x=(this.thumbEl.getLeft(true)>this.previewEl.getLeft(true))?0:((this.previewEl.getLeft(true)-this.thumbEl.getLeft(true))/this.getScaleLevel());var y=(this.thumbEl.getTop(true)>this.previewEl.getTop(true))?0:((this.previewEl.getTop(true)-this.thumbEl.getTop(true))/this.getScaleLevel());
+var H=this.minWidth-2*x;var I=this.minHeight-2*y;var J=1;if((x==0&&y==0)||(x==0&&y>0)){J=H/F;}if(x>0&&y==0){J=I/G;}if(x>0&&y>0){J=H/F;if(F<G){J=I/G;}}E.scale(J,J);var sx=Math.min(this.canvasEl.width-this.thumbEl.getWidth(),this.thumbEl.getLeft(true)-this.previewEl.getLeft(true));
+var sy=Math.min(this.canvasEl.height-this.thumbEl.getHeight(),this.thumbEl.getTop(true)-this.previewEl.getTop(true));sx=sx<0?0:(sx/this.getScaleLevel());sy=sy<0?0:(sy/this.getScaleLevel());sy+=(this.imageEl.OriginWidth>this.imageEl.OriginHeight)?0:Math.abs(this.imageEl.OriginWidth-this.imageEl.OriginHeight);
+E.drawImage(A,sx,sy,F,G,x,y,F,G);break;default:break;}this.cropData=D.toDataURL(this.cropType);this.fireEvent('crop',this,this.cropData);},setThumbBoxSize:function(){var A,B;if(this.isDocument&&typeof(this.imageEl)!='undefined'){A=(this.imageEl.OriginWidth>this.imageEl.OriginHeight)?Math.max(this.minWidth,this.minHeight):Math.min(this.minWidth,this.minHeight);
+B=(this.imageEl.OriginWidth>this.imageEl.OriginHeight)?Math.min(this.minWidth,this.minHeight):Math.max(this.minWidth,this.minHeight);this.minWidth=A;this.minHeight=B;if(this.rotate==90||this.rotate==270){this.minWidth=B;this.minHeight=A;}}B=300;A=Math.ceil(this.minWidth*B/this.minHeight);
+if(this.minWidth>this.minHeight){A=300;B=Math.ceil(this.minHeight*A/this.minWidth);}this.thumbEl.setStyle({width:A+'px',height:B+'px'});return;},setThumbBoxPosition:function(){var x=Math.ceil((this.bodyEl.getWidth()-this.thumbEl.getWidth())/2);var y=Math.ceil((this.bodyEl.getHeight()-this.thumbEl.getHeight())/2);
+this.thumbEl.setLeft(x);this.thumbEl.setTop(y);},baseRotateLevel:function(){this.baseRotate=1;if(typeof(this.exif)!='undefined'&&typeof(this.exif[Roo.bootstrap.UploadCropbox['tags']['Orientation']])!='undefined'&&[1,3,6,8].indexOf(this.exif[Roo.bootstrap.UploadCropbox['tags']['Orientation']])!=-1){this.baseRotate=this.exif[Roo.bootstrap.UploadCropbox['tags']['Orientation']];
+}this.rotate=Roo.bootstrap.UploadCropbox['Orientation'][this.baseRotate];},baseScaleLevel:function(){var A,B;if(this.isDocument){if(this.baseRotate==6||this.baseRotate==8){B=this.thumbEl.getHeight();this.baseScale=B/this.imageEl.OriginWidth;if(this.imageEl.OriginHeight*this.baseScale>this.thumbEl.getWidth()){A=this.thumbEl.getWidth();
+this.baseScale=A/this.imageEl.OriginHeight;}return;}B=this.thumbEl.getHeight();this.baseScale=B/this.imageEl.OriginHeight;if(this.imageEl.OriginWidth*this.baseScale>this.thumbEl.getWidth()){A=this.thumbEl.getWidth();this.baseScale=A/this.imageEl.OriginWidth;
+}return;}if(this.baseRotate==6||this.baseRotate==8){A=this.thumbEl.getHeight();this.baseScale=A/this.imageEl.OriginHeight;if(this.imageEl.OriginHeight*this.baseScale<this.thumbEl.getWidth()){B=this.thumbEl.getWidth();this.baseScale=B/this.imageEl.OriginHeight;
+}if(this.imageEl.OriginWidth>this.imageEl.OriginHeight){B=this.thumbEl.getWidth();this.baseScale=B/this.imageEl.OriginHeight;if(this.imageEl.OriginWidth*this.baseScale<this.thumbEl.getHeight()){A=this.thumbEl.getHeight();this.baseScale=A/this.imageEl.OriginWidth;
+}}return;}A=this.thumbEl.getWidth();this.baseScale=A/this.imageEl.OriginWidth;if(this.imageEl.OriginHeight*this.baseScale<this.thumbEl.getHeight()){B=this.thumbEl.getHeight();this.baseScale=B/this.imageEl.OriginHeight;}if(this.imageEl.OriginWidth>this.imageEl.OriginHeight){B=this.thumbEl.getHeight();
+this.baseScale=B/this.imageEl.OriginHeight;if(this.imageEl.OriginWidth*this.baseScale<this.thumbEl.getWidth()){A=this.thumbEl.getWidth();this.baseScale=A/this.imageEl.OriginWidth;}}return;},getScaleLevel:function(){return this.baseScale*Math.pow(1.1,this.scale);
+},onTouchStart:function(e){if(!this.canvasLoaded){this.beforeSelectFile(e);return;}var A=e.browserEvent.touches;if(!A){return;}if(A.length==1){this.onMouseDown(e);return;}if(A.length!=2){return;}var B=[];for(var i=0,C;C=A[i];i++){B.push(C.pageX,C.pageY);}var x=Math.pow(B[0]-B[2],2);
+var y=Math.pow(B[1]-B[3],2);this.startDistance=Math.sqrt(x+y);this.startScale=this.scale;this.pinching=true;this.dragable=false;},onTouchMove:function(e){if(!this.pinching&&!this.dragable){return;}var A=e.browserEvent.touches;if(!A){return;}if(this.dragable){this.onMouseMove(e);
+return;}var B=[];for(var i=0,C;C=A[i];i++){B.push(C.pageX,C.pageY);}var x=Math.pow(B[0]-B[2],2);var y=Math.pow(B[1]-B[3],2);this.endDistance=Math.sqrt(x+y);this.scale=this.startScale+Math.floor(Math.log(this.endDistance/this.startDistance)/Math.log(1.1));
+if(!this.zoomable()){this.scale=this.startScale;return;}this.draw();},onTouchEnd:function(e){this.pinching=false;this.dragable=false;},prepare:function(A){this.file=false;this.exif={};if(typeof(A)==='string'){this.loadCanvas(A);return;}if(!A||!this.urlAPI){return;
+}this.file=A;this.cropType=A.type;var B=this;if(this.fireEvent('prepare',this,this.file)!=false){var C=new FileReader();C.onload=function(e){if(e.target.error){Roo.log(e.target.error);return;}var D=e.target.result,E=new DataView(D),F=2,G=E.byteLength-4,H,I;
 if(E.getUint16(0)===0xffd8){while(F<G){H=E.getUint16(F);if((H>=0xffe0&&H<=0xffef)||H===0xfffe){I=E.getUint16(F+2)+2;if(F+I>E.byteLength){Roo.log('Invalid meta data: Invalid segment size.');break;}if(H==0xffe1){B.parseExifData(E,F,I);}F+=I;continue;}break;
 }}var J=B.urlAPI.createObjectURL(B.file);B.loadCanvas(J);return;};C.readAsArrayBuffer(this.file);}},parseExifData:function(A,B,C){var D=B+10,E,F;if(A.getUint32(B+4)!==0x45786966){return;}if(A.getUint32(B+4)!==0x45786966){return;}if(D+8>A.byteLength){Roo.log('Invalid Exif data: Invalid segment size.');
 return;}if(A.getUint16(B+8)!==0x0000){Roo.log('Invalid Exif data: Missing byte alignment offset.');return;}switch(A.getUint16(D)){case 0x4949:E=true;break;case 0x4D4D:E=false;break;default:Roo.log('Invalid Exif data: Invalid byte alignment marker.');return;
@@ -1042,26 +1064,32 @@ return;}E=A.getUint16(C,D);F=C+2+12*E;if(F+4>A.byteLength){Roo.log('Invalid Exif
 return;}if(E===1){return G.getValue(A,I,F);}J=[];for(i=0;i<E;i+=1){J[i]=G.getValue(A,I+i*G.size,F);}if(G.ascii){K='';for(i=0;i<J.length;i+=1){c=J[i];if(c==='\u0000'){break;}K+=c;}return K;}return J;}});Roo.apply(Roo.bootstrap.UploadCropbox,{tags:{'Orientation':0x0112
 },Orientation:{1:0,3:180,6:90,8:270},exifTagTypes:{1:{getValue:function(A,B){return A.getUint8(B);
 },size:1},2:{getValue:function(A,B){return String.fromCharCode(A.getUint8(B));},size:1,ascii:true},3:{getValue:function(A,B,C){return A.getUint16(B,C);},size:2},4:{getValue:function(A,B,C){return A.getUint32(B,C);},size:4},5:{getValue:function(A,B,C){return A.getUint32(B,C)/A.getUint32(B+4,C);
-},size:8},9:{getValue:function(A,B,C){return A.getInt32(B,C);},size:4},10:{getValue:function(A,B,C){return A.getInt32(B,C)/A.getInt32(B+4,C);},size:8}},footer:{STANDARD:[{tag:'div',cls:'btn-group roo-upload-cropbox-rotate-left',action:'rotate-left',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-undo"></i>'}]},{tag:'div',cls:'btn-group roo-upload-cropbox-picture',action:'picture',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-picture-o"></i>'}]},{tag:'div',cls:'btn-group roo-upload-cropbox-rotate-right',action:'rotate-right',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-repeat"></i>'}]}],DOCUMENT:[{tag:'div',cls:'btn-group roo-upload-cropbox-rotate-left',action:'rotate-left',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-undo"></i>'}]},{tag:'div',cls:'btn-group roo-upload-cropbox-download',action:'download',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-download"></i>'}]},{tag:'div',cls:'btn-group roo-upload-cropbox-crop',action:'crop',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-crop"></i>'}]},{tag:'div',cls:'btn-group roo-upload-cropbox-trash',action:'trash',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-trash"></i>'}]},{tag:'div',cls:'btn-group roo-upload-cropbox-rotate-right',action:'rotate-right',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-repeat"></i>'}]}]}});
+},size:8},9:{getValue:function(A,B,C){return A.getInt32(B,C);},size:4},10:{getValue:function(A,B,C){return A.getInt32(B,C)/A.getInt32(B+4,C);},size:8}},footer:{STANDARD:[{tag:'div',cls:'btn-group roo-upload-cropbox-rotate-left',action:'rotate-left',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-undo"></i>'}]},{tag:'div',cls:'btn-group roo-upload-cropbox-picture',action:'picture',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-picture-o"></i>'}]},{tag:'div',cls:'btn-group roo-upload-cropbox-rotate-right',action:'rotate-right',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-repeat"></i>'}]}],DOCUMENT:[{tag:'div',cls:'btn-group roo-upload-cropbox-rotate-left',action:'rotate-left',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-undo"></i>'}]},{tag:'div',cls:'btn-group roo-upload-cropbox-download',action:'download',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-download"></i>'}]},{tag:'div',cls:'btn-group roo-upload-cropbox-crop',action:'crop',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-crop"></i>'}]},{tag:'div',cls:'btn-group roo-upload-cropbox-trash',action:'trash',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-trash"></i>'}]},{tag:'div',cls:'btn-group roo-upload-cropbox-rotate-right',action:'rotate-right',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-repeat"></i>'}]}],ROTATOR:[{tag:'div',cls:'btn-group roo-upload-cropbox-rotate-left',action:'rotate-left',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-undo"></i>'}]},{tag:'div',cls:'btn-group roo-upload-cropbox-rotate-right',action:'rotate-right',cn:[{tag:'button',cls:'btn btn-default',html:'<i class="fa fa-repeat"></i>'}]}]}});
 
 // Roo/bootstrap/DocumentManager.js
-Roo.bootstrap.DocumentManager=function(A){Roo.bootstrap.DocumentManager.superclass.constructor.call(this,A);this.addEvents({"initial":true,"inspect":true,"exception":true,"prepare":true,"remove":true,"refresh":true,"click":true});};Roo.extend(Roo.bootstrap.DocumentManager,Roo.bootstrap.Component,{boxes:12,inputName:'',minWidth:300,minHeight:300,thumbSize:300,multiple:true,files:[],method:'POST',url:'',paramName:'imageUpload',fieldLabel:'',labelWidth:4,labelAlign:'left',getAutoCreate:function(){var A={tag:'div',cls:'roo-document-manager',cn:[{tag:'input',cls:'roo-document-manager-selector',type:'file'},{tag:'div',cls:'roo-document-manager-uploader',cn:[{tag:'div',cls:'roo-document-manager-upload-btn',html:'<i class="fa fa-plus"></i>'}]}]};
+Roo.bootstrap.DocumentManager=function(A){Roo.bootstrap.DocumentManager.superclass.constructor.call(this,A);this.addEvents({"initial":true,"inspect":true,"exception":true,"prepare":true,"remove":true,"refresh":true,"click":true,"edit":true});};Roo.extend(Roo.bootstrap.DocumentManager,Roo.bootstrap.Component,{boxes:12,inputName:'',minWidth:300,minHeight:300,thumbSize:300,multiple:true,files:[],method:'POST',url:'',paramName:'imageUpload',fieldLabel:'',labelWidth:4,labelAlign:'left',editable:true,delegates:[],getAutoCreate:function(){var A={tag:'div',cls:'roo-document-manager',cn:[{tag:'input',cls:'roo-document-manager-selector',type:'file'},{tag:'div',cls:'roo-document-manager-uploader',cn:[{tag:'div',cls:'roo-document-manager-upload-btn',html:'<i class="fa fa-plus"></i>'}]}]};
 var B=[{tag:'div',cls:'column col-md-12',cn:A}];if(this.fieldLabel.length){B=[{tag:'div',cls:'column col-md-12',html:this.fieldLabel},{tag:'div',cls:'column col-md-12',cn:A}];if(this.labelAlign=='left'){B=[{tag:'div',cls:'column col-md-'+this.labelWidth,html:this.fieldLabel},{tag:'div',cls:'column col-md-'+(12-this.labelWidth),cn:A}];
 }}var C={tag:'div',cls:'row clearfix',cn:B};return C;},initEvents:function(){this.managerEl=this.el.select('.roo-document-manager',true).first();this.managerEl.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.selectorEl=this.el.select('.roo-document-manager-selector',true).first();
-this.selectorEl.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.selectorEl.hide();if(this.multiple){this.selectorEl.attr('multiple','multiple');}this.selectorEl.on('change',this.onSelect,this);this.uploader=this.el.select('.roo-document-manager-uploader',true).first();
-this.uploader.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.uploader.on('click',this.onUpload,this);var A=this;window.addEventListener("resize",function(){A.refresh();});this.fireEvent('initial',this);},onUpload:function(e){e.preventDefault();
-this.selectorEl.dom.click();},onSelect:function(e){e.preventDefault();if(typeof(this.selectorEl.dom.files)=='undefined'||!this.selectorEl.dom.files.length){return;}Roo.each(this.selectorEl.dom.files,function(A){if(this.fireEvent('inspect',this,A)!=false){this.files.push(A);
-}},this);this.process();},process:function(){this.selectorEl.dom.value='';if(!this.files.length){return;}if(this.files.length>this.boxes){this.files=this.files.slice(0,this.boxes);}var A=new XMLHttpRequest();Roo.each(this.files,function(G,H){if(typeof(G.id)!='undefined'&&G.id*1>0){return;
-}G.xhr=A;this.managerEl.createChild({tag:'div',cls:'roo-document-manager-loading',cn:[{tag:'div',tooltip:G.name,cls:'roo-document-manager-thumb',html:'<i class="fa fa-spinner fa-pulse"></i>'}]});},this);if(this.files.length>this.boxes-1){this.uploader.hide();
-}var B={"Accept":"application/json","Cache-Control":"no-cache","X-Requested-With":"XMLHttpRequest"};A.open(this.method,this.url,true);for(var C in B){var D=B[C];if(D){A.setRequestHeader(C,D);}}var E=this;A.onload=function(){E.xhrOnLoad(A);};A.onerror=function(){E.xhrOnError(A);
-};var F=new FormData();F.append('returnHTML','NO');Roo.each(this.files,function(G,H){if(typeof(G.id)!='undefined'&&G.id*1>0){return;}F.append(this.getParamName(H),G,G.name);},this);if(this.fireEvent('prepare',this,F)!=false){A.send(F);};},getParamName:function(i){if(!this.multiple){return this.paramName;
-}return this.paramName+"_"+i;},refresh:function(){Roo.each(this.managerEl.select('.roo-document-manager-loading',true).elements,function(el){el.remove();},this);var A=[];Roo.each(this.files,function(B){if(typeof(B.id)=='undefined'||B.id*1<1){return;}if(B.target){A.push(B);
-return;}var C=this.managerEl.createChild({tag:'div',cls:'roo-document-manager-preview',cn:[{tag:'div',tooltip:B.filename,cls:'roo-document-manager-thumb',html:'<img src="'+baseURL+'/Images/Thumb/'+this.thumbSize+'/'+B.id+'/'+B.filename+'">'},{tag:'button',cls:'close',html:'x'}]});
-var D=C.select('button.close',true).first();D.on('click',this.onRemove,this,B);B.target=C;var E=C.select('img',true).first();E.on('click',this.onClick,this,B);A.push(B);return;},this);this.files=A;this.uploader.show();if(this.files.length>this.boxes-1){this.uploader.hide();
-}Roo.isTouch?this.closable(false):this.closable(true);this.fireEvent('refresh',this);},onRemove:function(e,el,o){e.preventDefault();this.fireEvent('remove',this,o);},remove:function(o){var A=[];Roo.each(this.files,function(B){if(typeof(B.id)=='undefined'||B.id*1<1||B.id!=o.id){A.push(B);
-return;}o.target.remove();},this);this.files=A;this.refresh();},onClick:function(e,el,o){e.preventDefault();this.fireEvent('click',this,o);},closable:function(A){Roo.each(this.managerEl.select('.roo-document-manager-preview > button.close',true).elements,function(el){el.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';
-if(A){el.show();return;}el.hide();},this);},xhrOnLoad:function(A){if(A.readyState!==4){this.refresh();this.fireEvent('exception',this,A);return;}var B=Roo.decode(A.responseText);if(!B.success){this.refresh();this.fireEvent('exception',this,A);return;}var i=0;
-Roo.each(this.files,function(C,D){if(typeof(C.id)!='undefined'&&C.id*1>0){return;}this.files[D]=B.data[i];i++;return;},this);this.refresh();},xhrOnError:function(){Roo.log('xhr on error');var A=Roo.decode(xhr.responseText);Roo.log(A);}});
+this.selectorEl.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.selectorEl.hide();if(this.multiple){this.selectorEl.attr('multiple','multiple');}this.selectorEl.on('change',this.onFileSelected,this);this.uploader=this.el.select('.roo-document-manager-uploader',true).first();
+this.uploader.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.uploader.on('click',this.onUploaderClick,this);this.renderProgressDialog();var A=this;window.addEventListener("resize",function(){A.refresh();});this.fireEvent('initial',this);
+},renderProgressDialog:function(){var A=this;this.progressDialog=new Roo.bootstrap.Modal({cls:'roo-document-manager-progress-dialog',allow_close:false,title:'',buttons:[{name:'cancel',weight:'danger',html:'Cancel'}],listeners:{btnclick:function(){A.uploadCancel();
+this.hide();}}});this.progressDialog.render(Roo.get(document.body));this.progress=new Roo.bootstrap.Progress({cls:'roo-document-manager-progress',active:true,striped:true});this.progress.render(this.progressDialog.getChildContainer());this.progressBar=new Roo.bootstrap.ProgressBar({cls:'roo-document-manager-progress-bar',aria_valuenow:0,aria_valuemin:0,aria_valuemax:12,panel:'success'});
+this.progressBar.render(this.progress.getChildContainer());},onUploaderClick:function(e){e.preventDefault();this.selectorEl.dom.click();},onFileSelected:function(e){e.preventDefault();if(typeof(this.selectorEl.dom.files)=='undefined'||!this.selectorEl.dom.files.length){return;
+}Roo.each(this.selectorEl.dom.files,function(A){if(this.fireEvent('inspect',this,A)!=false){this.files.push(A);}},this);this.queue();},queue:function(){this.selectorEl.dom.value='';if(!this.files.length){return;}if(this.files.length>this.boxes){this.files=this.files.slice(0,this.boxes);
+}this.uploader.show();if(this.files.length>this.boxes-1){this.uploader.hide();}var A=this;var B=[];Roo.each(this.files,function(C){if(typeof(C.id)!='undefined'&&C.id*1>0){var f=this.renderPreview(C);B.push(f);return;}this.delegates.push((function(){A.process(C);
+}).createDelegate(this));},this);this.files=B;if(!this.delegates.length){this.refresh();return;}this.progressBar.aria_valuemax=this.delegates.length;this.arrange();return;},arrange:function(){if(!this.delegates.length){this.progressDialog.hide();this.refresh();
+return;}var A=this.delegates.shift();this.progressDialog.show();this.progressDialog.setTitle((this.progressBar.aria_valuemax-this.delegates.length)+' / '+this.progressBar.aria_valuemax);this.progressBar.update(this.progressBar.aria_valuemax-this.delegates.length);
+A();},refresh:function(){this.uploader.show();if(this.files.length>this.boxes-1){this.uploader.hide();}Roo.isTouch?this.closable(false):this.closable(true);this.fireEvent('refresh',this);},onRemove:function(e,el,o){e.preventDefault();this.fireEvent('remove',this,o);
+},remove:function(o){var A=[];Roo.each(this.files,function(B){if(typeof(B.id)=='undefined'||B.id*1<1||B.id!=o.id){A.push(B);return;}o.target.remove();},this);this.files=A;this.refresh();},onClick:function(e,el,o){e.preventDefault();this.fireEvent('click',this,o);
+},closable:function(A){Roo.each(this.managerEl.select('.roo-document-manager-preview > button.close',true).elements,function(el){el.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';if(A){el.show();return;}el.hide();},this);},xhrOnLoad:function(A){Roo.each(this.managerEl.select('.roo-document-manager-loading',true).elements,function(el){el.remove();
+},this);if(A.readyState!==4){this.arrange();this.fireEvent('exception',this,A);return;}var B=Roo.decode(A.responseText);if(!B.success){this.arrange();this.fireEvent('exception',this,A);return;}var C=this.renderPreview(B.data);this.files.push(C);this.arrange();
+},xhrOnError:function(){Roo.log('xhr on error');var A=Roo.decode(xhr.responseText);Roo.log(A);this.arrange();},process:function(A){if(this.editable&&A.type.indexOf('image')!=-1){this.fireEvent('edit',this,A);return;}this.uploadStart(A,false);return;},uploadStart:function(A,B){this.xhr=new XMLHttpRequest();
+if(typeof(A.id)!='undefined'&&A.id*1>0){this.arrange();return;}A.xhr=this.xhr;this.managerEl.createChild({tag:'div',cls:'roo-document-manager-loading',cn:[{tag:'div',tooltip:A.name,cls:'roo-document-manager-thumb',html:'<i class="fa fa-circle-o-notch fa-spin"></i>'}]});
+this.xhr.open(this.method,this.url,true);var C={"Accept":"application/json","Cache-Control":"no-cache","X-Requested-With":"XMLHttpRequest"};for(var D in C){var E=C[D];if(E){this.xhr.setRequestHeader(D,E);}}var F=this;this.xhr.onload=function(){F.xhrOnLoad(F.xhr);
+};this.xhr.onerror=function(){F.xhrOnError(F.xhr);};var G=new FormData();G.append('returnHTML','NO');if(B){G.append('crop',B);}G.append(this.paramName,A,A.name);if(this.fireEvent('prepare',this,G)!=false){this.xhr.send(G);};},uploadCancel:function(){this.xhr.abort();
+this.delegates=[];Roo.each(this.managerEl.select('.roo-document-manager-loading',true).elements,function(el){el.remove();},this);this.arrange();},renderPreview:function(A){if(typeof(A.target)!='undefined'&&A.target){return A;}var B=this.managerEl.createChild({tag:'div',cls:'roo-document-manager-preview',cn:[{tag:'div',tooltip:A.filename,cls:'roo-document-manager-thumb',html:'<img src="'+baseURL+'/Images/Thumb/'+this.thumbSize+'/'+A.id+'/'+A.filename+'">'},{tag:'button',cls:'close',html:'<i class="fa fa-times-circle"></i>'}]});
+var C=B.select('button.close',true).first();C.on('click',this.onRemove,this,A);A.target=B;var D=B.select('img',true).first();var E=this;D.dom.addEventListener("load",function(){E.onPreviewLoad(A,D);});D.on('click',this.onClick,this,A);return A;},onPreviewLoad:function(A,B){if(typeof(A.target)=='undefined'||!A.target){return;
+}var C=B.dom.naturalWidth||B.dom.width;var D=B.dom.naturalHeight||B.dom.height;if(C>D){A.target.addClass('wide');return;}A.target.addClass('tall');return;}});
 // Roo/bootstrap/DocumentViewer.js
 Roo.bootstrap.DocumentViewer=function(A){Roo.bootstrap.DocumentViewer.superclass.constructor.call(this,A);this.addEvents({"initial":true,"click":true,"trash":true});};Roo.extend(Roo.bootstrap.DocumentViewer,Roo.bootstrap.Component,{getAutoCreate:function(){var A={tag:'div',cls:'roo-document-viewer',cn:[{tag:'div',cls:'roo-document-viewer-body',cn:[{tag:'div',cls:'roo-document-viewer-thumb',cn:[{tag:'img',cls:'roo-document-viewer-image'}]}]},{tag:'div',cls:'roo-document-viewer-footer',cn:{tag:'div',cls:'btn-group btn-group-justified roo-document-viewer-btn-group',cn:[{tag:'div',cls:'btn-group',cn:[{tag:'button',cls:'btn btn-default roo-document-viewer-trash',html:'<i class="fa fa-trash"></i>'}]}]}}]};
 return A;},initEvents:function(){this.bodyEl=this.el.select('.roo-document-viewer-body',true).first();this.bodyEl.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.thumbEl=this.el.select('.roo-document-viewer-thumb',true).first();this.thumbEl.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';