sync
authoredward <edward@roojs.com>
Thu, 11 Feb 2016 02:43:17 +0000 (10:43 +0800)
committeredward <edward@roojs.com>
Thu, 11 Feb 2016 02:43:17 +0000 (10:43 +0800)
275 files changed:
Roo/bootstrap/ComboBox.js
css-bootstrap/upload-cropbox.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.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_UploadCropbox.js.html
docs/symbols/this.html
roojs-bootstrap-debug.js
roojs-bootstrap.js

index dea1994..088bfa9 100644 (file)
@@ -2342,6 +2342,8 @@ Roo.extend(Roo.bootstrap.ComboBox, Roo.bootstrap.TriggerField, {
 
             this.hideTouchView();
             
+            this.fireEvent('select', this, r, rowIndex);
+            
             return;
         }
         
@@ -2355,8 +2357,6 @@ Roo.extend(Roo.bootstrap.ComboBox, Roo.bootstrap.TriggerField, {
         this.addItem(r.data);
         this.tickItems.push(r.data);
         
-        
-        
     }
     
 
index 4ec7692..8a30fd4 100644 (file)
@@ -9,7 +9,7 @@
     cursor:move;
 }
 
-.roo-upload-cropbox-canvas {
+.roo-upload-cropbox-preview {
     position: absolute;
     top: 0px;
     left: 0px;
index 39ba8ef..55746da 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 Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspeciton Doc Generator</a> undefined on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
-                       <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a> on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a> on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                </div>
        </body>
 </html>
\ No newline at end of file
index f0acddf..0983427 100644 (file)
     }
    ],
    "events": [
-    {
-     "name": "beforeSelectFile",
-     "sig": "function (_self)\n{\n\n}",
-     "type": "function",
-     "desc": "Fire before select file"
-    },
     {
      "name": "beforedestroy",
      "sig": "function (_self)\n{\n\n}",
      "desc": "Fires before the component is hidden. Return false to stop the hide."
     },
     {
-     "name": "beforeloadimage",
+     "name": "beforeloadcanvas",
      "sig": "function (_self, src)\n{\n\n}",
      "type": "function",
-     "desc": "Fire before load the image"
+     "desc": "Fire before load the canvas"
     },
     {
      "name": "beforerender",
      "type": "function",
      "desc": "Fires before the component is rendered. Return false to stop the render."
     },
+    {
+     "name": "beforeselectfile",
+     "sig": "function (_self)\n{\n\n}",
+     "type": "function",
+     "desc": "Fire before select file"
+    },
     {
      "name": "beforeshow",
      "sig": "function (_self)\n{\n\n}",
     },
     {
      "name": "crop",
-     "sig": "function (_self, imageData)\n{\n\n}",
+     "sig": "function (_self, data)\n{\n\n}",
      "type": "function",
      "desc": "Fire after initEvent"
     },
index e02c932..3116b6c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 45b24b1..685e802 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3a80597..5f6af7e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c0965bf..c8f408d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1fc989f..469c364 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d926061..d7ad425 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2174c0d..1d51d44 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2d4e190..bcc984a 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d6acb6a..a338de0 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 173929c..fe7e693 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 067e127..ed5c794 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f6ff4b5..9395e33 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4abd40e..abd0370 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f7ae791..9defc5e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 34f6f8d..c092f9a 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 5a7325a..a55d051 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 396b47e..7604c1d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 40e1ee3..5616eb6 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index da7fd0a..e3cde5b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index bd1b90d..91c6b3d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4398c0d..92518cd 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9eabe78..6106b47 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 5e89995..bac3d79 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 53488e2..8890a76 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 8176434..450c26d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 7f87e60..9faf912 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1638293..42561b1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 8401079..090554d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6abf5f8..786d480 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9548eff..0c4be58 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 99bf282..4c1765c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ea1f40c..f027750 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 8ce519e..5714c86 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index eab7eb8..a40796c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 486a2c4..df8762f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6bb42b6..4a5e319 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f0206a3..e6d5621 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9342fdb..27eff05 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 93ffbea..ab39c67 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index eefa240..ce8c29c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4f120d4..b5ddfcc 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2b0c706..1a33e92 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d3cc905..715377a 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 33200dc..15cce70 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index edd8f1f..76b1700 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 551b09c..1de2df7 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e9954a2..121317a 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ce00570..716e760 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index be374fa..a257d56 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index fa3634d..d283872 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 51d1788..edd6f5c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 62354d5..9d2cb3b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f80dc21..881a264 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index fd16375..ebab022 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index eb963b9..351f6e6 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1874fa0..98edcd1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 705c7e7..cf80485 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9d66277..1576a7b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index fd8fb81..405070f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 828dc07..ac2724b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 8f5add0..637a179 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2058a0c..2d3dccf 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 11917e3..a28d8a0 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 7920f82..087e6d1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4081e74..658277f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 64728b8..68f4718 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 755b62b..7da71dc 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9744d71..4d8ed21 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c9ac13b..b2648e9 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 7394e3a..c14a656 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f71b9f2..d860f53 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 82c9080..ad207ca 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index a27f337..0a9c91e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c454304..e0ee570 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1e35a6a..2882563 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 63ebc6f..0e344d3 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index db57f46..ac0b600 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f8498b5..7ddcde1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b39549c..70a3ffb 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b4ce67b..43fa858 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 494167f..62b7be6 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 31a352c..3644f7f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2f01235..542d364 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d362a17..c0bc813 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index bd724fb..377a272 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c8fb6a4..0e8837c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index a212e80..0fe68e8 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 17c5e86..f819429 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e136514..98635e1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ccaba34..244ea53 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 7f23124..4c51455 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index fd4655d..b427e78 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2198292..c6f8d83 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index cb0160c..330fafc 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 172365d..1c85cf2 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 778c369..d36b000 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b2d2ce2..72d3024 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4110f10..7e14218 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 26fddcb..bb9df2a 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f799a0d..b6629c1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 06692a1..aa53262 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f99fcac..67b1b13 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 861c26b..7cf1ee8 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1325472..8878f16 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 70ef6a8..8d400be 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 85feee2..eaa1f7d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 347683e..53f437a 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 106f161..c76ce86 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 673fe7f..cdcc373 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 5132f0d..62b44c6 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f38e069..c0b82fc 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 14e08d4..7b0c5c2 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d162401..1505f6b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 43720e2..987573d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b59c5c3..a0a1b1b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e464425..6b2436d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2acf89d..58ac1c6 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 07bb031..0c01ebe 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index eed44d6..e343253 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 55bc1d8..12de699 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6e02a3f..f7ce094 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 50bc603..f9a5a57 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index cc935f4..7ee4e81 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 768e3b3..3428ddb 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 107dfcf..e284709 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6be1c49..f0ceead 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 26f882f..f944011 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 284fc8c..d373a4c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d9ca7dc..df87b93 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 225c445..3128aa7 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index cc0d33b..3fa2621 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 53e204b..4527ec1 100644 (file)
         
        
         
-          <tr class="method-row expandable config-row-alt0 notInherited">
+          <tr class="method-row expandable config-row-alt0">
             <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
            
             <td class="sig">
-                <a id="Roo.bootstrap.UploadCropbox-event-*beforeSelectFile"></a>
+                <a id="Roo.Component-event-*beforedestroy"></a>
                 
               <div class="fixedFont">
-               <b class="itemname">beforeSelectFile</b> (<a href="./Roo.bootstrap.UploadCropbox.html#constructor" roo:cls="Roo.bootstrap.UploadCropbox.html#constructor">Roo.bootstrap.UploadCropbox</a> <B><i>this</i></B>) 
+               <b class="itemname">beforedestroy</b> (<a href="./Roo.Component.html#constructor" roo:cls="Roo.Component.html#constructor">Roo.Component</a> <B><i>this</i></B>) 
                
                </div>
 
                 <div class="mdesc">
 
-                   <div class="short">Fire before select file
+                   <div class="short">Fires before the component is destroyed.
                   
                </div> 
                    
                     <div class="long">
                    
-                       Fire before select file
+                       Fires before the component is destroyed. Return false to stop the destroy.
                    
                        
                        
                                <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>
+                                               <span class="fixedFont"><a href="./Roo.Component.html#constructor" roo:cls="Roo.Component.html#constructor">Roo.Component</a></span> <b>this</b>
                                                
                                        </dt>
                                        <dd></dd>
 
             </td>
             <td class="msource">
-                Roo.bootstrap.UploadCropbox
+                <a href="./Roo.Component.html#constructor" roo:cls="Roo.Component.html#constructor">Roo.Component</a>
             </td>
         </tr>
        
             <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
            
             <td class="sig">
-                <a id="Roo.Component-event-*beforedestroy"></a>
+                <a id="Roo.Component-event-*beforehide"></a>
                 
               <div class="fixedFont">
-               <b class="itemname">beforedestroy</b> (<a href="./Roo.Component.html#constructor" roo:cls="Roo.Component.html#constructor">Roo.Component</a> <B><i>this</i></B>) 
+               <b class="itemname">beforehide</b> (<a href="./Roo.Component.html#constructor" roo:cls="Roo.Component.html#constructor">Roo.Component</a> <B><i>this</i></B>) 
                
                </div>
 
                 <div class="mdesc">
 
-                   <div class="short">Fires before the component is destroyed.
+                   <div class="short">Fires before the component is hidden.
                   
                </div> 
                    
                     <div class="long">
                    
-                       Fires before the component is destroyed. Return false to stop the destroy.
+                       Fires before the component is hidden. Return false to stop the hide.
                    
                        
                        
             </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.Component-event-*beforehide"></a>
+                <a id="Roo.bootstrap.UploadCropbox-event-*beforeloadcanvas"></a>
                 
               <div class="fixedFont">
-               <b class="itemname">beforehide</b> (<a href="./Roo.Component.html#constructor" roo:cls="Roo.Component.html#constructor">Roo.Component</a> <B><i>this</i></B>) 
+               <b class="itemname">beforeloadcanvas</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>src</i></B>) 
                
                </div>
 
                 <div class="mdesc">
 
-                   <div class="short">Fires before the component is hidden.
+                   <div class="short">Fire before load the canvas
                   
                </div> 
                    
                     <div class="long">
                    
-                       Fires before the component is hidden. Return false to stop the hide.
+                       Fire before load the canvas
                    
                        
                        
                                <dt class="heading">Parameters:</dt>
                                
                                        <dt>
-                                               <span class="fixedFont"><a href="./Roo.Component.html#constructor" roo:cls="Roo.Component.html#constructor">Roo.Component</a></span> <b>this</b>
+                                               <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>src</b>
                                                
                                        </dt>
                                        <dd></dd>
 
             </td>
             <td class="msource">
-                <a href="./Roo.Component.html#constructor" roo:cls="Roo.Component.html#constructor">Roo.Component</a>
+                Roo.bootstrap.UploadCropbox
             </td>
         </tr>
        
-          <tr class="method-row expandable config-row-alt1 notInherited">
+          <tr class="method-row expandable config-row-alt1">
             <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
            
             <td class="sig">
-                <a id="Roo.bootstrap.UploadCropbox-event-*beforeloadimage"></a>
+                <a id="Roo.Component-event-*beforerender"></a>
                 
               <div class="fixedFont">
-               <b class="itemname">beforeloadimage</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>src</i></B>) 
+               <b class="itemname">beforerender</b> (<a href="./Roo.Component.html#constructor" roo:cls="Roo.Component.html#constructor">Roo.Component</a> <B><i>this</i></B>) 
                
                </div>
 
                 <div class="mdesc">
 
-                   <div class="short">Fire before load the image
+                   <div class="short">Fires before the component is rendered.
                   
                </div> 
                    
                     <div class="long">
                    
-                       Fire before load the image
+                       Fires before the component is rendered. Return false to stop the render.
                    
                        
                        
                                <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>src</b>
+                                               <span class="fixedFont"><a href="./Roo.Component.html#constructor" roo:cls="Roo.Component.html#constructor">Roo.Component</a></span> <b>this</b>
                                                
                                        </dt>
                                        <dd></dd>
 
             </td>
             <td class="msource">
-                Roo.bootstrap.UploadCropbox
+                <a href="./Roo.Component.html#constructor" roo:cls="Roo.Component.html#constructor">Roo.Component</a>
             </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.Component-event-*beforerender"></a>
+                <a id="Roo.bootstrap.UploadCropbox-event-*beforeselectfile"></a>
                 
               <div class="fixedFont">
-               <b class="itemname">beforerender</b> (<a href="./Roo.Component.html#constructor" roo:cls="Roo.Component.html#constructor">Roo.Component</a> <B><i>this</i></B>) 
+               <b class="itemname">beforeselectfile</b> (<a href="./Roo.bootstrap.UploadCropbox.html#constructor" roo:cls="Roo.bootstrap.UploadCropbox.html#constructor">Roo.bootstrap.UploadCropbox</a> <B><i>this</i></B>) 
                
                </div>
 
                 <div class="mdesc">
 
-                   <div class="short">Fires before the component is rendered.
+                   <div class="short">Fire before select file
                   
                </div> 
                    
                     <div class="long">
                    
-                       Fires before the component is rendered. Return false to stop the render.
+                       Fire before select file
                    
                        
                        
                                <dt class="heading">Parameters:</dt>
                                
                                        <dt>
-                                               <span class="fixedFont"><a href="./Roo.Component.html#constructor" roo:cls="Roo.Component.html#constructor">Roo.Component</a></span> <b>this</b>
+                                               <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>
 
             </td>
             <td class="msource">
-                <a href="./Roo.Component.html#constructor" roo:cls="Roo.Component.html#constructor">Roo.Component</a>
+                Roo.bootstrap.UploadCropbox
             </td>
         </tr>
        
                 <a id="Roo.bootstrap.UploadCropbox-event-*crop"></a>
                 
               <div class="fixedFont">
-               <b class="itemname">crop</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>imageData</i></B>) 
+               <b class="itemname">crop</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>data</i></B>) 
                
                </div>
 
                                        <dd></dd>
                                
                                        <dt>
-                                               <span class="fixedFont"><a href="./String.html#constructor" roo:cls="String.html#constructor">String</a></span> <b>imageData</b>
+                                               <span class="fixedFont"><a href="./String.html#constructor" roo:cls="String.html#constructor">String</a></span> <b>data</b>
                                                
                                        </dt>
                                        <dd></dd>
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 0d1f915..4caecb9 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e433479..14d0ed1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 11e8d6d..15c4c9b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 74f4c7b..1adbf38 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 761a3cd..da821b2 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 46787b5..470447d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d2a15ad..9952590 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 8516a1c..0da01bd 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9571679..b8234a2 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 47647c1..0a6e81c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c0595c5..75eb1af 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d3a18ac..b39171f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 11580bc..f0150a0 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 13f1a86..1a62532 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index a4eb80b..7d41380 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b568c18..408f74d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 0756ad8..32ffae6 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e07c1e1..8fe461e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index dfa0e8b..efaf9b3 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f354852..a87a847 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 276cf32..1dfaf81 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 66b0e5e..5507a46 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index dffbc07..526f1a4 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 8310f1f..305fbc0 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 557c3e8..89750e1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 14561b5..95658b4 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index a7cfaf6..406a2fd 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index fded50a..416f17b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6ecce0f..bbb4fc0 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4bcfd98..3406661 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3442e31..a2800d7 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index cd41a5e..ad01bea 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f50faf1..1aea452 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ee2b3a1..09563d6 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index a238568..a378643 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1abdc80..e7d3a03 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 8ed1428..9cc6b6e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6d6c4f3..2e3a98e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index a919894..a4aa336 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 91dc2a3..62aa822 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 152539f..f10c6b1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d6965d7..608cf09 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c2b630a..48bf65e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 949abfb..32ee685 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index a0d3d1d..08c9cc2 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 32fc2f9..40a0361 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 45aedb7..891ba6c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f7ef05b..cedc339 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d400ae8..5755c47 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 414c608..f928b01 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 54c2d82..0213486 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index cb437d8..c3af82c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 31f3ec5..d4dd777 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index dcef5c6..cc40670 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 0a98b2e..5fa62bb 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1555a0f..ca79e41 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ca0febc..f1dac8c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1961db6..35ab5f8 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 20b1971..25eb3ab 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 52ab064..03b5902 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ce09ee5..cf40588 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 7307905..34ad963 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2594b9f..8ba37a3 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e6903fa..3c3c966 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2757dd7..39bae3d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9881f1d..2e846c1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 595e8af..bb8ecb5 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index fdad35f..95b8e6e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e70ff9f..da2a216 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 0d362f3..cc750b9 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d2c3266..5fb8ee1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 22090ab..e29d6df 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d7da35d..05c478c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:33 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ed0e3a1..ae49607 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3d5df5b..311bd1c 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3adcd2a..5c7bcd8 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index faeb074..43995ea 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index d089160..7268bdf 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e63a5ea..bbd89e7 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 07f22d9..f150d44 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c68c04c..2290ed6 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 565c39e..d1b2e38 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1d47ac2..6b41290 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e9b33e7..4df0925 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 392354e..8270877 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c16e483..f5afec0 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:32 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:28 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4a50787..365e377 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4801fb9..2db52d1 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 7f16d5a..12f159f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 08d41ee..7439a46 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 93beed2..a8331aa 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index aa65a55..2d2e521 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 966b549..e9fb9a5 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 61466f0..d9da285 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 30c94c7..408cdbe 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 786621e..27d127d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6245aaf..f7e143f 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ce8dea7..3bc64d6 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 6e5bdfb..9cf1280 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 3292b3f..2e04a22 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f1a080a..f3913de 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 993ab89..c3ad961 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e001b55..887bced 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f42e46b..3836f30 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 5ecf46e..7abe329 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b0d8d28..a5f29a0 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:29 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4fba811..d272ad8 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index ac73e0f..d950f7d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 7c7e345..46c2d7e 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b096012..0169197 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index cbcb286..ee86c3b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 0225c1e..a4f24d7 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9df55d0..d36a462 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index a934809..bf5c543 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 258b53c..21282ee 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 95e1737..83877dc 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index f6ea089..3ae2262 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 229e1a0..940c3e9 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 4c651f5..c19211b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2abbf5e..29f7dee 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 71b2762..ada8d99 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 8dc16b3..0ddb885 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 58b9dfa..16acca8 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 385cc2f..c048a27 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index e85f4d9..0fb5886 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9500f44..b1af5fd 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c36b2a1..4c82e40 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index c59a48a..24d8de6 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 2cd1e20..1497ca7 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 79e3971..01bc572 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index b05504e..36905d5 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 5101d54..59d732d 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 1d15645..fd61b10 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 8bc9562..da8d752 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 9de028b..10b998b 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 87fa27d..89bf7fb 100644 (file)
@@ -21,7 +21,7 @@
     
     </span><span class="jsdoc-var">this.addEvents</span><span class="jsdoc-syntax">({
         </span><span class="jsdoc-comment">/**
-         * @event beforeSelectFile
+         * @event beforeselectfile
          * Fire before select file
          * @param {Roo.bootstrap.UploadCropbox} this
          */
@@ -36,7 +36,7 @@
          * @event crop
          * Fire after initEvent
          * @param {Roo.bootstrap.UploadCropbox} this
-         * @param {String} imageData
+         * @param {String} data
          */
         </span><span class="jsdoc-string">&quot;crop&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
         </span><span class="jsdoc-comment">/**
          */
         </span><span class="jsdoc-string">&quot;exception&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
         </span><span class="jsdoc-comment">/**
-         * @event beforeloadimage
-         * Fire before load the image
+         * @event beforeloadcanvas
+         * Fire before load the canvas
          * @param {Roo.bootstrap.UploadCropbox} this
          * @param {String} src
          */
-        </span><span class="jsdoc-string">&quot;beforeloadimage&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
+        </span><span class="jsdoc-string">&quot;beforeloadcanvas&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
         
     </span><span class="jsdoc-syntax">});
 };
     </span><span class="jsdoc-var">pinching </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
     </span><span class="jsdoc-var">mouseX </span><span class="jsdoc-syntax">: 0,
     </span><span class="jsdoc-var">mouseY </span><span class="jsdoc-syntax">: 0,
-    </span><span class="jsdoc-var">cropImageData </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
+    </span><span class="jsdoc-var">cropData </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
     </span><span class="jsdoc-var">minWidth </span><span class="jsdoc-syntax">: 300,
     </span><span class="jsdoc-var">minHeight </span><span class="jsdoc-syntax">: 300,
     </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-var">exif </span><span class="jsdoc-syntax">: {},
     </span><span class="jsdoc-var">baseRotate </span><span class="jsdoc-syntax">: 1,
+    </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">getAutoCreate </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</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">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-upload-cropbox-image-section'</span><span class="jsdoc-syntax">,
+                    </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-upload-cropbox-body'</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">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-upload-cropbox-canvas'</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">'img'</span><span class="jsdoc-syntax">,
-                                    </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-upload-cropbox-image'
-                                </span><span class="jsdoc-syntax">}
-                            ]
-                        },
+                            </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-upload-cropbox-preview'
+                        </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-upload-cropbox-thumb'
                 },
                 {
                     </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-upload-cropbox-footer-section'</span><span class="jsdoc-syntax">,
+                    </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'roo-upload-cropbox-footer'</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">cls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'btn-group btn-group-justified roo-upload-cropbox-btn-group'</span><span class="jsdoc-syntax">,
     
     </span><span class="jsdoc-var">initEvents </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
     {
-        </span><span class="jsdoc-var">this.imageSection </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-upload-cropbox-image-section'</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.imageSection.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.imageCanvas </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-upload-cropbox-canvas'</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.imageCanvas.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.urlAPI </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">window.createObjectURL </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">) || 
+                                (</span><span class="jsdoc-var">window.URL </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">URL.revokeObjectURL </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">URL</span><span class="jsdoc-syntax">) || 
+                                (</span><span class="jsdoc-var">window.webkitURL </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">webkitURL</span><span class="jsdoc-syntax">);
+                        
+        </span><span class="jsdoc-var">this.bodyEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-upload-cropbox-body'</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.bodyEl.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.bodyHasOnClickEvent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
         
-        </span><span class="jsdoc-var">this.image </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-upload-cropbox-image'</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.image.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.previewEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-upload-cropbox-preview'</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.previewEl.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.thumb </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-upload-cropbox-thumb'</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.thumb.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.thumb.hide</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-var">this.thumbEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-upload-cropbox-thumb'</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.thumbEl.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.thumbEl.hide</span><span class="jsdoc-syntax">();
         
-        </span><span class="jsdoc-var">this.emptyNotify </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-upload-cropbox-empty-notify'</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.emptyNotify.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.notifyEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-upload-cropbox-empty-notify'</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.notifyEl.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.footerSection </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-upload-cropbox-footer-section'</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.footerSection.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.footerSection.hide</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-var">this.footerEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-upload-cropbox-footer'</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.footerEl.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.footerEl.hide</span><span class="jsdoc-syntax">();
         
         </span><span class="jsdoc-var">this.rotateLeft </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-upload-cropbox-rotate-left'</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.rotateLeft.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.rotateRight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-upload-cropbox-rotate-right'</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.rotateRight.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.calcThumbBoxSize</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-var">this.setThumbBoxSize</span><span class="jsdoc-syntax">();
         
         </span><span class="jsdoc-var">this.bind</span><span class="jsdoc-syntax">();
         
 
     </span><span class="jsdoc-var">bind </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
     {
-        </span><span class="jsdoc-var">this.image.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'load'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onLoadCanvasImage</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.imageSectionHasOnClickEvent</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-var">this.imageSection.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'click'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.beforeSelectFile</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">this.imageSectionHasOnClickEvent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.bodyHasOnClickEvent</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">this.bodyEl.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'click'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.beforeSelectFile</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-var">this.bodyHasOnClickEvent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
         }
         
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isTouch</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-var">this.imageSection.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'touchstart'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onTouchStart</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">this.imageSection.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'touchmove'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onTouchMove</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">this.imageSection.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'touchend'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onTouchEnd</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-var">this.bodyEl.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'touchstart'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onTouchStart</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-var">this.bodyEl.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'touchmove'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onTouchMove</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-var">this.bodyEl.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'touchend'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onTouchEnd</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">Roo.isTouch</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-var">this.imageSection.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'mousedown'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onMouseDown</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">this.imageSection.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'mousemove'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onMouseMove</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-var">this.bodyEl.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'mousedown'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onMouseDown</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-var">this.bodyEl.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'mousemove'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onMouseMove</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">mousewheel </span><span class="jsdoc-syntax">= (/Firefox/i</span><span class="jsdoc-var">.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">navigator.userAgent</span><span class="jsdoc-syntax">))? </span><span class="jsdoc-string">'DOMMouseScroll' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'mousewheel'</span><span class="jsdoc-syntax">;
-            </span><span class="jsdoc-var">this.imageSection.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">mousewheel</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onMouseWheel</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-var">this.bodyEl.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">mousewheel</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onMouseWheel</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
             </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'mouseup'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onMouseUp</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
         }
         
         </span><span class="jsdoc-var">this.scale </span><span class="jsdoc-syntax">= 0;
         </span><span class="jsdoc-var">this.baseScale </span><span class="jsdoc-syntax">= 1;
         </span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">= 0;
+        </span><span class="jsdoc-var">this.baseRotate </span><span class="jsdoc-syntax">= 1;
         </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-var">this.pinching </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
         </span><span class="jsdoc-var">this.mouseX </span><span class="jsdoc-syntax">= 0;
         </span><span class="jsdoc-var">this.mouseY </span><span class="jsdoc-syntax">= 0;
-        </span><span class="jsdoc-var">this.cropImageData </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
-        
-        </span><span class="jsdoc-var">this.imageCanvas.dom.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-var">this.image.dom.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-var">this.image.attr</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'src'</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-var">this.imageSectionHasOnClickEvent</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-var">this.imageSection.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'click'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.beforeSelectFile</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">this.imageSectionHasOnClickEvent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
-        }
+        </span><span class="jsdoc-var">this.cropData </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
         
     },
     
         </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'beforeselectfile'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
     },
     
-    </span><span class="jsdoc-var">loadCanvasImage </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)
+    </span><span class="jsdoc-var">loadCanvas </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</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">'beforeloadimage'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">src</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.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'beforeloadcanvas'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
+            
             </span><span class="jsdoc-var">this.reset</span><span class="jsdoc-syntax">();
-            </span><span class="jsdoc-var">this.image.attr</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'src'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">);
+            
+            </span><span class="jsdoc-var">this.imageEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'img'</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.imageEl.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.onLoadCanvas</span><span class="jsdoc-syntax">(); });
+            
+            </span><span class="jsdoc-var">this.imageEl.src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">;
         }
     },
     
-    </span><span class="jsdoc-var">onLoadCanvasImage </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">src</span><span class="jsdoc-syntax">)
+    </span><span class="jsdoc-var">onLoadCanvas </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
     {   
-        </span><span class="jsdoc-var">this.emptyNotify.hide</span><span class="jsdoc-syntax">();
-        </span><span class="jsdoc-var">this.thumb.show</span><span class="jsdoc-syntax">();
-        </span><span class="jsdoc-var">this.footerSection.show</span><span class="jsdoc-syntax">();
-        
-        </span><span class="jsdoc-var">this.placeThumbBox</span><span class="jsdoc-syntax">();
-        
-        </span><span class="jsdoc-var">this.Orientation</span><span class="jsdoc-syntax">();
-        
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.imageSectionHasOnClickEvent</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-var">this.imageSection.un</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'click'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.beforeSelectFile</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">this.imageSectionHasOnClickEvent </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.bodyHasOnClickEvent</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">this.bodyEl.un</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'click'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.beforeSelectFile</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-var">this.bodyHasOnClickEvent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
         }
         
-        </span><span class="jsdoc-var">this.image.OriginWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">();
-        </span><span class="jsdoc-var">this.image.OriginHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.image.getHeight</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-var">this.notifyEl.hide</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-var">this.thumbEl.show</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-var">this.footerEl.show</span><span class="jsdoc-syntax">();
         
-        </span><span class="jsdoc-var">this.fitThumbBox</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.image.setWidth</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.OriginWidth </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">)));
-        </span><span class="jsdoc-var">this.image.setHeight</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.OriginHeight </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</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-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.setCanvasPosition</span><span class="jsdoc-syntax">();
     },
     
     </span><span class="jsdoc-var">setCanvasPosition </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">pw </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">this.imageSection.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">()) / 2);
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ph </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">this.imageSection.getHeight</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.image.getHeight</span><span class="jsdoc-syntax">()) / 2);
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pw </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">this.bodyEl.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.canvasEl.width</span><span class="jsdoc-syntax">) / 2);
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ph </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">this.bodyEl.getHeight</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.canvasEl.height</span><span class="jsdoc-syntax">) / 2);
         
-        </span><span class="jsdoc-var">this.imageCanvas.setLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pw</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-var">this.imageCanvas.setTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ph</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-var">this.previewEl.setLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pw</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-var">this.previewEl.setTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ph</span><span class="jsdoc-syntax">);
     },
     
     </span><span class="jsdoc-var">onMouseDown </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">return</span><span class="jsdoc-syntax">;
         }
         
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">minX </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.thumb.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">minY </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.thumb.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">minX </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</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-keyword">var </span><span class="jsdoc-var">minY </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</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-keyword">var </span><span class="jsdoc-var">maxX </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">minX </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">());
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">maxY </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">minY </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.thumb.getHeight</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.image.getHeight</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">minX </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.thumb.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - (</span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.image.getHeight</span><span class="jsdoc-syntax">()) / 2);
-            </span><span class="jsdoc-var">minY </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.thumb.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) + (</span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.image.getHeight</span><span class="jsdoc-syntax">()) / 2);
-            
-            </span><span class="jsdoc-var">maxX </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">minX </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.image.getHeight</span><span class="jsdoc-syntax">());
-            </span><span class="jsdoc-var">maxY </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">minY </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.thumb.getHeight</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">());
-        }
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">maxX </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">minX </span><span class="jsdoc-syntax">+ </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">);
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">maxY </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">minY </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.canvasEl.height</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">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-keyword">var </span><span class="jsdoc-var">y </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-var">x </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.mouseX</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">- </span><span class="jsdoc-var">this.mouseY</span><span class="jsdoc-syntax">;
         
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bgX </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.imageCanvas.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">bgY </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.imageCanvas.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">bgX </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x </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">bgY </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">y </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">bgX </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">minX </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">bgX</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">minX </span><span class="jsdoc-syntax">: ((</span><span class="jsdoc-var">maxX </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">bgX</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">maxX </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">bgX</span><span class="jsdoc-syntax">);
         </span><span class="jsdoc-var">bgY </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">minY </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">bgY</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">minY </span><span class="jsdoc-syntax">: ((</span><span class="jsdoc-var">maxY </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">bgY</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">maxY </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">bgY</span><span class="jsdoc-syntax">);
         
-        </span><span class="jsdoc-var">this.imageCanvas.setLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">bgX</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-var">this.imageCanvas.setTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">bgY</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-var">this.previewEl.setLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">bgX</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-var">this.previewEl.setTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">bgY</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-var">this.scale </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">e.getWheelDelta</span><span class="jsdoc-syntax">() == 1) ? (</span><span class="jsdoc-var">this.scale </span><span class="jsdoc-syntax">+ 1) : (</span><span class="jsdoc-var">this.scale </span><span class="jsdoc-syntax">- 1);
         
-        </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.image.OriginWidth </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</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.image.OriginHeight </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</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">e.getWheelDelta</span><span class="jsdoc-syntax">() == -1 &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.thumb.getWidth</span><span class="jsdoc-syntax">() || </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.thumb.getHeight</span><span class="jsdoc-syntax">())
+                        (</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.thumbEl.getWidth</span><span class="jsdoc-syntax">() || </span><span class="jsdoc-var">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.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">height </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() || </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.thumb.getHeight</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) &amp;&amp; (</span><span class="jsdoc-var">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">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">return</span><span class="jsdoc-syntax">;
         }
         
-        </span><span class="jsdoc-var">this.image.setWidth</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-var">this.image.setHeight</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">height</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">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-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">this.image.getHeight</span><span class="jsdoc-syntax">() &lt; </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() || </span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">() &lt; </span><span class="jsdoc-var">this.thumb.getHeight</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-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">this.image.getWidth</span><span class="jsdoc-syntax">() &lt; </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() || </span><span class="jsdoc-var">this.image.getHeight</span><span class="jsdoc-syntax">() &lt; </span><span class="jsdoc-var">this.thumb.getHeight</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-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-var">this.imageCanvas.setStyle</span><span class="jsdoc-syntax">({
-            </span><span class="jsdoc-string">'-ms-transform' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'rotate(' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'deg)'</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-string">'-webkit-transform' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'rotate(' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'deg)'</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-string">'transform' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'rotate(' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'deg)'
-        </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.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">this.image.getHeight</span><span class="jsdoc-syntax">() &lt; </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() || </span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">() &lt; </span><span class="jsdoc-var">this.thumb.getHeight</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-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">this.image.getWidth</span><span class="jsdoc-syntax">() &lt; </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() || </span><span class="jsdoc-var">this.image.getHeight</span><span class="jsdoc-syntax">() &lt; </span><span class="jsdoc-var">this.thumb.getHeight</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-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-var">this.imageCanvas.setStyle</span><span class="jsdoc-syntax">({
-            </span><span class="jsdoc-string">'-ms-transform' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'rotate(' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'deg)'</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-string">'-webkit-transform' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'rotate(' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'deg)'</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-string">'transform' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'rotate(' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'deg)'
-        </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">crop </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
+    </span><span class="jsdoc-var">draw </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">baseRotateLevel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getBaseRotateLevel</span><span class="jsdoc-syntax">();
-        
-</span><span class="jsdoc-comment">//        this['crop' + baseRotateLevel]();
-        </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">baseRotateLevel</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-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-var">this.previewEl.dom.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
         
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">centerX </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minWidth </span><span class="jsdoc-syntax">/ 2;
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">centerY </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">/ 2;
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">canvasEl </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">cropWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</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">cropHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumb.getHeight</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</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">contextEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">canvasEl.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">thumbX </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.thumb.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">thumbY </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.thumb.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">x </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">thumbX </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.imageCanvas.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">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">thumbY </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.imageCanvas.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">true</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">x </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">thumbY </span><span class="jsdoc-syntax">+ (</span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.image.getHeight</span><span class="jsdoc-syntax">()) / 2 - </span><span class="jsdoc-var">this.imageCanvas.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.image.getHeight</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() - (</span><span class="jsdoc-var">thumbX </span><span class="jsdoc-syntax">- (</span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.image.getHeight</span><span class="jsdoc-syntax">()) / 2 - </span><span class="jsdoc-var">this.imageCanvas.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</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">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</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">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropHeight </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.image.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropHeight</span><span class="jsdoc-syntax">;
-            }
-
-            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.OriginHeight </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropWidth </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.image.OriginHeight </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropWidth</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-var">cropWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumb.getHeight</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">cropHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</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">&gt; </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">this.minHeight</span><span class="jsdoc-syntax">;
-            </span><span class="jsdoc-var">canvas.height </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">this.minWidth </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">;
-
-            </span><span class="jsdoc-var">centerX </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">this.minWidth </span><span class="jsdoc-syntax">/ 2) : (</span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">/ 2);
-            </span><span class="jsdoc-var">centerY </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">this.minWidth </span><span class="jsdoc-syntax">/ 2) : (</span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">/ 2);
-            
-            </span><span class="jsdoc-var">context.translate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">centerX</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">centerY</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">context.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">context.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.dom</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">, </span><span class="jsdoc-var">centerX </span><span class="jsdoc-syntax">* -1, </span><span class="jsdoc-var">centerY </span><span class="jsdoc-syntax">* -1, </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">canvasEl.width </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">canvasEl.height </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">center </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.imageEl.OriginWidth </span><span class="jsdoc-syntax">/ 2;
         
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">canvas2 </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">context2 </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">canvas2.getContext</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;2d&quot;</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-var">canvas2.width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">;
-            </span><span class="jsdoc-var">canvas2.height </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">;
-            
-            </span><span class="jsdoc-var">context2.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">canvas</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Math.abs</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">), 0, </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">, 0, 0, </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.cropImageData </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">canvas2.toDataURL</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.file.type</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'crop'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.cropImageData</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.imageEl.OriginWidth </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.imageEl.OriginHeight</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">canvasEl.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.getScaleLevel</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-var">canvasEl.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.getScaleLevel</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-var">center </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.imageEl.OriginHeight </span><span class="jsdoc-syntax">/ 2;
         }
         
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">== 270){
-            
-            </span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">thumbY </span><span class="jsdoc-syntax">+ (</span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.image.getHeight</span><span class="jsdoc-syntax">()) / 2 - </span><span class="jsdoc-var">this.imageCanvas.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">thumbX </span><span class="jsdoc-syntax">- (</span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.image.getHeight</span><span class="jsdoc-syntax">()) / 2 - </span><span class="jsdoc-var">this.imageCanvas.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.thumb.getHeight</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">) * </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</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">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropHeight </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.image.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropHeight</span><span class="jsdoc-syntax">;
-            }
-
-            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.OriginHeight </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropWidth </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.image.OriginHeight </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropWidth</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-var">cropWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumb.getHeight</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">cropHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</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">&gt; </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">this.minHeight</span><span class="jsdoc-syntax">;
-            </span><span class="jsdoc-var">canvas.height </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">this.minWidth </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">contextEl.scale</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">());
+        
+        </span><span class="jsdoc-var">contextEl.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-var">contextEl.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">centerX </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">this.minWidth </span><span class="jsdoc-syntax">/ 2) : (</span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">/ 2);
-            </span><span class="jsdoc-var">centerY </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">this.minWidth </span><span class="jsdoc-syntax">/ 2) : (</span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">/ 2);
-            
-            </span><span class="jsdoc-var">context.translate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">centerX</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">centerY</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">context.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">context.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.dom</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">, </span><span class="jsdoc-var">centerX </span><span class="jsdoc-syntax">* -1, </span><span class="jsdoc-var">centerY </span><span class="jsdoc-syntax">* -1, </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">contextEl.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-keyword">var </span><span class="jsdoc-var">canvas2 </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">context2 </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">canvas2.getContext</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;2d&quot;</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-var">canvas2.width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">;
-            </span><span class="jsdoc-var">canvas2.height </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">;
-            
-            </span><span class="jsdoc-var">context2.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">canvas</span><span class="jsdoc-syntax">, 0, 0, </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">, 0, 0, </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.cropImageData </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">canvas2.toDataURL</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.file.type</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'crop'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.cropImageData</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-        }
+        </span><span class="jsdoc-var">this.canvasEl </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">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">== 180){
-            </span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.image.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</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">this.image.OriginHeight </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.thumb.getHeight</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">;
-        }
+        </span><span class="jsdoc-var">this.contextEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.canvasEl.getContext</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;2d&quot;</span><span class="jsdoc-syntax">);
         
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.OriginWidth </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.image.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropWidth</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-var">this.canvasEl.width </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">this.canvasEl.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.getScaleLevel</span><span class="jsdoc-syntax">();
+                
+                </span><span class="jsdoc-var">this.contextEl.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">canvasEl</span><span class="jsdoc-syntax">, 0, 0, </span><span class="jsdoc-var">this.canvasEl.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.canvasEl.height</span><span class="jsdoc-syntax">, 0, 0, </span><span class="jsdoc-var">this.canvasEl.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.canvasEl.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-var">this.canvasEl.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.getScaleLevel</span><span class="jsdoc-syntax">();
+                </span><span class="jsdoc-var">this.canvasEl.height </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">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">this.contextEl.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">canvasEl</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Math.abs</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.canvasEl.height</span><span class="jsdoc-syntax">), 0, </span><span class="jsdoc-var">this.canvasEl.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.canvasEl.height</span><span class="jsdoc-syntax">, 0, 0, </span><span class="jsdoc-var">this.canvasEl.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.canvasEl.height</span><span class="jsdoc-syntax">);
+                    </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
+                }
+                
+                </span><span class="jsdoc-var">this.contextEl.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">canvasEl</span><span class="jsdoc-syntax">, 0, 0, </span><span class="jsdoc-var">this.canvasEl.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.canvasEl.height</span><span class="jsdoc-syntax">, 0, 0, </span><span class="jsdoc-var">this.canvasEl.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.canvasEl.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-var">this.canvasEl.width </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">this.canvasEl.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.getScaleLevel</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">this.contextEl.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">canvasEl</span><span class="jsdoc-syntax">, 0, </span><span class="jsdoc-var">Math.abs</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.canvasEl.height</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">this.canvasEl.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.canvasEl.height</span><span class="jsdoc-syntax">, 0, 0, </span><span class="jsdoc-var">this.canvasEl.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.canvasEl.height</span><span class="jsdoc-syntax">);
+                    </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
+                }
+                
+                </span><span class="jsdoc-var">this.contextEl.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">canvasEl</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Math.abs</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.canvasEl.height</span><span class="jsdoc-syntax">), 0, </span><span class="jsdoc-var">this.canvasEl.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.canvasEl.height</span><span class="jsdoc-syntax">, 0, 0, </span><span class="jsdoc-var">this.canvasEl.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.canvasEl.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-var">this.canvasEl.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.getScaleLevel</span><span class="jsdoc-syntax">();
+                </span><span class="jsdoc-var">this.canvasEl.height </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">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.OriginHeight </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.image.OriginHeight </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropHeight</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">this.contextEl.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">canvasEl</span><span class="jsdoc-syntax">, 0, 0, </span><span class="jsdoc-var">this.canvasEl.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.canvasEl.height</span><span class="jsdoc-syntax">, 0, 0, </span><span class="jsdoc-var">this.canvasEl.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.canvasEl.height</span><span class="jsdoc-syntax">);
+                    </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
+                }
+                
+                </span><span class="jsdoc-var">this.contextEl.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">canvasEl</span><span class="jsdoc-syntax">, 0, </span><span class="jsdoc-var">Math.abs</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl.width </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.canvasEl.height</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">this.canvasEl.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.canvasEl.height</span><span class="jsdoc-syntax">, 0, 0, </span><span class="jsdoc-var">this.canvasEl.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.canvasEl.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">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-var">context.translate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">centerX</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">centerY</span><span class="jsdoc-syntax">);
-
-        </span><span class="jsdoc-var">context.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">context.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.dom</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">, </span><span class="jsdoc-var">centerX </span><span class="jsdoc-syntax">* -1, </span><span class="jsdoc-var">centerY </span><span class="jsdoc-syntax">* -1, </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-var">this.previewEl.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.canvasEl</span><span class="jsdoc-syntax">);
         
-        </span><span class="jsdoc-var">this.cropImageData </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">canvas.toDataURL</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.file.type</span><span class="jsdoc-syntax">);
-        
-        </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'crop'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.cropImageData</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-var">this.setCanvasPosition</span><span class="jsdoc-syntax">();
     },
     
-    </span><span class="jsdoc-var">crop0 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
+    </span><span class="jsdoc-var">crop </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">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">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">centerX </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minWidth </span><span class="jsdoc-syntax">/ 2;
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">centerY </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">/ 2;
-        
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cropWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</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">cropHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumb.getHeight</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</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">thumbX </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.thumb.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">thumbY </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.thumb.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">x </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">thumbX </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.imageCanvas.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">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">thumbY </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.imageCanvas.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">true</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">x </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">thumbY </span><span class="jsdoc-syntax">+ (</span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.image.getHeight</span><span class="jsdoc-syntax">()) / 2 - </span><span class="jsdoc-var">this.imageCanvas.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.image.getHeight</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() - (</span><span class="jsdoc-var">thumbX </span><span class="jsdoc-syntax">- (</span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.image.getHeight</span><span class="jsdoc-syntax">()) / 2 - </span><span class="jsdoc-var">this.imageCanvas.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</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">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</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">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropHeight </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.image.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropHeight</span><span class="jsdoc-syntax">;
-            }
-
-            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.OriginHeight </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropWidth </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.image.OriginHeight </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropWidth</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-var">cropWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumb.getHeight</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">cropHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</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">&gt; </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">this.minHeight</span><span class="jsdoc-syntax">;
-            </span><span class="jsdoc-var">canvas.height </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">this.minWidth </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">;
-
-            </span><span class="jsdoc-var">centerX </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">this.minWidth </span><span class="jsdoc-syntax">/ 2) : (</span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">/ 2);
-            </span><span class="jsdoc-var">centerY </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">this.minWidth </span><span class="jsdoc-syntax">/ 2) : (</span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">/ 2);
-            
-            </span><span class="jsdoc-var">context.translate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">centerX</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">centerY</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">context.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">context.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.dom</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">, </span><span class="jsdoc-var">centerX </span><span class="jsdoc-syntax">* -1, </span><span class="jsdoc-var">centerY </span><span class="jsdoc-syntax">* -1, </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-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-keyword">var </span><span class="jsdoc-var">canvas2 </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">context2 </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">canvas2.getContext</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;2d&quot;</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-var">canvas2.width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">;
-            </span><span class="jsdoc-var">canvas2.height </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">;
-            
-            </span><span class="jsdoc-var">context2.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">canvas</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Math.abs</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">), 0, </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">, 0, 0, </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.cropImageData </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">canvas2.toDataURL</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.file.type</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'crop'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.cropImageData</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">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">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">== 270){
-            
-            </span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">thumbY </span><span class="jsdoc-syntax">+ (</span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.image.getHeight</span><span class="jsdoc-syntax">()) / 2 - </span><span class="jsdoc-var">this.imageCanvas.getTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">thumbX </span><span class="jsdoc-syntax">- (</span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.image.getHeight</span><span class="jsdoc-syntax">()) / 2 - </span><span class="jsdoc-var">this.imageCanvas.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.image.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.thumb.getHeight</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">) * </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</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">* </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropHeight </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.image.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropHeight</span><span class="jsdoc-syntax">;
-            }
-
-            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.OriginHeight </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropWidth </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.image.OriginHeight </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropWidth</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-var">cropWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumb.getHeight</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">cropHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</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">&gt; </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">this.minHeight</span><span class="jsdoc-syntax">;
-            </span><span class="jsdoc-var">canvas.height </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">this.minWidth </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">;
-
-            </span><span class="jsdoc-var">centerX </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">this.minWidth </span><span class="jsdoc-syntax">/ 2) : (</span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">/ 2);
-            </span><span class="jsdoc-var">centerY </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">this.minWidth </span><span class="jsdoc-syntax">/ 2) : (</span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">/ 2);
-            
-            </span><span class="jsdoc-var">context.translate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">centerX</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">centerY</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">context.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">context.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.dom</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">, </span><span class="jsdoc-var">centerX </span><span class="jsdoc-syntax">* -1, </span><span class="jsdoc-var">centerY </span><span class="jsdoc-syntax">* -1, </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-keyword">var </span><span class="jsdoc-var">canvas2 </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">context2 </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">canvas2.getContext</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;2d&quot;</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-var">canvas2.width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">;
-            </span><span class="jsdoc-var">canvas2.height </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">;
-            
-            </span><span class="jsdoc-var">context2.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">canvas</span><span class="jsdoc-syntax">, 0, 0, </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">, 0, 0, </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.cropImageData </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">canvas2.toDataURL</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.file.type</span><span class="jsdoc-syntax">);
-            
-            </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'crop'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.cropImageData</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.rotate </span><span class="jsdoc-syntax">== 180){
-            </span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.image.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</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">this.image.OriginHeight </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.thumb.getHeight</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) - </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">;
+        </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-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.OriginWidth </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.image.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropWidth</span><span class="jsdoc-syntax">;
-        }
-        
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.OriginHeight </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.image.OriginHeight </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropHeight</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">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-var">context.translate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">centerX</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">centerY</span><span class="jsdoc-syntax">);
-
-        </span><span class="jsdoc-var">context.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">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-var">context.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.dom</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">, </span><span class="jsdoc-var">centerX </span><span class="jsdoc-syntax">* -1, </span><span class="jsdoc-var">centerY </span><span class="jsdoc-syntax">* -1, </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-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">this.cropImageData </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">canvas.toDataURL</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.file.type</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'crop'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.cropData</span><span class="jsdoc-syntax">);
         
-        </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'crop'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.cropImageData</span><span class="jsdoc-syntax">);
     },
     
-    </span><span class="jsdoc-var">crop90 </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</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">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-var">canvas.width </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">this.minWidth </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-var">canvas.height </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">this.minWidth </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">centerX </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">this.minWidth </span><span class="jsdoc-syntax">/ 2) : (</span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">/ 2);
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">centerY </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">this.minWidth </span><span class="jsdoc-syntax">/ 2) : (</span><span class="jsdoc-var">this.minHeight </span><span class="jsdoc-syntax">/ 2);
-        
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cropWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</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">cropHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumb.getHeight</span><span class="jsdoc-syntax">() * </span><span class="jsdoc-var">this.getScaleLevel</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">thumbX </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.thumb.getLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) + </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">());
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">thumbY </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.thumb.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">x </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">thumbY </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.imageCanvas.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">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">thumbX </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">this.imageCanvas.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">true</span><span class="jsdoc-syntax">);
-        
-        
-</span><span class="jsdoc-comment">//        if(this.rotate == 90){
-//            
-//            x = thumbY + (this.image.getWidth() - this.image.getHeight()) / 2 - this.imageCanvas.getTop(true);
-//            y = this.image.getHeight() - this.thumb.getWidth() - (thumbX - (this.image.getWidth() - this.image.getHeight()) / 2 - this.imageCanvas.getLeft(true));
-//            
-//            x = x * this.getScaleLevel(true);
-//            y = y * this.getScaleLevel(true);
-//            
-//            if(this.image.OriginWidth - cropHeight &lt; x){
-//                x = this.image.OriginWidth - cropHeight;
-//            }
-//
-//            if(this.image.OriginHeight - cropWidth &lt; y){
-//                y = this.image.OriginHeight - cropWidth;
-//            }
-//            
-//            x = x &lt; 0 ? 0 : x;
-//            y = y &lt; 0 ? 0 : y;
-//            
-//            cropWidth = this.thumb.getHeight() * this.getScaleLevel(true);
-//            cropHeight = this.thumb.getWidth() * this.getScaleLevel(true);
-//            
-//            canvas.width = this.minWidth &gt; this.minHeight ? this.minWidth : this.minHeight;
-//            canvas.height = this.minWidth &gt; this.minHeight ? this.minWidth : this.minHeight;
-//
-//            centerX = this.minWidth &gt; this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-//            centerY = this.minWidth &gt; this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-//            
-//            context.translate(centerX, centerY);
-//            context.rotate(this.rotate * Math.PI / 180);
-//            
-//            context.drawImage(this.image.dom, x, y, cropWidth, cropHeight, centerX * -1, centerY * -1, this.minHeight, this.minWidth);
-//        
-//            var canvas2 = document.createElement(&quot;canvas&quot;);
-//            var context2 = canvas2.getContext(&quot;2d&quot;);
-//            
-//            canvas2.width = this.minWidth;
-//            canvas2.height = this.minHeight;
-//            
-//            context2.drawImage(canvas, Math.abs(this.minWidth - this.minHeight), 0, this.minWidth, this.minHeight, 0, 0, this.minWidth, this.minHeight);
-//    
-//            this.cropImageData = canvas2.toDataURL(this.file.type);
-//            
-//            this.fireEvent('crop', this, this.cropImageData);
-//            
-//            return;
-//        }
-//        
-//        if(this.rotate == 270){
-//            
-//            x = thumbY + (this.image.getWidth() - this.image.getHeight()) / 2 - this.imageCanvas.getTop(true);
-//            y = thumbX - (this.image.getWidth() - this.image.getHeight()) / 2 - this.imageCanvas.getLeft(true);
-//            
-//            x = (this.image.getWidth() - this.thumb.getHeight() - x) * this.getScaleLevel(true);
-//            y = y * this.getScaleLevel(true);
-//            
-//            if(this.image.OriginWidth - cropHeight &lt; x){
-//                x = this.image.OriginWidth - cropHeight;
-//            }
-//
-//            if(this.image.OriginHeight - cropWidth &lt; y){
-//                y = this.image.OriginHeight - cropWidth;
-//            }
-//
-//            x = x &lt; 0 ? 0 : x;
-//            y = y &lt; 0 ? 0 : y;
-//            
-//            cropWidth = this.thumb.getHeight() * this.getScaleLevel(true);
-//            cropHeight = this.thumb.getWidth() * this.getScaleLevel(true);
-//            
-//            canvas.width = this.minWidth &gt; this.minHeight ? this.minWidth : this.minHeight;
-//            canvas.height = this.minWidth &gt; this.minHeight ? this.minWidth : this.minHeight;
-//
-//            centerX = this.minWidth &gt; this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-//            centerY = this.minWidth &gt; this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-//            
-//            context.translate(centerX, centerY);
-//            context.rotate(this.rotate * Math.PI / 180);
-//            
-//            context.drawImage(this.image.dom, x, y, cropWidth, cropHeight, centerX * -1, centerY * -1, this.minHeight, this.minWidth);
-//        
-//            var canvas2 = document.createElement(&quot;canvas&quot;);
-//            var context2 = canvas2.getContext(&quot;2d&quot;);
-//            
-//            canvas2.width = this.minWidth;
-//            canvas2.height = this.minHeight;
-//            
-//            context2.drawImage(canvas, 0, 0, this.minWidth, this.minHeight, 0, 0, this.minWidth, this.minHeight);
-//    
-//            this.cropImageData = canvas2.toDataURL(this.file.type);
-//            
-//            this.fireEvent('crop', this, this.cropImageData);
-//            
-//            return;
-//        }
-//        
-//        if(this.rotate == 180){
-//            x = this.image.OriginWidth - this.thumb.getWidth() * this.getScaleLevel(true) - x;
-//            y = this.image.OriginHeight - this.thumb.getHeight() * this.getScaleLevel(true) - y;
-//        }
-        
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropWidth </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.image.OriginWidth </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropWidth</span><span class="jsdoc-syntax">;
-        }
-        
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.OriginHeight </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropHeight </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.image.OriginHeight </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">cropHeight</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-var">context.translate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">centerX</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">centerY</span><span class="jsdoc-syntax">);
-
-        </span><span class="jsdoc-var">context.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">alert</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-var">alert</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-var">alert</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cropWidth</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-var">alert</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cropHeight</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-var">context.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.dom</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">, </span><span class="jsdoc-var">centerX </span><span class="jsdoc-syntax">* -1, </span><span class="jsdoc-var">centerY </span><span class="jsdoc-syntax">* -1, </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">window.open</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">canvas.toDataURL</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.file.type</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">canvas2 </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">context2 </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">canvas2.getContext</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;2d&quot;</span><span class="jsdoc-syntax">);
-
-        </span><span class="jsdoc-var">canvas2.width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-var">canvas2.height </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">;
-
-        </span><span class="jsdoc-var">context2.drawImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">canvas</span><span class="jsdoc-syntax">, 0, 0, </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.minHeight</span><span class="jsdoc-syntax">, 0, 0, </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.cropImageData </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">canvas2.toDataURL</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.file.type</span><span class="jsdoc-syntax">);
-
-        </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'crop'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.cropImageData</span><span class="jsdoc-syntax">);
-        
-        </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-    },
-    
-    </span><span class="jsdoc-var">calcThumbBoxSize </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">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">height</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">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">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-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.minHeight </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.minWidth</span><span class="jsdoc-syntax">);
         }
         
-        </span><span class="jsdoc-var">this.thumb.setStyle</span><span class="jsdoc-syntax">({
+        </span><span class="jsdoc-var">this.thumbEl.setStyle</span><span class="jsdoc-syntax">({
             </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'px'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'px'
         </span><span class="jsdoc-syntax">});
             
     },
     
-    </span><span class="jsdoc-var">placeThumbBox </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
+    </span><span class="jsdoc-var">setThumbBoxPosition </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">x </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">this.imageSection.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">()) / 2 );
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">this.imageSection.getHeight</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.thumb.getHeight</span><span class="jsdoc-syntax">()) / 2);
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">x </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">this.bodyEl.getWidth</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.thumbEl.getWidth</span><span class="jsdoc-syntax">()) / 2 );
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.ceil</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">this.bodyEl.getHeight</span><span class="jsdoc-syntax">() - </span><span class="jsdoc-var">this.thumbEl.getHeight</span><span class="jsdoc-syntax">()) / 2);
         
-        </span><span class="jsdoc-var">this.thumb.setLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-var">this.thumb.setTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-var">this.thumbEl.setLeft</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-var">this.thumbEl.setTop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">);
         
     },
     
-    </span><span class="jsdoc-var">fitThumbBox </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
+    </span><span class="jsdoc-var">baseRotateLevel </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">width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumb.getWidth</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.image.OriginHeight </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.image.OriginWidth</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.image.OriginWidth</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">this.baseRotate </span><span class="jsdoc-syntax">= 1;
         
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.image.OriginWidth </span><span class="jsdoc-syntax">&gt; </span><span class="jsdoc-var">this.image.OriginHeight</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.thumb.getHeight</span><span class="jsdoc-syntax">();
-            </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.image.OriginWidth </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.image.OriginHeight</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.image.OriginHeight</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">this.exif</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&amp;&amp;
+                </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.exif</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">Roo.bootstrap.UploadCropbox</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'tags'</span><span class="jsdoc-syntax">][</span><span class="jsdoc-string">'Orientation'</span><span class="jsdoc-syntax">]]) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&amp;&amp;
+                [1, 3, 6, 8]</span><span class="jsdoc-var">.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.exif</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">Roo.bootstrap.UploadCropbox</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'tags'</span><span class="jsdoc-syntax">][</span><span class="jsdoc-string">'Orientation'</span><span class="jsdoc-syntax">]]) != -1
+        ){
+            </span><span class="jsdoc-var">this.baseRotate </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.exif</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">Roo.bootstrap.UploadCropbox</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'tags'</span><span class="jsdoc-syntax">][</span><span class="jsdoc-string">'Orientation'</span><span class="jsdoc-syntax">]];
         }
         
-        </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">this.rotate </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">Roo.isIOS</span><span class="jsdoc-syntax">) ? 
+                </span><span class="jsdoc-var">Roo.bootstrap.UploadCropbox</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'Orientation'</span><span class="jsdoc-syntax">][</span><span class="jsdoc-string">'iOS'</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">this.baseRotate</span><span class="jsdoc-syntax">] : 
+                </span><span class="jsdoc-var">Roo.bootstrap.UploadCropbox</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'Orientation'</span><span class="jsdoc-syntax">][</span><span class="jsdoc-string">'Android'</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">this.baseRotate</span><span class="jsdoc-syntax">];
+        
     },
     
-    </span><span class="jsdoc-var">Orientation </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
+    </span><span class="jsdoc-var">baseScaleLevel </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
     {
-        </span><span class="jsdoc-var">this.baseRotate </span><span class="jsdoc-syntax">= 1;
+        </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-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.exif</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">Roo.bootstrap.UploadCropbox</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'tags'</span><span class="jsdoc-syntax">][</span><span class="jsdoc-string">'Orientation'</span><span class="jsdoc-syntax">]]) == </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">|| 
-                [1, 3, 6, 8]</span><span class="jsdoc-var">.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.exif</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">Roo.bootstrap.UploadCropbox</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'tags'</span><span class="jsdoc-syntax">][</span><span class="jsdoc-string">'Orientation'</span><span class="jsdoc-syntax">]]) == -1
-        ){
+        </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.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">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">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-var">this.baseRotate </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.exif</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">Roo.bootstrap.UploadCropbox</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'tags'</span><span class="jsdoc-syntax">][</span><span class="jsdoc-string">'Orientation'</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">getBaseRotateLevel </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
-    {
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIOS</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">Roo.bootstrap.UploadCropbox</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'Orientation'</span><span class="jsdoc-syntax">][</span><span class="jsdoc-string">'iOS'</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">this.baseRotate</span><span class="jsdoc-syntax">] : </span><span class="jsdoc-var">Roo.bootstrap.UploadCropbox</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'Orientation'</span><span class="jsdoc-syntax">][</span><span class="jsdoc-string">'Android'</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">this.baseRotate</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">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">width </span><span class="jsdoc-syntax">= </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">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">height </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">getScaleLevel </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">reverse</span><span class="jsdoc-syntax">)
+    </span><span class="jsdoc-var">getScaleLevel </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">reverse</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Math.pow</span><span class="jsdoc-syntax">(1.1, </span><span class="jsdoc-var">this.scale </span><span class="jsdoc-syntax">* -1) / </span><span class="jsdoc-var">this.baseScale</span><span class="jsdoc-syntax">;
-        }
-        
         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.baseScale </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">Math.pow</span><span class="jsdoc-syntax">(1.1, </span><span class="jsdoc-var">this.scale</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">Math.pow</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">coords</span><span class="jsdoc-syntax">[0] - </span><span class="jsdoc-var">coords</span><span class="jsdoc-syntax">[2], 2);
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.pow</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">coords</span><span class="jsdoc-syntax">[1] - </span><span class="jsdoc-var">coords</span><span class="jsdoc-syntax">[3], 2);
         
-        </span><span class="jsdoc-var">this.startDistance </span><span class="jsdoc-syntax">=  </span><span class="jsdoc-var">Math.sqrt</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">this.startDistance </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.sqrt</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">this.startScale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.scale</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">Math.pow</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">coords</span><span class="jsdoc-syntax">[0] - </span><span class="jsdoc-var">coords</span><span class="jsdoc-syntax">[2], 2);
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.pow</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">coords</span><span class="jsdoc-syntax">[1] - </span><span class="jsdoc-var">coords</span><span class="jsdoc-syntax">[3], 2);
         
-        </span><span class="jsdoc-var">this.endDistance </span><span class="jsdoc-syntax">=  </span><span class="jsdoc-var">Math.sqrt</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">this.endDistance </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.sqrt</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-keyword">var </span><span class="jsdoc-var">scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.startScale </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">Math.floor</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Math.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.endDistance </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.startDistance</span><span class="jsdoc-syntax">) / </span><span class="jsdoc-var">Math.log</span><span class="jsdoc-syntax">(1.1));
         
-        </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.image.OriginWidth </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.baseScale </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">Math.pow</span><span class="jsdoc-syntax">(1.1, </span><span class="jsdoc-var">scale</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.image.OriginHeight </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">this.baseScale </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">Math.pow</span><span class="jsdoc-syntax">(1.1, </span><span class="jsdoc-var">scale</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.baseScale </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">Math.pow</span><span class="jsdoc-syntax">(1.1, </span><span class="jsdoc-var">scale</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.baseScale </span><span class="jsdoc-syntax">* </span><span class="jsdoc-var">Math.pow</span><span class="jsdoc-syntax">(1.1, </span><span class="jsdoc-var">scale</span><span class="jsdoc-syntax">));
         
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(
                 </span><span class="jsdoc-var">this.endDistance </span><span class="jsdoc-syntax">/ </span><span class="jsdoc-var">this.startDistance </span><span class="jsdoc-syntax">&lt; 1 &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.thumb.getWidth</span><span class="jsdoc-syntax">() || </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.thumb.getHeight</span><span class="jsdoc-syntax">())
+                        (</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.thumbEl.getWidth</span><span class="jsdoc-syntax">() || </span><span class="jsdoc-var">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.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">height </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.thumb.getWidth</span><span class="jsdoc-syntax">() || </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.thumb.getHeight</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) &amp;&amp; (</span><span class="jsdoc-var">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">width </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.scale </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">scale</span><span class="jsdoc-syntax">;
         
-        </span><span class="jsdoc-var">this.image.setWidth</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-var">this.image.setHeight</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">height</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">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-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.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">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-keyword">var </span><span class="jsdoc-var">noMetaData </span><span class="jsdoc-syntax">= !(</span><span class="jsdoc-var">window.DataView  </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.file </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.file.size </span><span class="jsdoc-syntax">&gt;= 12 &amp;&amp; </span><span class="jsdoc-var">this.file.type </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-string">'image/jpeg'</span><span class="jsdoc-syntax">);
-        
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">noMetaData</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// ??? only for jpeg ???
-            </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'noMetaData'</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">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-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">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">this.file</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
                     
                 }
                 
-                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">urlAPI </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">window.createObjectURL </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">) || (</span><span class="jsdoc-var">window.URL </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">URL.revokeObjectURL </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">URL</span><span class="jsdoc-syntax">) || (</span><span class="jsdoc-var">window.webkitURL </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">webkitURL</span><span class="jsdoc-syntax">);
-                
-                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">urlAPI</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">url </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">urlAPI.createObjectURL</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">_this.file</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">url </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">_this.urlAPI.createObjectURL</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">_this.file</span><span class="jsdoc-syntax">);
                 
-                </span><span class="jsdoc-var">_this.loadCanvasImage</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-var">_this.loadCanvas</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">);
                 
                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
             }
index 21067fc..96eaaa2 100644 (file)
 <!-- ============================== footer ================================= -->
                <div class="fineprint" style="clear:both">
                        
-                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Wed Feb 03 2016 13:11:34 GMT+0800 (HKT)
+                       Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspection Doc Generator</a>  on Thu Feb 04 2016 16:03:30 GMT+0800 (HKT)
                        Based on 
                        <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a>  
                </div>
index 76e6cdf..197a8dc 100644 (file)
@@ -13368,6 +13368,8 @@ Roo.extend(Roo.bootstrap.ComboBox, Roo.bootstrap.TriggerField, {
 
             this.hideTouchView();
             
+            this.fireEvent('select', this, r, rowIndex);
+            
             return;
         }
         
@@ -13381,8 +13383,6 @@ Roo.extend(Roo.bootstrap.ComboBox, Roo.bootstrap.TriggerField, {
         this.addItem(r.data);
         this.tickItems.push(r.data);
         
-        
-        
     }
     
 
@@ -23950,7 +23950,7 @@ Roo.bootstrap.UploadCropbox = function(config){
     
     this.addEvents({
         /**
-         * @event beforeSelectFile
+         * @event beforeselectfile
          * Fire before select file
          * @param {Roo.bootstrap.UploadCropbox} this
          */
@@ -23965,7 +23965,7 @@ Roo.bootstrap.UploadCropbox = function(config){
          * @event crop
          * Fire after initEvent
          * @param {Roo.bootstrap.UploadCropbox} this
-         * @param {String} imageData
+         * @param {String} data
          */
         "crop" : true,
         /**
@@ -23983,12 +23983,12 @@ Roo.bootstrap.UploadCropbox = function(config){
          */
         "exception" : true,
         /**
-         * @event beforeloadimage
-         * Fire before load the image
+         * @event beforeloadcanvas
+         * Fire before load the canvas
          * @param {Roo.bootstrap.UploadCropbox} this
          * @param {String} src
          */
-        "beforeloadimage" : true
+        "beforeloadcanvas" : true
         
     });
 };
@@ -24003,12 +24003,13 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
     pinching : false,
     mouseX : 0,
     mouseY : 0,
-    cropImageData : false,
+    cropData : false,
     minWidth : 300,
     minHeight : 300,
     file : false,
     exif : {},
     baseRotate : 1,
+    cropType : 'image/jpeg',
     
     getAutoCreate : function()
     {
@@ -24018,17 +24019,11 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
             cn : [
                 {
                     tag : 'div',
-                    cls : 'roo-upload-cropbox-image-section',
+                    cls : 'roo-upload-cropbox-body',
                     cn : [
                         {
                             tag : 'div',
-                            cls : 'roo-upload-cropbox-canvas',
-                            cn : [
-                                {
-                                    tag : 'img',
-                                    cls : 'roo-upload-cropbox-image'
-                                }
-                            ]
+                            cls : 'roo-upload-cropbox-preview'
                         },
                         {
                             tag : 'div',
@@ -24043,7 +24038,7 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
                 },
                 {
                     tag : 'div',
-                    cls : 'roo-upload-cropbox-footer-section',
+                    cls : 'roo-upload-cropbox-footer',
                     cn : {
                         tag : 'div',
                         cls : 'btn-group btn-group-justified roo-upload-cropbox-btn-group',
@@ -24092,25 +24087,27 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
     
     initEvents : function()
     {
-        this.imageSection = this.el.select('.roo-upload-cropbox-image-section', true).first();
-        this.imageSection.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay = 'block';
-        
-        this.imageCanvas = this.el.select('.roo-upload-cropbox-canvas', true).first();
-        this.imageCanvas.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay = 'block';
+        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.bodyHasOnClickEvent = false;
         
-        this.image = this.el.select('.roo-upload-cropbox-image', true).first();
-        this.image.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.thumb = this.el.select('.roo-upload-cropbox-thumb', true).first();
-        this.thumb.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay = 'block';
-        this.thumb.hide();
+        this.thumbEl = this.el.select('.roo-upload-cropbox-thumb', true).first();
+        this.thumbEl.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay = 'block';
+        this.thumbEl.hide();
         
-        this.emptyNotify = this.el.select('.roo-upload-cropbox-empty-notify', true).first();
-        this.emptyNotify.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay = 'block';
+        this.notifyEl = this.el.select('.roo-upload-cropbox-empty-notify', true).first();
+        this.notifyEl.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay = 'block';
         
-        this.footerSection = this.el.select('.roo-upload-cropbox-footer-section', true).first();
-        this.footerSection.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay = 'block';
-        this.footerSection.hide();
+        this.footerEl = this.el.select('.roo-upload-cropbox-footer', true).first();
+        this.footerEl.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay = 'block';
+        this.footerEl.hide();
         
         this.rotateLeft = this.el.select('.roo-upload-cropbox-rotate-left', true).first();
         this.rotateLeft.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay = 'block';
@@ -24121,7 +24118,7 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         this.rotateRight = this.el.select('.roo-upload-cropbox-rotate-right', true).first();
         this.rotateRight.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay = 'block';
         
-        this.calcThumbBoxSize();
+        this.setThumbBoxSize();
         
         this.bind();
         
@@ -24130,24 +24127,26 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
 
     bind : function()
     {
-        this.image.on('load', this.onLoadCanvasImage, this);
+        var _this = this;
         
-        if(!this.imageSectionHasOnClickEvent){
-            this.imageSection.on('click', this.beforeSelectFile, this);
-            this.imageSectionHasOnClickEvent = true;
+        window.addEventListener("resize", function() { _this.resize(); } );
+        
+        if(!this.bodyHasOnClickEvent){
+            this.bodyEl.on('click', this.beforeSelectFile, this);
+            this.bodyHasOnClickEvent = true;
         }
         
         if(Roo.isTouch){
-            this.imageSection.on('touchstart', this.onTouchStart, this);
-            this.imageSection.on('touchmove', this.onTouchMove, this);
-            this.imageSection.on('touchend', this.onTouchEnd, this);
+            this.bodyEl.on('touchstart', this.onTouchStart, this);
+            this.bodyEl.on('touchmove', this.onTouchMove, this);
+            this.bodyEl.on('touchend', this.onTouchEnd, this);
         }
         
         if(!Roo.isTouch){
-            this.imageSection.on('mousedown', this.onMouseDown, this);
-            this.imageSection.on('mousemove', this.onMouseMove, this);
+            this.bodyEl.on('mousedown', this.onMouseDown, this);
+            this.bodyEl.on('mousemove', this.onMouseMove, this);
             var mousewheel = (/Firefox/i.test(navigator.userAgent))? 'DOMMouseScroll' : 'mousewheel';
-            this.imageSection.on(mousewheel, this.onMouseWheel, this);
+            this.bodyEl.on(mousewheel, this.onMouseWheel, this);
             Roo.get(document).on('mouseup', this.onMouseUp, this);
         }
         
@@ -24164,23 +24163,21 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         this.scale = 0;
         this.baseScale = 1;
         this.rotate = 0;
+        this.baseRotate = 1;
         this.dragable = false;
         this.pinching = false;
         this.mouseX = 0;
         this.mouseY = 0;
-        this.cropImageData = false;
-        
-        this.imageCanvas.dom.removeAttribute('style');
-        this.image.dom.removeAttribute('style');
-        this.image.attr('src', '');
-        
-        if(!this.imageSectionHasOnClickEvent){
-            this.imageSection.on('click', this.beforeSelectFile, this);
-            this.imageSectionHasOnClickEvent = true;
-        }
+        this.cropData = false;
         
     },
     
+    resize : function()
+    {
+        this.setThumbBoxPosition();
+        this.setCanvasPosition();
+    },
+    
     beforeSelectFile : function(e)
     {
         e.preventDefault();
@@ -24188,47 +24185,51 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         this.fireEvent('beforeselectfile', this);
     },
     
-    loadCanvasImage : function(src)
+    loadCanvas : function(src)
     {   
-        if(this.fireEvent('beforeloadimage', this, src) != false){
+        if(this.fireEvent('beforeloadcanvas', this, src) != false){
+            
             this.reset();
-            this.image.attr('src', src);
+            
+            this.imageEl = document.createElement('img');
+            
+            var _this = this;
+            
+            this.imageEl.addEventListener("load", function(){ _this.onLoadCanvas(); });
+            
+            this.imageEl.src = src;
         }
     },
     
-    onLoadCanvasImage : function(src)
+    onLoadCanvas : function()
     {   
-        this.emptyNotify.hide();
-        this.thumb.show();
-        this.footerSection.show();
-        
-        this.placeThumbBox();
-        
-        this.Orientation();
-        
-        if(this.imageSectionHasOnClickEvent){
-            this.imageSection.un('click', this.beforeSelectFile, this);
-            this.imageSectionHasOnClickEvent = false;
+        if(this.bodyHasOnClickEvent){
+            this.bodyEl.un('click', this.beforeSelectFile, this);
+            this.bodyHasOnClickEvent = false;
         }
         
-        this.image.OriginWidth = this.image.getWidth();
-        this.image.OriginHeight = this.image.getHeight();
+        this.notifyEl.hide();
+        this.thumbEl.show();
+        this.footerEl.show();
         
-        this.fitThumbBox();
+        this.imageEl.OriginWidth = this.imageEl.naturalWidth || this.imageEl.width;
+        this.imageEl.OriginHeight = this.imageEl.naturalHeight || this.imageEl.height;
         
-        this.image.setWidth(Math.ceil(this.image.OriginWidth * this.getScaleLevel(false)));
-        this.image.setHeight(Math.ceil(this.image.OriginHeight * this.getScaleLevel(false)));
+        this.setThumbBoxPosition();
+        this.baseRotateLevel();
+        this.baseScaleLevel();
+        
+        this.draw();
         
-        this.setCanvasPosition();
     },
     
     setCanvasPosition : function()
     {   
-        var pw = Math.ceil((this.imageSection.getWidth() - this.image.getWidth()) / 2);
-        var ph = Math.ceil((this.imageSection.getHeight() - this.image.getHeight()) / 2);
+        var pw = Math.ceil((this.bodyEl.getWidth() - this.canvasEl.width) / 2);
+        var ph = Math.ceil((this.bodyEl.getHeight() - this.canvasEl.height) / 2);
         
-        this.imageCanvas.setLeft(pw);
-        this.imageCanvas.setTop(ph);
+        this.previewEl.setLeft(pw);
+        this.previewEl.setTop(ph);
     },
     
     onMouseDown : function(e)
@@ -24251,19 +24252,11 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
             return;
         }
         
-        var minX = Math.ceil(this.thumb.getLeft(true));
-        var minY = Math.ceil(this.thumb.getTop(true));
+        var minX = Math.ceil(this.thumbEl.getLeft(true));
+        var minY = Math.ceil(this.thumbEl.getTop(true));
         
-        var maxX = Math.ceil(minX + this.thumb.getWidth() - this.image.getWidth());
-        var maxY = Math.ceil(minY + this.thumb.getHeight() - this.image.getHeight());
-        
-        if(this.rotate == 90 || this.rotate == 270){
-            minX = Math.ceil(this.thumb.getLeft(true) - (this.image.getWidth() - this.image.getHeight()) / 2);
-            minY = Math.ceil(this.thumb.getTop(true) + (this.image.getWidth() - this.image.getHeight()) / 2);
-            
-            maxX = Math.ceil(minX + this.thumb.getWidth() - this.image.getHeight());
-            maxY = Math.ceil(minY + this.thumb.getHeight() - this.image.getWidth());
-        }
+        var maxX = Math.ceil(minX + this.thumbEl.getWidth() - this.canvasEl.width);
+        var maxY = Math.ceil(minY + 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();
@@ -24271,14 +24264,14 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         x = x - this.mouseX;
         y = y - this.mouseY;
         
-        var bgX = Math.ceil(x + this.imageCanvas.getLeft(true));
-        var bgY = Math.ceil(y + this.imageCanvas.getTop(true));
+        var bgX = Math.ceil(x + this.previewEl.getLeft(true));
+        var bgY = Math.ceil(y + this.previewEl.getTop(true));
         
         bgX = (minX < bgX) ? minX : ((maxX > bgX) ? maxX : bgX);
         bgY = (minY < bgY) ? minY : ((maxY > bgY) ? maxY : bgY);
         
-        this.imageCanvas.setLeft(bgX);
-        this.imageCanvas.setTop(bgY);
+        this.previewEl.setLeft(bgX);
+        this.previewEl.setTop(bgY);
         
         this.mouseX = Roo.isTouch ? e.browserEvent.touches[0].pageX : e.getPageX();
         this.mouseY = Roo.isTouch ? e.browserEvent.touches[0].pageY : e.getPageY();
@@ -24297,18 +24290,18 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         
         this.scale = (e.getWheelDelta() == 1) ? (this.scale + 1) : (this.scale - 1);
         
-        var width = Math.ceil(this.image.OriginWidth * this.getScaleLevel(false));
-        var height = Math.ceil(this.image.OriginHeight * this.getScaleLevel(false));
+        var width = Math.ceil(this.imageEl.OriginWidth * this.getScaleLevel());
+        var height = Math.ceil(this.imageEl.OriginHeight * this.getScaleLevel());
         
         if(
                 e.getWheelDelta() == -1 &&
                 (
                     (
-                        (this.rotate == 0 || this.rotate == 180) && (width < this.thumb.getWidth() || height < this.thumb.getHeight())
+                        (this.rotate == 0 || this.rotate == 180) && (width < this.thumbEl.getWidth() || height < this.thumbEl.getHeight())
                     )
                     ||
                     (
-                        (this.rotate == 90 || this.rotate == 270) && (height < this.thumb.getWidth() || width < this.thumb.getHeight())
+                        (this.rotate == 90 || this.rotate == 270) && (height < this.thumbEl.getWidth() || width < this.thumbEl.getHeight())
                     )
                 )
         ){
@@ -24316,11 +24309,7 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
             return;
         }
         
-        this.image.setWidth(width);
-        this.image.setHeight(height);
-        
-        this.setCanvasPosition();
-        
+        this.draw();
     },
     
     onRotateLeft : function(e)
@@ -24331,13 +24320,13 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
                 (
                     (this.rotate == 0 || this.rotate == 180) 
                     &&
-                    (this.image.getHeight() < this.thumb.getWidth() || this.image.getWidth() < this.thumb.getHeight())
+                    (this.canvasEl.height < this.thumbEl.getWidth() || this.canvasEl.width < this.thumbEl.getHeight())
                 )
                 ||
                 (
                     (this.rotate == 90 || this.rotate == 270) 
                     &&
-                    (this.image.getWidth() < this.thumb.getWidth() || this.image.getHeight() < this.thumb.getHeight())
+                    (this.canvasEl.height < this.thumbEl.getWidth() || this.canvasEl.width < this.thumbEl.getHeight())
                 )
                 
         ){
@@ -24346,13 +24335,7 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         
         this.rotate = (this.rotate < 90) ? 270 : this.rotate - 90;
 
-        this.imageCanvas.setStyle({
-            '-ms-transform' : 'rotate(' + this.rotate + 'deg)',
-            '-webkit-transform' : 'rotate(' + this.rotate + 'deg)',
-            'transform' : 'rotate(' + this.rotate + 'deg)'
-        });
-
-        this.setCanvasPosition();
+        this.draw();
         
     },
     
@@ -24364,13 +24347,13 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
                 (
                     (this.rotate == 0 || this.rotate == 180) 
                     &&
-                    (this.image.getHeight() < this.thumb.getWidth() || this.image.getWidth() < this.thumb.getHeight())
+                    (this.canvasEl.height < this.thumbEl.getWidth() || this.canvasEl.width < this.thumbEl.getHeight())
                 )
                 ||
                 (
                     (this.rotate == 90 || this.rotate == 270) 
                     &&
-                    (this.image.getWidth() < this.thumb.getWidth() || this.image.getHeight() < this.thumb.getHeight())
+                    (this.canvasEl.height < this.thumbEl.getWidth() || this.canvasEl.width < this.thumbEl.getHeight())
                 )
                 
         ){
@@ -24379,167 +24362,97 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         
         this.rotate = (this.rotate > 180) ? 0 : this.rotate + 90;
 
-        this.imageCanvas.setStyle({
-            '-ms-transform' : 'rotate(' + this.rotate + 'deg)',
-            '-webkit-transform' : 'rotate(' + this.rotate + 'deg)',
-            'transform' : 'rotate(' + this.rotate + 'deg)'
-        });
-
-        this.setCanvasPosition();
-        
+        this.draw();
         
     },
     
-    crop : function()
+    draw : function()
     {
-        var baseRotateLevel = this.getBaseRotateLevel();
+        this.previewEl.dom.innerHTML = '';
         
-//        this['crop' + baseRotateLevel]();
-        Roo.log(baseRotateLevel);
+        var canvasEl = document.createElement("canvas");
         
-        var canvas = document.createElement("canvas");
+        var contextEl = canvasEl.getContext("2d");
         
-        var context = canvas.getContext("2d");
+        canvasEl.width = this.imageEl.OriginWidth * this.getScaleLevel();
+        canvasEl.height = this.imageEl.OriginWidth * this.getScaleLevel();
+        var center = this.imageEl.OriginWidth / 2;
         
-        canvas.width = this.minWidth;
-        canvas.height = this.minHeight;
-        
-        var centerX = this.minWidth / 2;
-        var centerY = this.minHeight / 2;
-        
-        var cropWidth = this.thumb.getWidth() * this.getScaleLevel(true);
-        var cropHeight = this.thumb.getHeight() * this.getScaleLevel(true);
-        
-        var thumbX = Math.ceil(this.thumb.getLeft(true));
-        var thumbY = Math.ceil(this.thumb.getTop(true));
-        
-        var x = (thumbX - this.imageCanvas.getLeft(true)) * this.getScaleLevel(true);
-        var y = (thumbY - this.imageCanvas.getTop(true)) * this.getScaleLevel(true);
-        
-        if(this.rotate == 90){
-            
-            x = thumbY + (this.image.getWidth() - this.image.getHeight()) / 2 - this.imageCanvas.getTop(true);
-            y = this.image.getHeight() - this.thumb.getWidth() - (thumbX - (this.image.getWidth() - this.image.getHeight()) / 2 - this.imageCanvas.getLeft(true));
-            
-            x = x * this.getScaleLevel(true);
-            y = y * this.getScaleLevel(true);
-            
-            if(this.image.OriginWidth - cropHeight < x){
-                x = this.image.OriginWidth - cropHeight;
-            }
-
-            if(this.image.OriginHeight - cropWidth < y){
-                y = this.image.OriginHeight - cropWidth;
-            }
-            
-            x = x < 0 ? 0 : x;
-            y = y < 0 ? 0 : y;
-            
-            cropWidth = this.thumb.getHeight() * this.getScaleLevel(true);
-            cropHeight = this.thumb.getWidth() * this.getScaleLevel(true);
-            
-            canvas.width = this.minWidth > this.minHeight ? this.minWidth : this.minHeight;
-            canvas.height = this.minWidth > this.minHeight ? this.minWidth : this.minHeight;
-
-            centerX = this.minWidth > this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-            centerY = this.minWidth > this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-            
-            context.translate(centerX, centerY);
-            context.rotate(this.rotate * Math.PI / 180);
-            
-            context.drawImage(this.image.dom, x, y, cropWidth, cropHeight, centerX * -1, centerY * -1, this.minHeight, this.minWidth);
-        
-            var canvas2 = document.createElement("canvas");
-            var context2 = canvas2.getContext("2d");
-            
-            canvas2.width = this.minWidth;
-            canvas2.height = this.minHeight;
-            
-            context2.drawImage(canvas, Math.abs(this.minWidth - this.minHeight), 0, this.minWidth, this.minHeight, 0, 0, this.minWidth, this.minHeight);
-    
-            this.cropImageData = canvas2.toDataURL(this.file.type);
-            
-            this.fireEvent('crop', this, this.cropImageData);
-            
-            return;
+        if(this.imageEl.OriginWidth < this.imageEl.OriginHeight){
+            canvasEl.width = this.imageEl.OriginHeight * this.getScaleLevel();
+            canvasEl.height = this.imageEl.OriginHeight * this.getScaleLevel();
+            center = this.imageEl.OriginHeight / 2;
         }
         
-        if(this.rotate == 270){
-            
-            x = thumbY + (this.image.getWidth() - this.image.getHeight()) / 2 - this.imageCanvas.getTop(true);
-            y = thumbX - (this.image.getWidth() - this.image.getHeight()) / 2 - this.imageCanvas.getLeft(true);
-            
-            x = (this.image.getWidth() - this.thumb.getHeight() - x) * this.getScaleLevel(true);
-            y = y * this.getScaleLevel(true);
-            
-            if(this.image.OriginWidth - cropHeight < x){
-                x = this.image.OriginWidth - cropHeight;
-            }
-
-            if(this.image.OriginHeight - cropWidth < y){
-                y = this.image.OriginHeight - cropWidth;
-            }
-
-            x = x < 0 ? 0 : x;
-            y = y < 0 ? 0 : y;
-            
-            cropWidth = this.thumb.getHeight() * this.getScaleLevel(true);
-            cropHeight = this.thumb.getWidth() * this.getScaleLevel(true);
-            
-            canvas.width = this.minWidth > this.minHeight ? this.minWidth : this.minHeight;
-            canvas.height = this.minWidth > this.minHeight ? this.minWidth : this.minHeight;
+        contextEl.scale(this.getScaleLevel(), this.getScaleLevel());
+        
+        contextEl.translate(center, center);
+        contextEl.rotate(this.rotate * Math.PI / 180);
 
-            centerX = this.minWidth > this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-            centerY = this.minWidth > this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-            
-            context.translate(centerX, centerY);
-            context.rotate(this.rotate * Math.PI / 180);
-            
-            context.drawImage(this.image.dom, x, y, cropWidth, cropHeight, centerX * -1, centerY * -1, this.minHeight, this.minWidth);
+        contextEl.drawImage(this.imageEl, 0, 0, this.imageEl.OriginWidth, this.imageEl.OriginHeight, center * -1, center * -1, this.imageEl.OriginWidth, this.imageEl.OriginHeight);
         
-            var canvas2 = document.createElement("canvas");
-            var context2 = canvas2.getContext("2d");
-            
-            canvas2.width = this.minWidth;
-            canvas2.height = this.minHeight;
-            
-            context2.drawImage(canvas, 0, 0, this.minWidth, this.minHeight, 0, 0, this.minWidth, this.minHeight);
-    
-            this.cropImageData = canvas2.toDataURL(this.file.type);
-            
-            this.fireEvent('crop', this, this.cropImageData);
-            
-            return;
-        }
+        this.canvasEl = document.createElement("canvas");
         
-        if(this.rotate == 180){
-            x = this.image.OriginWidth - this.thumb.getWidth() * this.getScaleLevel(true) - x;
-            y = this.image.OriginHeight - this.thumb.getHeight() * this.getScaleLevel(true) - y;
-        }
+        this.contextEl = this.canvasEl.getContext("2d");
         
-        if(this.image.OriginWidth - cropWidth < x){
-            x = this.image.OriginWidth - cropWidth;
-        }
+        switch (this.rotate) {
+            case 0 :
+                
+                this.canvasEl.width = this.imageEl.OriginWidth * this.getScaleLevel();
+                this.canvasEl.height = this.imageEl.OriginHeight * this.getScaleLevel();
+                
+                this.contextEl.drawImage(canvasEl, 0, 0, this.canvasEl.width, this.canvasEl.height, 0, 0, this.canvasEl.width, this.canvasEl.height);
+                
+                break;
+            case 90 : 
+                
+                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(canvasEl, Math.abs(this.canvasEl.width - this.canvasEl.height), 0, this.canvasEl.width, this.canvasEl.height, 0, 0, this.canvasEl.width, this.canvasEl.height);
+                    break;
+                }
+                
+                this.contextEl.drawImage(canvasEl, 0, 0, this.canvasEl.width, this.canvasEl.height, 0, 0, this.canvasEl.width, this.canvasEl.height);
+                
+                break;
+            case 180 :
+                
+                this.canvasEl.width = this.imageEl.OriginWidth * this.getScaleLevel();
+                this.canvasEl.height = this.imageEl.OriginHeight * this.getScaleLevel();
+                
+                if(this.imageEl.OriginWidth > this.imageEl.OriginHeight){
+                    this.contextEl.drawImage(canvasEl, 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(canvasEl, 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.image.OriginHeight - cropHeight < y){
-            y = this.image.OriginHeight - cropHeight;
+                if(this.imageEl.OriginWidth > this.imageEl.OriginHeight){
+                    this.contextEl.drawImage(canvasEl, 0, 0, this.canvasEl.width, this.canvasEl.height, 0, 0, this.canvasEl.width, this.canvasEl.height);
+                    break;
+                }
+                
+                this.contextEl.drawImage(canvasEl, 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;
         }
         
-        x = x < 0 ? 0 : x;
-        y = y < 0 ? 0 : y;
-        
-        context.translate(centerX, centerY);
-
-        context.rotate(this.rotate * Math.PI / 180);
-        
-        context.drawImage(this.image.dom, x, y, cropWidth, cropHeight, centerX * -1, centerY * -1, canvas.width, canvas.height);
+        this.previewEl.appendChild(this.canvasEl);
         
-        this.cropImageData = canvas.toDataURL(this.file.type);
-        
-        this.fireEvent('crop', this, this.cropImageData);
+        this.setCanvasPosition();
     },
     
-    crop0 : function()
+    crop : function()
     {
         var canvas = document.createElement("canvas");
         
@@ -24548,316 +24461,42 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         canvas.width = this.minWidth;
         canvas.height = this.minHeight;
         
-        var centerX = this.minWidth / 2;
-        var centerY = this.minHeight / 2;
-        
-        var cropWidth = this.thumb.getWidth() * this.getScaleLevel(true);
-        var cropHeight = this.thumb.getHeight() * this.getScaleLevel(true);
-        
-        var thumbX = Math.ceil(this.thumb.getLeft(true));
-        var thumbY = Math.ceil(this.thumb.getTop(true));
-        
-        var x = (thumbX - this.imageCanvas.getLeft(true)) * this.getScaleLevel(true);
-        var y = (thumbY - this.imageCanvas.getTop(true)) * this.getScaleLevel(true);
-        
-        if(this.rotate == 90){
-            
-            x = thumbY + (this.image.getWidth() - this.image.getHeight()) / 2 - this.imageCanvas.getTop(true);
-            y = this.image.getHeight() - this.thumb.getWidth() - (thumbX - (this.image.getWidth() - this.image.getHeight()) / 2 - this.imageCanvas.getLeft(true));
-            
-            x = x * this.getScaleLevel(true);
-            y = y * this.getScaleLevel(true);
-            
-            if(this.image.OriginWidth - cropHeight < x){
-                x = this.image.OriginWidth - cropHeight;
-            }
-
-            if(this.image.OriginHeight - cropWidth < y){
-                y = this.image.OriginHeight - cropWidth;
-            }
-            
-            x = x < 0 ? 0 : x;
-            y = y < 0 ? 0 : y;
-            
-            cropWidth = this.thumb.getHeight() * this.getScaleLevel(true);
-            cropHeight = this.thumb.getWidth() * this.getScaleLevel(true);
-            
-            canvas.width = this.minWidth > this.minHeight ? this.minWidth : this.minHeight;
-            canvas.height = this.minWidth > this.minHeight ? this.minWidth : this.minHeight;
-
-            centerX = this.minWidth > this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-            centerY = this.minWidth > this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-            
-            context.translate(centerX, centerY);
-            context.rotate(this.rotate * Math.PI / 180);
-            
-            context.drawImage(this.image.dom, x, y, cropWidth, cropHeight, centerX * -1, centerY * -1, this.minHeight, this.minWidth);
-        
-            var canvas2 = document.createElement("canvas");
-            var context2 = canvas2.getContext("2d");
-            
-            canvas2.width = this.minWidth;
-            canvas2.height = this.minHeight;
-            
-            context2.drawImage(canvas, Math.abs(this.minWidth - this.minHeight), 0, this.minWidth, this.minHeight, 0, 0, this.minWidth, this.minHeight);
-    
-            this.cropImageData = canvas2.toDataURL(this.file.type);
-            
-            this.fireEvent('crop', this, this.cropImageData);
-            
-            return;
-        }
-        
-        if(this.rotate == 270){
-            
-            x = thumbY + (this.image.getWidth() - this.image.getHeight()) / 2 - this.imageCanvas.getTop(true);
-            y = thumbX - (this.image.getWidth() - this.image.getHeight()) / 2 - this.imageCanvas.getLeft(true);
-            
-            x = (this.image.getWidth() - this.thumb.getHeight() - x) * this.getScaleLevel(true);
-            y = y * this.getScaleLevel(true);
-            
-            if(this.image.OriginWidth - cropHeight < x){
-                x = this.image.OriginWidth - cropHeight;
-            }
-
-            if(this.image.OriginHeight - cropWidth < y){
-                y = this.image.OriginHeight - cropWidth;
-            }
-
-            x = x < 0 ? 0 : x;
-            y = y < 0 ? 0 : y;
-            
-            cropWidth = this.thumb.getHeight() * this.getScaleLevel(true);
-            cropHeight = this.thumb.getWidth() * this.getScaleLevel(true);
-            
-            canvas.width = this.minWidth > this.minHeight ? this.minWidth : this.minHeight;
-            canvas.height = this.minWidth > this.minHeight ? this.minWidth : this.minHeight;
-
-            centerX = this.minWidth > this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-            centerY = this.minWidth > this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-            
-            context.translate(centerX, centerY);
-            context.rotate(this.rotate * Math.PI / 180);
-            
-            context.drawImage(this.image.dom, x, y, cropWidth, cropHeight, centerX * -1, centerY * -1, this.minHeight, this.minWidth);
-        
-            var canvas2 = document.createElement("canvas");
-            var context2 = canvas2.getContext("2d");
-            
-            canvas2.width = this.minWidth;
-            canvas2.height = this.minHeight;
-            
-            context2.drawImage(canvas, 0, 0, this.minWidth, this.minHeight, 0, 0, this.minWidth, this.minHeight);
-    
-            this.cropImageData = canvas2.toDataURL(this.file.type);
-            
-            this.fireEvent('crop', this, this.cropImageData);
-            
-            return;
-        }
-        
-        if(this.rotate == 180){
-            x = this.image.OriginWidth - this.thumb.getWidth() * this.getScaleLevel(true) - x;
-            y = this.image.OriginHeight - this.thumb.getHeight() * this.getScaleLevel(true) - y;
-        }
-        
-        if(this.image.OriginWidth - cropWidth < x){
-            x = this.image.OriginWidth - cropWidth;
-        }
-        
-        if(this.image.OriginHeight - cropHeight < y){
-            y = this.image.OriginHeight - cropHeight;
-        }
+        var cropWidth = this.thumbEl.getWidth();
+        var cropHeight = this.thumbEl.getHeight();
         
-        x = x < 0 ? 0 : x;
-        y = y < 0 ? 0 : y;
-        
-        context.translate(centerX, centerY);
-
-        context.rotate(this.rotate * Math.PI / 180);
-        
-        context.drawImage(this.image.dom, x, y, cropWidth, cropHeight, centerX * -1, centerY * -1, canvas.width, canvas.height);
-        
-        this.cropImageData = canvas.toDataURL(this.file.type);
-        
-        this.fireEvent('crop', this, this.cropImageData);
-    },
-    
-    crop90 : function()
-    {
-        var canvas = document.createElement("canvas");
-        
-        var context = canvas.getContext("2d");
-        
-        canvas.width = this.minWidth > this.minHeight ? this.minWidth : this.minHeight;
-        canvas.height = this.minWidth > this.minHeight ? this.minWidth : this.minHeight;
-        
-        var centerX = this.minWidth > this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-        var centerY = this.minWidth > this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-        
-        var cropWidth = this.thumb.getWidth() * this.getScaleLevel(true);
-        var cropHeight = this.thumb.getHeight() * this.getScaleLevel(true);
-        
-        var thumbX = Math.ceil(this.thumb.getLeft(true) + this.thumb.getWidth());
-        var thumbY = Math.ceil(this.thumb.getTop(true));
-        
-        var x = (thumbY - this.imageCanvas.getTop(true)) * this.getScaleLevel(true);
-        var y = (thumbX - this.imageCanvas.getLeft(true)) * this.getScaleLevel(true);
-        
-        
-//        if(this.rotate == 90){
-//            
-//            x = thumbY + (this.image.getWidth() - this.image.getHeight()) / 2 - this.imageCanvas.getTop(true);
-//            y = this.image.getHeight() - this.thumb.getWidth() - (thumbX - (this.image.getWidth() - this.image.getHeight()) / 2 - this.imageCanvas.getLeft(true));
-//            
-//            x = x * this.getScaleLevel(true);
-//            y = y * this.getScaleLevel(true);
-//            
-//            if(this.image.OriginWidth - cropHeight < x){
-//                x = this.image.OriginWidth - cropHeight;
-//            }
-//
-//            if(this.image.OriginHeight - cropWidth < y){
-//                y = this.image.OriginHeight - cropWidth;
-//            }
-//            
-//            x = x < 0 ? 0 : x;
-//            y = y < 0 ? 0 : y;
-//            
-//            cropWidth = this.thumb.getHeight() * this.getScaleLevel(true);
-//            cropHeight = this.thumb.getWidth() * this.getScaleLevel(true);
-//            
-//            canvas.width = this.minWidth > this.minHeight ? this.minWidth : this.minHeight;
-//            canvas.height = this.minWidth > this.minHeight ? this.minWidth : this.minHeight;
-//
-//            centerX = this.minWidth > this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-//            centerY = this.minWidth > this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-//            
-//            context.translate(centerX, centerY);
-//            context.rotate(this.rotate * Math.PI / 180);
-//            
-//            context.drawImage(this.image.dom, x, y, cropWidth, cropHeight, centerX * -1, centerY * -1, this.minHeight, this.minWidth);
-//        
-//            var canvas2 = document.createElement("canvas");
-//            var context2 = canvas2.getContext("2d");
-//            
-//            canvas2.width = this.minWidth;
-//            canvas2.height = this.minHeight;
-//            
-//            context2.drawImage(canvas, Math.abs(this.minWidth - this.minHeight), 0, this.minWidth, this.minHeight, 0, 0, this.minWidth, this.minHeight);
-//    
-//            this.cropImageData = canvas2.toDataURL(this.file.type);
-//            
-//            this.fireEvent('crop', this, this.cropImageData);
-//            
-//            return;
-//        }
-//        
-//        if(this.rotate == 270){
-//            
-//            x = thumbY + (this.image.getWidth() - this.image.getHeight()) / 2 - this.imageCanvas.getTop(true);
-//            y = thumbX - (this.image.getWidth() - this.image.getHeight()) / 2 - this.imageCanvas.getLeft(true);
-//            
-//            x = (this.image.getWidth() - this.thumb.getHeight() - x) * this.getScaleLevel(true);
-//            y = y * this.getScaleLevel(true);
-//            
-//            if(this.image.OriginWidth - cropHeight < x){
-//                x = this.image.OriginWidth - cropHeight;
-//            }
-//
-//            if(this.image.OriginHeight - cropWidth < y){
-//                y = this.image.OriginHeight - cropWidth;
-//            }
-//
-//            x = x < 0 ? 0 : x;
-//            y = y < 0 ? 0 : y;
-//            
-//            cropWidth = this.thumb.getHeight() * this.getScaleLevel(true);
-//            cropHeight = this.thumb.getWidth() * this.getScaleLevel(true);
-//            
-//            canvas.width = this.minWidth > this.minHeight ? this.minWidth : this.minHeight;
-//            canvas.height = this.minWidth > this.minHeight ? this.minWidth : this.minHeight;
-//
-//            centerX = this.minWidth > this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-//            centerY = this.minWidth > this.minHeight ? (this.minWidth / 2) : (this.minHeight / 2);
-//            
-//            context.translate(centerX, centerY);
-//            context.rotate(this.rotate * Math.PI / 180);
-//            
-//            context.drawImage(this.image.dom, x, y, cropWidth, cropHeight, centerX * -1, centerY * -1, this.minHeight, this.minWidth);
-//        
-//            var canvas2 = document.createElement("canvas");
-//            var context2 = canvas2.getContext("2d");
-//            
-//            canvas2.width = this.minWidth;
-//            canvas2.height = this.minHeight;
-//            
-//            context2.drawImage(canvas, 0, 0, this.minWidth, this.minHeight, 0, 0, this.minWidth, this.minHeight);
-//    
-//            this.cropImageData = canvas2.toDataURL(this.file.type);
-//            
-//            this.fireEvent('crop', this, this.cropImageData);
-//            
-//            return;
-//        }
-//        
-//        if(this.rotate == 180){
-//            x = this.image.OriginWidth - this.thumb.getWidth() * this.getScaleLevel(true) - x;
-//            y = this.image.OriginHeight - this.thumb.getHeight() * this.getScaleLevel(true) - y;
-//        }
+        var x = this.thumbEl.getLeft(true) - this.previewEl.getLeft(true);
+        var y = this.thumbEl.getTop(true) - this.previewEl.getTop(true);
         
-        if(this.image.OriginWidth - cropWidth < y){
-            y = this.image.OriginWidth - cropWidth;
+        if(this.canvasEl.width - cropWidth < x){
+            x = this.canvasEl.width - cropWidth;
         }
         
-        if(this.image.OriginHeight - cropHeight < x){
-            x = this.image.OriginHeight - cropHeight;
+        if(this.canvasEl.height - cropHeight < y){
+            y = this.canvasEl.height - cropHeight;
         }
         
         x = x < 0 ? 0 : x;
         y = y < 0 ? 0 : y;
         
-        context.translate(centerX, centerY);
-
-        context.rotate(this.rotate * Math.PI / 180);
+        context.drawImage(this.canvasEl, x, y, cropWidth, cropHeight, 0, 0, canvas.width, canvas.height);
         
-        alert(x);
-        alert(y);
-        alert(cropWidth);
-        alert(cropHeight);
-        context.drawImage(this.image.dom, x, y, cropWidth, cropHeight, centerX * -1, centerY * -1, this.minHeight, this.minWidth);
+        this.cropData = canvas.toDataURL(this.cropType);
         
-        window.open(canvas.toDataURL(this.file.type));
-        return;
+        this.fireEvent('crop', this, this.cropData);
         
-        var canvas2 = document.createElement("canvas");
-        var context2 = canvas2.getContext("2d");
-
-        canvas2.width = this.minWidth;
-        canvas2.height = this.minHeight;
-
-        context2.drawImage(canvas, 0, 0, this.minWidth, this.minHeight, 0, 0, this.minWidth, this.minHeight);
-
-        this.cropImageData = canvas2.toDataURL(this.file.type);
-
-        this.fireEvent('crop', this, this.cropImageData);
-        
-        return;
     },
     
-    calcThumbBoxSize : function()
+    setThumbBoxSize : function()
     {
-        var width, height;
-        
-        height = 300;
-        width = Math.ceil(this.minWidth * height / this.minHeight);
+        var height = 300;
+        var width = Math.ceil(this.minWidth * height / this.minHeight);
         
         if(this.minWidth > this.minHeight){
             width = 300;
             height = Math.ceil(this.minHeight * width / this.minWidth);
         }
         
-        this.thumb.setStyle({
+        this.thumbEl.setStyle({
             width : width + 'px',
             height : height + 'px'
         });
@@ -24866,60 +24505,85 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
             
     },
     
-    placeThumbBox : function()
+    setThumbBoxPosition : function()
     {
-        var x = Math.ceil((this.imageSection.getWidth() - this.thumb.getWidth()) / 2 );
-        var y = Math.ceil((this.imageSection.getHeight() - this.thumb.getHeight()) / 2);
+        var x = Math.ceil((this.bodyEl.getWidth() - this.thumbEl.getWidth()) / 2 );
+        var y = Math.ceil((this.bodyEl.getHeight() - this.thumbEl.getHeight()) / 2);
         
-        this.thumb.setLeft(x);
-        this.thumb.setTop(y);
+        this.thumbEl.setLeft(x);
+        this.thumbEl.setTop(y);
         
     },
     
-    fitThumbBox : function()
+    baseRotateLevel : function()
     {
-        var width = this.thumb.getWidth();
-        var height = this.image.OriginHeight * width / this.image.OriginWidth;
-        
-        this.baseScale = width / this.image.OriginWidth;
+        this.baseRotate = 1;
         
-        if(this.image.OriginWidth > this.image.OriginHeight){
-            height = this.thumb.getHeight();
-            width = this.image.OriginWidth * height / this.image.OriginHeight;
-            
-            this.baseScale = height / this.image.OriginHeight;
+        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']];
         }
         
-        return;
+        this.rotate = Roo.bootstrap.UploadCropbox['Orientation'][this.baseRotate];
+        
     },
     
-    Orientation : function()
+    baseScaleLevel : function()
     {
-        this.baseRotate = 1;
+        var width, height;
         
-        if(
-                typeof(this.exif[Roo.bootstrap.UploadCropbox['tags']['Orientation']]) == 'undefined' || 
-                [1, 3, 6, 8].indexOf(this.exif[Roo.bootstrap.UploadCropbox['tags']['Orientation']]) == -1
-        ){
+        if(this.baseRotate == 6 || this.baseRotate == 8){
+            
+            width = this.thumbEl.getHeight();
+            this.baseScale = height / this.imageEl.OriginHeight;
+            
+            if(this.imageEl.OriginHeight * this.baseScale < this.thumbEl.getWidth()){
+                height = this.thumbEl.getWidth();
+                this.baseScale = height / this.imageEl.OriginHeight;
+            }
+            
+            if(this.imageEl.OriginWidth > this.imageEl.OriginHeight){
+                height = this.thumbEl.getWidth();
+                this.baseScale = height / this.imageEl.OriginHeight;
+                
+                if(this.imageEl.OriginWidth * this.baseScale < this.thumbEl.getHeight()){
+                    width = this.thumbEl.getHeight();
+                    this.baseScale = width / this.imageEl.OriginWidth;
+                }
+            }
+            
             return;
         }
         
-        this.baseRotate = this.exif[Roo.bootstrap.UploadCropbox['tags']['Orientation']];
+        width = this.thumbEl.getWidth();
+        this.baseScale = width / this.imageEl.OriginWidth;
         
-    },
-    
-    getBaseRotateLevel : function()
-    {
-        return (Roo.isIOS) ? Roo.bootstrap.UploadCropbox['Orientation']['iOS'][this.baseRotate] : Roo.bootstrap.UploadCropbox['Orientation']['Android'][this.baseRotate];
+        if(this.imageEl.OriginHeight * this.baseScale < this.thumbEl.getHeight()){
+            height = this.thumbEl.getHeight();
+            this.baseScale = height / this.imageEl.OriginHeight;
+        }
         
+        
+        if(this.imageEl.OriginWidth > this.imageEl.OriginHeight){
+            
+            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;
     },
     
-    getScaleLevel : function(reverse)
+    getScaleLevel : function()
     {
-        if(reverse){
-            return Math.pow(1.1, this.scale * -1) / this.baseScale;
-        }
-        
         return this.baseScale * Math.pow(1.1, this.scale);
     },
     
@@ -24951,7 +24615,7 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         var x = Math.pow(coords[0] - coords[2], 2);
         var y = Math.pow(coords[1] - coords[3], 2);
         
-        this.startDistance =  Math.sqrt(x + y);
+        this.startDistance = Math.sqrt(x + y);
         
         this.startScale = this.scale;
         
@@ -24988,22 +24652,22 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         var x = Math.pow(coords[0] - coords[2], 2);
         var y = Math.pow(coords[1] - coords[3], 2);
         
-        this.endDistance =  Math.sqrt(x + y);
+        this.endDistance = Math.sqrt(x + y);
         
         var scale = this.startScale + Math.floor(Math.log(this.endDistance / this.startDistance) / Math.log(1.1));
         
-        var width = Math.ceil(this.image.OriginWidth * this.baseScale * Math.pow(1.1, scale));
-        var height = Math.ceil(this.image.OriginHeight * this.baseScale * Math.pow(1.1, scale));
+        var width = Math.ceil(this.imageEl.OriginWidth * this.baseScale * Math.pow(1.1, scale));
+        var height = Math.ceil(this.imageEl.OriginHeight * this.baseScale * Math.pow(1.1, scale));
         
         if(
                 this.endDistance / this.startDistance < 1 &&
                 (
                     (
-                        (this.rotate == 0 || this.rotate == 180) && (width < this.thumb.getWidth() || height < this.thumb.getHeight())
+                        (this.rotate == 0 || this.rotate == 180) && (width < this.thumbEl.getWidth() || height < this.thumbEl.getHeight())
                     )
                     ||
                     (
-                        (this.rotate == 90 || this.rotate == 270) && (height < this.thumb.getWidth() || width < this.thumb.getHeight())
+                        (this.rotate == 90 || this.rotate == 270) && (height < this.thumbEl.getWidth() || width < this.thumbEl.getHeight())
                     )
                 )
         ){
@@ -25012,11 +24676,7 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
         
         this.scale = scale;
         
-        this.image.setWidth(width);
-        this.image.setHeight(height);
-        
-        this.setCanvasPosition();
-        
+        this.draw();
         
     },
     
@@ -25030,20 +24690,22 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
     },
     
     prepare : function(input)
-    {
-        if(!input.files || !input.files[0]){
+    {        
+        this.file = false;
+        this.exif = {};
+        
+        if(typeof(input) === 'string'){
+            this.loadCanvas(input);
             return;
         }
         
-        this.file = input.files[0];
-        
-        var noMetaData = !(window.DataView  && this.file && this.file.size >= 12 && this.file.type === 'image/jpeg');
-        
-        if(noMetaData){ // ??? only for jpeg ???
-            Roo.log('noMetaData');
+        if(!input.files || !input.files[0] || !this.urlAPI){
             return;
         }
         
+        this.file = input.files[0];
+        this.cropType = this.file.type;
+        
         var _this = this;
         
         if(this.fireEvent('prepare', this, this.file) != false){
@@ -25092,15 +24754,9 @@ Roo.extend(Roo.bootstrap.UploadCropbox, Roo.bootstrap.Component,  {
                     
                 }
                 
-                var urlAPI = (window.createObjectURL && window) || (window.URL && URL.revokeObjectURL && URL) || (window.webkitURL && webkitURL);
-                
-                if(!urlAPI){
-                    return;
-                }
-                
-                var url = urlAPI.createObjectURL(_this.file);
+                var url = _this.urlAPI.createObjectURL(_this.file);
                 
-                _this.loadCanvasImage(url);
+                _this.loadCanvas(url);
                 
                 return;
             }
@@ -25261,7 +24917,6 @@ Roo.apply(Roo.bootstrap.UploadCropbox, {
     },
     
     Orientation: {
-        iOS : {
             1: 0, //'top-left',
 //            2: 'top-right',
             3: 180, //'bottom-right',
@@ -25270,17 +24925,6 @@ Roo.apply(Roo.bootstrap.UploadCropbox, {
             6: 90, //'right-top',
 //            7: 'right-bottom',
             8: 270 //'left-bottom'
-        },
-        Android : {
-            1: 0, //'top-left',
-//            2: 'top-right',
-            3: 180, //'bottom-right',
-//            4: 'bottom-left',
-//            5: 'left-top',
-            6: 270, //'right-top',
-//            7: 'right-bottom',
-            8: 90 //'left-bottom'
-        }
     },
     
     exifTagTypes : {
index 1fd88d1..2e95e7a 100644 (file)
@@ -529,7 +529,7 @@ this.tickItems.push(d.data);}G.on('click',this.onTouchViewClick,this,{row:G,rowI
 if(this.fieldLabel.length){D=D-this.touchViewHeaderEl.getHeight();}var E=this.touchViewListGroup.getHeight();if(C&&E>D){(function(){C.findParent('li').scrollIntoView(this.touchViewListGroup.dom);}).defer(500);}},onTouchViewLoadException:function(){this.hideTouchView();
 },onTouchViewEmptyResults:function(){this.clearTouchView();this.touchViewListGroup.createChild(Roo.bootstrap.ComboBox.emptyResult);this.touchViewListGroup.select('.roo-combobox-touch-view-empty-result',true).first().dom.innerHTML=this.emptyResultText;},clearTouchView:function(){this.touchViewListGroup.dom.innerHTML='';
 },onTouchViewClick:function(e,el,o){e.preventDefault();var A=o.row;var B=o.rowIndex;var r=this.store.getAt(B);if(!this.multiple){Roo.each(this.touchViewListGroup.select('.list-group-item > .roo-combobox-list-group-item-box > input:checked',true).elements,function(c){c.dom.removeAttribute('checked');
-},this);A.select('.roo-combobox-list-group-item-box > input',true).first().attr('checked',true);this.setFromData(r.data);var C=this.closeTriggerEl();if(C){C.show();}this.hideTouchView();return;}if(this.valueField&&typeof(r.data[this.valueField])!='undefined'&&this.getValue().indexOf(r.data[this.valueField])!=-1){A.select('.roo-combobox-list-group-item-box > input',true).first().dom.removeAttribute('checked');
+},this);A.select('.roo-combobox-list-group-item-box > input',true).first().attr('checked',true);this.setFromData(r.data);var C=this.closeTriggerEl();if(C){C.show();}this.hideTouchView();this.fireEvent('select',this,r,B);return;}if(this.valueField&&typeof(r.data[this.valueField])!='undefined'&&this.getValue().indexOf(r.data[this.valueField])!=-1){A.select('.roo-combobox-list-group-item-box > input',true).first().dom.removeAttribute('checked');
 this.tickItems.splice(this.tickItems.indexOf(r.data),1);return;}A.select('.roo-combobox-list-group-item-box > input',true).first().attr('checked',true);this.addItem(r.data);this.tickItems.push(r.data);}});Roo.apply(Roo.bootstrap.ComboBox,{header:{tag:'div',cls:'modal-header',cn:[{tag:'h4',cls:'modal-title'}]},body:{tag:'div',cls:'modal-body',cn:[{tag:'ul',cls:'list-group'}]},listItemRadio:{tag:'li',cls:'list-group-item',cn:[{tag:'span',cls:'roo-combobox-list-group-item-value'},{tag:'div',cls:'roo-combobox-list-group-item-box pull-xs-right radio-inline radio radio-info',cn:[{tag:'input',type:'radio'},{tag:'label'}]}]},listItemCheckbox:{tag:'li',cls:'list-group-item',cn:[{tag:'span',cls:'roo-combobox-list-group-item-value'},{tag:'div',cls:'roo-combobox-list-group-item-box pull-xs-right checkbox-inline checkbox checkbox-info',cn:[{tag:'input',type:'checkbox'},{tag:'label'}]}]},emptyResult:{tag:'div',cls:'alert alert-danger roo-combobox-touch-view-empty-result'},footer:{tag:'div',cls:'modal-footer',cn:[{tag:'div',cls:'row',cn:[{tag:'div',cls:'col-xs-6 text-left',cn:{tag:'button',cls:'btn btn-danger roo-touch-view-cancel',html:'Cancel'}},{tag:'div',cls:'col-xs-6 text-right',cn:{tag:'button',cls:'btn btn-success roo-touch-view-ok',html:'OK'}}]}]}});
 Roo.apply(Roo.bootstrap.ComboBox,{touchViewTemplate:{tag:'div',cls:'modal fade roo-combobox-touch-view',cn:[{tag:'div',cls:'modal-dialog',cn:[{tag:'div',cls:'modal-content',cn:[Roo.bootstrap.ComboBox.header,Roo.bootstrap.ComboBox.body,Roo.bootstrap.ComboBox.footer]}]}]}});
 
@@ -980,78 +980,56 @@ 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,"beforeloadimage":true});};Roo.extend(Roo.bootstrap.UploadCropbox,Roo.bootstrap.Component,{emptyText:'Click to upload image',scale:0,baseScale:1,rotate:0,dragable:false,pinching:false,mouseX:0,mouseY:0,cropImageData:false,minWidth:300,minHeight:300,file:false,exif:{},baseRotate:1,getAutoCreate:function(){var A={tag:'div',cls:'roo-upload-cropbox',cn:[{tag:'div',cls:'roo-upload-cropbox-image-section',cn:[{tag:'div',cls:'roo-upload-cropbox-canvas',cn:[{tag:'img',cls:'roo-upload-cropbox-image'}]},{tag:'div',cls:'roo-upload-cropbox-thumb'},{tag:'div',cls:'roo-upload-cropbox-empty-notify',html:this.emptyText}]},{tag:'div',cls:'roo-upload-cropbox-footer-section',cn:{tag:'div',cls:'btn-group btn-group-justified roo-upload-cropbox-btn-group',cn:[{tag:'div',cls:'btn-group',cn:[{tag:'button',cls:'btn btn-default roo-upload-cropbox-rotate-left',html:'<i class="fa fa-undo"></i>'}]},{tag:'div',cls:'btn-group',cn:[{tag:'button',cls:'btn btn-default roo-upload-cropbox-picture',html:'<i class="fa fa-picture-o"></i>'}]},{tag:'div',cls:'btn-group',cn:[{tag:'button',cls:'btn btn-default roo-upload-cropbox-rotate-right',html:'<i class="fa fa-repeat"></i>'}]}]}}]};
-return A;},initEvents:function(){this.imageSection=this.el.select('.roo-upload-cropbox-image-section',true).first();this.imageSection.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.imageCanvas=this.el.select('.roo-upload-cropbox-canvas',true).first();
-this.imageCanvas.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.image=this.el.select('.roo-upload-cropbox-image',true).first();this.image.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.thumb=this.el.select('.roo-upload-cropbox-thumb',true).first();
-this.thumb.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.thumb.hide();this.emptyNotify=this.el.select('.roo-upload-cropbox-empty-notify',true).first();this.emptyNotify.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.footerSection=this.el.select('.roo-upload-cropbox-footer-section',true).first();
-this.footerSection.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.footerSection.hide();this.rotateLeft=this.el.select('.roo-upload-cropbox-rotate-left',true).first();this.rotateLeft.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';
-this.pictureBtn=this.el.select('.roo-upload-cropbox-picture',true).first();this.pictureBtn.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.rotateRight=this.el.select('.roo-upload-cropbox-rotate-right',true).first();this.rotateRight.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';
-this.calcThumbBoxSize();this.bind();this.fireEvent('initial',this);},bind:function(){this.image.on('load',this.onLoadCanvasImage,this);if(!this.imageSectionHasOnClickEvent){this.imageSection.on('click',this.beforeSelectFile,this);this.imageSectionHasOnClickEvent=true;
-}if(Roo.isTouch){this.imageSection.on('touchstart',this.onTouchStart,this);this.imageSection.on('touchmove',this.onTouchMove,this);this.imageSection.on('touchend',this.onTouchEnd,this);}if(!Roo.isTouch){this.imageSection.on('mousedown',this.onMouseDown,this);
-this.imageSection.on('mousemove',this.onMouseMove,this);var A=(/Firefox/i.test(navigator.userAgent))?'DOMMouseScroll':'mousewheel';this.imageSection.on(A,this.onMouseWheel,this);Roo.get(document).on('mouseup',this.onMouseUp,this);}this.pictureBtn.on('click',this.beforeSelectFile,this);
-this.rotateLeft.on('click',this.onRotateLeft,this);this.rotateRight.on('click',this.onRotateRight,this);},reset:function(){this.scale=0;this.baseScale=1;this.rotate=0;this.dragable=false;this.pinching=false;this.mouseX=0;this.mouseY=0;this.cropImageData=false;
-this.imageCanvas.dom.removeAttribute('style');this.image.dom.removeAttribute('style');this.image.attr('src','');if(!this.imageSectionHasOnClickEvent){this.imageSection.on('click',this.beforeSelectFile,this);this.imageSectionHasOnClickEvent=true;}},beforeSelectFile:function(e){e.preventDefault();
-this.fireEvent('beforeselectfile',this);},loadCanvasImage:function(A){if(this.fireEvent('beforeloadimage',this,A)!=false){this.reset();this.image.attr('src',A);}},onLoadCanvasImage:function(A){this.emptyNotify.hide();this.thumb.show();this.footerSection.show();
-this.placeThumbBox();this.Orientation();if(this.imageSectionHasOnClickEvent){this.imageSection.un('click',this.beforeSelectFile,this);this.imageSectionHasOnClickEvent=false;}this.image.OriginWidth=this.image.getWidth();this.image.OriginHeight=this.image.getHeight();
-this.fitThumbBox();this.image.setWidth(Math.ceil(this.image.OriginWidth*this.getScaleLevel(false)));this.image.setHeight(Math.ceil(this.image.OriginHeight*this.getScaleLevel(false)));this.setCanvasPosition();},setCanvasPosition:function(){var pw=Math.ceil((this.imageSection.getWidth()-this.image.getWidth())/2);
-var ph=Math.ceil((this.imageSection.getHeight()-this.image.getHeight())/2);this.imageCanvas.setLeft(pw);this.imageCanvas.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.dragable){return;}var A=Math.ceil(this.thumb.getLeft(true));var B=Math.ceil(this.thumb.getTop(true));var C=Math.ceil(A+this.thumb.getWidth()-this.image.getWidth());
-var D=Math.ceil(B+this.thumb.getHeight()-this.image.getHeight());if(this.rotate==90||this.rotate==270){A=Math.ceil(this.thumb.getLeft(true)-(this.image.getWidth()-this.image.getHeight())/2);B=Math.ceil(this.thumb.getTop(true)+(this.image.getWidth()-this.image.getHeight())/2);
-C=Math.ceil(A+this.thumb.getWidth()-this.image.getHeight());D=Math.ceil(B+this.thumb.getHeight()-this.image.getWidth());}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.imageCanvas.getLeft(true));var F=Math.ceil(y+this.imageCanvas.getTop(true));E=(A<E)?A:((C>E)?C:E);F=(B<F)?B:((D>F)?D:F);this.imageCanvas.setLeft(E);this.imageCanvas.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.scale=(e.getWheelDelta()==1)?(this.scale+1):(this.scale-1);var A=Math.ceil(this.image.OriginWidth*this.getScaleLevel(false));
-var B=Math.ceil(this.image.OriginHeight*this.getScaleLevel(false));if(e.getWheelDelta()==-1&&(((this.rotate==0||this.rotate==180)&&(A<this.thumb.getWidth()||B<this.thumb.getHeight()))||((this.rotate==90||this.rotate==270)&&(B<this.thumb.getWidth()||A<this.thumb.getHeight())))){this.scale=(e.getWheelDelta()==1)?(this.scale-1):(this.scale+1);
-return;}this.image.setWidth(A);this.image.setHeight(B);this.setCanvasPosition();},onRotateLeft:function(e){e.stopEvent();if(((this.rotate==0||this.rotate==180)&&(this.image.getHeight()<this.thumb.getWidth()||this.image.getWidth()<this.thumb.getHeight()))||((this.rotate==90||this.rotate==270)&&(this.image.getWidth()<this.thumb.getWidth()||this.image.getHeight()<this.thumb.getHeight()))){return;
-}this.rotate=(this.rotate<90)?270:this.rotate-90;this.imageCanvas.setStyle({'-ms-transform':'rotate('+this.rotate+'deg)','-webkit-transform':'rotate('+this.rotate+'deg)','transform':'rotate('+this.rotate+'deg)'});this.setCanvasPosition();},onRotateRight:function(e){e.stopEvent();
-if(((this.rotate==0||this.rotate==180)&&(this.image.getHeight()<this.thumb.getWidth()||this.image.getWidth()<this.thumb.getHeight()))||((this.rotate==90||this.rotate==270)&&(this.image.getWidth()<this.thumb.getWidth()||this.image.getHeight()<this.thumb.getHeight()))){return false;
-}this.rotate=(this.rotate>180)?0:this.rotate+90;this.imageCanvas.setStyle({'-ms-transform':'rotate('+this.rotate+'deg)','-webkit-transform':'rotate('+this.rotate+'deg)','transform':'rotate('+this.rotate+'deg)'});this.setCanvasPosition();},crop:function(){var A=this.getBaseRotateLevel();
-Roo.log(A);var B=document.createElement("canvas");var C=B.getContext("2d");B.width=this.minWidth;B.height=this.minHeight;var D=this.minWidth/2;var E=this.minHeight/2;var F=this.thumb.getWidth()*this.getScaleLevel(true);var G=this.thumb.getHeight()*this.getScaleLevel(true);
-var H=Math.ceil(this.thumb.getLeft(true));var I=Math.ceil(this.thumb.getTop(true));var x=(H-this.imageCanvas.getLeft(true))*this.getScaleLevel(true);var y=(I-this.imageCanvas.getTop(true))*this.getScaleLevel(true);if(this.rotate==90){x=I+(this.image.getWidth()-this.image.getHeight())/2-this.imageCanvas.getTop(true);
-y=this.image.getHeight()-this.thumb.getWidth()-(H-(this.image.getWidth()-this.image.getHeight())/2-this.imageCanvas.getLeft(true));x=x*this.getScaleLevel(true);y=y*this.getScaleLevel(true);if(this.image.OriginWidth-G<x){x=this.image.OriginWidth-G;}if(this.image.OriginHeight-F<y){y=this.image.OriginHeight-F;
-}x=x<0?0:x;y=y<0?0:y;F=this.thumb.getHeight()*this.getScaleLevel(true);G=this.thumb.getWidth()*this.getScaleLevel(true);B.width=this.minWidth>this.minHeight?this.minWidth:this.minHeight;B.height=this.minWidth>this.minHeight?this.minWidth:this.minHeight;D=this.minWidth>this.minHeight?(this.minWidth/2):(this.minHeight/2);
-E=this.minWidth>this.minHeight?(this.minWidth/2):(this.minHeight/2);C.translate(D,E);C.rotate(this.rotate*Math.PI/180);C.drawImage(this.image.dom,x,y,F,G,D*-1,E*-1,this.minHeight,this.minWidth);var J=document.createElement("canvas");var K=J.getContext("2d");
-J.width=this.minWidth;J.height=this.minHeight;K.drawImage(B,Math.abs(this.minWidth-this.minHeight),0,this.minWidth,this.minHeight,0,0,this.minWidth,this.minHeight);this.cropImageData=J.toDataURL(this.file.type);this.fireEvent('crop',this,this.cropImageData);
-return;}if(this.rotate==270){x=I+(this.image.getWidth()-this.image.getHeight())/2-this.imageCanvas.getTop(true);y=H-(this.image.getWidth()-this.image.getHeight())/2-this.imageCanvas.getLeft(true);x=(this.image.getWidth()-this.thumb.getHeight()-x)*this.getScaleLevel(true);
-y=y*this.getScaleLevel(true);if(this.image.OriginWidth-G<x){x=this.image.OriginWidth-G;}if(this.image.OriginHeight-F<y){y=this.image.OriginHeight-F;}x=x<0?0:x;y=y<0?0:y;F=this.thumb.getHeight()*this.getScaleLevel(true);G=this.thumb.getWidth()*this.getScaleLevel(true);
-B.width=this.minWidth>this.minHeight?this.minWidth:this.minHeight;B.height=this.minWidth>this.minHeight?this.minWidth:this.minHeight;D=this.minWidth>this.minHeight?(this.minWidth/2):(this.minHeight/2);E=this.minWidth>this.minHeight?(this.minWidth/2):(this.minHeight/2);
-C.translate(D,E);C.rotate(this.rotate*Math.PI/180);C.drawImage(this.image.dom,x,y,F,G,D*-1,E*-1,this.minHeight,this.minWidth);var J=document.createElement("canvas");var K=J.getContext("2d");J.width=this.minWidth;J.height=this.minHeight;K.drawImage(B,0,0,this.minWidth,this.minHeight,0,0,this.minWidth,this.minHeight);
-this.cropImageData=J.toDataURL(this.file.type);this.fireEvent('crop',this,this.cropImageData);return;}if(this.rotate==180){x=this.image.OriginWidth-this.thumb.getWidth()*this.getScaleLevel(true)-x;y=this.image.OriginHeight-this.thumb.getHeight()*this.getScaleLevel(true)-y;
-}if(this.image.OriginWidth-F<x){x=this.image.OriginWidth-F;}if(this.image.OriginHeight-G<y){y=this.image.OriginHeight-G;}x=x<0?0:x;y=y<0?0:y;C.translate(D,E);C.rotate(this.rotate*Math.PI/180);C.drawImage(this.image.dom,x,y,F,G,D*-1,E*-1,B.width,B.height);
-this.cropImageData=B.toDataURL(this.file.type);this.fireEvent('crop',this,this.cropImageData);},crop0:function(){var A=document.createElement("canvas");var B=A.getContext("2d");A.width=this.minWidth;A.height=this.minHeight;var C=this.minWidth/2;var D=this.minHeight/2;
-var E=this.thumb.getWidth()*this.getScaleLevel(true);var F=this.thumb.getHeight()*this.getScaleLevel(true);var G=Math.ceil(this.thumb.getLeft(true));var H=Math.ceil(this.thumb.getTop(true));var x=(G-this.imageCanvas.getLeft(true))*this.getScaleLevel(true);
-var y=(H-this.imageCanvas.getTop(true))*this.getScaleLevel(true);if(this.rotate==90){x=H+(this.image.getWidth()-this.image.getHeight())/2-this.imageCanvas.getTop(true);y=this.image.getHeight()-this.thumb.getWidth()-(G-(this.image.getWidth()-this.image.getHeight())/2-this.imageCanvas.getLeft(true));
-x=x*this.getScaleLevel(true);y=y*this.getScaleLevel(true);if(this.image.OriginWidth-F<x){x=this.image.OriginWidth-F;}if(this.image.OriginHeight-E<y){y=this.image.OriginHeight-E;}x=x<0?0:x;y=y<0?0:y;E=this.thumb.getHeight()*this.getScaleLevel(true);F=this.thumb.getWidth()*this.getScaleLevel(true);
-A.width=this.minWidth>this.minHeight?this.minWidth:this.minHeight;A.height=this.minWidth>this.minHeight?this.minWidth:this.minHeight;C=this.minWidth>this.minHeight?(this.minWidth/2):(this.minHeight/2);D=this.minWidth>this.minHeight?(this.minWidth/2):(this.minHeight/2);
-B.translate(C,D);B.rotate(this.rotate*Math.PI/180);B.drawImage(this.image.dom,x,y,E,F,C*-1,D*-1,this.minHeight,this.minWidth);var I=document.createElement("canvas");var J=I.getContext("2d");I.width=this.minWidth;I.height=this.minHeight;J.drawImage(A,Math.abs(this.minWidth-this.minHeight),0,this.minWidth,this.minHeight,0,0,this.minWidth,this.minHeight);
-this.cropImageData=I.toDataURL(this.file.type);this.fireEvent('crop',this,this.cropImageData);return;}if(this.rotate==270){x=H+(this.image.getWidth()-this.image.getHeight())/2-this.imageCanvas.getTop(true);y=G-(this.image.getWidth()-this.image.getHeight())/2-this.imageCanvas.getLeft(true);
-x=(this.image.getWidth()-this.thumb.getHeight()-x)*this.getScaleLevel(true);y=y*this.getScaleLevel(true);if(this.image.OriginWidth-F<x){x=this.image.OriginWidth-F;}if(this.image.OriginHeight-E<y){y=this.image.OriginHeight-E;}x=x<0?0:x;y=y<0?0:y;E=this.thumb.getHeight()*this.getScaleLevel(true);
-F=this.thumb.getWidth()*this.getScaleLevel(true);A.width=this.minWidth>this.minHeight?this.minWidth:this.minHeight;A.height=this.minWidth>this.minHeight?this.minWidth:this.minHeight;C=this.minWidth>this.minHeight?(this.minWidth/2):(this.minHeight/2);D=this.minWidth>this.minHeight?(this.minWidth/2):(this.minHeight/2);
-B.translate(C,D);B.rotate(this.rotate*Math.PI/180);B.drawImage(this.image.dom,x,y,E,F,C*-1,D*-1,this.minHeight,this.minWidth);var I=document.createElement("canvas");var J=I.getContext("2d");I.width=this.minWidth;I.height=this.minHeight;J.drawImage(A,0,0,this.minWidth,this.minHeight,0,0,this.minWidth,this.minHeight);
-this.cropImageData=I.toDataURL(this.file.type);this.fireEvent('crop',this,this.cropImageData);return;}if(this.rotate==180){x=this.image.OriginWidth-this.thumb.getWidth()*this.getScaleLevel(true)-x;y=this.image.OriginHeight-this.thumb.getHeight()*this.getScaleLevel(true)-y;
-}if(this.image.OriginWidth-E<x){x=this.image.OriginWidth-E;}if(this.image.OriginHeight-F<y){y=this.image.OriginHeight-F;}x=x<0?0:x;y=y<0?0:y;B.translate(C,D);B.rotate(this.rotate*Math.PI/180);B.drawImage(this.image.dom,x,y,E,F,C*-1,D*-1,A.width,A.height);
-this.cropImageData=A.toDataURL(this.file.type);this.fireEvent('crop',this,this.cropImageData);},crop90:function(){var A=document.createElement("canvas");var B=A.getContext("2d");A.width=this.minWidth>this.minHeight?this.minWidth:this.minHeight;A.height=this.minWidth>this.minHeight?this.minWidth:this.minHeight;
-var C=this.minWidth>this.minHeight?(this.minWidth/2):(this.minHeight/2);var D=this.minWidth>this.minHeight?(this.minWidth/2):(this.minHeight/2);var E=this.thumb.getWidth()*this.getScaleLevel(true);var F=this.thumb.getHeight()*this.getScaleLevel(true);var G=Math.ceil(this.thumb.getLeft(true)+this.thumb.getWidth());
-var H=Math.ceil(this.thumb.getTop(true));var x=(H-this.imageCanvas.getTop(true))*this.getScaleLevel(true);var y=(G-this.imageCanvas.getLeft(true))*this.getScaleLevel(true);if(this.image.OriginWidth-E<y){y=this.image.OriginWidth-E;}if(this.image.OriginHeight-F<x){x=this.image.OriginHeight-F;
-}x=x<0?0:x;y=y<0?0:y;B.translate(C,D);B.rotate(this.rotate*Math.PI/180);alert(x);alert(y);alert(E);alert(F);B.drawImage(this.image.dom,x,y,E,F,C*-1,D*-1,this.minHeight,this.minWidth);window.open(A.toDataURL(this.file.type));return;var I=document.createElement("canvas");
-var J=I.getContext("2d");I.width=this.minWidth;I.height=this.minHeight;J.drawImage(A,0,0,this.minWidth,this.minHeight,0,0,this.minWidth,this.minHeight);this.cropImageData=I.toDataURL(this.file.type);this.fireEvent('crop',this,this.cropImageData);return;},calcThumbBoxSize:function(){var A,B;
-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.thumb.setStyle({width:A+'px',height:B+'px'});return;},placeThumbBox:function(){var x=Math.ceil((this.imageSection.getWidth()-this.thumb.getWidth())/2);
-var y=Math.ceil((this.imageSection.getHeight()-this.thumb.getHeight())/2);this.thumb.setLeft(x);this.thumb.setTop(y);},fitThumbBox:function(){var A=this.thumb.getWidth();var B=this.image.OriginHeight*A/this.image.OriginWidth;this.baseScale=A/this.image.OriginWidth;
-if(this.image.OriginWidth>this.image.OriginHeight){B=this.thumb.getHeight();A=this.image.OriginWidth*B/this.image.OriginHeight;this.baseScale=B/this.image.OriginHeight;}return;},Orientation:function(){this.baseRotate=1;if(typeof(this.exif[Roo.bootstrap.UploadCropbox['tags']['Orientation']])=='undefined'||[1,3,6,8].indexOf(this.exif[Roo.bootstrap.UploadCropbox['tags']['Orientation']])==-1){return;
-}this.baseRotate=this.exif[Roo.bootstrap.UploadCropbox['tags']['Orientation']];},getBaseRotateLevel:function(){return (Roo.isIOS)?Roo.bootstrap.UploadCropbox['Orientation']['iOS'][this.baseRotate]:Roo.bootstrap.UploadCropbox['Orientation']['Android'][this.baseRotate];
-},getScaleLevel:function(A){if(A){return Math.pow(1.1,this.scale*-1)/this.baseScale;}return this.baseScale*Math.pow(1.1,this.scale);},onTouchStart:function(e){e.stopEvent();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){e.stopEvent();
-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);
-var D=this.startScale+Math.floor(Math.log(this.endDistance/this.startDistance)/Math.log(1.1));var E=Math.ceil(this.image.OriginWidth*this.baseScale*Math.pow(1.1,D));var F=Math.ceil(this.image.OriginHeight*this.baseScale*Math.pow(1.1,D));if(this.endDistance/this.startDistance<1&&(((this.rotate==0||this.rotate==180)&&(E<this.thumb.getWidth()||F<this.thumb.getHeight()))||((this.rotate==90||this.rotate==270)&&(F<this.thumb.getWidth()||E<this.thumb.getHeight())))){return;
-}this.scale=D;this.image.setWidth(E);this.image.setHeight(F);this.setCanvasPosition();},onTouchEnd:function(e){e.stopEvent();this.pinching=false;this.dragable=false;},prepare:function(A){if(!A.files||!A.files[0]){return;}this.file=A.files[0];var B=!(window.DataView&&this.file&&this.file.size>=12&&this.file.type==='image/jpeg');
-if(B){Roo.log('noMetaData');return;}var C=this;if(this.fireEvent('prepare',this,this.file)!=false){var D=new FileReader();D.onload=function(e){if(e.target.error){Roo.log(e.target.error);return;}var E=e.target.result,F=new DataView(E),G=2,H=F.byteLength-4,I,J;
-if(F.getUint16(0)===0xffd8){while(G<H){I=F.getUint16(G);if((I>=0xffe0&&I<=0xffef)||I===0xfffe){J=F.getUint16(G+2)+2;if(G+J>F.byteLength){Roo.log('Invalid meta data: Invalid segment size.');break;}if(I==0xffe1){C.parseExifData(F,G,J);}G+=J;continue;}break;
-}}var K=(window.createObjectURL&&window)||(window.URL&&URL.revokeObjectURL&&URL)||(window.webkitURL&&webkitURL);if(!K){return;}var L=K.createObjectURL(C.file);C.loadCanvasImage(L);return;};D.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;}if(A.getUint16(D+2,E)!==0x002A){Roo.log('Invalid Exif data: Missing TIFF marker.');return;}F=A.getUint32(D+4,E);
-this.parseExifTags(A,D,D+F,E);},parseExifTags:function(A,B,C,D){var E,F,i;if(C+6>A.byteLength){Roo.log('Invalid Exif data: Invalid directory offset.');return;}E=A.getUint16(C,D);F=C+2+12*E;if(F+4>A.byteLength){Roo.log('Invalid Exif data: Invalid directory size.');
-return;}for(i=0;i<E;i+=1){this.parseExifTag(A,B,C+2+12*i,D);}return A.getUint32(F,D);},parseExifTag:function(A,B,C,D){var E=A.getUint16(C,D);this.exif[E]=this.getExifValue(A,B,C,A.getUint16(C+2,D),A.getUint32(C+4,D),D);},getExifValue:function(A,B,C,D,E,F){var G=Roo.bootstrap.UploadCropbox.exifTagTypes[D],H,I,J,i,K,c;
-if(!G){Roo.log('Invalid Exif data: Invalid tag type.');return;}H=G.size*E;I=H>4?B+A.getUint32(C+8,F):(C+8);if(I+H>A.byteLength){Roo.log('Invalid Exif data: Invalid data offset.');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:{iOS:{1:0,3:180,6:90,8:270},Android:{1:0,3:180,6:270,8:90}},exifTagTypes:{1:{getValue:function(A,B){return A.getUint8(B);
+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});};Roo.extend(Roo.bootstrap.UploadCropbox,Roo.bootstrap.Component,{emptyText:'Click to upload image',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',getAutoCreate:function(){var A={tag:'div',cls:'roo-upload-cropbox',cn:[{tag:'div',cls:'roo-upload-cropbox-body',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-footer',cn:{tag:'div',cls:'btn-group btn-group-justified roo-upload-cropbox-btn-group',cn:[{tag:'div',cls:'btn-group',cn:[{tag:'button',cls:'btn btn-default roo-upload-cropbox-rotate-left',html:'<i class="fa fa-undo"></i>'}]},{tag:'div',cls:'btn-group',cn:[{tag:'button',cls:'btn btn-default roo-upload-cropbox-picture',html:'<i class="fa fa-picture-o"></i>'}]},{tag:'div',cls:'btn-group',cn:[{tag:'button',cls:'btn btn-default roo-upload-cropbox-rotate-right',html:'<i class="fa fa-repeat"></i>'}]}]}}]};
+return A;},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.bodyHasOnClickEvent=false;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();this.thumbEl.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';
+this.thumbEl.hide();this.notifyEl=this.el.select('.roo-upload-cropbox-empty-notify',true).first();this.notifyEl.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.footerEl=this.el.select('.roo-upload-cropbox-footer',true).first();this.footerEl.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';
+this.footerEl.hide();this.rotateLeft=this.el.select('.roo-upload-cropbox-rotate-left',true).first();this.rotateLeft.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.pictureBtn=this.el.select('.roo-upload-cropbox-picture',true).first();this.pictureBtn.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';
+this.rotateRight=this.el.select('.roo-upload-cropbox-rotate-right',true).first();this.rotateRight.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay='block';this.setThumbBoxSize();this.bind();this.fireEvent('initial',this);},bind:function(){var A=this;
+window.addEventListener("resize",function(){A.resize();});if(!this.bodyHasOnClickEvent){this.bodyEl.on('click',this.beforeSelectFile,this);this.bodyHasOnClickEvent=true;}if(Roo.isTouch){this.bodyEl.on('touchstart',this.onTouchStart,this);this.bodyEl.on('touchmove',this.onTouchMove,this);
+this.bodyEl.on('touchend',this.onTouchEnd,this);}if(!Roo.isTouch){this.bodyEl.on('mousedown',this.onMouseDown,this);this.bodyEl.on('mousemove',this.onMouseMove,this);var B=(/Firefox/i.test(navigator.userAgent))?'DOMMouseScroll':'mousewheel';this.bodyEl.on(B,this.onMouseWheel,this);
+Roo.get(document).on('mouseup',this.onMouseUp,this);}this.pictureBtn.on('click',this.beforeSelectFile,this);this.rotateLeft.on('click',this.onRotateLeft,this);this.rotateRight.on('click',this.onRotateRight,this);},reset:function(){this.scale=0;this.baseScale=1;
+this.rotate=0;this.baseRotate=1;this.dragable=false;this.pinching=false;this.mouseX=0;this.mouseY=0;this.cropData=false;},resize:function(){this.setThumbBoxPosition();this.setCanvasPosition();},beforeSelectFile:function(e){e.preventDefault();this.fireEvent('beforeselectfile',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(){if(this.bodyHasOnClickEvent){this.bodyEl.un('click',this.beforeSelectFile,this);
+this.bodyHasOnClickEvent=false;}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();},setCanvasPosition:function(){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.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.scale=(e.getWheelDelta()==1)?(this.scale+1):(this.scale-1);var A=Math.ceil(this.imageEl.OriginWidth*this.getScaleLevel());var B=Math.ceil(this.imageEl.OriginHeight*this.getScaleLevel());if(e.getWheelDelta()==-1&&(((this.rotate==0||this.rotate==180)&&(A<this.thumbEl.getWidth()||B<this.thumbEl.getHeight()))||((this.rotate==90||this.rotate==270)&&(B<this.thumbEl.getWidth()||A<this.thumbEl.getHeight())))){this.scale=(e.getWheelDelta()==1)?(this.scale-1):(this.scale+1);
+return;}this.draw();},onRotateLeft:function(e){e.stopEvent();if(((this.rotate==0||this.rotate==180)&&(this.canvasEl.height<this.thumbEl.getWidth()||this.canvasEl.width<this.thumbEl.getHeight()))||((this.rotate==90||this.rotate==270)&&(this.canvasEl.height<this.thumbEl.getWidth()||this.canvasEl.width<this.thumbEl.getHeight()))){return;
+}this.rotate=(this.rotate<90)?270:this.rotate-90;this.draw();},onRotateRight:function(e){e.stopEvent();if(((this.rotate==0||this.rotate==180)&&(this.canvasEl.height<this.thumbEl.getWidth()||this.canvasEl.width<this.thumbEl.getHeight()))||((this.rotate==90||this.rotate==270)&&(this.canvasEl.height<this.thumbEl.getWidth()||this.canvasEl.width<this.thumbEl.getHeight()))){return false;
+}this.rotate=(this.rotate>180)?0:this.rotate+90;this.draw();},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);
+break;case 90: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,Math.abs(this.canvasEl.width-this.canvasEl.height),0,this.canvasEl.width,this.canvasEl.height,0,0,this.canvasEl.width,this.canvasEl.height);
+break;}this.contextEl.drawImage(A,0,0,this.canvasEl.width,this.canvasEl.height,0,0,this.canvasEl.width,this.canvasEl.height);break;case 180:this.canvasEl.width=this.imageEl.OriginWidth*this.getScaleLevel();this.canvasEl.height=this.imageEl.OriginHeight*this.getScaleLevel();
+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(){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){e.stopEvent();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){e.stopEvent();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);var D=this.startScale+Math.floor(Math.log(this.endDistance/this.startDistance)/Math.log(1.1));
+var E=Math.ceil(this.imageEl.OriginWidth*this.baseScale*Math.pow(1.1,D));var F=Math.ceil(this.imageEl.OriginHeight*this.baseScale*Math.pow(1.1,D));if(this.endDistance/this.startDistance<1&&(((this.rotate==0||this.rotate==180)&&(E<this.thumbEl.getWidth()||F<this.thumbEl.getHeight()))||((this.rotate==90||this.rotate==270)&&(F<this.thumbEl.getWidth()||E<this.thumbEl.getHeight())))){return;
+}this.scale=D;this.draw();},onTouchEnd:function(e){e.stopEvent();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;
+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;
+}if(A.getUint16(D+2,E)!==0x002A){Roo.log('Invalid Exif data: Missing TIFF marker.');return;}F=A.getUint32(D+4,E);this.parseExifTags(A,D,D+F,E);},parseExifTags:function(A,B,C,D){var E,F,i;if(C+6>A.byteLength){Roo.log('Invalid Exif data: Invalid directory offset.');
+return;}E=A.getUint16(C,D);F=C+2+12*E;if(F+4>A.byteLength){Roo.log('Invalid Exif data: Invalid directory size.');return;}for(i=0;i<E;i+=1){this.parseExifTag(A,B,C+2+12*i,D);}return A.getUint32(F,D);},parseExifTag:function(A,B,C,D){var E=A.getUint16(C,D);this.exif[E]=this.getExifValue(A,B,C,A.getUint16(C+2,D),A.getUint32(C+4,D),D);
+},getExifValue:function(A,B,C,D,E,F){var G=Roo.bootstrap.UploadCropbox.exifTagTypes[D],H,I,J,i,K,c;if(!G){Roo.log('Invalid Exif data: Invalid tag type.');return;}H=G.size*E;I=H>4?B+A.getUint32(C+8,F):(C+8);if(I+H>A.byteLength){Roo.log('Invalid Exif data: Invalid data offset.');
+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}}});