Tiramisu = { resBasePath: 'res/', ver: 'sh', fontSize: 2, initialTextPaneWidth: '25%' }; (function(tiramisu) { var m_runtimeReady = false, m_dragImage = null, m_emptyDragImage = null, m_selectedObject = null; function hideLoadOverlay() { $('#activity-indicator').fadeOut(800, 'swing', function() { $('#minute-of-ads-in-blog').fadeIn(800, 'swing'); setTimeout(function() {$('#minute-of-ads-in-blog').fadeOut(800, 'swing');}, 7000); }); window.setTimeout(function() { var overlay = document.getElementById('tiramisu-load-overlay'); overlay.className = ''; window.setTimeout(function() { VideoBannerDiv.style.display='block'; overlay.parentNode.removeChild(overlay); $('#contentFrame').removeClass("blurred"); }, 300); }, 200); } function setupNavigationBar(navigationItem) { var navigationBar = document.getElementById('navigationbar'); navigationBar.innerHTML = navigationItem; navigationBar.style.display = 'block'; $('#content').addClass('with-navigationbar'); } function setupPopovers(popovers) { var div = document.createElement('div'), body = document.body; div.id = 'tiramisu-popovers'; div.innerHTML = popovers; body.insertBefore(div, body.firstChild); } function setupTextPane() { var kSplitterWidth = '5px', left = document.getElementById('left-component').style, splitter = document.getElementById('splitter').style, width = tiramisu.initialTextPaneWidth; left.right = width; left.marginRight = kSplitterWidth; splitter.right = width; splitter.minWidth = kSplitterWidth; document.getElementById('right-component').style.width = width; $('div.split-pane').splitPane(); } tiramisu.didInitializeRuntime = function() { m_runtimeReady = true; if (typeof tiramisu.didChangeLayout === 'function') window.setTimeout(tiramisu.didChangeLayout, 0); } tiramisu.isRuntimeReady = function() { return m_runtimeReady; } function dragStart(event) { var objectURL = this.getAttribute('data-outline-object'), dragImage = document.createElement('img'); dragImage.src = this.firstChild.src; event.dataTransfer.effectAllowed = 'copy'; event.dataTransfer.setData('Text', objectURL); try { event.dataTransfer.setDragImage(dragImage, 0, 0); } catch(e) {} Module.ccall('outline_dragStart', 'null', ['string'], [objectURL]); } function dragEnd(event) { Module.ccall('outline_dragEnd', 'null', ['string'], [this.getAttribute('data-outline-object')]); } function didChangeLayout() { if (tiramisu.isRuntimeReady()) { var pane = document.getElementById('content'); Module.ccall('tiramisu_resize', 'null', ['number', 'number'], [pane.clientWidth, pane.clientHeight]); } } tiramisu.updateGalleryPanel = function(cls_id,item_id) { var request = new XMLHttpRequest(); CatalogCats[cCatalogCat]=cls_id; var urlStr='https://planner3d.shatura.com/gallery_new/menu_new_pure.php?ver='+tiramisu.ver+'&fontSize='+tiramisu.fontSize; if (cls_id && (cls_id>0)) urlStr+='&cid='+cls_id; else if (item_id) urlStr+='&artcode='+item_id; request.open('GET', urlStr, true); request.onreadystatechange = function() { if (request.readyState == 4 && request.status == 200) { var group = document.getElementById('outline3d-items'); var div = document.createElement('div'); div.innerHTML = request.responseText; group.replaceChild(div, group.firstChild); for(var imgSize=64;imgSize<=110;imgSize+=46) { var draggables = document.getElementsByClassName('tiramisu-draggable-item'+imgSize); Array.prototype.forEach.call(draggables, function(draggable) { draggable.setAttribute('draggable', 'true'); draggable.addEventListener('dragstart', dragStart, false); draggable.addEventListener('dragend', dragEnd, false); }); } } }; request.send(null); } var cCatalogCat=0; var CatalogCats=[0,8190]; tiramisu.SwitchCatalog = function() { var Zakl = document.getElementById('ZaklButt'); if (Zakl.src.substring(Zakl.src.length-5)=='1.png') { Zakl.src=Zakl.src.substring(0,Zakl.src.length-5)+'0.png'; cCatalogCat=1; Tiramisu.updateGalleryPanel(CatalogCats[cCatalogCat]); } else { Zakl.src=Zakl.src.substring(0,Zakl.src.length-5)+'1.png'; cCatalogCat=0; Tiramisu.updateGalleryPanel(CatalogCats[cCatalogCat]); } event.preventDefault(); } tiramisu.RefreshCatalog = function() { Tiramisu.updateGalleryPanel(CatalogCats[cCatalogCat]); } tiramisu.didFinishLoadDocument = function(doc) { setTimeout("Tiramisu.action('ShouldUpdateHeaderSum')",5000); var canvas = document.getElementById('canvas'); document.getElementById('canvas').style.display = 'block'; PanelService.showPanels(true); tiramisu.ui.setupTextPane(); tiramisu.didChangeLayout = didChangeLayout; window.addEventListener('resize', didChangeLayout, false); hideLoadOverlay(); didChangeLayout(); tiramisu.util.livingOnTheEdge(); // Adapting to survive in Microsoft's neighbourhood. Thug life. tiramisu.updateGalleryPanel(CatalogCats[cCatalogCat]); canvas.addEventListener('dragover', function(event) { event.preventDefault(); event.dataTransfer.dropEffect = 'copy'; Module.ccall('outline_dragContinue', 'null', ['number', 'number'], [event.clientX, event.clientY]); return false; }, false); canvas.addEventListener('dragenter', function(event) { Module.ccall('outline_dragEnter', 'null', ['number', 'number'], [event.clientX, event.clientY]); return false; }, false); canvas.addEventListener('dragleave', function (event) { Module.ccall('outline_dragLeave'); }, false); canvas.addEventListener('drop', function(event) { event.stopPropagation(); event.preventDefault(); // var objectURL = event.dataTransfer.getData('Text'); Module.ccall('outline_drop', 'null', ['number', 'number'], [event.clientX, event.clientY]); return false; }); var group = document.getElementById('outline-object-properties'); var groupOper = document.getElementById('outline-object-oper'); group.style.visibility = 'hidden'; groupOper.style.display = 'none'; } tiramisu.saveScene = function(save_data) { var request = new XMLHttpRequest(); request.open('POST', 'scenes/save_scene.php?ver='+tiramisu.ver+'&project='+tiramisu.project+'&is_esc=%22', true); request.onreadystatechange = function() { if (request.readyState == 4 && request.status == 200) { var group = document.getElementById('outline-object-spec'); if (request.responseText.length && (request.responseText.substr(0,3)=='ok:')) { var div = document.createElement('div'); div.style.padding='10px'; var groupWidth=Math.min(400,document.documentElement.clientWidth-60); var html_code=''; html_code+=''; html_code+=''; html_code+=''; html_code+='
Ссылка на ваш проект:

 
      
'; div.innerHTML = html_code+''; $("#outline-object-spec").scrollTop(); group.replaceChild(div, group.firstChild); group.style.visibility = 'visible'; group.style.width=groupWidth+'px'; group.style.height=Math.min(200,document.documentElement.clientHeight-210)+'px'; group.style.top='75px'; group.style.left=(document.documentElement.clientWidth-groupWidth)/2+'px'; } else group.style.visibility = 'hidden'; } }; request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') request.send(save_data); } tiramisu.objectUrlLoaded = function() { } tiramisu.updateObjectsLoadProgress= function(iObj,ObjCount) { } tiramisu.didFailLoadDocument = function(message) { AlertService.presentWithText( 'An error occurred while loading document.
' + message, 'Error Loading Document', AlertService.CAUTION | AlertService.HIDE_CLOSE_BUTTON); hideLoadOverlay(); } tiramisu.didClickHyperlink = function(urls) { if (tiramisu.openDocument) { for (var i = 0; i < urls.length; ++i) { if (urls[i].lastIndexOf('urn:cortona3d:item-by-name:', 0) == 0) { tiramisu.openDocument(urls[i].slice(27)); break; } } } } tiramisu.processAnchorURL = function(url) { return null; } tiramisu.didSelectObject = function(object, x, y) { if (!object) { if (m_selectedObject) { var group = document.getElementById('outline-object-properties'); var groupOper = document.getElementById('outline-object-oper'); group.style.visibility = 'hidden'; groupOper.style.display = 'none'; m_selectedObject = null; } return; } console.log('didSelectObject: ', object ? object.id : '[null]', ' @(', x, ',', y, ')'); if (m_selectedObject && object.id == m_selectedObject.id) return; m_selectedObject = object; SetSensorType(0); var request = new XMLHttpRequest(); request.open('GET', 'https://planner3d.shatura.com/gallery_new/param_page_pure.php?ver='+tiramisu.ver+'&ourl0='+object.id+'&is_esc=%22', true); request.onreadystatechange = function() { if (request.readyState == 4 && request.status == 200) { var group = document.getElementById('outline-object-properties'); var groupOper = document.getElementById('outline-object-oper'); if (request.responseText.length) { var div = document.createElement('div'); div.style.cursor='move'; div.innerHTML = request.responseText; group.replaceChild(div, group.firstChild); group.style.visibility = 'visible'; groupOper.style.display = 'block'; groupOper.style.left=group.style.left; groupOper.style.bottom=(parseInt(group.style.bottom)-50)+'px'; } else { groupOper.style.display = 'block'; group.style.visibility = 'hidden'; } } }; request.send(null); } tiramisu.CreateTemplate1 = function() { var Wcm=parseInt(document.getElementById('Template1_W').value); var W=isNaN(Wcm)?15:Wcm*0.01; var Hcm=parseInt(document.getElementById('Template1_H').value); var H=isNaN(Hcm)?12:Hcm*0.01; Tiramisu.action('loadScene','scenes/template1.wrl.php?W='+W+'&H='+H+'|scenes/template1.o3d'); document.getElementById('outline-object-spec').style.visibility = 'hidden'; } tiramisu.CreateTemplate2 = function() { var Wcm=parseInt(document.getElementById('Template2_W').value); var W=isNaN(Wcm)?15:Wcm*0.01; var Hcm=parseInt(document.getElementById('Template2_H').value); var H=isNaN(Hcm)?12:Hcm*0.01; var WMcm=parseInt(document.getElementById('Template2_WM').value); var WM=isNaN(WMcm)?8:WMcm*0.01; var HMcm=parseInt(document.getElementById('Template2_HM').value); var HM=isNaN(HMcm)?7:HMcm*0.01; Tiramisu.action('loadScene','scenes/template2.wrl.php?W='+W+'&HM='+HM+'&WM='+WM+'&HM='+HM+'|scenes/template2.o3d'); document.getElementById('outline-object-spec').style.visibility = 'hidden'; } tiramisu.showNewScene = function() { closeVideoBanner(); var group = document.getElementById('outline-object-spec'); var div = document.createElement('div'); var groupWidth=Math.min(800,document.documentElement.clientWidth-60); div.innerHTML = '
см
см
 
см
см
см
см
 
'+''; $("#outline-object-spec").scrollTop(); group.replaceChild(div, group.firstChild); group.style.visibility = 'visible'; group.style.width=groupWidth+'px'; group.style.height=(document.documentElement.clientHeight-210)+'px'; group.style.top='75px'; group.style.left=(document.documentElement.clientWidth-groupWidth)/2+'px'; } tiramisu.showStatistic = function(ourls) { var request = new XMLHttpRequest(); request.open('POST', 'https://planner3d.shatura.com/main/oi_page_pure.php?ver='+tiramisu.ver+'&is_esc=%22', true); request.onreadystatechange = function() { if (request.readyState == 4 && request.status == 200) { var group = document.getElementById('outline-object-spec'); if (request.responseText.length) { closeVideoBanner(); var div = document.createElement('div'); var groupWidth=Math.min(700,document.documentElement.clientWidth-60); div.innerHTML = request.responseText+''; $("#outline-object-spec").scrollTop(); group.replaceChild(div, group.firstChild); group.style.visibility = 'visible'; group.style.width=groupWidth+'px'; group.style.height=(document.documentElement.clientHeight-210)+'px'; group.style.top='75px'; group.style.left=(document.documentElement.clientWidth-groupWidth)/2+'px'; } else group.style.visibility = 'hidden'; } }; request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') request.send(ourls); } tiramisu.updateHeaderSum = function(ourls) { var request = new XMLHttpRequest(); request.open('POST', 'https://planner3d.shatura.com/main/oi_page_pure.php?ver='+tiramisu.ver+'&is_esc=%22&GetPriceMode=1', true); request.onreadystatechange = function() { if (request.readyState == 4 && request.status == 200) { if (request.responseText.length) { var ii=request.responseText.indexOf('\n'); cPriceInProject=parseInt((ii>0)?request.responseText.substring(0,ii):request.responseText); document.getElementById('BasketFormQuick').GoodEncoded.value=(ii>0)?request.responseText.substring(ii+1):''; if (isNaN(cPriceInProject)) cPriceInProject=0; if (!moneyTimeInterval) CheckUpdateHeaderSum(); } } }; request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') request.send(ourls); } tiramisu.onCamChanged = function(camName) { var Cams=['CamDown','CamIso','CamUp']; for(var k=0;k0) out+=n3+' '; if (n2>0) { if (n3>0) { for(var k=n2.toString().length;k<3;k++) out+='0'; } out+=n2+' '; } if ((n3>0)||(n2>0)) for(var k=n1.toString().length;k<3;k++) out+='0'; out+=n1; return out; } var cPriceInHeader=0; var cPriceInProject=0; var moneyTimeInterval = null; function CheckUpdateHeaderSum() { if ((cPriceInHeader==0) && (cPriceInProject>0)) { cPriceInHeader=cPriceInProject; document.getElementById('outPriceDiv').innerHTML=''+SeparatePrice(cPriceInProject)+' руб.'; } else { if (cPriceInProjectcPriceInHeader) cPriceInHeader=Math.min(cPriceInProject,cPriceInHeader+1234); document.getElementById('outPriceDiv').innerHTML=''+SeparatePrice(cPriceInHeader)+' руб.'; if (cPriceInHeader!=cPriceInProject) moneyTimeInterval = setTimeout(CheckUpdateHeaderSum, 30); } moneyTimeInterval=null; } tiramisu.setCurrentCam = function(camName) { Module.ccall('outline_setCurrentCam', 'null', ['string'], [camName.toString()]); } tiramisu.action = function(paramName,paramValue) { Module.ccall('outline_action', 'null', ['string','string'], [paramName.toString(),(paramValue===undefined)?'':paramValue.toString()]); } tiramisu.applyObjectParameters = function(params) { var count = params.length, carray = Module._malloc(count * 4), i, item; for (i = 0; i < count; ++i) { item = allocate(intArrayFromString(params[i].toString()), 'i8', ALLOC_STACK); Module.setValue(carray + i * 4, item, 'i32'); } Module.ccall('outline_applyObjectParameters', 'null', ['number', 'number', 'number'], [m_selectedObject.handle, carray, count]); Module._free(carray); } tiramisu.util = { wrapStringArray: function(data, size) { var strings = new Array(size), i; for (i = 0; i < size; ++i) strings[i] = Pointer_stringify(getValue(data + i * 4, 'i32')); return strings; }, wrapSheetArray: function(data, size) { if (!size) return []; var sheets = new Array(size), i; for (i = 0; i < size; ++i, data += 12) { sheets[i] = { id: Pointer_stringify(getValue(data, 'i32')), description: Pointer_stringify(getValue(data + 4, 'i32')), indentationLevel: getValue(data + 8, 'i32') } } return sheets; }, loadScript: function(fileName, async) { var scriptElement = document.createElement('script'); scriptElement.setAttribute('type', 'text/javascript'); scriptElement.setAttribute('src', tiramisu.resBasePath + fileName); if (async) scriptElement.setAttribute('async', 'async'); document.getElementsByTagName('head')[0].appendChild(scriptElement); }, loadStyleSheet: function(fileName) { var linkElement = document.createElement('link'); linkElement.href = tiramisu.resBasePath + fileName; linkElement.rel = 'stylesheet'; linkElement.type = 'text/css'; document.getElementsByTagName('head')[0].appendChild(linkElement); }, livingOnTheEdge: function() { if (typeof window.MSGesture !== 'function') return; console.log("Adapting to survive in Microsoft's neighbourhood. Thug life."); var popovers = document.getElementById('tiramisu-popovers'), popover, canvas = document.getElementById('canvas'), recognizer = new MSGesture(), i; if (popovers) { function eventStopper(event) {event.stopPropagation();} popovers = popovers.childNodes; for (i = 0; i < popovers.length; ++i) { popover = popovers[i]; popover.addEventListener('pointerdown', eventStopper, false); popover.addEventListener('pointerup', eventStopper, false); } } recognizer.target = canvas; function gestureHandler(event) { Module.ccall('tiramisu_microsoftGesture', 'null', ['number', 'number', 'number', 'number', 'number'], [event.translationX, event.translationY, event.scale, event.rotation, event.detail]); } canvas.addEventListener('MSHoldVisual', function(event) {event.preventDefault();}, false); canvas.addEventListener('MSGestureStart', gestureHandler, false); canvas.addEventListener('MSGestureEnd', gestureHandler, false); canvas.addEventListener('MSGestureChange', gestureHandler, false); canvas.addEventListener('MSInertiaStart', gestureHandler, false); canvas.addEventListener('MSGestureTap', gestureHandler, false); canvas.addEventListener('MSGestureHold', gestureHandler, false); canvas.addEventListener('pointerdown', function(event) { if (event.pointerType == 'mouse') {canvas.setPointerCapture(event.pointerId); return;} if (Module.ccall('tiramisu_microsoftPointerDown', 'number', ['number', 'number', 'number'], [event.pointerId, event.offsetX, event.offsetY])) { canvas.setPointerCapture(event.pointerId); recognizer.addPointer(event.pointerId); } }, false); canvas.addEventListener('pointerup', function(event) { if (event.pointerType == 'mouse') return; event.stopPropagation(); Module.ccall('tiramisu_microsoftPointerUp', 'number', ['number'], [event.pointerId, event.offsetX, event.offsetY]); }, false); window.addEventListener('pointerup', function(event) { if (event.pointerType == 'mouse') return; var box = canvas.getBoundingClientRect(), left = box.left + window.pageXOffset - document.body.clientLeft, top = box.top + window.pageYOffset - document.body.clientTop; Module.ccall('tiramisu_microsoftPointerUp', 'number', ['number'], [event.pointerId, event.pageX - left, event.pageY - top]); }, false); } } tiramisu.ui = { hideLoadOverlay: hideLoadOverlay, setupNavigationBar: setupNavigationBar, setupPopovers: setupPopovers, setupTextPane: setupTextPane } }(Tiramisu));