wp/wp-includes/js/crop/cropper.js
author ymh <ymh.work@gmail.com>
Wed, 06 Nov 2013 03:21:17 +0000
changeset 0 d970ebf37754
permissions -rw-r--r--
first import
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
 * Copyright (c) 2006, David Spurr (http://www.defusion.org.uk/)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
 * All rights reserved.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 *     * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 *     * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 *     * Neither the name of the David Spurr nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
 * http://www.opensource.org/licenses/bsd-license.php
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
 * See scriptaculous.js for full scriptaculous licence
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
var CropDraggable=Class.create();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
Object.extend(Object.extend(CropDraggable.prototype,Draggable.prototype),{initialize:function(_1){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
this.options=Object.extend({drawMethod:function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
}},arguments[1]||{});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
this.element=$(_1);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
this.handle=this.element;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
this.delta=this.currentDelta();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
this.dragging=false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
this.eventMouseDown=this.initDrag.bindAsEventListener(this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
Event.observe(this.handle,"mousedown",this.eventMouseDown);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
Draggables.register(this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
},draw:function(_2){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
var _3=Position.cumulativeOffset(this.element);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
var d=this.currentDelta();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
_3[0]-=d[0];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
_3[1]-=d[1];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
var p=[0,1].map(function(i){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
return (_2[i]-_3[i]-this.offset[i]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
}.bind(this));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
this.options.drawMethod(p);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
}});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
var Cropper={};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
Cropper.Img=Class.create();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
Cropper.Img.prototype={initialize:function(_7,_8){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
this.options=Object.extend({ratioDim:{x:0,y:0},minWidth:0,minHeight:0,displayOnInit:false,onEndCrop:Prototype.emptyFunction,captureKeys:true},_8||{});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
if(this.options.minWidth>0&&this.options.minHeight>0){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
this.options.ratioDim.x=this.options.minWidth;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
this.options.ratioDim.y=this.options.minHeight;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
this.img=$(_7);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
this.clickCoords={x:0,y:0};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
this.dragging=false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
this.resizing=false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
this.isWebKit=/Konqueror|Safari|KHTML/.test(navigator.userAgent);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
this.isIE=/MSIE/.test(navigator.userAgent);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
this.isOpera8=/Opera\s[1-8]/.test(navigator.userAgent);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
this.ratioX=0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
this.ratioY=0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
this.attached=false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
$A(document.getElementsByTagName("script")).each(function(s){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
if(s.src.match(/cropper\.js/)){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
var _a=s.src.replace(/cropper\.js(.*)?/,"");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
var _b=document.createElement("link");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
_b.rel="stylesheet";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
_b.type="text/css";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
_b.href=_a+"cropper.css";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
_b.media="screen";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
document.getElementsByTagName("head")[0].appendChild(_b);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
if(this.options.ratioDim.x>0&&this.options.ratioDim.y>0){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
var _c=this.getGCD(this.options.ratioDim.x,this.options.ratioDim.y);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
this.ratioX=this.options.ratioDim.x/_c;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
this.ratioY=this.options.ratioDim.y/_c;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
this.subInitialize();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
if(this.img.complete||this.isWebKit){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
this.onLoad();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
Event.observe(this.img,"load",this.onLoad.bindAsEventListener(this));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
},getGCD:function(a,b){return 1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
if(b==0){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
return a;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
return this.getGCD(b,a%b);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
},onLoad:function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
var _f="imgCrop_";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
var _10=this.img.parentNode;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
var _11="";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
if(this.isOpera8){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
_11=" opera8";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
this.imgWrap=Builder.node("div",{"class":_f+"wrap"+_11});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
if(this.isIE){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
this.north=Builder.node("div",{"class":_f+"overlay "+_f+"north"},[Builder.node("span")]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
this.east=Builder.node("div",{"class":_f+"overlay "+_f+"east"},[Builder.node("span")]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
this.south=Builder.node("div",{"class":_f+"overlay "+_f+"south"},[Builder.node("span")]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
this.west=Builder.node("div",{"class":_f+"overlay "+_f+"west"},[Builder.node("span")]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
var _12=[this.north,this.east,this.south,this.west];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
this.overlay=Builder.node("div",{"class":_f+"overlay"});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
var _12=[this.overlay];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
this.dragArea=Builder.node("div",{"class":_f+"dragArea"},_12);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
this.handleN=Builder.node("div",{"class":_f+"handle "+_f+"handleN"});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
this.handleNE=Builder.node("div",{"class":_f+"handle "+_f+"handleNE"});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
this.handleE=Builder.node("div",{"class":_f+"handle "+_f+"handleE"});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
this.handleSE=Builder.node("div",{"class":_f+"handle "+_f+"handleSE"});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
this.handleS=Builder.node("div",{"class":_f+"handle "+_f+"handleS"});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
this.handleSW=Builder.node("div",{"class":_f+"handle "+_f+"handleSW"});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
this.handleW=Builder.node("div",{"class":_f+"handle "+_f+"handleW"});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
this.handleNW=Builder.node("div",{"class":_f+"handle "+_f+"handleNW"});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
this.selArea=Builder.node("div",{"class":_f+"selArea"},[Builder.node("div",{"class":_f+"marqueeHoriz "+_f+"marqueeNorth"},[Builder.node("span")]),Builder.node("div",{"class":_f+"marqueeVert "+_f+"marqueeEast"},[Builder.node("span")]),Builder.node("div",{"class":_f+"marqueeHoriz "+_f+"marqueeSouth"},[Builder.node("span")]),Builder.node("div",{"class":_f+"marqueeVert "+_f+"marqueeWest"},[Builder.node("span")]),this.handleN,this.handleNE,this.handleE,this.handleSE,this.handleS,this.handleSW,this.handleW,this.handleNW,Builder.node("div",{"class":_f+"clickArea"})]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
Element.setStyle($(this.selArea),{backgroundColor:"transparent",backgroundRepeat:"no-repeat",backgroundPosition:"0 0"});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
this.imgWrap.appendChild(this.img);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
this.imgWrap.appendChild(this.dragArea);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
this.dragArea.appendChild(this.selArea);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
this.dragArea.appendChild(Builder.node("div",{"class":_f+"clickArea"}));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
_10.appendChild(this.imgWrap);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
Event.observe(this.dragArea,"mousedown",this.startDrag.bindAsEventListener(this));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
Event.observe(document,"mousemove",this.onDrag.bindAsEventListener(this));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
Event.observe(document,"mouseup",this.endCrop.bindAsEventListener(this));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
var _13=[this.handleN,this.handleNE,this.handleE,this.handleSE,this.handleS,this.handleSW,this.handleW,this.handleNW];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
for(var i=0;i<_13.length;i++){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
Event.observe(_13[i],"mousedown",this.startResize.bindAsEventListener(this));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
if(this.options.captureKeys){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
Event.observe(document,"keydown",this.handleKeys.bindAsEventListener(this));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
new CropDraggable(this.selArea,{drawMethod:this.moveArea.bindAsEventListener(this)});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
this.setParams();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
},setParams:function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
this.imgW=this.img.width;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
this.imgH=this.img.height;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
if(!this.isIE){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
Element.setStyle($(this.overlay),{width:this.imgW+"px",height:this.imgH+"px"});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
Element.hide($(this.overlay));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
Element.setStyle($(this.selArea),{backgroundImage:"url("+this.img.src+")"});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
Element.setStyle($(this.north),{height:0});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
Element.setStyle($(this.east),{width:0,height:0});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
Element.setStyle($(this.south),{height:0});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
Element.setStyle($(this.west),{width:0,height:0});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
Element.setStyle($(this.imgWrap),{"width":this.imgW+"px","height":this.imgH+"px"});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
Element.hide($(this.selArea));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
var _15=Position.positionedOffset(this.imgWrap);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
this.wrapOffsets={"top":_15[1],"left":_15[0]};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
var _16={x1:0,y1:0,x2:0,y2:0};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
this.setAreaCoords(_16);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
if(this.options.ratioDim.x>0&&this.options.ratioDim.y>0&&this.options.displayOnInit){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
_16.x1=Math.ceil((this.imgW-this.options.ratioDim.x)/2);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
_16.y1=Math.ceil((this.imgH-this.options.ratioDim.y)/2);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
_16.x2=_16.x1+this.options.ratioDim.x;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
_16.y2=_16.y1+this.options.ratioDim.y;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
Element.show(this.selArea);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
this.drawArea();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
this.endCrop();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
this.attached=true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
},remove:function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
this.attached=false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
this.imgWrap.parentNode.insertBefore(this.img,this.imgWrap);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
this.imgWrap.parentNode.removeChild(this.imgWrap);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
Event.stopObserving(this.dragArea,"mousedown",this.startDrag.bindAsEventListener(this));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
Event.stopObserving(document,"mousemove",this.onDrag.bindAsEventListener(this));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
Event.stopObserving(document,"mouseup",this.endCrop.bindAsEventListener(this));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
var _17=[this.handleN,this.handleNE,this.handleE,this.handleSE,this.handleS,this.handleSW,this.handleW,this.handleNW];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
for(var i=0;i<_17.length;i++){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
Event.stopObserving(_17[i],"mousedown",this.startResize.bindAsEventListener(this));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
if(this.options.captureKeys){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
Event.stopObserving(document,"keydown",this.handleKeys.bindAsEventListener(this));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
},reset:function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
if(!this.attached){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
this.onLoad();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
this.setParams();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
this.endCrop();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
},handleKeys:function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
var dir={x:0,y:0};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
if(!this.dragging){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
switch(e.keyCode){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
case (37):
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
dir.x=-1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
case (38):
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
dir.y=-1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
case (39):
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
dir.x=1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
case (40):
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
dir.y=1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
if(dir.x!=0||dir.y!=0){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
if(e.shiftKey){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
dir.x*=10;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
dir.y*=10;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
this.moveArea([this.areaCoords.x1+dir.x,this.areaCoords.y1+dir.y]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
Event.stop(e);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
},calcW:function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
return (this.areaCoords.x2-this.areaCoords.x1);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
},calcH:function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
return (this.areaCoords.y2-this.areaCoords.y1);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
},moveArea:function(_1b){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
this.setAreaCoords({x1:_1b[0],y1:_1b[1],x2:_1b[0]+this.calcW(),y2:_1b[1]+this.calcH()},true);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
this.drawArea();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
},cloneCoords:function(_1c){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
return {x1:_1c.x1,y1:_1c.y1,x2:_1c.x2,y2:_1c.y2};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
},setAreaCoords:function(_1d,_1e,_1f,_20,_21){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
var _22=typeof _1e!="undefined"?_1e:false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
var _23=typeof _1f!="undefined"?_1f:false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
if(_1e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
var _24=_1d.x2-_1d.x1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
var _25=_1d.y2-_1d.y1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
if(_1d.x1<0){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
_1d.x1=0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
_1d.x2=_24;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
if(_1d.y1<0){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
_1d.y1=0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
_1d.y2=_25;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
if(_1d.x2>this.imgW){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
_1d.x2=this.imgW;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
_1d.x1=this.imgW-_24;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
if(_1d.y2>this.imgH){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
_1d.y2=this.imgH;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
_1d.y1=this.imgH-_25;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
if(_1d.x1<0){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
_1d.x1=0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
if(_1d.y1<0){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
_1d.y1=0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
if(_1d.x2>this.imgW){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
_1d.x2=this.imgW;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
if(_1d.y2>this.imgH){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
_1d.y2=this.imgH;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
if(typeof (_20)!="undefined"){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
if(this.ratioX>0){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
this.applyRatio(_1d,{x:this.ratioX,y:this.ratioY},_20,_21);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
if(_23){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
this.applyRatio(_1d,{x:1,y:1},_20,_21);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
var _26={a1:_1d.x1,a2:_1d.x2};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
var _27={a1:_1d.y1,a2:_1d.y2};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
var _28=this.options.minWidth;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
var _29=this.options.minHeight;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
if((_28==0||_29==0)&&_23){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
if(_28>0){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
_29=_28;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
if(_29>0){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
_28=_29;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
this.applyMinDimension(_26,_28,_20.x,{min:0,max:this.imgW});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
this.applyMinDimension(_27,_29,_20.y,{min:0,max:this.imgH});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
_1d={x1:_26.a1,y1:_27.a1,x2:_26.a2,y2:_27.a2};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
this.areaCoords=_1d;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
},applyMinDimension:function(_2a,_2b,_2c,_2d){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
if((_2a.a2-_2a.a1)<_2b){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
if(_2c==1){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
_2a.a2=_2a.a1+_2b;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
_2a.a1=_2a.a2-_2b;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
if(_2a.a1<_2d.min){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
_2a.a1=_2d.min;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
_2a.a2=_2b;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
if(_2a.a2>_2d.max){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
_2a.a1=_2d.max-_2b;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
_2a.a2=_2d.max;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
},applyRatio:function(_2e,_2f,_30,_31){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
var _32;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
if(_31=="N"||_31=="S"){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
_32=this.applyRatioToAxis({a1:_2e.y1,b1:_2e.x1,a2:_2e.y2,b2:_2e.x2},{a:_2f.y,b:_2f.x},{a:_30.y,b:_30.x},{min:0,max:this.imgW});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
_2e.x1=_32.b1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
_2e.y1=_32.a1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
_2e.x2=_32.b2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
_2e.y2=_32.a2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
_32=this.applyRatioToAxis({a1:_2e.x1,b1:_2e.y1,a2:_2e.x2,b2:_2e.y2},{a:_2f.x,b:_2f.y},{a:_30.x,b:_30.y},{min:0,max:this.imgH});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
_2e.x1=_32.a1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
_2e.y1=_32.b1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
_2e.x2=_32.a2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
_2e.y2=_32.b2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
},applyRatioToAxis:function(_33,_34,_35,_36){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
var _37=Object.extend(_33,{});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
var _38=_37.a2-_37.a1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
var _3a=Math.floor(_38*_34.b/_34.a);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
var _3b;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
var _3c;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
var _3d=null;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
if(_35.b==1){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
_3b=_37.b1+_3a;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
if(_3b>_36.max){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
_3b=_36.max;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
_3d=_3b-_37.b1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
_37.b2=_3b;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
_3b=_37.b2-_3a;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
if(_3b<_36.min){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
_3b=_36.min;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
_3d=_3b+_37.b2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
_37.b1=_3b;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
if(_3d!=null){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
_3c=Math.floor(_3d*_34.a/_34.b);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
if(_35.a==1){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
_37.a2=_37.a1+_3c;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
_37.a1=_37.a1=_37.a2-_3c;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
return _37;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
},drawArea:function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
if(!this.isIE){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
Element.show($(this.overlay));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
var _3e=this.calcW();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
var _3f=this.calcH();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
var _40=this.areaCoords.x2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
var _41=this.areaCoords.y2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
var _42=this.selArea.style;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
_42.left=this.areaCoords.x1+"px";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
_42.top=this.areaCoords.y1+"px";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
_42.width=_3e+"px";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
_42.height=_3f+"px";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
var _43=Math.ceil((_3e-6)/2)+"px";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
var _44=Math.ceil((_3f-6)/2)+"px";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
this.handleN.style.left=_43;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
this.handleE.style.top=_44;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
this.handleS.style.left=_43;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
this.handleW.style.top=_44;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
if(this.isIE){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
this.north.style.height=this.areaCoords.y1+"px";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
var _45=this.east.style;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   362
_45.top=this.areaCoords.y1+"px";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
_45.height=_3f+"px";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
_45.left=_40+"px";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
_45.width=(this.img.width-_40)+"px";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
var _46=this.south.style;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
_46.top=_41+"px";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
_46.height=(this.img.height-_41)+"px";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
var _47=this.west.style;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
_47.top=this.areaCoords.y1+"px";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
_47.height=_3f+"px";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
_47.width=this.areaCoords.x1+"px";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
_42.backgroundPosition="-"+this.areaCoords.x1+"px "+"-"+this.areaCoords.y1+"px";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
this.subDrawArea();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
this.forceReRender();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   378
},forceReRender:function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
if(this.isIE||this.isWebKit){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   380
var n=document.createTextNode(" ");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
var d,el,fixEL,i;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
if(this.isIE){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
fixEl=this.selArea;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
if(this.isWebKit){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   386
fixEl=document.getElementsByClassName("imgCrop_marqueeSouth",this.imgWrap)[0];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   387
d=Builder.node("div","");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
d.style.visibility="hidden";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
var _4a=["SE","S","SW"];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
for(i=0;i<_4a.length;i++){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
el=document.getElementsByClassName("imgCrop_handle"+_4a[i],this.selArea)[0];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
if(el.childNodes.length){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
el.removeChild(el.childNodes[0]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
el.appendChild(d);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   396
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   398
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   399
fixEl.appendChild(n);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   400
fixEl.removeChild(n);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   401
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   402
},startResize:function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   403
this.startCoords=this.cloneCoords(this.areaCoords);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
this.resizing=true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
this.resizeHandle=Element.classNames(Event.element(e)).toString().replace(/([^N|NE|E|SE|S|SW|W|NW])+/,"");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   406
Event.stop(e);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
},startDrag:function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
Element.show(this.selArea);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
this.clickCoords=this.getCurPos(e);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
this.setAreaCoords({x1:this.clickCoords.x,y1:this.clickCoords.y,x2:this.clickCoords.x,y2:this.clickCoords.y});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
this.dragging=true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
this.onDrag(e);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   413
Event.stop(e);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   414
},getCurPos:function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
return curPos={x:Event.pointerX(e)-this.wrapOffsets.left,y:Event.pointerY(e)-this.wrapOffsets.top};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
},onDrag:function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   417
var _4f=null;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
if(this.dragging||this.resizing){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
var _50=this.getCurPos(e);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   420
var _51=this.cloneCoords(this.areaCoords);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
var _52={x:1,y:1};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   423
if(this.dragging){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
if(_50.x<this.clickCoords.x){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   425
_52.x=-1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   426
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   427
if(_50.y<this.clickCoords.y){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
_52.y=-1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   429
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   430
this.transformCoords(_50.x,this.clickCoords.x,_51,"x");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   431
this.transformCoords(_50.y,this.clickCoords.y,_51,"y");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   432
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   433
if(this.resizing){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   434
_4f=this.resizeHandle;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   435
if(_4f.match(/E/)){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   436
this.transformCoords(_50.x,this.startCoords.x1,_51,"x");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   437
if(_50.x<this.startCoords.x1){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   438
_52.x=-1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   439
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   441
if(_4f.match(/W/)){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   442
this.transformCoords(_50.x,this.startCoords.x2,_51,"x");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   443
if(_50.x<this.startCoords.x2){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   444
_52.x=-1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   445
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   446
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   447
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   448
if(_4f.match(/N/)){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   449
this.transformCoords(_50.y,this.startCoords.y2,_51,"y");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   450
if(_50.y<this.startCoords.y2){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   451
_52.y=-1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   452
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   453
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   454
if(_4f.match(/S/)){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   455
this.transformCoords(_50.y,this.startCoords.y1,_51,"y");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   456
if(_50.y<this.startCoords.y1){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   457
_52.y=-1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   458
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   459
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   460
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   461
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   462
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   463
if(this.dragging||this.resizing){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   464
this.setAreaCoords(_51,false,e.shiftKey,_52,_4f);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   465
this.drawArea();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   466
Event.stop(e);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   467
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   468
},transformCoords:function(_53,_54,_55,_56){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   469
var _57=new Array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   470
if(_53<_54){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   471
_57[0]=_53;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   472
_57[1]=_54;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   473
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   474
_57[0]=_54;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   475
_57[1]=_53;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   476
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   477
if(_56=="x"){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   478
_55.x1=_57[0];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   479
_55.x2=_57[1];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   480
}else{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   481
_55.y1=_57[0];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   482
_55.y2=_57[1];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   483
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   484
},endCrop:function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   485
this.dragging=false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   486
this.resizing=false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   487
this.options.onEndCrop(this.areaCoords,{width:this.calcW(),height:this.calcH()});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   488
},subInitialize:function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   489
},subDrawArea:function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   490
}};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   491
Cropper.ImgWithPreview=Class.create();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   492
Object.extend(Object.extend(Cropper.ImgWithPreview.prototype,Cropper.Img.prototype),{subInitialize:function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   493
this.hasPreviewImg=false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   494
if(typeof (this.options.previewWrap)!="undefined"&&this.options.minWidth>0&&this.options.minHeight>0){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   495
this.previewWrap=$(this.options.previewWrap);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   496
this.previewImg=this.img.cloneNode(false);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   497
this.options.displayOnInit=true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   498
this.hasPreviewImg=true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   499
Element.addClassName(this.previewWrap,"imgCrop_previewWrap");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   500
Element.setStyle(this.previewWrap,{width:this.options.minWidth+"px",height:this.options.minHeight+"px"});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   501
this.previewWrap.appendChild(this.previewImg);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   502
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   503
},subDrawArea:function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   504
if(this.hasPreviewImg){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   505
var _58=this.calcW();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   506
var _59=this.calcH();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   507
var _5a={x:this.imgW/_58,y:this.imgH/_59};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   508
var _5b={x:_58/this.options.minWidth,y:_59/this.options.minHeight};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   509
var _5c={w:Math.ceil(this.options.minWidth*_5a.x)+"px",h:Math.ceil(this.options.minHeight*_5a.y)+"px",x:"-"+Math.ceil(this.areaCoords.x1/_5b.x)+"px",y:"-"+Math.ceil(this.areaCoords.y1/_5b.y)+"px"};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   510
var _5d=this.previewImg.style;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   511
_5d.width=_5c.w;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   512
_5d.height=_5c.h;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   513
_5d.left=_5c.x;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   514
_5d.top=_5c.y;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   515
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   516
}});