(function(a){var b=a.ui.mouse.prototype._mouseMove;a.ui.mouse.prototype._mouseMove=function(c){if(a.browser.msie&&document.documentMode>=9)c.button=1;b.apply(this,[c])}})(jQuery);var lastDown=null,lastHover=null,docTouches=0,imagesPathsToPreload=[],imagesToPreload=[],imageExtension=".png",initialScaling=.5,planScaling=1.3,plan2d="/js-plan/images/plans/2d.jpg",plan3d="/js-plan/images/plans/3d.jpg",zTop=100,busy=false;function Throttle(){if(!busy){busy=true;setTimeout(function(){busy=false},25);return false}return true}function HasTouch(){return"ontouchstart"in window}function Swap2D3D(a){if($(a).text()=="2D Plan"){$("#FloorPlanImageWrap img").attr("src",plan2d);$(a).text("3D Plan")}else{$("#FloorPlanImageWrap img").attr("src",plan3d);$(a).text("2D Plan")}}$(function(){$(".FurniturePrototype").each(function(){var a=$(this).find("img");a.addClass("Icon");var b=a.attr("src").replace("1.png","");a.attr("src",b+"1"+imageExtension);var c=$(this).attr("furnframes")*1;imagesPathsToPreload=imagesPathsToPreload.concat(ImageIconSet(b,c))});for(i=0;i<imagesPathsToPreload.length;i++){var a=new Image;a.src=imagesPathsToPreload[i][0];a.onload=OnImageLoaded;a.onerror=OnImageError;a.loaded=false;imagesToPreload.push([a,imagesPathsToPreload[i][1],imagesPathsToPreload[i][2]])}PreLoad();HasTouch()&&$("body").addClass("touch");if(HasTouch())$("#TouchTrash").bind("touchstart",function(){TouchDelete()});else $("#Trash").bind("click",function(){if($(lastHover).hasClass("Prototype"))return;$(lastHover).fadeOut();$("#Toolbox").fadeOut();$("#TitleOfSelected").fadeOut();$("#TouchTitleOfSelected").fadeOut()});$("#Rotate").mousedown(function(a){a.preventDefault&&a.preventDefault();if($(lastHover).hasClass("Prototype"))return;!$(this).hasClass("Active")&&$(this).addClass("Active");UpdateIconRotation(a,$(this));$(this).mousemove(function(a){UpdateIconRotation(a,$(this))});$(this).mouseup(function(){$(this).unbind("mousemove")})}).mouseup(function(a){UpdateIconRotationForClick(a,$(this))});$("#TouchRotate").bind("touchstart",function(a){a.preventDefault();if($(lastHover).hasClass("Prototype"))return;UpdateIconRotation(a,$(this));$(this).bind("touchmove",function(a){a.preventDefault();UpdateIconRotation(a,$(this))});$(this).bind("touchend",function(){$(this).unbind("touchmove")})});$("#Scaler").slider({orientation:"vertical",range:"min",min:0,max:1,value:.5,step:.05,slide:function(c,b){if($(lastHover).hasClass("Prototype"))return;if(!Throttle()){var a=ScalerToRange(b.value);SetScale(lastHover,a)}}});$("#TouchScaler").slider({orientation:"horizontal",range:"min",min:0,max:1,value:.5,step:.05,slide:function(c,b){if($(lastHover).hasClass("Prototype"))return;if(!Throttle()){var a=ScalerToRange(b.value);SetScale(lastHover,a)}}});$("#Toolbox").bind("mouseover",function(a){ShowToolbox(a,$(lastHover))}).bind("mouseout",function(){$("#TitleOfSelected").clearQueue();$(this).clearQueue().delay(250).hide(0,function(){$("#TitleOfSelected").hide(0)});$("#Rotate").removeClass("Active")});$("#TitleOfSelected").bind("mouseover",function(){$("#Toolbox").clearQueue()}).bind("mouseout",function(){$("#Toolbox").clearQueue();$(this).clearQueue().delay(250).hide(0,function(){$("#Toolbox").hide(0)})});$("#TouchToolbox").bind("touchmove",function(a){a.preventDefault()});$("#GetLinkToPlan").click(function(){$("#LinkToPlanWrap").toggle(100);$("#LinkToPlan").val(GetLinkToPlan())});$("#SendLinkToPlan").click(function(){$("#ShareOptions").show(250)});$("#EmailShare").click(function(){window.location.href="mailto:?subject=My Floor Plan&Body=I just designed my new floor plan and want to show it to you. \n\nClick this link to see "+encodeURIComponent(GetLinkToPlan())});$("#FacebookShare").click(function(){window.open("https://www.facebook.com/sharer.php?u="+GetLinkToPlan(),"","width=740,height=400,resizeable=1,scrollbars=1")});$(".CloseButton").click(function(){$(this).parent().hide(250)});$("#LinkToPlan").click(function(){$(this).get(0).select()});$(document).bind("touchstart",OnMultiTouchChange).bind("touchend",OnMultiTouchChange);if($(document).width()-30>$(window).width()){var c=$("#FloorPlanImageWrap img").width();$("#FloorPlanImageWrap").css("width",$(window).width()-300+"px");$("#TouchToolbox,#TouchTitleOfSelected,#FurniturePanel,#Preload").css("left",$(window).width()-280+"px");var b=$("#FloorPlanImageWrap img").width()/c;planScaling*=b}});function TouchDelete(){if($(lastHover).hasClass("Prototype"))return;$(lastHover).fadeOut();$("#TouchTitleOfSelected").fadeOut()}function DeleteIfOnTrash(){if(lastDown!=null){var b=$(lastDown),a=$("#TouchTrash"),c=Math.sqrt(Math.pow(a.offset().top+a.height()/2-b.offset().top-b.height()/2,2)+Math.pow(a.offset().left+a.width()/2-b.offset().left-b.width()/2,2));c<100&&TouchDelete()}}function ScalerToRange(a){return a+.5}function RangeToScaler(a){return a-.5}function SetGlobalScale(b,d){if(b.data.originalWidth){var a=$(b),k=a.find("img"),j=a.width(),h=a.height();k.width(d*b.data.originalWidth);var c=(a.width()-j)/2,i=(a.height()-h)/2;c<5&&a.css({left:a.position().left-c+"px",top:a.position().top-i+"px"})}else{var f=d/b.data.scale,e=$(b).find("img"),g=e.width();e.width(g*f);ReBound(b)}}function ReBound(a){var b=$(a).find("img");if(b.height()==0){b.onload=function(){ReBound(a)};return}var c=ActiveSize(a),h=$(a).width()-c.width,g=$(a).height()-c.height,d=$(a).position().left+h/2+"px",e=$(a).position().top+g/2+"px";$(a).width(c.width+"px").height(c.height+"px").css({left:d,top:e});var f=ActiveSize(a);e=(f.height-b.height())/2+"px";d=(f.width-b.width())/2+"px";b.css({left:d,top:e})}function SetScale(a,b){if(!a.data.originalWidth)a.data.originalWidth=$(a).find("img").width();SetGlobalScale(a,b);a.data.scale=b;SetTitle();ReBound(a)}function ImageIconSet(a,c){var b=[];for(i=2;i<=c;i++)b.push([a+i+imageExtension,a,i]);return b}function OnImageLoaded(){this.loaded=true}function OnImageError(){this.loaded=true}function PreLoad(){var f=imagesToPreload.length,c=0;for(i=0;i<imagesToPreload.length;i++){var e=imagesToPreload[i][0];if(e.loaded)c++}var b=(c/f*100).toFixed(0);$("#Preload").html("Loaded: "+b+"%");if(!$.browser.msie||$.browser.version>8){var a="linear-gradient(left, #EEE "+b+"%, #C8C8C8 0%)";if($.browser.mozilla)a="-moz-"+a;if($.browser.webkit)a="-webkit-"+a;$("#Preload").css("background-image",a)}if(b==100){$("#Preload").fadeOut(100);$("#FurniturePanel, body.touch #TouchToolbox").fadeIn(250);var d=0;$(".FurniturePrototype").each(function(){var b=$(this).find("img");b.addClass("Icon");b.parent().append("<span class='ActivityDot' />");d++;var c=$(this).attr("furnintervals")?$(this).attr("furnintervals")*1:8,e=$(this).attr("ah")?$(this).attr("ah")*1:1,f=$(this).attr("aw")?$(this).attr("aw")*1:1;this.data={path:b.attr("src").replace("1"+imageExtension,""),frame:1,rotation:0,extraRotation:0,scale:1,inDrag:false,furnitureRotationIncrements:c,activeHeight:e,activeWidth:f,position:$(this).position()};var a=$(this).attr("furnoverscale");a=a?a*1:1;SetGlobalScale($(this).get(0),initialScaling*a);CloneFurniture($(this))});$(".FurniturePrototype").hide(0);RestoreArrangement()}else timerID=setTimeout("PreLoad()",50)}function GetMouseDownAttributes(a,b){var f=a.pageX,g=a.pageY;if(a.touches){f=a.touches[0].pageX;g=a.touches[0].pageY}var c=b.outerWidth()/2,d=f-b.offset().left-c,e=b.offset().top+c-g,h=Math.sqrt(Math.pow(d,2)+Math.pow(e,2));return{offsetX:d,offsetY:e,clickRadius:h}}function UpdateIconRotationForClick(d,a){if(!Throttle()){var c=GetMouseDownAttributes(d,a);if(c.clickRadius<10&&lastHover!=null){var b=(lastHover.data.rotation!=null?lastHover.data.rotation:0)+360/lastHover.data.furnitureRotationIncrements;SetIconRotation(lastHover,b)}}}function UpdateIconRotation(g,e){if(!Throttle()){var b=GetMouseDownAttributes(g,e);if(b.clickRadius>10){var d=Math.sqrt(Math.pow(b.offsetX,2)+Math.pow(b.offsetY,2)),f=b.offsetX/d,c=Math.asin(f),a=c*180/Math.PI;if(b.offsetY<0)if(c>0)a=180-a;else a=180-a;else if(c<0)a+=360;SetIconRotation(lastHover,a)}}}function SetIconRotation(a,d){if(a==null)return;var c=a.data.furnitureRotationIncrements,f=1;for(i=0;i<imagesToPreload.length;i++)if(imagesToPreload[i][1]==a.data.path)f=Math.max(f,imagesToPreload[i][2]);var e=Math.round(d*c/360.1)%f+1,g=Math.round(d*c/360.1)%c+1;a.data.rotation=(g-1)*360/a.data.furnitureRotationIncrements;a.data.frame=e;a.data.extraRotation=d-(g-1)*360/a.data.furnitureRotationIncrements;var j=a.data.path+e+imageExtension,b=$(a).find(".Icon"),h=b.parent().find('.Icon[src$="/'+e+imageExtension+'"]');if(h.length){b.hide();h.show()}else{b.hide();var l=b.eq(0).clone().attr("src",j).prependTo(b.parent()).show()}var k=$.support.touch?" translate(0,0)":"";$(a).find(".Icon:visible").css("-moz-transform","rotate("+a.data.extraRotation+"deg)").css("-webkit-transform","rotate("+a.data.extraRotation+"deg)"+k).css("transform","rotate("+a.data.extraRotation+"deg)");ReBound(a)}function CloneFurniture(a){$("#Scaler,#TouchScaler").slider("value",.5);a.removeClass("Prototype");if($.support.touch)a.unbind("touchmove").bind("touchmove",function(a){lastHover.data.inDrag=true;OnTouchFurnitureMove(a,$(this))});else a.unbind("mousemove").bind("mousemove",function(a){a.preventDefault();if(lastDown==this){lastHover.data.inDrag=true;$("#Toolbox").hide(0);$("#TitleOfSelected").hide(0)}});var b=a.clone();$(b).get(0).data=jQuery.extend(true,{},a.get(0).data);$(b).attr({furntitle:a.attr("furntitle"),furnwidth:a.attr("furnwidth"),furndepth:a.attr("furndepth")});SetGlobalScale(a.get(0),planScaling);var c=a.get(0).data.position.left+"px",d=a.get(0).data.position.top+"px";b.appendTo(a.parent()).removeClass("FurniturePrototype").addClass("Furniture").addClass("Prototype").removeClass("ActiveFurniture").css({left:c,top:d});!$.support.touch&&b.draggable({distance:3});ReBound(b.get(0));if($.support.touch)b.bind("touchstart",function(a){a.preventDefault();if(docTouches<1){lastDown=this;OnTouchFurnitureFocus(a,$(this))}}).bind("touchend",function(a){if(a.touches.length==0){lastHover.data.inDrag=false;DeleteIfOnTrash();lastDown=null}}).bind("touchmove",function(a){if(lastDown==this){CloneFurniture($(this));OnTouchFurnitureMove(a,$(this))}});else b.bind("mousemove",function(a){a.preventDefault();lastDown==this&&CloneFurniture($(this))}).bind("mouseover",function(a){OnFurnitureFocus(a,$(this));ShowTitle($(this))}).bind("mouseup",function(a){lastHover.data.inDrag=false;ShowToolbox(a,$(this));lastDown=null}).bind("mousedown",function(a){a.preventDefault();lastDown=this}).bind("click",function(a){OnFurnitureFocus(a,$(this))}).bind("mouseout",function(){$("#TitleOfSelected").clearQueue();$("#Toolbox").clearQueue().delay(250).hide(0,function(){$("#TitleOfSelected").clearQueue().hide(0)})});b.css("z-index",b.css("z-index")-1);return a}function Radians(a){return Math.abs(a%180)*Math.PI/180}function ActiveSize(a){var f=$(a),i=f.find("img"),j=f.offset(),e=Radians(a.data.rotation+a.data.extraRotation),h=Math.abs(Math.sin(e)),g=Math.abs(Math.cos(e)),d=i.width(),c=g*a.data.activeWidth+h*a.data.activeHeight,b=h*a.data.activeWidth+g*a.data.activeHeight;c=c>1?1:c;b=b>1?1:b;return{width:d*c+3,height:d*b+3}}function OnTouchFurnitureMove(a,b){a.preventDefault();if(a.touches&&b.get(0)==lastDown){a.touches.length==2&&OnFurnitureGesture(a,b);a.touches.length>=1&&MoveFurnitureWithSingleTouch(a,b)}}function OnFurnitureGesture(b){var c=b.scale*lastHover.data.gestureScaleStart,d=(lastHover.data.gestureRotationStart+b.rotation+360)%360,a=Math.max(.5,Math.min(1.5,c));$("#Scaler,#TouchScaler").slider("option","value",a-.5);SetScale(lastHover,a);SetIconRotation(lastHover,d)}(function(a){a.extend(a.support,{touch:"ontouchstart"in document});a.event.touchFix={beginTouch0:null,beginTouch1:null,beginScalingDistance:null,beginRotation:null,scale:1,rotation:0,touchesMoved:function(c){var b=a.event.touchFix;if(b.beginTouch0&&b.beginTouch1&&c.touches.length==2){b.scale=b.getScalingDistance(c.touches[0],c.touches[1])/b.beginScalingDistance;b.rotation=b.getRotationAngle(c.touches[0],c.touches[1])-b.beginRotation}},getScalingDistance:function(a,b){return Math.sqrt(Math.pow(a.pageX-b.pageX,2)+Math.pow(a.pageY-b.pageY,2))},getRotationAngle:function(a,b){var c=a.pageX-b.pageX,d=a.pageY-b.pageY;return Math.atan2(d,c)*180/Math.PI},touchesChanged:function(c){var b=a.event.touchFix;if(c.touches.length==2){b.beginTouch0=c.touches[0];b.beginTouch1=c.touches[1];b.beginScalingDistance=b.getScalingDistance(b.beginTouch0,b.beginTouch1);b.beginRotation=b.getRotationAngle(b.beginTouch0,b.beginTouch1)}else{b.beginTouch0=null;b.beginTouch1=null;b.beginScalingDistance=null;b.beginRotation=null;b.scale=1;b.rotation=0}},trackTouches:function(b){if(a.support.touch){b.bind("touchstart",this.touchesChanged);b.bind("touchmove",this.touchesMoved);b.bind("touchend",this.touchesChanged)}}};var b=a.event.props;b.push("touches");b.push("scale");b.push("rotation");a.event.props=b;var c=a.event.fix;a.event.fix=function(d){var b=c.call(this,d);b.rotation=a.event.touchFix.rotation;b.scale=a.event.touchFix.scale;return b};a(function(){a.event.touchFix.trackTouches(a(document))})})(jQuery);function log(a){$("#console").html(a+" "+$("#console").html())}function MoveFurnitureWithSingleTouch(b,a){var c=b.touches[0].pageX,d=b.touches[0].pageY;if(b.touches.length>1){var g=b.touches[1].pageX,h=b.touches[1].pageY,i=Math.sqrt(Math.pow(a.get(0).data.startX-c,2)+Math.pow(a.get(0).data.startY-d,2)),j=Math.sqrt(Math.pow(a.get(0).data.startX-g,2)+Math.pow(a.get(0).data.startY-h,2));if(j<i){c=g;d=h}}var e=c-a.get(0).data.startX,f=d-a.get(0).data.startY;if(Math.abs(e)>50||Math.abs(f)>50){e=0;f=0;lastHover.data.inDrag=false;lastDown=null}var k=a.position().left+e,l=a.position().top+f;MoveFurniture(a,k,l);a.get(0).data.startX=c;a.get(0).data.startY=d}function MoveFurniture(a,b,c){a.css("top",c+"px").css("left",b+"px")}function OnFurnitureFocus(b,a){lastHover=a.get(0);HighlightActiveIcon(a);ShowToolbox(b,a);$("#Scaler").slider("value",RangeToScaler(lastHover.data.scale))}function OnTouchFurnitureFocus(a,b){lastHover=b.get(0);HighlightActiveIcon(b);lastHover.data.startX=a.touches[0].pageX;lastHover.data.startY=a.touches[0].pageY;lastHover.data.gestureScaleStart=lastHover.data.scale!=null?lastHover.data.scale:1;lastHover.data.gestureRotationStart=lastHover.data.rotation!=null&&lastHover.data.extraRotation!=null?lastHover.data.rotation+lastHover.data.extraRotation:0;$("#TouchScaler").slider("value",RangeToScaler(lastHover.data.scale));a.touches.length==1&&ShowTouchToolbox(a,b)}function OnMultiTouchChange(a){docTouches=a.touches.length;if(lastHover!=null){lastHover.data.gestureScaleStart=lastHover.data.scale!=null?lastHover.data.scale:1;lastHover.data.gestureRotationStart=lastHover.data.rotation!=null&&lastHover.data.extraRotation!=null?lastHover.data.rotation+lastHover.data.extraRotation:0}}function HighlightActiveIcon(a){$(".ActiveFurniture").removeClass("ActiveFurniture");a.css("z-index",++zTop).addClass("ActiveFurniture")}function ShowTitle(a){if(!lastHover.data.inDrag){var b=a.offset().left+a.width()-$("#Application").offset().left+10;if(b>500)b-=a.width()+$("#TitleOfSelected").width()+30;var c=a.offset().top+60-$("#Application").offset().top;$("#Toolbox").clearQueue();$("#TitleOfSelected").clearQueue().css("top",c).css("left",b).show(0);SetTitle()}}function SetTitle(){if(lastHover===null||lastHover===undefined)return;var a=$(lastHover),d=a.attr("furntitle"),c=lastHover.data.scale,e=(a.attr("furnwidth")*c).toFixed(0),b=(a.attr("furndepth")*c).toFixed(0);$("#TitleOfSelected").html("<span class='Dimensions'>"+e+'" x '+b+'"</span>'+d);$("#TouchTitleOfSelected").html(d+" <span class='Dimensions'>"+e+'" x '+b+'"</span>')}function ShowTouchToolbox(){if(lastHover!=null){$("#TouchToolbox").clearQueue().show(0);$("#TouchTitleOfSelected").clearQueue().show(0);SetTitle()}}function ShowToolbox(d,a){if(!lastHover.data.inDrag){if(!a.hasClass("Prototype")){var b=a.offset().left+a.width()-$("#Application").offset().left+10;if(b>500)b-=a.width()+$("#TitleOfSelected").width()+30;var c=a.offset().top-$("#Application").offset().top;$("#Toolbox").clearQueue().css("top",c).css("left",b).css("display","block")}ShowTitle(a)}}function GetLinkToPlan(){var e=[],f=[],c=[],d=[],b=[];$(".Furniture").each(function(){var a=$(this);if(!a.hasClass("Prototype")&&a.is(":visible")){var k=a.position().left,l=a.position().top,g=a.get(0).data,i=g.rotation,j=g.scale,h=a.attr("furnguid");e.push(k);f.push(l);c.push(i);d.push(j);b.push(h)}});var a=$(document).url().attr("path"),h=$(document).url().attr("protocol")+"://"+$(document).url().attr("host")+(a?a:"/"),g=h+"?x="+e.join(",")+"&y="+f.join(",")+"&r="+c.join(",")+"&s="+d.join(",")+"&p="+b.join(",");return g}function RestoreArrangement(){var a=$(document).url();try{var g=a.param("x").split(","),h=a.param("y").split(","),e=a.param("r").split(","),d=a.param("p").split(","),f=a.param("s").split(",")}catch(i){return}for(index=0;index<d.length;index++){var c=$(".Prototype[furnguid="+d[index]+"]");if(c.length>0){var b=CloneFurniture(c);SetIconRotation(b.get(0),e[index]);MoveFurniture(b,g[index],h[index]);SetScale(b.get(0),f[index])}}}
