');for(var control in devices[dev]['controls']){table.append('
/'+wb+'/'+dev+'/'+control+'
'+seltype+'
'+selxiot_types+'
');}
hks.find('.SYS_PlcModuleBlock2').append(table);block.find('.SYS_PlcModuleParamBlock[arr="devices"]').append(hks);}}
WbDevUpdate={};}
function Start_screensaver(id){delete ScreensaverList[id]['timer'];if(EditorOpenCloseFlag===false){var popup=$('#'+id);if(popup.length>0){PopupEffect(popup,'Show');}}}
function SystemLog(mess){console.log(mess);}
function SystemLog2(mess){console.log(mess);if($('div[name=SYS_Log]').length>0){var el=$('div[name=SYS_Log]');var p=$("
"+mess+"
");el.prepend(p);el.find('p').slice(20).remove();}}
function SetLang(lang){$('div[type=text]').each(function(){var el=$(this);var htmlsel=el.attr('htmlsel');if(typeof(el.attr('html'+htmlsel+lang))!=="undefined"){if(el.attr('html'+htmlsel+lang)!==''){el.html(el.attr('html'+htmlsel+lang));}}});}
var UiFuncXid='';var FXedit='';var DevSelectSv='';var fjsfunc_attr1;var fjsfunc_attr2;var fjsfunc_attr3;function SYS_system_page(){var func=fjsfunc_attr1;var el=fjsfunc_attr2;switch(func){case'выйти':if(confirm('Выйти?')){LogOut();}
break;case'сбросить_пароль':if(confirm('Сбросить пароль?')){var jwt=localStorage.getItem('jwt');var arr={"func":"reset_passwd","jwt":jwt};$.post("https://xiot.pro/system/ajax.php",{data:JSON.stringify(arr)},function(msg){if(msg['mess']){alert(msg['mess']);}
if(msg['error']){alert(msg['error']);}},'json');}
break;case'добавить_пользователя':var name=el.parent().find('div[name="имя"]').find('input').val();var mail=el.parent().find('div[name="email"]').find('input').val();var mail2=el.parent().find('div[name="email2"]').find('input').val();if(name.length>0&&mail.length>0&&mail2.length>0){if(mail===mail2){var project=localStorage.getItem("project");var jwt=localStorage.getItem('jwt');var arr={"func":"adduser","name":name,"mail":mail,"jwt":jwt,"project":project};$.post("https://xiot.pro/system/ajax.php",{data:JSON.stringify(arr)},function(msg){if(msg['error']){alert(msg['error']);}else{GetSystemPage();}},'json');}else{alert('Введите корректные данные.');}}else{alert('Введите корректные данные.');}
break;case'изменить_пароль':var curpass=el.parent().find('div[name="старый_пароль"]').find('input').val();var newpass=el.parent().find('div[name="новый_пароль"]').find('input').val();var newpass2=el.parent().find('div[name="подтверждение_пароль"]').find('input').val();if(curpass.length>0&&newpass.length>0&&newpass2.length>0){if(newpass===newpass2){var jwt=localStorage.getItem('jwt');var arr={"func":"editpassV2","passcur":curpass,"pass":newpass,"pass2":newpass2,"jwt":jwt};$.post("https://xiot.pro/system/ajax.php",{data:JSON.stringify(arr)},function(msg){if(msg['mess']){alert(msg['mess']);}
if(msg['error']){alert(msg['error']);}
if(msg['edit']){if(msg['edit']=='ok'){LogOut();}}},'json');}else{alert('Новый пароль и подтверждение не совпадают. Введите корректные данные.');}}else{alert('Введите корректные данные.');}
break;case'удалить_пользователя':var email=el.closest('div[name="user"]').attr('email');var project=localStorage.getItem("project");var jwt=localStorage.getItem('jwt');var arr={"func":"deleteuser","email":email,"jwt":jwt,"project":project};$.post("https://xiot.pro/system/ajax.php",{data:JSON.stringify(arr)},function(msg){if(msg['error']){alert(msg['error']);}else{el.closest('div[name=user]').remove();GetSystemPage();alert(msg['ok']);}},'json');break;case'сбросить_пароль_пользователя':alert(func);break;default:alert(func);}}
function GetSystemPage(){var spage=$('div[name=S_СТРАНИЦА_НАСТРОЙКИ]');var jwt=localStorage.getItem('jwt');var project=localStorage.getItem('project');var data={"jwt":jwt,"project":project,"func":"syspage_getinfo"};spage.find('div[name=блок_добавить_пользователя]').hide();spage.find('div[name=загрузка]').show();$.post("https://xiot.pro/system/ajax.php",{data:JSON.stringify(data)},function(mess){spage.find('div[name=загрузка]').hide();if(mess['prjlist']){var projectArr=mess['prjlist'];var project="";var homelist=spage.find('div[name=список_домов]');var homebut=spage.find('div[name=список_домов]').find('div[name=дом]').last().clone();homelist.html('');for(var prj in projectArr){if(localStorage.getItem("project")==undefined||localStorage.getItem("project")==null||localStorage.getItem("project")==""){project="";}else{project=localStorage.getItem("project");}
if(prj==project){spage.find('div[name=дом]').find('div[name=имя_дома]').html(projectArr[prj]['name']);}else{var homebutnew=homebut.clone().html(projectArr[prj]['name']).attr('class','OpenProjectBut').attr('prj',prj);var nid=newid();homebutnew.attr('id',nid);homelist.append(homebutnew);}}
spage.find('div[name=владелец]').find('div[name=email]').html(mess['user']);switch(mess['usertype']){case'admin':spage.find('div[name=владелец]').find('div[name=текст]').html('РАЗРАБОТЧИК');spage.find('div[name=разработчик]').hide();spage.find('div[name=пользователи]').hide();break;case'owner':if(typeof(mess['userscount'])!=="undefined"){if(mess['userscount']>0){var count=mess['userscount'];spage.find('div[name=пользователи]').find('div[name=кол-во]').html('всего '+count);spage.find('div[name=пользователи]').find('div[name=user]').remove();for(var key in mess['users']){var userdiv=spage.find('div[name=пользователи]').find('div[name=пользователь]').clone();var nid=newid();userdiv.attr('id',nid).attr('name','user');userdiv.css('display','block').attr('email',key);userdiv.find('div[name=имя]').html(mess['users'][key]['name']+' ('+key+')');spage.find('div[name=пользователи]').find('div[name=список]').append(userdiv);}}else{spage.find('div[name=пользователи]').find('div[name=кол-во]').html('не добавлены');}}
if(typeof(mess['admin'])!=="undefined"){spage.find('div[name=разработчик]').find('div[name=email]').html(mess['admin']);}
break;default:spage.find('div[name=владелец]').find('div[name=текст]').html('ПОЛЬЗОВАТЕЛЬ');spage.find('div[name=разработчик]').hide();spage.find('div[name=пользователи]').hide();}}else{SystemLog(mess['error']);}},"json");openpage(spage,'GetSystemPage');}
var SYS_acad_buf=new Array();function SYS_acad(){var attr1=fjsfunc_attr1;var attr2=fjsfunc_attr2;switch(attr1){case'Element':for(var key in attr2){console.log(attr2);switch(key){case'Group':$('div[name=SYS_ACAD_Cable_Group]').find('input').val(attr2[key]);break;}}
break;case'SelectLine':$('div[name=SYS_ACAD_SelectLine]').html(attr2);break;case'SelectBlock':$('div[name=SYS_ACAD_SelectBlock]').html(attr2);break;case'SYS_ACAD':var SYS_ACAD_Cable_Type=$('div[name=SYS_ACAD_Cable_Type]').find('select');SYS_ACAD_Cable_Type.html('');SYS_ACAD_Cable_Type.append('');SYS_ACAD_Cable_Type.append('');break;case'SYS_ACAD_Cable_Save':var SYS_ACAD_Cable_Group=$('div[name=SYS_ACAD_Cable_Group]').find('input').val();var SYS_ACAD_Cable_Type=$('div[name=SYS_ACAD_Cable_Type]').find('input').val();var jsonarr={};jsonarr['Group']=SYS_ACAD_Cable_Group;jsonarr['Type']=SYS_ACAD_Cable_Type;var json=JSON.stringify(jsonarr);TagChange('/xsysui/module/acad/set_type',json);break;case'SYS_ACAD_Cable_Create':var eltype='line';TagChange('/xsysui/module/acad/create',eltype);break;default:console.log(attr1+' - default');}}
function LogOut(){localStorage.removeItem('savetime');localStorage.removeItem('editor');localStorage.removeItem('editorver');localStorage.removeItem('user');localStorage.removeItem('MQTTADDR');localStorage.removeItem('MQTTPORT');localStorage.removeItem('MQTTPIN');localStorage.removeItem('MQTTSSL');localStorage.removeItem('MQTTUSER');localStorage.removeItem('MQTTPASS');localStorage.removeItem('MQTTPOUT');localStorage.removeItem('jwt');localStorage.removeItem('project');localStorage.removeItem('prjlist');if(localStorage.getItem('ihtml')){document.location.href=localStorage.getItem('ihtml');}else{document.location.href='/index.html';;}};function GetDevName(hid){SystemLog('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');SystemLog(hid);var DevArr=hid.split('/');SystemLog(DevArr);var textlinkdev=hid;var type=DevArr[1];switch(type){case'xhome':textlinkdev=DevicesConf['home']['name']+'-'+DevArr[3];break;case'xfloor':var floorid=DevArr[2];textlinkdev=FloorsConfList[floorid]['name']+'-'+DevArr[3];break;case'xroom':var roomid=DevArr[2];var floorname='';try{floorname=RoomsConfList[roomid]['floorname'];}catch(err){floorname='';}
var roomname='';try{roomname=RoomsConfList[roomid]['name'];}catch(err){roomname='';}
textlinkdev=floorname+'-'+roomname+'-'+DevArr[3];break;case'xdev':var devid=DevArr[2];try{textlinkdev=DevicesConfList[devid]['floorname']+'-'+DevicesConfList[devid]['roomname']+'-'+DevicesConfList[devid]['name']+'-'+DevArr[3];}catch(err){textlinkdev='удален';}
break;case'xlogic':var lid=DevArr[2];var type=DevicesConf['logic'][lid]['type'];var param=XiotLogic[type]['Param'][DevArr[3]]['name'];textlinkdev=DevicesConf['logic'][lid]['Name']+'-'+param;break;}
SystemLog(textlinkdev);return textlinkdev;}
function ConfListCreate(){CharacteristicsConfList={};for(var floorid in DevicesConf['floors']){FloorsConfList[floorid]={};FloorsConfList[floorid]['name']=DevicesConf['floors'][floorid]['name'];for(var roomid in DevicesConf['floors'][floorid]['rooms']){RoomsConfList[roomid]={};RoomsConfList[roomid]['floorname']=DevicesConf['floors'][floorid]['name'];RoomsConfList[roomid]['name']=DevicesConf['floors'][floorid]['rooms'][roomid]['name'];RoomsConfList[roomid]['floor']=floorid;for(var devid in DevicesConf['floors'][floorid]['rooms'][roomid]['devices']){DevicesConfList[devid]=DevicesConf['floors'][floorid]['rooms'][roomid]['devices'][devid];DevicesConfList[devid]['floor']=floorid;DevicesConfList[devid]['floorname']=DevicesConf['floors'][floorid]['name'];DevicesConfList[devid]['room']=roomid;DevicesConfList[devid]['roomname']=DevicesConf['floors'][floorid]['rooms'][roomid]['name'];for(var rh in DevicesConfList[devid]['rh']){try{var hname=XiotCharacteristics[rh]['ru'];}catch(e){SystemLog(e);}
if(typeof(CharacteristicsConfList[rh])==='undefined'){CharacteristicsConfList[rh]={};}
switch(rh){case'MotionDetected':var hid='/xfloor/'+floorid+'/'+rh;if(typeof(CharacteristicsConfList[rh][hid])==='undefined'){var hidarr={};hidarr['floorid']=floorid;hidarr['roomid']=roomid;hidarr['name']=DevicesConfList[devid]['floorname']+' - '+hname;CharacteristicsConfList[rh][hid]=hidarr;}
var hid='/xroom/'+roomid+'/'+rh;if(typeof(CharacteristicsConfList[rh][hid])==='undefined'){var hidarr={};hidarr['floorid']=floorid;hidarr['roomid']=roomid;hidarr['name']=DevicesConfList[devid]['floorname']+' - '+DevicesConfList[devid]['roomname']+' - '+hname;CharacteristicsConfList[rh][hid]=hidarr;}
break;}
var hid='/xdev/'+devid+'/'+rh;var hidarr={};hidarr['floorid']=floorid;hidarr['roomid']=roomid;hidarr['devid']=devid;hidarr['name']=DevicesConfList[devid]['floorname']+' - '+DevicesConfList[devid]['roomname']+' - '+DevicesConfList[devid]['name']+' - '+hname;CharacteristicsConfList[rh][hid]=hidarr;}
for(var oh in DevicesConfList[devid]['oh']){var hname=oh;if(typeof(XiotCharacteristics[oh])!=="undefined"){hname=XiotCharacteristics[oh]['ru'];}
if(typeof(CharacteristicsConfList[oh])==='undefined'){CharacteristicsConfList[oh]={};}
if(DevicesConfList[devid]['oh'][oh]['active']=="1"){var hid='/xdev/'+devid+'/'+oh;var hidarr={};hidarr['floorid']=floorid;hidarr['roomid']=roomid;hidarr['devid']=devid;hidarr['name']=DevicesConfList[devid]['floorname']+' - '+DevicesConfList[devid]['roomname']+' - '+DevicesConfList[devid]['name']+' - '+hname;CharacteristicsConfList[oh][hid]=hidarr;}}}}}}
var blink_interval={};function blink_set_color_background_interval(el,color,setcolor){if(el.attr('blink_color_background_set')==0){el.attr('blink_color_background_set',1);el.css('background-color',color);}else{el.attr('blink_color_background_set',0);el.css('background-color',setcolor);}}
function el_blink_start(func,el,color,setcolor){switch(func){case'fill':el.attr('blink_color_fill',color);el.css('fill',setcolor);break;case'background':if(el.attr('blink_color_background_start')!=='1'){el.attr('blink_color_background_start','1');el.attr('blink_color_background',color);el.css('background-color',setcolor);el.attr('blink_color_background_set',0);blink_interval[el.attr('id')]=setInterval(blink_set_color_background_interval,500,el,color,setcolor);}
break;}}
function el_blink_stop(el){clearTimeout(blink_interval[el.attr('id')]);if(typeof(el.attr('blink_color_fill'))!=="undefined"){el.css('fill',el.attr('blink_color_fill'));el.removeAttr('blink_color_fill');}
if(el.attr('blink_color_background_start')==='1'){el.attr('blink_color_background_start','0');if(typeof(el.attr('blink_color_background'))!=="undefined"){el.css('background-color',el.attr('blink_color_background'));el.removeAttr('blink_color_background');}}}
const rgbToHex=(r,g,b)=>'#'+[r,g,b].map(x=>{const hex=x.toString(16)
return hex.length===1?'0'+hex:hex}).join('')
const hexToRgb=hex=>hex.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,(m,r,g,b)=>'#'+r+r+g+g+b+b).substring(1).match(/.{2}/g).map(x=>parseInt(x,16))
function DeviceConfigAddFloor(id,name){var floor=$('.SYS_DevicesFloor_T').clone().attr('class','SYS_DevicesFloor').show().attr('did',id);floor.find('.SYS_DevicesFloorName').html(name).attr('title',name);$('.SYS_DevicesFloorCont').append(floor);}
function DeviceConfigAddRoom(roomid,name,keyfloor){var roomcont=$('.SYS_DevicesFloor[did="'+keyfloor+'"]').find('.SYS_DevicesRoomsCont');var room=roomcont.find('.SYS_DevicesRoom_T').clone().attr('class','SYS_DevicesRoom').show().attr('did',roomid);room.find('.SYS_DevicesRoomName').html(name).attr('title',name);roomcont.append(room);}
function DeviceConfigAddDev(roomid,devid,namedev,typedev){var devcont=$('.SYS_DevicesRoom[did="'+roomid+'"]').find('.SYS_DevicesDevCont');var dev=devcont.find('.SYS_DevicesDev_T').clone().attr('class','SYS_DevicesDev').show().attr('did',devid);dev.find('.SYS_DevicesDevName').html(namedev).attr('title',namedev);dev.find('.SYS_DevicesDevIcon').hide();dev.find('.SYS_DevicesDevIcon[type="'+typedev+'"]').show();devcont.append(dev);}
function DeviceConfigAddLogic(logicid,name,type){SystemLog(DevicesConf);var logic=$('.SYS_DevicesLogic_T').clone().attr('class','SYS_DevicesLogic').show().attr('did',logicid);logic.find('.SYS_DevicesLogicName').html(name).attr('title',name);logic.find('.SYS_DevicesLogicIcon').hide();logic.find('.SYS_DevicesLogicIcon[type="'+type+'"]').show();$('.SYS_DevicesLogicsCont').append(logic);}
function DevicesSetupAddElement(scenetype,param,conf,xiotconf){var type=xiotconf['type'];var scenename=XiotLogic[scenetype]['ru'];var def=xiotconf['default'];var el=$('
'+xiotconf['name']+'
');switch(type){case'name':if(typeof(conf[param])!=="undefined"){scenename=conf[param];}
var div=$('');el.find('.SYS_DevicesSetupBlockPV').append(div);break;case'text':var txt='';if(typeof(conf[param])!=="undefined"){txt=conf[param];}
var div=$('');el.find('.SYS_DevicesSetupBlockPV').append(div);break;case'tag':var tag='';if(typeof(conf[param])!=="undefined"){tag=conf[param];}
var div=$('');el.find('.SYS_DevicesSetupBlockPV').append(div);break;case'device':el.find('.SYS_DevicesSetupBlockPN').css('width','30%');el.find('.SYS_DevicesSetupBlockPV').css('width','70%');var sel=$('');for(var dev in DevicesConfList){var add=false;if(typeof(xiotconf['device'])==="undefined"){add=true;}else{if(xiotconf['device']==='all'){add=true;}else{var harr=xiotconf['device'].split(',');if(harr.indexOf(DevicesConfList[dev]['type'])!==-1){add=true;}}}
if(add===true){var floorid=DevicesConfList[dev]['floor'];var roomid=DevicesConfList[dev]['room'];var hid='/xdev/'+dev;sel.append('');}}
if(typeof(conf[param])!=="undefined"){sel.val(conf[param]);conf[param]=def;}
el.find('.SYS_DevicesSetupBlockPV').css('height','15vh').append(sel);break;case'deviceh':el.find('.SYS_DevicesSetupBlockPN').css('width','30%');el.find('.SYS_DevicesSetupBlockPV').css('width','70%');var sel=$('');for(var h in CharacteristicsConfList){var add=false;if(typeof(xiotconf['h'])==="undefined"){add=true;}else{if(xiotconf['h']==='all'){add=true;}else{var harr=xiotconf['h'].split(',');if(harr.indexOf(h)!==-1){add=true;}}}
if(add===true){for(var dev in CharacteristicsConfList[h]){var devid=dev;var hname=CharacteristicsConfList[h][dev]['name'];sel.append('');}}}
if(typeof(conf[param])!=="undefined"){sel.val(conf[param]);}
el.find('.SYS_DevicesSetupBlockPV').css('height','15vh').append(sel);break;case'action':var actionsel=$('.SYS_DevicesSetupActionSelect_T').clone().removeClass('SYS_DevicesSetupActionSelect_T').addClass('SYS_DevicesSetupActionSelect').show();if(typeof(conf[param])!=="undefined"){var actionselblock=actionsel.find('.SYS_DevicesSetupActionSelectBlock');actionselblock.attr('arr',param).html('');for(var name in conf[param]){var devname=GetDevName(name);var selblock='
0){for(var floorid in DevicesConf['floors']){var namefloor=DevicesConf['floors'][floorid]['name'];DeviceConfigAddFloor(floorid,namefloor);for(var roomid in DevicesConf['floors'][floorid]['rooms']){var nameroom=DevicesConf['floors'][floorid]['rooms'][roomid]['name'];DeviceConfigAddRoom(roomid,nameroom,floorid);for(var devid in DevicesConf['floors'][floorid]['rooms'][roomid]['devices']){var namedev=DevicesConf['floors'][floorid]['rooms'][roomid]['devices'][devid]['name'];var typedev=DevicesConf['floors'][floorid]['rooms'][roomid]['devices'][devid]['type'];DeviceConfigAddDev(roomid,devid,namedev,typedev);}}}
if(typeof(DevicesConf['logic'])!=="undefined"){for(var logicid in DevicesConf['logic']){var name=DevicesConf['logic'][logicid]['Name'];var type=DevicesConf['logic'][logicid]['type'];DeviceConfigAddLogic(logicid,name,type);}}}
$('.SYS_DevicesWindow').show();break;case'close':if($('.SYS_DevicesConf').length==0){$('.SYS_Main').append('
');}
var json=JSON.stringify(DevicesConf);$('.SYS_DevicesConf').attr('json',json);$('.SYS_DevicesWindow').hide();break;case'openfloors':var rc=el.parent().find('.SYS_DevicesRoomsCont')
var icon=el.parent().find('.SYS_DevicesFloorIcon');rc.toggle();if(rc.css('display')=='none'){icon.css('transform','rotate(0deg)');}else{icon.css('transform','rotate(90deg)');}
break;case'openrooms':var rc=el.parent().find('.SYS_DevicesDevCont')
var icon=el.parent().find('.SYS_DevicesRoomIcon');rc.toggle();if(rc.css('display')=='none'){icon.css('transform','rotate(0deg)');}else{icon.css('transform','rotate(90deg)');}
break;case'addfloor':if(typeof(DevicesConf['floors'])==="undefined"){DevicesConf['floors']={};}
var floorid=1;if(typeof(DevicesConf['floorid'])!=="undefined"){floorid=DevicesConf['floorid']+1;}
DevicesConf['floorid']=floorid;var name="Этаж";DevicesConf['floors'][floorid]={};DevicesConf['floors'][floorid]['name']=name;DevicesConf['floors'][floorid]['rooms']={};DeviceConfigAddFloor(floorid,name);break;case'addroom':var floorid=el.closest('.SYS_DevicesFloor').attr('did');var roomid=1;if(typeof(DevicesConf['roomid'])!=="undefined"){roomid=DevicesConf['roomid']+1;}
DevicesConf['roomid']=roomid;var name="Комната";if(typeof(DevicesConf['floors'][floorid]['rooms'])==="undefined"){DevicesConf['floors'][floorid]['rooms']={};}
DevicesConf['floors'][floorid]['rooms'][roomid]={};DevicesConf['floors'][floorid]['rooms'][roomid]['name']=name;DevicesConf['floors'][floorid]['rooms'][roomid]['floor']=floorid;DevicesConf['floors'][floorid]['rooms'][roomid]['devices']={};DeviceConfigAddRoom(roomid,name,floorid);break;case'adddev':var floorid=el.closest('.SYS_DevicesFloor').attr('did');var roomid=el.closest('.SYS_DevicesRoom').attr('did');var devid=1;if(typeof(DevicesConf['devid'])!=="undefined"){devid=DevicesConf['devid']+1;}
DevicesConf['devid']=devid;var namedev="новое";DevicesConf['floors'][floorid]['rooms'][roomid]['devices'][devid]={};DevicesConf['floors'][floorid]['rooms'][roomid]['devices'][devid]['name']=namedev;DevicesConf['floors'][floorid]['rooms'][roomid]['devices'][devid]['type']='none';DevicesConf['floors'][floorid]['rooms'][roomid]['devices'][devid]['floor']=floorid;DevicesConf['floors'][floorid]['rooms'][roomid]['devices'][devid]['room']=roomid;DeviceConfigAddDev(roomid,devid,namedev,'none');break;case'logicsetup':$('.SYS_DevicesSetup').hide();var logicid=el.closest('.SYS_DevicesLogic').attr('did');var logicconf=DevicesConf['logic'][logicid];var type=logicconf['type'];var devsetup=$('.SYS_DevicesSetup[type="logic"]');devsetup.attr('did',logicid).show();devsetup.find('.SYS_DevicesSetupCont[type="left"]').html('');devsetup.find('.SYS_DevicesSetupCont[type="right"]').html('');for(var input in XiotLogic[type]['Input']){var el=DevicesSetupAddElement(type,input,logicconf,XiotLogic[type]['Input'][input]);devsetup.find('.SYS_DevicesSetupCont[type="right"]').append(el);var tag='/xlogic/'+logicid+'/'+input;TagChange('/xtagr'+tag,'0');}
for(var output in XiotLogic[type]['Output']){var el=DevicesSetupAddElement(type,output,logicconf,XiotLogic[type]['Output'][output]);devsetup.find('.SYS_DevicesSetupCont[type="right"]').append(el);var tag='/xlogic/'+logicid+'/'+output;TagChange('/xtagr'+tag,'0');}
for(var param in XiotLogic[type]['Param']){var el=DevicesSetupAddElement(type,param,logicconf,XiotLogic[type]['Param'][param]);devsetup.find('.SYS_DevicesSetupCont[type="left"]').append(el);var tag='/xlogic/'+logicid+'/'+param;TagChange('/xtagr'+tag,'0');}
devsetup.find('.SYS_DevicesSetupTitle').html('Настройка сценария (id='+logicid+')');break;case'homesetup':case'floorsetup':case'roomsetup':case'devsetup':$('.SYS_DevicesSetup').hide();var homeid='1';$('.SYS_DevicesSetup[type="dev"]').find('.SYS_DevicesSetupBlock[func="room"]').hide();$('.SYS_DevicesSetup[type="dev"]').find('.SYS_DevicesSetupBlock[func="type"]').hide();switch(func){case'homesetup':if(typeof(DevicesConf['home'])==="undefined"){DevicesConf['home']={};DevicesConf['home']['name']='Мой дом';}
var sv='/xhome/1';var devconf=DevicesConf['home'];var devtype='Home';$('.SYS_DevicesSetup[type="dev"]').show().attr('devtype',devtype).attr('did','1');UiFuncXid='1';FXedit='fxhome';break;case'floorsetup':var floorid=el.closest('.SYS_DevicesFloor').attr('did');var sv='/xfloor/'+floorid;var devconf=DevicesConf['floors'][floorid];var devtype='Floor';$('.SYS_DevicesSetup[type="dev"]').show().attr('devtype',devtype).attr('did',floorid);UiFuncXid=floorid;FXedit='fxfloor';break;case'roomsetup':var floorid=el.closest('.SYS_DevicesFloor').attr('did');var roomid=el.closest('.SYS_DevicesRoom').attr('did');var sv='/xroom/'+roomid;var devconf=DevicesConf['floors'][floorid]['rooms'][roomid];var devtype='Room';$('.SYS_DevicesSetup[type="dev"]').show().attr('devtype',devtype).attr('did',roomid).attr('roomid',roomid).attr('floorid',floorid);UiFuncXid=roomid;FXedit='fxroom';break;case'devsetup':var floorid=el.closest('.SYS_DevicesFloor').attr('did');var roomid=el.closest('.SYS_DevicesRoom').attr('did');var devid=el.closest('.SYS_DevicesDev').attr('did');var sv='/xdev/'+devid;var devconf=DevicesConf['floors'][floorid]['rooms'][roomid]['devices'][devid];var devtype=devconf['type'];$('.SYS_DevicesSetup[type="dev"]').show().attr('devtype',devtype).attr('did',devid).attr('roomid',roomid).attr('floorid',floorid);$('.SYS_DevicesSetup[type="dev"]').find('.SYS_DevicesSetupVal[func="type"]').val(devconf['type']);$('.SYS_DevicesSetup[type="dev"]').find('.SYS_DevicesSetupContType').attr('type',devtype);var seltype=$('');var option='';for(var key in XiotServices){if(['Home','Floor',"Room"].indexOf(key)===-1){option=option+'';}}
seltype.html(option);seltype.val(devtype);$('.SYS_DevicesSetup[type="dev"]').find('.SYS_DevicesSetupBlock[func="type"]').find('.SYS_DevicesSetupBlockPV').html(seltype);var selroom=$('');option='';for(var key in RoomsConfList){option=option+'';}
selroom.html(option);selroom.val(roomid);$('.SYS_DevicesSetup[type="dev"]').find('.SYS_DevicesSetupBlock[func="room"]').find('.SYS_DevicesSetupBlockPV').html(selroom);$('.SYS_DevicesSetup[type="dev"]').find('.SYS_DevicesSetupTitle').html("Настройка устройства (id "+devid+")");UiFuncXid=devid;FXedit='fxdev';$('.SYS_DevicesSetup[type="dev"]').find('.SYS_DevicesSetupBlock[func="room"]').show();$('.SYS_DevicesSetup[type="dev"]').find('.SYS_DevicesSetupBlock[func="type"]').show();break;}
$('.SYS_DevicesSetup[type="dev"]').find('.SYS_DevicesSetupVal[func="name"]').val(devconf['name']);var Dct=$('.SYS_DevicesSetup[type="dev"]').find('.SYS_DevicesSetupContType');Dct.find('.SYS_DevicesSetupBlock').remove();var Dscr=$('.SYS_DevicesSetup[type="dev"]').find('.SYS_DevicesSetupCont[type="right"]');Dscr.find('.SYS_DevicesSetupBlock').remove();if(typeof(XiotServices[devtype])!=="undefined"){var numh=0;for(var key in XiotServices[devtype]['RequiredCharacteristics']){numh++;var rh=XiotServices[devtype]['RequiredCharacteristics'][key];var DevicesSetupBlock=$('.SYS_DevicesSetupBlock_T').clone();DevicesSetupBlock.attr('class','SYS_DevicesSetupBlock').attr('arr','rh').attr('arr2',rh).show();try{var rhname=XiotCharacteristics[rh]['ru'];}catch(e){var rhname=rh;}
try{var desc=XiotCharacteristics[rh]['desc'];}catch(e){var desc=rhname;}
DevicesSetupBlock.find('.SYS_DevicesSetupBlockTitle').html(rhname).attr('title',desc);if(typeof(devconf['rh'])==='undefined'){devconf['rh']={};}
if(typeof(devconf['rh'][rh])==='undefined'){devconf['rh'][rh]={};}
devconf['rh'][rh]['num']=numh;try{if(typeof(XiotCharacteristics[rh])!=='undefined'){for(var key2 in XiotCharacteristics[rh]['Permissions']){switch(XiotCharacteristics[rh]['Permissions'][key2]){case'pw':DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="control"]').prop('disabled',false).css('background-color','white');break;case'pr':DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="status"]').prop('disabled',false).css('background-color','white');break;}}}}catch(e){SystemLog(e);DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="control"]').prop('disabled',false).css('background-color','white');DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="status"]').prop('disabled',false).css('background-color','white');}
DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="active"]').prop('checked',true);DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="active"]').prop('disabled',true);DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="control"]').attr('tagtype','all');DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="status"]').attr('tagtype','all');if(typeof(devconf['rh'])!=="undefined"){if(typeof(devconf['rh'][rh])!=="undefined"){if(typeof(devconf['rh'][rh]['control'])!=="undefined"){DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="control"]').val(devconf['rh'][rh]['control']);}
if(typeof(devconf['rh'][rh]['status'])!=="undefined"){DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="status"]').val(devconf['rh'][rh]['status']);}
try{if(typeof(XiotCharacteristics[rh])!=='undefined'){if(typeof(XiotCharacteristics[rh]["link"])!=="undefined"){if(XiotCharacteristics[rh]["link"]=="0"){DevicesSetupBlock.find('.SYS_ElEditorBut').hide();}}}}catch(e){SystemLog(e);}
if(typeof(devconf['rh'][rh]['link'])!=="undefined"){if(devconf['rh'][rh]['link']=='1'){DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="link"]').prop('checked',true);}else{DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="link"]').prop('checked',false);}}}}
var tag='/xtagr'+sv+'/'+rh;DevicesSetupBlock.attr('hn',rh);Dct.append(DevicesSetupBlock);TagChange(tag,'0');}
for(var key in XiotServices[devtype]['OptionalCharacteristics']){numh++;var oh=XiotServices[devtype]['OptionalCharacteristics'][key];var DevicesSetupBlock=$('.SYS_DevicesSetupBlock_T').clone();DevicesSetupBlock.attr('class','SYS_DevicesSetupBlock').attr('arr','oh').attr('arr2',oh).show();try{var rhname=XiotCharacteristics[oh]['ru'];}catch(e){var rhname=oh;}
try{var desc=XiotCharacteristics[oh]['desc'];}catch(e){var desc=rhname;}
DevicesSetupBlock.find('.SYS_DevicesSetupBlockTitle').html(rhname).attr('title',desc);if(typeof(devconf['oh'])==='undefined'){devconf['oh']={};}
if(typeof(devconf['oh'][oh])==='undefined'){devconf['oh'][oh]={};}
devconf['oh'][oh]['num']=numh;for(var key2 in XiotCharacteristics[oh]['Permissions']){switch(XiotCharacteristics[oh]['Permissions'][key2]){case'pw':DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="control"]').prop('disabled',false).css('background-color','white');break;case'pr':DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="status"]').prop('disabled',false).css('background-color','white');break;}}
DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="control"]').attr('tagtype','all');DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="status"]').attr('tagtype','all');if(typeof(devconf['oh'])!=="undefined"){if(typeof(devconf['oh'][oh])!=="undefined"){if(typeof(devconf['oh'][oh]['control'])!=="undefined"){DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="control"]').val(devconf['oh'][oh]['control']);}
if(typeof(devconf['oh'][oh]['status'])!=="undefined"){DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="status"]').val(devconf['oh'][oh]['status']);}
if(typeof(devconf['oh'][oh]['active'])!=="undefined"){if(devconf['oh'][oh]['active']=='1'){DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="active"]').prop('checked',true);}else{DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="active"]').prop('checked',false);}}
if(typeof(XiotCharacteristics[oh]["link"])!=="undefined"){if(XiotCharacteristics[oh]["link"]=="0"){DevicesSetupBlock.find('.SYS_ElEditorBut').hide();}}
if(typeof(devconf['oh'][oh]['link'])!=="undefined"){if(devconf['oh'][oh]['link']=='1'){DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="link"]').prop('checked',true);}else{DevicesSetupBlock.find('.SYS_DevicesSetupVal[func="link"]').prop('checked',false);}}}}
var tag='/xtagr'+sv+'/'+oh;DevicesSetupBlock.attr('hn',oh);Dct.append(DevicesSetupBlock);TagChange(tag,'0');}
if(typeof(devconf['param'])==="undefined"){devconf['param']={};}
for(var key in XiotServices[devtype]['Param']){var param=XiotServices[devtype]['Param'][key];var DevicesSetupBlock=$('.SYS_DevicesSetupBlock_T2').clone();DevicesSetupBlock.attr('class','SYS_DevicesSetupBlock').attr('arr','param').show();DevicesSetupBlock.find('.SYS_DevicesSetupBlockPN').html(param['name']);if(typeof(param['unit'])!=="undefined"){DevicesSetupBlock.find('.SYS_DevicesSetupBlockPU').html(param['unit']);}
switch(param['type']){case'fxlogic':var len=0;if(typeof(devconf['param'][key])!=="undefined"){len=Object.keys(devconf['param'][key]).length;}
DevicesSetupBlock.find('.SYS_DevicesSetupBlockPV').css('width','auto').html('
элементов - '+len+'
');var SYS_FxDevLogicMenu=$('.SYS_FxDevLogicMenu_T').clone().attr('class','SYS_FxDevLogicMenu').show();DevicesSetupBlock.find('.SYS_DevicesSetupBlockPU').css('width','auto').html(SYS_FxDevLogicMenu);break;case'number':var input=DevicesSetupBlock.find('.SYS_DevicesSetupBlockPV').find('input');if(typeof(param['min'])!=="undefined"){input.attr('min',param['min']);}
if(typeof(param['max'])!=="undefined"){input.attr('max',param['max']);}
input.attr('func',key);if(typeof(devconf['param'][key])!=="undefined"){input.val(devconf['param'][key]);}else{devconf['param'][key]=param['default'];if(typeof(param['default'])!=="undefined"){input.val(param['default']);}}
break;case'select':DevicesSetupBlock.find('.SYS_DevicesSetupBlockPV').css('width','50%').html('');DevicesSetupBlock.find('.SYS_DevicesSetupBlockPU').hide();var select=DevicesSetupBlock.find('.SYS_DevicesSetupBlockPV').find('select');for(var sel in param["option"]){select.append('');}
if(typeof(devconf['param'][key])!=="undefined"){select.val(devconf['param'][key]);}else{if(typeof(param['default'])!=="undefined"){devconf['param'][key]=param['default'];select.val(param['default']);}}
break;case'tag':DevicesSetupBlock.find('.SYS_DevicesSetupBlockPV').css('width','50%').html(' ');DevicesSetupBlock.find('.SYS_DevicesSetupBlockPU').hide();if(typeof(devconf['param'][key])!=="undefined"){DevicesSetupBlock.find('.SYS_DevicesSetupBlockPV').find('input').val(devconf['param'][key]);}
break;case'devcontrol':break;case'device':DevicesSetupBlock.find('.SYS_DevicesSetupBlockPN').css('width','30%');DevicesSetupBlock.find('.SYS_DevicesSetupBlockPV').css('width','70%').html('');DevicesSetupBlock.find('.SYS_DevicesSetupBlockPU').hide();var select=$('');for(var dev in DevicesConfList){var add=false;if(typeof(param['device'])==="undefined"){add=true;}else{if(param['device']==='all'){add=true;}else{if(param['device']==DevicesConfList[dev]['type']){add=true;}}}
if(add===true){select.append('');}}
DevicesSetupBlock.find('.SYS_DevicesSetupBlockPV').css('height','15vh').append(select);if(typeof(devconf['param'][key])!=="undefined"){DevicesSetupBlock.find('.SYS_DevicesSetupBlockPV').find('select').val(devconf['param'][key]);}
break;}
var tag='/xtagr'+sv+'/'+key;DevicesSetupBlock.attr('hn',key);Dscr.append(DevicesSetupBlock);TagChange(tag,'0');}}
break;case'setupval':var type=el.attr('type');var func=el.attr('func');var eltype=el.attr('el');var DeviceSetupType=el.closest('.SYS_DevicesSetup').attr('type');var val='';switch(DeviceSetupType){case'logic':var logicid=el.closest('.SYS_DevicesSetup').attr('did');switch(func){case'Name':$('.SYS_DevicesLogic[did="'+logicid+'"]').find('.SYS_DevicesLogicName').html(val);break;}
switch(eltype){case'input':case'select':val=el.val();break;case'checkbox':if(el.is(":checked")){val='1';}else{val='0';}
break;case'inputblock':var func=el.closest('.SYS_DevicesSetupActionSelectBlock').attr('arr');var val={};el.closest('.SYS_DevicesSetupActionSelectBlock').find('.SYS_DevicesSetupActionCont').each(function(){var h=$(this).find('div[func="h"]').attr('value');var v=$(this).find('input[func="v"]').val();val[h]=v;});break;}
DevicesConf['logic'][logicid][func]=val;var tag='/xlogic/'+logicid+'/'+func;TagChange(tag,val)
break;case'dev':switch(eltype){case'input':case'select':val=el.val();break;case'checkbox':if(el.is(":checked")){val='1';}else{val='0';}
break;}
var devid=el.closest('.SYS_DevicesSetup').attr('did');var devtype=el.closest('.SYS_DevicesSetup').attr('devtype');switch(devtype){case'Home':var dc=DevicesConf['home'];var sv='/xhome/1';break;case'Floor':var dc=DevicesConf['floors'][devid];var sv='/xfloor/'+devid;break;case'Room':var floorid=el.closest('.SYS_DevicesSetup').attr('floorid');var dc=DevicesConf['floors'][floorid]['rooms'][devid];var sv='/xroom/'+devid;break;default:var floorid=el.closest('.SYS_DevicesSetup').attr('floorid');var roomid=el.closest('.SYS_DevicesSetup').attr('roomid');var dc=DevicesConf['floors'][floorid]['rooms'][roomid]['devices'][devid];var sv='/xdev/'+devid;}
if(typeof(el.attr('arr'))!=="undefined"){var arr=el.attr('arr');if(arr==='*'){arr=el.closest('.SYS_DevicesSetupBlock').attr('arr');}
if(typeof(dc[arr])==="undefined"){dc[arr]={};}
if(typeof(el.attr('arr2'))!=="undefined"){var arr2=el.attr('arr2');if(arr2==='*'){arr2=el.closest('.SYS_DevicesSetupBlock').attr('arr2');}
if(typeof(dc[arr][arr2])==="undefined"){dc[arr][arr2]={};}
dc[arr][arr2][func]=val;}else{dc[arr][func]=val;}}else{dc[func]=val;}
switch(func){case'name':switch(devtype){case'Home':$('.SYS_DevicesHome[did="'+devid+'"]').find('.SYS_DevicesHomeName').html(val);break;case'Floor':$('.SYS_DevicesFloor[did="'+devid+'"]').find('.SYS_DevicesFloorName').html(val);break;case'Room':$('.SYS_DevicesRoom[did="'+devid+'"]').find('.SYS_DevicesRoomName').html(val);break;default:$('.SYS_DevicesDev[did="'+devid+'"]').find('.SYS_DevicesDevName').html(val);}
break;case'type':$('.SYS_DevicesDev[did="'+devid+'"]').find('.SYS_DevicesDevIcon').hide();$('.SYS_DevicesDev[did="'+devid+'"]').find('.SYS_DevicesDevIcon[type="'+val+'"]').show();$('.SYS_DevicesSetup[type="dev"]').find('.SYS_DevicesSetupContType').attr('type',val);var el=$('.SYS_DevicesDev[did="'+devid+'"]').find('.SYS_DevicesDevMenuBut[type="devsetup"]');DeviceConfig('devsetup',el);break;case'room':if(val!==roomid){var floorid2=RoomsConfList[val]['floor'];DevicesConf['floors'][floorid2]['rooms'][val]['devices'][devid]=dc;delete(DevicesConf['floors'][floorid]['rooms'][roomid]['devices'][devid]);DeviceConfig('start',$('.SYS_none'));}
break;}
if(func=='value'){var hn=el.closest('.SYS_DevicesSetupBlock').attr('hn');var tag=sv+'/'+hn;TagChange(tag,val)}
break;}
break;case'devdel':var result=confirm('Удалить устройсво?');if(result){$('.SYS_DevicesSetup').hide();var floorid=el.closest('.SYS_DevicesFloor').attr('did');var roomid=el.closest('.SYS_DevicesRoom').attr('did');var devid=el.closest('.SYS_DevicesDev').attr('did');delete(DevicesConf['floors'][floorid]['rooms'][roomid]['devices'][devid]);el.closest('.SYS_DevicesDev').remove();}
break;case'roomdel':var result=confirm('Удалить комнату?');if(result){$('.SYS_DevicesSetup').hide();var floorid=el.closest('.SYS_DevicesFloor').attr('did');var roomid=el.closest('.SYS_DevicesRoom').attr('did');if(Object.keys(DevicesConf['floors'][floorid]['rooms'][roomid]['devices']).length>0){alert('Нельзя удалить комнату с устройствами, сначала удалите или переместите устройства из комнаты');}else{delete(DevicesConf['floors'][floorid]['rooms'][roomid]);el.closest('.SYS_DevicesRoom').remove();}}
break;case'floordel':var result=confirm('Удалить этаж?');if(result){$('.SYS_DevicesSetup').hide();var floorid=el.closest('.SYS_DevicesFloor').attr('did');if(Object.keys(DevicesConf['floors'][floorid]['rooms']).length>0){alert('Нельзя удалить этаж с комнатами, сначала удалите или переместите комнаты из этажа');}else{delete(DevicesConf['floors'][floorid]);el.closest('.SYS_DevicesFloor').remove();}}
break;case'logicdel':var result=confirm('Удалить сценарий?');if(result){$('.SYS_DevicesSetup').hide();var logicid=el.closest('.SYS_DevicesLogic').attr('did');delete(DevicesConf['logic'][logicid]);el.closest('.SYS_DevicesLogic').remove();}
break;case'logiclist':$('.SYS_DevicesSetup').hide();$('.SYS_DevicesSetupAddLogicCont').html('');for(var logic in XiotLogic){$('.SYS_DevicesSetupAddLogicCont').append('
'+XiotLogic[logic]['ru']+'
');}
$('.SYS_DevicesSetup[type="logiclist"]').show();break;case'logicadd':var type=el.attr('logic');if(typeof(DevicesConf['logic'])==="undefined"){DevicesConf['logic']={};}
var logicid=1;if(typeof(DevicesConf['logicid'])!=="undefined"){logicid=DevicesConf['logicid']+1;}
DevicesConf['logicid']=logicid;var name=XiotLogic[type]['ru'];DevicesConf['logic'][logicid]={};DevicesConf['logic'][logicid]['Name']=name;DevicesConf['logic'][logicid]['type']=type;DevicesConf['logic'][logicid]['param']={};DeviceConfigAddLogic(logicid,name,type);break;}
ConfListCreate();}
function TagSelectBlockShow(){var tags=JSON.parse($('.SYS_Tags').attr('json'));$('.SYS_TagSelectList').html('');var tagssel=TagSelectVal.val();if(tagssel!==''){tagssel=tagssel.split(';');for(var key in tagssel){var tagsel=tagssel[key];var tagname='....';if(tags[tagsel]){tagname=tags[tagsel]['name'];$('.SYS_TagSelectList').append('
'+tagname+'
'+tagsel+'
х
');}}}
$('.SYS_TagSelectBlock').show();}
function LinkDevSelectBlockShow(){$('.SYS_LinkDevSelectList').html('');$('.SYS_LinkDevSelectBlock').show();var func=$('.SYS_LinkDevSelectBlock').attr('func');SystemLog(DevicesConf);if(typeof(DevicesConf['floors'])!=="undefined"){switch(func){case'fx':var key=$('.SYS_LinkDevSelectBlock').attr('key');var param=$('.SYS_LinkDevSelectBlock').attr('param');$('.SYS_LinkDevSelectBlock').find('.SYS_LinkDevSelectList').html('');var elxid=$("#"+UiFuncXid);$('.SYS_LinkDevSelectBlockGroupTitle[group="tagattr"]').remove();$('.SYS_LinkDevSelectBlockGroup[group="tagattr"]').remove();if(elxid.attr('linkdev')){var SYS_LinkDevAttr=$('
Характеристики устройств текущего элемента
');$('.SYS_LinkDevSelectList').prepend(SYS_LinkDevAttr);var ArrLinkDev=JSON.parse(elxid.attr('linkdev'));SystemLog(ArrLinkDev);for(var dev in ArrLinkDev){$('.SYS_LinkDevSelectBlockGroup[group="tagattr"]').append('
'+dev+'
');}}
break;case'dev':break;}
var table=$('
');for(var h in DevicesConf['home']['rh']){var homename=DevicesConf['home']['name'];var hid='home/1/'+h;try{var hname=XiotCharacteristics[h]['ru'];}catch(err){var hname=h;}
var txt=homename+' - '+hname;table.append('
'+txt+'
');}
for(var floorid in DevicesConf['floors']){var floor=DevicesConf['floors'][floorid];var floorname=floor['name'];for(var h in floor['rh']){var hid='floor/'+floorid+'/'+h;try{var hname=XiotCharacteristics[h]['ru'];}catch(err){var hname=h;}
var txt=floorname+' - '+hname;table.append('
'+txt+'
');}
for(var roomid in DevicesConf['floors'][floorid]['rooms']){var room=DevicesConf['floors'][floorid]['rooms'][roomid];var roomname=room['name'];for(var h in room['rh']){var hid='room/'+roomid+'/'+h;try{var hname=XiotCharacteristics[h]['ru'];}catch(err){var hname=h;}
var txt=floorname+' - '+roomname+' - '+hname;table.append('
'+txt+'
');}
var devices=DevicesConf['floors'][floorid]['rooms'][roomid]['devices'];for(var devid in devices){var devname=devices[devid]['name'];for(var h in devices[devid]['rh']){var hid='dev/'+devid+'/'+h;try{var hname=XiotCharacteristics[h]['ru'];}catch(err){var hname=h;}
var txt=floorname+' - '+roomname+' - '+devname+' - '+hname;table.append('
'+txt+'
');}
for(var h in devices[devid]['oh']){if(devices[devid]['oh'][h]['active']=='1'){var hid='dev/'+devid+'/'+h;try{var hname=XiotCharacteristics[h]['ru'];}catch(err){var hname=h;}
var txt=floorname+' - '+roomname+' - '+devname+' - '+hname;table.append('
'+txt+'
');}}}}}
for(var lid in DevicesConf['logic']){var type=DevicesConf['logic'][lid]['type'];var name=DevicesConf['logic'][lid]['Name'];try{for(var h in XiotLogic[type]['Param']){var txt=name+' - '+XiotLogic[type]['Param'][h]['name'];var hid='logic/'+lid+'/'+h;table.append('
'+txt+'
');}}catch(err){console.log(err);}}
$('.SYS_LinkDevSelectList').append(table);}else{alert('Устройства не добавлены!')}}
function WindowsReload(before){switch(before){case false:$(window).off("beforeunload")
break;}
window.location.reload();}
function ScreenOrientation(type){if(localStorage.getItem('app')!==null){switch(type){case'portrait':screen.orientation.lock('portrait');ReloadParamPrint('style');break;case'landscape':screen.orientation.lock('landscape');ReloadParamPrint('style');break;case'0':var cur=screen.orientation;screen.orientation.lock(cur);screen.orientation.unlock();ReloadParamPrint('style');break;default:screen.orientation.unlock();}}}
function updateURL(link){if(history.pushState){if(link!==""){link='#!'+link;}
var baseUrl=window.location.protocol+"//"+window.location.host+window.location.pathname;var newUrl=baseUrl+link;history.pushState(null,null,newUrl);}else{console.warn('History API не поддерживается');}}
function openpagetag(page){var orientlock='all';if(typeof(page.attr('param'))!=="undefined"){SystemLog(page.attr('param'));var param=JSON.parse(page.attr('param'));SystemLog(param);if(typeof(page.attr('param'))!=="undefined"){orientlock=param['orientlock'];}}
var tagarr=[];page.find('div').each(function(){var id=$(this).attr('id');if(typeof(ElTagsArr[id])!=="undefined"){for(var tag in ElTagsArr[id]){tagarr.push(tag);}}});if(tagarr.length>0){var tagarrjson=JSON.stringify(tagarr);TagChange('/xtagr/arr',tagarrjson);}}
function openpage(page,func){try{if(page.find('div[type="HistoryTable"]').length>0){page.find('div[type="HistoryTable"]').each(function(){History_constructor.SYS('OpenPageTable',$(this));});}}catch(e){alert('error openpage '+e);}
if(page.attr('type')==='Page'){$('div[type="SYS_Page"]').hide();$('.SYS_Main').find('div[type="Page"]').css('display','none').attr('select','0');page.css('display','block').attr('select','1');if(typeof(page.attr('param'))=='object'){var param=JSON.parse(page.attr('param'));switch(param['orientlock']){case'portrait':ScreenOrientation('portrait');break;case'landscape':ScreenOrientation('landscape');break;default:ScreenOrientation('all');}}
var id=page.attr('id');updateURL(id);if(EditorOpenCloseFlag===false){setTimeout(openpagetag,500,page);}}
if(page.attr('type')==='SYS_Page'){PreviorPage=$('.SYS_Main').find('div[type="Page"][select="1"]');$('.SYS_Main').find('div[type="Page"]').hide();page.css('display','block');}
if(EditorOpenCloseFlag===false){if(page.find('div[name=SYS_Message]').length>0){Message_constructor.SYS('SYS_Message_But_Restart',page.find('div[name=SYS_Message]'));}
if(page.find('div[name=SYS_SetupHistoryT]').length>0){History_constructor.SYS('OpenPage',page.find('div[name=SYS_SetupHistory]'));}}}
window.onpopstate=function(event){var hash=window.location.hash;if(typeof(hash)==='string'){var page_id=hash.replace('#!','');openpage($('#'+page_id),'window.onpopstate');}};function TimeHide(pop){pop.attr('show','0');pop.attr('hiderun','0');if(localStorage.getItem('editor')==='1'){StructurePopupView();}}
function PopupLife(pop,life){if(life>0){if(pop.attr('sthide')!==undefined){var sthide=pop.attr('sthide');clearTimeout(sthide);}
if(localStorage.getItem('editor')!=='1'){var st=setTimeout(PopupEffect,life,pop,'Hide');pop.attr('sthide',st);}}}
function sleep(ms){return new Promise(resolve=>setTimeout(resolve,ms));}
function PopupEffect(pop,param){var styleall=pop.attr('styleall');var styleallarr=styleall.split(';');styleall={};for(var t in styleallarr){var pv=styleallarr[t].split(':');styleall[pv[0]]=pv[1];}
var opacity=1;var left=0;var top=0;var width=0;var height=0;SystemLog(styleall);if(styleall['opacity']!==undefined){opacity=styleall['opacity'];}
if(styleall['left']!==undefined){left=styleall['left'];}
if(styleall['top']!==undefined){top=styleall['top'];}
if(styleall['width']!==undefined){width=styleall['width'];}
if(styleall['height']!==undefined){height=styleall['height'];}
switch(param){case'Show':pop.attr('hiderun','0');if(pop.attr('param')!==undefined){var param=JSON.parse(pop.attr('param'));var timeshow=parseInt(param['timeshow']);var life=parseInt(param['life']);if(timeshow>0){var transition=parseFloat(timeshow)/1000;switch(param['effectshow']){case'opacity':clearTimeout(pop.attr('sthide2'));pop.css('top',top);pop.css('left',left);if(pop.attr('hiderun')!=='1'){pop.css('transition','opacity 0s linear');pop.css('opacity','0');}
pop.attr('show','1');sleep(10).then(()=>{pop.css('transition','opacity '+transition+'s linear');pop.css('opacity',opacity);});break;case'left':clearTimeout(pop.attr('sthide2'));pop.css('top',top);if(pop.attr('hiderun')!=='1'){pop.css('transition','left 0s linear');pop.css('left','-'+width);}
pop.attr('show','1');sleep(10).then(()=>{pop.css('transition','left '+transition+'s linear');pop.css('left',left);});break;case'right':pop.css('top',top);clearTimeout(pop.attr('sthide2'));if(pop.attr('hiderun')!=='1'){pop.css('transition','left 0s linear');pop.css('left',parseInt($('.SYS_Main').css('width'))+'px');}
pop.attr('show','1');sleep(10).then(()=>{pop.css('transition','left '+transition+'s linear');pop.css('left',left);});break;case'top':pop.css('left',left);clearTimeout(pop.attr('sthide2'));if(pop.attr('hiderun')!=='1'){pop.css('transition','top 0s linear');pop.css('top','-'+height);}
pop.attr('show','1');sleep(10).then(()=>{pop.css('transition','top '+transition+'s linear');pop.css('top',top);});break;case'bottom':pop.css('left',left);clearTimeout(pop.attr('sthide2'));if(pop.attr('hiderun')!=='1'){pop.css('transition','top 0s linear');pop.css('top',parseInt($('.SYS_Main').css('height'))+'px');}
pop.attr('show','1');sleep(10).then(()=>{pop.css('transition','top '+transition+'s linear');pop.css('top',top);});break;default:clearTimeout(pop.attr('sthide2'));pop.attr('show','1');}
PopupLife(pop,timeshow+life);}else{pop.attr('show','1');PopupLife(pop,life);}}else{pop.attr('show','1');PopupLife(pop,life);}
pop.attr('show','1');var tagarr=[];pop.find('div').each(function(){var id=$(this).attr('id');if(typeof(ElTagsArr[id])!=="undefined"){for(var tag in ElTagsArr[id]){tagarr.push(tag);}}});if(tagarr.length>0){var tagarrjson=JSON.stringify(tagarr);TagChange('/xtagr/arr',tagarrjson);}
break;case'Hide':if(pop.attr('show')=='0'){return;}
if(pop.attr('hiderun')==='1'){return;}
if(pop.attr('param')!==undefined){var param=JSON.parse(pop.attr('param'));if(param['timehide']>0){var transition=parseFloat(param['timehide'])/1000;switch(param['effecthide']){case'opacity':pop.css('transition','opacity 0s linear');pop.css('opacity',opacity);pop.css('transition','opacity '+transition+'s linear');pop.css('opacity','0');pop.attr('hiderun','1');var sthide2=setTimeout(TimeHide,param['timehide'],pop);pop.attr('sthide2',sthide2);break;case'left':pop.css('transition','left '+transition+'s linear');pop.css('left','-'+width);pop.attr('hiderun','1');var sthide2=setTimeout(TimeHide,param['timehide'],pop);pop.attr('sthide2',sthide2);break;case'right':pop.css('transition','left '+transition+'s linear');pop.css('left',parseInt($('.SYS_Main').css('width'))+'px');pop.attr('hiderun','1');var sthide2=setTimeout(TimeHide,param['timehide'],pop);pop.attr('sthide2',sthide2);break;case'top':pop.css('transition','top '+transition+'s linear');pop.css('top','-'+height);pop.attr('hiderun','1');var sthide2=setTimeout(TimeHide,param['timehide'],pop);pop.attr('sthide2',sthide2);break;case'bottom':pop.css('transition','top '+transition+'s linear');pop.css('top',parseInt($('.SYS_Main').css('height'))+'px');pop.attr('hiderun','1');var sthide2=setTimeout(TimeHide,param['timehide'],pop);pop.attr('sthide2',sthide2);break;default:pop.attr('show','0');}}else{pop.attr('show','0');}}else{pop.attr('show','0');}
break;case'ShowHide':if(pop.attr('show')==='0'||pop.attr('hiderun')==='1'){PopupEffect(pop,'Show');}else{if(pop.attr('show')!=='0'&&pop.attr('hiderun')!=='1'){PopupEffect(pop,'Hide');}}
break;}}
function StyleApply(el,sel,reset){el.attr('stylesel',sel);if(reset===true){el.attr('style',el.attr('styleall'));}
if(sel!=='all'){var stylesel=el.attr('style'+sel);if(typeof(stylesel)!=="undefined"){stylesel=stylesel.trim()
if(stylesel!==""){var stylearr=stylesel.split(';');for(var key in stylearr){var sp=stylearr[key].split(':');if(typeof(sp[0])!=="undefined"&&typeof(sp[1])!=="undefined"){el.css(sp[0],sp[1]);}}}}}}
function HtmlApply(el,htmlsel){switch(el.attr('type')){case'svg':if(el.find('.SYS_HtmlSel[sel="'+htmlsel+'"]').length>0){el.find('.SYS_HtmlSel').hide();el.find('.SYS_HtmlSel[sel="'+htmlsel+'"]').show();}
break;case'text':try{var langsel='ru';if(localStorage.getItem('lang')){langsel=localStorage.getItem('lang');}
if(typeof(el.attr('langsel'))!=="undefined"){langsel=el.attr('langsel');}
if(typeof(el.attr('html'+htmlsel+langsel))!=="undefined"){if(el.attr('html'+htmlsel+langsel)!==''){el.html(el.attr('html'+htmlsel+langsel));}}else{if(typeof(el.attr('html'+htmlsel))!=="undefined"){if(el.attr('html'+htmlsel)!==''){el.html(el.attr('html'+htmlsel));}}}}catch(e){console.log('HtmlApply text '+e);}
break;}}
function xcss(xid,param,value,funcel){switch(funcel){case'style':var css=$('style#CSS_portrait');break;default:var css=$('style#CSS_portrait');}
var cssall=css.html();var cssnew='/*'+xid+'*/#'+xid+'{'+param+':'+value+';}/*'+xid+'*/';var result='';var cssarr=[];var allcss=[];if(cssall){cssarr=cssall.split('/*'+xid+'*/');if(cssarr[1]){cssarr[1]=cssarr[1].replace('#'+xid+'{','').replace('}','');var arrcss=cssarr[1].split(';');for(var i=0;i=100){returnval=100;}
if(t=='TLPR'||t=='TLR'){value=(100-returnval);}else{value=returnval;}
if(t=='TLP'||t=='TLPR'){value=value+"%";}
break;case'TT':case'TTR':case'TTP':case'TTPR':var t=value;var touchYT=$('body').attr('touchY')-parseInt(offsettop);var returnval=parseInt(parseInt(touchYT)/parseInt(el.css('height'))*100);if(returnval<=0){returnval=0;}
if(returnval>=100){returnval=100;}
if(t=='TTPR'||t=='TTR'){value=(100-returnval);}else{value=returnval;}
if(t=='TTP'||t=='TTPR'){value=value+"%";}
SystemLog(value);break;case'TP':case'TPR':var topel=parseInt(el.css('top'));var Pheight=parseInt(el.parent().css('height'));var topD=topel+(touchY-(parseInt($('body').attr('touchY'))||0));var returnval=(topD/Pheight*100).toFixed();if(returnval<=0){returnval=0;}
if(returnval>=100){returnval=100;}
if(value=='TPR'){value=(100-returnval)+'%';}else{value=returnval+'%';}
break;case'ROTATE':var centerY=parseInt(el.offset().top)+parseInt(el.css('height'))/2,centerX=parseInt(el.offset().left)+parseInt(el.css('width'))/2,radians=Math.atan2(parseInt($('body').attr('touchX'))-centerX,parseInt($('body').attr('touchY'))-centerY),degrees=(radians*(180/Math.PI)*-1)+180;var value=parseInt(degrees);break;case'ROTATE90':var centerY=parseInt(el.offset().top)+parseInt(el.css('height'))/2,centerX=parseInt(el.offset().left)+parseInt(el.css('width'))/2,radians=Math.atan2(parseInt($('body').attr('touchX'))-centerX,parseInt($('body').attr('touchY'))-centerY),degrees=(radians*(180/Math.PI)*-1)+180;var value=parseInt(degrees);break;case'ROTATE180':var centerY=parseInt(el.offset().top)+parseInt(el.css('height'))/2,centerX=parseInt(el.offset().left)+parseInt(el.css('width'))/2,radians=Math.atan2(parseInt($('body').attr('touchX'))-centerX,parseInt($('body').attr('touchY'))-centerY),degrees=(radians*(180/Math.PI)*-1)+180;degrees=degrees+180;if(degrees>360){degrees=degrees-360;}
var value=parseInt(degrees);break;case'ROTATE270':var centerY=parseInt(el.offset().top)+parseInt(el.css('height'))/2,centerX=parseInt(el.offset().left)+parseInt(el.css('width'))/2,radians=Math.atan2(parseInt($('body').attr('touchX'))-centerX,parseInt($('body').attr('touchY'))-centerY),degrees=(radians*(180/Math.PI)*-1)+180;var value=parseInt(degrees);break;case'CPRGB':var rgb=ResColorPicker(el,'RGB');value='rgb('+rgb[0]+','+rgb[1]+','+rgb[2]+')';break;case'CP(R;G;B)':var rgb=ResColorPicker(el,'RGB');value=rgb[0]+';'+rgb[1]+';'+rgb[2];break;case'CP(R,G,B)':var rgb=ResColorPicker(el,'RGB');value=rgb[0]+','+rgb[1]+','+rgb[2];break;case'CP(R;G;B)':var rgb=ResColorPicker(el,'RGB');value=rgb[0]+';'+rgb[1]+';'+rgb[2];break;case'CPR':value=ResColorPicker(el,'R');break;case'CPG':value=ResColorPicker(el,'G');break;case'CPB':value=ResColorPicker(el,'B');break;case'CPRP':var rgb=ResColorPicker(el,'R');var value=parseInt(rgb/255*100);var value=value+'%'
break;case'CPRPR':var rgb=ResColorPicker(el,'R');value=100-parseInt(rgb/255*100);value=value+'%'
break;case'CPGP':var rgb=ResColorPicker(el,'G');value=parseInt(rgb/255*100);value=value+'%'
break;case'CPGPR':var rgb=ResColorPicker(el,'G');var value=100-parseInt(rgb/255*100);var value=value+'%'
break;case'CPBP':var rgb=ResColorPicker(el,'B');value=parseInt(rgb/255*100);value=value+'%'
break;case'CPBPR':var rgb=ResColorPicker(el,'B');value=100-parseInt(rgb/255*100);value=value+'%'
break;case'OT':value=el.offset().top;break;case'OL':value=el.offset().left;break;case'PT':value=el.position().top;break;case'PL':value=el.position().left;break;case'PTO':value=parseInt(el.position().top)+parseInt(el.parent().scrollTop());value=value+'px';break;case'PLO':value=parseInt(el.position().left)+parseInt(el.parent().scrollTop());value=value+'px';break;case'UserEmail':value=localStorage.getItem('user');break;case'scrollLeft':value=parseFloat(el.scrollLeft());break;case'scrollLeftMax':var jsel=document.getElementById(id);value=parseFloat(jsel.scrollWidth)-parseFloat(jsel.offsetWidth);break;case'scrollTop':value=parseFloat(el.scrollTop());break;}
if((value+'').indexOf('ATTR-')!==-1){var valnew=value.replace('ATTR-','');var ArrJson=el.attr('Attr');if(ArrJson){var ArrAttr=JSON.parse(ArrJson);value=ArrAttr['attr'][valnew];}}
return value;}
function GetEl(str,elg){var str=str.replace(/\s/g,'');var straar=str.split('-');var i=0;while(straar[i]){switch(straar[i]){case'C':var elg=$('.'+str.replace('C-',''));break;case'BODY':case'HTML':var elg=$('html, body');break;case'EL':var elg=elg;break;case'PEL':var elg=elg.parent();break;case'PPEL':var elg=elg.parent().parent();break;case'CEL':var elg=elg.find('div');break;case'P':var elg=elg.parent();break;case'P1':var elg=elg.parent();break;case'P2':var elg=elg.parent().parent();break;case'P3':var elg=elg.parents('div').eq(2);break;case'P4':var elg=elg.parents('div').eq(3);break;case'P5':var elg=elg.parents('div').eq(4);break;case'P6':var elg=elg.parents('div').eq(5);break;case'P7':var elg=elg.parents('div').eq(6);break;case'P8':var elg=elg.parents('div').eq(7);break;case'P9':var elg=elg.parents('div').eq(8);break;case'P10':var elg=elg.parents('div').eq(9);break;case'EL1':case'EL2':case'EL3':case'EL4':case'EL5':case'EL6':case'EL7':case'EL8':case'EL9':case'EL10':case'EL11':case'EL12':case'EL13':case'EL14':case'EL15':case'EL16':case'EL17':case'EL18':case'EL19':case'EL20':case'EL21':case'EL22':case'EL23':case'EL24':case'EL25':case'EL26':case'EL27':case'EL28':case'EL29':case'EL30':case'EL31':case'EL32':case'EL33':case'EL34':case'EL35':case'EL36':case'EL37':case'EL38':case'EL39':case'EL40':case'EL41':case'EL42':case'EL43':case'EL44':case'EL45':case'EL46':case'EL47':case'EL48':case'EL49':case'EL50':case'EL51':case'EL52':case'EL53':case'EL54':case'EL55':case'EL56':case'EL57':case'EL58':case'EL59':case'EL60':case'EL61':case'EL62':case'EL63':case'EL64':case'EL65':case'EL66':case'EL67':case'EL68':case'EL69':case'EL70':case'EL71':case'EL72':case'EL73':case'EL74':case'EL75':case'EL76':case'EL77':case'EL78':case'EL79':case'EL80':case'EL81':case'EL82':case'EL83':case'EL84':case'EL85':case'EL86':case'EL87':case'EL88':case'EL89':case'EL90':case'EL91':case'EL92':case'EL93':case'EL94':case'EL95':case'EL96':case'EL97':case'EL98':case'EL99':case'EL100':var k=parseInt(straar[i].replace('EL',''))-1;var elg=elg.children('div').eq(k);break;}
i++;}
return elg;}
function FMath(param2,setval2,val2){if(param2===undefined){param2='add';}
if(val2===undefined){val2=0;}
var newval=setval2;if((setval2+'').indexOf(':')!==-1){var x=new Date();var timezone=x.getTimezoneOffset();var setvaln=setval2;if((setval2+'').length==5){setvaln=setvaln+':00';}
var datetime1=new Date('1970-01-01T'+setvaln+'+00:00').getTime()+timezone*60*1000;if((val2+'').indexOf('s')!==-1){val2=parseInt(val2)*1000;}
if((val2+'').indexOf('m')!==-1){val2=parseInt(val2)*60*1000;}
if((val2+'').indexOf('h')!==-1){val2=parseInt(val2)*60*60*1000;}
val2=parseInt(val2);switch(param2){case'subtract':datetime1=datetime1-val2;var date=new Date(datetime1);var h=date.getHours();if(h<10){h='0'+h;}
var m=date.getMinutes();if(m<10){m='0'+m;}
var s=date.getSeconds();if(s<10){s='0'+s;}
if((''+setval2).length==5){newval=h+':'+m;}
if((''+setval2).length==8){newval=h+':'+m+':'+s;}
break;case'add':datetime1=datetime1+val2;var date=new Date(datetime1);var h=date.getHours();if(h<10){h='0'+h;}
var m=date.getMinutes();if(m<10){m='0'+m;}
var s=date.getSeconds();if(s<10){s='0'+s;}
if((''+setval2).length==5){newval=h+':'+m;}
if((''+setval2).length==8){newval=h+':'+m+':'+s;}
break;}}else{switch(param2){case'multiply':newval=parseFloat(setval2)*parseFloat(val2);break;case'subtract':newval=parseFloat(setval2)-parseFloat(val2);break;case'add':newval=parseFloat(setval2)+parseFloat(val2);break;case'divide':newval=parseFloat(setval2)/parseFloat(val2);break;}}
return newval;}
function Scss(el,param,val){switch(param){case'rotate':if((val+"").indexOf('%')!==-1){var nval=parseFloat(val);nval=3.6*nval;el.css('transform','rotate('+nval+'deg)');}else{var nval=parseInt(val);el.css('-webkit-transform','translate3d(0,0,0)');el.css('-webkit-transform','rotate('+nval+'deg)');}
break;case'rotate90':if((val+"").indexOf('%')!==-1){var nval=parseFloat(val);nval=3.6*nval;el.css('transform','rotate('+nval+'deg)');}else{var nval=parseInt(val);nval=nval+90;if(nval>360){nval=nval-360;}
el.css('transform','rotate('+nval+'deg)');}
break;case'rotate180':if((val+"").indexOf('%')!==-1){var nval=parseFloat(val);nval=3.6*nval;el.css('transform','rotate('+nval+'deg)');}else{var nval=parseInt(val);nval=nval+180;if(nval>360){nval=nval-360;}
el.css('transform','rotate('+nval+'deg)');}
break;case'background-opacity':var bgcolor=el.css('background-color');var rgb=bgcolor.substring(4,bgcolor.length-1).replace(/ /g,'').replace('(','').replace(')','').split(',');var val=val/255;el.css('background-color','rgba('+rgb[0]+','+rgb[1]+','+rgb[2]+','+val+')');break;case'background-colorR':if((val+"").indexOf('%')!==-1){var val=parseInt(parseInt(val)*2.55);}
var bgcolor=el.css('background-color');var rgb=bgcolor.substring(4,bgcolor.length-1).replace(/ /g,'').replace('(','').replace(')','').split(',');var param='background-color';var val='rgb('+val+','+rgb[1]+','+rgb[2]+')';el.css(param,val);break;case'background-colorG':if((val+"").indexOf('%')!==-1){var val=parseInt(parseInt(val)*2.55);}
var bgcolor=el.css('background-color');var rgb=bgcolor.substring(4,bgcolor.length-1).replace(/ /g,'').replace('(','').replace(')','').split(',');var param='background-color';var val='rgb('+rgb[0]+','+val+','+rgb[2]+')';el.css(param,val);break;case'background-colorB':if((val+"").indexOf('%')!==-1){var val=parseInt(parseInt(val)*2.55);}
var bgcolor=el.css('background-color');var rgb=bgcolor.substring(4,bgcolor.length-1).replace(/ /g,'').replace('(','').replace(')','').split(',');var param='background-color';var val='rgb('+rgb[0]+','+rgb[1]+','+val+')';el.css(param,val);break;case'background-colorRGB':var rgb={};if((val+"").indexOf(';')!==-1){rgb=val.split(';');}else{if((val+"").indexOf(',')!==-1){rgb=val.split(',');}}
if((rgb[0]+"").indexOf('%')!==-1){rgb[0]=parseInt(parseInt(rgb[0])*2.55);}
if((rgb[1]+"").indexOf('%')!==-1){rgb[1]=parseInt(parseInt(rgb[1])*2.55);}
if((rgb[2]+"").indexOf('%')!==-1){rgb[2]=parseInt(parseInt(rgb[2])*2.55);}
var param='background-color';var val='rgb('+rgb[0]+','+rgb[1]+','+rgb[2]+')';el.css(param,val);break;case'fillRGB':var rgb={};if((val+"").indexOf(';')!==-1){rgb=val.split(';');}else{if((val+"").indexOf(',')!==-1){rgb=val.split(',');}}
if((rgb[0]+"").indexOf('%')!==-1){rgb[0]=parseInt(parseInt(rgb[0])*2.55);}
if((rgb[1]+"").indexOf('%')!==-1){rgb[1]=parseInt(parseInt(rgb[1])*2.55);}
if((rgb[1]+"").indexOf('%')!==-1){rgb[1]=parseInt(parseInt(rgb[1])*2.55);}
var param='fill';var val='rgb('+rgb[0]+','+rgb[1]+','+rgb[2]+')';el.css(param,val);break;case'transformscale':val='scale('+val+')'
el.css('transform',val);break;case'transformscaleX':val='scaleX('+val+')'
el.css('transform',val);break;case'transformscaleY':val='scaleY('+val+')'
el.css('transform',val);break;case'fill':case'background-color':if(val.indexOf('rgb')===-1){var valarr=val.split(',');if(valarr.length>3){val='rgba('+val+')';}else{val='rgb('+val+')';}}
el.css(param,val);break;case'background-image':if(val.indexOf('url(')===-1){val='url('+val+')';}
el.css(param,val);break;default:if(el){el.css(param,val);}else{SystemLog("ERROR param"+param);SystemLog("ERROR val"+val);}}}
function LevelSetOut2(UiFuncArr,el,key){var val=el.attr('level_val');UiFuncLinkStart(UiFuncArr,'',el,el,key,val,'2','fxtopic');}
function TouchFuncUser(func,el){var elclass='none';if(typeof(el.attr('class'))!=="undefined"){elclass=el.attr('class');}
ButTouch=true;elclass=elclass.split(' ');elclass=elclass[0];switch(elclass){case"SYS_PageSystemPrj":switch(func){case"press":var prj=el.attr('prj');localStorage.setItem('project',prj);if(DeviceReady==true){document.location.href='/index.html';}else{WindowsReload(false);}
break;}
break;case"OpenProjectBut":switch(func){case"click":var prj=el.attr('prj');localStorage.setItem('project',prj);if(DeviceReady==true){document.location.href='/index.html';}else{WindowsReload(false);}
break;}
break;case"SYS_PageSystemClose":switch(func){case"press":$('.SYS_PageSystem').remove();break;}
break;}
var type=el.attr('type');switch(type){case'select':switch(func){case'change':var val=el.find('select').val();var keyval=el.find('select').find('option:selected').html();el.attr('value',val);var UiFuncJson=el.attr('UiFunc');if(UiFuncJson){var UiFuncArr=JSON.parse(UiFuncJson);for(var key in UiFuncArr['el']){switch(UiFuncArr['el'][key]['type']){case'fselect':UiFuncLinkStart(UiFuncArr,'',el,el,key,val,'1','fxtopic');UiFuncLinkStart(UiFuncArr,'',el,el,key,keyval,'2','fxtopic');break;}}}
break;}
break;case'input':switch(func){case'change':var type=el.find('input').attr('type');switch(type){case'checkbox':var val=0;if(el.find('input').is(':checked')){val=1;}else{val=0;}
break;default:var val=el.find('input').val();}
el.attr('value',val);var UiFuncJson=el.attr('UiFunc');if(UiFuncJson){var UiFuncArr=JSON.parse(UiFuncJson);for(var key in UiFuncArr['el']){switch(UiFuncArr['el'][key]['type']){case'finput':UiFuncLinkStart(UiFuncArr,'',el,el,key,val,'1','fxtopic');UiFuncLinkStart(UiFuncArr,'',el,el,key,val,'2','fxtopic');break;}}}
break;case'keyup':var val=el.find('input').val();el.attr('value',val);var UiFuncJson=el.attr('UiFunc');if(UiFuncJson){var UiFuncArr=JSON.parse(UiFuncJson);for(var key in UiFuncArr['el']){if(UiFuncArr['el'][key]['type']=='finput'){UiFuncLinkStart(UiFuncArr,'',el,el,key,val,'1','fxtopic');}}}
break;}
break;case'colorpicker':var param=JSON.parse(el.attr('param'));var v2time=100;if(param['v2time']!==undefined){v2time=parseInt(param['v2time']);if(v2time<100){v2time=100;}
if(v2time>2000){v2time=2000;}}
var out=false;var UiFuncJson=el.attr('UiFunc');if(typeof(UiFuncJson)!=="undefined"){var UiFuncArr=JSON.parse(UiFuncJson);switch(func){case'click':case'move':case'press':case'release':var rgb=ResColorPicker(el.find('div[name="фон"]'),'RGB');var val=rgb[0]+','+rgb[1]+','+rgb[2];el.attr('colorpicker_val',val);out=true;break;}
if(out==true){if(UiFuncArr){for(var key in UiFuncArr['el']){if(UiFuncArr['el'][key]['type']=='fcolorpicker'){UiFuncLinkStart(UiFuncArr,'',el,el,key,val,'1','fxtopic');}}}}}
break;case'Level':var param=JSON.parse(el.attr('param'));var fontype='0';var min=0;var max=100;var step=100;var step2=0;var set=0;var v2time=100;if(param['fontype']!==undefined){fontype=param['fontype'];}else{break;}
if(param['min']!==undefined){min=parseFloat(param['min']);}
if(param['max']!==undefined){max=parseFloat(param['max']);}
if(param['step']!==undefined){step=parseFloat(param['step']);}
if(param['step']!==undefined){step2=parseFloat(param['step2']);}
if(param['v2time']!==undefined){v2time=parseInt(param['v2time']);if(v2time<100){v2time=100;}
if(v2time>2000){v2time=2000;}}
var fon=el.find('div[name="фон"]');switch(func){case'click':case'move':case'press':case'release':if(func=='release'){el.parent().css('overflow','auto');}
if(func=='press'){el.parent().css('overflow','hidden');switch(fontype){case'0':case'1':fon.css('left','');fon.css('right','');fon.css('bottom','');break;case'2':case'3':fon.css('top','');fon.css('right','');fon.css('bottom','');break;}}
var decimalstep2=0;if(step2%1!=0){decimalstep2=1;}
switch(fontype){case'0':var H=Fval('TTR',el);set=H;var MT=100-H;if(step2>0){var step2=100/(Math.abs(min-max)/step2);H=(Math.floor(H/step2)*step2);MT=100-H;}
fon.css({'height':H+'%','top':MT+'%'});break;case'1':var H=Fval('TT',el);set=H;if(step2>0){var step2=100/(Math.abs(min-max)/step2);H=(Math.floor(H/step2)*step2);}
fon.css({'height':H+'%'});break;case'2':var W=Fval('TLR',el);set=W;var MT=100-W;if(step2>0){var step2=100/(Math.abs(min-max)/step2);W=(Math.floor(W/step2)*step2);MT=100-W;}
fon.css({'width':W+'%','left':MT+'%'});break;case'3':var W=Fval('TL',el);set=W;if(step2>0){var step2=100/(Math.abs(min-max)/step2);W=(Math.floor(W/step2)*step2);}
fon.css({'width':W+'%'});break;}
var val=0;var r=Math.abs(min-max);if(max>min){val=min+parseFloat(r/100)*parseFloat(set);}else{val=min-parseFloat(r/100)*parseFloat(set);}
var decimal=0;if(step%1==0){decimal=0;}else{decimal=1;}
val=(Math.floor(val/step)*step).toFixed(decimal);var UiFuncJson=el.attr('UiFunc');if(UiFuncJson){var UiFuncArr=JSON.parse(UiFuncJson);for(var key in UiFuncArr['el']){if(UiFuncArr['el'][key]['type']=='flevel'){switch(func){case'press':case'release':case'click':case'move':el.attr('level_val',val);if(v2time>100){if(func=='press'){UiFuncLinkStart(UiFuncArr,'',el,el,key,val,'2','fxtopic');if(el.attr('si_level')===undefined){var si_level=setInterval(LevelSetOut2,v2time,UiFuncArr,el,key);el.attr('si_level',si_level);}}
if(func=='release'){UiFuncLinkStart(UiFuncArr,'',el,el,key,val,'2','fxtopic');var si_level=el.attr('si_level');clearInterval(si_level);el.removeAttr('si_level');}}else{UiFuncLinkStart(UiFuncArr,'',el,el,key,val,'2','fxtopic');}
UiFuncLinkStart(UiFuncArr,'',el,el,key,val,'1','fxtopic');break;}}}}
break;}
break;case'3D':switch(func){case'press':var Div3D=$('div[type="3D"]');var height=parseInt(Div3D.css('height'));var PosTouchX=Div3D.attr('touchX')-parseInt($('.SYS_Main').css('margin-left'));var PosTouchY=Div3D.attr('touchY');mouse3D.x=(PosTouchX/parseInt(Div3D.css('width')))*2-1;mouse3D.y=(-(PosTouchY/parseInt(Div3D.css('height')))*2+1);raycaster.setFromCamera(mouse3D,camera3D);var intersects=raycaster.intersectObjects(scene.children,true);if(intersects[0]){for(var z=0;z<1;z++){obj=intersects[z].object;for(var i=0;i<10;i++){if(obj.name){func=Div3D.attr('press-'+obj.name);if(func){funcstart(func,Div3D,'press',obj.name);}}
if(obj.parent){obj=obj.parent;}}}}
break;}
break;}
switch(func){case"press":var press=el.attr('press');funcstart(press,el,func);for(var id in ScreensaverList){if(typeof(ScreensaverList[id]['timer'])!=='undefined'){clearTimeout(ScreensaverList[id]['timer']);delete ScreensaverList[id]['timer'];}
var time=ScreensaverList[id]['time']*1000;ScreensaverList[id]['timer']=setTimeout(Start_screensaver,time,id);}
break;case"hold":case"hover":case"unhover":funcstart(el.attr('hold'),el,func);break;case"start":case"endhold":case"click":case"dclick":case"move":case"swiperight":case"swipeleft":case"swiperightedge":case"swipeleftedge":case"swipeup":case"swipedown":funcstart(el.attr(func),el,func);break;case"release":funcstart(el.attr(func),el,func);break;}
if(func!=='hover'&&func!=='unhover'&&func!=='start'&&func!=='endhold'){el.attr('touch',func);}}
function cancelFullScreen(el){var requestMethod=el.cancelFullScreen||el.webkitCancelFullScreen||el.mozCancelFullScreen||el.exitFullscreen;if(requestMethod){requestMethod.call(el);}else if(typeof window.ActiveXObject!=="undefined"){var wscript=new ActiveXObject("WScript.Shell");if(wscript!==null){wscript.SendKeys("{F11}");}}}
function requestFullScreen(el){var requestMethod=el.requestFullScreen||el.webkitRequestFullScreen||el.mozRequestFullScreen||el.msRequestFullscreen;if(requestMethod){requestMethod.call(el);}else if(typeof window.ActiveXObject!=="undefined"){var wscript=new ActiveXObject("WScript.Shell");if(wscript!==null){wscript.SendKeys("{F11}");}}
return false}
function CssDisplay(el,func){if(el.attr(func)){funcstart(el.attr(func),el,'func');}}
function PopupShow(popup,effect){switch(effect){case'Left':time=500;if(popup.attr('select')=='0'){popup.attr('select','1');left='-'+popup.css('width');popup.css('left',left);CssDisplay(popup,'show');popup.animate({left:popup.attr('left')},time);}
break;case'Right':time=500;if(popup.attr('select')=='0'){left=popup.parent().css('width');popup.css('left',left);popup.attr('select','1');CssDisplay(popup,'show');popup.animate({left:popup.attr('left')},time);}
break;case'Time':time=300;if(!popup.attr('opacity')){popup.attr('opacity',popup.css('opacity'));}else{popup.css('opacity','1');popup.attr('opacity','1');}
if(popup.attr('select')=='0'){popup.css('opacity','0');popup.attr('select','1');CssDisplay(popup,'show');popup.animate({opacity:popup.attr('opacity')},time);}
break;default:if(popup.attr('select')=='0'){popup.attr('select','1');CssDisplay(popup,'show');}}}
function PopupHide(popup,effect,func){switch(effect){case'Left':time=500;if(popup.attr('select')=='1'){CssDisplay(popup,'hide');popup.animate({left:'-'+popup.css('width')},time,function(){$(this).attr('select','0').css('left',$(this).attr('left'));});}
break;case'Right':time=500;if(popup.attr('select')=='1'){CssDisplay(popup,'hide');popup.animate({left:popup.parent().css('width')},time,function(){$(this).attr('select','0').css('left',$(this).attr('left'));});}
break;case'Time':time=300;if(!popup.attr('opacity')&&popup.css('opacity')!=0){popup.attr('opacity',popup.css('opacity'));}else{popup.css('opacity','1');popup.attr('opacity','1');}
if(popup.attr('select')=='1'){CssDisplay(popup,'hide');popup.animate({opacity:0},time,function(){$(this).attr('select','0').css('opacity',popup.attr('opacity'));});}
break;default:if(popup.attr('select')=='1'){popup.attr('select','0');CssDisplay(popup,'hide');}}}
function getcss3D(fel,param){var ret='0';var style3D=fel.attr('style3D');if(style3D){if(style3D.indexOf(param)!==-1){var style3Darr=style3D.split(';');for(var key in style3Darr){var paramarr=style3Darr[key].split(':');if(paramarr[0]==param){ret=paramarr[1];}}}}
SystemLog('!!!!!!!!!!!'+ret);return ret;}
var saveparam=[];function UiFuncLinkRun(UiFuncArrT,type,lil,lil2,box,el,fel,setval,fxtopic){var val=UiFuncArrT['el'][lil]['val'];var val2=UiFuncArrT['el'][lil]['val2'];var ta=val;var da=val;if(val){if((val+'').indexOf(':')!==-1){var valarr=val.split(':');var func=valarr[0];switch(func){case'l':if(localStorage.getItem(valarr[1])){val=localStorage.getItem(valarr[1]);}else{val='0';}
break;case'v':if(typeof(LocalVariable[el.attr('id')+valarr[1]])!=='undefined'){val=LocalVariable[el.attr('id')+valarr[1]];}else{val='0';}
break;case'a':var ArrJson=el.attr('Attr');if(ArrJson){var ArrAttr=JSON.parse(ArrJson);val=ArrAttr['attr'][valarr[1]];}
break;case'ta':var TagsJson=el.attr('tags');if(TagsJson){var ArrTags=JSON.parse(TagsJson);ta=ArrTags['tags'][valarr[1]]
val=TagVal[ta];}
break;case'da':var LinkDevJson=el.attr('linkdev');if(LinkDevJson){var LinkDevArr=JSON.parse(LinkDevJson);da=LinkDevArr[valarr[1]]
val=TagVal[da];}
break;}}}
if(val2){if((val2+'').indexOf(':')!==-1){var valarr=val2.split(':');var func=valarr[0];switch(func){case'l':if(localStorage.getItem(valarr[1])){val2=localStorage.getItem(valarr[1]);}else{val2='0';}
break;case'a':var ArrJson=el.attr('Attr');if(ArrJson){var ArrAttr=JSON.parse(ArrJson);val2=ArrAttr['attr'][valarr[1]];}
break;case'ta':var TagsJson=el.attr('tags');if(TagsJson){var ArrTags=JSON.parse(TagsJson);val2=TagVal[ArrTags['tags'][valarr[1]]];}
break;}}}
var param=UiFuncArrT['el'][lil]['param'];var elid=el.attr('id');switch(type){case'ftimeout':if(!(elid in Ftimeout)){Ftimeout[elid]={};}
var getms=1;if(typeof(UiFuncArrT['el'][lil]['val'])!=="undefined"){getms=parseInt(UiFuncArrT['el'][lil]['val']);}
var param='s';if(typeof(UiFuncArrT['el'][lil]['param'])!=="undefined"){param=UiFuncArrT['el'][lil]['param'];}
switch(lil2){case'1':var flag=true;if(elid in Ftimeout){if(lil in Ftimeout[elid]){flag=false;}}
if(flag){var ms=parseFloat(getms);switch(param){case's':ms=ms*1000;break;case'm':ms=ms*1000*60;break;case'h':ms=ms*1000*60*60;break;default:ms=ms*1000;}
UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',fxtopic);var timeoutId=setTimeout(UiFuncLinkStart,ms,UiFuncArrT,box,el,fel,lil,setval,'2',fxtopic);Ftimeout[elid][lil]=timeoutId;var delattr=setTimeout("delete Ftimeout['"+elid+"']["+lil+"]",ms+100);}
break;case'2':var ms=parseFloat(getms);switch(param){case's':ms=ms*1000;break;case'm':ms=ms*1000*60;break;case'h':ms=ms*1000*60*60;break;default:ms=ms*1000;}
if(elid in Ftimeout){if(lil in Ftimeout[elid]){delete Ftimeout[elid][lil];}}
UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'3',fxtopic);UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',fxtopic);var timeoutId=setTimeout(UiFuncLinkStart,ms,UiFuncArrT,box,el,fel,lil,setval,'2',fxtopic);Ftimeout[elid][lil]=timeoutId;break;case'3':if(elid in Ftimeout){if(lil in Ftimeout[elid]){clearTimeout(Ftimeout[elid][lil]);delete Ftimeout[elid][lil];}}
UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'3',fxtopic);break;}
break;case'finterval':if(!(elid in Finterval)){Finterval[elid]={};}
switch(lil2){case'1':var flag=true;if(elid in Finterval){if(lil in Finterval[elid]){flag=false;}}
if(flag){var getms=UiFuncArrT['el'][lil]['val'];var param=UiFuncArrT['el'][lil]['param'];var ms=parseFloat(getms);switch(param){case's':ms=ms*1000;break;case'm':ms=ms*1000*60;break;case'h':ms=ms*1000*60*60;break;default:ms=ms*1000;}
UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',fxtopic);var intervalId=setInterval(UiFuncLinkStart,ms,UiFuncArrT,box,el,fel,lil,setval,'2',fxtopic);Finterval[elid][lil]=intervalId;}
break;case'2':var getms=UiFuncArrT['el'][lil]['val'];var param=UiFuncArrT['el'][lil]['param'];var ms=parseFloat(getms);switch(param){case's':ms=ms*1000;break;case'm':ms=ms*1000*60;break;case'h':ms=ms*1000*60*60;break;default:ms=ms*1000;}
if(elid in Finterval){if(lil in Finterval[elid]){clearInterval(Finterval[elid][lil]);delete Finterval[elid][lil];}}
UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'3',fxtopic);UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',fxtopic);var intervalId=setInterval(UiFuncLinkStart,ms,UiFuncArrT,box,el,fel,lil,setval,'2',fxtopic);Finterval[elid][lil]=intervalId;break;case'3':if(elid in Finterval){if(lil in Finterval[elid]){clearInterval(Finterval[elid][lil]);delete Finterval[elid][lil];}}
UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'3',fxtopic);break;}
break;case'fif':if(param===undefined){param='equal';}
if(val!==undefined&¶m!==undefined&&setval!==undefined){var ok=false;var data=new Date();var flagtime=false;if((setval+'').indexOf(':')!==-1){var x=new Date();var timezone=x.getTimezoneOffset();if((setval+'').length==5){setval=setval+':00';}
var datetime1=new Date('1970-01-01T'+setval+'+00:00').getTime()+timezone*60*1000;if(val.length==5){val=val+':00';}
var datetime2=new Date('1970-01-01T'+val+'+00:00').getTime()+timezone*60*1000;flagtime=true;}
switch(param){case'more':if(flagtime){if(datetime1>datetime2){ok=true;}}else{if(parseFloat(setval)>parseFloat(val)){ok=true;}}
break;case'less':if(flagtime){if(datetime1=datetime2){ok=true;}}else{if(parseFloat(setval)>=parseFloat(val)){ok=true;}}
break;case'less_equal':if(flagtime){if(datetime1<=datetime2){ok=true;}}else{if(parseFloat(setval)<=parseFloat(val)){ok=true;}}
break;}
if(ok==true){UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',fxtopic);}else{UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'2',fxtopic);}}
break;case'fpage':switch(val){case'!системная_страница!':GetSystemPage();break;case'!предыдущая_страница!':var page=PreviorPage;CurrentPage=page;if(page.length>0){openpage(page,'fpage');}
break;default:var page=$('#'+val);PreviorPage=CurrentPage;CurrentPage=page;if(page.length>0){openpage(page,'fpage');}}
SystemLog(page);break;case'fpopup':if(val=="!текущее_окно!"){var Popup=el.closest('div[type="Popup"]');}else{var Popup=$('.SYS_Main').find('div[type="Popup"][id="'+val+'"]');}
var id=Popup.attr('id');if(Popup.length>0){if(param==='Show'){SetAttrPopup(el,Popup);}
PopupEffect(Popup,param);}
break;case'fcss':if(setval){var val=Fval(setval,fel);Scss(fel,param,val);}
break;case'fjsfunc':switch(val){case'SYS_system_page':fjsfunc_attr1=setval;fjsfunc_attr2=el;let f_SYS_system_page=new Function('SYS_system_page();');f_SYS_system_page();break;case'SYS_message':Message_constructor.SYS(setval,el);break;case'SYS_history':History_constructor.SYS(setval,el);break;case'SYS_TagSelect':TagSelectClass.SYS(setval,el);break;case'SYS_HdevSelect':HdevSelectClass.SYS(setval,el);break;case'SYS_acad':fjsfunc_attr1=setval;fjsfunc_attr2=el;let f_SYS_acad=new Function('SYS_acad();');f_SYS_acad();break;case'SYS_wirenboard':Wb_constructor.SYS_Wirenboard(setval,el);break;case'SYS_russound':Russound_constructor.SYS(setval,el);break;case'SYS_jseditor':FjsEditor.set(setval,el);break;}
break;case'fstylesel':if($('body').attr('sys_editor')!=='1'){if(val=='in'){if(setval!==undefined){if(val2=='all'){StyleApply(fel,setval,false);fel.find('div').each(function(){StyleApply($(this),setval,false);});}else{StyleApply(fel,setval,false);}}}else{if(val2=='all'){StyleApply(fel,val,false);fel.find('div').each(function(){StyleApply($(this),val,false);});}else{StyleApply(fel,val,false);}}}
break;case'fhtmlsel':if($('body').attr('sys_editor')!=='1'){if(val=='in'){if(val2=='all'){HtmlApply(fel,setval);fel.find('div').each(function(){HtmlApply($(this),setval);});}else{HtmlApply(fel,setval);}}else{if(val2=='all'){HtmlApply(fel,val);fel.find('div').each(function(){HtmlApply($(this),val);});}else{HtmlApply(fel,val);}}}
break;case'fvibro':if(val=='in'){ms=100;if(setval){ms=parseInt(setval);if(ms<=10){ms=100;}}
VibtationSet(ms);}
if(val=='ms'){ms=100;if(val2){ms=parseInt(val2);if(ms<1){ms=1;}}
VibtationSet(ms);}
break;case'fanimate':switch(param){case'blink_fill':el_blink_start('fill',el,fel.css('fill'),val);break;case'blink_background':el_blink_start('background',el,fel.css('background-color'),val);break;case'blink_stop':el_blink_stop(el);break;}
break;case'f3d':if(setval!==undefined){var val=setval;var name=fel.attr('name');var xid=fel.attr('xid');var step=1;if(Arr3D[xid]){switch(param){case'scaleX':Scale3Dx[xid]=[];Scale3Dx[xid]['transition']=getcss3D(fel,'transition');Scale3Dx[xid]['val']=0.01*parseInt(val);break;case'scaleY':Scale3Dy[xid]=[];Scale3Dy[xid]['transition']=getcss3D(fel,'transition');Scale3Dy[xid]['val']=0.01*parseInt(val);break;case'scaleZ':Scale3Dz[xid]=[];Scale3Dz[xid]['transition']=getcss3D(fel,'transition');Scale3Dz[xid]['val']=0.01*parseInt(val);break;case'rotationX':Rotation3Dx[xid]=[];Rotation3Dx[xid]['transition']=getcss3D(fel,'transition');Rotation3Dx[xid]['val']=0.063*parseInt(val);break;case'rotationY':Rotation3Dy[xid]=[];Rotation3Dy[xid]['transition']=getcss3D(fel,'transition');Rotation3Dy[xid]['val']=0.063*parseInt(val);break;case'color':SetColor3D(xid,val);break;case'opacity':if(!Opacity3D[xid]){Opacity3D[xid]=[];}
Opacity3D[xid]['val']=val;Opacity3D[xid]['transition']=getcss3D(fel,'transition');break;case'opacitypercent':if(!Opacity3D[xid]){Opacity3D[xid]=[];}
var val2=0.01*parseInt(val);Opacity3D[xid]['val']=val2;Opacity3D[xid]['transition']=getcss3D(fel,'transition');break;}}}
break;case'fcam3d':Cam3dSelect(val);break;case'fsetsys':if(setval){var val=setval;switch(param){case'PageScroll':var top=-1*parseInt(val);$('.SYS_Main').find('div[type="Page"][select="1"').css('transition','2s');$('.SYS_Main').find('div[type="Page"][select="1"').css('top',top+'px');setTimeout("$('div[type=\"Page\"][select=\"1\"]').css('transition','');",2000);break;case'ScrollTop':fel.animate({scrollTop:parseInt(val)},'500');break;case'ScrollLeft':if(val.indexOf('%')!==-1){val=(parseInt(fel.css('width'))*(parseInt(val)/100))+'px';}else{val=parseInt(val)+'px';}
fel.animate({scrollLeft:val},'500');break;}}
break;case'fgettime':var Data=new Date();var Hour=Data.getHours();var Minutes=Data.getMinutes();var Seconds=Data.getSeconds();if(parseInt(Hour)<10){Hour='0'+Hour;}
if(parseInt(Minutes)<10){Minutes='0'+Minutes;}
if(parseInt(Seconds)<10){Seconds='0'+Seconds;}
var Day=Data.getDate();if(parseInt(Day)<10){Day='0'+Day;}
var Month=Data.getMonth()+1;if(parseInt(Month)<10){Month='0'+Month;}
var FullYear=Data.getFullYear();switch(param){case'Time':setval=Hour+":"+Minutes;break;case'TimeHMS':setval=Hour+":"+Minutes+":"+Seconds;break;case'Date':setval=Day+"."+Month+"."+FullYear;break;case'TimeDate':setval=Hour+":"+Minutes+":"+Seconds+" "+Day+"."+Month+"."+FullYear;break;case'TimeH':setval=Hour;break;case'TimeM':setval=Minutes;break;case'TimeS':setval=Seconds;break;case'TimeD':setval=Day;break;case'DateM12':setval=Month;break;case'DateMT':var Month=Data.getMonth()-1;var M=['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'];setval=M[Month];break;case'DateDN':var day=Data.getDay();var D=['Пн','Вт','Ср','Чт','Пт','Сб','Вс'];setval=D[day];break;case'DateDNT':var day=Data.getDay();var D=['Понедельник','Вторник','Среда','Четверг','Пятница','Суббота','Воскресенье'];setval=D[day];break;case'DiteG':setval=FullYear;break;}
UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',fxtopic);break;case'fclearcss':var stylesel=fel.attr('stylesel');StyleApply(fel,stylesel,true);break;case'fgetcss':switch(param){case'background-colorRGB':var rgb=fel.css('background-color');rgb=rgb.replace('rgb(','').replace(')','');rgb=rgb.split(',');var setval=parseInt(rgb[0])+';'+parseInt(rgb[1])+';'+parseInt(rgb[2]);break;default:var setval=fel.css(param);}
UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',fxtopic);break;case'fiftouch':if(el.attr('touch')!=="release"){UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',fxtopic);}else{UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'2',fxtopic);}
break;case'ftrigger01':if(parseInt(setval)==1){setval="0";}else{setval="1";}
UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',fxtopic);break;case'fgethtml':var setval=fel.html();UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',fxtopic);break;case'fgetval':var type=fel.attr('type');var setval=null;switch(type){case'input':setval=fel.find('input').val();break;case'select':setval=fel.find('select').val();break;case'checkbox':if(fel.find('input').prop('checked')==true){setval='1';}else{setval='0';}
break;}
if(setval){UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',fxtopic);}
break;case'fvalue':case'flist':var setval=val;UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',fxtopic);break;case'fjsonparse':var jsonarr=JSON.parse(setval);var mask=val.split('/');if(Array.isArray(jsonarr)){var newarr=[];for(var key in jsonarr){if(mask[0]=='#'||mask[0]==key){for(var key1 in jsonarr[key]){if(mask[1]=='#'||mask[1]==key1){newarr[newarr.length]=jsonarr[key][key1];}}}}
for(var key in newarr){UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,newarr[key],'1',fxtopic);}}
break;case'ftable':switch(param){case'set':try{var setval=JSON.parse(setval);}catch(err){console.log('ERROR json parse - '+err);}
console.log(setval);var count=setval['count'];var top=fel.find('div[name="Шапка таблицы"]');var top_el_t=fel.find('div[name="Шапка таблицы"]').find('div[name="Шаблон элемента"]');top_el_t.hide();var table=fel.find('div[name="Таблица"]');var tr_t=table.find('div[name="Шаблон колонки"]');tr_t.hide();var el_time_t=tr_t.find('div[name="шаблон время"]');var el_val_t=tr_t.find('div[name="Шаблон значение"]');fel.find('div[f="t"]').remove();for(var i=1;i<=10;i++){var top_el=top_el_t.clone().attr('f','t').attr('name','элемент'+i).show().attr('id','top_el'+i);top_el.html('колонка '+i);top.append(top_el);var tr=tr_t.clone().attr('f','t').attr('name','колонка'+i).show().attr('id','tr'+i).html('');table.append(tr);}
for(var i=1;i<=count;i++){var sdate=setval['arr'][i]['Sdate'];var day=sdate.split(' ')[0];var time=sdate.split(' ')[1].split('.')[0];var dayarr=day.split('-');var dayformat=dayarr[2]+'.'+dayarr[1]+'.'+dayarr[0];var el_time=el_time_t.clone().attr('name','время'+i).show().attr('id','el_time'+i);el_time.find('div[name="время"]').html(time);el_time.find('div[name="дата"]').html(dayformat);table.find('div[name="колонка1"]').append(el_time);var y=0;for(key in setval['arr'][i]){y=y+1;var el_val=el_val_t.clone().attr('name','значение'+i).show().attr('id','el_val'+i+y);el_val.html(setval['arr'][i][key]);table.find('div[name="колонка'+(y)+'"]').append(el_val);}}
break;}
break;case'ftrend':switch(param){case'trendset':console.log(setval);try{var setval=JSON.parse(setval);}catch(err){SystemLog('ERROR json parse - '+err);}
SystemLog2(setval);var objkeys=Object.keys(setval['arr']).sort(function(a,b){return a-b;});var period=setval['period'];var func=setval['func'];SystemLog2(func);if(fel.find('.element[val="trend"]').length==0){var El_trend=$('.element[val="trend"][template="1"]').clone().removeAttr('template').removeAttr('style');fel.append(El_trend);}
var block='';var svgw=parseInt(fel.find('div[name="график"]').css('width'));var svgh=parseInt(fel.find('div[name="график"]').css('height'));var svg='';fel.find('div[name="график"]').html(svg);fel.find('div[name="блок слева"]').animate({scrollLeft:svgw+'px'},'100');break;}
break;case'fgetlocalstorage':if(localStorage.getItem(val)){setval=localStorage.getItem(val);}else{setval='0';}
UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',fxtopic);break;case'fsetlocalstorage':localStorage.setItem(val,setval);break;case'fsetvar':LocalVariable[el.attr('id')+val]=setval;break;case'fgetvar':if(LocalVariable[el.attr('id')+val]){setval=LocalVariable[el.attr('id')+val];}else{setval=undefined;}
UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',fxtopic);break;case'ftagset':if(ta!==''){SystemLog(ta);var tagarr=[ta];if(ta.indexOf(';')!==-1){tagarr=ta.split(';');}
for(var tag in tagarr){var tag=tagarr[tag];TagChange(tag,setval.toString());}}else{SystemLog('Error ftagset, no tag');}
break;case'fdevset':if(da!==''){switch(setval){case'release':setTimeout(TagChange,200,'/x'+da,setval);break;default:TagChange('/x'+da,setval);}}
break;case'ftimeintervalset':try{var arr=JSON.parse(setval);for(var key in arr){var i=parseInt(key)-1;var block=el.find('div[name="block"]').eq(i);for(var p in arr[key]){var pel=block.find('div[name="'+p+'"]');var type=pel.find('input').attr('type');switch(type){case'checkbox':if(arr[key][p]==1){pel.find('input').prop('checked',true);}else{pel.find('input').prop('checked',false);}
break;default:pel.find('input').val(arr[key][p]);}
pel.attr('value',arr[key][p]);}}}catch(err){SystemLog(err);}
break;case'fcolorpickerset':if(el.attr('touch')!=='release'){break;}
var param=JSON.parse(el.attr('param'));SystemLog('fcolorpickerset = '+setval);break;case'flevelset':if(typeof(el.attr('touch2'))!=='undefined'){if(el.attr('touch2')==='release'){LevelSet(el,setval);}}else{LevelSet(el,setval);}
break;case'ftagval':if(typeof(TagVal[ta])!=='undefined'){var setval=TagVal[ta];}else{var setval=0;}
UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',fxtopic);break;case'fdevval':var tag='/x'+da;if(typeof(TagVal[tag])!=='undefined'){var setval=TagVal[tag];}else{var setval=0;}
UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',tag);break;case'flink':window.open(val,'_blank');break;case'fattr':switch(val){case'lang':var setval='ru';if(localStorage.getItem('lang')){var setval=localStorage.getItem('lang');}
break;case'font-size':var setval='14';if(localStorage.getItem('font-size')){var setval=localStorage.getItem('font-size');}
break;default:var setval=Fval(val,fel);}
UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',fxtopic);break;case'finputset':var input=fel.find('input');if(input.length>0){input.val(setval);}
break;case'fselectset':var select=fel.find('select');switch(lil2){case'1':var arr=JSON.parse(setval);var param={};param['select_count']="1";var option="";var i=0;for(var key in arr){i++;option=""
param['key'+i]=key;param['val'+i]=arr[key];}
param['select_count']=i;select.html(option);if(typeof(fel.attr('value'))!=="undefined"){select.val(fel.attr('value'));}
var json=JSON.stringify(param);fel.attr('param',json);break;case'2':fel.attr('value',setval);select.val(setval);break;case'3':fel.attr('value',setval);fel.find('select option:contains("'+setval+'")').prop('selected',true);break;}
break;case'fjseditor':if(typeof(JsFuncArr[el.attr('id')])==="undefined"){JsFuncArr[el.attr('id')]=new JsFuncClass(el);}
var js=UiFuncArrT['el'][lil]['js'];var res=JsFuncArr[el.attr('id')].run(js,setval);switch(lil2){case'1':break;}
UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,res,'1',fxtopic);break;case'fsetattr':switch(val){case'lang':localStorage.setItem('lang',setval);SetLang(setval);break;case'font-size':$('.SYS_Main').css('font-size',parseInt(setval)+'px');localStorage.setItem('font-size',setval);break;default:var ArrJson=fel.attr('Attr');if(ArrJson){var ArrAttr=JSON.parse(ArrJson);}else{var ArrAttr={'attr':{}}}
var PrevAttr=ArrAttr['attr'][val.replace('ATTR-','')];ArrAttr['attr'][val.replace('ATTR-','')]=setval;var AttrArrJson=JSON.stringify(ArrAttr);fel.attr('Attr',AttrArrJson);if(PrevAttr){if(PrevAttr!==setval){if(UiFuncMqttConArr[PrevAttr]){if(UiFuncMqttConArr[PrevAttr][fel.attr('id')]){if(!UiFuncMqttConArr[setval]){UiFuncMqttConArr[setval]={};}
UiFuncMqttConArr[setval][fel.attr('id')]=UiFuncMqttConArr[PrevAttr][fel.attr('id')];delete UiFuncMqttConArr[PrevAttr][fel.attr('id')];}}}}}
break;case'fdom':var valarr=val.split(';');for(var valn in valarr){if(valarr[valn]){var valfel=GetEl(valarr[valn],el);setTimeout(UiFuncLinkStart,10,UiFuncArrT,box,el,valfel,lil,setval,'1',fxtopic);}}
break;case'felname':$('div[name="'+val+'"]').each(function(){var valfel=$(this);setTimeout(UiFuncLinkStart,10,UiFuncArrT,box,el,valfel,lil,setval,'1',fxtopic);});break;case'fstruct':UiFuncLinkStart(UiFuncArrT,box,el,GetEl(val,fel),lil,setval,'1',fxtopic);break;case'faddstr':if(val.indexOf('!1!')!==-1){var nsetval=val.replace(/!1!/g,setval);}else{var nsetval=setval+val;}
UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,nsetval,'1',fxtopic);break;case'fhtml':var typeel=fel.attr('type');switch(typeel){case'block':fel.html(setval);break;case'input':fel.find('input').val(setval);break;case'text':fel.html(setval);break;default:fel.html(setval);}
break;case'faddclass':fel.addClass(setval);break;case'fdelclass':fel.removeClass(setval);break;case'flog':SystemLog('FUNCTION - '+setval);break;case'falert':var w=parseInt($('.SYS_Main').css('width'));if($('.SYS_Main').find('.SYS_alert').length===0){$('.SYS_Main').append('
--------------
');}
$('.SYS_alert').css('width',(w/2)+'px').css('left','calc(50% - '+(w/4)+'px)')
$('.SYS_alert').show();$('.SYS_alert').find('.SYS_mess').html(setval);break;case'frangefilter':var setvaln=parseFloat(setval);if(setvaln<=parseFloat(val2)&&setvaln>=parseFloat(val)){UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setvaln,'1',fxtopic);}
break;case'frangenew':var mabc=Math.abs(parseFloat(val)-parseFloat(val2));if(parseFloat(val2)>parseFloat(val)){var setvaln=parseFloat(val)+parseFloat(mabc/100)*parseFloat(setval);}else{var setvaln=parseFloat(val)-parseFloat(mabc/100)*parseFloat(setval);}
if(val%1==0){setvaln=parseInt(setvaln);}
if(val.indexOf('%')!==-1||val2.indexOf('%')!==-1){setvaln=setvaln+'%';}
UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setvaln,'1',fxtopic);break;case'frangepersent':var setvaln=parseInt((Math.abs(parseFloat(val)-parseFloat(setval))/Math.abs(parseFloat(val2)-parseFloat(val)))*100);if(setvaln>100){setvaln=100;}
if(setvaln<0){setvaln=0;}
setvaln=setvaln+'%';UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setvaln,'1',fxtopic);break;case'ftoFixed':if(typeof(val)==="undefined"){val=1;}
var setvaln=parseFloat(setval).toFixed(parseInt(val));UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setvaln,'1',fxtopic);break;case'fround':var inv=1.0/parseFloat(val);var setvaln=Math.round(setval*inv)/inv;UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setvaln,'1',fxtopic);break;case'fmath':var setval=FMath(param,setval,val);UiFuncLinkStart(UiFuncArrT,box,el,fel,lil,setval,'1',fxtopic);break;case'fsendglobal':var UiFuncFel=fel.attr('UiFunc');if(typeof(UiFuncFel)!=='undefined'){var UiFuncArr=JSON.parse(UiFuncFel);for(var key in UiFuncArr['el']){if(UiFuncArr['el'][key]['type']=='fglobal'){if(UiFuncArr['el'][key]['param']==param){setTimeout(UiFuncLinkStart,10,UiFuncArr,'',el,fel,key,setval,'1',fxtopic);}}}}
break;default:if(type.indexOf('fx')===0){TagChange('/xsysui/fxlink/'+el.attr('id')+'/'+lil+'/'+lil2,setval);}}}
function UiFuncLinkStart(UiFuncArr,box,el,fel,key,setval,nout,fxtopic){var UiFuncArrT=UiFuncArr;if(UiFuncArrT['el']&&UiFuncArrT['el'][key]){var link=undefined;var ct=UiFuncArrT['el'][key]['type'];if(nout){var link=UiFuncArrT['el'][key]['link'+nout];if(nout==1){var link=UiFuncArrT['el'][key]['link'];if(UiFuncArrT['el'][key]['link1']){var link=UiFuncArrT['el'][key]['link1'];}}}else{var link=UiFuncArrT['el'][key]['link'];if(UiFuncArrT['el'][key]['link1']){var link=UiFuncArrT['el'][key]['link1'];}}
if(link){var linkarr=link.split(',');for(var il in linkarr){var lil=linkarr[il];var lil2=1;if(lil.indexOf('-')!==-1){lil=linkarr[il].split('-')[0];var lil2=linkarr[il].split('-')[1];}
try{var type=UiFuncArrT['el'][lil]['type'];UiFuncLinkRun(UiFuncArrT,type,lil,lil2,box,el,fel,setval,fxtopic);}catch(err){SystemLog('type error - '+err);}}}}}
function funcstart(press,el,func,DDD){var UiFuncJson=el.attr('UiFunc');if(UiFuncJson){var UiFuncArr=JSON.parse(UiFuncJson);for(var key in UiFuncArr['el']){if(UiFuncArr['el'][key]['type']=='f'+func){UiFuncLinkStart(UiFuncArr,'',el,el,key,func,'1','fxtopic');}else if(UiFuncArr['el'][key]['type']=='ftouch'){if(UiFuncArr['el'][key]['param']==func){UiFuncLinkStart(UiFuncArr,'',el,el,key,func,'1','fxtopic');}}
if(UiFuncArr['el'][key]['type']=='ftoucheffect'){var id=el.attr('id');if(func=='click'){switch(UiFuncArr['el'][key]['param']){case'explosion':el.css('transition','0.1s');el.css('transform','scale(2,2)');setTimeout('$("#'+id+'").css("transition","0s")',100);setTimeout('$("#'+id+'").css("transform","scale(1,1)")',110);break;}}
if(func=='press'){switch(UiFuncArr['el'][key]['param']){case'increase':el.css('transition','0.15s');el.css('transform','scale(1.15,1.15)');break;case'increase2':el.css('transition','0.15s');el.css('transform','scale(1.05,1.05)');break;case'increase3':el.css('transition','0.10s');el.css('transform','scale(1.02,1.02)');break;case'decrease':el.css('transition','0.15s');el.css('transform','scale(0.9,0.9)');break;case'bouncing':el.css('transition','0.15s');el.css('transform','translateY(-14px)');break;}}
if(func=='release'){switch(UiFuncArr['el'][key]['param']){case'increase':el.css('transform','scale(0.8,0.8)');setTimeout('$("#'+id+'").css("transform","scale(1,1)")',100);break;case'increase2':el.css('transform','scale(0.95,0.95)');setTimeout('$("#'+id+'").css("transform","scale(1,1)")',100);break;case'increase3':el.css('transform','scale(0.98,0.98)');setTimeout('$("#'+id+'").css("transform","scale(1,1)")',100);break;case'decrease':el.css('transform','scale(1.1,1.1)');setTimeout('$("#'+id+'").css("transform","scale(1,1)")',100);break;case'bouncing':el.css('transform','translateY(7px)');setTimeout('$("#'+id+'").css("transform","translateY(0)")',100);break;}}}}}}
var KeyDownInterval={};var EditSizeTimeout={};function savefile(ele){ele.removeAttr('sys_select');ele.removeAttr('select');ele.find('.SYS_InputBlock').remove();ele.find('div[add="dinamic"]').remove();ele.find('select[add="dinamic"]').remove();ele.find('option[add="dinamic"]').remove();var new_id=newid();var resid=new_id;if(ele.attr('id')){var resid=ele.attr('id');}
var newele=ele.clone().attr('id',new_id);newele.find('div').each(function(index){$(this).removeAttr('touch');$(this).removeAttr('touch2');$(this).removeAttr('hover');$(this).removeAttr('press-time');$(this).removeAttr('offsettop');$(this).removeAttr('offsetleft');$(this).removeAttr('tleft');$(this).removeAttr('touchxend');$(this).removeAttr('touchyend');$(this).removeAttr('touchxstart');$(this).removeAttr('touchystart');$(this).removeAttr('touchx');$(this).removeAttr('touchy');$(this).removeAttr('ttop');$(this).removeAttr('click-time');var new_id=newid();if(typeof($(this).attr('id'))==="undefined"){return;}
var resid=$(this).attr('id');$(this).attr('id',new_id);});var name=ele.attr('name');var block=$('');block.append(newele);var txt=block.html();txt=txt.replace(/url\(/g,"url(http://xiot.pro/");var blob=new Blob([txt],{type:"text/plain;charset=utf-8"});saveAs(blob,name+".xelem");}
function pasteisbase(){$('.SYS_ElemBaseBlock').show();if($('.SYS_ElemBaseBlockEl').html()==''){$.post("login/getelem.php",{func:'dir'},function(data){$('.SYS_ElemBaseBlockEl').append(data);});}}
function AddElem(elem){var newblock=$('').html(elem);newblock.find('div').each(function(index){if(typeof($(this).attr('id'))!=="undefined"){var newxid=newid();$(this).attr('id',newxid);}});var divtype=newblock.find('div:first').attr('type');var ferstxid=newblock.find('div:first').attr('id');switch(divtype){case'Popup':if($('.SYS_Main').find('div[type="Popup"]').length!=0){$('.SYS_Main').find('div[type="Popup"]:last').after(newblock.html());}else{$('.SYS_Main').append(newblock.html());}
StructurePopupView();break;case'Page':$('.SYS_Main').find('div[type="Page"]:last').after(newblock.html());StructurePageView();break;default:if($('div[sys_edit="1"').length!=0){$('div[sys_edit="1"').append(newblock.html());}else{var elid=$('.SYS_ClickRightMenu2').attr('el');$('.SYS_ClickRightMenu2').removeAttr('el');if($('#'+elid).attr('type')=='Page'||$('#'+elid).attr('type')=='Popup'){$('#'+elid).append(newblock.html());}}}
RestartFxUi(ferstxid);}
function pasteisfile(){var input=$(document.createElement('input'));input.on('change',function(e){var file=e.target.files[0];var reader=new FileReader();reader.onload=(function(file){return function(e){var r=e.target;var block=r.result;AddElem(block);};})(file);reader.readAsText(file);});input.attr("type","file");input.attr('class','pasteisfile');input.trigger('click');}
function TagSelectCreate(){if(typeof($('.SYS_Tags').attr('json'))!=="undefined"){var tagsarr=JSON.parse($('.SYS_Tags').attr('json'));const tags={};Object.keys(tagsarr).sort().forEach(function(key){tags[key]=tagsarr[key];});$('.SYS_TagSelectBlockSelect').html('');var ts=$('');for(var tag in tags){var tagarr=tag.split('/');var vtagadd='';var vtagdel='';var vtagedit='';if(tagarr[1]=='vtag'){vtagadd='
');}
$('.SYS_TagSelectBlock').find('.SYS_TagSelectBlockSelect').append(ts);}}
function SavePlcModule(){var setupjson=$('.SYS_PlcModuleSetup').attr('json');if(setupjson&&setupjson!==''){var setuparr=JSON.parse(setupjson);}else{var setuparr={};}
var type=$('.SYS_PlcModuleBlock').attr('type');if(typeof(type)!=="undefined"){if(type!=='gc'){setuparr[type]={};}
if($('.SYS_PlcModuleBlock').find('.SYS_PlcModule').length>0){var i=0;$('.SYS_PlcModuleBlock').find('.SYS_PlcModule').each(function(){if(type!=='gc'){setuparr[type][i]={};}
$(this).find('.SYS_PlcModuleVal').each(function(){try{var paramname=$(this).attr('name');SystemLog('ok');SystemLog(paramname);var eltype=$(this).attr('type');var arr=$(this).closest('.SYS_PlcModuleParamBlock').attr('arr');var arr2=$(this).closest('.SYS_PlcModuleParamBlock2').attr('arr');var arr3=$(this).closest('.SYS_PlcModuleParamBlock3').attr('arr');var arr4=$(this).closest('.SYS_PlcModuleParamBlock4').attr('arr');var arr5=$(this).closest('.SYS_PlcModuleParamBlock5').attr('arr');SystemLog(arr+' '+arr2+' '+arr3+' '+arr4)
var paramval="";switch(eltype){case'text':paramval=$(this).val();break;case'select':paramval=$(this).val();break;case'checkbox':paramval=0;if($(this).prop("checked")==true){paramval='1';}
break;}
if(arr){if(!setuparr[type][i][arr]){setuparr[type][i][arr]={};}
if(arr2){if(arr2=='*'){arr2=$(this).closest('.SYS_PlcModuleParamBlock2').index();SystemLog("arr2arr2arr2 = "+arr2);}
if(!setuparr[type][i][arr][arr2]){setuparr[type][i][arr][arr2]={};}
if(arr3){if(arr3=='*'){arr3=$(this).closest('.SYS_PlcModuleParamBlock3').index();SystemLog("arr3arr3arr3 = "+arr3);}
if(!setuparr[type][i][arr][arr2][arr3]){setuparr[type][i][arr][arr2][arr3]={};}
if(arr4){if(arr4=='*'){arr4=$(this).closest('.SYS_PlcModuleParamBlock4').index();SystemLog("arr4arr4arr4 = "+arr4);}
if(!setuparr[type][i][arr][arr2][arr3][arr4]){setuparr[type][i][arr][arr2][arr3][arr4]={};}
if(arr5){if(arr5=='*'){arr5=$(this).closest('.SYS_PlcModuleParamBlock5').index();SystemLog("arr5arr5arr5 = "+arr5);}
if(!setuparr[type][i][arr][arr2][arr3][arr4][arr5]){setuparr[type][i][arr][arr2][arr3][arr4][arr5]={};}
setuparr[type][i][arr][arr2][arr3][arr4][arr5][paramname]=paramval;}else{setuparr[type][i][arr][arr2][arr3][arr4][paramname]=paramval;}}else{setuparr[type][i][arr][arr2][arr3][paramname]=paramval;}}else{setuparr[type][i][arr][arr2][paramname]=paramval;}}else{setuparr[type][i][arr][paramname]=paramval;}}else{setuparr[type][i][paramname]=paramval;}}catch(e){SystemLog(e);}});var tagjson=$('.SYS_Tags').attr('json');if(tagjson&&tagjson!==''){var tagarr=JSON.parse(tagjson);}else{var tagarr={};}
switch(type){case'zigbee2mqtt':delete(tagarr['z2m']);for(var tag in tagarr){if(tagarr[tag]['module']=='z2m'){delete(tagarr[tag]);}}
SystemLog(setuparr);for(var dev in setuparr[type][i]['devices']){for(var contrl in setuparr[type][i]['devices'][dev]['controls']){tagarr['/z2m/'+dev+'/'+contrl]={};tagarr['/z2m/'+dev+'/'+contrl]['typez2m']=setuparr[type][i]['devices'][dev]['controls'][contrl]['typez2m'];tagarr['/z2m/'+dev+'/'+contrl]['typexiot']=setuparr[type][i]['devices'][dev]['controls'][contrl]['typexiot'];tagarr['/z2m/'+dev+'/'+contrl]['name']=setuparr[type][i]['devices'][dev]['controls'][contrl]['name'];}}
break;case'1wire':delete(tagarr['1wire']);for(var tag in tagarr){if(tagarr[tag]['module']=='1wire'){delete(tagarr[tag]);}}
SystemLog(setuparr);for(var dev in setuparr[type][i]['devices']){tagarr['/1wire/'+dev+'/temperature']={};tagarr['/1wire/'+dev+'/temperature']['typexiot']='temperature';tagarr['/1wire/'+dev+'/temperature']['name']=setuparr[type][i]['devices'][dev]['name'];}
break;case'modbustcpclient':delete(tagarr['modbustcpclient']);for(var tag in tagarr){if(tagarr[tag]['module']=='modbustcpclient'){delete(tagarr[tag]);}}
console.log('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');console.log(setuparr);for(var id in setuparr[type][i]['read']){var count=parseInt(setuparr[type][i]['read'][id]['count']);var start=parseInt(setuparr[type][i]['read'][id]['start']);for(var key=start;key<(start+count);key++){tagarr['/modbustcpclient/0/'+key]={};tagarr['/modbustcpclient/0/'+key]['typexiot']='string';tagarr['/modbustcpclient/0/'+key]['name']='';tagarr['/modbustcpclient/0/'+key]['rw']="rw";}}
break;case'knx':delete(tagarr['knx']);for(var tag in tagarr){if(tagarr[tag]['module']=='knx'){delete(tagarr[tag]);}}
for(var dev in setuparr[type][i]['group']){for(var contrl in setuparr[type][i]['group'][dev]['dev']){tagarr['/knx/'+contrl]={};tagarr['/knx/'+contrl]['typeknx']=setuparr[type][i]['group'][dev]['dev'][contrl]['type'];tagarr['/knx/'+contrl]['typexiot']=setuparr[type][i]['group'][dev]['dev'][contrl]['typexiot'];tagarr['/knx/'+contrl]['name']=setuparr[type][i]['group'][dev]['dev'][contrl]['name'];tagarr['/knx/'+contrl]['rw']=setuparr[type][i]['group'][dev]['dev'][contrl]['rw'];}}
break;case'weather':tagarr['/weather/current/temp']={};tagarr['/weather/current/temp']['typexiot']='float';tagarr['/weather/current/temp']['name']='температура';tagarr['/weather/current/temp']['rw']="r";tagarr['/weather/current/windspeed']={};tagarr['/weather/current/windspeed']['typexiot']='float';tagarr['/weather/current/windspeed']['name']='скорость ветра';tagarr['/weather/current/windspeed']['rw']="r";tagarr['/weather/current/winddirection']={};tagarr['/weather/current/winddirection']['typexiot']='int';tagarr['/weather/current/winddirection']['name']='направление ветра';tagarr['/weather/current/winddirection']['rw']="r";tagarr['/weather/current/humidity']={};tagarr['/weather/current/humidity']['typexiot']='int';tagarr['/weather/current/humidity']['name']='влажность';tagarr['/weather/current/humidity']['rw']="r";tagarr['/weather/current/pressure']={};tagarr['/weather/current/pressure']['typexiot']='int';tagarr['/weather/current/pressure']['name']='давление';tagarr['/weather/current/pressure']['rw']="r";tagarr['/weather/current/sunrise']={};tagarr['/weather/current/sunrise']['typexiot']='time';tagarr['/weather/current/sunrise']['name']='время рассвета';tagarr['/weather/current/sunrise']['rw']="r";tagarr['/weather/current/sunset']={};tagarr['/weather/current/sunset']['typexiot']='time';tagarr['/weather/current/sunset']['name']='время заката';tagarr['/weather/current/sunset']['rw']="r";tagarr['/weather/dark']={};tagarr['/weather/dark']['typexiot']='switch';tagarr['/weather/dark']['name']='темное время суток';tagarr['/weather/dark']['rw']="r";tagarr['/weather/current/code']={};tagarr['/weather/current/code']['typexiot']='number';tagarr['/weather/current/code']['name']='код погоды';tagarr['/weather/current/code']['rw']="r";tagarr['/weather/current/desc']={};tagarr['/weather/current/desc']['typexiot']='string';tagarr['/weather/current/desc']['name']='описание';tagarr['/weather/current/desc']['rw']="r";tagarr['/weather/current/icon']={};tagarr['/weather/current/icon']['typexiot']='string';tagarr['/weather/current/icon']['name']='ссылка на иконку';tagarr['/weather/current/icon']['rw']="r";tagarr['/weather/current/sunnyday']={};tagarr['/weather/current/sunnyday']['typexiot']='switch';tagarr['/weather/current/sunnyday']['name']='солнечный день';tagarr['/weather/current/sunnyday']['rw']="r";break;case'routing':tagarr['/routing/gateway/default']={};tagarr['/routing/gateway/default']['typexiot']='string';tagarr['/routing/gateway/default']['name']='текущий шлюз выхода в интернет';tagarr['/routing/gateway/default']['rw']="r";tagarr['/routing/packetloss/eth0']={};tagarr['/routing/packetloss/eth0']['typexiot']='percentage';tagarr['/routing/packetloss/eth0']['name']='процент потерь пакетов на eth0';tagarr['/routing/packetloss/eth0']['rw']="r";tagarr['/routing/packetloss/wlan0']={};tagarr['/routing/packetloss/wlan0']['typexiot']='percentage';tagarr['/routing/packetloss/wlan0']['name']='процент потерь пакетов на wlan0';tagarr['/routing/packetloss/wlan0']['rw']="r";tagarr['/routing/packetloss/ppp0']={};tagarr['/routing/packetloss/ppp0']['typexiot']='percentage';tagarr['/routing/packetloss/ppp0']['name']='процент потерь пакетов на ppp0';tagarr['/routing/packetloss/ppp0']['rw']="r";break;case'smsc':tagarr['/smsc/sms/send1']={};tagarr['/smsc/sms/send1']['typexiot']='string';tagarr['/smsc/sms/send1']['name']='отправить sms по номеру 1';tagarr['/smsc/sms/send1']['rw']="w";tagarr['/smsc/sms/send2']={};tagarr['/smsc/sms/send2']['typexiot']='string';tagarr['/smsc/sms/send2']['name']='отправить sms по номеру 2';tagarr['/smsc/sms/send2']['rw']="w";tagarr['/smsc/call/send1']={};tagarr['/smsc/call/send1']['typexiot']='string';tagarr['/smsc/call/send1']['name']='отправить голосовое сообщение по номеру 1';tagarr['/smsc/call/send1']['rw']="w";tagarr['/smsc/call/send2']={};tagarr['/smsc/call/send2']['typexiot']='string';tagarr['/smsc/call/send2']['name']='отправить голосовое сообщение по номеру 2';tagarr['/smsc/call/send2']['rw']="w";tagarr['/smsc/info/balance']={};tagarr['/smsc/info/balance']['typexiot']='string';tagarr['/smsc/info/balance']['name']='баланс';tagarr['/smsc/info/balance']['rw']="r";break;case'homekit':tagarr['/module/homekit/delete']={};tagarr['/module/homekit/delete']['typexiot']='push_button';tagarr['/module/homekit/delete']['name']='Homekit - отвязать дом';tagarr['/module/homekit/delete']['rw']="w";tagarr['/module/homekit/restart']={};tagarr['/module/homekit/restart']['typexiot']='push_button';tagarr['/module/homekit/restart']['name']='Homekit - перезагрузить';tagarr['/module/homekit/restart']['rw']="w";tagarr['/module/homekit/status']={};tagarr['/module/homekit/status']['typexiot']='switch';tagarr['/module/homekit/status']['name']='Homekit - статус работы';tagarr['/module/homekit/status']['rw']="r";break;case'mplayer':tagarr['/mplayer/play/link']={};tagarr['/mplayer/play/link']['typexiot']='link';tagarr['/mplayer/play/link']['name']='воспроизвести по ссылке';tagarr['/mplayer/play/link']['rw']="w";tagarr['/mplayer/play/playlist']={};tagarr['/mplayer/play/playlist']['typexiot']='link';tagarr['/mplayer/play/playlist']['name']='Воспроизвести плейлист';tagarr['/mplayer/play/playlist']['rw']="w";tagarr['/mplayer/remote/control']={};tagarr['/mplayer/remote/control']['typexiot']='remote_control';tagarr['/mplayer/remote/control']['name']='управление плейером';tagarr['/mplayer/remote/control']['rw']="w";tagarr['/mplayer/current/playlist']={};tagarr['/mplayer/current/playlist']['typexiot']='playlist';tagarr['/mplayer/current/playlist']['name']='Загруженный плейлист';tagarr['/mplayer/current/playlist']['rw']="w";tagarr['/mplayer/current/song']={};tagarr['/mplayer/current/song']['typexiot']='link';tagarr['/mplayer/current/song']['name']='Играет сейчас';tagarr['/mplayer/current/song']['rw']="w";tagarr['/mplayer/current/cover']={};tagarr['/mplayer/current/cover']['typexiot']='base64';tagarr['/mplayer/current/cover']['name']='Обложка';tagarr['/mplayer/current/cover']['rw']="w";tagarr['/mplayer/current/coveruri']={};tagarr['/mplayer/current/coveruri']['typexiot']='link';tagarr['/mplayer/current/coveruri']['name']='Обложка';tagarr['/mplayer/current/coveruri']['rw']="w";break;case'mediatrap':tagarr['/mediatrap/control/update']={};tagarr['/mediatrap/control/update']['typexiot']='push_button';tagarr['/mediatrap/control/update']['name']='воспроизвести по ссылке';tagarr['/mediatrap/control/update']['rw']="w";tagarr['/mediatrap/playlist/radiomoscow']={};tagarr['/mediatrap/playlist/radiomoscow']['typexiot']='playlist';tagarr['/mediatrap/playlist/radiomoscow']['name']='Плейлист радио Москвы';tagarr['/mediatrap/playlist/radiomoscow']['rw']="r";break;case'jethome':tagarr['/jethome/rele/1']={};tagarr['/jethome/rele/1']['typexiot']='switch';tagarr['/jethome/rele/1']['name']='реле 1';tagarr['/jethome/rele/1']['rw']="rw";tagarr['/jethome/rele/2']={};tagarr['/jethome/rele/2']['typexiot']='switch';tagarr['/jethome/rele/2']['name']='реле 2';tagarr['/jethome/rele/2']['rw']="rw";tagarr['/jethome/rele/3']={};tagarr['/jethome/rele/3']['typexiot']='switch';tagarr['/jethome/rele/3']['name']='реле 3';tagarr['/jethome/rele/3']['rw']="rw";tagarr['jethome/discrete/1']={};tagarr['jethome/discrete/1']['typexiot']='switch';tagarr['jethome/discrete/1']['name']='дискретный вход 1';tagarr['jethome/discrete/1']['rw']="rw";tagarr['jethome/discrete/2']={};tagarr['jethome/discrete/2']['typexiot']='switch';tagarr['jethome/discrete/2']['name']='дискретный вход 2';tagarr['jethome/discrete/2']['rw']="rw";tagarr['jethome/discrete/3']={};tagarr['jethome/discrete/3']['typexiot']='switch';tagarr['jethome/discrete/3']['name']='дискретный вход 3';tagarr['jethome/discrete/3']['rw']="rw";tagarr['jethome/discrete/4']={};tagarr['jethome/discrete/4']['typexiot']='switch';tagarr['jethome/discrete/4']['name']='дискретный вход 4';tagarr['jethome/discrete/4']['rw']="rw";break;case'gc':tagarr['/gc/ir/1.1']={};tagarr['/gc/ir/1.1']['typexiot']='string';tagarr['/gc/ir/1.1']['name']='Записать Ик команду на порт 1.1';tagarr['/gc/ir/1.1']['rw']="w";tagarr['/gc/ir/1.2']={};tagarr['/gc/ir/1.2']['typexiot']='string';tagarr['/gc/ir/1.2']['name']='Записать Ик команду на порт 1.2';tagarr['/gc/ir/1.2']['rw']="w";tagarr['/gc/ir/1.3']={};tagarr['/gc/ir/1.3']['typexiot']='string';tagarr['/gc/ir/1.3']['name']='Записать Ик команду на порт 1.3';tagarr['/gc/ir/1.3']['rw']="w";tagarr['/gc/ir/2.1']={};tagarr['/gc/ir/2.1']['typexiot']='string';tagarr['/gc/ir/2.1']['name']='Записать Ик команду на порт 2.1';tagarr['/gc/ir/2.1']['rw']="w";tagarr['/gc/ir/2.2']={};tagarr['/gc/ir/2.2']['typexiot']='string';tagarr['/gc/ir/2.2']['name']='Записать Ик команду на порт 2.2';tagarr['/gc/ir/2.2']['rw']="w";tagarr['/gc/ir/2.3']={};tagarr['/gc/ir/2.3']['typexiot']='string';tagarr['/gc/ir/2.3']['name']='Записать Ик команду на порт 2.3';tagarr['/gc/ir/2.3']['rw']="w";tagarr['/gc/ir/3.1']={};tagarr['/gc/ir/3.1']['typexiot']='string';tagarr['/gc/ir/3.1']['name']='Записать Ик команду на порт 3.1';tagarr['/gc/ir/3.1']['rw']="w";tagarr['/gc/ir/3.2']={};tagarr['/gc/ir/3.2']['typexiot']='string';tagarr['/gc/ir/3.2']['name']='Записать Ик команду на порт 3.2';tagarr['/gc/ir/3.2']['rw']="w";tagarr['/gc/ir/3.3']={};tagarr['/gc/ir/3.3']['typexiot']='string';tagarr['/gc/ir/3.3']['name']='Записать Ик команду на порт 3.3';tagarr['/gc/ir/3.3']['rw']="w";tagarr['/gc/ir/4.1']={};tagarr['/gc/ir/4.1']['typexiot']='string';tagarr['/gc/ir/4.1']['name']='Записать Ик команду на порт 4.1';tagarr['/gc/ir/4.1']['rw']="w";tagarr['/gc/ir/4.2']={};tagarr['/gc/ir/4.2']['typexiot']='string';tagarr['/gc/ir/4.2']['name']='Записать Ик команду на порт 4.2';tagarr['/gc/ir/4.2']['rw']="w";tagarr['/gc/ir/4.3']={};tagarr['/gc/ir/4.3']['typexiot']='string';tagarr['/gc/ir/4.3']['name']='Записать Ик команду на порт 4.3';tagarr['/gc/ir/4.3']['rw']="w";tagarr['/gc/ir/5.1']={};tagarr['/gc/ir/5.1']['typexiot']='string';tagarr['/gc/ir/5.1']['name']='Записать Ик команду на порт 5.1';tagarr['/gc/ir/5.1']['rw']="w";tagarr['/gc/ir/5.2']={};tagarr['/gc/ir/5.2']['typexiot']='string';tagarr['/gc/ir/5.2']['name']='Записать Ик команду на порт 5.2';tagarr['/gc/ir/5.2']['rw']="w";tagarr['/gc/ir/5.3']={};tagarr['/gc/ir/5.3']['typexiot']='string';tagarr['/gc/ir/5.3']['name']='Записать Ик команду на порт 5.3';tagarr['/gc/ir/5.3']['rw']="w";tagarr['/gc/ir/6.1']={};tagarr['/gc/ir/6.1']['typexiot']='string';tagarr['/gc/ir/6.1']['name']='Записать Ик команду на порт 6.1';tagarr['/gc/ir/6.1']['rw']="w";tagarr['/gc/ir/6.2']={};tagarr['/gc/ir/6.2']['typexiot']='string';tagarr['/gc/ir/6.2']['name']='Записать Ик команду на порт 6.2';tagarr['/gc/ir/6.2']['rw']="w";tagarr['/gc/ir/6.3']={};tagarr['/gc/ir/6.3']['typexiot']='string';tagarr['/gc/ir/6.3']['name']='Записать Ик команду на порт 6.3';tagarr['/gc/ir/6.3']['rw']="w";break;}
tagarr['/test/switch/1']={};tagarr['/test/switch/1']['typexiot']='switch';tagarr['/test/switch/1']['name']='Тест - переключатель 1';tagarr['/test/switch/1']['rw']="rw";tagarr['/test/switch/2']={};tagarr['/test/switch/2']['typexiot']='switch';tagarr['/test/switch/2']['name']='Тест - переключатель 2';tagarr['/test/switch/2']['rw']="rw";tagarr['/test/switch/3']={};tagarr['/test/switch/3']['typexiot']='switch';tagarr['/test/switch/3']['name']='Тест - переключатель 3';tagarr['/test/switch/3']['rw']="rw";tagarr['/test/percentage/1']={};tagarr['/test/percentage/1']['typexiot']='percentage';tagarr['/test/percentage/1']['name']='Тест - процент 1';tagarr['/test/percentage/1']['rw']="rw";tagarr['/test/percentage/2']={};tagarr['/test/percentage/2']['typexiot']='percentage';tagarr['/test/percentage/2']['name']='Тест - процент 2';tagarr['/test/percentage/2']['rw']="rw";tagarr['/test/percentage/3']={};tagarr['/test/percentage/3']['typexiot']='percentage';tagarr['/test/percentage/3']['name']='Тест - процент 3';tagarr['/test/percentage/3']['rw']="rw";tagarr['/system/internet/connect']={};tagarr['/system/internet/connect']['typexiot']='switch';tagarr['/system/internet/connect']['name']='Статус подключения к интернет';tagarr['/system/internet/connect']['rw']="r";tagarr['/system/mqtt/cloudconnect']={};tagarr['/system/mqtt/cloudconnect']['typexiot']='switch';tagarr['/system/mqtt/cloudconnect']['name']='Статус подключения к облачному mqtt брокеру';tagarr['/system/mqtt/cloudconnect']['rw']="r";tagarr['/system/mqttplc/cloudconnect']={};tagarr['/system/mqttplc/cloudconnect']['typexiot']='switch';tagarr['/system/mqttplc/cloudconnect']['name']='Статус подключения к mqtt брокера контроллера к облачному mqtt брокеру';tagarr['/system/mqttplc/cloudconnect']['rw']="r";tagarr['/system/mqtt/localconnect']={};tagarr['/system/mqtt/localconnect']['typexiot']='switch';tagarr['/system/mqtt/localconnect']['name']='Статус подключения к mqtt брокеру контроллера';tagarr['/system/mqtt/localconnect']['rw']="r";tagarr['/system/plc/connect']={};tagarr['/system/plc/connect']['typexiot']='switch';tagarr['/system/plc/connect']['name']='Статус подключения к контроллеру';tagarr['/system/plc/connect']['rw']="r";tagarr['/system/plc/login']={};tagarr['/system/plc/login']['typexiot']='switch';tagarr['/system/plc/login']['name']='Статус авторизации контроллера в редакторе XIOT-EDITOR';tagarr['/system/plc/login']['rw']="r";SystemLog(tagarr);tagjson=JSON.stringify(tagarr);$('.SYS_Tags').attr('json',tagjson);i++;});setupjson=JSON.stringify(setuparr);$('.SYS_PlcModuleSetup').attr('json',setupjson);}}
TagSelectCreate();}
function UiFuncSave(){if(UiFuncXid!==''){var ArrJson=JSON.stringify(UiFuncArrEdit);switch(FXedit){case'fxui':$('#'+UiFuncXid).attr('UiFunc',ArrJson);break;case'fxhome':if(typeof(DevicesConf['home']['param'])==='undefined'){DevicesConf['home']['param']={};}
DevicesConf['home']['param']['FxLogic']=UiFuncArrEdit;break;case'fxfloor':if(typeof(FloorsConfList[UiFuncXid])==='undefined'){FloorsConfList[UiFuncXid]={};FloorsConfList[UiFuncXid]['param']={};}
FloorsConfList[UiFuncXid]['param']['FxLogic']=UiFuncArrEdit;break;case'fxroom':if(typeof(RoomsConfList[UiFuncXid])==='undefined'){RoomsConfList[UiFuncXid]={};RoomsConfList[UiFuncXid]['param']={};}
RoomsConfList[UiFuncXid]['param']['FxLogic']=UiFuncArrEdit;break;case'fxdev':if(typeof(DevicesConfList[UiFuncXid])==='undefined'){DevicesConfList[UiFuncXid]={};DevicesConfList[UiFuncXid]['param']={};}
DevicesConfList[UiFuncXid]['param']['FxLogic']=UiFuncArrEdit;break;case'fxdevlink':var did=$('.SYS_UiFuncBlockBox').attr('did');var hn=$('.SYS_UiFuncBlockBox').attr('hn');if(typeof(DevicesConfList[did]['param'])==='undefined'){DevicesConfList[did]['param']={};}
if(typeof(DevicesConfList[did]['param']['devlink'])==='undefined'){DevicesConfList[did]['param']['devlink']={};}
DevicesConfList[did]['param']['devlink'][hn]=UiFuncArrEdit;break;default:$('#'+UiFuncXid).attr('LogicFunc',ArrJson);}
UiFuncPrint();}}
function AddBlock(blocktype){switch(blocktype){case'block1':var xid=newid();var newblock=$('.SYS_AddBlock').clone();newblock.show();var style=newblock.attr('style');newblock.attr('id',xid).removeClass('SYS_AddBlock').attr('styleall',style);if($('div[sys_edit="1"').length!=0){$('div[sys_edit="1"').append(newblock);}else{var elid=$('.SYS_ClickRightMenu2').attr('el');$('.SYS_ClickRightMenu2').removeAttr('el');if($('#'+elid).attr('type')=='Page'||$('#'+elid).attr('type')=='Popup'){$('#'+elid).append(newblock);}}
break;}}
function CpColorSet(input){if(input){var SYS_ElEditor=input.closest('.SYS_ElEditor');var xid=SYS_ElEditor.attr('xid');var param=input.parent().find('select').val();$('.SYS_CpColorPicker').attr('xid',xid);$('.SYS_CpColorPicker').attr('param',xid);$('#'+xid).css(param,input.val());}}
function FdomPrintAddUl(els,liget,ppp,pelsel){var ul=$('
');if(els.children().length>0){liget.append(ul);}
if(els.children('div').length>0){liget.find('.SYS_FdomSelect').prepend('');}else{liget.find('.SYS_FdomSelect').prepend('');}
els.children('div').each(function(index){if(name=$(this).attr('name')){}else{name='';}
if($(this).find($('#'+UiFuncXid)).length>0){var pel='P'+(ppp-2);var pppn=ppp-1;}else{if($(this).attr('id')==UiFuncXid){var pppn=ppp;var pel='EL';}else{var pppn=ppp;if(liget.find('.SYS_FdomSelect').attr('pel')){var pel=liget.find('.SYS_FdomSelect').attr('pel')+'-EL'+(index+1);}else{var pel='P'+(ppp-2);}}}
var findpel=0;if(pelsel!==undefined){var pelselarr=pelsel.split(';');for(var i in pelselarr){if(pelselarr[i]==pel){findpel=1;}}}
if(findpel==1){var li=$('
');$('.SYS_TagSelectCont').prepend(SYS_TagsAttr);var ArrTags=JSON.parse(elxid.attr('tags'));SystemLog(ArrTags);for(var tag in ArrTags['tags']){$('.SYS_TagSelectBlockGroup[group="tagattr"]').append('
'));openpage(Page,'Page');ElementSelect=Page;break;}
break;}
break;}
break;case"SYS_TagSelectBut":case"SYS_LinkDevSelectBut":switch(func){case"press":switch(el.attr('func')){case"close":var block=el.parent().parent().hide();break;}
break;}
break
case"SYS_LinkDevSel":switch(func){case"click":var hid=el.attr('hid');var func=$('.SYS_LinkDevSelectBlock').attr('func');switch(func){case'logic':var devname=GetDevName('/x'+el.attr('hid'));LinkDevSelectVal.html(devname).attr('value','/x'+el.attr('hid'));break;case'fx':var val=el.attr('hid');var key=$('.SYS_LinkDevSelectBlock').attr('key');var param=$('.SYS_LinkDevSelectBlock').attr('param');SystemLog(UiFuncArrEditEl);UiFuncArrEditEl[key][param]=val;UiFuncSave();break;case'dev':var xid=LinkDevSelectVal.attr('xid');var namelink=LinkDevSelectVal.attr('namelink');var LinkDevJson=$('#'+xid).attr('linkdev');if(LinkDevJson){var ArrLinkDev=JSON.parse(LinkDevJson);if(typeof(ArrLinkDev[namelink])!=="undefined"){ArrLinkDev[namelink]=hid;var LinkDevJson=JSON.stringify(ArrLinkDev);LinkDevEditorSave(xid,LinkDevJson);}}
RestartFxUi(xid);break;}
$('.SYS_LinkDevSelectBlock').hide();break;}
break
case"SYS_ElEditorBut":switch(func){case"press":switch(el.attr('func')){case"addproject":var result=confirm('СОХРАНИТЕ данные текущего проекта перед созданием нового. Создать новый проект?');if(result){var jwt=localStorage.getItem('jwt');var data={"jwt":jwt,"func":"addproject"};$.post("system/ajax.php",{data:JSON.stringify(data)},function(mess){if(mess['ok']){localStorage.setItem('project',mess['project']);WindowsReload(false);}else{alert(mess['error']);}},"json");}
break;case"renameproject":$('.SYS_StructureProject').attr('contenteditable','true');$('.SYS_StructureProject').css('border','1px solid orange');el.css('display','none');el.parent().find('div[func="renameprojectok"]').css('display','flex');break;case"renameprojectok":$('.SYS_StructureProject').attr('contenteditable','false');$('.SYS_StructureProject').css('border','none');var prjnamearr={};$('.SYS_StructureProject').each(function(){var sysname=$(this).attr('prj');var name=$(this).html();prjnamearr[sysname]=name;});SystemLog(prjnamearr);var jwt=localStorage.getItem('jwt');var data={"jwt":jwt,"func":"renameproject","prjnamearr":prjnamearr};$.post("system/ajax.php",{data:JSON.stringify(data)},function(mess){if(mess['ok']){var prjselect=$('.SYS_StructureProject[select="1"]').attr("prj");$(".SYS_StructureProjectName").find('span').html('Проект - '+prjnamearr[prjselect]);SystemLog(mess['ok']);}else{alert(mess['error']);}},"json");el.css('display','none');el.parent().find('div[func="renameproject"]').css('display','flex');break;case"moveproject":$('.SYS_StructureProject').attr('draggable','true');$('.SYS_StructureProject').css('border','1px solid blue');el.css('display','none');el.parent().find('div[func="moveprojectok"]').css('display','flex');break;case"moveprojectok":$('.SYS_StructureProject').attr('draggable','false');$('.SYS_StructureProject').css('border','none');var prjarr={};var i=0;$('.SYS_StructureProject').each(function(){var prj=$(this).attr('prj');prjarr[i]=prj;i++;});SystemLog(prjarr);var jwt=localStorage.getItem('jwt');var data={"jwt":jwt,"func":"moveproject","prjarr":prjarr};$.post("system/ajax.php",{data:JSON.stringify(data)},function(mess){if(mess['ok']){SystemLog(mess['ok']);}else{alert(mess['error']);}},"json");el.css('display','none');el.parent().find('div[func="moveproject"]').css('display','flex');break;case"delproject":var result=confirm('УДАЛИТЬ ПРОЕКТ?');if(result){var result2=confirm('Вы уверены что хотите УДАЛИТЬ проект? после удаления проект НЕЛЬЗЯ будет восстановить!');if(result2){var jwt=localStorage.getItem('jwt');var project=localStorage.getItem('project');var data={"jwt":jwt,"func":"delproject","project":project};$.post("system/ajax.php",{data:JSON.stringify(data)},function(mess){if(mess['ok']){alert(mess['ok']);WindowsReload(false);}else{alert(mess['error']);}},"json");}}
break;case"addpage":$('.SYS_Main').find('div[type="Page"]').attr('select','0').css('display','none');var count=$('.SYS_Main').find('div[type="Page"]').length+1;var nid=newid();var last=$("div[type='Page']").last();var newpage=$('.SYS_AddPage').clone();newpage.removeClass('SYS_AddPage').attr('id',nid).attr('name','Страница '+count).attr('type','Page');var style=newpage.attr('style');newpage.attr('styleall',style);last.after(newpage);ElementSelect=newpage;StructurePageView();break;case"delpage":if($('.SYS_Main').find('div[type="Page"]').length==1){alert('В проекте должна быть минимум 1 странциа!');}else{var result=confirm('Удалить страницу?');if(result){$('.SYS_Main').find('div[type="Page"][select="1"]').remove();var Page=$("div[type='Page']:first");Page.attr('select','1');var display=xcss(Page,'display');if(display!==0&&display!=='none'){Page.css('display',display);}else{Page.css('display','block');}
StructurePageView();}}
break;case"copypage":var len=$('.SYS_StructurePage[select="1"]').length;switch(len){case 0:alert('Страница не выбрана');break;case 1:var id=$('.SYS_StructurePage[select="1"]').attr('elid');$('#'+id).removeAttr('select');var newpage=$('#'+id).clone();newpage.attr('name',newpage.attr('name')+" (копия)").attr('select','1');newpage.find('div').each(function(index){var new_id=newid();$(this).attr('id',new_id);});var new_id=newid();newpage.attr('id',new_id);$('.SYS_Main').find('div[type="page"]:last').after(newpage);StructurePageView();break;default:alert('Выбрано больше одной страницы');}
break;case"renamepage":$('.SYS_StructurePageName').attr('contenteditable','true');$('.SYS_StructurePage').css('border','1px solid orange');el.css('display','none');el.parent().find('div[func="renamepageok"]').css('display','flex');break;case"renamepageok":$('.SYS_StructurePageName').attr('contenteditable','false');$('.SYS_StructurePage').css('border','none');$('.SYS_StructurePageName').each(function(){var id=$(this).parent().attr('elid');var name=$(this).html();$("#"+id).attr('name',name);});el.css('display','none');el.parent().find('div[func="renamepage"]').css('display','flex');break;case"movepage":$('.SYS_StructurePage').attr('draggable','true');$('.SYS_StructurePage').css('border','1px solid blue');el.css('display','none');el.parent().find('div[func="movepageok"]').css('display','flex');break;case"movepageok":$('.SYS_StructurePage').attr('draggable','false');$('.SYS_StructurePage').css('border','none');$('.SYS_StructurePageName').each(function(){var id=$(this).parent().attr('elid');});el.css('display','none');el.parent().find('div[func="movepage"]').css('display','flex');break;case"renamepopup":$('.SYS_StructurePopupName').attr('contenteditable','true');$('.SYS_StructurePopup').css('border','1px solid orange');el.css('display','none');el.parent().find('div[func="renamepopupok"]').css('display','flex');break;case"renamepopupok":$('.SYS_StructurePopupName').attr('contenteditable','false');$('.SYS_StructurePopup').css('border','none');$('.SYS_StructurePopupName').each(function(){var id=$(this).parent().attr('elid');var name=$(this).html();$("#"+id).attr('name',name);});el.css('display','none');el.parent().find('div[func="renamepopup"]').css('display','flex');break;case"addpopup":var nid=newid();if($("div[type='Popup']").length>0){var last=$("div[type='Popup']").last();}else{var last=$("div[type='Page']").last();}
var newpopup=$('.SYS_AddPopup').clone();newpopup.removeClass('SYS_AddPopup').attr('id',nid).attr('name','Окно '+($('.SYS_Main').find('div[type="Popup"]').length+1)).attr('type','Popup');var style=newpopup.attr('style');newpopup.attr('styleall',style);last.after(newpopup);StructurePopupView();ElementSelect=newpopup;break;case"delpopup":var len=$('.SYS_StructurePopup[select="1"]').length;switch(len){case 0:alert('Окно не выбрано');break;case 1:if(confirm('Удалить окно?')){var id=$('.SYS_StructurePopup[select="1"]').attr('elid');$('#'+id).remove();StructurePopupView();}
break;default:alert('Выбрано больше одного окна');}
break;case"copypopup":var len=$('.SYS_StructurePopup[select="1"]').length;switch(len){case 0:alert('Окно не выбрано');break;case 1:var id=$('.SYS_StructurePopup[select="1"]').attr('elid');var newpopup=$('#'+id).clone();$('#'+id).css('display','none');newpopup.attr('name',newpopup.attr('name')+" (копия)");newpopup.find('div').each(function(index){var resid=$(this).attr('id');var new_id=newid();$(this).attr('id',new_id);});var new_id=newid();newpopup.attr('id',new_id);$('.SYS_Main').find('div[type="popup"]:last').after(newpopup);StructurePopupView();break;default:alert('Выбрано больше одного окна');}
break;case"movepopup":$('.SYS_StructurePopup').attr('draggable','true');$('.SYS_StructurePopup').css('border','1px solid blue');el.css('display','none');el.parent().find('div[func="movepopupok"]').css('display','flex');break;case"movepopupok":$('.SYS_StructurePopup').attr('draggable','false');$('.SYS_StructurePopup').css('border','none');$('.SYS_StructurePopupName').each(function(){var id=$(this).parent().attr('elid');});el.css('display','none');el.parent().find('div[func="movepopup"]').css('display','flex');break;case"savefilepopup":var len=$('.SYS_StructurePopup[select="1"]').length;switch(len){case 0:alert('Окно не выбрано');break;case 1:var id=$('.SYS_StructurePopup[select="1"]').attr('elid');var popup=$('#'+id);var newpopup=popup.clone();StyleApply(newpopup,'all',true);savefile(newpopup);break;default:alert('Выбрано больше одного окна');}
break;case"savefilepage":var id=$('.SYS_StructurePage[select="1"]').attr('elid');var page=$('#'+id);savefile(page);break;case"adddom":SystemLog('AddElement');break;case"deldom":var result=confirm('Удалить элемент?');if(result){$('.SYS_DomContEl2[select="1"]').each(function(){var xid=$(this).attr('xid');$('#'+xid).remove();$(this).remove();});}
break;case"renamedom":$('.SYS_DomContEl2').attr('contenteditable','true');$('.SYS_DomContEl2').css('border','1px solid orange');el.css('display','none');el.parent().find('div[func="renamedomok"]').css('display','flex');break;case"renamedomok":$('.SYS_DomContEl2').attr('contenteditable','false');$('.SYS_DomContEl2').css('border','none');$('.SYS_DomContEl2').each(function(){var xid=$(this).attr('xid');var name=$(this).html();$("#"+xid).attr('name',name);});el.css('display','none');el.parent().find('div[func="renamedom"]').css('display','flex');break;case"movedom":$('.SYS_DomContEl2').attr('draggable','true');$('.SYS_DomContEl2').css('border','1px solid blue');el.css('display','none');el.parent().find('div[func="movedomok"]').css('display','flex');break;case"movedomok":$('.SYS_DomContEl2').attr('draggable','false');$('.SYS_DomContEl2').css('border','none');$('.SYS_StructurePopupName').each(function(){var id=$(this).parent().attr('elid');});el.css('display','none');el.parent().find('div[func="movedom"]').css('display','flex');break;case"addattr":var xid=el.parent().parent().attr('xid');AttrEditorAdd(xid);RestartFxUi(xid);break;case"addtag":var xid=el.parent().parent().attr('xid');TagsEditorAdd(xid);RestartFxUi(xid);break;case"addlinkdev":var xid=el.parent().parent().attr('xid');LinkDevEditorAdd(xid);RestartFxUi(xid);break;case"addcam3d":var xid=el.parent().parent().attr('xid');Cam3dEditorAdd(xid);break;case"selectall":xid=el.parent().parent().attr('xid');if(el.attr('select')=='1'){el.attr('select','0');el.parent().parent().find('input[type="checkbox"]').prop("checked",false)}else{el.attr('select','1');el.parent().parent().find('input[type="checkbox"]').prop("checked",true)}
break;case"copyattr":var xid=el.parent().parent().attr('xid');var SelBlock=el.parent().parent().find('.SYS_EditorBlockAttr');CopyAttrVal=[];SelBlock.each(function(index){if($(this).find('input[type="checkbox"]').prop("checked")==true){var param=$(this).find('input[name="nameattr"]').val();var val=$(this).find('input[name="valattr"]').val();CopyAttrVal[param]=val;}});SystemLog(CopyAttrVal);break;case"copytags":var xid=el.parent().parent().attr('xid');var SelBlock=el.parent().parent().find('.SYS_EditorBlockTags');CopyTagsVal=[];SelBlock.each(function(index){if($(this).find('input[type="checkbox"]').prop("checked")==true){var param=$(this).find('input[name="nametag"]').val();var val=$(this).find('input[name="valtag"]').val();CopyTagsVal[param]=val;}});SystemLog(CopyTagsVal);break;case"copylinkdev":var xid=el.parent().parent().attr('xid');var SelBlock=el.parent().parent().find('.SYS_EditorBlockLinkDev');CopyLinkDevVal=[];SelBlock.each(function(index){if($(this).find('input[type="checkbox"]').prop("checked")==true){var param=$(this).find('input[name="namelinkdev"]').val();var val=$(this).find('input[name="vallinkdev"]').attr('link');CopyLinkDevVal[param]=val;}});SystemLog(CopyLinkDevVal);break;case"pastelinkdev":var xid=el.parent().parent().attr('xid');var LinkDevJson=$('#'+xid).attr('linkdev');if(LinkDevJson){var ArrLinkDev=JSON.parse(LinkDevJson);}else{var ArrLinkDev={}}
for(var key in CopyLinkDevVal){ArrLinkDev[key]=CopyLinkDevVal[key];}
var LinkDevJson=JSON.stringify(ArrLinkDev);SystemLog(LinkDevJson);LinkDevEditorSave(xid,LinkDevJson);RestartFxUi(xid);break;case"copystyle3D":var xid=el.parent().parent().attr('xid');var SelBlock=el.parent().parent().find('.SYS_SelBlock');CopyCss3DVal=[];SelBlock.each(function(index){if($(this).find('input[type="checkbox"]').prop("checked")==true){var param=$(this).find('.SYS_Select:first').val();var val=$(this).find('.SYS_Select').eq(1).val();CopyCss3DVal[param]=val;}});break;case"pastestyle3D":var xid=el.parent().parent().attr('xid');var elem=$('#'+xid);var edit=el.parent().parent().attr('edit');var style3D=elem.attr('style3D');var CssArr=[];if(style3D){style3D=style3D.replace(/ /g,'');var style3Darr2=style3D.split(';');for(var key in style3Darr2){style3Darr3=style3Darr2[key].split(':');CssArr[style3Darr3[0]]=style3Darr3[1];}
for(var key in CopyCss3DVal){if(key){CssArr[key]=CopyCss3DVal[key];}}}else{CssArr=CopyCss3DVal;}
var newcss="";delete CssArr[""];for(var key in CssArr){newcss=newcss+""+key+":"+CssArr[key]+";";}
elem.attr('style3D',newcss);ParamPrint(elem,edit);break;case"pasteattr":var xid=el.parent().parent().attr('xid');var ArrJson=$('#'+xid).attr('Attr');if(ArrJson){var ArrAttr=JSON.parse(ArrJson);}else{var ArrAttr={'attr':{}}}
for(var key in CopyAttrVal){ArrAttr['attr'][key]=CopyAttrVal[key];}
var AttrArrJson=JSON.stringify(ArrAttr);SystemLog(AttrArrJson);AttrEditorSave(xid,AttrArrJson);RestartFxUi(xid);break;case"pastetags":var xid=el.parent().parent().attr('xid');var TagsJson=$('#'+xid).attr('tags');if(TagsJson){var ArrTags=JSON.parse(TagsJson);}else{var ArrTags={'tags':{}}}
for(var key in CopyTagsVal){ArrTags['tags'][key]=CopyTagsVal[key];}
var TagsArrJson=JSON.stringify(ArrTags);SystemLog(TagsArrJson);TagsEditorSave(xid,TagsArrJson);RestartFxUi(xid);break;case"pastestyle3D":var xid=el.parent().parent().attr('xid');var elem=$('#'+xid);var edit=el.parent().parent().attr('edit');for(var param in CopyCssVal){xcss(xid,param,CopyCssVal[param],edit);elem.parent().find('div[sys_select="1"]').each(function(index){var xid2=$(this).attr('id');if(xid2&&xid2!=xid){xcss(xid2,param,CopyCssVal[param],edit);}});}
ParamPrint(elem,edit);break;case"add":funcel=el.parent().parent().attr('edit');if(el.parent().parent().find('.SYS_EditorBlock').length==0){el.parent().parent().append('
')}
var sel=$('.Select_'+funcel).eq(0).clone().attr('class','SYS_Select').show();sel.val('');var SYS_SelBlock=$('.SelBlock').clone().attr('class','SYS_SelBlock').show();SYS_SelBlock.append(sel);SYS_SelBlock.append($('
');}
$('.SYS_PlcModuleParamBlock[func="1wire_dev_list"]').append(pb2);SystemLog(devices);break;case"mplayer":case"mediatrap":case"jethome":var block=$('.SYS_PlcModuleTemp[type="'+modul+'"]').clone();block.attr('class','SYS_PlcModule').show();$('.SYS_PlcModuleBlock').append(block);break;case"yandexalice":var block=$('.SYS_PlcModuleTemp[type="'+modul+'"]').clone();block.attr('class','SYS_PlcModule').show();$('.SYS_PlcModuleBlock').append(block);var services=JSON.parse($('.SYS_alice_services').attr('json'));var characteristics=JSON.parse($('.SYS_alice_characteristics').attr('json'));var tags=JSON.parse($('.SYS_Tags').attr('json'));if(typeof(setuparr[modul])!=='undefined'){if(typeof(setuparr[modul][0]['services'])!=='undefined'){var c=1;for(var i in setuparr[modul][0]['services']){var sname=setuparr[modul][0]['services'][i]['name'];if(typeof(sname)==="undefined"){sname="";}
var hks=$('
");var rc=$(' ');for(key in services[setuparr[modul][0]['services'][i]['service']]['RequiredCharacteristics']){var ocname=services[setuparr[modul][0]['services'][i]['service']]['RequiredCharacteristics'][key];var tagr='';var tagw='';rc.append('
'+ocname+' ('+characteristics[ocname]['ru']+')
'+tagw+'
'+tagr+'
');}
var oc=$(' ');for(key in services[setuparr[modul][0]['services'][i]['service']]['OptionalCharacteristics']){var ocname=services[setuparr[modul][0]['services'][i]['service']]['OptionalCharacteristics'][key];var tagr='';var tagw='';oc.append('
'+ocname+' ('+characteristics[ocname]['ru']+')
'+tagw+'
'+tagr+'
');if(ocname.indexOf('mode.')!==-1){oc.append('
режимы работы (замена значений на указанные)
');var modes='
';var modearr=characteristics[ocname]['modes'];for(var modekey in modearr){modes=modes+''+modearr[modekey]+'';}
modes=modes+'
';oc.append('
'+modes+'
');}}
table.append(rc);table.append(oc);hks.find('.SYS_PlcModuleBlock2').append(table);block.find('.SYS_PlcModuleParamBlock[arr="services"]').append(hks);}}}
break;case"homekit":var block=$('.SYS_PlcModuleTemp[type="'+modul+'"]').clone();block.attr('class','SYS_PlcModule').show();$('.SYS_PlcModuleBlock').append(block);break;case"knx":var block=$('.SYS_PlcModuleTemp[type="'+modul+'"]').clone();block.attr('class','SYS_PlcModule').show();var knx_types=JSON.parse($('.SYS_knx_types').attr('json'));var xiot_types=JSON.parse($('.SYS_xiot_types').attr('json'));$('.SYS_PlcModuleBlock').append(block);for(var group in KnxDevUpdate){if(typeof(setuparr[modul]['0']['group'])==='undefined'){setuparr[modul]['0']['group']=KnxDevUpdate;}
if(typeof(setuparr[modul]['0']['group'][group])==='undefined'){setuparr[modul]['0']['group'][group]=KnxDevUpdate[group];}else{setuparr[modul]['0']['group'][group]['name']=KnxDevUpdate[group]['name'];if(typeof(setuparr[modul]['0']['group'][group]['dev'])==='undefined'){setuparr[modul]['0']['group'][group]['dev']=KnxDevUpdate[group]['dev'];}else{for(var contr in KnxDevUpdate[group]['dev']){if(typeof(setuparr[modul]['0']['group'][group]['dev'][contr])==='undefined'){setuparr[modul]['0']['group'][group]['dev'][contr]={};}
var type=KnxDevUpdate[group]['dev'][contr]['type'];setuparr[modul]['0']['group'][group]['dev'][contr]['typeknx']=type;try{setuparr[modul]['0']['group'][group]['dev'][contr]['typexiot']=knx_types[type]['xiottype'];}catch(err){setuparr[modul]['0']['group'][group]['dev'][contr]['typexiot']='string';}
setuparr[modul]['0']['group'][group]['dev'][contr]['name']=KnxDevUpdate[group]['dev'][contr]['name'];}}}}
var group=setuparr[modul]['0']['group'];SystemLog(group);var seltype="';var selxiot_types="';for(var dev in group){var table=$('
');table.append("
тег
имя
тип KNX
тип XIOT
");var hks=$('
'+group[dev]['name']+'
X
');for(var control in group[dev]['dev']){var checkbox='';table.append('
');}
break;case"devices":DeviceConfig('start',$('.SYS_none'));break;case"sendconfigplc":var result=confirm('Загрузить конфигурацию на контроллер?');if(!result){return;}
$('.SYS_FxUpdateBlock').show();LogicFuncSend={};LogicFuncSend['el']={};LogicFuncSend['module']={};LogicFuncSend['devices']={};LogicFuncSend['uisub']={};LogicFuncSend['tagsub']={};$('div').each(function(){if($(this).attr('UiFunc')){var UiFuncJson=$(this).attr('UiFunc');var UiFuncArr=JSON.parse(UiFuncJson);for(var key in UiFuncArr['el']){delete UiFuncArr['el'][key]['x'];delete UiFuncArr['el'][key]['y'];for(var keyval in UiFuncArr['el'][key]){try{var val=UiFuncArr['el'][key][keyval]
if(val.indexOf('ta:')!==-1){var TagsJson=$(this).attr('tags');var TagsJsonArr=JSON.parse(TagsJson);var tagval=TagsJsonArr['tags'][val.replace('ta:','')];if(tagval!==undefined){UiFuncArr['el'][key][keyval]='ta:'+tagval;if(tagval.indexOf(';')!==-1){tagarr=tagval.split(';');for(var tag in tagarr){LogicFuncSend['tagsub'][tag]={};}}else{LogicFuncSend['tagsub'][tagval]={};}}}
if(val.indexOf('da:')!==-1){var LinkDevJson=$(this).attr('linkdev');var LinkDevArr=JSON.parse(LinkDevJson);var val=LinkDevArr[val.replace('da:','')];if(val!==undefined){UiFuncArr['el'][key][keyval]='da:'+val;}}}catch(err){SystemLog(err);}}
SystemLog('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
SystemLog(LogicFuncSend);}
LogicFuncSend['el'][$(this).attr('id')]=UiFuncArr;}});if($('.SYS_PlcModuleSetup').length>0){var modjson=$('.SYS_PlcModuleSetup').attr('json');LogicFuncSend['module']=JSON.parse(modjson);}
if($('.SYS_Tags').length>0){var tagjson=$('.SYS_Tags').attr('json');LogicFuncSend['tags']=JSON.parse(tagjson);}
LogicFuncSend['devices']=DevicesConf;var Json=JSON.stringify(LogicFuncSend);if(!$('.SYS_LogicFuncSend').length){$('.SYS_Main').append($('
'));}
$('.SYS_LogicFuncSend').attr('json',Json);SendFxLogic(Json);break;case"Prev":if(EditHistory.length>0&&EditHistoryIndex>0){func=elem=EditHistory[EditHistoryIndex-1]['func'];switch(func){case'delete':parent=EditHistory[EditHistoryIndex-1]['parent'];elem=EditHistory[EditHistoryIndex-1]['elem'];$('#'+parent).append(elem);EditHistoryIndex=EditHistoryIndex-1;break;case'style':id=EditHistory[EditHistoryIndex-1]['id'];param=EditHistory[EditHistoryIndex-1]['param'];xcss(id,'all',param);EditHistoryIndex=EditHistoryIndex-1;ParamPrint($('#'+id),func);break;case'html':id=EditHistory[EditHistoryIndex-1]['id'];param=EditHistory[EditHistoryIndex-1]['param'];$('#'+id).html(param);EditHistoryIndex=EditHistoryIndex-1;ParamPrint($('#'+id),func);break;case'attr':id=EditHistory[EditHistoryIndex-1]['id'];param=EditHistory[EditHistoryIndex-1]['param'];attr=EditHistory[EditHistoryIndex-1]['attr'];$('#'+id).attr(attr,param);EditHistoryIndex=EditHistoryIndex-1;ParamPrint($('#'+id),attr);break;}
if(EditHistoryIndex==0){$('.SYS_TopMenuEl[func="Prev"]').attr('disable','1');}
$('.SYS_TopMenuEl[func="Next"]').attr('disable','0');}
break;case"Next":if(EditHistory.length>EditHistoryIndex){EditHistoryIndex=EditHistoryIndex+1;func=EditHistory[EditHistoryIndex-1]['func'];switch(func){case'delete':elem=EditHistory[EditHistoryIndex-1]['elem'];elem.remove();break;case'style':id=EditHistory[EditHistoryIndex-1]['id'];param2=EditHistory[EditHistoryIndex-1]['param2'];xcss(id,'all',param2);ParamPrint($('#'+id),func);break;case'html':id=EditHistory[EditHistoryIndex-1]['id'];param2=EditHistory[EditHistoryIndex-1]['param2'];$('#'+id).html(param2);ParamPrint($('#'+id),func);break;case'attr':id=EditHistory[EditHistoryIndex-1]['id'];param2=EditHistory[EditHistoryIndex-1]['param2'];attr=EditHistory[EditHistoryIndex-1]['attr'];$('#'+id).attr(attr,param2);ParamPrint($('#'+id),attr);break;}
if(EditHistory.length==EditHistoryIndex){$('.SYS_TopMenuEl[func="Next"]').attr('disable','1');}
$('.SYS_TopMenuEl[func="Prev"]').attr('disable','0');}
break;case"SaveHistory":$('.SYS_SaveTimeSelectBlock').toggle();$('.SYS_VersionsBlock').hide();break;case"Save":$('.SYS_Save').show();$('div').removeAttr('opacity');$('div').removeAttr('touchx');$('div').removeAttr('touchy');$('div').removeAttr('ttop');$('div').removeAttr('sys_edit');$('div').removeAttr('sys_select');$('div').removeAttr('data-left');$('div').removeAttr('data-id');$('div').removeAttr('langsel');$('.SYS_EditFonClone').remove();$('div').removeAttr('click-time');$('div').removeAttr('stylesel');$('div[name=S_СТРАНИЦА_НАСТРОЙКИ]').remove();$('div[add=script]').remove();$('.SYS_EditorBlockParam').hide();$('body').append($('.SYS_EditorBlockParam'));$('.SYS_BlockSetting').remove();$('div[name=SYS_Message_Mess]').remove();$('div[name=SYS_Log]').html('');var save=$('.SYS_Main').html();var JsonProject=JSON.stringify(save);var ModuleJson='{}';if(typeof($('.SYS_PlcModuleSetup').attr('json'))!=="undefined"){ModuleJson=$('.SYS_PlcModuleSetup').attr('json');}
var DevicesJson=JSON.stringify(DevicesConfList);var project=localStorage.getItem('project');var jwt=localStorage.getItem('jwt');var arr={"jwt":jwt,"func":"saveproject","project":project};$.post("system/ajax.php",{data:JSON.stringify(arr),jsonproject:JsonProject,modulejson:ModuleJson,devicejson:DevicesJson},function(mess){$('.SYS_Save').hide();if(mess['error']=='no'){localStorage.setItem('savetime',mess['savetime']);localStorage.setItem('savetimesel'+project,mess['savetime']);WindowsReload(false);}else{alert(mess['error']);}
SystemLog(mess);},"json");break;case"User":$('.SYS_UserMenu').toggle();break;}
break;}
break;case"SYS_UserBlockEl":switch(func){case"click":PageFunc=el.attr('func');switch(PageFunc){case"Logout":LogOut();break;case"setowner":if($('.SYS_UserBlockEl[func="owner"]').find('input').length===0){var result=confirm('Указать владельца? Т.к. вы создали проект, при создании были назначены и разработчиком и владельцем. Если вы инсталлятор, укажите владельца. Владельца можно указать только один раз, будьте внимательны при вводе email. У владельца есть права на получение push уведомлений, назначение времени доступа разработчика к проекту и др., подробнее в документации.');if(!result){return;}
$('.SYS_UserBlockEl[func="owner"]').html('');}else{var mail=$('.SYS_UserBlockEl[func="owner"]').find('input').val();var reg=/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;if(reg.test(mail)==false){alert('Введите корректный e-mail');return false;}
var result=confirm('Назначить владельцем '+mail+'?');if(!result){return;}
var jwt=localStorage.getItem('jwt');var project=localStorage.getItem('project');var projectArr=JSON.parse(localStorage.getItem("projectJSON"));var objname=projectArr[project]['name'];var arr={"func":"setowner","mail":mail,"jwt":jwt,"project":project,"objname":objname};$.post("https://xiot.pro/system/ajax.php",{data:JSON.stringify(arr)},function(msg){if(msg['ok']){alert(msg['ok']);$('.SYS_UserBlockEl[func="owner"]').html(msg['mail']);$('.SYS_UserBlockEl[func="setowner"]').hide();}else{alert(msg['error']);$('.SYS_UserBlockEl[func="setowner"]').hide();}},'json');}
break;}
break;}
break;default:ButTouch=false;}
if(func!='hover'&&func!='unhover'){el.attr('touch',func);}}
function EditSizeSave(xid,param){var elget=$('#'+xid);xcss(xid,param,elget.attr(param));if(elget.attr('class').indexOf('SYS_')===-1){ParamPrint(elget,'style');}}
function EditSize(elDag,param,func){var xid=elDag.attr('id');var vp,EMS,unit;if(elDag.attr(param)){vp=elDag.attr(param);}else{vp=xcss(xid,param);elDag.attr(param,vp);}
if(vp&&vp.indexOf('%')===-1){EMS=EditorMeshSize;unit="px";}else{EMS=EditorMeshSize2;unit="%";}
var val=parseInt(vp);switch(func){case'-':val=val-EMS;var inv=1.0/EMS;val=Math.round(val*inv)/inv;elDag.css(param,val+unit);elDag.attr(param,val+unit);break;case'+':val=val+EMS;var inv=1.0/EMS;val=Math.round(val*inv)/inv;elDag.css(param,val+unit);elDag.attr(param,val+unit);break;}
if(EditSizeTimeout[xid+param]){clearTimeout(EditSizeTimeout[xid+param]);}
EditSizeTimeout[xid+param]=setTimeout(EditSizeSave,500,xid,param);}
$(document).keyup(function(event){for(var key in KeyDownInterval){clearInterval(KeyDownInterval[key]);}
KeyDownInterval={};});function EditorShow(){$('body').attr('sys_editor','1');$('body').css('background-color','rgb(200,200,200)');SystemLog("$('.SYS_StructureBlock')");SystemLog($('.SYS_StructureBlock'));$('.SYS_StructureBlock').css('display','block');var editver=localStorage.getItem('editorver');if(editver!=='vxxx'){document.addEventListener('contextmenu',onContextMenu,false);}
$('.SYS_ElEditorBlock').css('display','block');$('.SYS_TopMenu').css('display','block');$('.SYS_DisplaySelectBlock').css('display','block');$('.SYS_StructureProjectBlock').css('display','block');$('.SYS_EditorElements').css('display','block');localStorage.setItem('editor','1');try{StructurePopupView();StructurePageView();}catch(err){SystemLog(err);}
$('.SYS_Main').find('div[add="dinamic"]').remove();$('.SYS_Main').find('div[add="script"]').remove();}
function EditorHide(){$('body').attr('sys_editor','0');$('body').css('background-color','white');$('.SYS_EditorElements').css('display','none');document.removeEventListener('contextmenu',onContextMenu,false);localStorage.setItem('editor','0');$('div').attr('sys_select',"0");$('div').removeAttr('sys_edit');$('div').removeAttr('sys_select');$('.SYS_EditFonClone').remove();EditBlockSelectArr=[];}
var KeyDouwCount=0;var KeyDouwBlock=false;var KeyDouwMax=10;$(document).keydown(function(event){if(KeyDouwBlock!==true){KeyDouwCount=KeyDouwCount+1;if(KeyDouwCount>10){KeyDouwBlock=true;}
switch(event.keyCode){case 113:EditorOpenFlag=true;if($('.SYS_UiFuncBlock').css('display')==='none'){if($('body').attr('sys_editor')!=='1'){EditorOpenCloseFlag=true;EditorShow();$('.SYS_Main').find('div[type="input"],div[type="select"]').each(function(){if($(this).find('.SYS_InputBlock').length===0){$(this).append('
'));break;case"color":var CP=$('').colorPicker();SYS_SelBlock.append(CP);break;case"select":valres=$('.'+select).clone().removeClass(select).addClass('SYS_Select SYS_SelValSelect').attr('value',attrV).css('display','block');valres.val(attrV);SYS_SelBlock.append(valres);break;case"page":valres=$("");$('.SYS_Main').find('div[type="Page"]').each(function(){var name=$(this).attr("name");valres.append("");valres.val(attrV);});SYS_SelBlock.append(valres);break;case"popup":valres=$("");$('.SYS_Main').find('div[type="Popup"]').each(function(){var name=$(this).attr("name");valres.append("");valres.val(attrV);});SYS_SelBlock.append(valres);break;default:valres=$('');SYS_SelBlock.append(valres);}
return valres;}
function onContextMenu(e){e.preventDefault();}
function DisplaySelectFunc(value,styleset=true){localStorage.setItem('DisplaySelect',value);var w=$('.SYS_DisplaySelect').find('option[value="'+value+'"]').attr('w');var h=$('.SYS_DisplaySelect').find('option[value="'+value+'"]').attr('h');var styles=$('.SYS_DisplaySelect').find('option[value="'+value+'"]').attr('styles');$('html').css({'width':w,'height':h});$('.SYS_DisplaySelect').val(value);if(styleset){$('div[style'+styles+'!=undefined]').each(function(){StyleApply($(this),styles,true);});}
var page=$('div[type="Page"][select="1"]');if(page.length>0){setTimeout(openpage,100,page,'DisplaySelectFunc');}}
window.addEventListener('appinstalled',(evt)=>{app.logEvent('a2hs','installed');});if(window.matchMedia('(display-mode: standalone)').matches){SystemLog('display-mode is standalone');}else{SystemLog('NONE display-mode is standalone');}
$('.SYS_DisplaySelect').change(function(){localStorage.setItem('DisplaySelect',$(this).val());DisplaySelectFunc($(this).val());ReloadParamPrint('style');});if(localStorage.getItem('ElEditorShow-function')=='none'){$('.SYS_ElEditor[edit="function"]').hide();$('.SYS_ElEditorName[edit="function"]').find('.SYS_ElEditorOpenStatus').css('transform','rotate(0deg)');}
if(localStorage.getItem('ElEditorShow-attr')=='none'){$('.SYS_ElEditor[edit="attr"]').hide();$('.SYS_ElEditorName[edit="attr"]').find('.SYS_ElEditorOpenStatus').css('transform','rotate(0deg)');}
if(localStorage.getItem('ElEditorShow-html')=='none'){$('.SYS_ElEditor[edit="html"]').hide();$('.SYS_ElEditorName[edit="html"]').find('.SYS_ElEditorOpenStatus').css('transform','rotate(0deg)');}
if(localStorage.getItem('ElEditorShow-style')=='none'){$('.SYS_ElEditor[edit="style"]').hide();$('.SYS_ElEditorName[edit="style"]').find('.SYS_ElEditorOpenStatus').css('transform','rotate(0deg)');}
if(localStorage.getItem('ElEditorShow-style3D')=='none'){$('.SYS_ElEditor[edit="style3D"]').hide();$('.SYS_ElEditorName[edit="style3D"]').find('.SYS_ElEditorOpenStatus').css('transform','rotate(0deg)');}
if(localStorage.getItem('ElEditorShow-cam3d')=='none'){$('.SYS_ElEditor[edit="cam3d"]').hide();$('.SYS_ElEditorName[edit="cam3d"]').find('.SYS_ElEditorOpenStatus').css('transform','rotate(0deg)');}
if(localStorage.getItem('ElEditorShow-project3d')=='none'){$('.SYS_ElEditor[edit="project3d"]').hide();$('.SYS_ElEditorName[edit="project3d"]').find('.SYS_ElEditorOpenStatus').css('transform','rotate(0deg)');}
if(localStorage.getItem('ElEditorShow-project')=='none'){$('.SYS_StructureProjectCont').hide();$('.SYS_StructureProjectBlock').find('.SYS_ElEditorButBlock').hide();$('.SYS_StructureProjectName').find('.SYS_ElEditorOpenStatus').css('transform','rotate(0deg)');}
if(localStorage.getItem('ElEditorShow-page')=='none'){$('.SYS_ElEditorButBlock[type="fpage"]').hide();$('.SYS_StructurePageBlock').hide();$('.SYS_StructureBlockPageName').find('.SYS_ElEditorOpenStatus').css('transform','rotate(0deg)');}
if(localStorage.getItem('ElEditorShow-popup')=='none'){$('.SYS_ElEditorButBlock[type="fpopup"]').hide();$('.SYS_StructurePopupBlock').hide();$('.SYS_StructureBlockPopupName').find('.SYS_ElEditorOpenStatus').css('transform','rotate(0deg)');}
if(localStorage.getItem('ElEditorShow-dom')=='none'){$('.SYS_ElEditorButBlock[type="fdom"]').hide();$('.SYS_DomCont').hide();$('.SYS_DomBlockName').find('.SYS_ElEditorOpenStatus').css('transform','rotate(0deg)');}
ReloadParamPrint('style');if(localStorage.getItem('editor')=='1'){EditorShow();EditorOpenCloseFlag=true;}
$('.SYS_ImageBaseMenuEl[func="load"]').find('input').on('change',function(){var files=this.files;if(typeof files=='undefined')return;var project=localStorage.getItem('project');var data=new FormData();$.each(files,function(key,value){data.append(key,value);});data.append('PROJECT',project);data.append('my_file_upload',1);$.ajax({url:'login/loadimage.php',type:'POST',data:data,cache:false,dataType:'json',processData:false,contentType:false,success:function(respond,status,jqXHR){if(typeof respond.error==='undefined'){var file=respond.files;var img='project/'+project+'/images/'+file;var SYS_ImageBaseEl=$("");$('.SYS_ImageBaseElBlock[dir="текущий проект"]').append(SYS_ImageBaseEl);}else{alert('ОШИБКА: '+respond.error);}},error:function(jqXHR,status,errorThrown){alert('ОШИБКА загрузки на сервер: '+status,jqXHR);}});});var files3D;$('.SYS_Load3dProject').on('change',function(){files3D=this.files;});$('.SYS_Load3dProjectSubmit').on('click',function(event){if(typeof files3D=='undefined')return;var project=localStorage.getItem('project');var data=new FormData();var elid=$('.SYS_ElEditor').attr('xid');var file=document.getElementById('input3d').files[0];data.append('PROJECT',project);data.append('ELID',elid);data.append('file',file);$('.SYS_Load3dProjectProgress').show();$('.SYS_Load3dProjectProgressPersent').html('загружаю...');$.ajax({url:'system/Project3dLoad.php',type:'POST',contentType:false,processData:false,data:data,dataType:'json',xhr:function(){var xhr=$.ajaxSettings.xhr();xhr.upload.addEventListener('progress',function(evt){if(evt.lengthComputable){var percentComplete=Math.ceil(evt.loaded/evt.total*100);$('.SYS_Load3dProjectProgressFon').css('width',percentComplete+'%');$('.SYS_Load3dProjectProgressPersent').html(percentComplete+'%');SystemLog('Загружено '+percentComplete+'%');if(percentComplete==100){$('.SYS_Load3dProjectProgressPersent').html('файл загружен, сохрани проект и обнови страницу');}}},false);return xhr;},success:function(json){if(json){if(json['res']=='ok'){$('#'+elid).attr('prj3d',json['name']);}}}});});function HtmlEditorStart(elem){$('.SYS_ElEditorHtml').find('.SYS_ElEditorParam[type="dinamic"]').remove();var htmlsel=elem.attr('htmlsel');$('.SYS_ElEditorHtmlsel').val(htmlsel);if(typeof(htmlsel)=="undefined"){elem.attr('htmlsel','0');}
var type=elem.attr("type");$('.SYS_ElEditorHtml').hide();$('.SYS_ElEditorHtml[sel="'+type+'"]').show();switch(type){case'3D':var xid=elem.attr('id');$('.SYS_ElEditorHtml[sel="'+type+'"]').attr('xid',xid);Cam3DEditorStart(xid);break;case'text':var data='';if(typeof(elem.attr('langsel'))==="undefined"){if(localStorage.getItem('lang')){elem.attr('langsel',localStorage.getItem('lang'));}else{elem.attr('langsel','ru');}}
$('.SYS_ElEditorLangsel').val(elem.attr('langsel'));if(typeof(elem.attr('html'+htmlsel+elem.attr('langsel')))!=='undefined'){if(elem.attr('html'+htmlsel+elem.attr('langsel'))!==''){data=elem.attr('html'+htmlsel+elem.attr('langsel'));}}
if(data===''){if(typeof(elem.attr('html'+htmlsel))!=='undefined'){if(elem.attr('html'+htmlsel)!==''){var data=elem.attr('html'+htmlsel);}}}
if(data===''){if(typeof(elem.attr('html'))!=='undefined'){if(elem.attr('html')!==''){var data=elem.attr('html');elem.attr('html'+htmlsel+elem.attr('langsel'),data);}}}
$('.SYS_ElEditorHtml[sel="text"]').find('textarea').val(data);break;case'svg':var data=elem.find('.SYS_HtmlSel[sel="'+htmlsel+'"]').html();$('.SYS_ElEditorBut[func="svg"]').html(data);break;case'select':if(elem.attr('param')!==undefined){var param=JSON.parse(elem.attr('param'));if(param['select_count']!==undefined){var eblock=$('.SYS_ElEditorHtml');var options="";for(var i=1;i<=param['select_count'];i++){var pblock=$('
');var key='';var val='';if(param['key'+i]!==undefined){key=param['key'+i];}
if(param['val'+i]!==undefined){val=param['val'+i];}
var pname=$('
ключ '+i+'
');var pval=$('');var pname2=$('
значение '+i+'
');var pval2=$('');pblock.append(pname);pblock.append(pval);pblock.append(pname2);pblock.append(pval2);eblock.append(pblock);options=options+'';}
elem.find('select').html(options);}}
break;case'HistoryTable':var listcid=History_constructor.getlistcid();var sel=$('.SYS_ElEditorHtml[sel="'+type+'"]').find('select[func="HistoryCid"]');sel.html('');for(var key in listcid){sel.append('');}
break;}
$('.SYS_ElEditorHtml[sel="'+type+'"]').find('.SYS_ElEditorParamVal').each(function(){$(this).val(0);});if(elem.attr('param')!==undefined){var param=JSON.parse(elem.attr('param'));$('.SYS_ElEditorHtml[sel="'+type+'"]').find('.SYS_ElEditorParamVal').each(function(){var func=$(this).attr('func');if(param[func]!==undefined){switch($(this).attr('type')){case'checkbox':if(param[func]==='1'){$(this).attr('checked','checked');}else{$(this).removeAttr('checked');}
break;default:$(this).val(param[func]);}}});}}
function HtmlEditorSave(sel,val){switch(sel){case'text':var htmlsel=ElementSelect.attr('htmlsel');var langsel='ru';if(typeof(ElementSelect.attr('langsel'))!=="undefined"){var langsel=ElementSelect.attr('langsel');}
ElementSelect.attr('html'+htmlsel+langsel,val);ElementSelect.html(val);break;}}
function FuncEditorStart(xid,funcel){var UiFuncJson=$('#'+xid).attr('UiFunc');if(UiFuncJson){var UiFuncArr=JSON.parse(UiFuncJson);var size=Object.keys(UiFuncArr['el']).length;var text="элементов - "+size;$('.SYS_ElEditorName[edit="'+funcel+'"]').css('color','#C9FFBD');$('.SYS_ElEditorFxUiBlock').attr('xid',xid).html(text);}else{$('.SYS_ElEditorName[edit="'+funcel+'"]').css('color','white');$('.SYS_ElEditorFxUiBlock').attr('xid',xid).html('нет логики');}}
function FxLogicEditorStart(xid,funcel){var UiFuncJson=$('#'+xid).attr('logicfunc');if(UiFuncJson){var UiFuncArr=JSON.parse(UiFuncJson);var size=Object.keys(UiFuncArr['el']).length;var text="элементов - "+size;$('.SYS_ElEditorName[edit="'+funcel+'"]').css('color','#C9FFBD');$('.SYS_ElEditorFxLogicBlock').attr('xid',xid).html(text);if($('#'+xid).attr('FxLogicDisable')=='1'){$('.SYS_ElEditorBut[func="disablefxlogic"]').css('fill','red');}else{$('.SYS_ElEditorBut[func="disablefxlogic"]').css('fill','');}}else{$('.SYS_ElEditorName[edit="'+funcel+'"]').css('color','white');$('.SYS_ElEditorFxLogicBlock').attr('xid',xid).html('нет логики');$('.SYS_ElEditorBut[func="disablefxlogic"]').css('fill','');}}
function NameEditorStart(xid,funcel){var data=$('#'+xid).attr(funcel);if(data){$('.SYS_ElEditor[edit="'+funcel+'"]').attr('xid',xid).find('textarea').val(data);}else{$('.SYS_ElEditor[edit="'+funcel+'"]').attr('xid',xid).find('textarea').val('');}}
function NameEditorSave(xid,funcel){var data=$('.SYS_ElEditor[edit="'+funcel+'"]').find('textarea').val();var param=$('#'+xid).attr(funcel);$('#'+xid).attr(funcel,data);HistoryEditorFunc($('#'+xid),'attr',param,data,funcel);}
function AttrEditorStart(xid,funcel){$('.SYS_ElEditorName[edit="'+funcel+'"]').css('display','block');$('.SYS_ElEditor[edit="'+funcel+'"]').attr('xid',xid);$('.SYS_EditorBlock[edit="'+funcel+'"]').remove();$('.SYS_ElEditor[edit="'+funcel+'"]').append('
');var ArrJson=$('#'+xid).attr('Attr');if(ArrJson){var ArrAttr=JSON.parse(ArrJson);var EditorBlockAttr=$('.SYS_EditorBlock[edit="'+funcel+'"]');EditorBlockAttr.html('');for(var attr in ArrAttr['attr']){if(attr.indexOf('__')){var attrBlock=$('
X
');}else{var attrBlock=$('
');}
EditorBlockAttr.append(attrBlock);}}}
function AttrEditorSave(xid,AttrArrJson){$('#'+xid).attr('Attr',AttrArrJson);AttrEditorStart(xid,'attr')}
function AttrEditorAdd(xid){var ArrJson=$('#'+xid).attr('Attr');if(ArrJson){var ArrAttr=JSON.parse(ArrJson);var l=Object.keys(ArrAttr['attr']).length;ArrAttr['attr']['атрибут'+l]='значение';}else{var ArrAttr={'attr':{'атрибут':'значение'}}}
var AttrArrJson=JSON.stringify(ArrAttr);AttrEditorSave(xid,AttrArrJson);}
function TagsEditorStart(xid,funcel){$('.SYS_ElEditorName[edit="'+funcel+'"]').css('display','block');$('.SYS_ElEditor[edit="'+funcel+'"]').attr('xid',xid);$('.SYS_EditorBlock[edit="'+funcel+'"]').remove();$('.SYS_ElEditor[edit="'+funcel+'"]').append('
');var TagsJson=$('#'+xid).attr('tags');if(TagsJson){var ArrTags=JSON.parse(TagsJson);var EditorBlockTags=$('.SYS_EditorBlock[edit="'+funcel+'"]');EditorBlockTags.html('');for(var tag in ArrTags['tags']){var tagBlock=$('
X
');EditorBlockTags.append(tagBlock);}}}
function TagsEditorSave(xid,tarrJson){$('#'+xid).attr('tags',tarrJson);TagsEditorStart(xid,'tags')}
function TagsEditorAdd(xid){var TagsJson=$('#'+xid).attr('tags');if(TagsJson){var ArrTags=JSON.parse(TagsJson);var l=Object.keys(ArrTags['tags']).length;ArrTags['tags']['тэг'+l]='';}else{var ArrTags={'tags':{'тэг':''}}}
var TagsArrJson=JSON.stringify(ArrTags);TagsEditorSave(xid,TagsArrJson);}
function LinkDevEditorStart(xid,funcel){$('.SYS_ElEditorName[edit="'+funcel+'"]').css('display','block');$('.SYS_ElEditor[edit="'+funcel+'"]').attr('xid',xid);$('.SYS_EditorBlock[edit="'+funcel+'"]').remove();$('.SYS_ElEditor[edit="'+funcel+'"]').append('
');var LinkDevJson=$('#'+xid).attr('linkdev');if(LinkDevJson){var ArrLinkDev=JSON.parse(LinkDevJson);var EditorBlockLinkDev=$('.SYS_EditorBlock[edit="'+funcel+'"]');EditorBlockLinkDev.html('');for(var namelink in ArrLinkDev){var textlinkdev='';if(ArrLinkDev[namelink].indexOf('/')!==-1){try{var DevArr=ArrLinkDev[namelink].split('/');var type=DevArr[0];switch(type){case'home':textlinkdev=DevicesConf['home']['name']+'-'+DevArr[2];break;case'floor':var floorid=DevArr[1];textlinkdev=FloorsConfList[floorid]['name']+'-'+DevArr[2];break;case'room':var roomid=DevArr[1];textlinkdev=RoomsConfList[roomid]['floorname']+'-'+RoomsConfList[roomid]['name']+'-'+DevArr[2];break;case'dev':var devid=DevArr[1];textlinkdev=DevicesConfList[devid]['floorname']+'-'+DevicesConfList[devid]['roomname']+'-'+DevicesConfList[devid]['name']+'-'+DevArr[2];break;case'logic':var lid=DevArr[1];var type=DevicesConf['logic'][lid]['type'];var param=XiotLogic[type]['Param'][DevArr[2]]['name'];textlinkdev=DevicesConf['logic'][lid]['Name']+'-'+param;break;}}catch(err){SystemLog(err);}}
var LinkDevBlock=$('
X
');EditorBlockLinkDev.append(LinkDevBlock);}}}
function LinkDevEditorSave(xid,LinkDevArrJson){$('#'+xid).attr('linkdev',LinkDevArrJson);LinkDevEditorStart(xid,'linkdev')}
function LinkDevEditorAdd(xid){var LinkDevJson=$('#'+xid).attr('linkdev');if(LinkDevJson){var ArrLinkDev=JSON.parse(LinkDevJson);var l=Object.keys(ArrLinkDev).length;if(typeof(ArrLinkDev['[характеристика] '+l])==="undefined"){ArrLinkDev['[характеристика] '+l]='';}else{ArrLinkDev['[характеристика] '+(l+1)]='';}}else{var ArrLinkDev={'характеристика':''}}
var LinkDevJson=JSON.stringify(ArrLinkDev);SystemLog(LinkDevJson);LinkDevEditorSave(xid,LinkDevJson);}
function Cam3DEditorStart(xid){var ArrJson=$('#'+xid).attr('cam3d');if(ArrJson){var ArrCam3D=JSON.parse(ArrJson);var ElEditor3DCamSetup=$('.SYS_ElEditor3DCamSetup');ElEditor3DCamSetup.html('');for(var cam in ArrCam3D['cams']){var name=ArrCam3D['cams'][cam]['name'];var attrBlock=$('.SYS_EditorBlock3dcamTemp').clone();attrBlock.removeClass('SYS_EditorBlock3dcamTemp').addClass('SYS_EditorBlock3dcam').css('display','block');attrBlock.find('input').val(name);attrBlock.attr('cam',cam);ElEditor3DCamSetup.append(attrBlock);}}}
function Project3DEditorStart(xid,funcel){$('.SYS_ElEditorName[edit="'+funcel+'"]').css('display','block');$('.SYS_ElEditor[edit="'+funcel+'"]').attr('xid',xid);}
function Cam3DEditorSave(xid,Cam3DArrJson){$('#'+xid).attr('cam3d',Cam3DArrJson);Cam3DEditorStart(xid,'cam3d');}
function Cam3dEditorAdd(xid){var ArrJson=$('#'+xid).attr('cam3d');if(ArrJson){var ArrCam3D=JSON.parse(ArrJson);var index=ArrCam3D['index']+1;ArrCam3D['index']=index;ArrCam3D['cams']['cam'+index]={'name':'новая камера','position':{'CameraPosX':camera3D.position.x,'CameraPosY':camera3D.position.y,'CameraPosZ':camera3D.position.z,'ControlTargetX':controls3D.target.x,'ControlTargetY':controls3D.target.y,'ControlTargetZ':controls3D.target.z}}}else{var ArrCam3D={'index':1,'cams':{'cam1':{'name':'камера1','position':{'CameraPosX':camera3D.position.x,'CameraPosY':camera3D.position.y,'CameraPosZ':camera3D.position.z,'ControlTargetX':controls3D.target.x,'ControlTargetY':controls3D.target.y,'ControlTargetZ':controls3D.target.z}}}}}
var ArrCam3DJson=JSON.stringify(ArrCam3D);Cam3DEditorSave(xid,ArrCam3DJson);}
function ElEditorStart(xid,funcel,el){var data='';$('.SYS_ElEditorName[edit="'+funcel+'"]').css('display','block');$('.SYS_EditorBlock[edit="'+funcel+'"]').html('');switch(funcel){case'style':var stylesel=$('.SYS_ElEditorStylesel').val();var stylesel=el.attr('stylesel');$('.SYS_ElEditorStylesel').val(stylesel);if(typeof(stylesel)==="undefined"){stylesel='all';el.attr('stylesel',stylesel);}
var data=el.attr('style'+stylesel);break;default:if(funcel){var data=$('#'+xid).attr(funcel);}}
$('.SYS_ElEditor[edit="'+funcel+'"]').attr('xid',xid);if(data){$('.SYS_EditorBlock[edit="'+funcel+'"]').remove();$('.SYS_ElEditor[edit="'+funcel+'"]').append('
');$('.SYS_ElEditorName[edit="'+funcel+'"]').css('color','#C9FFBD');var arrcss=data.split(';');for(var i=0;i'));SYS_SelBlock.append($(''));$('.SYS_EditorBlock[edit="'+funcel+'"]').append(SYS_SelBlock);}}else{$('.SYS_ElEditorName[edit="'+funcel+'"]').css('color','white');}}
function ElEditorSave(xid,funcel){var func='';$('.SYS_ElEditor[edit="'+funcel+'"').find('.SYS_EditorBlock').find('.SYS_SelBlock').each(function(){var str='';$(this).find('.SYS_Select').each(function(){var val=$(this).val();str=str+val+':';});str=str.substring(0,str.length-1);func=func+str+';';});switch(funcel){case'style':var el=$('#'+xid);var stylesel=el.attr('stylesel');var SelBlock=$('.SYS_EditorBlock[edit="style"]').find('.SYS_SelBlock');var newcss='';SelBlock.each(function(index){var param=$(this).find('.SYS_Select:first').val();var val=$(this).find('.SYS_Select').eq(1).val();newcss=newcss+param+":"+val+";";});el.attr('style'+stylesel,newcss);StyleApply(el,stylesel,true);break;}}
var _global=typeof window==='object'&&window.window===window?window:typeof self==='object'&&self.self===self?self:typeof global==='object'&&global.global===global?global:this
function bom(blob,opts){if(typeof opts==='undefined')opts={autoBom:false}
else if(typeof opts!=='object'){console.warn('Depricated: Expected third argument to be a object')
opts={autoBom:!opts}}
if(opts.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)){return new Blob([String.fromCharCode(0xFEFF),blob],{type:blob.type})}
return blob}
function download(url,name,opts){var xhr=new XMLHttpRequest()
xhr.open('GET',url)
xhr.responseType='blob'
xhr.onload=function(){saveAs(xhr.response,name,opts)}
xhr.onerror=function(){console.error('could not download file')}
xhr.send()}
function corsEnabled(url){var xhr=new XMLHttpRequest()
xhr.open('HEAD',url,false)
xhr.send()
return xhr.status>=200&&xhr.status<=299}
function clickel(node){try{node.dispatchEvent(new MouseEvent('click'))}catch(e){var evt=document.createEvent('MouseEvents')
evt.initMouseEvent('click',true,true,window,0,0,0,80,20,false,false,false,false,0,null)
node.dispatchEvent(evt)}}
var saveAs=_global.saveAs||(typeof window!=='object'||window!==_global)?function saveAs(){}:'download'in HTMLAnchorElement.prototype?function saveAs(blob,name,opts){var URL=_global.URL||_global.webkitURL
var a=document.createElement('a')
name=name||blob.name||'download'
a.download=name
a.rel='noopener'
if(typeof blob==='string'){a.href=blob
if(a.origin!==location.origin){corsEnabled(a.href)?download(blob,name,opts):clickel(a,a.target='_blank')}else{clickel(a)}}else{a.href=URL.createObjectURL(blob)
setTimeout(function(){URL.revokeObjectURL(a.href)},4E4)
setTimeout(function(){clickel(a)},0)}}:'msSaveOrOpenBlob'in navigator?function saveAs(blob,name,opts){name=name||blob.name||'download'
if(typeof blob==='string'){if(corsEnabled(blob)){download(blob,name,opts)}else{var a=document.createElement('a')
a.href=blob
a.target='_blank'
setTimeout(function(){clickel(a)})}}else{navigator.msSaveOrOpenBlob(bom(blob,opts),name)}}:function saveAs(blob,name,opts,popup){popup=popup||open('','_blank')
if(popup){popup.document.title=popup.document.body.innerText='downloading...'}
if(typeof blob==='string')return download(blob,name,opts)
var force=blob.type==='application/octet-stream'
var isSafari=/constructor/i.test(_global.HTMLElement)||_global.safari
var isChromeIOS=/CriOS\/[\d]+/.test(navigator.userAgent)
if((isChromeIOS||(force&&isSafari))&&typeof FileReader==='object'){var reader=new FileReader()
reader.onloadend=function(){var url=reader.result
url=isChromeIOS?url:url.replace(/^data:[^;]*;/,'data:attachment/file;')
if(popup)popup.location.href=url
else location=url
popup=null}
reader.readAsDataURL(blob)}else{var URL=_global.URL||_global.webkitURL
var url=URL.createObjectURL(blob)
if(popup)popup.location=url
else location.href=url
popup=null
setTimeout(function(){URL.revokeObjectURL(url)},4E4)}}
_global.saveAs=saveAs.saveAs=saveAs
if(typeof module!=='undefined'){module.exports=saveAs;}
$(document).ready(function(){try{Message_constructor=new MessageSetupClass();}catch(err){alert('Ошибка Message_constructor - '+err);}
try{History_constructor=new HistorySetupClass();}catch(err){alert('Ошибка History_constructor - '+err);}
if(localStorage.getItem("UiId")==undefined||localStorage.getItem("UiId")==null||localStorage.getItem("UiId")==""){UiId=newid(10);localStorage.setItem('UiId',UiId);}else{UiId=localStorage.getItem("UiId");}
RgbCanvasCreate();if(EditorOpenFlag===true){$(window).on("beforeunload",function(){return"Вы уверены, что хотите покинуть страницу?";});$(document).on("submit","form",function(event){$(window).off("beforeunload");});if($('.SYS_PageSystem').length>0){$('.SYS_PageSystem').remove();}}
var projectArr=JSON.parse(localStorage.getItem("projectJSON"));var project="";for(var prj in projectArr){if(localStorage.getItem("project")==undefined||localStorage.getItem("project")==null||localStorage.getItem("project")==""){localStorage.setItem('project',prj);project=prj;}else{project=localStorage.getItem("project");if(projectArr[project]==undefined||projectArr[project]==null||projectArr[project]==""){localStorage.setItem('project',prj);project=prj;}}
var select='0';if(prj==project){select='1';$('.SYS_StructureProjectName').find('span').html('Проект - '+projectArr[prj]['name']);}else{$('.SYS_PageSystemPrjList').append('
'+projectArr[prj]['name']+'
');}
$('.SYS_StructureProjectCont').append('
'+projectArr[prj]['name']+'
');}
var page=$('.SYS_Main').find('div[type="Page"][select="1"]');CurrentPage=page;PreviorPage=CurrentPage;TagSelectCreate();if(localStorage.getItem('editor')=='1'){StructPrint(page,$('