var IcImage=Class.create();IcImage.prototype={initialize:function(d,c,a,b){this.src=d;this.domReference=b;this.dimension=new IcDimension(c,a)},process:function(a,b){ImageService.cropImage(this.src,this.dimension,a.x,a.y,a.dimension,a.rotation,a.destinationUrl,a.extraTransforms,a.callback)}};var IcDimension=Class.create();IcDimension.prototype={initialize:function(b,a){this.width=b;this.height=a}};var IcImageOperation=Class.create();IcImageOperation.prototype={initialize:function(c,b,h,e,a,d,f,g){this.x=(b)?b:0;this.y=(h)?h:0;this.dimension=new IcDimension(e,a);this.rotation=d;this.destinationUrl=c;this.callback=g;this.extraTransforms=f}};var CropDraggable=Class.create();Object.extend(Object.extend(CropDraggable.prototype,Draggable.prototype),{initialize:function(a){this.options=Object.extend({drawMethod:function(){}},arguments[1]||{});this.element=$(a);this.handle=this.element;this.delta=this.currentDelta();this.dragging=false;this.eventMouseDown=this.initDrag.bindAsEventListener(this);
Event.observe(this.handle,"mousedown",this.eventMouseDown);Draggables.register(this)},draw:function(b){var a=Position.cumulativeOffset(this.element);var e=this.currentDelta();a[0]-=e[0];a[1]-=e[1];var c=[0,1].map(function(d){return(b[d]-a[d]-this.offset[d])}.bind(this));this.options.drawMethod(c)}});var Cropper={};Cropper.Img=Class.create();Cropper.Img.prototype={initialize:function(c,a){this.options=Object.extend({ratioDim:{x:0,y:0},minWidth:0,minHeight:0,displayOnInit:false,onEndCrop:Prototype.emptyFunction,captureKeys:true,onloadCoords:null,maxWidth:0,maxHeight:0},a||{});this.img=$(c);this.clickCoords={x:0,y:0};this.dragging=false;this.resizing=false;this.isWebKit=/Konqueror|Safari|KHTML/.test(navigator.userAgent);this.isIE=/MSIE/.test(navigator.userAgent);this.isOpera8=/Opera\s[1-8]/.test(navigator.userAgent);this.ratioX=0;this.ratioY=0;this.attached=false;this.fixedWidth=(this.options.maxWidth>0&&(this.options.minWidth>=this.options.maxWidth));this.fixedHeight=(this.options.maxHeight>0&&(this.options.minHeight>=this.options.maxHeight));
if(typeof this.img=="undefined"){return}$A(document.getElementsByTagName("script")).each(function(f){if(f.src.match(/cropper\.js/)){var e=f.src.replace(/cropper\.js(.*)?/,"");var d=document.createElement("link");d.rel="stylesheet";d.type="text/css";d.href=e+"cropper.css";d.media="screen";document.getElementsByTagName("head")[0].appendChild(d)}});if(this.options.ratioDim.x>0&&this.options.ratioDim.y>0){var b=this.getGCD(this.options.ratioDim.x,this.options.ratioDim.y);this.ratioX=this.options.ratioDim.x/b;this.ratioY=this.options.ratioDim.y/b}this.subInitialize();if(this.img.complete||this.isWebKit){this.onLoad()}else{Event.observe(this.img,"load",this.onLoad.bindAsEventListener(this))}},getGCD:function(d,c){if(c==0){return d}return this.getGCD(c,d%c)},onLoad:function(){var d="imgCrop_";var c=this.img.parentNode;var b="";if(this.isOpera8){b=" opera8"}this.imgWrap=Builder.node("div",{"class":d+"wrap"+b});this.north=Builder.node("div",{"class":d+"overlay "+d+"north"},[Builder.node("span")]);
this.east=Builder.node("div",{"class":d+"overlay "+d+"east"},[Builder.node("span")]);this.south=Builder.node("div",{"class":d+"overlay "+d+"south"},[Builder.node("span")]);this.west=Builder.node("div",{"class":d+"overlay "+d+"west"},[Builder.node("span")]);var a=[this.north,this.east,this.south,this.west];this.dragArea=Builder.node("div",{"class":d+"dragArea"},a);this.handleN=Builder.node("div",{"class":d+"handle "+d+"handleN"});this.handleNE=Builder.node("div",{"class":d+"handle "+d+"handleNE"});this.handleE=Builder.node("div",{"class":d+"handle "+d+"handleE"});this.handleSE=Builder.node("div",{"class":d+"handle "+d+"handleSE"});this.handleS=Builder.node("div",{"class":d+"handle "+d+"handleS"});this.handleSW=Builder.node("div",{"class":d+"handle "+d+"handleSW"});this.handleW=Builder.node("div",{"class":d+"handle "+d+"handleW"});this.handleNW=Builder.node("div",{"class":d+"handle "+d+"handleNW"});this.selArea=Builder.node("div",{"class":d+"selArea"},[Builder.node("div",{"class":d+"marqueeHoriz "+d+"marqueeNorth"},[Builder.node("span")]),Builder.node("div",{"class":d+"marqueeVert "+d+"marqueeEast"},[Builder.node("span")]),Builder.node("div",{"class":d+"marqueeHoriz "+d+"marqueeSouth"},[Builder.node("span")]),Builder.node("div",{"class":d+"marqueeVert "+d+"marqueeWest"},[Builder.node("span")]),this.handleN,this.handleNE,this.handleE,this.handleSE,this.handleS,this.handleSW,this.handleW,this.handleNW,Builder.node("div",{"class":d+"clickArea"})]);
this.imgWrap.appendChild(this.img);this.imgWrap.appendChild(this.dragArea);this.dragArea.appendChild(this.selArea);this.dragArea.appendChild(Builder.node("div",{"class":d+"clickArea"}));c.appendChild(this.imgWrap);this.startDragBind=this.startDrag.bindAsEventListener(this);Event.observe(this.dragArea,"mousedown",this.startDragBind);this.onDragBind=this.onDrag.bindAsEventListener(this);Event.observe(document,"mousemove",this.onDragBind);this.endCropBind=this.endCrop.bindAsEventListener(this);Event.observe(document,"mouseup",this.endCropBind);this.resizeBind=this.startResize.bindAsEventListener(this);this.handles=[this.handleN,this.handleNE,this.handleE,this.handleSE,this.handleS,this.handleSW,this.handleW,this.handleNW];this.registerHandles(true);if(this.options.captureKeys){this.keysBind=this.handleKeys.bindAsEventListener(this);Event.observe(document,"keypress",this.keysBind)}new CropDraggable(this.selArea,{drawMethod:this.moveArea.bindAsEventListener(this)});this.setParams()},registerHandles:function(g){for(var e=0;
e<this.handles.length;e++){var f=$(this.handles[e]);if(g){var d=false;if(this.fixedWidth&&this.fixedHeight){d=true}else{if(this.fixedWidth||this.fixedHeight){var c=f.className.match(/([S|N][E|W])$/);var b=f.className.match(/(E|W)$/);var a=f.className.match(/(N|S)$/);if(c){d=true}else{if(this.fixedWidth&&b){d=true}else{if(this.fixedHeight&&a){d=true}}}}}if(d){f.hide()}else{Event.observe(f,"mousedown",this.resizeBind)}}else{f.show();Event.stopObserving(f,"mousedown",this.resizeBind)}}},setParams:function(){this.imgW=this.img.width;this.imgH=this.img.height;$(this.north).setStyle({height:0});$(this.east).setStyle({width:0,height:0});$(this.south).setStyle({height:0});$(this.west).setStyle({width:0,height:0});$(this.imgWrap).setStyle({width:this.imgW+"px",height:this.imgH+"px"});$(this.selArea).hide();var b={x1:0,y1:0,x2:0,y2:0};var a=false;if(this.options.onloadCoords!=null){b=this.cloneCoords(this.options.onloadCoords);a=true}else{if(this.options.ratioDim.x>0&&this.options.ratioDim.y>0){b.x1=Math.ceil((this.imgW-this.options.ratioDim.x)/2);
b.y1=Math.ceil((this.imgH-this.options.ratioDim.y)/2);b.x2=b.x1+this.options.ratioDim.x;b.y2=b.y1+this.options.ratioDim.y;a=true}}this.setAreaCoords(b,false,false,1);if(this.options.displayOnInit&&a){this.selArea.show();this.drawArea();this.endCrop()}this.attached=true},remove:function(){if(this.attached){this.attached=false;this.imgWrap.parentNode.insertBefore(this.img,this.imgWrap);this.imgWrap.parentNode.removeChild(this.imgWrap);Event.stopObserving(this.dragArea,"mousedown",this.startDragBind);Event.stopObserving(document,"mousemove",this.onDragBind);Event.stopObserving(document,"mouseup",this.endCropBind);this.registerHandles(false);if(this.options.captureKeys){Event.stopObserving(document,"keypress",this.keysBind)}}},reset:function(){if(!this.attached){this.onLoad()}else{this.setParams()}this.endCrop()},handleKeys:function(b){var a={x:0,y:0};if(!this.dragging){switch(b.keyCode){case (37):a.x=-1;break;case (38):a.y=-1;break;case (39):a.x=1;break;case (40):a.y=1;break}if(a.x!=0||a.y!=0){if(b.shiftKey){a.x*=10;
a.y*=10}this.moveArea([this.areaCoords.x1+a.x,this.areaCoords.y1+a.y]);Event.stop(b)}}},calcW:function(){return(this.areaCoords.x2-this.areaCoords.x1)},calcH:function(){return(this.areaCoords.y2-this.areaCoords.y1)},moveArea:function(a){this.setAreaCoords({x1:a[0],y1:a[1],x2:a[0]+this.calcW(),y2:a[1]+this.calcH()},true,false);this.drawArea()},cloneCoords:function(a){return{x1:a.x1,y1:a.y1,x2:a.x2,y2:a.y2}},setAreaCoords:function(e,d,c,b,m){if(d){var k=e.x2-e.x1;var i=e.y2-e.y1;if(e.x1<0){e.x1=0;e.x2=k}if(e.y1<0){e.y1=0;e.y2=i}if(e.x2>this.imgW){e.x2=this.imgW;e.x1=this.imgW-k}if(e.y2>this.imgH){e.y2=this.imgH;e.y1=this.imgH-i}}else{if(e.x1<0){e.x1=0}if(e.y1<0){e.y1=0}if(e.x2>this.imgW){e.x2=this.imgW}if(e.y2>this.imgH){e.y2=this.imgH}if(b!=null){if(this.ratioX>0){this.applyRatio(e,{x:this.ratioX,y:this.ratioY},b,m)}else{if(c){this.applyRatio(e,{x:1,y:1},b,m)}}var h=[this.options.minWidth,this.options.minHeight];var g=[this.options.maxWidth,this.options.maxHeight];if(h[0]>0||h[1]>0||g[0]>0||g[1]>0){var f={a1:e.x1,a2:e.x2};
var a={a1:e.y1,a2:e.y2};var l={min:0,max:this.imgW};var j={min:0,max:this.imgH};if((h[0]!=0||h[1]!=0)&&c){if(h[0]>0){h[1]=h[0]}else{if(h[1]>0){h[0]=h[1]}}}if((g[0]!=0||g[0]!=0)&&c){if(g[0]>0&&g[0]<=g[1]){g[1]=g[0]}else{if(g[1]>0&&g[1]<=g[0]){g[0]=g[1]}}}if(h[0]>0){this.applyDimRestriction(f,h[0],b.x,l,"min")}if(h[1]>1){this.applyDimRestriction(a,h[1],b.y,j,"min")}if(g[0]>0){this.applyDimRestriction(f,g[0],b.x,l,"max")}if(g[1]>1){this.applyDimRestriction(a,g[1],b.y,j,"max")}e={x1:f.a1,y1:a.a1,x2:f.a2,y2:a.a2}}}}this.areaCoords=e},applyDimRestriction:function(e,f,c,d,b){var a;if(b=="min"){a=((e.a2-e.a1)<f)}else{a=((e.a2-e.a1)>f)}if(a){if(c==1){e.a2=e.a1+f}else{e.a1=e.a2-f}if(e.a1<d.min){e.a1=d.min;e.a2=f}else{if(e.a2>d.max){e.a1=d.max-f;e.a2=d.max}}}},applyRatio:function(a,e,d,c){var b;if(c=="N"||c=="S"){b=this.applyRatioToAxis({a1:a.y1,b1:a.x1,a2:a.y2,b2:a.x2},{a:e.y,b:e.x},{a:d.y,b:d.x},{min:0,max:this.imgW});a.x1=b.b1;a.y1=b.a1;a.x2=b.b2;a.y2=b.a2}else{b=this.applyRatioToAxis({a1:a.x1,b1:a.y1,a2:a.x2,b2:a.y2},{a:e.x,b:e.y},{a:d.x,b:d.y},{min:0,max:this.imgH});
a.x1=b.a1;a.y1=b.b1;a.x2=b.a2;a.y2=b.b2}},applyRatioToAxis:function(d,b,j,i){var h=Object.extend(d,{});var g=h.a2-h.a1;var f=Math.floor(g*b.b/b.a);var e;var c;var a=null;if(j.b==1){e=h.b1+f;if(e>i.max){e=i.max;a=e-h.b1}h.b2=e}else{e=h.b2-f;if(e<i.min){e=i.min;a=e+h.b2}h.b1=e}if(a!=null){c=Math.floor(a*b.a/b.b);if(j.a==1){h.a2=h.a1+c}else{h.a1=h.a1=h.a2-c}}return h},drawArea:function(){var i=this.calcW();var h=this.calcH();var j="px";var e=[this.areaCoords.x1+j,this.areaCoords.y1+j,i+j,h+j,this.areaCoords.x2+j,this.areaCoords.y2+j,(this.img.width-this.areaCoords.x2)+j,(this.img.height-this.areaCoords.y2)+j];var d=this.selArea.style;d.left=e[0];d.top=e[1];d.width=e[2];d.height=e[3];var c=Math.ceil((i-6)/2)+j;var b=Math.ceil((h-6)/2)+j;this.handleN.style.left=c;this.handleE.style.top=b;this.handleS.style.left=c;this.handleW.style.top=b;this.north.style.height=e[1];var a=this.east.style;a.top=e[1];a.height=e[3];a.left=e[4];a.width=e[6];var g=this.south.style;g.top=e[5];g.height=e[7];var f=this.west.style;
f.top=e[1];f.height=e[3];f.width=e[0];this.subDrawArea();this.forceReRender()},forceReRender:function(){if(this.isIE||this.isWebKit){var g=document.createTextNode(" ");var e,b,f,a;if(this.isIE){fixEl=this.selArea}else{if(this.isWebKit){fixEl=document.getElementsByClassName("imgCrop_marqueeSouth",this.imgWrap)[0];e=Builder.node("div","");e.style.visibility="hidden";var c=["SE","S","SW"];for(a=0;a<c.length;a++){b=document.getElementsByClassName("imgCrop_handle"+c[a],this.selArea)[0];if(b.childNodes.length){b.removeChild(b.childNodes[0])}b.appendChild(e)}}}fixEl.appendChild(g);fixEl.removeChild(g)}},startResize:function(a){this.startCoords=this.cloneCoords(this.areaCoords);this.resizing=true;this.resizeHandle=Event.element(a).classNames().toString().replace(/([^N|NE|E|SE|S|SW|W|NW])+/,"");Event.stop(a)},startDrag:function(a){this.selArea.show();this.clickCoords=this.getCurPos(a);this.setAreaCoords({x1:this.clickCoords.x,y1:this.clickCoords.y,x2:this.clickCoords.x,y2:this.clickCoords.y},false,false,null);
this.dragging=true;this.onDrag(a);Event.stop(a)},getCurPos:function(b){var a=this.imgWrap,c=Position.cumulativeOffset(a);while(a.nodeName!="BODY"){c[1]-=a.scrollTop||0;c[0]-=a.scrollLeft||0;a=a.parentNode}return curPos={x:Event.pointerX(b)-c[0],y:Event.pointerY(b)-c[1]}},onDrag:function(f){if(this.dragging||this.resizing){var d=null;var c=this.getCurPos(f);var b=this.cloneCoords(this.areaCoords);var a={x:1,y:1};if(this.dragging){if(c.x<this.clickCoords.x){a.x=-1}if(c.y<this.clickCoords.y){a.y=-1}this.transformCoords(c.x,this.clickCoords.x,b,"x");this.transformCoords(c.y,this.clickCoords.y,b,"y")}else{if(this.resizing){d=this.resizeHandle;if(d.match(/E/)){this.transformCoords(c.x,this.startCoords.x1,b,"x");if(c.x<this.startCoords.x1){a.x=-1}}else{if(d.match(/W/)){this.transformCoords(c.x,this.startCoords.x2,b,"x");if(c.x<this.startCoords.x2){a.x=-1}}}if(d.match(/N/)){this.transformCoords(c.y,this.startCoords.y2,b,"y");if(c.y<this.startCoords.y2){a.y=-1}}else{if(d.match(/S/)){this.transformCoords(c.y,this.startCoords.y1,b,"y");
if(c.y<this.startCoords.y1){a.y=-1}}}}}this.setAreaCoords(b,false,f.shiftKey,a,d);this.drawArea();Event.stop(f)}},transformCoords:function(e,d,c,b){var a=[e,d];if(e>d){a.reverse()}c[b+"1"]=a[0];c[b+"2"]=a[1]},endCrop:function(){this.dragging=false;this.resizing=false;this.options.onEndCrop(this.areaCoords,{width:this.calcW(),height:this.calcH()})},subInitialize:function(){},subDrawArea:function(){}};Cropper.ImgWithPreview=Class.create();Object.extend(Object.extend(Cropper.ImgWithPreview.prototype,Cropper.Img.prototype),{subInitialize:function(){this.hasPreviewImg=false;if(typeof(this.options.previewWrap)!="undefined"&&this.options.minWidth>0&&this.options.minHeight>0){this.previewWrap=$(this.options.previewWrap);this.previewImg=this.img.cloneNode(false);this.previewImg.id="imgCrop_"+this.previewImg.id;this.options.displayOnInit=true;this.hasPreviewImg=true;this.previewWrap.addClassName("imgCrop_previewWrap");this.previewWrap.setStyle({width:this.options.minWidth+"px",height:this.options.minHeight+"px"});
this.previewWrap.appendChild(this.previewImg)}},subDrawArea:function(){if(this.hasPreviewImg){var f=this.calcW();var e=this.calcH();var c={x:this.imgW/f,y:this.imgH/e};var d={x:f/this.options.minWidth,y:e/this.options.minHeight};var b={w:Math.ceil(this.options.minWidth*c.x)+"px",h:Math.ceil(this.options.minHeight*c.y)+"px",x:"-"+Math.ceil(this.areaCoords.x1/d.x)+"px",y:"-"+Math.ceil(this.areaCoords.y1/d.y)+"px"};var a=this.previewImg.style;a.width=b.w;a.height=b.h;a.left=b.x;a.top=b.y}}});var IcPowerImage=Class.create();IcPowerImage.prototype={initialize:function(a,c,f,i,j,b,g,d,h){this.cropImageId=g+"_cropImage";this.cropSetupAlreadyCalled=false;var e=CROP_TEMPLATE.evaluate({originalImage:a,cropImageId:this.cropImageId});this._initiatingDomImage=b;this.cms=d;this.originalImage=a;this.destinationImage=c;this.cropWidth=f;this.cropHeight=i;this.rotation=j;this.instanceName=g;this.extraTransforms=h;this._powerImageMadeItToScale=false;this.window=new UI.Window({width:500,theme:prototypeUiTheme});
this.window.setContent(e);this.window_onShow=this._onShow.bind(this);this.window_onClose=this._onClose.bind(this);this.window.observe("showing",this.window_onShow);this.window.observe("hiding",this.window_onClose);this.window.show().focus()},_onClose:function(a,b){this.operation.callback=this._cropOperation.bind(this);this.image.process(this.operation);Event.stopObserving(this.window,"hiding",this.window_onClose)},_cropOperation:function(f){if(!f){alert("crop image load failed!")}else{var d=document.getElementById(this._initiatingDomImage).parentNode.id;var a=$(this._initiatingDomImage);var c=this.operation.destinationUrl+"?"+Math.round(100000*Math.random());var b=a.parentNode;$(b).addClassName("currentlyCroppingImage");var e="var powerImageImageDomElement = $('"+this._initiatingDomImage+"');";if(a.tagName==="VAR"){e+="powerImageImageDomElement.style.filter = \"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+c+"', sizingMethod='scale');\";"}else{e+="powerImageImageDomElement.src = '"+c+"';"
}e+="powerImageImageDomElement.style.width="+this.cropWidth+";\npowerImageImageDomElement.style.height="+this.cropHeight+";";setTimeout(e+"$('"+d+'\').removeClassName("currentlyCroppingImage");',3000)}},_onShow:function(){if(!this.cropSetupAlreadyCalled){Event.stopObserving(this.window,"showing",this.window_onShow);var c=$(this.cropImageId);var a="if (!(typeof "+this.instanceName+" == 'undefined')) "+this.instanceName+"._onShow()";if(!this.cropSetupAlreadyCalled&&!c){setTimeout(a,50)}else{var b=c.getWidth();if(!this.cropSetupAlreadyCalled&&(!b||b==0)){setTimeout(a,50)}else{if(!this.cropSetupAlreadyCalled){this.cropSetupAlreadyCalled=true;this._continueCropSetup()}}}}},_continueCropSetup:function(){var c=$(this.cropImageId);var b=c.getWidth();var a=c.getHeight();this.image=new IcImage(this.originalImage,b,a,c);this.operation=new IcImageOperation(this.destinationImage,0,0,this.cropWidth,this.cropHeight,this.rotation,this.extraTransforms);ImageUtil.getScaleForCrop(this.image.dimension,this.operation.dimension,this._scaleCallback.bind(this))
},_scaleCallback:function(a){var d=this.image;var c=d.domReference;var b=d.dimension.width*a;if(b<this.operation.dimension.width){b++}c.width=b;this.window.setSize(this.window.getSize().width,$$(".cropImageContainer")[0].getHeight(),true);this.window.center();c.addClassName("showImage");this._setupCropper()},_setupCropper:function(){var c=this.operation.dimension;var b=c.width-1;var a=c.height-1;this.cropper=new Cropper.Img(this.image.domReference.id,{minWidth:b,minHeight:a,ratioDim:{x:b,y:a},displayOnInit:true,onEndCrop:this._setupCropper_onEndCrop.bind(this)})},_setupCropper_onEndCrop:function(c,b){var a=c.x1;var d=c.y1;if(a<0){a=0}if(d<0){d=0}this.operation.x=a;this.operation.y=d}};function stopEventBubblingFromPowerImage(){var a=$$("div.powerImageEditButton");a.each(function(c,b){Event.observe(c,"click",function(d){Event.stop(d)})})};