Tiramisu = {
resBasePath: 'res/',
ver: '',
fontSize: ((navigator.userAgent.indexOf('iPhone') > 0) || (navigator.userAgent.indexOf('Android') > 0))?3:2,
initialTextPaneWidth: '250px'
};
(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);
$('#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;k0))
urlStr+='&cid='+cls_id;
else if (artcode)
urlStr+='&artcode='+artcode;
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%';
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);
}
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.minHeight=(document.documentElement.clientHeight)+'px';
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/'+(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/'+(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');
var Zakl = document.getElementById('ZaklButt');
Zakl.src=Zakl.src.substring(0,Zakl.src.length-5)+'n.png';
div.innerHTML = request.responseText+'
';
group.replaceChild(div, group.firstChild);
div.style.minHeight=(document.documentElement.clientHeight)+'px';
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+'&accsearch=1&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.minHeight=(document.documentElement.clientHeight)+'px';
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);
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()
{
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,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 (0) {
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.bottom=(parseInt(group.style.bottom)-50)+'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
см
см
см
см
см
см
'+''; $("#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+'';
$("#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 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);
}
tiramisu.autoSaveScene = function(save_data)
{var request = new XMLHttpRequest();
request.open('POST', 'scenes/save_scene_vitra.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:'))
{
var i1=request.responseText.indexOf('|');
var i2=request.responseText.lastIndexOf('|');
if ((i1>0)&&(i2>0))
{
SaveFormQuick.project.value=request.responseText.substring(3,i1);
SaveFormQuick.img_big.value=request.responseText.substring(i1+1,i2);
SaveFormQuick.img_small.value=request.responseText.substring(i2+1);
SaveFormQuick.submit();
}
}
}
};
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
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)
{
try {
lastHeaderSumOurls=ourls;
}
catch(e) {}
tiramisu.doUpdateHeaderSum(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));