if(!window.KWS){window.KWS={}}if(!window.KWS_Container){window.KWS_Container={imageId:null,image:null,mainImage:null,modifiedImage:null,imageWidth:0,imageHeight:0,initialWidth:0,initialHeight:0,currentImageWidth:0,currentImageHeight:0,thresholdLevel:50,haveZoom:false,zoomLevel:0,wasImageUploaded:false}}KWS.Tooltip={init:function(){var a=new Tips(".tip",{className:"tooltip"});$("tip-threshold").store("tip:text","The higher the tolerance, the less accurate eye finding algorithm is. Use the default unless you have a really good reason not to. If you get green color in the selector region, the tolerance is too high, lower it.");$("tip-selector").store("tip:text","Drag the box below onto the area with red eyes in your photo. You can do this multiple times to cover red eyes of more than one person. To remove selection area, just drag it off the image or click [X] icon to remove all selections. ")}};KWS.Dialog={errorDialog:function(b){var a=new Element("div",{"class":"error"});var e=new Element("div",{"class":"error-wrapper"}).inject(a);var d=new Element("div",{"class":"error-close"}).inject(e);var c=new Element("img",{src:"/layout/images/closebox.png",alt:""}).inject(d);var b=new Element("p").set("text",b).inject(e);a.inject(document.body);c.addEvent("click",function(){a.destroy();a=null;e=null;d=null;c.removeEvents("click");c=null;b=null})}};KWS.Slider={sliders:{},initThresholdSlider:function(b,a,c,d){this.sliders.threshold=new Slider(a,c,{steps:8,snap:true,range:[0,100],onChange:function(e){KWS_Container.thresholdLevel=e;d.set("text",e)}}).set(b)},initZoomSlider:function(c,a,b){this.sliders.zoom=new Slider(a,b,{range:[0,100],onChange:function(j){if(KWS_Container.wasImageUploaded&&KWS_Container.haveZoom){var k=KWS_Container.imageWidth;var l=KWS_Container.imageHeight;var e=KWS_Container.currentImageWidth;var n=KWS_Container.currentImageHeight;if(true){var o=KWS_Container.imageWidth-e;var m=KWS_Container.imageHeight-n;var g=Math.floor((o*j/100)+e);var d=Math.floor((m*j/100)+n);var f=(KWS_Container.modifiedImage)?KWS_Container.modifiedImage:KWS_Container.mainImage;if(!f){return}var i=f.getWidth();var h=f.getHeight();f.setStyles({width:g,height:d});f.setStyle("left",((640-f.getWidth())/2)+"px");f.setStyle("top",((480-f.getHeight())/2)+"px")}}KWS_Container.zoomLevel=j}}).set(c)},destroyThresholdSlider:function(a,b){a.removeEvents();b.removeEvents();this.sliders.threshold=null},destroyZoomSlider:function(a,b){a.removeEvents();b.removeEvents();this.sliders.zoom=null}};KWS.Selector={clones:new Hash(),selectorCount:0,init:function(){$("toolbox-selector").addEvent("mousedown",function(c){c=new Event(c).stop();if(!KWS_Container.wasImageUploaded){return}if(KWS.Selector.selectorCount>=8){KWS.Dialog.errorDialog("8 regions ought to be enough for anybody :-)");return}if(KWS_Container.modifiedImage){KWS.Dialog.errorDialog('Please click "undo" if you are not satisfied with the result to proceed.');return}var d=this.clone().setStyles(this.getCoordinates()).setStyles({opacity:0.4,position:"absolute"}).addClass("draggable").addEvent("emptydrop",function(){this.remove();a.removeEvents()}).inject(document.body);d.salt=Math.random();var a=KWS_Container.mainImage;a.addEvents({drop:function(){a.removeEvents();d.remove();item.clone().inject(a)}});var b=d.makeDraggable({droppables:[a],container:$("image-container"),onDrop:function(e,f){if(!f){d.destroy();KWS.Selector.clones.each(function(h,g){if(g==d.salt){h.destroy();KWS.Selector.clones.erase(g)}})}else{KWS.Selector.clones.include(d.salt,d);KWS.Selector.selectorCount++}}});b.start(c)});$("toolbox-selector-close").addEvent("click",function(){KWS.Selector.destroySelectors()})},destroySelectors:function(){KWS.Selector.clones.each(function(b,a){b.destroy();KWS.Selector.clones.erase(a)});KWS.Selector.clones=new Hash();KWS.Selector.selectorCount=0},getCoordinates:function(){var a=[];a.include(KWS_Container.thresholdLevel);var c={width:96,height:64};var b=KWS_Container.imageWidth/KWS_Container.mainImage.getWidth();KWS.Selector.clones.each(function(f,d){var e=f.getPosition(KWS_Container.mainImage);e.x=Math.floor(e.x*b);e.y=Math.floor(e.y*b);e.width=Math.floor(c.width*b);e.height=Math.floor(c.height*b);a.include(e)});return a},haveSelectors:function(){return(this.clones.getLength()>0)?true:false}};KWS.Uploader={uid:0,settings:{allowedExtensions:["jpg","jpeg","png"],action:"/upload-image",formContainer:"file-section",filename:"photo"},events:{onSubmit:function(a,b){return true},onWrongExtension:function(a,b){return true},onComplete:function(b,c,a){}},init:function(){this.injectIframe();this.injectForm();this.injectInput()},getUniqueId:function(){return this.uid+1},injectIframe:function(){this.iframe=new IFrame().setStyle("display","none").inject(document.body)},injectForm:function(){var b="kwsId531"+this.getUniqueId();var a=new Element("div","form-container").set("html",'<form id="'+b+'"method="post" enctype="multipart/form-data"></form>').inject(document.body);this.form=$(b);this.form.set("action",this.settings.action).set("target",this.iframe.get("name")).inject(this.settings.formContainer);a.destroy()},injectInput:function(){var a="kwsId864"+this.getUniqueId();this.input=new Element("input",{type:"file",name:this.settings.filename}).addClass("file").addEvent("change",function(){this.submit()}.bind(this)).inject(this.form)},submit:function(){this.file=this.getFilename(this.input.value);this.ext=this.getExtension(this.input.value)[0];if(this.settings.allowedExtensions.length!=0&&!this.settings.allowedExtensions.contains(this.ext)){if(!this.events.onWrongExtension(this.file,this.ext)){return false}}if(this.events.onSubmit(this.file,this.ext)!==false){this.form.submit();this.input.destroy();this.input=null;this.form.destroy();this.form=null;var a=this.iframe;a.addEvent("load",function(){if(a.src=="about:blank"){return}response=this.getIframeData(a.id);this.events.onComplete(this.file,this.ext,response);setTimeout(function(){a.src="about:blank";a.destroy();a=null}.bind(this),1)}.bind(this));this.injectIframe();this.injectForm();this.injectInput()}else{this.input.value=""}},getIframeData:function(c){var a=document.frames?document.frames[c]:document.getElementById(c);var b=a.contentWindow||a;return b.document.body.innerHTML},getFilename:function(a){return a.replace(/.*(\/|\\)/,"")},getExtension:function(a){return(/[.]/.exec(a))?/[^.]+$/.exec(a.toLowerCase()):""}};KWS.Fix={init:function(a){a.addEvent("click",function(c){if(KWS_Container.wasImageUploaded){if(KWS.Selector.haveSelectors()){var b=KWS.Selector.getCoordinates();KWS_Container.mainImage.setStyle("display","none");KWS_Container.image.addClass("spinner");KWS.Selector.destroySelectors();var d=new Request({method:"post",url:"/fix",onComplete:function(e){KWS.Fix.download(JSON.decode(e))}}).send("data="+JSON.encode(b))}else{KWS.Dialog.errorDialog("Please select an area with red eyes using the selector tool (dark box on the right)")}}})},undo:function(a){a.addEvent("click",function(b){if(KWS_Container.wasImageUploaded){if(KWS_Container.modifiedImage){if(KWS_Container.modifiedImage){KWS_Container.modifiedImage.destroy();KWS_Container.modifiedImage=null}KWS_Container.mainImage.setStyle("display","")}KWS.Slider.sliders.threshold.set(0);$("toolbox-threshold").getElement(".knob").setStyle("left","0px");KWS.Slider.sliders.zoom.set(0);$("toolbox-zoom").getElement(".knob").setStyle("left","0px");KWS.Selector.destroySelectors();KWS_Container.mainImage.setStyles({width:KWS_Container.initialWidth,height:KWS_Container.initialHeight});KWS_Container.mainImage.setStyle("left",((640-KWS_Container.initialWidth)/2)+"px");KWS_Container.mainImage.setStyle("top",((480-KWS_Container.initialHeight)/2)+"px")}})},downloadModified:function(a){a.addEvent("click",function(b){if(KWS_Container.wasImageUploaded&&KWS_Container.modifiedImage){window.location="/download-image/"+KWS_Container.imageId}else{KWS.Dialog.errorDialog("No modified image to download.")}})},download:function(a){if(a.type=="error"){KWS.Dialog.errorDialog(a.error);if(!KWS_Container.wasImageUploaded){KWS_Container.image.getElement("#usage").setStyle("display","block")}else{KWS_Container.mainImage.setStyle("display","")}KWS_Container.image.removeClass("spinner")}else{if(a.type=="info"){KWS.Slider.sliders.zoom.set(0);$("toolbox-zoom").getElement(".knob").setStyle("left","0px");var c=new Element("img",{src:a.web_path,events:{load:function(){KWS_Container.image.removeClass("spinner")}}}).setStyles({width:KWS_Container.initialWidth,height:KWS_Container.initialHeight});if(KWS_Container.modifiedImage){KWS_Container.modifiedImage.destroy();KWS_Container.modifiedImage=null}c.inject(KWS_Container.image);c.setStyle("cursor","move");var b=c.makeDraggable();c.setStyle("left",((640-KWS_Container.initialWidth)/2)+"px");c.setStyle("top",((480-KWS_Container.initialHeight)/2)+"px");KWS_Container.modifiedImage=c}}}};window.addEvent("domready",function(){document.ondragstart=function(){return false};KWS_Container.image=$("image");KWS.Tooltip.init();var e=$("toolbox-threshold");var b=e.getElement(".knob");var c=$("toolbox-zoom");var d=c.getElement(".knob");KWS.Slider.initThresholdSlider(50,e,b,$("toolbox-threshold-value").getElement("span"));KWS.Slider.initZoomSlider(0,c,d);KWS.Selector.init();KWS.Uploader.events.onWrongExtension=function(f,g){KWS.Dialog.errorDialog("ERROR: allowed extensions are: "+KWS.Uploader.settings.allowedExtensions.join(", "))};KWS.Uploader.events.onSubmit=function(f,g){KWS_Container.image.getElement("#usage").setStyle("display","none");if(KWS_Container.mainImage){KWS_Container.mainImage.destroy();KWS_Container.mainImage=null}if(KWS_Container.modifiedImage){KWS_Container.modifiedImage.destroy();KWS_Container.modifiedImage=null}KWS_Container.image.addClass("spinner")};var a;KWS.Uploader.events.onComplete=function(g,m,k){a=JSON.decode(k);if(a.type=="error"){KWS.Dialog.errorDialog(a.error);if(!KWS_Container.wasImageUploaded){KWS_Container.image.getElement("#usage").setStyle("display","block");KWS_Container.image.removeClass("spinner")}}else{if(a.type=="info"){KWS_Container.imageId=a.id;var n=640;var o=480;var i,f;KWS_Container.haveZoom=true;var l=a.width/a.height;if(a.height>a.width){if(a.height>o){f=o;i=f*l}else{f=a.height;i=a.width;KWS_Container.haveZoom=false}}else{if(a.width>n){i=n;f=i/l}else{i=a.width;f=a.height;KWS_Container.haveZoom=false}}KWS.Slider.sliders.zoom.set(0);$("toolbox-zoom").getElement(".knob").setStyle("left","0px");var h=new Element("img",{src:a.web_path,events:{load:function(){var q=this.getWidth();var p=this.getHeight();KWS_Container.currentImageWidth=this.getWidth();KWS_Container.currentImageHeight=this.getHeight();KWS_Container.image.removeClass("spinner")}}}).setStyles({width:i,height:f});KWS_Container.imageWidth=a.width;KWS_Container.imageHeight=a.height;KWS_Container.initialWidth=i;KWS_Container.initialHeight=f;KWS_Container.currentImageWidth=i;KWS_Container.currentImageHeight=f;if(KWS_Container.mainImage){KWS_Container.mainImage.destroy();KWS_Container.mainImage=null}h.inject(KWS_Container.image);h.setStyle("cursor","move");var j=h.makeDraggable();h.setStyle("left",((640-i)/2)+"px");h.setStyle("top",((480-f)/2)+"px");KWS_Container.mainImage=h;KWS_Container.wasImageUploaded=true}}};KWS.Uploader.init();KWS.Fix.init($("fix-button"));KWS.Fix.undo($("undo-button"));KWS.Fix.downloadModified($("download-button"))});