<style>.moreButt, .visModes, .activeContentMode, .presetCardSelector:hover,#contentBuild{background:#0A1E60 !important;}.moreButt, .visModes, .activeContentMode, .presetCardSelector:hover,#contentBuild{color:#fff !important;}</style>{"id":30,"date":"2022-01-19T16:34:18","date_gmt":"2022-01-19T16:34:18","guid":{"rendered":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/storage-calculator\/"},"modified":"2025-05-29T21:04:55","modified_gmt":"2025-05-29T21:04:55","slug":"storage-calculator","status":"publish","type":"page","link":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/storage-calculator\/","title":{"rendered":"Storage Calculator"},"content":{"rendered":"<h1>Storage Calculator<\/h1>\r\n  <link rel=\"stylesheet\" href=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/css\/calc_light_theme.css\">\r\n    <link rel=\"stylesheet\" href=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/css\/nice-select.css\">  \r\n  <link rel=\"stylesheet\" href=\"\/\/maxcdn.bootstrapcdn.com\/font-awesome\/4.3.0\/css\/font-awesome.min.css\">\r\n  <script src=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/js\/three.min.js\"><\/script>\r\n  <script src=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/js\/OBJLoader.js\"><\/script>\r\n  <script src=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/js\/OBJMTLLoader.js\"><\/script>\r\n  <script src=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/js\/physi.js\"><\/script>\r\n  <script src=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/js\/FirstPersonControls.js\"><\/script>\r\n  <script src=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/js\/Projector.js\"><\/script>\r\n\r\n  <script src=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/js\/MTLLoader.js\"><\/script>\r\n<!--  <script src=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/js\/OrbitControls.js\"><\/script>-->\r\n  <script src=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/js\/TrackballControls.js\"><\/script>\r\n \r\n\r\n<script>\r\n\r\nfunction webgl_detect() {\r\n    if (!!window.WebGLRenderingContext) {\r\n        var canvas = document.createElement(\"canvas\"),\r\n             names = [\"webgl\", \"experimental-webgl\", \"moz-webgl\"],\r\n                gl = false;\r\n \r\n        for(var i in names) {\r\n            try {\r\n                gl = canvas.getContext(names[i]);\r\n                if (gl && typeof gl.getParameter == \"function\") {\r\n                    \/* WebGL is enabled *\/\r\n                    \/* return true; *\/\r\n                    return names[i];\r\n                }\r\n            } catch(e) {}\r\n        }\r\n \r\n        \/* WebGL is supported, but disabled *\/\r\n        return false;\r\n    }\r\n \r\n    \/* WebGL not supported*\/\r\n    return false;\r\n}\r\n\r\nvar do_stats = 0;\r\n\r\n \tvar use_canvas = !(  webgl_detect() );\t\r\n\r\n\t\r\n\tnewPositions = [];\r\n\tif(use_canvas) {\r\n\t\tvar render_ss = false;\r\n\t\tvar render_aa = false;\r\n\t\tvar render_gr = false;\r\n\t\tvar render_tx = false;\r\n\t\tvar render_su = false;\r\n\t\t\r\n\t} else {\r\n\t\tvar render_ss = true;var render_aa = true;var render_gr = false;var render_tx = true;var render_su = true;\t}\r\n \tvar render_ma = true;var render_lp = true;\t\r\n<\/script>\r\n\r\n<div id=\"unitsContainer\" class=\"unitsContainer blockContainer\" style=\"display: block;\"> \r\n\r\n\r\n<div class=\"calcPage roundedCorners shade\">  \r\n\r\n        <!--<div id = \"v_itemChooserLocation\" class=\"oneHalfBut v_mode visModes activeVis\">\r\n        \r\n        <span>        <span class=\"breaker1\"><\/span>\r\n        <span class=\"breaker2\"><\/span><\/span>\r\n        <span class=\"breaker1\"><\/span>\r\n        <i class=\"fa fa-check-square-o\"><\/i><\/div> -->\r\n        \r\n        <div id = \"v_itemChooser\" class=\"oneHalfBut v_mode visModes activeVis\">\r\n        \r\n        <span>Add your items        <span class=\"breaker1\"><\/span>\r\n        <span class=\"breaker2\"><\/span><\/span>\r\n        <span class=\"breaker1\"><\/span>\r\n        <i class=\"fa fa-check-square-o\"><\/i><\/div>\r\n        \r\n        <div id = \"v_virtualUnit\" class=\"oneHalfBut v_mode visModes\">\r\n        <span>See your packed unit        <span class=\"breaker1\"><\/span>\r\n        <span class=\"breaker2\"><\/span><\/span>\r\n        <span class=\"breaker1\"><\/span>\r\n        <i class=\"fa fa-square-o\"><\/i><\/div>\r\n        \r\n        \r\n        \r\n<div class=\"calcContainer\">\r\n\r\n    <div class=\"infoTop\">\r\n    \r\n        <div class=\"moveMode addItem\">Add Items &amp; Calculate<\/div>\r\n        <div class=\"moveMode moveCamera\">Move Camera Position<\/div>\r\n        <div class=\"moveMode moveItem\">Move Selected Item<\/div>\r\n        <div class=\"clear\"><\/div>\r\n        <!--<div class = \"content_selector m_itemChooserLocation\"> \r\n          \r\n                \r\n        <\/div>          -->   \r\n        \r\n      \r\n        <div class = \"content_selector m_itemChooser\">\r\n            <div class=\"selector sel_boxes storage_calc_modal modal_a_item\">\r\n                                <style>\r\n                .nice-select.wide {\r\n                    width: 100%;\r\n                    display: none !important;\r\n                }\r\n                <\/style>\r\n                 <select id=\"mySelect\" class=\"wide\" style=\"display:none !important;\">\r\n                    <option value=\"163701\">Trois-Rivi\u00e8res (415 Rue Vachon)<\/option>                    <\/select>\r\n                \r\n                    <div class= \"stepTitle\" >1) Select the contents you would like to store (All item sizes in inches)<\/div><div class=\"presetSelectorContainer\"><div class = \"presetCardSelector activeContentMode\" id=\"select_preset\">Use preset contents<span class=\"breaker2\"><\/span><span class=\"breaker2\"><\/span><\/div><div class = \"presetCardSelector\" id=\"select_custom\"><span class=\"breaker2\"><\/span>Customize your stored items<\/div><\/div><div class = \"presetContainer\" ><div class=\"np_butt prevCats\"><i class=\"fa fa-chevron-left\"><\/i><\/div><div class=\"np_butt nextCats\"><i class=\"fa fa-chevron-right\"><\/i><\/div>\t<div class = \"presetContainerInner scroller_viewport\" ><div class = \"scroller_item presetCard\" id=\"pre_one_bedroom\"><div class = \"presetTitle\">One Bedroom<\/div><div class = \"presetTImg\"><img decoding=\"async\" width = 200 height =120 alt=\"Show One Bedroom\" src=\"  https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/images\/presetThumbs\/1bed.jpg\" \/><\/div><div class = \"presetDesc\">An average one bedroom house\/apt<\/div><\/div><div class = \"scroller_item presetCard\" id=\"pre_two_bedroom\"><div class = \"presetTitle\">Two Bedroom<\/div><div class = \"presetTImg\"><img decoding=\"async\" width = 200 height =120 alt=\"Show Two Bedroom\" src=\"  https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/images\/presetThumbs\/2bed.jpg\" \/><\/div><div class = \"presetDesc\">An average two bedroom house\/apt<\/div><\/div><div class = \"scroller_item presetCard\" id=\"pre_Three Bedrooms\"><div class = \"presetTitle\">Three Bedrooms<\/div><div class = \"presetTImg\"><img decoding=\"async\" width = 200 height =120 alt=\"Show Three Bedrooms\" src=\"  https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/images\/presetThumbs\/3bed.jpg\" \/><\/div><div class = \"presetDesc\">An average three bedroom house\/apt<\/div><\/div><div class = \"scroller_item presetCard\" id=\"pre_Four Bedrooms\"><div class = \"presetTitle\">Four Bedrooms<\/div><div class = \"presetTImg\"><img decoding=\"async\" width = 200 height =120 alt=\"Show Four Bedrooms\" src=\"  https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/images\/presetThumbs\/4bed.jpg\" \/><\/div><div class = \"presetDesc\">An average four bedroom house\/apt<\/div><\/div>\t<\/div><\/div><div class=\"catContainer customContent\"><div class=\"np_butt prevCats\"><i class=\"fa fa-chevron-left\"><\/i><\/div><div class=\"np_butt nextCats\"><i class=\"fa fa-chevron-right\"><\/i><\/div><div id=\"packingContents\"  class=\"scroller_viewport\"><div class=\"catDiv scroller_item\"><span id = \"catDiv_bedroom\" class = \"cat_lab\">Bedroom<span class = \"oc_ico\"><i class=\"fa fa-sort-desc\"><\/i><\/span><\/span><span class = \"catThumb\"><img decoding=\"async\" alt=\"Bedroom\" src=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/\/images\/presetThumbs\/bedroom.jpg\" \/><\/span><\/div><div class=\"catDiv scroller_item\"><span id = \"catDiv_living-room\" class = \"cat_lab\">Living Room<span class = \"oc_ico\"><i class=\"fa fa-sort-desc\"><\/i><\/span><\/span><span class = \"catThumb\"><img decoding=\"async\" alt=\"Living-room\" src=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/\/images\/presetThumbs\/living-room.jpg\" \/><\/span><\/div><div class=\"catDiv scroller_item\"><span id = \"catDiv_dining-room\" class = \"cat_lab\">Dining Room<span class = \"oc_ico\"><i class=\"fa fa-sort-desc\"><\/i><\/span><\/span><span class = \"catThumb\"><img decoding=\"async\" alt=\"Dining-room\" src=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/\/images\/presetThumbs\/dining-room.jpg\" \/><\/span><\/div><div class=\"catDiv scroller_item\"><span id = \"catDiv_study\" class = \"cat_lab\">Study<span class = \"oc_ico\"><i class=\"fa fa-sort-desc\"><\/i><\/span><\/span><span class = \"catThumb\"><img decoding=\"async\" alt=\"Study\" src=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/\/images\/presetThumbs\/study.jpg\" \/><\/span><\/div><div class=\"catDiv scroller_item\"><span id = \"catDiv_kitchen\" class = \"cat_lab\">Kitchen<span class = \"oc_ico\"><i class=\"fa fa-sort-desc\"><\/i><\/span><\/span><span class = \"catThumb\"><img decoding=\"async\" alt=\"Kitchen\" src=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/\/images\/presetThumbs\/kitchen.jpg\" \/><\/span><\/div><div class=\"catDiv scroller_item\"><span id = \"catDiv_garage\" class = \"cat_lab\">Garage<span class = \"oc_ico\"><i class=\"fa fa-sort-desc\"><\/i><\/span><\/span><span class = \"catThumb\"><img decoding=\"async\" alt=\"Garage\" src=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/\/images\/presetThumbs\/garage.jpg\" \/><\/span><\/div><div class=\"catDiv scroller_item\"><span id = \"catDiv_misc\" class = \"cat_lab\">Misc<span class = \"oc_ico\"><i class=\"fa fa-sort-desc\"><\/i><\/span><\/span><span class = \"catThumb\"><img decoding=\"async\" alt=\"Misc\" src=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/\/images\/presetThumbs\/misc.jpg\" \/><\/span><\/div>           <\/div>\r\n    <\/div>\r\n           \r\n           \r\n           \r\n<div class=\"catDivItems catItems_bedroom\"><div class=\"catDivTitle\">Bedroom<\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">32in TV (18.5x29.2x5.7)<\/span><input type=\"number\" tabindex = \"1\" id=\"objRef_bedroom_0\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Armoire (69.6x28.9x21.6)<\/span><input type=\"number\" tabindex = \"2\" id=\"objRef_bedroom_1\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Chest (19.4x37.5x20.1)<\/span><input type=\"number\" tabindex = \"3\" id=\"objRef_bedroom_2\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Drawers (28.75x31.0x16.25)<\/span><input type=\"number\" tabindex = \"4\" id=\"objRef_bedroom_3\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Dresser with Mirror (75.3x61.3x18.8)<\/span><input type=\"number\" tabindex = \"5\" id=\"objRef_bedroom_4\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">End Table (29.1x16x12)<\/span><input type=\"number\" tabindex = \"6\" id=\"objRef_bedroom_5\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Full Bed (75.7x55.1x39.6)<\/span><input type=\"number\" tabindex = \"7\" id=\"objRef_bedroom_6\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">King Bed (81.2x77.0x40.2)<\/span><input type=\"number\" tabindex = \"8\" id=\"objRef_bedroom_7\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Night Stand (23.6x15.75x12.2)<\/span><input type=\"number\" tabindex = \"9\" id=\"objRef_bedroom_8\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Queen Bed (81.1x60.9x37.1)<\/span><input type=\"number\" tabindex = \"10\" id=\"objRef_bedroom_9\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Twin Bed (75.4x39.7x27.3)<\/span><input type=\"number\" tabindex = \"11\" id=\"objRef_bedroom_10\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Wardrobe (71.2x29.1x22.3)<\/span><input type=\"number\" tabindex = \"12\" id=\"objRef_bedroom_11\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><\/div><div class=\"catDivItems catItems_living-room\"><div class=\"catDivTitle\">Living Room<\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">32in TV (18.5x29.2x5.7)<\/span><input type=\"number\" tabindex = \"13\" id=\"objRef_living-room_0\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">55in TV (23.9x31.7x9.4)<\/span><input type=\"number\" tabindex = \"14\" id=\"objRef_living-room_1\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Air Conditioner (13.2x23x12.8)<\/span><input type=\"number\" tabindex = \"15\" id=\"objRef_living-room_2\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Armchair (35x32x32)<\/span><input type=\"number\" tabindex = \"16\" id=\"objRef_living-room_3\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Armoire (69.6x28.9x21.6)<\/span><input type=\"number\" tabindex = \"17\" id=\"objRef_living-room_4\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Bookcase (47.5x25x9.5)<\/span><input type=\"number\" tabindex = \"18\" id=\"objRef_living-room_5\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Chest (19.4x37.5x20.1)<\/span><input type=\"number\" tabindex = \"19\" id=\"objRef_living-room_6\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Coffee Table (16.9x35x19.5)<\/span><input type=\"number\" tabindex = \"20\" id=\"objRef_living-room_7\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">DVD Player (2.0x10.0x9.0)<\/span><input type=\"number\" tabindex = \"21\" id=\"objRef_living-room_8\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">End Table (29.1x16x12)<\/span><input type=\"number\" tabindex = \"22\" id=\"objRef_living-room_9\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Floor Lamp (69.5x24.1x24.1)<\/span><input type=\"number\" tabindex = \"23\" id=\"objRef_living-room_10\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Floor Speakers Pair (37.6x28.4x13.5)<\/span><input type=\"number\" tabindex = \"24\" id=\"objRef_living-room_11\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Game Console (2.2x12x10.8)<\/span><input type=\"number\" tabindex = \"25\" id=\"objRef_living-room_12\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Love Seat (35x59x33.1)<\/span><input type=\"number\" tabindex = \"26\" id=\"objRef_living-room_13\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Love Seat (59x35x33.1)<\/span><input type=\"number\" tabindex = \"27\" id=\"objRef_living-room_14\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">ottoman (16.1x29x19)<\/span><input type=\"number\" tabindex = \"28\" id=\"objRef_living-room_15\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">piano (48.2x60.1x24.1)<\/span><input type=\"number\" tabindex = \"29\" id=\"objRef_living-room_16\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">recliner (38.7x37.3x35.8)<\/span><input type=\"number\" tabindex = \"30\" id=\"objRef_living-room_17\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">sofa (32.8x73.3x31.9)<\/span><input type=\"number\" tabindex = \"31\" id=\"objRef_living-room_18\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">stereo (13.7x12.1x9.3)<\/span><input type=\"number\" tabindex = \"32\" id=\"objRef_living-room_19\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">TV Stand (21.25x60.88x15.63)<\/span><input type=\"number\" tabindex = \"33\" id=\"objRef_living-room_20\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><\/div><div class=\"catDivItems catItems_dining-room\"><div class=\"catDivTitle\">Dining Room<\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Buffet Table (32.2x47.6x18.2)<\/span><input type=\"number\" tabindex = \"34\" id=\"objRef_dining-room_0\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">China Cabinet (50x36.5x16)<\/span><input type=\"number\" tabindex = \"35\" id=\"objRef_dining-room_1\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Dining chairs pair (35.4x17.3x19.3)<\/span><input type=\"number\" tabindex = \"36\" id=\"objRef_dining-room_2\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Dining Set (35.7x45.6x34.5)<\/span><input type=\"number\" tabindex = \"37\" id=\"objRef_dining-room_3\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><\/div><div class=\"catDivItems catItems_study\"><div class=\"catDivTitle\">Study<\/div><div class=\"catInputContainer\"><span class=\"itemLabel\"> 32in monitor (18.5x29.2x5.7)<\/span><input type=\"number\" tabindex = \"38\" id=\"objRef_study_0\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Bookcase (47.5x25x9.5)<\/span><input type=\"number\" tabindex = \"39\" id=\"objRef_study_1\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Desk (30x47x18.7)<\/span><input type=\"number\" tabindex = \"40\" id=\"objRef_study_2\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Drawers (28.75x31.0x16.25)<\/span><input type=\"number\" tabindex = \"41\" id=\"objRef_study_3\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">File Cabinet (Large) (50.8x15.8x17.3)<\/span><input type=\"number\" tabindex = \"42\" id=\"objRef_study_4\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">File Cabinet (Small) (26x15.56x16)<\/span><input type=\"number\" tabindex = \"43\" id=\"objRef_study_5\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Office Chair (39.0x20.0x19.0)<\/span><input type=\"number\" tabindex = \"44\" id=\"objRef_study_6\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">pc (12.3x6.6x15)<\/span><input type=\"number\" tabindex = \"45\" id=\"objRef_study_7\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><\/div><div class=\"catDivItems catItems_kitchen\"><div class=\"catDivTitle\">Kitchen<\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Bar Stool (30.8x25.4x25.13)<\/span><input type=\"number\" tabindex = \"46\" id=\"objRef_kitchen_0\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Kitchen Table (35.75x38x38)<\/span><input type=\"number\" tabindex = \"47\" id=\"objRef_kitchen_1\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Large Fridge (72x36x36)<\/span><input type=\"number\" tabindex = \"48\" id=\"objRef_kitchen_2\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">microwave (12.8x21.8x11.8)<\/span><input type=\"number\" tabindex = \"49\" id=\"objRef_kitchen_3\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Small Fridge (68x25x29)<\/span><input type=\"number\" tabindex = \"50\" id=\"objRef_kitchen_4\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Stove (48x32x32)<\/span><input type=\"number\" tabindex = \"51\" id=\"objRef_kitchen_5\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><\/div><div class=\"catDivItems catItems_garage\"><div class=\"catDivTitle\">Garage<\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Mountain Bike (42x22x70)<\/span><input type=\"number\" tabindex = \"52\" id=\"objRef_garage_0\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Road Bike (40x18x68)<\/span><input type=\"number\" tabindex = \"53\" id=\"objRef_garage_1\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Dryer (38.7x27.5x33.5)<\/span><input type=\"number\" tabindex = \"54\" id=\"objRef_garage_2\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Freezer (42.1x36x27.5)<\/span><input type=\"number\" tabindex = \"55\" id=\"objRef_garage_3\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Generator (15.4x24.5x18.5)<\/span><input type=\"number\" tabindex = \"56\" id=\"objRef_garage_4\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Ladder (47x18x4)<\/span><input type=\"number\" tabindex = \"57\" id=\"objRef_garage_5\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Lawnmower (41x22x61)<\/span><input type=\"number\" tabindex = \"58\" id=\"objRef_garage_6\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Tool Box (31.25x28.1x19.2)<\/span><input type=\"number\" tabindex = \"59\" id=\"objRef_garage_7\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Washer (38.7x27.5x33.5)<\/span><input type=\"number\" tabindex = \"60\" id=\"objRef_garage_8\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><\/div><div class=\"catDivItems catItems_misc\"><div class=\"catDivTitle\">Misc<\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Box Large (18.0x18.0x24.0)<\/span><input type=\"number\" tabindex = \"61\" id=\"objRef_misc_0\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Box Medium (18.0x18.0x16.0)<\/span><input type=\"number\" tabindex = \"62\" id=\"objRef_misc_1\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Box Small (12.5x12.5x16.0)<\/span><input type=\"number\" tabindex = \"63\" id=\"objRef_misc_2\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Floor Fan (22.5x22.5x5.4)<\/span><input type=\"number\" tabindex = \"64\" id=\"objRef_misc_3\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Patio Chair Pair (49.5x24.0x23.2)<\/span><input type=\"number\" tabindex = \"65\" id=\"objRef_misc_4\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Patio Lounger (44.5x9.2x23.8)<\/span><input type=\"number\" tabindex = \"66\" id=\"objRef_misc_5\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Patio Set (33.9x48.1x56.8)<\/span><input type=\"number\" tabindex = \"67\" id=\"objRef_misc_6\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Suitcase (29.8x18.4x11.1)<\/span><input type=\"number\" tabindex = \"68\" id=\"objRef_misc_7\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><div class=\"catInputContainer\"><span class=\"itemLabel\">Treadmill (54x23x18.5)<\/span><input type=\"number\" tabindex = \"69\" id=\"objRef_misc_8\" class=\"content_obj itemsSelect\" min = \"0\"  max=\"100\" style=\"color:#000; !important;\"> <br><\/div><\/div> \r\n            \r\n           <div class=\"submit_details customContent\">\r\n           \r\n          <!--  <div class= \"resTitle xtraPad\" >Then calculate the size...<\/div> -->\r\n             \r\n             <!-- <div class = \"fillPercIndi\">\r\n              How Full?\r\n              <\/div>\r\n              \r\n              <div class = \"submit_divIndi\">\r\n              Find Size\r\n              <\/div>\r\n              \r\n              <div class = \"res_divIndi\">\r\n              Recommended Size\r\n              <\/div>\r\n              \r\n              <div class = \"clear\"><\/div>\r\n              \r\n                     \r\n             \r\n              <div class = \"fillPercIndiLine\">\r\n\r\n              <\/div>\r\n              \r\n              <div class = \"submit_divIndiLine\">\r\n\r\n              <\/div>\r\n              \r\n              <div class = \"res_divIndiLine\">\r\n\r\n              <\/div>\r\n              \r\n              <div class = \"clear\"><\/div> -->\r\n              \r\n              \r\n             \r\n             \r\n             \r\n                <div class = \"fillPerc\">\r\n                    <span class=\"itemLabel\">How full should the unit be?<\/span>\r\n                    <select id=\"fillPercent\" class=\"content_obj\">\r\n                        <option value=\"none\" >NO item stacking (Reduced accuracy but no items will hover)<\/option>\r\n                        <option value=\"preset\" >SOME item stacking (Medium accuracy)<\/option>\r\n                        <option value=\"full\" >FULL item stacking (Best accuracy but some objects may hover)<\/option>\r\n                    <\/select>\r\n                <\/div>\r\n                \r\n                <div class = \"submit_div\">\r\n                    <div class=\"clear\" id=\"contentBuild\">Calculate<\/div>\r\n                <\/div>\r\n                \r\n               <div class = \"reset_div\">\r\n                     <div class=\"clear\" id=\"resetBuild\">Reset<\/div>\r\n                <\/div> \r\n                \r\n                <div class = \"res_div\">\r\n                \t<div class=\"mainResult\"> = \r\n                    <span class=\"containerUnitName unknownRes\">???<\/span>\r\n                    <\/div>\r\n                <\/div>\r\n                \r\n            <\/div>\r\n            \r\n            \r\n        <\/div>\r\n        \r\n        <div class = \"packErrorDisplay\"><\/div>\r\n     \r\n    <\/div>\r\n    \r\n    \r\n    <\/div>\r\n    \r\n    <div class = \"stepTitle xtraPad m_virtualUnit\">\r\n       Here is your packed unit <span class=\"presetIndicator\"> <span class = \"virtualPreset\"><\/span><\/span>\r\n    <\/div>\r\n        \r\n    <div class=\"renderDiv m_virtualUnit\">\r\n    \r\n\t    <div class=\"containerContents  m_virtualUnit\">\r\n        \t<span class=\"unitCardDet\">Selected Item:<\/span><span class=\"containerContentsIns cal_highlight\">None<\/span>\r\n        \t<span class=\"unitCardDet\">Volume:<\/span><span class=\"containerContentsVol cal_highlight\"> -- <\/span>\r\n            <span class=\"unitCardDet\">Size:<\/span><span class=\"containerContentsSize cal_highlight\"> -- <\/span>\r\n        <\/div>\r\n        \r\n        <div id=\"mod_fps\"><\/div>\r\n         <div id=\"load_scrim\"><img decoding=\"async\" src=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/\/images\/loader2.gif\" alt=\"loading\" \/><br \/>Please wait... Loading<\/div> \r\n        \r\n        \r\n        <div class=\"containerUnitTitle hud_unitsize\">\r\n        \tSHOWING UNIT SIZE        \t<div class=\"containerUnitName\"><\/div>\r\n        <\/div>\r\n        \r\n        <\/div>\r\n    <\/div>\r\n    \r\n   <div class=\"settingsContainer m_virtualUnit\">\r\n        <div class=\"dPadTitle resetView\">Reset View<\/div>\r\n        <div class=\"dPadTitle orbitView\">Orbit View<\/div>\r\n        <div class=\"oc_setting_details\">\r\n        3D Settings <span class = \"oc_ico\"><i class=\"fa fa-sort-desc\"><\/i><\/span>\r\n        <\/div>\r\n        \r\n        <div class=\"setting_details\">\r\n        \r\n                                \r\n            <div class=\"detWrap\"><div class=\"settingCont s_ma\">\r\n                <input class=\"setting_input\" id= \"r_ma\" name = \"ma\" type = \"checkbox\"   \/>\r\n               <span class=\"settingLabel\">Rules\/Markers<\/span>\r\n            <\/div><\/div>\r\n            \r\n            <div class=\"detWrap\"><div class=\"settingCont s_ss\">\r\n                <input class=\"setting_input\" id= \"r_ss\"  name = \"ss\" type = \"checkbox\"   \/>\r\n               <span class=\"settingLabel\">Shadow<\/span>\r\n            <\/div><\/div>\r\n            \r\n            <div class=\"detWrap\"><div class=\"settingCont s_su\">\r\n                <input class=\"setting_input\" id= \"r_su\"  name = \"su\" type = \"checkbox\"   \/>\r\n               <span class=\"settingLabel\">Effects<\/span>\r\n            <\/div><\/div>\r\n            \r\n             <div class=\"detWrap\"><div class=\"settingCont s_gr\">\r\n                <input class=\"setting_input\" id= \"r_gr\"  name = \"gr\" type = \"checkbox\"   \/>\r\n               <span class=\"settingLabel\">Gravity<\/span>\r\n            <\/div><\/div>\r\n            \r\n            <div class=\"detWrap\"><div class=\"settingCont s_aa\">\r\n                <input class=\"setting_input\" id= \"r_aa\"  name = \"aa\" type = \"checkbox\"   \/>\r\n               <span class=\"settingLabel\">Antialias<\/span>\r\n            <\/div><\/div>\r\n            \r\n            <div class=\"detWrap\"><div class=\"settingCont s_tx\">\r\n                <input class=\"setting_input\" id= \"r_tx\"  name = \"tx\" type = \"checkbox\"  \/>\r\n               <span class=\"settingLabel\">Textures<\/span>\r\n            <\/div><\/div>\r\n            \r\n            <div class=\"detWrap\"><div class=\"settingCont s_lp\">\r\n                <input class=\"setting_input\" id= \"r_lp\"  name = \"lp\" type = \"checkbox\"  \/>\r\n               <span class=\"settingLabel\">3D Models<\/span>\r\n            <\/div><\/div>\r\n            \r\n            <div class=\"settingSubmit\">\r\n               Change Settings\r\n            <\/div>\r\n          \r\n        <\/div>\r\n    <\/div> \r\n    \r\n    <div class=\"UnitDetails \"> \r\n\t\t<div class = \"recommendedUnitDiv  m_virtualUnit\">\r\n            <span  class=\"resTitle\" > Recommended Unit:<\/span >\r\n            <span  class=\"resTitle containerUnitName cal_highlight cal_Result\" >None<\/span >\r\n            <input id=\"volume-url\" name=\"volume-url\" type=\"hidden\" value=\"\" \/>\r\n            \t\t\t\t\t\t<a class=\"update_url\" href=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/rent-storage?max_size=99999&min_size=0\"><span  class=\"moreButt\" >See available sizes<\/span ><\/a> \r\n\t\t\t\t\t            <span class = \"unitDetsToggle\" >Show Info<span class=\"oc_ico\"><i class=\"fa fa-sort-desc\"><\/i><\/span><\/span>\r\n            \r\n            <span class = \"unitDets\" >\r\n            <span class=\"detWrap\"><span class=\"unitCardDet\">Unit Size:<\/span><span class=\"containerUnitSize cal_highlight\"> -- <\/span><\/span>\r\n            <span class=\"detWrap\"><span class=\"unitCardDet\">Unit Volume:<\/span><span class=\"containerUnitVol cal_highlight\"> -- <\/span><\/span>\r\n            <span class=\"detWrap\"><span class=\"unitCardDet\">Used Space:<\/span><span class=\"containerUsedSpace cal_highlight\"> -- <\/span><\/span>\r\n            <span class=\"detWrap\"><span class=\"unitCardDet\">Items Packed:<\/span><span class=\"containerItemsPacked cal_highlight\"> -- <\/span><\/span>\r\n            <\/span>\r\n         <\/div>\r\n         \r\n         <div class = \"unitsDiv m_recommended\"> \r\n                           <div class = \"stepTitle xtraPad incUnits\">\r\n                   Here are our available units <span class=\"containerUnitName\"><\/span> and larger\r\n                 <\/div>\r\n                         <\/div>  \r\n   \t<\/div>\r\n    \r\n<\/div>\r\n<\/div>\r\n\r\n<div class=\"caveats\">\r\n    Storage calculator is for conceptual purposes only. Unit and item sizes are approximate and may vary. Item dimensions are based on common sizes and may vary. Powered by <a href = \"https:\/\/www.clickandstor.com\/\" target = \"_blank\" >ClickandStor&reg;<\/a>\r\n<\/div>\r\n    \r\n<\/div>\r\n\r\n<script src =\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/\/js\/CanvasRenderer.js\"><\/script>\r\n<script>\r\n    if (!window.$){ window.$ = jQuery.noConflict(); }\r\n\r\n\tfunction calc3DloadCalculationsRequest(ajaxData, funcData){\r\n      funcData = funcData && (typeof funcData == 'object' || typeof funcData == 'array') ? funcData : [];\r\n      \r\n      jQuery.ajax({\r\n         type: 'POST',\r\n         url: \"https:\\\/\\\/www.beta-pinnacle.com\\\/live-pinnacle\\\/wp-admin\\\/admin-ajax.php\",\r\n         data: {\r\n            action: 'calc_3dcalculations', \/\/ PHP function from candee.php\r\n            ajax_data: ajaxData,\r\n         },\r\n         success: function(data){\r\n            if (funcData['build'] && typeof funcData['build'] == 'function'){ funcData['build'](data); }\r\n         },\r\n         fail: function(data){ \/\/ Empty element and show warning if failed\r\n            console.log('fail');\r\n            console.log(data);\r\n            if (funcData['fail'] && typeof funcData['fail'] == 'function'){ funcData['fail'](data); }\r\n         }\r\n     });\r\n   }\r\n\r\n    \/\/ Set jQuery as '$' if noConflict is activated to prevent incompatibility issues\r\n\tPhysijs.scripts.worker = \"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/\/js\/physijs_worker.js\";\r\n\tPhysijs.scripts.ammo = 'ammo.js';\r\n\t\r\n\t        m_path = \"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/models\/\";\r\n    \t\t\r\n\tvar uW, \r\n\t\tuL , \r\n\t\tuH;\t\r\n\r\n\tvar container, \r\n\t\tstats;\r\n\r\n\tvar camera, \r\n\t\torbitcamera, \r\n\t\tscene, \r\n\t\trenderer, \r\n\t\tmanager, \r\n\t\tdirectionalLight, \r\n\t\tcontrols = [] , \r\n\t\tunitContent, \r\n\t\tob3d = [], \r\n\t\tdropList = [], \r\n\t\tob3dCt = 0, \r\n\t\ttargetPosition={},_vY;\r\n\t\r\n\tvar cameraCube, sceneCube;\r\n\t\r\n\tvar itemsToPack = [], packing = [], loadOrder=[];\r\n\tvar unit_data = [];\r\n\t\tunit_data.dcWidth = 10;\r\n\t\tunit_data.dcLength = 10;\r\n\t\tunit_data.dcHeight = 8;\r\n\t\r\n\tvar preset = 'empty';\r\n\t\r\n\tvar mouseX = 0, \r\n\t\tmouseY = 0, \r\n\t\torbit = true, \r\n\t\tdpad=false, \r\n\t\tcanMoveCam = false;\r\n\r\n\r\n\tvar canvasPrevWidth = 0;\r\n\tvar aspectRatio = [];\t\r\n\taspectRatio.x = $('body').width(); aspectRatio.y = (9*aspectRatio.x\/16);\r\n\tvar canvasWidth = $('.calcContainer').innerWidth();\r\n\tvar canvasHeight =  parseInt(canvasWidth * ( aspectRatio.y\/aspectRatio.x) ) - 60;\r\n\tvar windowHalfX = canvasWidth \/ 2;\r\n\tvar windowHalfY = canvasHeight \/ 2;\r\n\t\r\n\tvar firstRun = true;\r\n\t\r\n\tvar item_count = 0;\r\n\tvar offset = [];\r\n\tvar itemDrop = 0;\r\n\tvar hasDropped = false;\r\n\tvar thisDrop = 0;\r\n\tvar dropItem = 0;\r\n\tvar isPaused = false;\r\n\tvar drop_newYpos = 0;\r\n\tvar canDoDrop = false;\r\n\tvar dropObj\r\n\r\n\tvar\tlookInterval = 100;\r\n\tvar\tlookspeed = .7;\r\n\tvar camStartX=0, camStartY=0, camStartZ=0;\r\n\r\n\tvar  contentVisible = true;\r\n\t\r\n\tvar _calcModal = \"a_item\";\r\n\t\r\n\tvar volume = 0;\r\n\t\r\n\tvar waiting = false;\r\n\t\r\n\tvar applyForce, \r\n\t\tsetMousePosition, \r\n\t\tmouse_position, \r\n\t\tprojector;\r\n\r\n\tvar selected_block = null, \r\n\t\tintersect_plane, \r\n\t\tmouse_position = new THREE.Vector3, \r\n\t\tblock_offset = new THREE.Vector3, \r\n\t\t_i, \r\n\t\t_v3 = new THREE.Vector3, \r\n\t\tselectBox,\r\n\t\tcameraTargetBox;\r\n\t\r\n\tvar mouse = new THREE.Vector2();\r\n\t\r\n\tvar scale_mult = 12, \r\n\t\tbaseMult = 20;\r\n\t\r\n\tvar clock = new THREE.Clock();\r\n\t\r\n\tvar fps, fps_timer,fps_lap_end = 0;\r\n    var mMult = 1;\r\n\tvar presetsTemp  = '{\"empty\":[],\"one_bedroom\":{\"img\":\"1bed.jpg\",\"desc\":\"An average one bedroom house\\\/apt\",\"contents\":[\"bedroom.King-Bed.4.size81.2x77.0x40.2x0x1x0u.obj\",\"bedroom.Drawers.6.size28.75x31.0x16.25x0x1x0.obj\",\"bedroom.Night-Stand.7.size23.6x15.75x12.2x0x1x0.obj\",\"living-room.Love-Seat.6.size35x59x33.1x0x1x0.obj\",\"living-room.Armoire.size69.6x28.9x21.6x0x1x0u.obj\",\"living-room.End-Table.size29.1x16x12x0x1x0.obj\",\"living-room.Floor-Speakers-(pair).size37.6x28.4x13.5x0x1x0.obj\",\"living-room.Coffee-Table.size16.9x35x19.5x0x1x0.obj\",\"study.Desk.1.size30x47x18.7x0x1x0.obj\",\"study.Office-Chair.2.size39.0x20.0x19.0x0x1x0u.obj\",\"living-room.Air-Conditioner.40.size13.2x23x12.8x0x1x0.obj\",\"dining-room.Dining-Set.1.size35.7x45.6x34.5x0x1x0.obj\",\"misc.Treadmill.9.size54x23x18.5x0x1x0u.obj\",\"living-room.Air-Conditioner.40.size13.2x23x12.8x0x1x0.obj\",\"living-room.Air-Conditioner.40.size13.2x23x12.8x0x1x0.obj\",\"living-room.Air-Conditioner.40.size13.2x23x12.8x0x1x0.obj\"]},\"two_bedroom\":{\"img\":\"2bed.jpg\",\"desc\":\"An average two bedroom house\\\/apt\",\"contents\":[\"bedroom.King-Bed.4.size81.2x77.0x40.2x0x1x0u.obj\",\"bedroom.Drawers.6.size28.75x31.0x16.25x0x1x0.obj\",\"bedroom.Night-Stand.7.size23.6x15.75x12.2x0x1x0.obj\",\"living-room.Love-Seat.6.size35x59x33.1x0x1x0.obj\",\"living-room.Armoire.size69.6x28.9x21.6x0x1x0u.obj\",\"living-room.End-Table.size29.1x16x12x0x1x0.obj\",\"living-room.Armchair.4.size35x32x32x0x1x0.obj\",\"living-room.Floor-Speakers-(pair).size37.6x28.4x13.5x0x1x0.obj\",\"misc.Box-(Small).size12.5x12.5x16.0x1x1x1.obj\",\"misc.Box-(Small).size12.5x12.5x16.0x1x1x1.obj\",\"misc.Box-(Small).size12.5x12.5x16.0x1x1x1.obj\",\"misc.Box-(Small).size12.5x12.5x16.0x1x1x1.obj\",\"study.Desk.1.size30x47x18.7x0x1x0.obj\",\"study.Desk.1.size30x47x18.7x0x1x0.obj\",\"study.Office-Chair.2.size39.0x20.0x19.0x0x1x0u.obj\",\"dining-room.Dining-Set.1.size35.7x45.6x34.5x0x1x0.obj\",\"misc.Treadmill.9.size54x23x18.5x0x1x0u.obj\",\"living-room.Air-Conditioner.40.size13.2x23x12.8x0x1x0.obj\"]},\"Three Bedrooms\":{\"img\":\"3bed.jpg\",\"desc\":\"An average three bedroom house\\\/apt\",\"contents\":[\"bedroom.King-Bed.4.size81.2x77.0x40.2x0x1x0u.obj\",\"bedroom.Dresser-with-Mirror.size75.3x61.3x18.8x0x1x0u.obj\",\"bedroom.Full-Bed.2.size75.7x55.1x39.6x0x1x0u.obj\",\"living-room.Love-Seat.6.size35x59x33.1x0x1x0.obj\",\"living-room.Armoire.size69.6x28.9x21.6x0x1x0u.obj\",\"living-room.Floor-Speakers-(pair).size37.6x28.4x13.5x0x1x0.obj\",\"living-room.Armchair.4.size35x32x32x0x1x0.obj\",\"study.Desk.1.size30x47x18.7x0x1x0.obj\",\"study.Desk.1.size30x47x18.7x0x1x0.obj\",\"study.Office-Chair.2.size39.0x20.0x19.0x0x1x0u.obj\",\"dining-room.Dining-Set.1.size35.7x45.6x34.5x0x1x0.obj\",\"dining-room.China-Cabinet.size50x36.5x16x0x1x0.obj\",\"garage.Washer.size38.7x27.5x33.5x0x1x0.obj\",\"garage.Dryer.size38.7x27.5x33.5x0x1x0.obj\",\"kitchen.Small-Fridge.size68x25x29x0x1x0.obj\",\"kitchen.Stove.1.size48x32x32x0x1x0.obj\"]},\"Four Bedrooms\":{\"img\":\"4bed.jpg\",\"desc\":\"An average four bedroom house\\\/apt\",\"contents\":[\"bedroom.King-Bed.4.size81.2x77.0x40.2x0x1x0u.obj\",\"bedroom.Dresser-with-Mirror.size75.3x61.3x18.8x0x1x0u.obj\",\"bedroom.Full-Bed.2.size75.7x55.1x39.6x0x1x0u.obj\",\"bedroom.Full-Bed.2.size75.7x55.1x39.6x0x1x0u.obj\",\"bedroom.Full-Bed.2.size75.7x55.1x39.6x0x1x0u.obj\",\"living-room.Love-Seat.6.size35x59x33.1x0x1x0.obj\",\"living-room.Armoire.size69.6x28.9x21.6x0x1x0u.obj\",\"living-room.Floor-Speakers-(pair).size37.6x28.4x13.5x0x1x0.obj\",\"living-room.Piano.41.size48.2x60.1x24.1x0x1x0u.obj\",\"living-room.Armchair.4.size35x32x32x0x1x0.obj\",\"living-room.Armchair.4.size35x32x32x0x1x0.obj\",\"living-room.Floor-Lamp.size69.5x24.1x24.1x0x1x0u.obj\",\"study.Desk.1.size30x47x18.7x0x1x0.obj\",\"study.Desk.1.size30x47x18.7x0x1x0.obj\",\"study.Desk.1.size30x47x18.7x0x1x0.obj\",\"study.Office-Chair.2.size39.0x20.0x19.0x0x1x0u.obj\",\"study.File-Cabinet-(large).size50.8x15.8x17.3x0x1x0.obj\",\"dining-room.Dining-Set.1.size35.7x45.6x34.5x0x1x0.obj\",\"dining-room.Dining-Set.1.size35.7x45.6x34.5x0x1x0.obj\",\"dining-room.Dining-Set.1.size35.7x45.6x34.5x0x1x0.obj\",\"dining-room.China-Cabinet.size50x36.5x16x0x1x0.obj\",\"garage.Washer.size38.7x27.5x33.5x0x1x0.obj\",\"garage.Dryer.size38.7x27.5x33.5x0x1x0.obj\",\"kitchen.Small-Fridge.size68x25x29x0x1x0.obj\",\"kitchen.Stove.1.size48x32x32x0x1x0.obj\"]}}';var objXrefTemp  = '{\"bedroom\":[{\"category\":\"bedroom\",\"name\":\"32in-TV\",\"order\":\"5\",\"obj\":\"bedroom.32in-TV.5.size18.5x29.2x5.7x0x1x0.obj\",\"mtl\":\"bedroom.32in-TV.5.size18.5x29.2x5.7x0x1x0.mtl\",\"len_x\":\"18.5\",\"len_y\":\"29.2\",\"len_z\":\"5.7\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":3079.14,\"niceName\":\"32in TV (18.5x29.2x5.7)\"},{\"category\":\"bedroom\",\"name\":\"Armoire\",\"order\":33,\"obj\":\"bedroom.Armoire.size69.6x28.9x21.6x0x1x0u.obj\",\"mtl\":\"bedroom.Armoire.size69.6x28.9x21.6x0x1x0u.mtl\",\"len_x\":\"69.6\",\"len_y\":\"28.9\",\"len_z\":\"21.6\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":43447.104,\"niceName\":\"Armoire (69.6x28.9x21.6)\"},{\"category\":\"bedroom\",\"name\":\"Chest\",\"order\":33,\"obj\":\"bedroom.Chest.size19.4x37.5x20.1x0x1x0.obj\",\"mtl\":\"bedroom.Chest.size19.4x37.5x20.1x0x1x0.mtl\",\"len_x\":\"19.4\",\"len_y\":\"37.5\",\"len_z\":\"20.1\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":14622.750000000002,\"niceName\":\"Chest (19.4x37.5x20.1)\"},{\"category\":\"bedroom\",\"name\":\"Drawers\",\"order\":\"6\",\"obj\":\"bedroom.Drawers.6.size28.75x31.0x16.25x0x1x0.obj\",\"mtl\":\"bedroom.Drawers.6.size28.75x31.0x16.25x0x1x0.mtl\",\"len_x\":\"28.75\",\"len_y\":\"31.0\",\"len_z\":\"16.25\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":14482.8125,\"niceName\":\"Drawers (28.75x31.0x16.25)\"},{\"category\":\"bedroom\",\"name\":\"Dresser-with-Mirror\",\"order\":33,\"obj\":\"bedroom.Dresser-with-Mirror.size75.3x61.3x18.8x0x1x0u.obj\",\"mtl\":\"bedroom.Dresser-with-Mirror.size75.3x61.3x18.8x0x1x0u.mtl\",\"len_x\":\"75.3\",\"len_y\":\"61.3\",\"len_z\":\"18.8\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":86778.73199999999,\"niceName\":\"Dresser with Mirror (75.3x61.3x18.8)\"},{\"category\":\"bedroom\",\"name\":\"End-Table\",\"order\":33,\"obj\":\"bedroom.End-Table.size29.1x16x12x0x1x0.obj\",\"mtl\":\"bedroom.End-Table.size29.1x16x12x0x1x0.mtl\",\"len_x\":\"29.1\",\"len_y\":\"16\",\"len_z\":\"12\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":5587.200000000001,\"niceName\":\"End Table (29.1x16x12)\"},{\"category\":\"bedroom\",\"name\":\"Full-Bed\",\"order\":\"2\",\"obj\":\"bedroom.Full-Bed.2.size75.7x55.1x39.6x0x1x0u.obj\",\"mtl\":\"bedroom.Full-Bed.2.size75.7x55.1x39.6x0x1x0u.mtl\",\"len_x\":\"75.7\",\"len_y\":\"55.1\",\"len_z\":\"39.6\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":165174.37200000003,\"niceName\":\"Full Bed (75.7x55.1x39.6)\"},{\"category\":\"bedroom\",\"name\":\"King-Bed\",\"order\":\"4\",\"obj\":\"bedroom.King-Bed.4.size81.2x77.0x40.2x0x1x0u.obj\",\"mtl\":\"bedroom.King-Bed.4.size81.2x77.0x40.2x0x1x0u.mtl\",\"len_x\":\"81.2\",\"len_y\":\"77.0\",\"len_z\":\"40.2\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":251346.48000000004,\"niceName\":\"King Bed (81.2x77.0x40.2)\"},{\"category\":\"bedroom\",\"name\":\"Night-Stand\",\"order\":\"7\",\"obj\":\"bedroom.Night-Stand.7.size23.6x15.75x12.2x0x1x0.obj\",\"mtl\":\"bedroom.Night-Stand.7.size23.6x15.75x12.2x0x1x0.mtl\",\"len_x\":\"23.6\",\"len_y\":\"15.75\",\"len_z\":\"12.2\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":4534.740000000001,\"niceName\":\"Night Stand (23.6x15.75x12.2)\"},{\"category\":\"bedroom\",\"name\":\"Queen-Bed\",\"order\":\"3\",\"obj\":\"bedroom.Queen-Bed.3.size81.1x60.9x37.1x0x1x0u.obj\",\"mtl\":\"bedroom.Queen-Bed.3.size81.1x60.9x37.1x0x1x0u.mtl\",\"len_x\":\"81.1\",\"len_y\":\"60.9\",\"len_z\":\"37.1\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":183236.529,\"niceName\":\"Queen Bed (81.1x60.9x37.1)\"},{\"category\":\"bedroom\",\"name\":\"Twin-Bed\",\"order\":\"1\",\"obj\":\"bedroom.Twin-Bed.1.size75.4x39.7x27.3x0x1x0u.obj\",\"mtl\":\"bedroom.Twin-Bed.1.size75.4x39.7x27.3x0x1x0u.mtl\",\"len_x\":\"75.4\",\"len_y\":\"39.7\",\"len_z\":\"27.3\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":81719.27400000002,\"niceName\":\"Twin Bed (75.4x39.7x27.3)\"},{\"category\":\"bedroom\",\"name\":\"Wardrobe\",\"order\":33,\"obj\":\"bedroom.Wardrobe.size71.2x29.1x22.3x0x1x0.obj\",\"mtl\":\"bedroom.Wardrobe.size71.2x29.1x22.3x0x1x0.mtl\",\"len_x\":\"71.2\",\"len_y\":\"29.1\",\"len_z\":\"22.3\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":46203.816000000006,\"niceName\":\"Wardrobe (71.2x29.1x22.3)\"}],\"living-room\":[{\"category\":\"living-room\",\"name\":\"32in-TV\",\"order\":\"8\",\"obj\":\"living-room.32in-TV.8.size18.5x29.2x5.7x0x1x0.obj\",\"mtl\":\"living-room.32in-TV.8.size18.5x29.2x5.7x0x1x0.mtl\",\"len_x\":\"18.5\",\"len_y\":\"29.2\",\"len_z\":\"5.7\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":3079.14,\"niceName\":\"32in TV (18.5x29.2x5.7)\"},{\"category\":\"living-room\",\"name\":\"55in-TV\",\"order\":\"8\",\"obj\":\"living-room.55in-TV.8.size23.9x31.7x9.4x0x1x0.obj\",\"mtl\":\"living-room.55in-TV.8.size23.9x31.7x9.4x0x1x0.mtl\",\"len_x\":\"23.9\",\"len_y\":\"31.7\",\"len_z\":\"9.4\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":7121.721999999999,\"niceName\":\"55in TV (23.9x31.7x9.4)\"},{\"category\":\"living-room\",\"name\":\"Air-Conditioner\",\"order\":\"40\",\"obj\":\"living-room.Air-Conditioner.40.size13.2x23x12.8x0x1x0.obj\",\"mtl\":\"living-room.Air-Conditioner.40.size13.2x23x12.8x0x1x0.mtl\",\"len_x\":\"13.2\",\"len_y\":\"23\",\"len_z\":\"12.8\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":3886.08,\"niceName\":\"Air Conditioner (13.2x23x12.8)\"},{\"category\":\"living-room\",\"name\":\"Armchair\",\"order\":\"4\",\"obj\":\"living-room.Armchair.4.size35x32x32x0x1x0.obj\",\"mtl\":\"living-room.Armchair.4.size35x32x32x0x1x0.mtl\",\"len_x\":\"35\",\"len_y\":\"32\",\"len_z\":\"32\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":35840,\"niceName\":\"Armchair (35x32x32)\"},{\"category\":\"living-room\",\"name\":\"Armoire\",\"order\":33,\"obj\":\"living-room.Armoire.size69.6x28.9x21.6x0x1x0u.obj\",\"mtl\":\"living-room.Armoire.size69.6x28.9x21.6x0x1x0u.mtl\",\"len_x\":\"69.6\",\"len_y\":\"28.9\",\"len_z\":\"21.6\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":43447.104,\"niceName\":\"Armoire (69.6x28.9x21.6)\"},{\"category\":\"living-room\",\"name\":\"Bookcase\",\"order\":\"7\",\"obj\":\"living-room.Bookcase.7.size47.5x25x9.5x0x1x0.obj\",\"mtl\":\"living-room.Bookcase.7.size47.5x25x9.5x0x1x0.mtl\",\"len_x\":\"47.5\",\"len_y\":\"25\",\"len_z\":\"9.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":11281.25,\"niceName\":\"Bookcase (47.5x25x9.5)\"},{\"category\":\"living-room\",\"name\":\"Chest\",\"order\":\"5\",\"obj\":\"living-room.Chest.5.size19.4x37.5x20.1x0x1x0.obj\",\"mtl\":\"living-room.Chest.5.size19.4x37.5x20.1x0x1x0.mtl\",\"len_x\":\"19.4\",\"len_y\":\"37.5\",\"len_z\":\"20.1\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":14622.750000000002,\"niceName\":\"Chest (19.4x37.5x20.1)\"},{\"category\":\"living-room\",\"name\":\"Coffee-Table\",\"order\":33,\"obj\":\"living-room.Coffee-Table.size16.9x35x19.5x0x1x0.obj\",\"mtl\":\"living-room.Coffee-Table.size16.9x35x19.5x0x1x0.mtl\",\"len_x\":\"16.9\",\"len_y\":\"35\",\"len_z\":\"19.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":11534.25,\"niceName\":\"Coffee Table (16.9x35x19.5)\"},{\"category\":\"living-room\",\"name\":\"DVD-Player\",\"order\":\"12\",\"obj\":\"living-room.DVD-Player.12.size2.0x10.0x9.0x0x1x0.obj\",\"mtl\":\"living-room.DVD-Player.12.size2.0x10.0x9.0x0x1x0.mtl\",\"len_x\":\"2.0\",\"len_y\":\"10.0\",\"len_z\":\"9.0\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":180,\"niceName\":\"DVD Player (2.0x10.0x9.0)\"},{\"category\":\"living-room\",\"name\":\"End-Table\",\"order\":33,\"obj\":\"living-room.End-Table.size29.1x16x12x0x1x0.obj\",\"mtl\":\"living-room.End-Table.size29.1x16x12x0x1x0.mtl\",\"len_x\":\"29.1\",\"len_y\":\"16\",\"len_z\":\"12\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":5587.200000000001,\"niceName\":\"End Table (29.1x16x12)\"},{\"category\":\"living-room\",\"name\":\"Floor-Lamp\",\"order\":33,\"obj\":\"living-room.Floor-Lamp.size69.5x24.1x24.1x0x1x0u.obj\",\"mtl\":\"living-room.Floor-Lamp.size69.5x24.1x24.1x0x1x0u.mtl\",\"len_x\":\"69.5\",\"len_y\":\"24.1\",\"len_z\":\"24.1\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":40366.295000000006,\"niceName\":\"Floor Lamp (69.5x24.1x24.1)\"},{\"category\":\"living-room\",\"name\":\"Floor-Speakers-(pair)\",\"order\":33,\"obj\":\"living-room.Floor-Speakers-(pair).size37.6x28.4x13.5x0x1x0.obj\",\"mtl\":\"living-room.Floor-Speakers-(pair).size37.6x28.4x13.5x0x1x0.mtl\",\"len_x\":\"37.6\",\"len_y\":\"28.4\",\"len_z\":\"13.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":14415.839999999998,\"niceName\":\"Floor Speakers Pair (37.6x28.4x13.5)\"},{\"category\":\"living-room\",\"name\":\"Game-Console\",\"order\":\"10\",\"obj\":\"living-room.Game-Console.10.size2.2x12x10.8x0x1x0.obj\",\"mtl\":\"living-room.Game-Console.10.size2.2x12x10.8x0x1x0.mtl\",\"len_x\":\"2.2\",\"len_y\":\"12\",\"len_z\":\"10.8\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":285.12000000000006,\"niceName\":\"Game Console (2.2x12x10.8)\"},{\"category\":\"living-room\",\"name\":\"Love-Seat\",\"order\":\"6\",\"obj\":\"living-room.Love-Seat.6.size35x59x33.1x0x1x0.obj\",\"mtl\":\"living-room.Love-Seat.6.size35x59x33.1x0x1x0.mtl\",\"len_x\":\"35\",\"len_y\":\"59\",\"len_z\":\"33.1\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":68351.5,\"niceName\":\"Love Seat (35x59x33.1)\"},{\"category\":\"living-room\",\"name\":\"Love-Seat\",\"order\":\"6\",\"obj\":\"living-room.Love-Seat.6.size59x35x33.1x0x1x0.obj\",\"mtl\":\"living-room.Love-Seat.6.size59x35x33.1x0x1x0.mtl\",\"len_x\":\"59\",\"len_y\":\"35\",\"len_z\":\"33.1\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":68351.5,\"niceName\":\"Love Seat (59x35x33.1)\"},{\"category\":\"living-room\",\"name\":\"Ottoman\",\"order\":\"9\",\"obj\":\"living-room.Ottoman.9.size16.1x29x19x0x1x0.obj\",\"mtl\":\"living-room.Ottoman.9.size16.1x29x19x0x1x0.mtl\",\"len_x\":\"16.1\",\"len_y\":\"29\",\"len_z\":\"19\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":8871.1,\"niceName\":\"ottoman (16.1x29x19)\"},{\"category\":\"living-room\",\"name\":\"Piano\",\"order\":\"41\",\"obj\":\"living-room.Piano.41.size48.2x60.1x24.1x0x1x0u.obj\",\"mtl\":\"living-room.Piano.41.size48.2x60.1x24.1x0x1x0u.mtl\",\"len_x\":\"48.2\",\"len_y\":\"60.1\",\"len_z\":\"24.1\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":69813.36200000001,\"niceName\":\"piano (48.2x60.1x24.1)\"},{\"category\":\"living-room\",\"name\":\"Recliner\",\"order\":\"3\",\"obj\":\"living-room.Recliner.3.size38.7x37.3x35.8x0x1x0.obj\",\"mtl\":\"living-room.Recliner.3.size38.7x37.3x35.8x0x1x0.mtl\",\"len_x\":\"38.7\",\"len_y\":\"37.3\",\"len_z\":\"35.8\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":51677.657999999996,\"niceName\":\"recliner (38.7x37.3x35.8)\"},{\"category\":\"living-room\",\"name\":\"Sofa\",\"order\":\"1\",\"obj\":\"living-room.Sofa.1.size32.8x73.3x31.9x0x1x0.obj\",\"mtl\":\"living-room.Sofa.1.size32.8x73.3x31.9x0x1x0.mtl\",\"len_x\":\"32.8\",\"len_y\":\"73.3\",\"len_z\":\"31.9\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":76695.256,\"niceName\":\"sofa (32.8x73.3x31.9)\"},{\"category\":\"living-room\",\"name\":\"Stereo\",\"order\":\"11\",\"obj\":\"living-room.Stereo.11.size13.7x12.1x9.3x0x1x0.obj\",\"mtl\":\"living-room.Stereo.11.size13.7x12.1x9.3x0x1x0.mtl\",\"len_x\":\"13.7\",\"len_y\":\"12.1\",\"len_z\":\"9.3\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":1541.661,\"niceName\":\"stereo (13.7x12.1x9.3)\"},{\"category\":\"living-room\",\"name\":\"TV-Stand\",\"order\":\"2\",\"obj\":\"living-room.TV-Stand.2.size21.25x60.88x15.63x0x1x0.obj\",\"mtl\":\"living-room.TV-Stand.2.size21.25x60.88x15.63x0x1x0.mtl\",\"len_x\":\"21.25\",\"len_y\":\"60.88\",\"len_z\":\"15.63\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":20220.531000000003,\"niceName\":\"TV Stand (21.25x60.88x15.63)\"}],\"dining-room\":[{\"category\":\"dining-room\",\"name\":\"Buffet-Table\",\"order\":33,\"obj\":\"dining-room.Buffet-Table.size32.2x47.6x18.2x0x1x0.obj\",\"mtl\":\"dining-room.Buffet-Table.size32.2x47.6x18.2x0x1x0.mtl\",\"len_x\":\"32.2\",\"len_y\":\"47.6\",\"len_z\":\"18.2\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":27895.504000000004,\"niceName\":\"Buffet Table (32.2x47.6x18.2)\"},{\"category\":\"dining-room\",\"name\":\"China-Cabinet\",\"order\":33,\"obj\":\"dining-room.China-Cabinet.size50x36.5x16x0x1x0.obj\",\"mtl\":\"dining-room.China-Cabinet.size50x36.5x16x0x1x0.mtl\",\"len_x\":\"50\",\"len_y\":\"36.5\",\"len_z\":\"16\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":29200,\"niceName\":\"China Cabinet (50x36.5x16)\"},{\"category\":\"dining-room\",\"name\":\"Dining-Chairs-(pair)\",\"order\":\"2\",\"obj\":\"dining-room.Dining-Chairs-(pair).2.size35.4x17.3x19.3x0x1x0u.obj\",\"mtl\":\"dining-room.Dining-Chairs-(pair).2.size35.4x17.3x19.3x0x1x0u.mtl\",\"len_x\":\"35.4\",\"len_y\":\"17.3\",\"len_z\":\"19.3\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":11819.706,\"niceName\":\"Dining chairs pair (35.4x17.3x19.3)\"},{\"category\":\"dining-room\",\"name\":\"Dining-Set\",\"order\":\"1\",\"obj\":\"dining-room.Dining-Set.1.size35.7x45.6x34.5x0x1x0.obj\",\"mtl\":\"dining-room.Dining-Set.1.size35.7x45.6x34.5x0x1x0.mtl\",\"len_x\":\"35.7\",\"len_y\":\"45.6\",\"len_z\":\"34.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":56163.240000000005,\"niceName\":\"Dining Set (35.7x45.6x34.5)\"}],\"study\":[{\"category\":\"study\",\"name\":\"32in-Monitor\",\"order\":33,\"obj\":\"study.32in-Monitor.size18.5x29.2x5.7x0x1x0.obj\",\"mtl\":\"study.32in-Monitor.size18.5x29.2x5.7x0x1x0.mtl\",\"len_x\":\"18.5\",\"len_y\":\"29.2\",\"len_z\":\"5.7\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":3079.14,\"niceName\":\" 32in monitor (18.5x29.2x5.7)\"},{\"category\":\"study\",\"name\":\"Bookcase\",\"order\":\"4\",\"obj\":\"study.Bookcase.4.size47.5x25x9.5x0x1x0.obj\",\"mtl\":\"study.Bookcase.4.size47.5x25x9.5x0x1x0.mtl\",\"len_x\":\"47.5\",\"len_y\":\"25\",\"len_z\":\"9.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":11281.25,\"niceName\":\"Bookcase (47.5x25x9.5)\"},{\"category\":\"study\",\"name\":\"Desk\",\"order\":\"1\",\"obj\":\"study.Desk.1.size30x47x18.7x0x1x0.obj\",\"mtl\":\"study.Desk.1.size30x47x18.7x0x1x0.mtl\",\"len_x\":\"30\",\"len_y\":\"47\",\"len_z\":\"18.7\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":26367,\"niceName\":\"Desk (30x47x18.7)\"},{\"category\":\"study\",\"name\":\"Drawers\",\"order\":33,\"obj\":\"study.Drawers.size28.75x31.0x16.25x0x1x0.obj\",\"mtl\":\"study.Drawers.size28.75x31.0x16.25x0x1x0.mtl\",\"len_x\":\"28.75\",\"len_y\":\"31.0\",\"len_z\":\"16.25\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":14482.8125,\"niceName\":\"Drawers (28.75x31.0x16.25)\"},{\"category\":\"study\",\"name\":\"File-Cabinet-(large)\",\"order\":33,\"obj\":\"study.File-Cabinet-(large).size50.8x15.8x17.3x0x1x0.obj\",\"mtl\":\"study.File-Cabinet-(large).size50.8x15.8x17.3x0x1x0.mtl\",\"len_x\":\"50.8\",\"len_y\":\"15.8\",\"len_z\":\"17.3\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":13885.672,\"niceName\":\"File Cabinet (Large) (50.8x15.8x17.3)\"},{\"category\":\"study\",\"name\":\"File-Cabinet-(small)\",\"order\":33,\"obj\":\"study.File-Cabinet-(small).size26x15.56x16x0x1x0.obj\",\"mtl\":\"study.File-Cabinet-(small).size26x15.56x16x0x1x0.mtl\",\"len_x\":\"26\",\"len_y\":\"15.56\",\"len_z\":\"16\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":6472.96,\"niceName\":\"File Cabinet (Small) (26x15.56x16)\"},{\"category\":\"study\",\"name\":\"Office-Chair\",\"order\":\"2\",\"obj\":\"study.Office-Chair.2.size39.0x20.0x19.0x0x1x0u.obj\",\"mtl\":\"study.Office-Chair.2.size39.0x20.0x19.0x0x1x0u.mtl\",\"len_x\":\"39.0\",\"len_y\":\"20.0\",\"len_z\":\"19.0\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":14820,\"niceName\":\"Office Chair (39.0x20.0x19.0)\"},{\"category\":\"study\",\"name\":\"PC\",\"order\":33,\"obj\":\"study.PC.size12.3x6.6x15x0x1x0.obj\",\"mtl\":\"study.PC.size12.3x6.6x15x0x1x0.mtl\",\"len_x\":\"12.3\",\"len_y\":\"6.6\",\"len_z\":\"15\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":1217.7,\"niceName\":\"pc (12.3x6.6x15)\"}],\"kitchen\":[{\"category\":\"kitchen\",\"name\":\"Bar-Stool\",\"order\":33,\"obj\":\"kitchen.Bar-Stool.size30.8x25.4x25.13x0x1x0.obj\",\"mtl\":\"kitchen.Bar-Stool.size30.8x25.4x25.13x0x1x0.mtl\",\"len_x\":\"30.8\",\"len_y\":\"25.4\",\"len_z\":\"25.13\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":19659.701599999997,\"niceName\":\"Bar Stool (30.8x25.4x25.13)\"},{\"category\":\"kitchen\",\"name\":\"Kitchen-Table\",\"order\":33,\"obj\":\"kitchen.Kitchen-Table.size35.75x38x38x0x1x0.obj\",\"mtl\":\"kitchen.Kitchen-Table.size35.75x38x38x0x1x0.mtl\",\"len_x\":\"35.75\",\"len_y\":\"38\",\"len_z\":\"38\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":51623,\"niceName\":\"Kitchen Table (35.75x38x38)\"},{\"category\":\"kitchen\",\"name\":\"Large-Fridge\",\"order\":\"2\",\"obj\":\"kitchen.Large-Fridge.2.size72x36x36x0x1x0.obj\",\"mtl\":\"kitchen.Large-Fridge.2.size72x36x36x0x1x0.mtl\",\"len_x\":\"72\",\"len_y\":\"36\",\"len_z\":\"36\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":93312,\"niceName\":\"Large Fridge (72x36x36)\"},{\"category\":\"kitchen\",\"name\":\"Microwave\",\"order\":33,\"obj\":\"kitchen.Microwave.size12.8x21.8x11.8x0x1x0.obj\",\"mtl\":\"kitchen.Microwave.size12.8x21.8x11.8x0x1x0.mtl\",\"len_x\":\"12.8\",\"len_y\":\"21.8\",\"len_z\":\"11.8\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":3292.6720000000005,\"niceName\":\"microwave (12.8x21.8x11.8)\"},{\"category\":\"kitchen\",\"name\":\"Small-Fridge\",\"order\":33,\"obj\":\"kitchen.Small-Fridge.size68x25x29x0x1x0.obj\",\"mtl\":\"kitchen.Small-Fridge.size68x25x29x0x1x0.mtl\",\"len_x\":\"68\",\"len_y\":\"25\",\"len_z\":\"29\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":49300,\"niceName\":\"Small Fridge (68x25x29)\"},{\"category\":\"kitchen\",\"name\":\"Stove\",\"order\":\"1\",\"obj\":\"kitchen.Stove.1.size48x32x32x0x1x0.obj\",\"mtl\":\"kitchen.Stove.1.size48x32x32x0x1x0.mtl\",\"len_x\":\"48\",\"len_y\":\"32\",\"len_z\":\"32\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":49152,\"niceName\":\"Stove (48x32x32)\"}],\"garage\":[{\"category\":\"garage\",\"name\":\"Bike-(Mountain)\",\"order\":33,\"obj\":\"garage.Bike-(Mountain).size42x22x70x0x1x0u.obj\",\"mtl\":\"garage.Bike-(Mountain).size42x22x70x0x1x0u.mtl\",\"len_x\":\"42\",\"len_y\":\"22\",\"len_z\":\"70\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":64680,\"niceName\":\"Mountain Bike (42x22x70)\"},{\"category\":\"garage\",\"name\":\"Bike-(Road)\",\"order\":33,\"obj\":\"garage.Bike-(Road).size40x18x68x0x1x0u.obj\",\"mtl\":\"garage.Bike-(Road).size40x18x68x0x1x0u.mtl\",\"len_x\":\"40\",\"len_y\":\"18\",\"len_z\":\"68\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":48960,\"niceName\":\"Road Bike (40x18x68)\"},{\"category\":\"garage\",\"name\":\"Dryer\",\"order\":33,\"obj\":\"garage.Dryer.size38.7x27.5x33.5x0x1x0.obj\",\"mtl\":\"garage.Dryer.size38.7x27.5x33.5x0x1x0.mtl\",\"len_x\":\"38.7\",\"len_y\":\"27.5\",\"len_z\":\"33.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":35652.375,\"niceName\":\"Dryer (38.7x27.5x33.5)\"},{\"category\":\"garage\",\"name\":\"Freezer\",\"order\":33,\"obj\":\"garage.Freezer.size42.1x36x27.5x0x1x0.obj\",\"mtl\":\"garage.Freezer.size42.1x36x27.5x0x1x0.mtl\",\"len_x\":\"42.1\",\"len_y\":\"36\",\"len_z\":\"27.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":41679.00000000001,\"niceName\":\"Freezer (42.1x36x27.5)\"},{\"category\":\"garage\",\"name\":\"Generator\",\"order\":\"2\",\"obj\":\"garage.Generator.2.size15.4x24.5x18.5x0x1x0u.obj\",\"mtl\":\"garage.Generator.2.size15.4x24.5x18.5x0x1x0u.mtl\",\"len_x\":\"15.4\",\"len_y\":\"24.5\",\"len_z\":\"18.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":6980.05,\"niceName\":\"Generator (15.4x24.5x18.5)\"},{\"category\":\"garage\",\"name\":\"ladder\",\"order\":33,\"obj\":\"garage.ladder.size47x18x4x0x1x0.obj\",\"mtl\":\"garage.ladder.size47x18x4x0x1x0.mtl\",\"len_x\":\"47\",\"len_y\":\"18\",\"len_z\":\"4\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":3384,\"niceName\":\"Ladder (47x18x4)\"},{\"category\":\"garage\",\"name\":\"lawnmower\",\"order\":33,\"obj\":\"garage.lawnmower.size41x22x61x0x1x0u.obj\",\"mtl\":\"garage.lawnmower.size41x22x61x0x1x0u.mtl\",\"len_x\":\"41\",\"len_y\":\"22\",\"len_z\":\"61\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":55022,\"niceName\":\"Lawnmower (41x22x61)\"},{\"category\":\"garage\",\"name\":\"Tool-Box\",\"order\":\"1\",\"obj\":\"garage.Tool-Box.1.size31.25x28.1x19.2x0x1x0.obj\",\"mtl\":\"garage.Tool-Box.1.size31.25x28.1x19.2x0x1x0.mtl\",\"len_x\":\"31.25\",\"len_y\":\"28.1\",\"len_z\":\"19.2\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":16860,\"niceName\":\"Tool Box (31.25x28.1x19.2)\"},{\"category\":\"garage\",\"name\":\"Washer\",\"order\":33,\"obj\":\"garage.Washer.size38.7x27.5x33.5x0x1x0.obj\",\"mtl\":\"garage.Washer.size38.7x27.5x33.5x0x1x0.mtl\",\"len_x\":\"38.7\",\"len_y\":\"27.5\",\"len_z\":\"33.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":35652.375,\"niceName\":\"Washer (38.7x27.5x33.5)\"}],\"misc\":[{\"category\":\"misc\",\"name\":\"Box-(Large)\",\"order\":33,\"obj\":\"misc.Box-(Large).size18.0x18.0x24.0x0x1x0.obj\",\"mtl\":\"misc.Box-(Large).size18.0x18.0x24.0x0x1x0.mtl\",\"len_x\":\"18.0\",\"len_y\":\"18.0\",\"len_z\":\"24.0\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":7776,\"niceName\":\"Box Large (18.0x18.0x24.0)\"},{\"category\":\"misc\",\"name\":\"Box-(Medium)\",\"order\":33,\"obj\":\"misc.Box-(Medium).size18.0x18.0x16.0x1x1x1.obj\",\"mtl\":\"misc.Box-(Medium).size18.0x18.0x16.0x1x1x1.mtl\",\"len_x\":\"18.0\",\"len_y\":\"18.0\",\"len_z\":\"16.0\",\"rot_x\":\"1\",\"rot_y\":\"1\",\"rot_z\":\"1\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":5184,\"niceName\":\"Box Medium (18.0x18.0x16.0)\"},{\"category\":\"misc\",\"name\":\"Box-(Small)\",\"order\":33,\"obj\":\"misc.Box-(Small).size12.5x12.5x16.0x1x1x1.obj\",\"mtl\":\"misc.Box-(Small).size12.5x12.5x16.0x1x1x1.mtl\",\"len_x\":\"12.5\",\"len_y\":\"12.5\",\"len_z\":\"16.0\",\"rot_x\":\"1\",\"rot_y\":\"1\",\"rot_z\":\"1\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":2500,\"niceName\":\"Box Small (12.5x12.5x16.0)\"},{\"category\":\"misc\",\"name\":\"Floor-Fan\",\"order\":\"10\",\"obj\":\"misc.Floor-Fan.10.size22.5x22.5x5.4x0x1x0.obj\",\"mtl\":\"misc.Floor-Fan.10.size22.5x22.5x5.4x0x1x0.mtl\",\"len_x\":\"22.5\",\"len_y\":\"22.5\",\"len_z\":\"5.4\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":2733.75,\"niceName\":\"Floor Fan (22.5x22.5x5.4)\"},{\"category\":\"misc\",\"name\":\"Patio-Chairs-(pair)\",\"order\":\"6\",\"obj\":\"misc.Patio-Chairs-(pair).6.size49.5x24.0x23.2x0x1x0u.obj\",\"mtl\":\"misc.Patio-Chairs-(pair).6.size49.5x24.0x23.2x0x1x0u.mtl\",\"len_x\":\"49.5\",\"len_y\":\"24.0\",\"len_z\":\"23.2\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":27561.6,\"niceName\":\"Patio Chair Pair (49.5x24.0x23.2)\"},{\"category\":\"misc\",\"name\":\"Patio-Lounger\",\"order\":\"7\",\"obj\":\"misc.Patio-Lounger.7.size44.5x9.2x23.8x0x1x0u.obj\",\"mtl\":\"misc.Patio-Lounger.7.size44.5x9.2x23.8x0x1x0u.mtl\",\"len_x\":\"44.5\",\"len_y\":\"9.2\",\"len_z\":\"23.8\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":9743.72,\"niceName\":\"Patio Lounger (44.5x9.2x23.8)\"},{\"category\":\"misc\",\"name\":\"Patio-Set\",\"order\":\"4\",\"obj\":\"misc.Patio-Set.4.size33.9x48.1x56.8x0x1x0u.obj\",\"mtl\":\"misc.Patio-Set.4.size33.9x48.1x56.8x0x1x0u.mtl\",\"len_x\":\"33.9\",\"len_y\":\"48.1\",\"len_z\":\"56.8\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":92617.51199999999,\"niceName\":\"Patio Set (33.9x48.1x56.8)\"},{\"category\":\"misc\",\"name\":\"Suitcase\",\"order\":33,\"obj\":\"misc.Suitcase.size29.8x18.4x11.1x0x1x0.obj\",\"mtl\":\"misc.Suitcase.size29.8x18.4x11.1x0x1x0.mtl\",\"len_x\":\"29.8\",\"len_y\":\"18.4\",\"len_z\":\"11.1\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":6086.351999999999,\"niceName\":\"Suitcase (29.8x18.4x11.1)\"},{\"category\":\"misc\",\"name\":\"Treadmill\",\"order\":\"9\",\"obj\":\"misc.Treadmill.9.size54x23x18.5x0x1x0u.obj\",\"mtl\":\"misc.Treadmill.9.size54x23x18.5x0x1x0u.mtl\",\"len_x\":\"54\",\"len_y\":\"23\",\"len_z\":\"18.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":22977,\"niceName\":\"Treadmill (54x23x18.5)\"}]}';var objByFileNameTemp  = '{\"bedroom.32in-TV.5.size18.5x29.2x5.7x0x1x0.obj\":{\"category\":\"bedroom\",\"name\":\"32in-TV\",\"order\":\"5\",\"obj\":\"bedroom.32in-TV.5.size18.5x29.2x5.7x0x1x0.obj\",\"mtl\":\"bedroom.32in-TV.5.size18.5x29.2x5.7x0x1x0.mtl\",\"len_x\":\"18.5\",\"len_y\":\"29.2\",\"len_z\":\"5.7\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":3079.14},\"bedroom.Armoire.size69.6x28.9x21.6x0x1x0u.obj\":{\"category\":\"bedroom\",\"name\":\"Armoire\",\"order\":33,\"obj\":\"bedroom.Armoire.size69.6x28.9x21.6x0x1x0u.obj\",\"mtl\":\"bedroom.Armoire.size69.6x28.9x21.6x0x1x0u.mtl\",\"len_x\":\"69.6\",\"len_y\":\"28.9\",\"len_z\":\"21.6\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":43447.104},\"bedroom.Chest.size19.4x37.5x20.1x0x1x0.obj\":{\"category\":\"bedroom\",\"name\":\"Chest\",\"order\":33,\"obj\":\"bedroom.Chest.size19.4x37.5x20.1x0x1x0.obj\",\"mtl\":\"bedroom.Chest.size19.4x37.5x20.1x0x1x0.mtl\",\"len_x\":\"19.4\",\"len_y\":\"37.5\",\"len_z\":\"20.1\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":14622.750000000002},\"bedroom.Drawers.6.size28.75x31.0x16.25x0x1x0.obj\":{\"category\":\"bedroom\",\"name\":\"Drawers\",\"order\":\"6\",\"obj\":\"bedroom.Drawers.6.size28.75x31.0x16.25x0x1x0.obj\",\"mtl\":\"bedroom.Drawers.6.size28.75x31.0x16.25x0x1x0.mtl\",\"len_x\":\"28.75\",\"len_y\":\"31.0\",\"len_z\":\"16.25\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":14482.8125},\"bedroom.Dresser-with-Mirror.size75.3x61.3x18.8x0x1x0u.obj\":{\"category\":\"bedroom\",\"name\":\"Dresser-with-Mirror\",\"order\":33,\"obj\":\"bedroom.Dresser-with-Mirror.size75.3x61.3x18.8x0x1x0u.obj\",\"mtl\":\"bedroom.Dresser-with-Mirror.size75.3x61.3x18.8x0x1x0u.mtl\",\"len_x\":\"75.3\",\"len_y\":\"61.3\",\"len_z\":\"18.8\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":86778.73199999999},\"bedroom.End-Table.size29.1x16x12x0x1x0.obj\":{\"category\":\"bedroom\",\"name\":\"End-Table\",\"order\":33,\"obj\":\"bedroom.End-Table.size29.1x16x12x0x1x0.obj\",\"mtl\":\"bedroom.End-Table.size29.1x16x12x0x1x0.mtl\",\"len_x\":\"29.1\",\"len_y\":\"16\",\"len_z\":\"12\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":5587.200000000001},\"bedroom.Full-Bed.2.size75.7x55.1x39.6x0x1x0u.obj\":{\"category\":\"bedroom\",\"name\":\"Full-Bed\",\"order\":\"2\",\"obj\":\"bedroom.Full-Bed.2.size75.7x55.1x39.6x0x1x0u.obj\",\"mtl\":\"bedroom.Full-Bed.2.size75.7x55.1x39.6x0x1x0u.mtl\",\"len_x\":\"75.7\",\"len_y\":\"55.1\",\"len_z\":\"39.6\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":165174.37200000003},\"bedroom.King-Bed.4.size81.2x77.0x40.2x0x1x0u.obj\":{\"category\":\"bedroom\",\"name\":\"King-Bed\",\"order\":\"4\",\"obj\":\"bedroom.King-Bed.4.size81.2x77.0x40.2x0x1x0u.obj\",\"mtl\":\"bedroom.King-Bed.4.size81.2x77.0x40.2x0x1x0u.mtl\",\"len_x\":\"81.2\",\"len_y\":\"77.0\",\"len_z\":\"40.2\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":251346.48000000004},\"bedroom.Night-Stand.7.size23.6x15.75x12.2x0x1x0.obj\":{\"category\":\"bedroom\",\"name\":\"Night-Stand\",\"order\":\"7\",\"obj\":\"bedroom.Night-Stand.7.size23.6x15.75x12.2x0x1x0.obj\",\"mtl\":\"bedroom.Night-Stand.7.size23.6x15.75x12.2x0x1x0.mtl\",\"len_x\":\"23.6\",\"len_y\":\"15.75\",\"len_z\":\"12.2\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":4534.740000000001},\"bedroom.Queen-Bed.3.size81.1x60.9x37.1x0x1x0u.obj\":{\"category\":\"bedroom\",\"name\":\"Queen-Bed\",\"order\":\"3\",\"obj\":\"bedroom.Queen-Bed.3.size81.1x60.9x37.1x0x1x0u.obj\",\"mtl\":\"bedroom.Queen-Bed.3.size81.1x60.9x37.1x0x1x0u.mtl\",\"len_x\":\"81.1\",\"len_y\":\"60.9\",\"len_z\":\"37.1\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":183236.529},\"bedroom.Twin-Bed.1.size75.4x39.7x27.3x0x1x0u.obj\":{\"category\":\"bedroom\",\"name\":\"Twin-Bed\",\"order\":\"1\",\"obj\":\"bedroom.Twin-Bed.1.size75.4x39.7x27.3x0x1x0u.obj\",\"mtl\":\"bedroom.Twin-Bed.1.size75.4x39.7x27.3x0x1x0u.mtl\",\"len_x\":\"75.4\",\"len_y\":\"39.7\",\"len_z\":\"27.3\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":81719.27400000002},\"bedroom.Wardrobe.size71.2x29.1x22.3x0x1x0.obj\":{\"category\":\"bedroom\",\"name\":\"Wardrobe\",\"order\":33,\"obj\":\"bedroom.Wardrobe.size71.2x29.1x22.3x0x1x0.obj\",\"mtl\":\"bedroom.Wardrobe.size71.2x29.1x22.3x0x1x0.mtl\",\"len_x\":\"71.2\",\"len_y\":\"29.1\",\"len_z\":\"22.3\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":46203.816000000006},\"living-room.32in-TV.8.size18.5x29.2x5.7x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"32in-TV\",\"order\":\"8\",\"obj\":\"living-room.32in-TV.8.size18.5x29.2x5.7x0x1x0.obj\",\"mtl\":\"living-room.32in-TV.8.size18.5x29.2x5.7x0x1x0.mtl\",\"len_x\":\"18.5\",\"len_y\":\"29.2\",\"len_z\":\"5.7\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":3079.14},\"living-room.55in-TV.8.size23.9x31.7x9.4x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"55in-TV\",\"order\":\"8\",\"obj\":\"living-room.55in-TV.8.size23.9x31.7x9.4x0x1x0.obj\",\"mtl\":\"living-room.55in-TV.8.size23.9x31.7x9.4x0x1x0.mtl\",\"len_x\":\"23.9\",\"len_y\":\"31.7\",\"len_z\":\"9.4\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":7121.721999999999},\"living-room.Air-Conditioner.40.size13.2x23x12.8x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"Air-Conditioner\",\"order\":\"40\",\"obj\":\"living-room.Air-Conditioner.40.size13.2x23x12.8x0x1x0.obj\",\"mtl\":\"living-room.Air-Conditioner.40.size13.2x23x12.8x0x1x0.mtl\",\"len_x\":\"13.2\",\"len_y\":\"23\",\"len_z\":\"12.8\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":3886.08},\"living-room.Armchair.4.size35x32x32x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"Armchair\",\"order\":\"4\",\"obj\":\"living-room.Armchair.4.size35x32x32x0x1x0.obj\",\"mtl\":\"living-room.Armchair.4.size35x32x32x0x1x0.mtl\",\"len_x\":\"35\",\"len_y\":\"32\",\"len_z\":\"32\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":35840},\"living-room.Armoire.size69.6x28.9x21.6x0x1x0u.obj\":{\"category\":\"living-room\",\"name\":\"Armoire\",\"order\":33,\"obj\":\"living-room.Armoire.size69.6x28.9x21.6x0x1x0u.obj\",\"mtl\":\"living-room.Armoire.size69.6x28.9x21.6x0x1x0u.mtl\",\"len_x\":\"69.6\",\"len_y\":\"28.9\",\"len_z\":\"21.6\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":43447.104},\"living-room.Bookcase.7.size47.5x25x9.5x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"Bookcase\",\"order\":\"7\",\"obj\":\"living-room.Bookcase.7.size47.5x25x9.5x0x1x0.obj\",\"mtl\":\"living-room.Bookcase.7.size47.5x25x9.5x0x1x0.mtl\",\"len_x\":\"47.5\",\"len_y\":\"25\",\"len_z\":\"9.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":11281.25},\"living-room.Chest.5.size19.4x37.5x20.1x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"Chest\",\"order\":\"5\",\"obj\":\"living-room.Chest.5.size19.4x37.5x20.1x0x1x0.obj\",\"mtl\":\"living-room.Chest.5.size19.4x37.5x20.1x0x1x0.mtl\",\"len_x\":\"19.4\",\"len_y\":\"37.5\",\"len_z\":\"20.1\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":14622.750000000002},\"living-room.Coffee-Table.size16.9x35x19.5x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"Coffee-Table\",\"order\":33,\"obj\":\"living-room.Coffee-Table.size16.9x35x19.5x0x1x0.obj\",\"mtl\":\"living-room.Coffee-Table.size16.9x35x19.5x0x1x0.mtl\",\"len_x\":\"16.9\",\"len_y\":\"35\",\"len_z\":\"19.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":11534.25},\"living-room.DVD-Player.12.size2.0x10.0x9.0x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"DVD-Player\",\"order\":\"12\",\"obj\":\"living-room.DVD-Player.12.size2.0x10.0x9.0x0x1x0.obj\",\"mtl\":\"living-room.DVD-Player.12.size2.0x10.0x9.0x0x1x0.mtl\",\"len_x\":\"2.0\",\"len_y\":\"10.0\",\"len_z\":\"9.0\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":180},\"living-room.End-Table.size29.1x16x12x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"End-Table\",\"order\":33,\"obj\":\"living-room.End-Table.size29.1x16x12x0x1x0.obj\",\"mtl\":\"living-room.End-Table.size29.1x16x12x0x1x0.mtl\",\"len_x\":\"29.1\",\"len_y\":\"16\",\"len_z\":\"12\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":5587.200000000001},\"living-room.Floor-Lamp.size69.5x24.1x24.1x0x1x0u.obj\":{\"category\":\"living-room\",\"name\":\"Floor-Lamp\",\"order\":33,\"obj\":\"living-room.Floor-Lamp.size69.5x24.1x24.1x0x1x0u.obj\",\"mtl\":\"living-room.Floor-Lamp.size69.5x24.1x24.1x0x1x0u.mtl\",\"len_x\":\"69.5\",\"len_y\":\"24.1\",\"len_z\":\"24.1\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":40366.295000000006},\"living-room.Floor-Speakers-(pair).size37.6x28.4x13.5x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"Floor-Speakers-(pair)\",\"order\":33,\"obj\":\"living-room.Floor-Speakers-(pair).size37.6x28.4x13.5x0x1x0.obj\",\"mtl\":\"living-room.Floor-Speakers-(pair).size37.6x28.4x13.5x0x1x0.mtl\",\"len_x\":\"37.6\",\"len_y\":\"28.4\",\"len_z\":\"13.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":14415.839999999998},\"living-room.Game-Console.10.size2.2x12x10.8x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"Game-Console\",\"order\":\"10\",\"obj\":\"living-room.Game-Console.10.size2.2x12x10.8x0x1x0.obj\",\"mtl\":\"living-room.Game-Console.10.size2.2x12x10.8x0x1x0.mtl\",\"len_x\":\"2.2\",\"len_y\":\"12\",\"len_z\":\"10.8\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":285.12000000000006},\"living-room.Love-Seat.6.size35x59x33.1x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"Love-Seat\",\"order\":\"6\",\"obj\":\"living-room.Love-Seat.6.size35x59x33.1x0x1x0.obj\",\"mtl\":\"living-room.Love-Seat.6.size35x59x33.1x0x1x0.mtl\",\"len_x\":\"35\",\"len_y\":\"59\",\"len_z\":\"33.1\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":68351.5},\"living-room.Love-Seat.6.size59x35x33.1x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"Love-Seat\",\"order\":\"6\",\"obj\":\"living-room.Love-Seat.6.size59x35x33.1x0x1x0.obj\",\"mtl\":\"living-room.Love-Seat.6.size59x35x33.1x0x1x0.mtl\",\"len_x\":\"59\",\"len_y\":\"35\",\"len_z\":\"33.1\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":68351.5},\"living-room.Ottoman.9.size16.1x29x19x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"Ottoman\",\"order\":\"9\",\"obj\":\"living-room.Ottoman.9.size16.1x29x19x0x1x0.obj\",\"mtl\":\"living-room.Ottoman.9.size16.1x29x19x0x1x0.mtl\",\"len_x\":\"16.1\",\"len_y\":\"29\",\"len_z\":\"19\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":8871.1},\"living-room.Piano.41.size48.2x60.1x24.1x0x1x0u.obj\":{\"category\":\"living-room\",\"name\":\"Piano\",\"order\":\"41\",\"obj\":\"living-room.Piano.41.size48.2x60.1x24.1x0x1x0u.obj\",\"mtl\":\"living-room.Piano.41.size48.2x60.1x24.1x0x1x0u.mtl\",\"len_x\":\"48.2\",\"len_y\":\"60.1\",\"len_z\":\"24.1\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":69813.36200000001},\"living-room.Recliner.3.size38.7x37.3x35.8x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"Recliner\",\"order\":\"3\",\"obj\":\"living-room.Recliner.3.size38.7x37.3x35.8x0x1x0.obj\",\"mtl\":\"living-room.Recliner.3.size38.7x37.3x35.8x0x1x0.mtl\",\"len_x\":\"38.7\",\"len_y\":\"37.3\",\"len_z\":\"35.8\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":51677.657999999996},\"living-room.Sofa.1.size32.8x73.3x31.9x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"Sofa\",\"order\":\"1\",\"obj\":\"living-room.Sofa.1.size32.8x73.3x31.9x0x1x0.obj\",\"mtl\":\"living-room.Sofa.1.size32.8x73.3x31.9x0x1x0.mtl\",\"len_x\":\"32.8\",\"len_y\":\"73.3\",\"len_z\":\"31.9\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":76695.256},\"living-room.Stereo.11.size13.7x12.1x9.3x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"Stereo\",\"order\":\"11\",\"obj\":\"living-room.Stereo.11.size13.7x12.1x9.3x0x1x0.obj\",\"mtl\":\"living-room.Stereo.11.size13.7x12.1x9.3x0x1x0.mtl\",\"len_x\":\"13.7\",\"len_y\":\"12.1\",\"len_z\":\"9.3\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":1541.661},\"living-room.TV-Stand.2.size21.25x60.88x15.63x0x1x0.obj\":{\"category\":\"living-room\",\"name\":\"TV-Stand\",\"order\":\"2\",\"obj\":\"living-room.TV-Stand.2.size21.25x60.88x15.63x0x1x0.obj\",\"mtl\":\"living-room.TV-Stand.2.size21.25x60.88x15.63x0x1x0.mtl\",\"len_x\":\"21.25\",\"len_y\":\"60.88\",\"len_z\":\"15.63\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":20220.531000000003},\"dining-room.Buffet-Table.size32.2x47.6x18.2x0x1x0.obj\":{\"category\":\"dining-room\",\"name\":\"Buffet-Table\",\"order\":33,\"obj\":\"dining-room.Buffet-Table.size32.2x47.6x18.2x0x1x0.obj\",\"mtl\":\"dining-room.Buffet-Table.size32.2x47.6x18.2x0x1x0.mtl\",\"len_x\":\"32.2\",\"len_y\":\"47.6\",\"len_z\":\"18.2\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":27895.504000000004},\"dining-room.China-Cabinet.size50x36.5x16x0x1x0.obj\":{\"category\":\"dining-room\",\"name\":\"China-Cabinet\",\"order\":33,\"obj\":\"dining-room.China-Cabinet.size50x36.5x16x0x1x0.obj\",\"mtl\":\"dining-room.China-Cabinet.size50x36.5x16x0x1x0.mtl\",\"len_x\":\"50\",\"len_y\":\"36.5\",\"len_z\":\"16\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":29200},\"dining-room.Dining-Chairs-(pair).2.size35.4x17.3x19.3x0x1x0u.obj\":{\"category\":\"dining-room\",\"name\":\"Dining-Chairs-(pair)\",\"order\":\"2\",\"obj\":\"dining-room.Dining-Chairs-(pair).2.size35.4x17.3x19.3x0x1x0u.obj\",\"mtl\":\"dining-room.Dining-Chairs-(pair).2.size35.4x17.3x19.3x0x1x0u.mtl\",\"len_x\":\"35.4\",\"len_y\":\"17.3\",\"len_z\":\"19.3\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":11819.706},\"dining-room.Dining-Set.1.size35.7x45.6x34.5x0x1x0.obj\":{\"category\":\"dining-room\",\"name\":\"Dining-Set\",\"order\":\"1\",\"obj\":\"dining-room.Dining-Set.1.size35.7x45.6x34.5x0x1x0.obj\",\"mtl\":\"dining-room.Dining-Set.1.size35.7x45.6x34.5x0x1x0.mtl\",\"len_x\":\"35.7\",\"len_y\":\"45.6\",\"len_z\":\"34.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":56163.240000000005},\"study.32in-Monitor.size18.5x29.2x5.7x0x1x0.obj\":{\"category\":\"study\",\"name\":\"32in-Monitor\",\"order\":33,\"obj\":\"study.32in-Monitor.size18.5x29.2x5.7x0x1x0.obj\",\"mtl\":\"study.32in-Monitor.size18.5x29.2x5.7x0x1x0.mtl\",\"len_x\":\"18.5\",\"len_y\":\"29.2\",\"len_z\":\"5.7\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":3079.14},\"study.Bookcase.4.size47.5x25x9.5x0x1x0.obj\":{\"category\":\"study\",\"name\":\"Bookcase\",\"order\":\"4\",\"obj\":\"study.Bookcase.4.size47.5x25x9.5x0x1x0.obj\",\"mtl\":\"study.Bookcase.4.size47.5x25x9.5x0x1x0.mtl\",\"len_x\":\"47.5\",\"len_y\":\"25\",\"len_z\":\"9.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":11281.25},\"study.Desk.1.size30x47x18.7x0x1x0.obj\":{\"category\":\"study\",\"name\":\"Desk\",\"order\":\"1\",\"obj\":\"study.Desk.1.size30x47x18.7x0x1x0.obj\",\"mtl\":\"study.Desk.1.size30x47x18.7x0x1x0.mtl\",\"len_x\":\"30\",\"len_y\":\"47\",\"len_z\":\"18.7\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":26367},\"study.Drawers.size28.75x31.0x16.25x0x1x0.obj\":{\"category\":\"study\",\"name\":\"Drawers\",\"order\":33,\"obj\":\"study.Drawers.size28.75x31.0x16.25x0x1x0.obj\",\"mtl\":\"study.Drawers.size28.75x31.0x16.25x0x1x0.mtl\",\"len_x\":\"28.75\",\"len_y\":\"31.0\",\"len_z\":\"16.25\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":14482.8125},\"study.File-Cabinet-(large).size50.8x15.8x17.3x0x1x0.obj\":{\"category\":\"study\",\"name\":\"File-Cabinet-(large)\",\"order\":33,\"obj\":\"study.File-Cabinet-(large).size50.8x15.8x17.3x0x1x0.obj\",\"mtl\":\"study.File-Cabinet-(large).size50.8x15.8x17.3x0x1x0.mtl\",\"len_x\":\"50.8\",\"len_y\":\"15.8\",\"len_z\":\"17.3\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":13885.672},\"study.File-Cabinet-(small).size26x15.56x16x0x1x0.obj\":{\"category\":\"study\",\"name\":\"File-Cabinet-(small)\",\"order\":33,\"obj\":\"study.File-Cabinet-(small).size26x15.56x16x0x1x0.obj\",\"mtl\":\"study.File-Cabinet-(small).size26x15.56x16x0x1x0.mtl\",\"len_x\":\"26\",\"len_y\":\"15.56\",\"len_z\":\"16\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":6472.96},\"study.Office-Chair.2.size39.0x20.0x19.0x0x1x0u.obj\":{\"category\":\"study\",\"name\":\"Office-Chair\",\"order\":\"2\",\"obj\":\"study.Office-Chair.2.size39.0x20.0x19.0x0x1x0u.obj\",\"mtl\":\"study.Office-Chair.2.size39.0x20.0x19.0x0x1x0u.mtl\",\"len_x\":\"39.0\",\"len_y\":\"20.0\",\"len_z\":\"19.0\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":14820},\"study.PC.size12.3x6.6x15x0x1x0.obj\":{\"category\":\"study\",\"name\":\"PC\",\"order\":33,\"obj\":\"study.PC.size12.3x6.6x15x0x1x0.obj\",\"mtl\":\"study.PC.size12.3x6.6x15x0x1x0.mtl\",\"len_x\":\"12.3\",\"len_y\":\"6.6\",\"len_z\":\"15\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":1217.7},\"kitchen.Bar-Stool.size30.8x25.4x25.13x0x1x0.obj\":{\"category\":\"kitchen\",\"name\":\"Bar-Stool\",\"order\":33,\"obj\":\"kitchen.Bar-Stool.size30.8x25.4x25.13x0x1x0.obj\",\"mtl\":\"kitchen.Bar-Stool.size30.8x25.4x25.13x0x1x0.mtl\",\"len_x\":\"30.8\",\"len_y\":\"25.4\",\"len_z\":\"25.13\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":19659.701599999997},\"kitchen.Kitchen-Table.size35.75x38x38x0x1x0.obj\":{\"category\":\"kitchen\",\"name\":\"Kitchen-Table\",\"order\":33,\"obj\":\"kitchen.Kitchen-Table.size35.75x38x38x0x1x0.obj\",\"mtl\":\"kitchen.Kitchen-Table.size35.75x38x38x0x1x0.mtl\",\"len_x\":\"35.75\",\"len_y\":\"38\",\"len_z\":\"38\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":51623},\"kitchen.Large-Fridge.2.size72x36x36x0x1x0.obj\":{\"category\":\"kitchen\",\"name\":\"Large-Fridge\",\"order\":\"2\",\"obj\":\"kitchen.Large-Fridge.2.size72x36x36x0x1x0.obj\",\"mtl\":\"kitchen.Large-Fridge.2.size72x36x36x0x1x0.mtl\",\"len_x\":\"72\",\"len_y\":\"36\",\"len_z\":\"36\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":93312},\"kitchen.Microwave.size12.8x21.8x11.8x0x1x0.obj\":{\"category\":\"kitchen\",\"name\":\"Microwave\",\"order\":33,\"obj\":\"kitchen.Microwave.size12.8x21.8x11.8x0x1x0.obj\",\"mtl\":\"kitchen.Microwave.size12.8x21.8x11.8x0x1x0.mtl\",\"len_x\":\"12.8\",\"len_y\":\"21.8\",\"len_z\":\"11.8\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":3292.6720000000005},\"kitchen.Small-Fridge.size68x25x29x0x1x0.obj\":{\"category\":\"kitchen\",\"name\":\"Small-Fridge\",\"order\":33,\"obj\":\"kitchen.Small-Fridge.size68x25x29x0x1x0.obj\",\"mtl\":\"kitchen.Small-Fridge.size68x25x29x0x1x0.mtl\",\"len_x\":\"68\",\"len_y\":\"25\",\"len_z\":\"29\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":49300},\"kitchen.Stove.1.size48x32x32x0x1x0.obj\":{\"category\":\"kitchen\",\"name\":\"Stove\",\"order\":\"1\",\"obj\":\"kitchen.Stove.1.size48x32x32x0x1x0.obj\",\"mtl\":\"kitchen.Stove.1.size48x32x32x0x1x0.mtl\",\"len_x\":\"48\",\"len_y\":\"32\",\"len_z\":\"32\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":49152},\"garage.Bike-(Mountain).size42x22x70x0x1x0u.obj\":{\"category\":\"garage\",\"name\":\"Bike-(Mountain)\",\"order\":33,\"obj\":\"garage.Bike-(Mountain).size42x22x70x0x1x0u.obj\",\"mtl\":\"garage.Bike-(Mountain).size42x22x70x0x1x0u.mtl\",\"len_x\":\"42\",\"len_y\":\"22\",\"len_z\":\"70\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":64680},\"garage.Bike-(Road).size40x18x68x0x1x0u.obj\":{\"category\":\"garage\",\"name\":\"Bike-(Road)\",\"order\":33,\"obj\":\"garage.Bike-(Road).size40x18x68x0x1x0u.obj\",\"mtl\":\"garage.Bike-(Road).size40x18x68x0x1x0u.mtl\",\"len_x\":\"40\",\"len_y\":\"18\",\"len_z\":\"68\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":48960},\"garage.Dryer.size38.7x27.5x33.5x0x1x0.obj\":{\"category\":\"garage\",\"name\":\"Dryer\",\"order\":33,\"obj\":\"garage.Dryer.size38.7x27.5x33.5x0x1x0.obj\",\"mtl\":\"garage.Dryer.size38.7x27.5x33.5x0x1x0.mtl\",\"len_x\":\"38.7\",\"len_y\":\"27.5\",\"len_z\":\"33.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":35652.375},\"garage.Freezer.size42.1x36x27.5x0x1x0.obj\":{\"category\":\"garage\",\"name\":\"Freezer\",\"order\":33,\"obj\":\"garage.Freezer.size42.1x36x27.5x0x1x0.obj\",\"mtl\":\"garage.Freezer.size42.1x36x27.5x0x1x0.mtl\",\"len_x\":\"42.1\",\"len_y\":\"36\",\"len_z\":\"27.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":41679.00000000001},\"garage.Generator.2.size15.4x24.5x18.5x0x1x0u.obj\":{\"category\":\"garage\",\"name\":\"Generator\",\"order\":\"2\",\"obj\":\"garage.Generator.2.size15.4x24.5x18.5x0x1x0u.obj\",\"mtl\":\"garage.Generator.2.size15.4x24.5x18.5x0x1x0u.mtl\",\"len_x\":\"15.4\",\"len_y\":\"24.5\",\"len_z\":\"18.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":6980.05},\"garage.ladder.size47x18x4x0x1x0.obj\":{\"category\":\"garage\",\"name\":\"ladder\",\"order\":33,\"obj\":\"garage.ladder.size47x18x4x0x1x0.obj\",\"mtl\":\"garage.ladder.size47x18x4x0x1x0.mtl\",\"len_x\":\"47\",\"len_y\":\"18\",\"len_z\":\"4\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":3384},\"garage.lawnmower.size41x22x61x0x1x0u.obj\":{\"category\":\"garage\",\"name\":\"lawnmower\",\"order\":33,\"obj\":\"garage.lawnmower.size41x22x61x0x1x0u.obj\",\"mtl\":\"garage.lawnmower.size41x22x61x0x1x0u.mtl\",\"len_x\":\"41\",\"len_y\":\"22\",\"len_z\":\"61\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":55022},\"garage.Tool-Box.1.size31.25x28.1x19.2x0x1x0.obj\":{\"category\":\"garage\",\"name\":\"Tool-Box\",\"order\":\"1\",\"obj\":\"garage.Tool-Box.1.size31.25x28.1x19.2x0x1x0.obj\",\"mtl\":\"garage.Tool-Box.1.size31.25x28.1x19.2x0x1x0.mtl\",\"len_x\":\"31.25\",\"len_y\":\"28.1\",\"len_z\":\"19.2\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":16860},\"garage.Washer.size38.7x27.5x33.5x0x1x0.obj\":{\"category\":\"garage\",\"name\":\"Washer\",\"order\":33,\"obj\":\"garage.Washer.size38.7x27.5x33.5x0x1x0.obj\",\"mtl\":\"garage.Washer.size38.7x27.5x33.5x0x1x0.mtl\",\"len_x\":\"38.7\",\"len_y\":\"27.5\",\"len_z\":\"33.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":35652.375},\"misc.Box-(Large).size18.0x18.0x24.0x0x1x0.obj\":{\"category\":\"misc\",\"name\":\"Box-(Large)\",\"order\":33,\"obj\":\"misc.Box-(Large).size18.0x18.0x24.0x0x1x0.obj\",\"mtl\":\"misc.Box-(Large).size18.0x18.0x24.0x0x1x0.mtl\",\"len_x\":\"18.0\",\"len_y\":\"18.0\",\"len_z\":\"24.0\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":7776},\"misc.Box-(Medium).size18.0x18.0x16.0x1x1x1.obj\":{\"category\":\"misc\",\"name\":\"Box-(Medium)\",\"order\":33,\"obj\":\"misc.Box-(Medium).size18.0x18.0x16.0x1x1x1.obj\",\"mtl\":\"misc.Box-(Medium).size18.0x18.0x16.0x1x1x1.mtl\",\"len_x\":\"18.0\",\"len_y\":\"18.0\",\"len_z\":\"16.0\",\"rot_x\":\"1\",\"rot_y\":\"1\",\"rot_z\":\"1\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":5184},\"misc.Box-(Small).size12.5x12.5x16.0x1x1x1.obj\":{\"category\":\"misc\",\"name\":\"Box-(Small)\",\"order\":33,\"obj\":\"misc.Box-(Small).size12.5x12.5x16.0x1x1x1.obj\",\"mtl\":\"misc.Box-(Small).size12.5x12.5x16.0x1x1x1.mtl\",\"len_x\":\"12.5\",\"len_y\":\"12.5\",\"len_z\":\"16.0\",\"rot_x\":\"1\",\"rot_y\":\"1\",\"rot_z\":\"1\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":2500},\"misc.Floor-Fan.10.size22.5x22.5x5.4x0x1x0.obj\":{\"category\":\"misc\",\"name\":\"Floor-Fan\",\"order\":\"10\",\"obj\":\"misc.Floor-Fan.10.size22.5x22.5x5.4x0x1x0.obj\",\"mtl\":\"misc.Floor-Fan.10.size22.5x22.5x5.4x0x1x0.mtl\",\"len_x\":\"22.5\",\"len_y\":\"22.5\",\"len_z\":\"5.4\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":2733.75},\"misc.Patio-Chairs-(pair).6.size49.5x24.0x23.2x0x1x0u.obj\":{\"category\":\"misc\",\"name\":\"Patio-Chairs-(pair)\",\"order\":\"6\",\"obj\":\"misc.Patio-Chairs-(pair).6.size49.5x24.0x23.2x0x1x0u.obj\",\"mtl\":\"misc.Patio-Chairs-(pair).6.size49.5x24.0x23.2x0x1x0u.mtl\",\"len_x\":\"49.5\",\"len_y\":\"24.0\",\"len_z\":\"23.2\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":27561.6},\"misc.Patio-Lounger.7.size44.5x9.2x23.8x0x1x0u.obj\":{\"category\":\"misc\",\"name\":\"Patio-Lounger\",\"order\":\"7\",\"obj\":\"misc.Patio-Lounger.7.size44.5x9.2x23.8x0x1x0u.obj\",\"mtl\":\"misc.Patio-Lounger.7.size44.5x9.2x23.8x0x1x0u.mtl\",\"len_x\":\"44.5\",\"len_y\":\"9.2\",\"len_z\":\"23.8\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":9743.72},\"misc.Patio-Set.4.size33.9x48.1x56.8x0x1x0u.obj\":{\"category\":\"misc\",\"name\":\"Patio-Set\",\"order\":\"4\",\"obj\":\"misc.Patio-Set.4.size33.9x48.1x56.8x0x1x0u.obj\",\"mtl\":\"misc.Patio-Set.4.size33.9x48.1x56.8x0x1x0u.mtl\",\"len_x\":\"33.9\",\"len_y\":\"48.1\",\"len_z\":\"56.8\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":92617.51199999999},\"misc.Suitcase.size29.8x18.4x11.1x0x1x0.obj\":{\"category\":\"misc\",\"name\":\"Suitcase\",\"order\":33,\"obj\":\"misc.Suitcase.size29.8x18.4x11.1x0x1x0.obj\",\"mtl\":\"misc.Suitcase.size29.8x18.4x11.1x0x1x0.mtl\",\"len_x\":\"29.8\",\"len_y\":\"18.4\",\"len_z\":\"11.1\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"1\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":6086.351999999999},\"misc.Treadmill.9.size54x23x18.5x0x1x0u.obj\":{\"category\":\"misc\",\"name\":\"Treadmill\",\"order\":\"9\",\"obj\":\"misc.Treadmill.9.size54x23x18.5x0x1x0u.obj\",\"mtl\":\"misc.Treadmill.9.size54x23x18.5x0x1x0u.mtl\",\"len_x\":\"54\",\"len_y\":\"23\",\"len_z\":\"18.5\",\"rot_x\":\"0\",\"rot_y\":\"1\",\"rot_z\":\"0\",\"stackable\":\"0\",\"x_pos\":0,\"y_pos\":0,\"z_pos\":0,\"vol\":22977}}';\tvar objXref = $.parseJSON(objXrefTemp);\r\n\tvar objByFileName = $.parseJSON(objByFileNameTemp);\r\n\tvar prePacked = $.parseJSON(presetsTemp);\r\n\t\t\r\n\tvar overCat = false;\r\n\tfunction loadNiceSelect( url, callback ) {\r\n        var script = document.createElement( \"script\" );\r\n        script.type = \"text\/javascript\";\r\n        if(script.readyState) { \/\/ only required for IE\r\n            script.onreadystatechange = function() {\r\n              if ( script.readyState === \"loaded\" || script.readyState === \"complete\" ) {\r\n                script.onreadystatechange = null;\r\n                try { jQuery('select').niceSelect(); } catch(e){ console.error(e); }\r\n              }\r\n            };\r\n        } else {  \/\/Others\r\n            script.onload = function() { try { jQuery('select').niceSelect(); } catch(e){ console.error(e); }; };\r\n        }\r\n        \r\n        script.src = 'https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/js\/jquery.nice-select.js';\r\n        document.getElementsByTagName( \"head\" )[0].appendChild( script );\r\n    }\r\n    \r\n\t$(document).ready(function() {\r\n        loadNiceSelect();\r\n\t\tsettings = {};\r\n\t\tif(render_ss === true) settings['r_ss'] = true; else settings['r_ss'] = false;\r\n\t\tif(render_su === true) settings['r_su'] = true; else settings['r_su'] = false;\r\n\t\tif(render_ma === true) settings['r_ma'] = true; else settings['r_ma'] = false;\r\n\t\tif(render_aa === true) settings['r_aa'] = true; else settings['r_aa'] = false;\r\n\t\tif(render_gr === true) settings['r_gr'] = true; else settings['r_gr'] = false;\r\n\t\tif(render_tx === true) settings['r_tx'] = true; else settings['r_tx'] = false;\r\n\t\tif(render_lp === true) settings['r_lp'] = true; else settings['r_lp'] = false;\r\n\t\t\r\n\t\t$.each(settings, function(i,v) {\r\n\t\t\t\r\n\t\t\t$('#'+i).prop('checked',v);\r\n\t\t});\r\n\t\t\r\n\t\tif(use_canvas === true) {\r\n\t\t\t$('.s_aa, .s_ss, .s_gr, .s_sur, .s_tx').addClass('hide');\r\n\t\t}\r\n\t\r\n\t\r\n\t\t\/\/ setup render container\r\n\t\t$(\".renderDiv\").height(canvasHeight);\t\r\n\t\t\r\n\t\t\/\/add scrollbar\r\n\t\tpositionScroller();\r\n\t\t \r\n\t\t\/\/prevCats\r\n\t\tscroll_ypos = 0;\r\n\t\t\r\n\t\t\t\t\r\n\t\t$('.nextCats').click( function() {\r\n\t\t\t\r\n\t\t\tvar s_container = $(this).parent();\t\t\t\r\n\t\t\tvar s_viewport = $(s_container).find('.scroller_viewport');\t\t\t\r\n\t\t\tvar s_items = $(s_viewport).find('.scroller_item');\t\t\t\r\n\t\t\tvar s_scrollWidth = $(s_items).eq(0).outerWidth(true);\r\n\t\t\tvar s_catsWidth  = $(s_viewport).width();\r\n\t\t\tvar s_pageWidth = $(s_container).innerWidth(); \r\n\t\t\t\r\n\t\t\tvar s_minY = 0;\r\n\t\t\tvar s_maxY =  s_pageWidth - s_catsWidth;\r\n\t\t\t\r\n\t\t\tvar s_centerOffset = ( s_scrollWidth - $(s_items).eq(0).innerWidth() ) \/ 2 ;\r\n\t\t\t\r\n\t\t\ts_parent_ypos = parseInt($(s_viewport).css('left')); \r\n\t\t\ts_scroll_ypos = s_parent_ypos - s_scrollWidth  - s_centerOffset;;\r\n\t\t\t\r\n\t\t\tif(s_scroll_ypos > s_minY ) {\r\n\t\t\t\t$(s_container).find('.prevCats').hide();\r\n\t\t\t\ts_scroll_ypos = s_minY;\r\n\t\t\t} else {\r\n\t\t\t\t$(s_container).find('.prevCats').show();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(s_scroll_ypos < s_maxY ) { \r\n\t\t\t\t$(s_container).find('.nextCats').hide();\r\n\t\t\t\ts_scroll_ypos = s_maxY;\r\n\t\t\t} else {\r\n\t\t\t\t$(s_container).find('.nextCats').show();\r\n\t\t\t}\r\n\t\t\r\n\t\t\t$(s_viewport).stop().animate({ left: s_scroll_ypos },400);\r\n\t\t});\r\n\t\t\r\n\t\t\r\n\t\t$('.prevCats').click( function() {\r\n\t\t\t\r\n\t\t\tvar s_container = $(this).parent();\t\t\t\r\n\t\t\tvar s_viewport = $(s_container).find('.scroller_viewport');\t\r\n\t\t\tvar s_items = $(s_viewport).find('.scroller_item');\t\t\t\r\n\t\t\tvar s_scrollWidth = $(s_items).eq(0).outerWidth(true);\r\n\t\t\t\r\n\t\t\tvar s_catsWidth  = $(s_viewport).width();\r\n\t\t\tvar s_pageWidth = $(s_container).innerWidth(); \r\n\t\t\t\r\n\t\t\tvar s_centerOffset = ( s_scrollWidth - $(s_items).eq(0).innerWidth() ) \/ 2 ;\r\n\t\t\t\r\n\t\t\tvar s_minY = 0;\r\n\t\t\tvar s_maxY =  s_pageWidth - s_catsWidth;\r\n\t\t\t\r\n\t\t\ts_parent_ypos = parseInt($(s_viewport).css('left'));\r\n\t\t\ts_scroll_ypos = s_parent_ypos + s_scrollWidth + s_centerOffset;\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tif(s_scroll_ypos > s_minY ) {\r\n\t\t\t\t$(s_container).find('.prevCats').hide();\r\n\t\t\t\ts_scroll_ypos = s_minY;\r\n\t\t\t} else {\r\n\t\t\t\t$(s_container).find('.prevCats').show();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(s_scroll_ypos < s_maxY ) { \r\n\t\t\t\t$(s_container).find('.nextCats').hide();\r\n\t\t\t\ts_scroll_ypos = s_maxY;\r\n\t\t\t} else {\r\n\t\t\t\t$(s_container).find('.nextCats').show();\r\n\t\t\t}\r\n\t\t\t\t\r\n\t\t\t$(s_viewport).stop().animate({ left: s_scroll_ypos },400);\r\n\t\t});\r\n\t\t\r\n\t\t\r\n\t\t$('.resetView').click(function() { \r\n\t\t\r\n\t\t\tcontrols.lat = 0;\r\n\t\t\tcontrols.lon = 0;\r\n\t\t\tcontrols.phi = 0;\r\n\t\t\tcontrols.theta = 0;\r\n\t\t\t\r\n\t\t\tcontrols._object.position.x = camStartX;\r\n\t\t\tcontrols._object.position.y = camStartY;\r\n\t\t\tcontrols._object.position.z = camStartZ;\r\n\t\t\t\t\t\t\r\n\t\t});\r\n\t\t\r\n\t\t$('.orbitView').click(function() { \r\n\t\t\torbit=true;\r\n\t\t\ttto = 6;\r\n\t\t})\r\n\t\t\r\n\t\t$('.moveCamera').click( function(){\r\n\t\t\t\t_calcModal = \"m_camera\";\r\n\t\t\t\tdoModalSwap(this);\r\n\t\t}) \r\n\t\t\r\n\t\t$('.moveItem').click( function(){\r\n\t\t\t\t_calcModal = \"m_item\";\r\n\t\t\t\tdoModalSwap(this);\r\n\t\t}) \r\n\t\t\r\n\t\t$('.addItem').click( function(){\r\n\t\t\t\t_calcModal = \"a_item\";\r\n\t\t\t\tdoModalSwap(this);\r\n\t\t}) \r\n\t\t\r\n\t\t\r\n\t\t$('.presetCardSelector').click(function() {\r\n\t\t\t\r\n\t\t\tif($(this).hasClass('activeContentMode')) return;\r\n\t        \t\t\t    sel_id = $(this).attr('id');\r\n\t\t\t\t\t\tif(sel_id === \"select_stored\" ) {\r\n\t\t\t\tpreset = '';\r\n\t\t\t\t$('.presetContainer, .customContent, .catDivItems').slideUp('fast'); \r\n\t\t\t\t$('.select_stored').slideDown('fast');\r\n\t\t\t\t\r\n\t\t\t} else if(sel_id === \"select_custom\" ) {\r\n\t\t\t\tpreset = 'empty';\r\n\t\t\t\t$('.presetContainer, .select_stored').slideUp('fast');\r\n\t\t\t\t$('.customContent, .activeCat').slideDown('fast');\r\n\t\t\t} else {\r\n\t\t\t\tpreset = '';\r\n\t\t\t\t$('.customContent, .select_stored, .catDivItems').slideUp('fast');\r\n\t\t\t\t$('.presetContainer').slideDown('fast');\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t$('.activeContentMode').removeClass('activeContentMode');\r\n\t\t\t$(this).addClass('activeContentMode');\r\n\t\t\t\r\n\t\t\tpositionScroller();\r\n\t\t\t\r\n\t\t})\r\n\t\t\t\r\n\t\t$('.presetCard').click( function() {\r\n\t\t\t\r\n\t\t\t\/\/if($(this).hasClass('activePreset')) return;\r\n\t\t\t\r\n\t\t\tpre_id = $(this).attr('id');\r\n\t\t\tpreset = pre_id.replace('pre_','');\r\n\t\t\t\r\n\t\t\t$('.activePreset').removeClass('activePreset');\r\n\t\t\t$(this).addClass('activePreset');\r\n\t\t\t\r\n\t\t\tif(preset !== \"empty\") {\r\n\t\t\t\t$('.customContent').slideUp('fast');\r\n\t\t\t\t$('#contentBuild').click();\r\n\t\t\t} else {\r\n\t\t\t\t$('.customContent').slideDown('fast');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t\/\/ set initial mode\r\n\t\tif ($('.addItem').hasClass('selectedMode')){ \/\/ Prevent duplicate calls due to caching\r\n\t\t\t$('.addItem').click();\r\n\t\t}\r\n\t\t\r\n\t\t\/\/catDivItems\r\n\t\t$('.catDivTitle').click(function(){\r\n\t\t\tparClass = $(this).parent().attr('class');\r\n\t\t\t\r\n\t\t\tparClass = parClass.replace('catDivItems','');\r\n\t\t\tparClass = parClass.replace('activeCat','');\r\n\t\t\tparCat_temp = parClass.split('_');\r\n\t\t\tparCat = parCat_temp[1];\r\n\t\t\t\r\n\t\t\t$('#catDiv_'+parCat).parent().click();\r\n\t\t\t\r\n\t\t});\r\n\t\t\t\r\n\t\t$('.catDiv').click( function(){\r\n\t\t\t\r\n\t\t\tpreset = 'empty'\r\n\t\t\t\r\n\t\t\t\/\/$('.activeCatCont').removeClass('activeCatCont');\r\n\t\t\t\r\n\t\t\t\/\/ get category button position and id\r\n\t\t\tcatParent = $(this).find('.cat_lab');\r\n\t\t\t\r\n\t\t\tvar id= $(catParent).attr('id');\r\n\t\t\tid = id.replace('catDiv_','');\r\n\t\t\t\r\n\t\t\t\/\/ hide all item containers\r\n\t\t\t\/\/$('.catDivItems').slideUp('fast');\r\n\t\t\t\r\n\t\t\t\/\/ get selected category's items\r\n\t\t\tcatSel = $('.catItems_'+id);\r\n\t\t\t\r\n\t\t\t\/\/$('.cat_lab .fa-rotate-180').removeClass('fa-rotate-180');\r\n\t\t\t\r\n\t\t\tif( !catSel.hasClass('activeCat') ) {\r\n\t\t\t\t$(this).addClass('activeCatCont');\r\n\t\t\t\t$(this).removeClass('activeCat');\r\n\t\t\t\t$(catParent).find('.oc_ico').addClass('fa-rotate-180');\r\n\t\t\t\tcatSel.addClass('activeCat').slideDown('fast'); \r\n\t\t\t\t\r\n\t\t\t} else {\r\n\t\t\t\t$(catParent).find('.oc_ico').removeClass('fa-rotate-180');\r\n\t\t\t\t$(this).removeClass('activeCatCont');\r\n\t\t\t\t$(this).removeClass('activeCat');\r\n\t\t\t\tcatSel.removeClass('activeCat').slideUp('fast'); \r\n\t\t\t}\r\n\t\t})\t\r\n\t\t\r\n\t\t\r\n\t\t\/*\r\n\t\t$('.catDiv').click( function(){\r\n\t\t\t\r\n\t\t\tpreset = 'empty'\r\n\t\t\t\r\n\t\t\t$('.activeCatCont').removeClass('activeCatCont');\r\n\t\t\t\r\n\t\t\t\/\/ get category button position and id\r\n\t\t\tcatParent = $(this).find('.cat_lab');\r\n\t\t\t\r\n\t\t\tvar catWidth = $(catParent).outerWidth();\r\n\t\t\tvar catPosOff = $(catParent).offset();\r\n\t\t\tvar catPosPos = $('.content_selector').offset();\r\n\t\t\tvar catPosPos2 = $('.infoTop').offset();\r\n\t\t\tvar catDivPad = ( $(this).outerWidth(true) - $(this).innerWidth() ) \/ 2;\r\n\t\t\t\r\n\t\t\tvar thumbHeight = $('.catThumb').outerHeight();\r\n\t\t\t\r\n\t\t\tcatPosOff.top = catPosOff.top  + $(catParent).outerHeight() + thumbHeight;\r\n\t\t\tcatPosOff.left = catPosOff.left - catPosPos.left + catDivPad;\r\n\t\t\t\r\n\t\t\tvar id= $(catParent).attr('id');\r\n\t\t\tid = id.replace('catDiv_','');\r\n\t\t\t\r\n\t\t\t\/\/ hide all item containers\r\n\t\t\t$('.catDivItems').hide();\r\n\t\t\t\r\n\t\t\t\/\/ get selected category's items\r\n\t\t\tcatSel = $('.catItems_'+id);\r\n\t\t\t\r\n\t\t\t$('.catContainer').addClass('addYOverflow').removeClass('noYOverflow');\r\n\t\t\t$('.cat_lab .fa-rotate-180').removeClass('fa-rotate-180');\r\n\t\t\t\r\n\t\t\tif( !catSel.hasClass('activeCat') ) {\r\n\t\t\t\t$(this).addClass('activeCatCont');\r\n\t\t\t\t$('.activeCat').removeClass('activeCat');\r\n\t\t\t\t$(catParent).find('.oc_ico').addClass('fa-rotate-180');\r\n\t\t\t\tcatSel.css({'top': catPosOff.top , 'left': catPosOff.left , 'width': catWidth }).addClass('activeCat').slideDown('fast'); \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t} else {\r\n\t\t\t\t$('.cat_lab .fa-rotate-180').removeClass('fa-rotate-180');\r\n\t\t\t\t$('.activeCat').removeClass('activeCat');\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t})\t\r\n\t\t*\/\t\r\n\t\t\r\n\t\t\r\n\t\t $('body').click( function(e){\r\n\t\t\t\r\n\t\t\tvar buttCat = $(\".cat_lab, .catDivItems, .catDiv\");\r\n\t\t\t\r\n\t\t\tif (!buttCat.is(e.target) \/\/ if the target of the click isn't the container...\r\n\t\t\t\t&& buttCat.has(e.target).length === 0) \/\/ ... nor a descendant of the container\r\n\t\t\t\t\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\/\/$('.catContainer').removeClass('addYOverflow').addClass('noYOverflow');\r\n\t\t\t\t\t\t\/\/$('.activeCat').removeClass('activeCat');\r\n\t\t\t\t\t\t\/\/$('.cat_lab .fa-rotate-180').removeClass('fa-rotate-180');\r\n\t\t\t\t\t\t\/\/$('.catDivItems').hide();\r\n\t\t\t\t\t }\r\n\t\t});\r\n\t\t\r\n\t\t$('.oc_setting_details').click( function(){\r\n\t\t\t\r\n\t\t\tif( $('.oc_setting_details .oc_ico').hasClass('fa-rotate-180') ) {\r\n\t\t\t    $('.oc_setting_details .oc_ico').removeClass( \"fa-rotate-180\" );\r\n\t\t\t    $('.setting_details').hide();\r\n\t\t\t}else{\r\n\t\t\t    $('.oc_setting_details .oc_ico').toggleClass( \"fa-rotate-180\" );\r\n\t\t\t    $('.setting_details').show();\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t\t\r\n\r\n\t\t\r\n\t\t$('.unitDetsToggle').click( function(){\r\n\t\t\t$('.unitDets').slideToggle();\r\n\t\t\t$('.unitDetsToggle .oc_ico').toggleClass( \"fa-rotate-180\" );\r\n\t\t\t\r\n\t\t})\r\n\t\t\r\n\t\t$('.reset_div').click(function() {\r\n\t\t\t$('.itemsSelect').val(\"0\");\r\n\t\t});\r\n\r\n\t\t$('#resetBuild').click(function(){\r\n\t\t\t$('.catDivItems .catInputContainer .list li[data-value=\"0\"]').click(); \/\/ Reset all items\r\n\t\t\t$('#contentBuild').click(); \/\/ Click calculate button to reset render\r\n\t\t\t$('.recommendedUnitDiv, .stepTitle, .renderDiv, .packErrorDisplay').hide(); \/\/ Hide render and result elements\r\n\t\t});\r\n\t\t\r\n\t $(document).ready(function() {\r\n\t\t$('#mySelect').change( function() { \r\n\t\t\tif (waiting === true) return;\r\n\t\t\t$('#load_scrim').show();\r\n\t\t\tclearInterval(dropObj);\r\n\t\t\twaiting = true;\r\n\t\t\tchangeSettings = false;\r\n\t\t\tcanDoDrop = false;\r\n\t\t\t\r\n\t\t\tif( $(this).hasClass('settingSubmit') ) {\r\n\t\t\t\tchangeSettings = true;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\/\/$('.catDivItems').hide();\r\n\t\t\t\r\n\t\t\tob3d =[];\r\n\t\t\tpacking = [];\r\n\t\t\titemsToPack =[];\r\n\t\t\tloadOrder =[];\r\n\t\t\titem_count = 0;\r\n\t\t\tiVol = 0;\r\n\t\t\t\r\n\t\t\tfill_perc = $('#fillPercent').val()\r\n    \t\tpresets_2 = '';\r\n    \t\t\/\/ using custom items\r\n    \t\t\t\r\n    \t\tif (presets_2 === 'empty')  preset = 'empty';\t\t\t\r\n\t\t\t\/\/ using custom items\r\n\t\t\tif( preset === 'empty' ) {\r\n\r\n\t\t\t\t$('.itemsSelect').each( function(i,v) {\r\n\t\t\t\t\tif($(this).val() > 0) {\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\titem_id = $(this).attr('id');\t\r\n\t\t\t\t\t\txRefs = item_id.split('_');\r\n\t\t\t\t\t\tobj_cat = xRefs[1];\r\n\t\t\t\t\t\tobj_index = xRefs[2];\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\tfor (j = 1; j <= parseInt($(this).val()); j++) {\r\n\t\t\t\t\t\t\titem_count++;\r\n\t\t\t\t\t\t\tiVol += objXref[obj_cat][obj_index]['vol']\r\n\t\t\t\t\t\t\titMem = $.extend(true,{}, objXref[obj_cat][obj_index] );\r\n\t\t\t\t\t\t\tit=objXref[obj_cat][obj_index]['obj'];\r\n\t\t\t\t\t\t\tpacking.push(it); \r\n\t\t\t\t\t\t\titemsToPack.push(itMem); \r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t\r\n\t\t\t\/\/ using preset\r\n\t\t\t} else {\r\n\r\n\t\t\t\t$.each( prePacked[preset].contents, function(i,v) {\r\n\t\t\t\t\titem_count++;\r\n\t\t\t\t\t\r\n\t\t\t\t\titMem = $.extend(true,{}, objByFileName[v] );\r\n\t\t\t\t\t\r\n\t\t\t\t\tiVol += itMem['vol']\r\n\t\t\t\t\tit=v;\r\n\t\t\t\t\tpacking.push(it); \r\n\t\t\t\t\titemsToPack.push(itMem); \r\n\t\t\t\t})\r\n\t\t\t\t\r\n\t\t\t\tfill_perc = \"preset\";\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tpackingError =\"\";\r\n\t\t\t$('.packErrorDisplay').hide();\r\n\t\t\t\r\n\t\t\tif(packing.length < 1) {\r\n\t\t\t\tpackingError += 'Please select some items';\r\n\t\t\t}\r\n\t\t\t\t  \r\n\t\t\tif(iVol > 11059200) {\r\n\t\t\t\tpackingError += \"Too many items selected. \";\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\ttestMe = packing;\r\n\t\t\tnewPositions=[];\r\n\t\t\t\r\n\t\t\t\/\/empty renderere\r\n\t\t\t$('.renderDiv').find('canvas').remove();\r\n\t\t\t\r\n\t\t\trender_ss = $('#r_ss').is(\":checked\");\r\n\t\t\trender_su = $('#r_su').is(\":checked\");\r\n\t\t\trender_aa = $('#r_aa').is(\":checked\");\r\n\t\t\trender_ma = $('#r_ma').is(\":checked\");\r\n\t\t\trender_gr = $('#r_gr').is(\":checked\");\r\n\t\t\trender_tx = $('#r_tx').is(\":checked\");\r\n\t\t\trender_lp = $('#r_lp').is(\":checked\");\t\r\n\t\t\t\t\r\n\t\t\tif(packingError !== \"\" && !changeSettings) {\r\n\t\t\t\t$('.packErrorDisplay').html(packingError).slideDown();\r\n\t\t\t\twaiting = false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(packingError === \"\") {\t \r\n    \t\t\t    var property_id = document.getElementById(\"mySelect\") && document.getElementById(\"mySelect\").value ? document.getElementById(\"mySelect\").value : 0;\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar afterBuildFunc = function(){\r\n\t\t\t\t\t\twaiting = false;\r\n    \t\t\t\t\t\r\n    \t\t\t\t\tif(data < 0) {\r\n    \t\t\t\t\t\t\/\/ fail\r\n    \t\t\t\t\t\tpackingError += \"Couldn't connect to server. \";\r\n    \t\t\t\t\t} else {\r\n    \t\t\t\t\t\t\/\/ success\r\n    \t\t\t\t\t\tdata_obj = $.parseJSON(data);\r\n    \t\t\t\t\t\t_error = data_obj['error'];\r\n    \t\t\t\t\t\t\r\n                            if(_error !== \"\") {\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\/\/ we have an error from the API\r\n    \t\t\t\t\t\t\tpackingError += \"Oops, looks like we are out of the size you need. Call us so we can help you further.\";\r\n    \t\t\t\t\t\t\t$('.packErrorDisplay').html(packingError).slideDown(); \r\n    \t\t\t\t\t\t\t$('.m_virtualUnit').slideUp('fast');\r\n\r\n    \t\t\t\t\t\t\treturn true;\r\n    \t\t\t\t\t\t} \r\n    \t\t\t\t\t\t$(\".update_url\").attr(\"href\", \"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/rent-storage?max_size=99999&lan=en&min_size=\" + data_obj['unit_data']['dcWidth'] * data_obj['unit_data']['dcLength'] + \"&property_id=\"+property_id + \"&is_calc=1\");\r\n    \t\t\t\t\t\t\r\n    \t\t\t\t\t\tunit_data=[];\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\tunit_data = data_obj['unit_data'];\r\n    \t\t\t\t\t\t\r\n    \t\t\t\t\t\tnewPositions=[];\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\tnewPositions = (typeof(data_obj['positions'][0]['items'][0]['x_origin_in_bin']) != \"undefined\") ? data_obj['positions'] : [];\r\n    \t\t\t\t\t\t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\/\/ calculate positions\r\n    \t\t\t\t\t\t\r\n    \t\t\t\t\t\t\/\/console.log(\"testing\"+typeof(data_obj['positions'][0]['x_origin_in_bin']) != \"undefined\");\r\n    \t\t\t\t\t\t\r\n    \t\t\t\t\t    if(newPositions.length == 0) {\r\n    \t\t\t\t\t\t\t\/\/ we have an error from the API\r\n    \t\t\t\t\t\t\tpackingError += \"Pleae select some items.\";\r\n    \t\t\t\t\t\t}else if(newPositions.length > 0 && item_count > newPositions[0]['items'].length ) {\r\n    \t\t\t\t\t\t\t\/\/ something's wrong\r\n    \t\t\t\t\t\t\tpackingError += \"Oops, looks like we are out of the size you need. Call us so we can help you further.\";\r\n    \t\t\t\t\t\t} else if(_error !== \"\") {\r\n    \t\t\t\t\t\t\t\/\/ we have an error from the API\r\n    \t\t\t\t\t\t\tpackingError += \"Oops, looks like we are out of the size you need. Call us so we can help you further.\";\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t} else if( packingError === \"\" ) {\r\n\t\t\t\t\t\t\t\t$('.packErrorDisplay').html(packingError).slideUp('fast');\r\n\t\t\t\t\t\t\t\t$('.m_virtualUnit').slideDown('fast');\r\n    \t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\/\/ all's well that ends well\r\n    \t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t$.each(newPositions[0]['items'], function ( i , v ) {\r\n    \t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\t\/\/ check if rotated around y\r\n    \t\t\t\t\t\t\t\tif(v['orig_size'] == v['sp_size']) {\r\n    \t\t\t\t\t\t\t\t\titemsToPack [ parseInt(v['id']) ] ['rot'] = 0;\r\n    \t\t\t\t\t\t\t\t} else {\r\n    \t\t\t\t\t\t\t\t\titemsToPack [ parseInt(v['id']) ] ['rot'] = 1;\r\n    \t\t\t\t\t\t\t\t}\r\n    \t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\t\/\/ check if artificial full-height item\t\t\t\t\r\n    \t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\t\/*actuallHeight = parseFloat(objByFileName[v['fileName']]['len_x']);\r\n    \t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\tif( actuallHeight > data_obj['presetHeight']) {\r\n    \t\t\t\t\t\t\t\t\ttempYpos =( ( data_obj['unit_data']['dcHeight'] * 12) - actuallHeight ) \/ 2 \r\n    \t\t\t\t\t\t\t\t\tv['y_origin_in_bin'] = v['y_origin_in_bin'] - tempYpos\/\/ - data_obj['height_offset']  ; \r\n    \t\t\t\t\t\t\t\t}\r\n    \t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\telse if( v['fileName'].search(\"x0u\") >= 0 || v['fileName'].search(\"x1u\") >= 0) {\r\n    \t\t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\t\ttempYpos = ( ( v['size_2'] - actuallHeight ) \/ 2) ;\r\n    \t\t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\t\tv['y_origin_in_bin'] = v['y_origin_in_bin'] - tempYpos + 0.5 - data_obj['height_offset']; \r\n    \t\t\t\t\t\t\t\t}\r\n    \t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\telse if( v['fileName'].search(\"x0s\") >= 0 || v['fileName'].search(\"x1s\") >= 0) {\r\n    \t\t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\t\ttempYpos = ( ( v['size_2'] - actuallHeight ) \/ 2) ;\r\n    \t\t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\t\tv['y_origin_in_bin'] = v['y_origin_in_bin'] - tempYpos - 0.5- data_obj['height_offset'];\r\n    \t\t\t\t\t\t\t\t}\r\n    \t\t\t\t\t\t\t\telse {\r\n    \t\t\t\t\t\t\t\t\tv['y_origin_in_bin'] = v['y_origin_in_bin'] - data_obj['height_offset'];\r\n    \t\t\t\t\t\t\t\t}\r\n    \t\t\t\t\t\t\t\t*\/\r\n    \t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\titemsToPack [ parseInt(v['id']) ] ['x_pos'] = v['x_origin_in_bin'];\r\n    \t\t\t\t\t\t\t\titemsToPack [ parseInt(v['id']) ] ['y_pos'] = v['y_origin_in_bin'];\r\n    \t\t\t\t\t\t\t\titemsToPack [ parseInt(v['id']) ] ['z_pos'] = v['z_origin_in_bin'];\r\n    \t\t\t\t\t\t\t\titemsToPack [ parseInt(v['id']) ] ['origId'] = parseInt(v['id']);\r\n    \t\t\t\t\t\t\t\titemsToPack [ parseInt(v['id']) ] ['dropOrder'] = parseInt(v['dropOrder']);\r\n    \t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\t\/\/ console.log(itemsToPack);\r\n    \t\t\t\t\t\t\t})\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\/\/update unit card\r\n    \t\t\t\t\t\t\t$('.containerUnitName').html( unit_data['dcWidth'] + 'x' +  unit_data['dcLength'] + 'Ft');\r\n                                $('.containerUnitSize').html( unit_data['dcWidth'] + 'W'+'x ' + unit_data['dcLength'] + 'L'+' x ' +  unit_data['dcHeight']+'H' );\r\n\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\tvolume = (unit_data['volume']\/1728).toFixed(1);\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t$('.containerUnitVol').html( volume + 'cu. ft.' );\r\n    \t\t\t\t\t\t\t$('.containerUsedSpace').html( ( (unit_data['filled_volume']\/1728).toFixed(1) ) + ' cu. ft. (' + unit_data['filled_percent'] + '%)' );\r\n    \t\t\t\t\t\t\t$('.containerItemsPacked').html( item_count );\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\tif(preset === \"empty\") {\r\n    \t\t\t\t\t\t\t\tpresetTitle = 'custom';\r\n    \t\t\t\t\t\t\t} else {\r\n    \t\t\t\t\t\t\t\tpresetTitle = preset.replace('_',' ');\r\n    \t\t\t\t\t\t\t}\r\n    \t\t\t\t\t\t\t$('.virtualPreset').html( presetTitle );\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\/\/ trigger grid update\r\n    \t\t\t\t\t\t\tsentObj = init();\r\n    \t\t\t\t\t\t\tsq_ft = unit_data['dcWidth'] * unit_data['dcLength'];\r\n    \t\t\t\t\t\t\tif( $('.incUnits').length > 0) cullUnits(sq_ft);\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\/\/if( $('#v_itemChooser').hasClass('activeVis') ) {\r\n    \t\t\t\t\t\t\t\t\/\/if(!firstRun)\r\n    \t\t\t\t\t\t\t\t\/\/$('#v_itemChooser').click();\r\n    \t\t\t\t\t\t\t\/\/}\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\tif( !$('#v_virtualUnit').hasClass('activeVis') ) {\r\n    \t\t\t\t\t\t\t\tif(!firstRun)\r\n    \t\t\t\t\t\t\t\t$('#v_virtualUnit').click();\r\n    \t\t\t\t\t\t\t}\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\ttry { scrollToFormTop( $('.m_virtualUnit').offset().top )   }  catch(err) {};\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\/\/if( !$('#v_recommended').hasClass('activeVis') ) {\r\n    \t\t\t\t\t\t\t\t\/\/$('#v_recommended').click();\r\n    \t\t\t\t\t\t\t\/\/}\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\tfirstRun = false;\r\n    \t\t\t\t\t\t}\r\n    \t\t\t\t\t\t\r\n    \t\t\t\t\t\tif(packingError !== \"\") {\r\n    \t\t\t\t\t\t    $('.packErrorDisplay').html(packingError).slideDown(); \r\n    \t\t\t\t\t\t    $('.m_virtualUnit').slideUp('fast'); \r\n    \t\t\t\t\t\t}\r\n    \t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar ajaxData = { 'post' : {'model' : 0,'preset': preset ,'action' : 'pack', 'data' :packing, 'fill' : fill_perc , 's_pid': '1512671994.431_2950544_50.89.117.195' ,'define_h': \"8\", 'model_url': '\/storage\/v16382\/beta-pinnacle-com\/public_html\/wp-content\/plugins\/3D_calculator\/models',  'external_id': 'fvw0GqEpM4O5LThG', 'lang': 'en', 'property_id' : property_id ,'locations_total' : 1 } };\r\n\t\t\t\t\tvar funcData = { 'build' : afterBuildFunc };\r\n\r\n\t\t\t\t\tcalc3DloadCalculationsRequest(ajaxData, funcData);\r\n    \t\t\t}\r\n\t\t\t});\r\n\t\t\r\n\t   \r\n    \t\t$('#contentBuild, .settingSubmit').click( function() { \r\n\r\n    \t\t\tif (waiting === true) return;\r\n    \t\t\t$('#load_scrim').show();\r\n    \t\t\tclearInterval(dropObj);\r\n    \t\t\twaiting = true;\r\n    \t\t\tchangeSettings = false;\r\n    \t\t\tcanDoDrop = false;\r\n    \t\t\t\r\n    \t\t\tif( $(this).hasClass('settingSubmit') ) {\r\n    \t\t\t\tchangeSettings = true;\r\n    \t\t\t}\r\n    \t\t\t\r\n    \t\t\t\/\/$('.catDivItems').hide();\r\n    \t\t\t\r\n    \t\t\tob3d =[];\r\n    \t\t\tpacking = [];\r\n    \t\t\titemsToPack =[];\r\n    \t\t\tloadOrder =[];\r\n    \t\t\titem_count = 0;\r\n    \t\t\tiVol = 0;\r\n    \t\t\t\r\n    \t\t\tfill_perc = $('#fillPercent').val()\r\n    \t\t\t\r\n    \t\t\t\r\n    \t\t\tpresets_2 = '';\r\n    \t\t\t\/\/ using custom items\r\n    \t\t\t\r\n    \t\t\tif (presets_2 === 'empty')  preset = 'empty';\r\n    \t\t\tif( preset === 'empty' ) {\r\n    \r\n    \t\t\t\t$('.itemsSelect').each( function(i,v) {\r\n    \t\t\t\t\tif($(this).val() > 0) {\r\n    \t\t\t\t\t\t\r\n    \t\t\t\t\t\titem_id = $(this).attr('id');\t\r\n    \t\t\t\t\t\txRefs = item_id.split('_');\r\n    \t\t\t\t\t\tobj_cat = xRefs[1];\r\n    \t\t\t\t\t\tobj_index = xRefs[2];\r\n    \t\t\t\t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\tfor (j = 1; j <= parseInt($(this).val()); j++) {\r\n    \t\t\t\t\t\t\titem_count++;\r\n    \t\t\t\t\t\t\tiVol += objXref[obj_cat][obj_index]['vol']\r\n    \t\t\t\t\t\t\titMem = $.extend(true,{}, objXref[obj_cat][obj_index] );\r\n    \t\t\t\t\t\t\tit=objXref[obj_cat][obj_index]['obj'];\r\n    \t\t\t\t\t\t\tpacking.push(it); \r\n    \t\t\t\t\t\t\titemsToPack.push(itMem); \r\n    \t\t\t\t\t\t}\r\n    \t\t\t\t\t}\r\n    \t\t\t\t})\r\n    \t\t\t\t\r\n    \t\t\t\/\/ using preset\r\n    \t\t\t} else {\r\n    \r\n    \t\t\t\t$.each( prePacked[preset].contents, function(i,v) {\r\n    \t\t\t\t\titem_count++;\r\n    \t\t\t\t\t\r\n    \t\t\t\t\titMem = $.extend(true,{}, objByFileName[v] );\r\n    \t\t\t\t\t\r\n    \t\t\t\t\tiVol += itMem['vol']\r\n    \t\t\t\t\tit=v;\r\n    \t\t\t\t\tpacking.push(it); \r\n    \t\t\t\t\titemsToPack.push(itMem); \r\n    \t\t\t\t})\r\n    \t\t\t\t\r\n    \t\t\t\tfill_perc = \"preset\";\r\n    \t\t\t}\r\n    \t\t\t\r\n    \t\t\r\n    \t\t\t\r\n    \t\t\tpackingError =\"\";\r\n    \t\t\t$('.packErrorDisplay').hide();\r\n    \t\t\t\r\n    \t\t\tif(packing.length < 1) {\r\n    \t\t\t\tpackingError += 'Please select some items';\r\n    \t\t\t}\r\n    \t\t\t\t  \r\n    \t\t\tif(iVol > 11059200) {\r\n    \t\t\t\tpackingError += \"Too many items selected. \";\r\n    \t\t\t}\r\n    \t\t\t\r\n    \t\t\ttestMe = packing;\r\n    \t\t\tnewPositions=[];\r\n    \t\t\t\r\n    \t\t\t\/\/empty renderere\r\n    \t\t\t$('.renderDiv').find('canvas').remove();\r\n    \t\t\t\r\n    \t\t\trender_ss = $('#r_ss').is(\":checked\");\r\n    \t\t\trender_su = $('#r_su').is(\":checked\");\r\n    \t\t\trender_aa = $('#r_aa').is(\":checked\");\r\n    \t\t\trender_ma = $('#r_ma').is(\":checked\");\r\n    \t\t\trender_gr = $('#r_gr').is(\":checked\");\r\n    \t\t\trender_tx = $('#r_tx').is(\":checked\");\r\n    \t\t\trender_lp = $('#r_lp').is(\":checked\");\t\r\n    \t\t\t\t\r\n    \t\t\tif(packingError !== \"\" && !changeSettings) {\r\n    \t\t\t\t$('.packErrorDisplay').html(packingError).slideDown();\r\n    \t\t\t\twaiting = false;\r\n    \t\t\t}\r\n    \t\t\t\r\n    \t\t\tif(packingError === \"\") {\t \r\n    \t\t\t    var property_id = document.getElementById(\"mySelect\") && document.getElementById(\"mySelect\").value ? document.getElementById(\"mySelect\").value : 0;\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar afterBuildFunc = function(data){\r\n\t\t\t\t\t\twaiting = false;\r\n    \t\t\t\t\t\r\n    \t\t\t\t\tif(data < 0) {\r\n    \t\t\t\t\t\t\/\/ fail\r\n    \t\t\t\t\t\tpackingError += \"Couldn't connect to server. \";\r\n    \t\t\t\t\t} else {\r\n    \t\t\t\t\t\t\/\/ success\r\n    \t\t\t\t\t\r\n    \t\t\t\t\t\tdata_obj = $.parseJSON(data);\r\n    \t\t\t\t\t\t_error = data_obj['error'];\r\n    \t\t\t\t\t\t\r\n                            if(_error !== \"\") {\r\n    \t\t\t\t\t\t\t\/\/ we have an error from the API\r\n    \t\t\t\t\t\t\tpackingError += \"Oops, looks like we are out of the size you need. Call us so we can help you further.\";\r\n    \t\t\t\t\t\t\t$('.packErrorDisplay').html(packingError).slideDown(); \r\n    \t\t\t\t\t\t\t$('.m_virtualUnit').slideUp('fast');\r\n\r\n    \t\t\t\t\t\t\treturn true;\r\n    \t\t\t\t\t\t} \r\n    \t\t\t\t\t\t$(\".update_url\").attr(\"href\", \"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/rent-storage?max_size=99999&lan=en&min_size=\" + data_obj['unit_data']['dcWidth'] * data_obj['unit_data']['dcLength'] + \"&property_id=\"+property_id + \"&is_calc=1\");\r\n    \t\t\t\t\t\t\r\n    \t\t\t\t\t\tunit_data=[];\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\tunit_data = data_obj['unit_data'];\r\n    \t\t\t\t\t\t\r\n    \t\t\t\t\t\tnewPositions=[];\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\tnewPositions = (typeof(data_obj['positions'][0]['items'][0]['x_origin_in_bin']) != \"undefined\") ? data_obj['positions'] : [];\r\n    \t\t\t\t\t\t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\/\/ calculate positions\r\n    \t\t\t\t\t\t\r\n    \t\t\t\t\t\t\/\/console.log(\"testing\"+typeof(data_obj['positions'][0]['x_origin_in_bin']) != \"undefined\");\r\n    \t\t\t\t\t\t\r\n    \t\t\t\t\t    if(newPositions.length == 0) {\r\n    \t\t\t\t\t\t\t\/\/ we have an error from the API\r\n    \t\t\t\t\t\t\tpackingError += \"Pleae select some items.\";\r\n    \t\t\t\t\t\t}else if(newPositions.length > 0 && item_count > newPositions[0]['items'].length ) {\r\n    \t\t\t\t\t\t\t\/\/ something's wrong\r\n    \t\t\t\t\t\t\tpackingError += \"Oops, looks like we are out of the size you need. Call us so we can help you further.\";\r\n    \t\t\t\t\t\t} else if(_error !== \"\") {\r\n    \t\t\t\t\t\t\t\/\/ we have an error from the API\r\n    \t\t\t\t\t\t\tpackingError += \"Oops, looks like we are out of the size you need. Call us so we can help you further.\";\r\n    \t\t\t\t\t\t} else if( packingError === \"\" ) {\r\n\t\t\t\t\t\t\t\t$('.packErrorDisplay').html(packingError).slideUp('fast');\r\n\t\t\t\t\t\t\t\t$('.m_virtualUnit').slideDown('fast');\r\n    \t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\/\/ all's well that ends well\r\n    \t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t$.each(newPositions[0]['items'], function ( i , v ) {\r\n    \t\t\t\t\t\t\t\t\/\/ check if rotated around y\r\n    \t\t\t\t\t\t\t\tif(v['orig_size'] == v['sp_size']) {\r\n    \t\t\t\t\t\t\t\t\titemsToPack [ parseInt(v['id']) ] ['rot'] = 0;\r\n    \t\t\t\t\t\t\t\t} else {\r\n    \t\t\t\t\t\t\t\t\titemsToPack [ parseInt(v['id']) ] ['rot'] = 1;\r\n    \t\t\t\t\t\t\t\t}\r\n    \t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\t\/\/ check if artificial full-height item\t\t\t\t\r\n    \t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\t\/*actuallHeight = parseFloat(objByFileName[v['fileName']]['len_x']);\r\n    \t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\tif( actuallHeight > data_obj['presetHeight']) {\r\n    \t\t\t\t\t\t\t\t\ttempYpos =( ( data_obj['unit_data']['dcHeight'] * 12) - actuallHeight ) \/ 2 \r\n    \t\t\t\t\t\t\t\t\tv['y_origin_in_bin'] = v['y_origin_in_bin'] - tempYpos\/\/ - data_obj['height_offset']  ; \r\n    \t\t\t\t\t\t\t\t}\r\n    \t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\telse if( v['fileName'].search(\"x0u\") >= 0 || v['fileName'].search(\"x1u\") >= 0) {\r\n    \t\t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\t\ttempYpos = ( ( v['size_2'] - actuallHeight ) \/ 2) ;\r\n    \t\t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\t\tv['y_origin_in_bin'] = v['y_origin_in_bin'] - tempYpos + 0.5 - data_obj['height_offset']; \r\n    \t\t\t\t\t\t\t\t}\r\n    \t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\telse if( v['fileName'].search(\"x0s\") >= 0 || v['fileName'].search(\"x1s\") >= 0) {\r\n    \t\t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\t\ttempYpos = ( ( v['size_2'] - actuallHeight ) \/ 2) ;\r\n    \t\t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\t\tv['y_origin_in_bin'] = v['y_origin_in_bin'] - tempYpos - 0.5- data_obj['height_offset'];\r\n    \t\t\t\t\t\t\t\t}\r\n    \t\t\t\t\t\t\t\telse {\r\n    \t\t\t\t\t\t\t\t\tv['y_origin_in_bin'] = v['y_origin_in_bin'] - data_obj['height_offset'];\r\n    \t\t\t\t\t\t\t\t}\r\n    \t\t\t\t\t\t\t\t*\/\r\n    \t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\titemsToPack [ parseInt(v['id']) ] ['x_pos'] = v['x_origin_in_bin'];\r\n    \t\t\t\t\t\t\t\titemsToPack [ parseInt(v['id']) ] ['y_pos'] = v['y_origin_in_bin'];\r\n    \t\t\t\t\t\t\t\titemsToPack [ parseInt(v['id']) ] ['z_pos'] = v['z_origin_in_bin'];\r\n    \t\t\t\t\t\t\t\titemsToPack [ parseInt(v['id']) ] ['origId'] = parseInt(v['id']);\r\n    \t\t\t\t\t\t\t\titemsToPack [ parseInt(v['id']) ] ['dropOrder'] = parseInt(v['dropOrder']);\r\n    \t\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\t\/\/ console.log(itemsToPack);\r\n    \t\t\t\t\t\t\t});\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\/\/update unit card\r\n    \t\t\t\t\t\t\t$('.containerUnitName').html( unit_data['dcWidth'] + 'x' +  unit_data['dcLength'] + 'Ft');\r\n                                $('.containerUnitSize').html( unit_data['dcWidth'] + 'W'+'x ' + unit_data['dcLength'] + 'L'+' x ' +  unit_data['dcHeight']+'H' );\r\n\t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\tvolume = (unit_data['volume']\/1728).toFixed(1);\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t$('.containerUnitVol').html( volume + 'cu. ft.' );\r\n    \t\t\t\t\t\t\t$('.containerUsedSpace').html( ( (unit_data['filled_volume']\/1728).toFixed(1) ) + ' cu. ft. (' + unit_data['filled_percent'] + '%)' );\r\n    \t\t\t\t\t\t\t$('.containerItemsPacked').html( item_count );\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\tif(preset === \"empty\") {\r\n    \t\t\t\t\t\t\t\tpresetTitle = 'custom';\r\n    \t\t\t\t\t\t\t} else {\r\n    \t\t\t\t\t\t\t\tpresetTitle = preset.replace('_',' ');\r\n    \t\t\t\t\t\t\t}\r\n    \t\t\t\t\t\t\t$('.virtualPreset').html( presetTitle );\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\/\/ trigger grid update\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\tsentObj = init();\r\n    \t\t\t\t\t\t\tsq_ft = unit_data['dcWidth'] * unit_data['dcLength'];\r\n    \t\t\t\t\t\t\tif( $('.incUnits').length > 0) cullUnits(sq_ft);\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\/\/if( $('#v_itemChooser').hasClass('activeVis') ) {\r\n    \t\t\t\t\t\t\t\t\/\/if(!firstRun)\r\n    \t\t\t\t\t\t\t\t\/\/$('#v_itemChooser').click();\r\n    \t\t\t\t\t\t\t\/\/}\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\tif( !$('#v_virtualUnit').hasClass('activeVis') ) {\r\n    \t\t\t\t\t\t\t\tif(!firstRun)\r\n    \t\t\t\t\t\t\t\t$('#v_virtualUnit').click();\r\n    \t\t\t\t\t\t\t}\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\ttry { scrollToFormTop( $('.m_virtualUnit').offset().top )   }  catch(err) {};\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\t\/\/if( !$('#v_recommended').hasClass('activeVis') ) {\r\n    \t\t\t\t\t\t\t\t\/\/$('#v_recommended').click();\r\n    \t\t\t\t\t\t\t\/\/}\r\n    \t\t\t\t\t\t\t\r\n    \t\t\t\t\t\t\tfirstRun = false;\r\n    \t\t\t\t\t\t}\r\n    \t\t\t\t\t\t\r\n    \t\t\t\t\t\tif(packingError !== \"\") {\r\n    \t\t\t\t\t\t    $('.packErrorDisplay').html(packingError).slideDown(); \r\n    \t\t\t\t\t\t    $('.m_virtualUnit').slideUp('fast'); \r\n    \t\t\t\t\t\t}\r\n    \t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar ajaxData = { 'post' : {'model' : 0,'preset': preset ,'action' : 'pack', 'data' :packing, 'fill' : fill_perc , 's_pid': '1512671994.431_2950544_50.89.117.195' ,'define_h': \"8\", 'model_url': '\/storage\/v16382\/beta-pinnacle-com\/public_html\/wp-content\/plugins\/3D_calculator\/models',  'external_id': 'fvw0GqEpM4O5LThG', 'lang': 'en', 'property_id' : property_id ,'locations_total' : 1 } };\r\n\t\t\t\t\tvar funcData = { 'build' : afterBuildFunc };\r\n\r\n\t\t\t\t\tcalc3DloadCalculationsRequest(ajaxData, funcData);\r\n    \t\t\t}\r\n    \t\t})\r\n\t\t});\r\n\t\tinit();\r\n\t\tif(firstRun) animate3d();\r\n\t\tbindRenderDiv();\r\n\t\t\r\n\t\t\/\/set up defaul view\r\n\t\t\r\n\t\t$('.visModes').click( function() {\r\n            if(newPositions.length == 0){\r\n               \r\n    \t\t\t$('.packErrorDisplay').html('Please select some items').slideDown(); \r\n    \t\t\t$('.m_virtualUnit').slideUp('fast');\r\n\r\n    \t\t\treturn true;\r\n            }\r\n          \tvis_id = $(this).attr('id');\r\n            vis_id = vis_id.replace('v_','');\r\n            \r\n\t\t\t$(this).toggleClass('activeVis');\r\n\t\t\t\r\n\t\t\t$('.showVisMode').removeClass('showVisMode');\r\n\t\t\t\r\n\t\t\t$('.visModes').each( function(i,v) {\r\n\t\t\t\tvisibleModes = $(v).attr('id');\r\n\t\t\t\tvisibleModes = visibleModes.replace('v_','m_');\r\n\t\t\t\t\r\n\t\t\t\tif( $(this).hasClass('activeVis') ) {\r\n\t\t\t\t\t$(this).find('i').removeClass('fa-square-o').addClass('fa-check-square-o');\r\n\t\t\t\t\t$('.' + visibleModes).addClass('showVisMode');\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(this).find('i').removeClass('fa-check-square-o').addClass('fa-square-o');\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t})\r\n    \r\n\t\t\t$('.m_itemChooser, .m_virtualUnit, .m_recommended, .m_itemChooserLocation').not('.showVisMode').slideUp('fast');\r\n\t\t\t$('.m_itemChooser.showVisMode ,.m_virtualUnit.showVisMode ,.m_recommended.showVisMode,.m_itemChooserLocation.showVisMode').not(':visible').slideDown('fast', \t\t\t\tfunction() {if( $('.m_'+vis_id+':visible').length > 0  ) {\r\n\t\t\t\t\ttry { scrollToFormTop( $('.m_'+vis_id).offset().top )   }  catch(err) {};\r\n\t\t\t\t}}\r\n\t\t\t);\r\n        }) \r\n\t\t\r\n\t\t$('.unitToggle').click( function(){\r\n\t\t\t\/*\r\n\t\t\tif( $('#v_itemChooser').hasClass('activeVis') ) {\r\n\t\t\t\t$('#v_itemChooser').click();\r\n\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\tif( $('#v_virtualUnit').hasClass('activeVis')  ) {\r\n\t\t\t\t$('#v_virtualUnit').click();\r\n\t\t\t} *\/\r\n\t\t\t\r\n\t\t\tif( !$('#v_recommended').hasClass('activeVis')  ) {\r\n\t\t\t\t$('#v_recommended').click();\r\n\t\t\t} \r\n\t\t\ttry { scrollToFormTop( $('.m_recommended').offset().top    ) } catch(err) {};\r\n\t\t\t\r\n\t\t\t\r\n\t\t})\r\n\t\t\/\/ setup default display;\r\n\t\t$('.presetCard').eq(0).click(); \r\n\t});\r\n\t\r\n\t\r\n\tfunction pauseEvent(e){\r\n\t\tif(e.stopPropagation) e.stopPropagation();\r\n\t\tif(e.preventDefault) e.preventDefault();\r\n\t\te.cancelBubble=true;\r\n\t\te.returnValue=false;\r\n\t\treturn false;\r\n\t}\r\n\t\r\n\tfunction _m_m() {\r\n\t\thandleMouseMove();\r\n\t\tcontrols.update( clock.getDelta() );\r\n\t\tcontrols.activeLook = true;\r\n\t\tif(!isPaused) orbit=false;\r\n\t\tdpad=true;\r\n\t\r\n\t}\r\n\t\r\n\tfunction m_left() {\r\n\t\t_m_m();\r\n\t\tcontrols.moveLeft = true;\r\n\t}\r\n\t\r\n\tfunction m_right() {\r\n\t\t_m_m();\r\n\t\tcontrols.moveRight = true;\r\n\t}\r\n\t\r\n\tfunction m_forward() {\r\n\t\t_m_m();\r\n\t\tcontrols.moveForward = true;\r\n\t}\r\n\t\r\n\tfunction m_backward() {\r\n\t\t_m_m();\r\n\t\tcontrols.moveBackward = true;\r\n\t}\r\n\t\r\n\tfunction m_stop() {\r\n\t\tdpad=false;\r\n\t\tcontrols.update( clock.getDelta() );\r\n\t\tcontrols.moveLeft = false;\r\n\t\tcontrols.moveRight = false;\r\n\t\tcontrols.moveForward = false;\r\n\t\tcontrols.moveBackward = false;\r\n\t\tcontrols.mouseX = 0;\r\n\t\tcontrols.mouseY = 0;\r\n\t}\r\n\t\r\n\tfunction doModalSwap(_this){\r\n\t\tif( $(_this).hasClass('selectedMode') && !$(_this).hasClass('modals_hidden')) {\r\n\t\t\t$(_this).addClass('modals_hidden');\r\n\t\t\t$('.storage_calc_modal').hide();\r\n\t\t} else {\r\n\t\t\t$('.moveMode').removeClass('selectedMode modals_hidden');\r\n\t\t\t$(_this).addClass('selectedMode');\r\n\t\t\t$('.storage_calc_modal').hide();\r\n\t\t\t$('.modal_' + _calcModal).show();\r\n\t\t}\r\n\t\tif(typeof camera !== \"undefined\" ) onWindowResize();\r\n\t}\r\n\t\t\r\n\tfunction bindRenderDiv() {\r\n\t\t\t\r\n\t\t\t$('.renderDiv').unbind();\r\n\t\t\t\r\n\t\t\t$('.renderDiv').click(function(){\r\n\t\t\t\tm_stop();\r\n\t\t\t\t$('.renderDiv').addClass('activePort');\r\n\t\t\t\t$('.infoTop').removeClass('activePort');\r\n\t\t\t\tif(!isPaused) orbit = false;\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\t$('.infoTop').click(function(){\r\n\t\t\t\t$('.renderDiv').removeClass('activePort');\r\n\t\t\t\t$('.infoTop').addClass('activePort');\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\t$('.infoTop').mouseover(function(){\r\n\t\t\t\t$('.infoTop').addClass('activePort');\r\n\t\t\t\t$('.renderDiv').removeClass('activePort');\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\t$('.infoTop').mouseout(function(){\r\n\t\t\t\t$('.infoTop').removeClass('activePort');\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\t$('.renderDiv').mouseout(function(){\r\n\t\t\t\tcanMoveCam = false;\r\n\t\t\t\t$('.renderDiv').removeClass('activePort');\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\t$('.renderDiv').mouseover(function(){\r\n\t\t\t\tcanMoveCam = true;\r\n\t\t\t\tif(!isPaused) orbit=false;\r\n\t\t\t\ttto = 0;\r\n\t\t\t\t$('.renderDiv').addClass('activePort');\r\n\t\t\t\t$('.infoTop').removeClass('activePort');\r\n\t\t\t})\r\n\t\t\t\r\n\t\t\t$('.renderDiv').mouseout(function(){\r\n\t\t\t\tcanMoveCam = false;\r\n\t\t\t\t$('.renderDiv').removeClass('activePort');\r\n\t\t\t})\r\n\t\t}\r\n\r\n\tfunction  cullUnits(sq_ft) {\r\n\t\t$('.f_min_sizes option').each(  function (i,v) {  \r\n\r\n\t\t\tsetVal = $(this).val() \r\n\t\t\tfound_sq_ft = parseInt(setVal.replace('_sq',''));\r\n\t\t\tif(found_sq_ft <= sq_ft ) {\r\n\t\t\t\t$('.f_min_sizes').val(setVal).trigger('change')\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction init() {\r\n\t\t\r\n\t\t\/\/ w * h * l\r\n\t\tuW = unit_data['dcWidth']*scale_mult;\r\n\t\tuH = unit_data['dcHeight']*scale_mult;\r\n\t\tuL = unit_data['dcLength']*scale_mult;\r\n\t\t\r\n\t\t\/\/itemDrop = uL* 2;\r\n\t\tif(use_canvas === true ) itemDrop = 0;\r\n\t\telse itemDrop = 200;\r\n\t\t\r\n\t\tif(uW > uL) cOffset = (uW\/2)+100; else  cOffset = (uL\/2)+100;\r\n\t\tcontainer = $('.renderDiv');\r\n\t\t\t\r\n\r\n\t\tcamera = new THREE.PerspectiveCamera( 60, canvasWidth \/ canvasHeight, 1, 2000 ); \r\n\r\n\t\tcamera.position.x = cOffset* -1;; \r\n\t\tcamera.position.y =\t25; \r\n\t\tcamera.position.z = 0\r\n\t\t\r\n\t\tcamStartX = camera.position.x;\r\n\t\tcamStartY = camera.position.y;\r\n\t\tcamStartZ = camera.position.z;\r\n\t\t\r\n\t\t\r\n\r\n\t\torbitcamera = new THREE.PerspectiveCamera( 60, canvasWidth \/ canvasHeight, 1, 2000 );\r\n\r\n\t\torbitcamera.position.x = cOffset* 1; \r\n\t\torbitcamera.position.y =25; \r\n\t\torbitcamera.position.z = cOffset* -1;\r\n\t\t\t\t\r\n\t\t\r\n\t\tcameraCube = new THREE.PerspectiveCamera( 60, canvasWidth \/ canvasHeight, 1, 2000 );\r\n\t\t\r\n\t\tprojector = new THREE.Projector;\r\n\r\n\t\t\/\/ scene\r\n\t\t\r\n\t\tscene = new Physijs.Scene({ fixedTimeStep: 1 \/ 120 });\r\n\t\tscene.setGravity(new THREE.Vector3( 0, 0, 0 ));\r\n\t\t\r\n\t\tscene.addEventListener(\r\n\t\t\t'update', doSim\r\n\t\t\t\r\n\t\t);\r\n\r\n\t\tsceneCube = new THREE.Scene();\r\n\t\tvar ambient = new THREE.AmbientLight( 0x9b957f);\r\n\t\tscene.add( ambient );\r\n\r\n\t\tdirectionalLight = new THREE.DirectionalLight( 0xf6efd5 , 0.8);  \r\n\t\tdirectionalLight.position.set( 0, 0, 0 );\r\n\t\tdirectionalLight.castShadow =render_ss;\r\n\t\tdirectionalLight.shadowBias = 0.0001; \r\n\t\tdirectionalLight.shadowDarkness = 0.6;\r\n\t\tdirectionalLight.shadowMapWidth = 4096;\r\n\t\tdirectionalLight.shadowMapHeight = 4096;\r\n\t\tdirectionalLight.shadowCameraNear = 0.01;\r\n\t\tdirectionalLight.shadowCameraFar = 1000;  \r\n\t\tdirectionalLight.lookAt( scene );\r\n\t\t   \r\n\t\tscene.add( directionalLight );\r\n\t\t\r\n\t\tif ( render_su ) {\r\n\t\t\t\r\n\t\t\taddLight( 0.08, 0.8, 0.5,    0, 450, 1000 );\r\n\t\t\t\r\n\t\t}\r\n\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\/\/ unit model\t\t\t\t\r\n\r\n\t\tvar geometry_unit_wall_lr \t= new THREE.PlaneGeometry( uL , uH , 1, 1 );\r\n\t\tvar geometry_unit_wall_fb \t= new THREE.PlaneGeometry( uW , uH , 1, 1 );\r\n\t\tvar geometry_unit_floor \t= new THREE.BoxGeometry( uW , 2, uL  );\r\n\t\t\r\n\t\tvar material_unit \t= Physijs.createMaterial( new THREE.MeshLambertMaterial( {color: 0xcccccc, side: THREE.BackSide} ), 1, 0.0); \r\n\t\t\t\r\n\t\t\r\n\t\t\/\/texturefl = THREE.ImageUtils.loadTexture(m_path + 'concrete.jpg');\r\n\t\t\/\/texturefl.wrapS = THREE.RepeatWrapping;\r\n\t\t\/\/texturefl.wrapT = THREE.RepeatWrapping;\r\n\t\t\r\n\r\n\t\tvar material_unit_floor\t= Physijs.createMaterial( new THREE.MeshLambertMaterial( {color: 0x666666 } ), 1, 0.0 );\r\n\t\tvar material_unit_inv = Physijs.createMaterial(  new THREE.MeshLambertMaterial( {color: 0xffffff, transparent: true, opacity: 0} ), 1, 0 );\r\n\t\t\r\n\t\t\r\n\t\tvar material_floor = new THREE.MeshLambertMaterial( {color: 0xffffff,  transparent: true, opacity: 0, side: THREE.BackSide} );\r\n\t\tvar geometry_floor = new THREE.PlaneGeometry( uW*baseMult, uL*baseMult , 1 , 1 );\r\n\r\n\r\nif(use_canvas === true ) {\r\n\tmaterial_unit_floor.overdraw = 0.5;\r\n\tmaterial_unit.overdraw = 0.5;\r\n\tmaterial_unit_inv.overdraw = 0.5;\r\n\tmaterial_floor.overdraw = 0.5;\r\n} \r\n\t\t\r\n\t\tunitWall_L\t= new Physijs.BoxMesh( geometry_unit_wall_lr, \tmaterial_unit );\r\n\t\tunitWall_R \t= new Physijs.BoxMesh( geometry_unit_wall_lr, \tmaterial_unit );\r\n\t\tunitWall_B \t= new Physijs.BoxMesh( geometry_unit_wall_fb, \tmaterial_unit );\r\n\t\tunitWall_F \t= new Physijs.BoxMesh( geometry_unit_wall_fb, \tmaterial_unit_inv );\r\n\t\t\r\n\t\tunitWall_L.castShadow = false;\r\n\t\tunitWall_L.receiveShadow = render_ss; \r\n\t\t\r\n\t\tunitWall_R.castShadow = false;\r\n\t\tunitWall_R.receiveShadow = render_ss; \r\n\t\t\r\n\t\tunitWall_B.castShadow = false;\r\n\t\tunitWall_B.receiveShadow = true; \r\n\r\n\t\tunitWall_F.castShadow = false;\r\n\t\tunitWall_F.receiveShadow = render_ss; \t\t\t\t\t\t\r\n\r\n\t\t\r\n\t\t\r\n\t\tunitWall_L.position.x = ( ( uW \/ 2 )  * -1 );\r\n\t\tunitWall_L.position.y = 0;\r\n\t\tunitWall_L.position.z = 0;\r\n\t\tunitWall_L.rotateY( (Math.PI\/2) *-1 );\r\n\t\t\r\n\t\tunitWall_R.position.x = ( ( uW \/ 2 )  * 1 );\r\n\t\tunitWall_R.position.y = 0;\r\n\t\tunitWall_R.position.z = 0;\r\n\t\tunitWall_R.rotateY( (Math.PI\/2)  );\r\n\t\t\r\n\t\tunitWall_B.position.x = 0;\r\n\t\tunitWall_B.position.y = 0;\r\n\t\tunitWall_B.position.z = ( ( uL \/ 2 )  * 1 );\r\n\t\t\r\n\t\tunitWall_F.position.x = 0;\r\n\t\tunitWall_F.position.y = 0;\r\n\t\tunitWall_F.position.z = ( ( uL \/ 2 )  * -1 );\r\n\r\n\r\nif(use_canvas === true ) {\t\r\n\t\r\n\tedges_unitWall_L = new THREE.EdgesHelper( unitWall_L, 0x666666);\r\n\tedges_unitWall_R = new THREE.EdgesHelper( unitWall_R, 0x666666 );\r\n\tedges_unitWall_B = new THREE.EdgesHelper( unitWall_B, 0x666666 );\r\n\tedges_unitWall_F = new THREE.EdgesHelper( unitWall_F, 0x666666 );\r\n\tscene.add( edges_unitWall_L );\t\r\n\tscene.add( edges_unitWall_R );\t\r\n\tscene.add( edges_unitWall_B );\t\r\n\tscene.add( edges_unitWall_F );\t\r\n\t\t\r\n\tunitWall_L.visible = false;\r\n\tunitWall_R.visible = false;\r\n\tunitWall_B.visible = false;\r\n\tunitWall_F.visible = false;\r\n}\r\n\t\t\r\n\t\tscene.add( unitWall_L );\r\n\t\tscene.add( unitWall_R );\r\n\t\tscene.add( unitWall_B );\r\n\t\tscene.add( unitWall_F );\t\r\n\t\t\r\n\t\t\r\n\t\tunitFloor \t= new Physijs.BoxMesh( geometry_unit_floor, material_unit_floor, 0 );\r\n\t\t\r\n\t\tunitFloor.castShadow = false;\r\n\t\tunitFloor.receiveShadow = render_ss; \r\n\t\t\r\n\t\tfloor_plane = new Physijs.BoxMesh( geometry_floor, material_floor );\r\n\t\t\r\n\t\tunitFloor.position.y =  ((uH\/2)*-1) - 1;\r\n\t\t\r\n\t\tfloor_plane.rotateX( Math.PI \/ 2 );\r\n\t\tfloor_plane.position.x = 0;\r\n\t\tfloor_plane.position.y = ((uH\/2)*-1)-2;\r\n\t\tfloor_plane.position.z = 0;\r\n\t\t\t\t\t\r\nif(use_canvas === false ) {\t\t\r\n\t\tscene.add( unitFloor );\r\n}\r\n\t\t\r\n\t\tscene.add( floor_plane );\r\n\t\t\r\n\t\tvar geometry_crossHair \t= new THREE.PlaneGeometry( .075 ,.075 ,1,1  );\r\n\t\tvar texture_crossHair = THREE.ImageUtils.loadTexture('https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/\/images\/crosshair.png');\r\n\t\t\r\n\t\tvar material_crossHair\t= Physijs.createMaterial( new THREE.MeshLambertMaterial( {color: 0x000000, map: texture_crossHair,transparent: true, opacity: 1} ), 1, 0.0 );\r\n\t\t\r\n\t\tcameraTargetBox\t= new THREE.Mesh( geometry_crossHair, \tmaterial_crossHair );\r\n\t\t\r\n\t\tscene.add( cameraTargetBox );\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\/\/ scale lines\r\n\t\tif( render_ma ) {\r\n\t\t\tvar material_line = new THREE.LineBasicMaterial({ color: 0xaaaaaa});\r\n\t\t\t\r\n\t\t\taxes = [];\r\n\t\t\t\r\n\t\t\taxes[0]=[];\r\n\t\t\taxes[0]['x']= ( (uW\/2) + 6 ) ;\r\n\t\t\taxes[0]['y']= uH;\r\n\t\t\taxes[0]['z']= ( uL\/2 ) * -1;\r\n\t\t\t\r\n\t\t\taxes[1]=[];\r\n\t\t\taxes[1]['x']= ( ( uW\/2 ) + 6);\r\n\t\t\taxes[1]['y']= ( uH\/2 ) * -1;\r\n\t\t\taxes[1]['z']=  uL;\r\n\t\t\t\r\n\t\t\taxes[2]=[];\r\n\t\t\taxes[2]['x']= uW;\r\n\t\t\taxes[2]['y']= ( uH\/2 ) * -1;\r\n\t\t\taxes[2]['z']= ( ( uL\/2 ) + 6 ) * -1;\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tfor (axis = 0; axis <= 2; axis++) {\r\n\t\t\t\ta=[];\r\n\t\t\t\ta.x = axes[axis].x;\r\n\t\t\t\ta.y = axes[axis].y;\r\n\t\t\t\ta.z = axes[axis].z;\r\n\t\t\t\t\r\n\t\t\t\tif(axis === 0 ) a.l =  a.y;\r\n\t\t\t\telse if(axis === 1 ) a.l =  a.z; \r\n\t\t\t\telse if(axis === 2 ) a.l =  a.x; \r\n\t\t\t\t\r\n\t\t\t\tfor (i = 0; i <= a.l; i++) {\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar geometry_line = new THREE.Geometry();\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\tlineLength = 4 ;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif( i  === a.l || i === 0 ) lineLength = 12 ;\r\n\t\t\t\t\telse if( i % 12 === 0 ) lineLength = 10 ;\r\n\t\t\t\t\telse if( i % 6 === 0 ) lineLength = 6 ;\r\n\t\t\t\t\t\r\n\t\t\t\t\tllx = 0;\r\n\t\t\t\t\tlly = 0;\r\n\t\t\t\t\tllz = 0;\r\n\t\t\t\t\t\r\n\t\t\t\t\tsOffsetx = 0;\r\n\t\t\t\t\tsOffsety = 0;\r\n\t\t\t\t\tsOffsetz = 0;\r\n\t\t\t\t\t\r\n\t\t\t\t\trotX = 0;\r\n\t\t\t\t\trotY = Math.PI;\r\n\t\t\t\t\trotZ = 0;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(axis===0) {\r\n\t\t\t\t\t\tly = (i)-(a.y\/2); \r\n\t\t\t\t\t\tllx = lineLength * -1;\r\n\t\t\t\t\t\tsOffsetx = -20;\r\n\t\t\t\t\t\tsOffsety = 0;\r\n\t\t\t\t\t\tsOffsetz = 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tly = a.y;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(axis===1) {\r\n\t\t\t\t\t\tlz = (i)-(a.z\/2);\r\n\t\t\t\t\t\tllx = lineLength * -1\r\n\t\t\t\t\t\tsOffsetx =  -20;\r\n\t\t\t\t\t\tsOffsety = 0;\r\n\t\t\t\t\t\tsOffsetz = 0;\r\n\t\t\t\t\t\trotX = (Math.PI\/2); \r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tlz = a.z;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(axis===2) {\r\n\t\t\t\t\t\tlx = (a.x\/2) - (i);\r\n\t\t\t\t\t\tllz = lineLength;\r\n\t\t\t\t\t\tsOffsetx = 0;\r\n\t\t\t\t\t\tsOffsety = 0;\r\n\t\t\t\t\t\tsOffsetz = 16;\r\n\t\t\t\t\t\trotX = (Math.PI\/2);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tlx = a.x;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tgeometry_line.vertices.push(new THREE.Vector3(lx\t\t\t\t,ly,\t lz));\r\n\t\t\t\t\tgeometry_line.vertices.push(new THREE.Vector3(lx - llx\t\t\t,ly,\t lz - llz));\r\n\t\t\t\t\t\r\n\t\t\t\t\tvar line = new THREE.Line(geometry_line, material_line);\r\n\t\t\t\t\tscene.add( line );\r\n\t\t\t\t\r\n\t\t\t\t\tif(  (i == a.l || i % 12 === 0 ) && !( i === 0 && axis === 1 ) ) {\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(i == a.l) {\r\n\t\t\t\t\t\t\tfSize = 4; \r\n\t\t\t\t\t\t\tfSuff = \" Ft\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tfSize = 3; \r\n\t\t\t\t\t\t\tfSuff = \"\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tvar spritey = makeTextSprite( \r\n\t\t\t\t\t\t\t(i\/12)+ fSuff, \r\n\t\t\t\t\t\t\t{\tfontsize: fSize ,\r\n\t\t\t\t\t\t\t\ts_rotX : rotX,\r\n\t\t\t\t\t\t\t\ts_rotY : rotY,\r\n\t\t\t\t\t\t\t\ts_rotz : rotZ\r\n\t\t\t\t\t\t\t} \r\n\t\t\t\t\t\t );\r\n\t\t\t\t\t\tspritey.position.set(lx-sOffsetx,ly-sOffsety,lz-sOffsetz);\r\n\t\t\t\t\t\tscene.add( spritey );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\/\/ entry marker\r\n\t\t\t\r\n\t\t\tvar texture_entry = THREE.ImageUtils.loadTexture( \"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/\/images\/door.png\" );\r\n\t\t\tvar material_entry = new THREE.MeshLambertMaterial( {color: 0xffffff, side: THREE.DoubleSide, transparent: true, opacity: 0.2, map: texture_entry} );\r\n\t\t\tvar geometry_entry = new THREE.PlaneGeometry( 1*baseMult, 0.5*baseMult , 1 , 1 );\r\n\t\t\tentry_plane = new THREE.Mesh( geometry_entry, material_entry );\r\n\t\t\t\r\n\t\t\tentry_plane.position.x = 0 * -1;\r\n\t\t\tentry_plane.position.y = ( uH\/2 ) * -1;\r\n\t\t\tentry_plane.position.z = ( ( uL\/2 ) + 40 ) * -1;\r\n\t\t\t\r\n\t\t\tentry_plane.rotation.x = (Math.PI\/2);\r\n\t\t\t\r\n\t\t\tentry_plane.rotation.y = (Math.PI);\r\n\t\t\t\r\n\t\t\tscene.add( entry_plane );\r\n\t\t}\r\n\t\t\r\n\t\t\t\/\/ threejs doesn't recognize imported environment maps so we need to manually attach them\r\n\t\tvar path = \"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/\/images\/environment\";\r\n\t\tvar format = '.jpg';\r\n\t\tvar urls1 = [\r\n\t\t\t\tpath+'_1'+format, path+'_1'+format,\r\n\t\t\t\tpath+'_1'+format, path+'_1'+format,\r\n\t\t\t\tpath+'_1'+format, path+'_1'+format\r\n\t\t\t];\r\n\t\tvar urls2 = [\r\n\t\t\t\tpath+'_2'+format, path+'_2'+format,\r\n\t\t\t\tpath+'_2'+format, path+'_2'+format,\r\n\t\t\t\tpath+'_2'+format, path+'_2'+format\r\n\t\t\t];\r\n\t\t\t\r\n\t\tvar alpham = \t\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/\/images\/alpha.jpg\";\r\n\r\n\r\n\t\tvar textureCube1 = THREE.ImageUtils.loadTextureCube( urls1 );\r\n\t\tvar material_chrome = new THREE.MeshBasicMaterial( { color: 0xffffff, envMap: textureCube1 } );\r\n\t\tif(use_canvas === true ) material_chrome.overdraw = 0.5;\r\n\t\t\r\n\t\tvar textureCube3 = THREE.ImageUtils.loadTextureCube( urls1 );\r\n\t\tvar material_glass = new THREE.MeshBasicMaterial( { color: 0xffffff,alphaTest: 0.9, envMap: textureCube3} );\r\n\t\tif(use_canvas === true ) material_glass.overdraw = 0.5;\r\n\r\n\t\tvar textureCube2 = THREE.ImageUtils.loadTextureCube( urls2 );\r\n\t\tvar material_blank_screen = new THREE.MeshBasicMaterial( { color: 0xffffff, envMap: textureCube2 } );\r\n\t\tif(use_canvas === true ) material_blank_screen.overdraw = 0.5;\r\n\t\t\r\n\t\tmanager = new THREE.LoadingManager();\r\n\t\t\r\n\t\tmanager.onProgress = function ( item, loaded, total ) {\r\n\t\t\t\r\n\t\t\tpathParts = item.split('?');\r\n\t\t\titemParts = pathParts[1].split('_');\r\n\t\t\titemIndex = itemParts[0]\r\n\t\t\tloadOrder.push( (parseInt(itemIndex)-1) );\r\n\t\t};\r\n\t\t\r\n\t\tmanager.onLoad = function ( ) {\r\n\t\t\t\r\n\t\t\t\/\/requestAnimationFrame( render );\r\n\t\t\t\/\/scene.simulate();\r\n\r\n\t\t\t$.each(ob3d , function(i,v) {\r\n\t\t\t\tif (itemsToPack[loadOrder[i]]){\r\n\t\t\t\t\tob3d[i].position.x = itemsToPack[loadOrder[i]]['x_pos'];\r\n\t\t\t\t\tob3d[i].position.y = itemsToPack[loadOrder[i]]['y_pos']; \r\n\t\t\t\t\tob3d[i].position.y = itemsToPack[loadOrder[i]]['y_pos'] + itemDrop;\t\r\n\t\t\t\t\tob3d[i].position.z = itemsToPack[loadOrder[i]]['z_pos'];\r\n\t\t\t\t\tob3d[i]['name'] = \t'Item '+loadOrder[i]+': '+itemsToPack[loadOrder[i]]['niceName'];\r\n\t\t\t\t\tob3d[i]['userData']\t= itemsToPack[loadOrder[i]];\r\n\t\t\t\t\tob3d[i]['userData']['itemNumber'] = i;\t\r\n\t\t\t\t\tdropList[ itemsToPack[loadOrder[i]]['dropOrder']  ] = i;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tintersect_plane = new THREE.Mesh(\r\n\t\t\t\tnew THREE.PlaneGeometry( uW, uL, uW, uL),\r\n\t\t\t\tnew THREE.MeshBasicMaterial({ opacity: 0.5, transparent: true })\r\n\t\t\t);\r\n\t\t\t\r\n\t\t\tintersect_plane.rotation.x = Math.PI \/ -2;\r\n\t\t\tintersect_plane.visible = false;\r\n\t\t\tscene.add( intersect_plane );\r\n\t\t\t\r\n\t\t\trenderer.domElement.addEventListener( 'mousedown', handleMouseDown );\r\n\t\t\trenderer.domElement.addEventListener( 'mousemove', handleMouseMove );\r\n\t\t\trenderer.domElement.addEventListener( 'mouseup', handleMouseUp );\r\n\t\t\t\r\n\t\t\tstartCrossHairScan();\r\n\t\t\tbindRenderDiv();\r\n\t\t\t$('#dummy').change();\r\n\t\t\thasDropped = false;\r\n\t\t\tclearInterval(dropObj);\r\n\t\t\tcanDoDrop = true;\r\n\t\t};\r\n\r\n\t\tvar onProgress = function ( xhr ) {\r\n\t\t\t\r\n\t\t\tif ( xhr.lengthComputable ) {\r\n\t\t\t\tvar percentComplete = xhr.loaded \/ xhr.total * 100;\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar onError = function ( xhr ) { \r\n\t\t};\r\n\r\n\t\t\r\n\t\tob3d = [];\r\n\t\tob3dCt = 0;\r\n\t\t\r\n\t\tif (typeof itemsToPack !== \"undefined\" && itemsToPack.length > 0) {\t\t\t\t\t\r\n\t\t\tfor (jj = 0; jj < itemsToPack.length; jj++) { \r\n\t\t\t\tloadObj(itemsToPack[jj]);\r\n\t\t\t}\r\n\t\t}\t\t\r\n\t\t\r\n\/\/ renderer setup\t\t\t\t\r\n\t\t\r\n\t\r\n\t\tcontrols = new THREE.FirstPersonControls( camera );\r\n\t\t\r\n\t\tif(use_canvas === false)\r\n\t\t\t\trenderer = new THREE.WebGLRenderer({ alpha: true, antialias: render_aa });\r\n\t\telse\r\n\t\t\t\trenderer = new THREE.CanvasRenderer();\r\n\t\t\r\n\t\trenderer.setPixelRatio( window.devicePixelRatio );\r\n\t\trenderer.setSize( canvasWidth, canvasHeight );\r\n\t\t\r\n\t\tcontainer.prepend( renderer.domElement );\r\n\t\t\t\t\r\n\t\trenderer.shadowMapEnabled = render_ss;\r\n\t\trenderer.shadowMapType = THREE.PCFSoftShadowMap;\r\n\t\t\r\n\t\trenderer.gammaInput = true;\r\n\t\trenderer.gammaOutput = true;\r\n\r\n\t\trenderer.setClearColor( 0xffffff, 1);\r\n\r\n\t\twindow.addEventListener( 'resize', onWindowResize, false );\r\n\t\r\n\t\t\r\n\t\t\/\/stats = new Stats();\r\n\t\t\r\n\t\tif(do_stats === 1) {\r\n\t\t\t$('#mod_fps').show();\r\n\t\t\t\/\/stats.domElement.style.position = 'absolute';\r\n\t\t\t\/\/stats.domElement.style.top = '0px';\r\n\t\t\t\/\/container.append( stats.domElement );\r\n\t\t}\r\n\t\t\r\n\r\n\r\n\/\/ model loader\r\n\t\tfunction loadObj (objItem) {\r\n\t\t\t\r\n\t\t\tob3dCt++;\r\n\t\t\t\r\n\t\t\trnd=new Date().getTime();\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tloader = new THREE.OBJMTLLoader(manager);\r\n\t\t\t\r\n\r\n\t\t\ttCount= 0 ;\r\n\t\t\tloader.load( m_path+objItem.obj+'?'+ob3dCt+'_'+rnd, m_path+objItem.mtl, function ( object ) {\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tobject.traverse( function ( child1 ) {\r\n\r\n\t\t\t\tif ( child1 instanceof THREE.Mesh ) {\r\n\t\t\t\t\ttCount = tCount + 0.005;\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\tchild1.castShadow = render_ss;\r\n\t\t\t\t\t\tchild1.receiveShadow = render_ss; \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tchild1.material.transparent = true;\r\n\t\t\t\t\t\t\/\/child1.material.opacity = 1; \r\n\t\t\t\t\t\tchild1.material.orig_opacity = child1.material.opacity;\r\n\t\t\t\t\t\tchild1.material.isglass= false;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(render_tx === false || render_lp === false) { \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tmaterial_lo = new THREE.MeshLambertMaterial( { color: 0x888888 } );\r\n\t\t\t\t\t\t\ttex_rgb = child1.material.color;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(typeof child1.material.map !== \"undefined\" && child1.material.map !== null ) {\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tif(typeof child1.material.map.image !== \"undefined\" && child1.material.map.image !== \"\" && child1.material.map.image !== null) {\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\ttex_rgb=getAverageRGB(child1.material.map.image);\r\n\t\t\t\t\t\t\t\t\ttex_rgb.r = tex_rgb.r\/255;\r\n\t\t\t\t\t\t\t\t\ttex_rgb.g = tex_rgb.g\/255;\r\n\t\t\t\t\t\t\t\t\ttex_rgb.b = tex_rgb.b\/255;\r\n\t\t\t\t\t\t\t\t} \r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tchild1.material = material_lo;\r\n\t\t\t\t\t\t\tchild1.material.color = tex_rgb;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tchild1.material.overdraw = 0.5;\r\n\t\t\t\t\t\t\t\/\/child1.material.side = THREE.DoubleSide;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif( render_lp === false ) {\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tvar material_lopoly = material_lo;\r\n\t\t\t\t\t\t\t\tvar geometry_lopoly = new THREE.BoxGeometry( objItem['len_y']*.96 , objItem['len_x']*.96,objItem['len_z']*.96 );\r\n\t\t\t\t\t\t\t\tobject = new THREE.Mesh( geometry_lopoly, material_lopoly );\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\/\/ check if chrome\r\n\t\t\t\t\t\t\tif (typeof child1.material !== \"undefined\" && child1.material.name == \"chrome\" ) {\r\n\t\t\t\t\t\t\t\tchild1.material = material_chrome;\r\n\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\telse if (typeof child1.material !== \"undefined\" && child1.material.name == \"glass\" ) {\r\n\t\t\t\t\t\t\t\tchild1.material = material_glass;\r\n\t\t\t\t\t\t\t\tchild1.material.opacity = 0.2; \r\n\t\t\t\t\t\t\t\tchild1.material.orig_opacity = 0.2; \r\n\t\t\t\t\t\t\t\tchild1.material.isglass= true;\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\telse if (typeof child1.material !== \"undefined\" && child1.material.name == \"blank_screen\" ) {\r\n\t\t\t\t\t\t\t\tchild1.material = material_blank_screen; \r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tchild1.material.shininess = child1.material.shininess\/2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t\t\r\n\t\t\t\t\/\/ tiny multiplier to avoid z-buffer issues on texture\r\n\t\t\t\t\r\n\t\t\t\tblock_geometry = new THREE.BoxGeometry(   objItem['len_y']*1.001 , objItem['len_x']*1.001,objItem['len_z']*1.001 );\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tvar material_unit \t= Physijs.createMaterial( new THREE.MeshPhongMaterial( {color: 0xdddddd, side: THREE.BackSide, specular: 0xffffff, shininess: 5,} ), 10, 0.0 );\r\n\t\t\t\t\r\n\t\t\t\tvar block_material = Physijs.createMaterial(  new THREE.MeshLambertMaterial( {color: 0xbb0000, transparent: true, opacity: 0.0} ), 0.8, 0.4 );\r\n\t\t\t\t\r\n\t\t\t\tblock = new Physijs.BoxMesh( block_geometry, block_material );\r\n\t\t\t\t\r\n\t\t\t\t\/\/block.position.set( objItem['x_pos'], objItem['y_pos']  , objItem['z_pos'] - itemDrop );\r\n\t\t\t\tblock.position.set( objItem['x_pos'], objItem['y_pos'] , objItem['z_pos'] );\r\n\t\t\t\tif(itemDrop > 0 )block.visible = false;\r\n\t\t\t\tblock.castShadow = false;\r\n\t\t\t\tblock.receiveShadow = false; \r\n\t\t\t\tblock.material.transparent = true;\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tif(use_canvas === true ) {\r\n\t\t\t\t\t\/\/object.visible = false;\r\n\t\t\t\t\tblock.material.overdraw = 0.5;\r\n\t\t\t\t\t\/\/object.scale.set(.98,.98,.98)\r\n\t\t\t\t\t\/\/block.scale.set(.99,.99,.99)\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\/\/\r\n\t\t\t\t\t\/\/block.material.opacity = 1;\r\n\t\t\t\t\t\/\/edges = new THREE.EdgesHelper( block, 0x444444 );\r\n\t\t\t\t\t\/\/scene.add( edges );\t\r\n\t\t\t\t\t\r\n\t\t\t\t} \r\n\t\t\t\tblock.add( object );\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\tscene.add( block );\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\/\/scene.add( edges );\r\n\t\t\t\tif(objItem['rot'] > 0) {\r\n\t\t\t\t\tblock.__dirtyPosition = true;\r\n\t\t\t\t\tblock.__dirtyRotation = true;\r\n\t\t\t\t\tblock.rotation.y =  Math.PI\/2 ;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tob3d.push( block )\t\r\n\t\t\t\t\r\n\t\t\t}, onProgress, onError );\r\n\t\t}\r\n\r\n\t\t\t\t\r\n\t\tif(typeof camera !== \"undefined\" ) onWindowResize();\r\n\t}\r\n\r\n\t\t\t\r\n\r\n\tfunction onWindowResize() {\r\n\t\t\t\r\n\t\taspectRatio.x = $('body').width(); aspectRatio.y = (9*aspectRatio.x\/16);\r\n\t\t\r\n\t\tcanvasWidth = $('.calcContainer').innerWidth();\r\n\t\tcanvasHeight =  parseInt(canvasWidth * ( aspectRatio.y\/aspectRatio.x) ) - 60;\r\n\t\t\r\n\t\tif(canvasWidth !== canvasPrevWidth) positionScroller();\r\n\t\tcanvasPrevWidth = canvasWidth;\r\n\t\t\r\n\t\twindowHalfX = canvasWidth \/ 2;\r\n\t\twindowHalfY = canvasHeight \/ 2;\r\n\r\n\t\tcamera.aspect = canvasWidth \/ canvasHeight;\r\n\t\tcamera.updateProjectionMatrix();\r\n\t\t\r\n\t\torbitcamera.aspect = canvasWidth \/ canvasHeight;\r\n\t\torbitcamera.updateProjectionMatrix();\r\n\t\t\r\n\t\tcameraCube.aspect = canvasWidth \/ canvasHeight;\r\n\t\tcameraCube.updateProjectionMatrix();\r\n\t\t\r\n\t\t$(\".renderDiv\").height(canvasHeight);\r\n\t\toffset = $(\".renderDiv\").offset();\r\n\t\t\r\n\t\trenderer.setSize( canvasWidth, canvasHeight );\r\n\t}\r\n\r\n\tfunction animate3d() {\r\n\t\t\r\n\t\trequestAnimationFrame( animate3d );\r\n\t\trender();\r\n\t}\r\n\r\n\tfunction render() {\r\n\t\t\r\n\t\tif(do_stats === 1){\r\n\t\t\tfps_timer = Date.now();\r\n\t\t\tif(fps_timer > fps_lap_end) {\r\n\t\t\t\t\r\n\t\t\t\t$('#mod_fps').html(fps + ' FPS');\r\n\t\t\t\tfps= 0;\r\n\t\t\t\tfps_lap_end = fps_timer + 1000;\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t\tfps++;\r\n\t\t}\r\n\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\tif( $('.renderDiv:visible').length <1  ) return;\r\n\t\t\r\n\t\t\tif(hasDropped === false && canDoDrop && ob3d.length > 0 && itemDrop > 0) {\r\n\t\t\t\t\r\n\t\t\t\tclearInterval(dropObj);\r\n\t\t\t\tisPaused = true;\r\n\t\t\t\thasDropped = true;\r\n\t\t\t\tcanDoDrop = false;\r\n\t\t\t\tdropItem = 0;\r\n\t\t\t\tthisDrop = itemDrop;\r\n\t\t\t\t\r\n\t\t\t\tif( dropItem == 0 ) $('#load_scrim').hide();\r\n\t\t\t\t\r\n\t\t\t\tdropObj = setInterval( function() {\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\ttto=10;\r\n\t\t\t\t\t\torbit = true;\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tstep = 50;\r\n\t\t\t\t\t\tobjIndex = dropList[dropItem];\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif (objIndex && ob3d[objIndex]){\r\n\t\t\t\t\t\t\tob3d[objIndex].visible = true;\r\n\t\t\t\t\t\t\tob3d[objIndex].__dirtyPosition = true;\r\n\t\t\t\t\t\t\tob3d[objIndex].__dirtyRotation = true;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tdrop_newYpos = (ob3d[objIndex].position.y - step);\r\n\t\r\n\t\t\t\t\t\t\tob3d[objIndex].position.set( ob3d[objIndex].position.x, drop_newYpos, ob3d[objIndex].position.z )\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthisDrop = thisDrop - step;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(thisDrop <= 0) {\r\n\t\t\t\t\t\t\t\/\/ob3d[dropItem].visible = true;\r\n\t\t\t\t\t\t\tthisDrop = itemDrop;\r\n\t\t\t\t\t\t\tdropItem ++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\tif(dropItem >= item_count) {\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif(render_gr === true) {\r\n\t\t\t\t\t\t\t\tscene.setGravity(new THREE.Vector3( 0, -98.1, 0 ));\r\n\t\t\t\t\t\t\t\tscene.onSimulationResume();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tclearInterval(dropObj);\r\n\t\t\t\t\t\t\tisPaused = false;\r\n\t\t\t\t\t\t}\r\n\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t}, 24 );\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\/\/doSim();\r\n\t\t\t} \r\n\t\t\t\r\n\t\tif(render_gr === true && use_canvas === false) doSim(); \r\n\t\t\r\n\t\tvar timer = Date.now() * 0.0001;\r\n\t\t\r\n\t\t\r\n\t\trenderer.render( sceneCube, cameraCube );\r\n\t\t\r\n\t\tcamera.position.y = 25;\r\n\t\t\r\n\t\tcamPos4Calc = camera.position;\r\n\r\n\t\tif(orbit === true) { \r\n\t\t\t\r\n\t\t\tif(!isPaused) {\t\t\t\t\t\r\n\t\t\torbitcamera.position.x =  Math.cos( timer ) * cOffset;\r\n\t\t\torbitcamera.position.z =  Math.sin( timer ) * cOffset   ;\t\r\n\t\t\t\r\n\t\t\t} \r\n\t\t\t\r\n\t\t\telse {\r\n\t\t\t\torbitcamera.position.x =  Math.cos( -45 ) * cOffset;; \r\n\t\t\t\torbitcamera.position.z =  Math.sin( -45 ) * cOffset;\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcameraTargetBox.material.opacity = 0.0;\r\n\t\t\t\r\n\t\t\tfor(i=0; i < ob3d.length; i++ ){\r\n\t\t\t\tchildObj = ob3d[i].children[0].children;\r\n\t\t\t\r\n\t\t\t\t$.each( childObj, function (i,v) {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (typeof v.material !== \"undefined\" && v.material.isglass === true ){\r\n\t\t\t\t\t\topac = v.material.orig_opacity ; \r\n\t\t\t\t\t} \r\n\t\t\t\t\t\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\topac = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\/\/v.material.opacity = opac;\/\/v.material.orig_opacity;\r\n\t\t\t\t});\t\t\t\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t\r\n\t\t\torbitcamera.position.y = 25;\r\n\t\t\tdirectionalLight.rotation.copy( orbitcamera.rotation );\r\n\t\t\tdirectionalLight.position.copy( orbitcamera.position );\r\n\t\t\torbitcamera.lookAt( scene.position );\r\n\t\t\t\r\n\t\t\trenderer.render( scene, orbitcamera );\r\n\t\t\t\r\n\t\t}  else {\r\n\t\t\t\r\n\t\tcameraTargetBox.material.opacity = 1;\t\r\n\t\tsteepness = 0.3;\r\n\t\tfade_distance = 50;\r\n\t\t\r\n\t\tfor(i=0; i < ob3d.length; i++ ){\r\n\t\t\t\r\n\t\t\tobjPos4Calc = ob3d[i].position;\r\n\t\t\t\r\n\t\t\tobjDist = dist(objPos4Calc.x,objPos4Calc.y,objPos4Calc.z,camPos4Calc.x,camPos4Calc.y,camPos4Calc.z);\r\n\t\t\t\r\n\t\t\tobj_opacity = 0 + ( 1 \/ ( 1+ Math.pow ( Math.E , ((steepness * -1) * (objDist - fade_distance) ) ) ) );\r\n\t\t\t\r\n\t\t\t\/\/ob3d[i].material.opacity = \tobj_opacity;\t\t\t\t\t\t\t\t\t\t\r\n\t\t\tchildObj = ob3d[i].children[0].children;\r\n\t\t\t\r\n\t\t\t$.each( childObj, function (i,v) {\r\n\t\t\t\t\r\n\t\t\t\tif (typeof v.material !== \"undefined\" && v.material.isglass === true ){\r\n\t\t\t\t\topac = v.material.orig_opacity ; \r\n\t\t\t\t} \r\n\t\t\t\t\r\n\t\t\t\telse {\r\n\t\t\t\t\topac = 1;\r\n\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\/\/v.material.opacity = opac * obj_opacity;\r\n\t\t\t});\t\r\n\t\t\t\r\n\t\t}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\tcontrols.update( clock.getDelta() );\r\n\t\t\tdirectionalLight.rotation.copy( camera.rotation );\r\n\t\t\tdirectionalLight.position.copy( camera.position );\r\n\t\t\tcameraTargetBox.lookAt( camera.position );\r\n\t\t\trenderer.render( scene, camera );\r\n\t\t}\r\n\t\t\r\n\t\t\/\/if(do_stats === 1) stats.update();\r\n\r\n\r\n\t}\r\n\t\r\n\tfunction lensFlareUpdateCallback( object ) {\r\n\t\t\r\n\t\tif( render_su ) {\r\n\t\t\r\n\t\t\tvar f, fl = object.lensFlares.length;\r\n\t\t\tvar flare;\r\n\t\t\tvar vecX = -object.positionScreen.x * 2;\r\n\t\t\tvar vecY = -object.positionScreen.y * 2;\r\n\r\n\t\t\tfor( f = 0; f < fl; f++ ) {\r\n\t\t\t\tflare = object.lensFlares[ f ];\r\n\t\t\t\tflare.x = object.positionScreen.x + vecX * flare.distance;\r\n\t\t\t\tflare.y = object.positionScreen.y + vecY * flare.distance;\r\n\t\t\t\tflare.rotation = 0;\r\n\t\t\t}\r\n\r\n\t\t\tobject.lensFlares[ 2 ].y += 0.025;\r\n\t\t\tobject.lensFlares[ 3 ].rotation = object.positionScreen.x * 0.5 + THREE.Math.degToRad( 45 );\r\n\t\t}\r\n\r\n\t}\r\n\t\t\t\t\r\n\tfunction handleMouseDown() {\r\n\t\t\/\/stopCrossHairScan();\r\n\t\t\r\n\t\t\/*\r\n\t\tvar ray, intersection, _vector = new THREE.Vector3;\r\n\t\t\r\n\t\t_vector.set(\r\n\t\t\t( 0.5 ) * 2 - 1,\r\n\t\t\t-( 0.5 ) * 2 + 1,\r\n\t\t\t1\r\n\t\t);\r\n\r\n\t\t_vector.unproject(  camera );\r\n\t\t\r\n\t\tray = new THREE.Raycaster( camera.position, _vector.sub( camera.position ).normalize() );\r\n\t\tintersection = ray.intersectObjects( ob3d );\r\n\r\n\t\tif ( intersection.length > 0 ) {\r\n\t\t\tselected_block = intersection[0].object;\r\n\r\n\t\t\tmouse_position.copy( intersection[0].point );\r\n\t\t\tblock_offset.subVectors( selected_block.position, mouse_position );\r\n\t\t\t\r\n\t\t\tintersect_plane.position.y = mouse_position.y;\t\t\t\t\t\t\r\n\t\t}\r\n\t\t*\/\r\n\t};\r\n\r\n\tfunction handleMouseMove() {\r\n\t\tvar ray, intersection,\r\n\t\t\ti, scalar, _vector = new THREE.Vector3;\r\n\t\t\t\t\t\r\n\t\tif ( selected_block !== null ) {\r\n\t\t\t_vector.set(\r\n\t\t\t\t( 0.5 ) * 2 - 1,\r\n\t\t\t\t-( 0.5 ) * 2 + 1,\r\n\t\t\t\t1\r\n\t\t\t);\r\n\t\t\t_vector.unproject( camera );\r\n\t\t\t\r\n\t\t\tray = new THREE.Raycaster( camera.position, _vector.sub( camera.position ).normalize() );\r\n\t\t\tintersection = ray.intersectObject( intersect_plane );\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\tif(typeof intersection[0] !== \"undefined\") {\r\n\t\t\t\tmouse_position.copy( intersection[0].point );\r\n\t\t\t}\r\n\t\t\tintersect_plane.position.y = mouse_position.y;\t\r\n\r\n\t\t\texamineItem(selected_block);\r\n\r\n\t\t\t\/\/container.style.cursor = 'move';\r\n\r\n\t\t} else {\r\n\t\t\t\r\n\t\t\t_vector.set(\r\n\t\t\t\t( 0.5 ) * 2 - 1,\r\n\t\t\t\t-( 0.5  ) * 2 + 1,\r\n\t\t\t\t1\r\n\t\t\t);\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t_vector.unproject( camera );\r\n\t\t\t\r\n\t\t\tray = new THREE.Raycaster( camera.position, _vector.sub( camera.position ).normalize() );\r\n\t\t\tintersection = ray.intersectObjects( ob3d );\r\n\t\t\t\r\n\t\t\tintersection = ray.intersectObjects( ob3d );\r\n\t\t\t\t\r\n\t\t\tif ( intersection.length > 0 && orbit === false) {\r\n\t\t\t\t\r\n\t\t\t\tif(typeof highlight_block !== \"undefined\") {\r\n\t\t\t\t\tprevBlock = highlight_block;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\thighlight_block = intersection[0].object;\r\n\r\n\t\t\t\tintersect_plane.position.y = mouse_position.y;\t\r\n\t\t\t\tintersect_plane.position.copy( highlight_block.position );\r\n\t\t\t\t\r\n\t\t\t\tif (typeof highlight_block !== \"undefined\"){\r\n\t\t\t\t\thighlight_block.material.transparent = true;\r\n\t\t\t\t\thighlight_block.material.opacity = 0.2;\r\n\t\t\t\t\t\/\/highlight_block.material.opacity = 0.0;\r\n\t\t\t\t\thighlight_block.material.color.setHex( 0xbb0000 );\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif(typeof prevBlock !== \"undefined\" && prevBlock !== highlight_block) {\r\n\t\t\t\t\tprevBlock.material.transparent = true;\r\n\t\t\t\t\tprevBlock.material.opacity = 0;\r\n\t\t\t\t\tprevBlock.material.color.setHex( 0xffffff );\r\n\t\t\t\t}\r\n\t\t\t\t\/\/container.style.cursor = 'pointer';\r\n\t\t\t\texamineItem(highlight_block);\r\n\t\t\t\t\r\n\t\t\t} \telse {\r\n\t\t\t\t\r\n\t\t\t\t\/\/container.style.cursor = 'auto';\r\n\t\t\t\tif(typeof highlight_block !== \"undefined\" ) {\r\n\t\t\t\t\thighlight_block.material.transparent = true;\r\n\t\t\t\t\thighlight_block.material.opacity = 0;\r\n\t\t\t\t\thighlight_block.material.color.setHex( 0xffffff );\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\texamineItem();\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t};\r\n\t\t\t\r\n\tfunction handleMouseUp() {\r\n\t\tdpad=false;\r\n\t\t\r\n\t\tvar _vector = new THREE.Vector3;\r\n\t\t\/\/startCrossHairScan();\r\n\t\t\r\n\t\tif ( selected_block !== null ) {\r\n\t\t\t_vector.set( 1, 1, 1 );\r\n\t\t\tselected_block.setAngularFactor( _vector );\r\n\t\t\tselected_block.setLinearFactor( _vector );\r\n\t\t\tselected_block = null;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction startCrossHairScan() {\r\n\t\tautoCrossScan = setInterval(function(){ \r\n\t\t\thandleMouseMove();\r\n\t\t}, 500);\r\n\t}\r\n\r\n\tfunction stopCrossHairScan() {\r\n\t\tclearInterval (autoCrossScan);\r\n\t}\r\n\r\n\t\t\t\t\r\n\tfunction examineItem(inspect_block){\r\n\t\tif(typeof inspect_block !== \"undefined\") {\r\n\t\t\t\/\/ turn on\r\n\t\t\t$('.containerContentsIns').html( '#'+(inspect_block.userData.itemNumber+1) + ': ' + inspect_block.userData.name);\r\n\t\t\t$('.containerContentsVol').html( ((inspect_block.userData.vol\/1728).toFixed(1)) + ' cu. ft.' );\r\n\t\t\t$('.containerContentsSize').html( \r\n\t\t\t\t(inspect_block.userData.len_x\/12).toFixed(1) + ' x '  +\r\n\t\t\t\t(inspect_block.userData.len_y\/12).toFixed(1) + ' x '  +\r\n\t\t\t\t(inspect_block.userData.len_z\/12).toFixed(1)\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\t\/\/ turn off\r\n\t\t\t$('.containerContentsIns').html('None');\r\n\t\t\t$('.containerContentsVol').html('--');\r\n\t\t\t$('.containerContentsSize').html('--');\r\n\t\t}\r\n\t}\r\n\r\n\tfunction makeTextSprite( message, parameters ) {\r\n\t\tif ( parameters === undefined ) parameters = {};\r\n\t\t\r\n\t\tvar fontface = parameters.hasOwnProperty(\"fontface\") ? \r\n\t\t\tparameters[\"fontface\"] : \"Arial\";\r\n\t\t\r\n\t\tvar fontsize = parameters.hasOwnProperty(\"fontsize\") ? \r\n\t\t\tparameters[\"fontsize\"] : 18;\r\n\t\t\r\n\t\t\r\n\t\tvar backgroundColor = parameters.hasOwnProperty(\"backgroundColor\") ?\r\n\t\t\tparameters[\"backgroundColor\"] : { r:255, g:255, b:255, a:1.0 };\r\n\t\t\r\n\t\tvar rotX = parameters.hasOwnProperty(\"s_rotX\") ?\r\n\t\t\tparameters[\"s_rotX\"] : 0;\r\n\t\t\r\n\t\tvar rotY = parameters.hasOwnProperty(\"s_rotY\") ?\r\n\t\t\tparameters[\"s_rotY\"] : 0;\r\n\t\t\r\n\t\tvar rotZ = parameters.hasOwnProperty(\"s_rotZ\") ?\r\n\t\t\tparameters[\"s_rotZ\"] : 0;\r\n\r\n\t\t\/\/var spriteAlignment = THREE.SpriteAlignment.topLeft;  \r\n\t\tfSize = fontsize*scale_mult;\t\r\n\t\tvar canvas = document.createElement('canvas');\r\n\t\tvar context = canvas.getContext('2d');\r\n\t\t\r\n\t\t\/\/ get size data (height depends only on font size)\r\n\t\tvar metrics = context.measureText( message );\r\n\t\t\r\n\t\tvar textWidth = metrics.width*scale_mult;\r\n\t\tvar textHeight = fSize;\r\n\t\t\r\n\t\tcanvas.width = textWidth;\r\n\t\tcanvas.height = textHeight;\r\n\t\tcontext.textAlign = \"center\";\r\n\t\tcontext.textBaseline = \"middle\";\r\n\t\tcontext.font = \"normal \" + fSize + \"px \" + fontface;\r\n\t\tcontext.textAlign = \"center\";\r\n\t\tcontext.textBaseline = \"middle\";\r\n\t\tcontext.fillStyle = \"#000000\";\r\n\t\tcontext.fillText(message, textWidth \/ 2, textHeight \/ 2);\r\n\t\t\r\n\t\t\/\/ canvas contents will be used for a texture\r\n\t\tvar texture = new THREE.Texture(canvas);\r\n\t\t\r\n\t\t$(canvas).remove();\r\n\t\ttexture.offset.x = 0; \/\/ 0.0 - 1.0\r\n\t\ttexture.offset.y = 0; \/\/ 0.0 - 1.0\r\n\t\ttexture.minFilter = THREE.NearestFilter;\r\n\t\ttexture.needsUpdate = true;  \r\n\r\n\t\tvar geometry_text \t= new THREE.PlaneGeometry( textWidth ,textHeight ,1, 1 );\r\n\t\tvar material_text\t= new THREE.MeshLambertMaterial( {color: 0xffffff, side: THREE.DoubleSide, map: texture ,transparent: true, opacity: .3} )\r\n\t\t\t\t\t\r\n\t\tsprite\t= new THREE.Mesh( geometry_text, \tmaterial_text );\r\n\t\t\r\n\t\tsprite.rotation.x = rotX;\r\n\t\tsprite.rotation.y = rotY;\r\n\t\tsprite.rotation.z = rotZ;\r\n\t\t\t\r\n\t\tsprite.scale.set(1\/scale_mult,1\/scale_mult,1.0);\r\n\t\treturn sprite;\r\n\t}\r\n\r\n\tfunction positionScroller() {\r\n\t\t$('.scroller_viewport').each( function() {\r\n\t\t\t\r\n\t\t\tvar s_viewport = $(this);\r\n\t\t\tvar s_container = $(this).parent();\t\r\n\t\t\t\r\n\t\t\tvar s_contWidth = $(s_container).width();\t\r\n\t\t\tvar s_catsWidth  = $(s_viewport).width();\r\n\t\t\t\r\n\t\t\t$(s_viewport).css('left',0);\r\n\t\t\t\r\n\t\t\tif(s_catsWidth > s_contWidth) {\r\n\t\t\t\t$(s_container).find('.prevCats').hide();\r\n\t\t\t\t$(s_container).find('.nextCats').show();\r\n\t\t\t} else {\r\n\t\t\t\t$(s_container).find('.prevCats').hide();\r\n\t\t\t\t$(s_container).find('.nextCats').hide();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\t\t\r\n\tfunction doSim() {\r\n\t\tif ( selected_block !== null ) {\r\n\t\t\t_v3.copy( mouse_position ).add( block_offset ).sub( selected_block.position ).multiplyScalar( 5 );\r\n\t\t\t_v3.y = 1;\r\n\t\t\t\/\/_v3.y = _vY*100 ;\/\/_vY*10;\r\n\t\t\tselected_block.setLinearVelocity( _v3 );\r\n\t\t\t_v3.set( 0, 0, 0 );\r\n\t\t\tfor ( _i = 0; _i < ob3d.length; _i++ ) {\r\n\t\t\t\tob3d[_i].applyCentralImpulse( _v3 );\r\n\t\t\t}\r\n\t\t}\r\n\t\t\/\/applyForce();\r\n\t\tif(!isPaused) scene.simulate( undefined, 1 );\r\n\t}\r\n\r\n\t\t\t\t\r\n\tfunction dist(x0,y0,z0,x1,y1,z1){\r\n\t\tdeltaX = x1 - x0;\r\n\t\tdeltaY = y1 - y0;\r\n\t\tdeltaZ = z1 - z0;\r\n\t\t\r\n\t\tdistance = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ);\r\n\t\t\r\n\t\treturn distance;\r\n\t}\r\n\r\n\tfunction addLight( h, s, l, x, y, z ) {\r\n\t\tvar textureFlare0 = THREE.ImageUtils.loadTexture( \"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/\/images\/lensflarea0.png\" );\r\n\t\tvar textureFlare2 = THREE.ImageUtils.loadTexture( \"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/\/images\/lensflarea2.png\" );\r\n\t\tvar textureFlare3 = THREE.ImageUtils.loadTexture( \"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-content\/plugins\/3D_calculator\/\/images\/lensflare3.png\" );\r\n\r\n\t\tvar flareColor = new THREE.Color( 0xffffff );\r\n\t\tflareColor.setHSL( h, s, l + 0.5 );\r\n\r\n\t\tvar lensFlare = new THREE.LensFlare( textureFlare0, 700, 0.0, THREE.AdditiveBlending, flareColor );\r\n\r\n\t\tlensFlare.add( textureFlare2, 512, 0.0, THREE.AdditiveBlending );\r\n\t\tlensFlare.add( textureFlare2, 512, 0.0, THREE.AdditiveBlending );\r\n\t\tlensFlare.add( textureFlare2, 512, 0.0, THREE.AdditiveBlending );\r\n\r\n\t\tlensFlare.add( textureFlare3, 60, 0.6, THREE.AdditiveBlending );\r\n\t\tlensFlare.add( textureFlare3, 70, 0.7, THREE.AdditiveBlending );\r\n\t\tlensFlare.add( textureFlare3, 120, 0.9, THREE.AdditiveBlending );\r\n\t\tlensFlare.add( textureFlare3, 70, 1.0, THREE.AdditiveBlending );\r\n\r\n\t\tlensFlare.customUpdateCallback = lensFlareUpdateCallback;\r\n\t\tlensFlare.position.set( x, y, z  );\r\n\r\n\t\tscene.add( lensFlare );\r\n\t}\r\n\r\n\tfunction getAverageRGB(imgEl) {\r\n\t\tvar blockSize = 5, \/\/ only visit every 5 pixels\r\n\t\t\tdefaultRGB = {r:0,g:0,b:0}, \/\/ for non-supporting envs\r\n\t\t\tcanvas_rgb = document.createElement('canvas'),\r\n\t\t\tcontext = canvas_rgb.getContext && canvas_rgb.getContext('2d'),\r\n\t\t\tdata, width, height,\r\n\t\t\ti = -4,\r\n\t\t\tlength,\r\n\t\t\trgb = {r:0,g:0,b:0},\r\n\t\t\tcount = 0;\r\n\r\n\t\tif (!context) {\r\n\t\t\treturn defaultRGB;\r\n\t\t}\r\n\r\n\t\theight = canvas_rgb.height = imgEl.naturalHeight || imgEl.offsetHeight || imgEl.height;\r\n\t\twidth = canvas_rgb.width = imgEl.naturalWidth || imgEl.offsetWidth || imgEl.width;\r\n\r\n\t\tcontext.drawImage(imgEl, 0, 0);\r\n\r\n\t\ttry {\r\n\t\t\tdata = context.getImageData(0, 0, width, height);\r\n\t\t} catch(e) {\r\n\t\t\t\/* security error, img on diff domain *\/\r\n\t\t\treturn defaultRGB;\r\n\t\t}\r\n\r\n\t\tlength = data.data.length;\r\n\r\n\t\twhile ( (i += blockSize * 4) < length ) {\r\n\t\t\t++count;\r\n\t\t\trgb.r += data.data[i];\r\n\t\t\trgb.g += data.data[i+1];\r\n\t\t\trgb.b += data.data[i+2];\r\n\t\t}\r\n\r\n\t\t\/\/ ~~ used to floor values\r\n\t\trgb.r = ~~(rgb.r\/count);\r\n\t\trgb.g = ~~(rgb.g\/count);\r\n\t\trgb.b = ~~(rgb.b\/count);\r\n\r\n\t\treturn rgb;\r\n\t}\r\n\r\n\t\/\/ convert 0..255 R,G,B values to a hexidecimal color string\r\n\tRGBToHex = function(r,g,b){\r\n\t\tvar bin = r << 16 | g << 8 | b;\r\n\t\treturn (function(h){\r\n\t\t\treturn new Array(7-h.length).join(\"0\")+h\r\n\t\t})(bin.toString(16).toUpperCase())\r\n\t}\r\n<\/script>","protected":false},"excerpt":{"rendered":"Storage Calculator","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"templates\/full-width-no-header.php","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-30","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Storage Calculator - Live Pinnacle<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/storage-calculator\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Storage Calculator - Live Pinnacle\" \/>\n<meta property=\"og:description\" content=\"Storage Calculator\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/storage-calculator\/\" \/>\n<meta property=\"og:site_name\" content=\"Live Pinnacle\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-29T21:04:55+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/storage-calculator\/\",\"url\":\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/storage-calculator\/\",\"name\":\"Storage Calculator - Live Pinnacle\",\"isPartOf\":{\"@id\":\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/#website\"},\"datePublished\":\"2022-01-19T16:34:18+00:00\",\"dateModified\":\"2025-05-29T21:04:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/storage-calculator\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/storage-calculator\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/storage-calculator\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Storage Calculator\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/#website\",\"url\":\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/\",\"name\":\"Live Pinnacle\",\"description\":\"Just another Pinnacle Beta site\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Storage Calculator - Live Pinnacle","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/storage-calculator\/","og_locale":"en_US","og_type":"article","og_title":"Storage Calculator - Live Pinnacle","og_description":"Storage Calculator","og_url":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/storage-calculator\/","og_site_name":"Live Pinnacle","article_modified_time":"2025-05-29T21:04:55+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/storage-calculator\/","url":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/storage-calculator\/","name":"Storage Calculator - Live Pinnacle","isPartOf":{"@id":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/#website"},"datePublished":"2022-01-19T16:34:18+00:00","dateModified":"2025-05-29T21:04:55+00:00","breadcrumb":{"@id":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/storage-calculator\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.beta-pinnacle.com\/live-pinnacle\/storage-calculator\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/storage-calculator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/"},{"@type":"ListItem","position":2,"name":"Storage Calculator"}]},{"@type":"WebSite","@id":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/#website","url":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/","name":"Live Pinnacle","description":"Just another Pinnacle Beta site","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-json\/wp\/v2\/pages\/30","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-json\/wp\/v2\/comments?post=30"}],"version-history":[{"count":5,"href":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-json\/wp\/v2\/pages\/30\/revisions"}],"predecessor-version":[{"id":107,"href":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-json\/wp\/v2\/pages\/30\/revisions\/107"}],"wp:attachment":[{"href":"https:\/\/www.beta-pinnacle.com\/live-pinnacle\/wp-json\/wp\/v2\/media?parent=30"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}