Tiramisu = { resBasePath: 'res/', ver: 'vivat', fontSize: ((navigator.userAgent.indexOf('iPhone') > 0) || (navigator.userAgent.indexOf('Android') > 0))?3:2, initialTextPaneWidth: '340px' }; (function(tiramisu) { var m_runtimeReady = false, m_dragImage = null, m_emptyDragImage = null, m_selectedObject = null; var m_imgCanvasBuffer=null; var m_bFirstOnDrop=1; var m_bDropPossible=1; var m_bDropToRoom=0; var m_bDragEnter=-1; function hideLoadOverlay() { if (progDAnim) progDAnim.doDraw(100); setInterval(processAutoSave,20000); $('#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); }); var Zakl = document.getElementById('ZaklButt'); if (Zakl) Zakl.style.visibility='visible'; window.setTimeout(function() { var overlay = document.getElementById('tiramisu-load-overlay'); if (!overlay) return; overlay.className = ''; window.setTimeout(function() { VideoBannerDiv.style.display='block'; progDAnim=null; overlay.parentNode.removeChild(overlay); $('#contentFrame').removeClass("blurred"); }, 300); }, 200); setTimeout("Tiramisu.action('ShouldUpdateHeaderSum')",500); } 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'); m_bDropPossible=1; event.dataTransfer.effectAllowed = 'copy'; event.dataTransfer.setData('Text', objectURL); if (0) { var dragImage = document.createElement('img'); dragImage.src = this.firstChild.src; try { event.dataTransfer.setDragImage(dragImage, 0, 0); } catch(e) {} } Module.ccall('outline_dragStart', 'null', ['string'], [objectURL]); } function dragEnd(event) { console.log('dragEnd '+m_bDragEnter); setTimeout("Module.ccall('outline_dragEnd', 'null', ['string'], [''])",10); if (m_dragImage) { document.body.removeChild(m_dragImage); m_dragImage=null; } } function didChangeLayout() { if (tiramisu.isRuntimeReady()) { var pane = document.getElementById('content'); Module.ccall('tiramisu_resize', 'null', ['number', 'number'], [pane.clientWidth, pane.clientHeight]); var WaterMark = document.getElementById('Watermark'); if (WaterMark) { WaterMark.style.left=((pane.clientWidth-WaterMark.clientWidth)/2)+'px' WaterMark.style.top=((pane.clientHeight-WaterMark.clientHeight)/2)+'px' } } } tiramisu.updateAdditionalObjectCount = function(ovals) { if (ovals.length) { eval('Params=['+ovals+']'); for(var k=0;k=0;kP--) { var param=div.childNodes[kP]; if ((param.tagName=='DIV') && (param.id=='GalleryParametersValues')) { bGalleryParametersValues=1; eval(param.innerText); break; } } group.replaceChild(div, group.firstChild); if (bGalleryParametersValues) updateAdditionalObjectCount(); 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); } tiramisu.updateGalleryPanel2 = function(cls_id) { var request = new XMLHttpRequest(); var urlStr='https://o3d.ru/gallery_new/menu_new_pure_2.php?ver='+tiramisu.ver+'®ion='+tiramisu.region+'&fontSize='+tiramisu.fontSize; if (cls_id && (cls_id>0)) urlStr+='&cid='+cls_id; request.open('GET', urlStr, true); request.onreadystatechange = function() { if (request.readyState == 4 && request.status == 200) { var group = document.getElementById('outline3d-items2'); var div = document.createElement('div'); div.style.height='100%'; div.innerHTML = request.responseText; var bGalleryParametersValues=0; for(kP=div.childNodes.length-1;kP>=0;kP--) { var param=div.childNodes[kP]; if ((param.tagName=='DIV') && (param.id=='GalleryParametersValues')) { bGalleryParametersValues=1; eval(param.innerText); break; } } group.replaceChild(div, group.firstChild); if (bGalleryParametersValues) updateAdditionalObjectCount(); 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.SetCatalog = function(cCat,cVal) { if (cCat!=cCatalogCat) { var Zakl = document.getElementById('Mode3D_2'); var Zakl2 = document.getElementById('Mode3D_1'); if (cCat==1) { Zakl.src=Zakl.src.substring(0,Zakl.src.length-5)+'0.svg'; Zakl2.src=Zakl2.src.substring(0,Zakl2.src.length-5)+'1.svg'; cCatalogCat=1; } else if ((cCat==2)||(cCat==0)) { Zakl.src=Zakl.src.substring(0,Zakl.src.length-5)+'1.svg'; Zakl2.src=Zakl2.src.substring(0,Zakl2.src.length-5)+'0.svg'; cCatalogCat=0; } } CatalogCats[cCatalogCat]=cVal; Tiramisu.updateGalleryPanel(CatalogCats[cCatalogCat],'',1); } var bHideCatalog=0; var activeTimeInterval=null; var cSliderWidth=0; tiramisu.ShowHideCatalog0 = function() { var splitter = document.getElementById('splitter').style; var left = document.getElementById('left-component').style; if (bHideCatalog==0) { bHideCatalog=3; tiramisu.initialTextPaneWidth=splitter.right; splitter.right = '5px'; } else if (bHideCatalog==3) { bHideCatalog=0; splitter.right = tiramisu.initialTextPaneWidth; } SliderButt.src='images/vivat4/'+(bHideCatalog?'gallery_open.png':'gallery_hide.png'); document.getElementById('right-component').style.width = splitter.right; left.right = splitter.right; } tiramisu.ShowHideCatalog = function() { var splitter = document.getElementById('splitter').style; var left = document.getElementById('left-component').style; if ((bHideCatalog==0)||(bHideCatalog==3)) { cSliderWidth=document.getElementById('right-component').clientWidth; if (bHideCatalog==0) tiramisu.initialTextPaneWidth=cSliderWidth; bHideCatalog=(bHideCatalog==0)?1:2; if (activeTimeInterval!=null) clearInterval(activeTimeInterval); activeTimeInterval = setInterval (tiramisu.Slide3dWindow, 3); SliderButt.style.display='none'; } } tiramisu.Slide3dWindow = function() { if ((bHideCatalog==1)||(bHideCatalog==2)) { cSliderWidth=(bHideCatalog==1)?(cSliderWidth-3):(cSliderWidth+3); if (cSliderWidth>tiramisu.initialTextPaneWidth) cSliderWidth=tiramisu.initialTextPaneWidth; else if (cSliderWidth<0) cSliderWidth=0; var splitter = document.getElementById('splitter').style; var left = document.getElementById('left-component').style; splitter.right = cSliderWidth+'px'; document.getElementById('right-component').style.width = splitter.right; left.right = splitter.right; if (((cSliderWidth==0) && (bHideCatalog==1)) || ((cSliderWidth==tiramisu.initialTextPaneWidth) && (bHideCatalog==2))) { bHideCatalog=(bHideCatalog==1)?3:0; SliderButt.src='images/vivat4/'+(bHideCatalog?'gallery_open.png':'gallery_hide.png'); SliderButt.style.display='block'; if (activeTimeInterval!=null) clearInterval(activeTimeInterval); } } } tiramisu.DoSearchObjects = function() { if (MySearchMask.value.length==0) return; var urlStr='https://o3d.ru/gallery_new/menu_new_pure.php?ver='+tiramisu.ver+'®ion='+tiramisu.region+'&fontSize='+tiramisu.fontSize+'&search='+MySearchMask.value; var request = new XMLHttpRequest(); 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.style.height='100%'; if (cCatalogCat!=0) { cCatalogCat=0; var Zakl0 = document.getElementById('ZaklTd0'); var Zakl1 = document.getElementById('ZaklTd1'); Zakl0.style.backgroundImage='url(images/vivat4/gallery_zakl_left.png)'; Zakl1.style.backgroundImage='url(images/vivat4/gallery_zakl_left.png)'; Zakl0.style.color='#000000'; Zakl1.style.color='#c0c0c0'; Zakl0.style.textDecoration='none'; Zakl1.style.textDecoration='underline'; Zakl0.style.cursor='default'; Zakl1.style.cursor='pointer'; } div.innerHTML = request.responseText;group.style.overflow='hidden'; 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); } tiramisu.DoSearchObjects2 = function() { if (MySearchMask2.value.length==0) return; var urlStr='https://o3d.ru/gallery_new/menu_new_pure_2.php?ver='+tiramisu.ver+'®ion='+tiramisu.region+'&fontSize='+tiramisu.fontSize+'&search='+MySearchMask2.value; var request = new XMLHttpRequest(); request.open('GET', urlStr, true); request.onreadystatechange = function() { if (request.readyState == 4 && request.status == 200) { var group = document.getElementById('outline3d-items2'); var div = document.createElement('div'); div.style.height='100%'; 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); } tiramisu.SwitchCatalog = function(cNewCatalogCat) { if (cCatalogCat!=cNewCatalogCat) { cCatalogCat=cNewCatalogCat; var Zakl0 = document.getElementById('ZaklTd0'); var Zakl1 = document.getElementById('ZaklTd1'); if (cCatalogCat==0) { Zakl0.style.backgroundImage='url(images/vivat4/gallery_zakl_left.png)'; Zakl1.style.backgroundImage='url(images/vivat4/gallery_zakl_left.png)'; Zakl0.style.color='#000000'; Zakl1.style.color='#c0c0c0'; Zakl0.style.textDecoration='none'; Zakl1.style.textDecoration='underline'; Zakl0.style.cursor='default'; Zakl1.style.cursor='pointer'; } else { Zakl0.style.backgroundImage='url(images/vivat4/gallery_zakl_right.png)'; Zakl1.style.backgroundImage='url(images/vivat4/gallery_zakl_right.png)'; Zakl1.style.color='#000000'; Zakl0.style.color='#c0c0c0'; Zakl1.style.textDecoration='none'; Zakl0.style.textDecoration='underline'; Zakl1.style.cursor='default'; Zakl0.style.cursor='pointer'; } Tiramisu.updateGalleryPanel(CatalogCats[cCatalogCat]); event.preventDefault(); } } tiramisu.RefreshCatalog = function() { Tiramisu.updateGalleryPanel(CatalogCats[cCatalogCat]); } tiramisu.didFinishLoadDocument = function(doc,ObjectToLoadCount) { setTimeout("Tiramisu.action('ShouldUpdateHeaderSum')",10000); 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); console.log('ObjectToLoadCount='+ObjectToLoadCount); if ((ObjectToLoadCount!=undefined) && (ObjectToLoadCount==0)) 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 = m_bDropPossible?'copy':'none'; Module.ccall('outline_dragContinue', 'null', ['number', 'number'], [event.clientX, event.clientY]); event.dataTransfer.dropEffect = m_bDropPossible?'copy':'none'; return false; }, false); canvas.addEventListener('dragenter', function(event) { m_bDragEnter=1; Module.ccall('outline_dragEnter', 'null', ['number', 'number'], [event.clientX, event.clientY]); return false; }, false); canvas.addEventListener('dragleave', function (event) { m_bDragEnter=0; setTimeout(tiramisu.afterDragLeaveTimeOut,500); console.log('dragLeave '+event.target) Module.ccall('outline_dragLeave'); }, false); canvas.addEventListener('drop', function(event) { console.log('ondrop '+event.clientX+' '+event.clientY) event.stopPropagation(); event.preventDefault(); // var objectURL = event.dataTransfer.getData('Text'); if ((event.clientX===undefined) && (event.clientY===undefined)) Module.ccall('outline_drop', 'null', ['number', 'number'], [event.offsetX, event.offsetY]); else Module.ccall('outline_drop', 'null', ['number', 'number'], [event.clientX, event.clientY]); tiramisu.changed=1; 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.updateObjectsLoadProgress= function(iObj,ObjCount) { progDAnimState=1000; console.log('updateObjectsLoadProgress '+iObj+' '+ObjCount) if (iObj>=ObjCount) { hideLoadOverlay(); } else { if (progDAnim) progDAnim.doDraw((100*(iObj+ObjCount)/(2*ObjCount))); } } tiramisu.setDropPossible = function(valDropPossible,valDropToRoom) {m_bDropPossible=valDropPossible;m_bDropToRoom=valDropToRoom;} tiramisu.afterDragLeaveTimeOut = function() { if (m_bDragEnter==0) m_bDragEnter=-1;} 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; } function rnd(x,nSgn) { var a=Math.pow(10,nSgn); return Math.round(x*a)/a; } tiramisu.doRequestParams=function(object,dblClickFlag) { if (!object) object=m_selectedObject; console.log('doRequestParams dbl '+dblClickFlag) if ((dblClickFlag!==undefined) && !dblClickFlag) { var group = document.getElementById('outline-object-properties'); var groupOper = document.getElementById('outline-object-oper'); groupOper.style.display = 'block'; groupOper.style.top = '5px'; groupOper.style.left = '5px'; group.style.visibility = 'hidden'; } else { var StrParamText=''; var StrParamAdd=''; try { StrParamText=Module.ccall('outline_getActiveObjectParameters', 'string').replace(/%/g, "%25").replace(/ /g, "+"); StrParamAdd=Tiramisu.action_get('getAdditionalActiveObjectParameters').replace(/%/g, "%25").replace(/ /g, "+"); } catch(e) {} var request = new XMLHttpRequest(); request.open('GET', 'https://o3d.ru/gallery_new/param_page_pure.php?ver='+tiramisu.ver+'®ion='+tiramisu.region+'&ourl0='+object.id+'&purl0='+StrParamText+StrParamAdd+'&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; for(kP=div.childNodes.length-1;kP>=0;kP--) { var param=div.childNodes[kP]; if ((param.tagName=='DIV') && (param.id=='ObjectParametersValues')) { eval(param.innerText); break; } } setTimeout(RV,1); group.replaceChild(div, group.firstChild); group.style.visibility = 'visible'; groupOper.style.display = 'block'; groupOper.style.top=(parseInt(group.style.top)+205+10)+'px'; groupOper.style.left=group.style.left; try { var StrParamText=Module.ccall('outline_getActiveObjectParameters', 'string'); var StrParams; if (StrParamText && StrParamText.length) { if (StrParamText[StrParamText.length-1]=='(') StrParamText=StrParamText.substr(0,StrParamText.length-1)+"']" eval('StrParams='+StrParamText); if (StrParams && StrParams.length) { console.log("StrParams.length="+StrParams.length+' editCnt='+editCnt); for(var j=0;j
мм
мм
Hмм
мм
мм
мм
мм
Hмм
'+''; $("#outline-object-spec").scrollTop(); group.replaceChild(div, group.firstChild); group.style.visibility = 'visible'; group.style.top='75px'; group.style.left=(document.documentElement.clientWidth-groupWidth)/2+'px'; group.style.width=groupWidth+'px'; group.style.height=(document.documentElement.clientHeight-210)+'px'; } tiramisu.showPlanEditor = function(sceneWrl,sceneO3d) { var group = document.getElementById('outline-object-spec'); group.style.overflow='hidden'; var div = document.createElement('div'); var groupWidth=400; var groupHeight=353+42; var iTemplate=(sceneWrl.indexOf('scenes/template2.wrl.php')>=0)?2:1; var syn_code=''; var i1=sceneWrl.indexOf('W='); var W=(i1>0)?Math.floor(parseFloat(sceneWrl.substr(i1+2))*100+0.5):0; i1=sceneWrl.indexOf('H='); var H=(i1>0)?Math.floor(parseFloat(sceneWrl.substr(i1+2))*100+0.5):0; if (iTemplate!=2) syn_code+=''; else { i1=sceneWrl.indexOf('WM='); var Wm=(i1>0)?Math.floor(parseFloat(sceneWrl.substr(i1+3))*100+0.5):0; i1=sceneWrl.indexOf('HM='); var Hm=(i1>0)?Math.floor(parseFloat(sceneWrl.substr(i1+3))*100+0.5):0; syn_code+=''; } syn_code+='
Измените размеры помещения
см
см
 
см
см
см
см
 
'; div.innerHTML = GetWindowFullHtmlCode(syn_code,groupWidth,groupHeight,'closeSceneSpec()',0) $("#outline-object-spec").scrollTop(); group.replaceChild(div, group.firstChild); group.style.visibility = 'visible'; group.style.width=groupWidth+'px'; group.style.height=groupHeight+'px'; DoCenterWindow(group); } tiramisu.showStatistic = function(ourls) { try { showStatisticOurls=ourls; } catch(e) {} var request = new XMLHttpRequest(); request.open('POST', 'https://o3d.ru/main/oi_page_pure.php?ver='+tiramisu.ver+'®ion='+tiramisu.region+'&is_esc=%22&designer=0', true); request.onreadystatechange = function() { if (request.readyState == 4 && request.status == 200) { var group = document.getElementById('outline-object-spec'); if (request.responseText.length) { group.style.overflowY='auto'; group.style.overflowX='hidden'; closeProjectProperties(); Tiramisu.action('DeselectAll'); var div = document.createElement('div'); var groupWidth=Math.min(700,document.documentElement.clientWidth-60); div.innerHTML = ((request.responseText.indexOf('не найдено')<=0)?'':'')+((request.responseText.indexOf('не найдено')<=0)?'':'')+request.responseText+''; $("#outline-object-spec").scrollTop(); for(kP=div.childNodes.length-1;kP>=0;kP--) { var param=div.childNodes[kP]; if ((param.tagName=='DIV') && (param.id=='SpecPageArticuls')) document.getElementById('BasketFormQuick').articuls.value=param.innerText; else if ((param.tagName=='DIV') && (param.id=='SpecPageParametersValues')) eval(param.innerText); } 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.setChanged = function(val) { tiramisu.changed=val; } tiramisu.loadScene = function() { var group = document.getElementById('outline-object-spec'); var div = document.createElement('div'); div.style.padding='10px'; div.style.overflow='hidden'; group.style.overflow='hidden'; var groupWidth=Math.min(300,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(is_touch_device()?200:165,document.documentElement.clientHeight-210)+'px'; group.style.top='75px'; group.style.left=(document.documentElement.clientWidth-groupWidth)/2+'px'; } 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 i1=request.responseText.indexOf('|'); tiramisu.project=(i1>0)?request.responseText.substring(3,i1):request.responseText.substring(3);var strUrl=location.href.toString(); var pos=strUrl.indexOf('#'); if (pos>0) strUrl=strUrl.substr(0,pos); location.href=strUrl+'#'+tiramisu.project; console.log(strUrl+'#'+tiramisu.project); var div = document.createElement('div'); div.style.padding='10px'; div.style.overflow='hidden'; group.style.overflow='hidden'; var groupWidth=Math.min(500,document.documentElement.clientWidth-60); var html_code=''; html_code+=''; html_code+=''; html_code+=''; html_code+='
Код вашего проекта: '+tiramisu.project+'

'; 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(is_touch_device()?260:225,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+'&screen_shot='+encodeURIComponent(document.getElementById('canvas').toDataURL("image/png"))); } tiramisu.autoSaveScene = function(save_data) { if (Tiramisu.autoSaveType==21) Render3dGlasses(save_data); else if (Tiramisu.autoSaveType==22) Render3d(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) { if (request.responseText.length && (request.responseText.substr(0,3)=='ok:')) { if (Tiramisu.autoSaveType==0) { tiramisu.project=request.responseText.substring(3);tiramisu.changed=0; var strUrl=location.href.toString(); var pos=strUrl.indexOf('#'); if (pos>0) strUrl=strUrl.substr(0,pos); location.href=strUrl+'#'+tiramisu.project; } else { var i1=request.responseText.indexOf('|'); var i2=request.responseText.lastIndexOf('|'); if ((i1>0)&&(i2>0)) { if ((Tiramisu.autoSaveType==2)||(Tiramisu.autoSaveType==1)) { tiramisu.project=request.responseText.substring(3,i1);tiramisu.changed=0; var strUrl=location.href.toString(); var pos=strUrl.indexOf('#'); if (pos>0) strUrl=strUrl.substr(0,pos); location.href=strUrl+'#'+tiramisu.project; console.log(strUrl+'#'+tiramisu.project); BasketFormVeryQuick.project.value=request.responseText.substring(3,i1); //BasketFormQuick.img_big.value=request.responseText.substring(i1+1,i2); //BasketFormQuick.img_small.value=request.responseText.substring(i2+1); BasketFormVeryQuick.submit(); } else if (Tiramisu.autoSaveType==10) { tiramisu.project=request.responseText.substring(3,i1); location.href='https://lk.mebeloptom.com/cron/loadToExcel.php?project='+tiramisu.project+'®ion='+Tiramisu.region;} else if (Tiramisu.autoSaveType==11) window.parent.postMessage({ func: 'pdf', data: tiramisu.project }, "*"); else if (Tiramisu.autoSaveType==12) window.parent.postMessage({ func: 'excel', data: tiramisu.project }, "*"); } } } } }; request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') if (Tiramisu.autoSaveType==0) request.send(save_data); else request.send(save_data+'&screen_shot='+encodeURIComponent(document.getElementById('canvas').toDataURL("image/png"))); } } var objectUrlLoadedTimeInterval=null; var bUpdateHeaderSumFlag=0; tiramisu.objectUrlLoaded = function() { if (objectUrlLoadedTimeInterval!=null) { clearTimeout(objectUrlLoadedTimeInterval); objectUrlLoadedTimeInterval=null; } objectUrlLoadedTimeInterval = setTimeout(DoRefreshSceneAfterLoad, 1000); } function DoRefreshSceneAfterLoad() { objectUrlLoadedTimeInterval=null; Tiramisu.action('DoRefreshSceneAfterLoad'); updateAdditionalObjectCount(); } var updateHeaderSumOurls=''; var updateHeaderSumTimeInterval=null; function DoUpdateHeaderSumByTimeInterval() { if (updateHeaderSumOurls && updateHeaderSumOurls.length) { tiramisu.doUpdateHeaderSum(updateHeaderSumOurls); updateHeaderSumOurls=''; updateHeaderSumTimeInterval=setTimeout(DoUpdateHeaderSumByTimeInterval, 5000); } else updateHeaderSumTimeInterval=null; } tiramisu.updateHeaderSum = function(ourls) { if (updateHeaderSumTimeInterval==null) { tiramisu.doUpdateHeaderSum(ourls); updateHeaderSumOurls=''; updateHeaderSumTimeInterval=setTimeout(DoUpdateHeaderSumByTimeInterval, 5000); } else { updateHeaderSumOurls=ourls; } } tiramisu.doUpdateHeaderSum = function(ourls) { var request = new XMLHttpRequest(); request.open('POST', 'https://o3d.ru/main/oi_page_pure.php?ver='+tiramisu.ver+'®ion='+tiramisu.region+'&is_esc=%22&GetPriceMode=1&designer=0', 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').articuls.value=(ii>0)?request.responseText.substring(ii+1):''; document.getElementById('SaveFormQuick').articuls.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() { var outPriceDiv=document.getElementById('outPriceDiv'); if (!outPriceDiv) return; if ((cPriceInHeader==0) && (cPriceInProject>0)) { cPriceInHeader=cPriceInProject; outPriceDiv.innerHTML=''+SeparatePrice(cPriceInProject)+' руб.'; } else { if (cPriceInProjectcPriceInHeader) cPriceInHeader=Math.min(cPriceInProject,cPriceInHeader+1234); 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.action_get = function(paramName,paramValue) { return Module.ccall('outline_action_get', 'string', ['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.pointeriId, event.pageX - left, event.pageY - top]); }, false); } } tiramisu.ui = { hideLoadOverlay: hideLoadOverlay, setupNavigationBar: setupNavigationBar, setupPopovers: setupPopovers, setupTextPane: setupTextPane } }(Tiramisu));