').css ({position:'absolute', opacity: options. borderOpacity}).addClass (cssClass (type));$img_holder.append (jq);return jq;};function dragDiv (ord, zi)
{var jq=$('
').mousedown (createDragger (ord)).css ({cursor:ord+'-resize', position:'absolute', zIndex: zi});$hdl_holder.append (jq);return jq;};function insertHandle (ord)
{return dragDiv (ord, hdep++).css ({top:px (-hhs+1), left: px (-hhs+1), opacity: options. handleOpacity}).addClass (cssClass ('handle'));};function insertDragbar (ord)
{var s=options.handleSize, o=hhs, h=s, w=s, t=o, l=o;switch (ord)
{case'n':case's':w=pct (100);break;case'e':case'w':h=pct (100);break;}
return dragDiv (ord, hdep++).width (w).height (h).css ({top:px (-t+1), left: px (-l+1)});};function createHandles (li)
{for (i in li) handle[li[i]]=insertHandle (li[i]);};function moveHandles© {var midvert=Math.round ((c.h/2)-hhs), midhoriz=Math.round ((c.w/2)-hhs), north=west=-hhs+1,east=c.w-hhs, south=c.h-hhs, x, y;'e'in handle&&handle.e.css ({top:px (midvert), left: px (east)})&&handle.w.css ({top:px (midvert)})&&handle.s.css ({top:px (south), left: px (midhoriz)})&&handle.n.css ({left:px (midhoriz)});'ne'in handle&&handle.ne.css ({left:px (east)})&&handle.se.css ({top:px (south), left: px (east)})&&handle.sw.css ({top:px (south)});'b'in handle&&handle.b.css ({top:px (south)})&&handle.r.css ({left:px (east)});};function moveto (x, y)
{$img2.css ({top:px (-y), left: px (-x)});$sel.css ({top:px (y), left: px (x)});};function resize (w, h)
{$sel.width (w).height (h);};function refresh ()
{var c=Coords.getFixed ();Coords.setPressed ([c.x, c. y]);Coords.setCurrent ([c.x2,c.y2]);updateVisible ();};function updateVisible ()
{if (awake)return update ();};function update ()
{var c=Coords.getFixed ();resize (c.w, c. h);moveto (c.x, c. y);options.drawBorders&&borders['right'].css ({left:px (c.w-1)})&&borders['bottom'].css ({top:px (c.h-1)});seehandles&&moveHandles (c);awake||show ();options.onChange (unscale (c));};function show ()
{$sel.show ();$img.css ('opacity', options. bgOpacity);awake=true;};function release ()
{disableHandles ();$sel.hide ();$img.css ('opacity', 1);awake=false;};function showHandles ()
{if (seehandles)
{moveHandles (Coords.getFixed ());$hdl_holder.show ();}};function enableHandles ()
{seehandles=true;if (options.allowResize)
{moveHandles (Coords.getFixed ());$hdl_holder.show ();return true;}};function disableHandles ()
{seehandles=false;$hdl_holder.hide ();};function animMode (v)
{(animating=v)?disableHandles ():enableHandles ();};function done ()
{animMode (false);refresh ();};var $track=newTracker ().mousedown (createDragger ('move')).css ({cursor:'move', position:'absolute', zIndex:360})
$img_holder.append ($track);disableHandles ();return{updateVisible:updateVisible, update: update, release: release, refresh: refresh, setCursor: function (cursor){$track.css ('cursor', cursor);}, enableHandles: enableHandles, enableOnly: function (){seehandles=true;}, showHandles: showHandles, disableHandles: disableHandles, animMode: animMode, done: done};}();var Tracker=function ()
{var onMove=function (){}, onDone=function (){}, trackDoc=options.trackDocument;if (!trackDoc)
{$trk.mousemove (trackMove).mouseup (trackUp).mouseout (trackUp);}
function toFront ()
{$trk.css ({zIndex:450});if (trackDoc)
{$(document).mousemove (trackMove).mouseup (trackUp);}}
function toBack ()
{$trk.css ({zIndex:290});if (trackDoc)
{$(document).unbind ('mousemove', trackMove).unbind ('mouseup', trackUp);}}
function trackMove (e)
{onMove (mouseAbs (e));};function trackUp (e)
{e.preventDefault ();e.stopPropagation ();if (btndown)
{btndown=false;onDone (mouseAbs (e));options.onSelect (unscale (Coords.getFixed ()));toBack ();onMove=function (){};onDone=function (){};}
return false;};function activateHandlers (move, done)
{btndown=true;onMove=move;onDone=done;toFront ();return false;};function setCursor (t){$trk.css ('cursor', t);};$img.before ($trk);return{activateHandlers:activateHandlers, setCursor: setCursor};}();var KeyManager=function ()
{var $keymgr=$('
').css ({position:'absolute', left:'-30px'}).keypress (parseKey).blur (onBlur),$keywrap=$('
').css ({position:'absolute', overflow:'hidden'}).append ($keymgr);function watchKeys ()
{if (options.keySupport)
{$keymgr.show ();$keymgr.focus ();}};function onBlur (e)
{$keymgr.hide ();};function doNudge (e, x, y)
{if (options.allowMove){Coords.moveOffset ([x, y]);Selection.updateVisible ();};e.preventDefault ();e.stopPropagation ();};function parseKey (e)
{if (e.ctrlKey)return true;shift_down=e.shiftKey?true:false;var nudge=shift_down?10:1;switch (e.keyCode)
{case 37: doNudge (e,-nudge, 0);break;case 39: doNudge (e, nudge, 0);break;case 38: doNudge (e, 0,-nudge);break;case 40: doNudge (e, 0, nudge);break;case 27: Selection. release ();break;case 9: return true;}
return nothing (e);};if (options.keySupport)$keywrap.insertBefore ($img);return{watchKeys:watchKeys};}();function px (n){return''+parseInt (n)+'px';};function pct (n){return''+parseInt (n)+'%';};function cssClass (cl){return options. baseClass+'-'+cl;};function getPos (obj)
{var pos=$(obj).offset ();return[pos.left, pos. top];};function mouseAbs (e)
{return[(e.pageX-docOffset[0]),(e.pageY-docOffset[1])];};function myCursor (type)
{if (type≠lastcurs)
{Tracker.setCursor (type);lastcurs=type;}};function startDragMode (mode, pos)
{docOffset=getPos ($img);Tracker.setCursor (mode=='move'?mode:mode+'-resize');if (mode=='move')
return Tracker. activateHandlers (createMover (pos), doneSelect);var fc=Coords.getFixed ();var opp=oppLockCorner (mode);var opc=Coords.getCorner (oppLockCorner (opp));Coords.setPressed (Coords.getCorner (opp));Coords.setCurrent (opc);Tracker.activateHandlers (dragmodeHandler (mode, fc), doneSelect);};function dragmodeHandler (mode, f)
{return function (pos){if (!options.aspectRatio)switch (mode)
{case'e':pos[1]=f.y2;break;case'w':pos[1]=f.y2;break;case'n':pos[0]=f.x2;break;case's':pos[0]=f.x2;break;}
else switch (mode)
{case'e':pos[1]=f.y+1;break;case'w':pos[1]=f.y+1;break;case'n':pos[0]=f.x+1;break;case's':pos[0]=f.x+1;break;}
Coords.setCurrent (pos);Selection.update ();};};function createMover (pos)
{var lloc=pos;KeyManager.watchKeys ();return function (pos)
{Coords.moveOffset ([pos[0]-lloc[0], pos[1]-lloc[1]]);lloc=pos;Selection.update ();};};function oppLockCorner (ord)
{switch (ord)
{case'n':return'sw';case's':return'nw';case'e':return'nw';case'w':return'ne';case'ne':return'sw';case'nw':return'se';case'se':return'nw';case'sw':return'ne';};};function createDragger (ord)
{return function (e){if (options.disabled)return false;if ((ord=='move')&&!options.allowMove)return false;btndown=true;startDragMode (ord, mouseAbs (e));e.stopPropagation ();e.preventDefault ();return false;};};function presize ($obj, w, h)
{var nw=$obj.width (), nh=$obj.height ();if ((nw>w)&&w>0)
{nw=w;nh=(w/$obj.width ())*$obj.height ();}
if ((nh>h)&&h>0)
{nh=h;nw=(h/$obj.height ())*$obj.width ();}
xscale=$obj.width ()/nw;yscale=$obj.height ()/nh;$obj.width (nw).height (nh);};function unscale© {return{x:parseInt (c.x*xscale), y: parseInt (c.y*yscale), x2: parseInt (c.x2*xscale), y2: parseInt (c.y2*yscale), w: parseInt (c.w*xscale), h: parseInt (c.h*yscale)};};function doneSelect (pos)
{var c=Coords.getFixed ();if (c.w>options.minSelect[0]&&c.h>options.minSelect[1])
{Selection.enableHandles ();Selection.done ();}
else
{Selection.release ();}
Tracker.setCursor (options.allowSelect?'crosshair':'default');};function newSelection (e)
{if (options.disabled)return false;if (!options.allowSelect)return false;btndown=true;docOffset=getPos ($img);Selection.disableHandles ();myCursor ('crosshair');var pos=mouseAbs (e);Coords.setPressed (pos);Tracker.activateHandlers (selectDrag, doneSelect);KeyManager.watchKeys ();Selection.update ();e.stopPropagation ();e.preventDefault ();return false;};function selectDrag (pos)
{Coords.setCurrent (pos);Selection.update ();};function newTracker ()
{var trk=$('
').addClass (cssClass ('tracker'));$.browser.msie&&trk.css ({opacity:0,backgroundColor:'white'});return trk;};function animateTo (a)
{var x1=a[0]/xscale, y1=a[1]/yscale, x2=a[2]/xscale, y2=a[3]/yscale;if (animating)return;var animto=Coords.flipCoords (x1,y1,x2,y2);var c=Coords.getFixed ();var animat=initcr=[c.x, c. y, c. x2,c.y2];var interv=options.animationDelay;var x=animat[0];var y=animat[1];var x2=animat[2];var y2=animat[3];var ix1=animto[0]-initcr[0];var iy1=animto[1]-initcr[1];var ix2=animto[2]-initcr[2];var iy2=animto[3]-initcr[3];var pcent=0;var velocity=options.swingSpeed;Selection.animMode (true);var animator=function ()
{return function ()
{pcent+=(100-pcent)/velocity;animat[0]=x+((pcent/100)*ix1);animat[1]=y+((pcent/100)*iy1);animat[2]=x2+((pcent/100)*ix2);animat[3]=y2+((pcent/100)*iy2);if (pcent<100)animateStart();else Selection.done();if(pcent>=99.8)pcent=100;setSelectRaw (animat);};}();function animateStart ()
{window.setTimeout (animator, interv);};animateStart ();};function setSelect (rect)
{setSelectRaw ([rect[0]/xscale, rect[1]/yscale, rect[2]/xscale, rect[3]/yscale]);};function setSelectRaw (l)
{Coords.setPressed ([l[0], l[1]]);Coords.setCurrent ([l[2], l[3]]);Selection.update ();};function setOptions (opt)
{if (typeof (opt)≠'object')opt={};options=$.extend (options, opt);if (typeof (options.onChange)≠='function')
options.onChange=function (){};if (typeof (options.onSelect)≠='function')
options.onSelect=function (){};};function tellSelect ()
{return unscale (Coords.getFixed ());};function tellScaled ()
{return Coords. getFixed ();};function setOptionsNew (opt)
{setOptions (opt);interfaceUpdate ();};function disableCrop ()
{options.disabled=true;Selection.disableHandles ();Selection.setCursor ('default');Tracker.setCursor ('default');};function enableCrop ()
{options.disabled=false;interfaceUpdate ();};function cancelCrop ()
{Selection.done ();Tracker.activateHandlers (null, null);};function destroy ()
{$div.remove ();$origimg.show ();};function interfaceUpdate (alt)
{options.allowResize?alt?Selection.enableOnly ():Selection.enableHandles ():Selection.disableHandles ();Tracker.setCursor (options.allowSelect?'crosshair':'default');Selection.setCursor (options.allowMove?'move':'default');$div.css ('backgroundColor', options. bgColor);if ('setSelect'in options){setSelect (opt.setSelect);Selection.done ();delete (options.setSelect);}
if ('trueSize'in options){xscale=options.trueSize[0]/boundx;yscale=options.trueSize[1]/boundy;}
xlimit=options.maxSize[0]||0;ylimit=options.maxSize[1]||0;xmin=options.minSize[0]||0;ymin=options.minSize[1]||0;if ('outerImage'in options)
{$img.attr ('src', options. outerImage);delete (options.outerImage);}
Selection.refresh ();};$hdl_holder.hide ();interfaceUpdate (true);var api={animateTo:animateTo, setSelect: setSelect, setOptions: setOptionsNew, tellSelect: tellSelect, tellScaled: tellScaled, disable: disableCrop, enable: enableCrop, cancel: cancelCrop, focus: KeyManager. watchKeys, getBounds: function (){return[boundx*xscale, boundy*yscale];}, getWidgetSize: function (){return[boundx, boundy];}, release: Selection. release, destroy: destroy};$origimg.data ('Jcrop', api);return api;};$.fn.Jcrop=function (options)
{function attachWhenDone (from)
{var loadsrc=options.useImg||from.src;var img=new Image ();img.onload=function (){$.Jcrop (from, options);};img.src=loadsrc;};if (typeof (options)≠='object')options={};this.each (function ()
{if ($(this).data ('Jcrop'))
{if (options=='api')return $(this).data ('Jcrop');else $(this).data ('Jcrop').setOptions (options);}
else attachWhenDone (this);});return this;};})(jQuery);