Your IP : 3.144.157.48
{"version":3,"sources":["utils.js"],"names":["jQuery","ajaxq","queue","options","document","q","r","optionsCopy","o","originalCompleteCallback","complete","request","status","shift","length","ajax","len","push","abort","templates","messages","banner","toolbar","tabCont","tabContMap","listPager","tabContEmpty","tabContDashBoard","dashTaskbar","button","buttons","tabContForm","formItemCaptcha","formItemInput","formItemFile","passwdCheck","confirmCheck","formItemPassword","formItemInputWithZoom","formItemInputWithZoom1","formItemTextarea","formItemCheckbox","formItemHtmldata","formItemSelectList","formItemSelect","formItemMSelect","formItemRadio","formItemRadioImg","formItemLink","formItemExtrBtn","formItemDesk","formItemDeskRadio","formItemTextData","formItemLabel","filterItemLabel","formItemSlider","formItemSliderEditInList","formItemTicketMsg","formItemTicket","formItemSelectAutocomplete","formItemFrame","formItemDateTime","formPageTitle","formItemMgrview","formPageWrapper","filterWrapper","filterItem","filterRow","filterSavedItem","formItemRowDesc","formItemRow","formItemFullWidthRow","formItemFormWidthRow","formItemRowWithoutLabel","formItemRowHidden","formItemRowTextdata","formPlainHint","tabLi","tabChld","progressBar","reportBand","emptyBandOverlay","reportBandDash","fatalError","editinListForm","hintList","formListFilterWrapper","formListFilter","formListContent","formListBlocksContent","formListItemRow","tip","usefulLinks","infoList","fatalAlert","msgTemplList","t","doT","template","vSettings","$","extend","templateSettings","varname","formPlainHintRow","EventMgr","hooks","isTouch","navigator","userAgent","match","touchEvents","touchData","bind","event","callback","events","split","l","on","one","data","oone","object","obind","touch","eventMgr","cb","innerSelect","touchStart","touchEnd","outObject","onwithdata","customEvent","targetEvent","targetCallback","withData","onwithdataHandler","e","preventDefault","selector","em","touchMove","apply","eventData","self","tabId","getAttribute","elemId","window","off","unbind","trigger","delay","setTimeout","console","log","String","triggerStack","triggerStackHandler","addToTriggerStack","func","priority","sort","prioritySort","i","a","b","addHook","deleteHook","ar","slice","ScrollHandler","shiftY","shiftX","bigObj","curObj","objId","contId","obj","cont","sh","vh","sch","moveObj","down","isIe","execScript","up","left","right","intId","blockEvent","stopPropagation","cancelBubble","returnValue","mouseUp","onmouseup","ontouchend","lastValues","setPosition","newPosition","sTop","scrollTop","middle","top","bottom","style","Math","round","delta","marginTop","sw","body","querySelector","CustomEvent","id","dispatchEvent","setPositionHor","sLeft","scrollLeft","vw","schH","hSh","deltaH","marginLeft","hSw","wheel","wheelDelta","currentPosition","direction","STEP","detail","target","clientHeight","scrollHeight","nodeName","parseFloat","scrollMove","stopPos","mDelta","magicNumber","clearInterval","scrollMoveHoriz","moveUp","doc","timeOut","undefined","documentElement","ontouchcancel","setInterval","moveUpHandler","replace","moveLeftHandler","moveLeft","moveDown","moveDownHandler","moveRightHandler","moveRight","cancelScroll","display","vstatus","overflowY","hs","paddingRight","removeClass","parentNode","onmousewheel","bb","onmousedown","tb","onkeydown","contWheelEvent","removeEventListener","cancelScrollHoriz","overflowX","hstatus","hss","paddingBottom","hBb","hTb","updateFunc","key","scrollCorrect","swStyle","tmpHeight","curObjUp","visibleHeight","scrollTrackHeight","deltaTop","offsetTop","allHeight","offsetHeight","deltaAV","scrollHandlerHeight","height","className","indexOf","addEventListener","parseInt","updateFuncHoriz","aw","offsetWidth","width","update","getSize","getSizeHor","visibleWidth","forceMoveSelectItem","boxHeight","elemHeight","mTRaw","mT","df","TABKEY","forceMove","checkTabKeyUp","codeKey","which","keyCode","srcElement","parents","attr","animate","opts","start","Date","timer","progress","duration","step","animateMove","to","from","newPos","pow","scrollTo","offset","raw","drop","onmousemove","tDrop","ontouchmove","move","clientY","moveHor","clientX","tMove","touches","pageY","tMoveHor","pageX","drag","dragHor","tDrag","tDragHor","scrollTrackMDHandler","sbh","getElementById","offsetY","offsetX","offsetST","horizScroll","borderTop","borderBottom","borderLeft","borderRight","bindEvent","ontouchstart","contElem","onkeyup","buildScroll","position","divId","trt","st","ln","lns","trb","createElement","setAttribute","appendChild","buildHorizScroll","attach","detach","keyVar","keyVar1","hasOwnProperty"],"mappings":"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","file":"utils.js","sourcesContent":["/**\r\n * jQuery.ajaxq\r\n * queue ajax requests\r\n * @param {string} queue Name of queue\r\n * @param {object} options\r\n */\r\njQuery.ajaxq = function(queue, options) {\r\n 'use strict';\r\n // Initialize storage for request queues if it's not initialized yet\r\n if (typeof document.ajaxq === 'undefined') {\r\n document.ajaxq = { q: {}, r: null};\r\n }\r\n\r\n // Initialize current queue if it's not initialized yet\r\n if (typeof document.ajaxq.q[queue] === 'undefined') {\r\n document.ajaxq.q[queue] = [];\r\n }\r\n // Request settings are given, enqueue the new request\r\n if (typeof options !== 'undefined') {\r\n // Copy the original options, because options.complete is going to be overridden\r\n\r\n var optionsCopy = {};\r\n /* jslint forin:true */\r\n for (var o in options) {\r\n optionsCopy[o] = options[o];\r\n }\r\n options = optionsCopy;\r\n\r\n // Override the original callback\r\n\r\n var originalCompleteCallback = options.complete;\r\n\r\n options.complete = function(request, status) {\r\n // Dequeue the current request\r\n document.ajaxq.q[queue].shift();\r\n document.ajaxq.r = null;\r\n\r\n // Run the original callback\r\n if (originalCompleteCallback) {\r\n originalCompleteCallback(request, status);\r\n }\r\n\r\n // Run the next request from the queue\r\n if (document.ajaxq.q[queue].length > 0) {\r\n document.ajaxq.r = jQuery.ajax(document.ajaxq.q[queue][0]);\r\n }\r\n if (document.ajaxq.q[queue].length === 0) {\r\n delete document.ajaxq.q[queue];\r\n }\r\n };\r\n if (queue !== 'multiload') {\r\n var len = document.ajaxq.q[queue].length;\r\n if (len <= 1) {\r\n document.ajaxq.q[queue].push(options);\r\n } else {\r\n document.ajaxq.q[queue][1] = options;\r\n }\r\n //ставим в очередь\r\n } else {\r\n // Enqueue the request\r\n document.ajaxq.q[queue].push(options);\r\n }\r\n\r\n // Also, if no request is currently running, start it\r\n if (document.ajaxq.q[queue].length === 1) {\r\n document.ajaxq.r = jQuery.ajax(options);\r\n }\r\n // No request settings are given, stop current request and clear the queue\r\n } else {\r\n if (document.ajaxq.r) {\r\n document.ajaxq.r.abort();\r\n document.ajaxq.r = null;\r\n }\r\n\r\n delete document.ajaxq.q[queue];\r\n }\r\n};\r\n\n\nvar templates = (function() {\n 'use strict';\n // List Template\n\n var messages =\n '{{~it.message :value :index }}' +\n '<div class=\"b-message i-message\">' +\n '<div class=\"b-message__inner b-message__inner_status_{{=value.status}}\" id=\"{{=value.id}}\">' +\n '<div class=\"b-message__text {{?value.warning}}b-message__text_warning{{?}}\">{{=value.text}}</div>' +\n '{{?value.ref}}' +\n '<div class=\"l-message__link\">' +\n '<a href=\"{{=value.ref}}\" data-href=\"{{=value.ref}}\" target=\"_blank\" class=\"i-message__more-link {{=value.classes}}\">{{=value.refText}}</a>' +\n '</div>' +\n '{{?}}' +\n '<div class=\"l-message__link\">' +\n '<a href=\"#\" data-href=\"{{=value.dismissRef}}\" class=\"i-message__dismiss-link\" data-mn=\"dismiss\">{{=value.dismiss}}</a>' +\n '</div>' +\n '</div>' +\n '<div class=\"b-message__triangle b-message__triangle_status_{{=value.status}}\"></div>' +\n '</div>' +\n '{{~}}';\n\n //Banner template\n var banner =\n '<div class=\"b-message i-message\">' +\n '<div class=\"b-message__inner b-message__inner_status_{{=it.message.status}}\" id=\"{{=it.message.id}}\">' +\n '<div class=\"b-message__text\">{{=it.message.text}}</div>' +\n '{{?it.message.ref}}' +\n '<div class=\"l-message__link\">' +\n '<a href=\"{{=it.message.ref}}\" data-href=\"{{=it.message.ref}}\" target=\"_blank\" class=\"i-message__more-link {{=it.message.classes}}\">{{=it.message.refText}}</a>' +\n '</div>' +\n '{{?}}' +\n '<div class=\"l-message__link\">' +\n '<a href=\"#\" data-href=\"{{=it.message.dismissRef}}\" class=\"i-message__dismiss-link\" data-mn=\"dismiss\">{{=it.message.dismiss}}</a>' +\n '</div>' +\n '</div>' +\n '<div class=\"b-message__triangle b-message__triangle_status_{{=it.message.status}}\"></div>' +\n '</div>';\n\n var toolbar = '{{?it.btng && it.btng.length > 0}}' +\n '<div class=\"toolbar\" {{=it.plidAttr}} {{=it.convertAttr}} id=\"toolbar-{{=it.id}}\">' +\n '<div class=\"toolbar__btn-move-wr\">' +\n '<div class=\"toolbar__btn-move toolbar__btn-move_dir_left\"></div>' +\n '<div class=\"toolbar__btn-move toolbar__btn-move_dir_right\"></div>' +\n '</div>' +\n '<div class=\"toolbar__inner\">' +\n //add toolbar icon\n '{{?it.devMode}}' +\n '<div class=\"toolbutton-add\"><a href=\"#\" class=\"devel-link-add devel-link-add--toolbutton\" data-tabid=\"{{=it.id}}\"></a></div>' +\n '{{?}}' +\n //foreach\n '{{ var j, l = it.btng.length; for (j = 0; j < l; j++) { }}' +\n '{{ var i = 0, btn = it.btng[j].btn, lb = btn.length; }}' +\n '{{?btn[i] && btn[i].type}}' +\n '<div class=\"toolgrp ind{{=j}}\" {{=lb}} data-name=\"{{=it.btng[j].name}}\" data-id=\"{{=it.id}}-{{=it.btng[j].name}}\" >' +\n '{{ if (btn[i] && btn[i].type) { }}' +\n '<div class=\"toolbar-button hint {{=btn[i].tClass}} i-tip-target_st_btn_{{=btn[i].type}}\" id=\"tbw-{{=it.id}}-{{=btn[i].tname}}\" ' +\n '{{ var hint = \"\"; if (btn[i].hint) { hint = \"data-hint = \\'\" + App.u.escapeQuote(btn[i].hint) + \"\\'\"; hint += \"data-hint-mn=\\'hint_\" + btn[i].tname + \"\\'\"; } }} {{=hint}}' +\n ' {{ var confirm = \"\"; if (btn[i].confirm) { confirm = \"data-confirm = \\'\" + btn[i].confirm + \"\\'\"; confirm += \"data-confirm-d = \\'\" + btn[i].confirm_delimiter + \"\\'\"; } }} {{=confirm}} {{=btn[i].attrs}}>' +\n '<span href=\"#main-wrapper\" data-url=\"func={{=btn[i].func}}\" ' +\n '{{?btn[i].cgi}} data-cgi=\"{{=btn[i].cgi}}\" {{?}}' +\n ' {{=btn[i].progressbar}}' +\n ' {{=it.tabIdAttr}}' +\n ' data-name=\"{{=btn[i].tname}}\" ' +\n ' rel=\"{{=it.id}}\"' +\n ' class=\"img-link toolbar-button__item-img {{=btn[i].bClass}} \" ' +\n '{{=btn[i].dataType}}' +\n ' id=\"{{=btn[i].id}}\" data-itemid=\"{{=it.itemId}}\">' +\n '<div class=\"s-icon s24x24 {{=btn[i].img}}\" {{=btn[i].style}}></div>' +\n '<div id=\"{{=btn[i].progressId}}{{=it.itemId}}\"></div>' +\n '</span>' +\n '<span href=\"#main-wrapper\" data-url=\"func={{=btn[i].func}}\" {{?btn[i].cgi}} data-cgi=\"{{=btn[i].cgi}}\" {{?}} {{=btn[i].progressbar}} {{=it.tabIdAttr}} rel=\"{{=it.id}}\" class=\"toolbar-button__item-text {{=btn[i].bClass}} btntext\" {{=btn[i].dataType}} data-mn=\"short_{{=btn[i].tname}}\" data-name=\"{{=btn[i].tname}}\">{{=btn[i].name}}</span>' +\n '{{?it.devMode}}' +\n '<div class=\"toolbutton-settings\">' +\n '<a href=\"#main-wrapper\" class=\"devel-link-settings devel-link-settings--toolbutton\" data-elid=\"{{=btn[i].tname}}\" data-tabid=\"{{=it.id}}\"></a>' +\n '<a href=\"#main-wrapper\" class=\"devel-link-delete devel-link-delete--toolbutton\" data-elid=\"{{=btn[i].tname}}\" data-name=\"{{=btn[i].name}}\" data-tabid=\"{{=it.id}}\"></a>' +\n '</div>' +\n '{{?}}' +\n '<div class=\"toolgrp-control\" id=\"tc-{{=it.id}}-{{=it.btng[j].name}}\"><div class=\"triangledown\"></div></div>' +\n '</div>' +\n '{{ } }}' +\n //toolgrp-bag\n '<div class=\"toolgrp-bag\" id=\"tb-{{=it.id}}-{{=it.btng[j].name}}\">' +\n '{{ for (i = 1; i < lb; i++) { }}' +\n '{{ if (btn[i].type) { }}' +\n '<div class=\"toolbar-button hint {{=btn[i].tClass}} ind{{=i}}\" id=\"tbw-{{=it.id}}-{{=btn[i].tname}}\" ' +\n '{{ var hint = \"\"; if (btn[i].hint) { hint = \"data-hint = \\'\" + App.u.escapeQuote(btn[i].hint) + \"\\'\"; hint += \"data-hint-mn=\\'hint_\" + btn[i].tname + \"\\'\";} }} {{=hint}}' +\n ' {{ var confirm = \"\"; if (btn[i].confirm) { confirm = \"data-confirm = \\'\" + btn[i].confirm + \"\\'\"; confirm += \"data-confirm-d = \\'\" + btn[i].confirm_delimiter + \"\\'\"; } }} {{=confirm}} {{=btn[i].attrs}}>' +\n '<span href=\"#main-wrapper\"' +\n ' data-url=\"func={{=btn[i].func}}\"' +\n ' {{?btn[i].cgi}} data-cgi=\"{{=btn[i].cgi}}\" {{?}}' +\n ' {{=btn[i].progressbar}}' +\n ' {{=it.tabIdAttr}}' +\n ' data-name=\"{{=btn[i].tname}}\"' +\n ' rel=\"{{=it.id}}\" ' +\n ' class=\"img-link toolbar-button__item-img {{=btn[i].bClass}} \"' +\n ' {{=btn[i].dataType}}' +\n ' id=\"{{=btn[i].id}}\" data-itemid=\"{{=it.itemId}}\">' +\n '<div class=\"s-icon s24x24 {{=btn[i].img}}\" {{=btn[i].style}}></div>' +\n '<div id=\"{{=btn[i].progressId}}{{=it.itemId}}\"></div>' +\n '</span>' +\n '<span href=\"#main-wrapper\"' +\n ' data-url=\"func={{=btn[i].func}}\"' +\n ' {{?btn[i].cgi}} data-cgi=\"{{=btn[i].cgi}}\" {{?}}' +\n ' {{=btn[i].progressbar}}' +\n ' {{=it.tabIdAttr}}' +\n ' data-name=\"{{=btn[i].tname}}\" ' +\n ' rel=\"{{=it.id}}\"' +\n ' class=\"{{=btn[i].bClass}} btntext\"' +\n ' {{=btn[i].dataType}} data-mn=\"short_{{=btn[i].tname}}\">{{=btn[i].name}}</span>' +\n //devmode\n '{{?it.devMode}}' +\n '<div class=\"toolbutton-settings\">' +\n '<a href=\"#\" class=\"devel-link-settings devel-link-settings--toolbutton\" data-elid=\"{{=btn[i].tname}}\" data-tabid=\"{{=it.id}}\"></a>' +\n '<a href=\"#\" class=\"devel-link-delete devel-link-delete--toolbutton\" data-elid=\"{{=btn[i].tname}}\" data-name=\"{{=btn[i].name}}\" data-tabid=\"{{=it.id}}\"></a>' +\n '</div>' +\n '{{?}}' +\n //devmode end\n '</div>' +\n //if end\n '{{ } }}' +\n //for end\n '{{ } }}' +\n '</div>' +\n //toolgrp end\n '</div>' +\n '{{?}}' +\n '{{ } }}' +\n '</div>' +\n '</div>' +\n //toolbar end\n '{{?}}';\n\n var tabCont = ' ' +\n '<div id=\"cont-{{=it.id}}\" class=\"tab-content {{=it.btnview}} {{=it.filter}} init\" data-func={{=it.func}} ' +\n ' data-pnum=\"{{=it.pNum}}\" data-pcnt=\"{{=it.pcnt}}\" data-tabid=\"{{=it.id}}\" ' +\n ' data-tab-type=\"list\" data-itemid=\"{{=it.itemId}}\">' +\n '<div id=\"{{=it.progressid}}\"></div>' +\n '<div id=\"{{=it.id}}-progressbar-overlay\" class=\"b-tab-overlay\" data-tabid=\"{{=it.id}}\"></div>' +\n '<div id=\"cont-{{=it.id}}-progressbar\" class=\"b-progressbar\"></div>' +\n //default progressbar\n '<div id=\"cont-{{=it.id}}-progressbar-default\" class=\"b-progressbar\">' +\n '<div id=\"{{=it.id}}-progressbar\" class=\"b-progressbar__outer\">' +\n '<div class=\"b-progressbar__inner\">' +\n '<div class=\"b-progressbar__comment\">{{=it.comment}}</div>' +\n '<div class=\"b-progressbar__loader-wr\"><div class=\"b-progressbar__loader b-progressbar__loader_type_animate\"></div></div>' +\n '</div>' +\n '</div>' +\n '</div>' +\n //end default progressbar\n //default progressbar end\n\n '<div class=\"tab-content-wrapper list-content\" id=\"tcw-{{=it.id}}\">' +\n //top bar\n '<div class=\"topBar\">' +\n '<div class=\"rightBar\">' +\n '{{?it.devMode}}' +\n '<a href=\"{{=it.selfurl}}&out=devel\" data-hint=\"{{=it.hDevel}}\" target=\"_blank\" class=\"hint\">' +\n '<div class=\"s-icon s16x16 l-devel\"></div>' +\n '</a>' +\n '{{?}}' +\n '<a href=\"#\" class=\"reload hint\" data-tabid=\"{{=it.id}}\" data-hint=\"{{=it.hReload}}\" data-hint-mn=\"hint_reloadlist\"><img src=\"{{=it.theme}}img/blue-reload.png\" width=\"16\" height=\"16\"/></a>' +\n '{{?it.inmenu}}' +\n '<a href=\"#\" class=\"i-take-favorite hint {{?!it.favorite}}b-elem_style_gracescale{{?}}\" data-hint-unfavorite=\"{{=it.hFavorite}}\" data-hint-favorite=\"{{=it.hUnfavorite}}\" data-state=\"{{?it.favorite}}favorite{{??}}unfavorite{{?}}\">' +\n '<div class=\"s-icon s16x16 mbar-favorite\"></div>' +\n '</a>' +\n '<div class=\"b-pin i-pin hint {{?!it.pin}}b-elem_style_gracescale{{?}}\" data-state=\"{{?it.pin}}pin{{??}}unpin{{?}}\" data-hint-pin=\"{{=it.hintPin}}\" data-hint-unpin=\"{{=it.hintUnpin}}\"></div>' +\n '{{?}}' +\n '<a href=\"{{=it.permaLink}}\" data-clipboard-text=\"{{=it.permaLink}}\" data-hint=\"{{=it.hCopy}}\" target=\"_blank\" data-hint-mn=\"hint_copylink\" class=\"hint b-permalink\" id=\"permalink-{{=it.id}}\"><div class=\"p-permalink s16x16 s-icons\"></div></a>' +\n '{{?it.autoupdate}}' +\n '<a href=\"#\" data-hint=\"{{=it.hAutoupdate}}\" data-tabid=\"{{=it.id}}\" data-hint-mn=\"hint_autoupdate_stop\" class=\"i-list-icon__stop hint\"><div class=\"s-icon s16x16 p-stop\"></div></a>' +\n '{{?}}' +\n '<a href=\"#\" data-hint=\"{{=it.hSelectAll}}\" data-tabid=\"{{=it.id}}\" data-hint-mn=\"hint_selectall\" class=\"select-all hint\"><div class=\"s-icon s16x16 sb-selectall\"></div></a>' +\n '<a href=\"{{=it.selfurl}}&out=csv\" data-hint=\"{{=it.hExport}}\" data-hint-mn=\"hint_export\" target=\"_blank\" class=\"exel hint\"><div class=\"s-icon s16x16 p-excel\"></div></a>' +\n\n '<a href=\"{{=it.selfurl}}&out=print\" data-hint=\"{{=it.hPrint}}\" data-hint-mn=\"hint_print\" target=\"_blank\" class=\"print hint\"><div class=\"s-icon s16x16 p-print\"></div></a>' +\n '<a href=\"?func=tsetting&elid={{=it.func}}&plid={{=it.tsplid}}\" data-hint-mn=\"msg_tsetting\" data-url=\"func=tsetting&elid={{=it.func}}&plid={{=it.tsplid}}\" data-hint=\"{{=it.tsettings}}\" {{=it.tabIdAttr}} rel=\"{{=it.id}}\" class=\"tsetting hint\">' +\n '<div class=\"s-icon s16x16 l-table\"></div>' +\n '</a>' +\n //'<a href=\"#\" class=\"help hint\" data-hint=\"{{=it.hHelp}}\" data-help-type=\"default\" data-help=\"{{=it.help}}\"><div class=\"s-icon s16x16 sb-help\"></div></a>' +\n '<a href=\"#\" class=\"b-usefulLinks__icon hint i-tip-target_st_help_links\" data-hint=\"{{=it.hHelp}}\"><div class=\"s-icon s16x16 sb-help\"></div></a>' +\n '</div>' +\n //top bar end\n //left bar\n '<div class=\"leftBar b-leftbar b-leftbar_for_list\">' +\n //title\n '<div class=\"reload hint fleft s48x48 s-icon {{=it.tImg}} i-tip-target_st_title_reload\" {{=it.tStyle}} data-tabid=\"{{=it.id}}\" data-hint-mn=\"hint_reloadlist\" data-hint=\"{{=it.hReload}}\"></div>' +\n '<span>' +\n '<h2>' +\n '<span class=\"reload hint b-title i-tip-target_st_typo\" data-fn=\"{{=it.func}}\" data-mn=\"title\" data-tabid=\"{{=it.id}}\" data-hint-mn=\"hint_reloadlist\" data-hint=\"{{=it.hReload}}\">{{=it.tabTitle}}</span>' +\n '{{=it.breadcrumb}}' +\n //devmode icons\n '{{ if (it.devMode) { }}' +\n '<div class=\"list-settings\">' +\n '<a href=\"#\" class=\"devel-link-settings devel-link-settings--list\" data-tabid=\"{{=it.id}}\" data-elid=\"{{=it.func}}\"></a>' + '<a href=\"#\" class=\"devel-link-settings devel-link-settings--list\" data-tabid=\"{{=it.id}}\" data-elid=\"{{=it.func}}\"></a>' +\n '</div>' +\n '{{ } }}' +\n\n '</h2>' +\n '</span>' +\n '<div class=\"clearBoth\"></div>' +\n '</div>' +\n //left bar end\n //messages\n messages +\n //messages end\n '<div class=\"toolbar-wrapper\">' +\n //livefilter\n '<div class=\"tsearch\">' +\n '<div class=\"dib search\">' +\n '<input type=\"text\" id=\"{{=it.id}}-search\" data-tabid=\"{{=it.id}}\" class=\"itsearch b-input\" placeholder=\"Ctrl + Shift + F\" value=\"{{=it.livefilter}}\"/>' +\n '<div class=\"close_tsearch\"><a href=\"javascript:void(0)\" data-tabid=\"{{=it.id}}\"><img src=\"{{=it.theme}}img/search_close.png\"/></a></div>' +\n '</div>' +\n '{{?it.filter}}<div class=\"i-tip-target_st_filter filter-btn b-filter__toggle hint\" data-hint-mn=\"hint_filter\" data-hint=\"{{=it.fHelp}}\"></div>{{?}}' +\n '</div>' +\n //livefilter end\n //toolbar\n toolbar +\n '</div>' +\n //toolbar end\n //active filter\n '{{?it.filter}}' +\n '<div class=\"b-filter__save-bar\">' +\n '<div class=\"b-filter__btn-move b-filter__btn-move_dir_left\"></div>' +\n '<div class=\"b-filter__btn-move b-filter__btn-move_dir_right\"></div>' +\n '<div class=\"b-filter__save-bar-inner\">' +\n '</div>' +\n '</div>' +\n '{{?}}' +\n '{{?it.afilter.status}}' +\n '<div class=\"filter-active i-filter-applied\">' +\n '<div class=\"filter-btns\">' +\n '<div class=\"b-button b-button__filter-reset\">{{=it.afilter.resetMsg}}</div>' +\n '<div class=\"b-button b-button__filter-change\" class=\"b-filter__change-btn\">{{=it.afilter.editMsg}}</div>' +\n '</div>' +\n '<div class=\"filter-msg\">' +\n '<span class=\"head-filter-msg\">{{=it.afilter.fname || it.afilter.fmsg}}</span> {{=it.afilter.msg}}</div>' +\n '<div class=\"clearBoth\"></div>' +\n '</div>' +\n '{{?}}' +\n //active filter end\n //filter form wrapper\n '<div class=\"filter-wrapper\" id=\"filter-{{=it.id}}\"></div>' +\n //diagram wrappper\n '<div class=\"diagram-cont\" id=\"diagram-{{=it.id}}\"></div>' +\n //page wrapper\n '<div class=\"pager-wrapper\">{{=it.pager}}</div>' +\n '</div>' +\n //content table\n '<div class=\"content\" id=\"ltwr-{{=it.id}}\" data-tabid={{=it.id}}>{{=it.table}}</div>' +\n //content table end\n '</div>';\n\n var tabContMap = '<div id=\"cont-{{=it.id}}\" class=\"tab-content\" data-tabid=\"{{=it.id}}\" data-tab-type=\"map\" data-func={{=it.func}} data-itemid=\"{{=it.itemId}}\">' +\n\n '<div id=\"{{=it.id}}-progressbar-overlay\" class=\"b-tab-overlay\" data-tabid=\"{{=it.id}}\"></div>' +\n '<div id=\"cont-{{=it.id}}-progressbar\" class=\"b-progressbar\"></div>' +\n //default progressbar\n '<div id=\"cont-{{=it.id}}-progressbar-default\" class=\"b-progressbar\">' +\n '<div id=\"{{=it.id}}-progressbar\" class=\"b-progressbar__outer\">' +\n '<div class=\"b-progressbar__inner\">' +\n '<div class=\"b-progressbar__comment\">{{=it.comment}}</div>' +\n '<div class=\"b-progressbar__loader-wr\">' +\n '<div class=\"b-progressbar__loader b-progressbar__loader_type_animate\"></div>' +\n '</div>' +\n '</div>' +\n '</div>' +\n '</div>' +\n\n '<div class=\"tab-content-wrapper list-content\" id=\"tcw-{{=it.id}}\">' +\n '<div class=\"topBar\">' +\n '<div class=\"rightBar\">' +\n '{{?it.devMode}}' +\n '<a href=\"{{=it.selfurl}}&out=devel\" data-hint=\"{{=it.hDevel}}\" target=\"_blank\" class=\"hint\"><div class=\"s-icon s16x16 l-devel\"></div></a>' +\n '{{?}}' +\n '<a href=\"#\" class=\"reload hint\" data-tabid=\"{{=it.id}}\" data-hint=\"{{=it.hReload}}\" data-hint-mn=\"hint_reload\"><img src=\"{{=it.theme}}img/blue-reload.png\" width=\"16\" height=\"16\" /></a>' +\n '{{?it.inmenu}}' +\n '<a href=\"#\" class=\"i-take-favorite hint {{?!it.favorite}}b-elem_style_gracescale{{?}}\" data-hint-unfavorite=\"{{=it.hFavorite}}\" data-hint-favorite=\"{{=it.hUnfavorite}}\" data-state=\"{{?it.favorite}}favorite{{??}}unfavorite{{?}}\">' +\n '<div class=\"s-icon s16x16 mbar-favorite\"></div>' +\n '</a>' +\n '<div class=\"b-pin i-pin hint {{?!it.pin}}b-elem_style_gracescale{{?}}\" data-state=\"{{?it.pin}}pin{{??}}unpin{{?}}\" data-hint-pin=\"{{=it.hintPin}}\" data-hint-unpin=\"{{=it.hintUnpin}}\"></div>' +\n // '<a href=\"#\" class=\"help hint\" data-hint=\"{{=it.hHelp}}\" data-help-type=\"{{=it.helpType}}\" data-help=\"{{=it.help}}\" data-help-func=\"{{=it.helpurl}}\"><div class=\"s-icon s16x16 sb-help\"></div></a>' +\n '{{?}}' +\n '</div>' +\n '<div class=\"leftBar b-leftbar b-leftbar_for_map\">' +\n '<div class=\"reload hint fleft s48x48 s-icon i-tip-target_st_title_reload {{=it.tImg}}\" {{=it.tStyle}} data-tabid=\"{{=it.id}}\" data-hint-mn=\"hint_reload\" data-hint=\"{{=it.hReload}}\"></div>' +\n '<span><h2><span class=\"reload hint b-title i-tip-target_st_typo \" data-fn=\"{{=it.func}}\" data-mn=\"title\" data-hint-mn=\"hint_reload\" data-tabid=\"{{=it.id}}\" data-hint=\"{{=it.hReload}}\">{{=it.tabTitle}}</span></h2></span>' +\n '<div class=\"clearBoth\">' +\n '</div>' +\n '</div>' +\n\n messages +\n\n //toolbar\n toolbar +\n //close topbar\n '</div>' +\n //end toolbar\n '<div class=\"map\" id=\"{{=it.id}}-map\"></div>' +\n '</div>' +\n\n '</div>';\n\n\n //List pager\n var listPager =\n '<div class=\"slist\">{{=it.slist}}</div>' +\n '<div class=\"pager_list pager-list_type_list\">{{=it.pagerList}}</div>' +\n '<div class=\"page_cnt\">' +\n '<span class=\"page_cnt_lb_began\" data-mn=\"pagershow\">{{=it.msgBegan}}</span>' +\n '<input type=\"text\" value=\"{{=it.cnt}}\" maxlength=\"4\" class=\"cnt pager-list__input b-input b-input_for_pager\" name=\"pcnt\"/>' +\n '<span class=\"page_cnt_lb_end\" data-mn=\"pagerline\"> {{=it.msgEnd}}</span>' +\n '<div class=\"pager-list__input-submit b-button b-button_style_small\">OK</div>' +\n '</div>';\n\n //Empty tab Template\n var tabContEmpty = '<div id=\"cont-{{=it.id}}\" class=\"tab-content hidden\" data-itemid=\"{{=it.itemId}}\">' +\n '<div id=\"{{=it.id}}-progressbar-overlay\" class=\"b-tab-overlay\" data-tabid=\"{{=it.id}}\"></div>' +\n //default progressbar\n '<div id=\"cont-{{=it.id}}-progressbar-default\" class=\"b-progressbar\">' +\n '<div id=\"{{=it.id}}-progressbar\" class=\"b-progressbar__outer\">' +\n '<div class=\"b-progressbar__inner\">' +\n '<div class=\"b-progressbar__comment\">{{=it.comment}}</div>' +\n '<div class=\"b-progressbar__loader-wr\"><div class=\"b-progressbar__loader b-progressbar__loader_type_animate\"></div></div>' +\n '</div>' +\n '</div>' +\n '</div>' +\n '<div class=\"inner-content-empty\">{{=it.text}}</div>' +\n '</div>';\n\n //Dashboard Template\n var tabContDashBoard = '<div id=\"cont-{{=it.id}}\" class=\"tab-content\" data-tabid=\"{{=it.id}}\" data-func=\"dashboard\" data-tab-type=\"dashboard\">' +\n '<div id=\"incont-{{=it.id}}\" >' +\n '<div>' +\n '<table class=\"dash-table\">' +\n '<tbody class=\"b-table__tbody\">' +\n '<tr>' +\n '<td colspan=\"2\">' +\n '<div id=\"dash-top\" class=\"b-dashboard_cell\" data-pos=\"top\">{{=it.top}}</div>' +\n '</td>' +\n '<tr>' +\n '<tr>' +\n '<td class=\"left-row\">' +\n '<div id=\"dash-left\" class=\"b-dashboard_cell\" data-pos=\"left\" >{{=it.left}}</div>' +\n '</td>' +\n '<td class=\"right-row\">' +\n '<div id=\"dash-right\" class=\"b-dashboard_cell\" data-pos=\"right\">{{=it.right}}</div>' +\n '</td>' +\n '<tr>' +\n '</tbody>' +\n '</table>' +\n '</div>' +\n '</div>' +\n '</div>';\n\n //Dashboard block Taskbar Template\n var dashTaskbar = '<div class=\"toolbar\">' +\n '{{~it.toolbar :v :i}}' +\n '{{?v.window || v.link}}' +\n '<div class=\"toolbar-button\">' +\n '<a href=\"{{=v.window || v.link}}\" {{=v.target}} class=\"toolbar-button__item-img\">' +\n '<div class=\"s-icon s48x48 {{=v.img}}\" {{=v.style}}></div>' +\n '</a>' +\n '<a href=\"{{=v.window || v.link}}\" {{=v.target}} data-fn=\"dashboard\" data-mn=\"taskbar_{{=v.name}}\">{{=v.msg}}</a>' +\n '</div>' +\n '{{??}}' +\n '<div data-hint=\"{{=v.hint}}\" class=\"toolbar-button hint {{?!v.disabled}} multi-item {{?}} {{?v.disabled}} notActive {{?}} {{?v.top}}i-tip-target_st_dashboard_top{{?}}\">' +\n '<span href=\"?func={{=v.func}}\" {{?v.list}}data-list=\"{{=v.list}}\"{{?}} {{?v.top}}data-top=\"{{=v.top}}\"{{?}} {{?v.form}}data-form=\"{{=v.form}}\"{{?}} data-type=\"{{=v.type}}\" class=\"toolbar-button__item-img\">' +\n '<div class=\"s-icon s48x48 {{=v.img}}\" {{=v.style}}></div>' +\n '</span>' +\n '<span href=\"?func={{=v.func}}\" {{?v.list}}data-list=\"{{=v.list}}\"{{?}} {{?v.top}}data-top=\"{{=v.top}}\"{{?}} {{?v.form}}data-form=\"{{=v.form}}\"{{?}} data-type=\"{{=v.type}}\" data-fn=\"dashboard\" data-mn=\"taskbar_{{=v.name}}\">{{=v.msg}}</span>' +\n '</div>' +\n '{{?}}' +\n '{{~}}' +\n '</div>';\n\n var button =\n '<div class=\"b-button i-button b-button_color_{{=val.color}} b-button_type_{{=val.type}} i-button_type_{{=val.type}} ' +\n 'b-button_style_{{=val.type}} b-button_act_{{=val.act}} {{?val.focus}}b-form__focus-field{{?}} {{?val.default}}i-button_default_yes{{?}} {{?val.disabled}}b-button_st_disabled{{?}} hint\" ' +\n 'data-tabid=\"{{=it.id}}\" ' +\n 'data-name=\"{{=val.name}}\" ' +\n 'data-hint=\"{{=val.hint}}\" ' +\n '{{=it.parentAttr}} ' +\n 'data-type=\"{{=it.type}}\" ' +\n 'data-disabled=\"{{=val.disabledText}}\" ' +\n 'data-act=\"{{=val.act}}\" ' +\n 'data-id=\"{{=val.id}}\" ' +\n 'data-flags=\"{{=val.flags}}\" ' +\n '{{?val.func}}data-func=\"{{=val.func}}\"{{?}} ' +\n 'tabindex=\"0\" ' +\n 'data-elemid=\"{{=ind}}\" ' +\n 'data-enabled=\"{{=val.msg}}\">{{=val.msg}}' +\n '</div>';\n\n var buttons = '{{~it.buttons :val :ind}}' +\n button +\n '{{~}}';\n\n //Form & Report Template\n var tabContForm = '<div id=\"cont-{{=it.id}}\" class=\"tab-content tab-content_st_active {{=it.tabClass}}\" data-tabid=\"{{=it.id}}\" data-tab-type=\"form\" data-report=\"{{=it.type}}\" data-func={{=it.func}} data-itemid=\"{{=it.itemId}}\">' +\n '<div id=\"{{=it.id}}-progressbar-overlay\" class=\"b-tab-overlay\"></div>' +\n //default progressbar\n '<div id=\"cont-{{=it.id}}-progressbar-default\" class=\"b-progressbar\">' +\n '<div id=\"{{=it.id}}-progressbar\" class=\"b-progressbar__outer\">' +\n '<div class=\"b-progressbar__inner\">' +\n '<div class=\"b-progressbar__comment\">{{=it.comment}}</div>' +\n '<div class=\"b-progressbar__loader-wr\">' +\n '<div class=\"b-progressbar__loader b-progressbar__loader_type_animate\"></div>' +\n '</div>' +\n '</div>' +\n '</div>' +\n '</div>' +\n //default progressbar end\n\n '<div id=\"cont-{{=it.id}}-progressbar\" class=\"b-progressbar\"></div>' +\n '<div id=\"incont-{{=it.id}}\" class=\"form-content\">' +\n// '{{?(it.showcase)}}' +\n// '<div class=\"b-title\">' +\n// '<h2 class=\"b-title__text\">{{=it.tabTitle}}</h2>' +\n// '</div>' +\n// '{{??}}' +\n '{{?(!it.showcase)}}' +\n '<div class=\"topWrapper\">' +\n //right buttons\n '<div class=\"rightBar\">' +\n '{{?it.devMode}}' +\n '<a href=\"{{=it.selfurl}}&out=devel\" data-hint=\"{{=it.hDevel}}\" target=\"_blank\" class=\"hint\"><div class=\"s-icon s16x16 l-devel\"></div></a>' +\n '{{?}}' +\n '{{?it.bands}}' +\n '{{?it.pdfOn}}<a href=\"{{=it.selfurl}}&out=pdf\" data-hint=\"{{=it.hPdf}}\" data-hint-mn=\"hint_pdf\" target=\"_blank\" class=\"pdf hint\"><div class=\"s-icon s16x16 p-pdf\"></div></a>{{?}}' +\n '<a href=\"{{=it.selfurl}}&out=print&sok=ok\" data-hint=\"{{=it.hPrint}}\" target=\"_blank\" data-hint-mn=\"hint_print\" class=\"print hint\"><div class=\"s-icon s16x16 p-print\"></div></a>' +\n '{{?}}' +\n '<a href=\"#\" class=\"reload hint\" data-hint=\"{{=it.hReload}}\" data-hint-mn=\"hint_reload\" data-tabid=\"{{=it.id}}\"><img src=\"{{=it.theme}}img/blue-reload.png\" width=\"16\" height=\"16\" /></a>' +\n '{{?it.inmenu}}' +\n '<a href=\"#\" class=\"i-take-favorite hint {{?!it.favorite}}b-elem_style_gracescale{{?}}\" data-hint-unfavorite=\"{{=it.hFavorite}}\" data-hint-favorite=\"{{=it.hUnfavorite}}\" data-state=\"{{?it.favorite}}favorite{{??}}unfavorite{{?}}\">' +\n '<div class=\"s-icon s16x16 mbar-favorite\"></div>' +\n '</a>' +\n '<div class=\"b-pin i-pin hint {{?!it.pin}}b-elem_style_gracescale{{?}}\" data-state=\"{{?it.pin}}pin{{??}}unpin{{?}}\" data-hint-pin=\"{{=it.hintPin}}\" data-hint-unpin=\"{{=it.hintUnpin}}\"></div>' +\n '{{?}}' +\n '<a href=\"{{=it.permaLink}}\" data-clipboard-text=\"{{=it.permaLink}}\" data-hint=\"{{=it.hCopy}}\" target=\"_blank\" data-hint-mn=\"hint_copylink\" class=\"hint b-permalink\" id=\"permalink-{{=it.id}}\"><div class=\"p-permalink s16x16 s-icons\"></div></a>' +\n //'<a href=\"#\" class=\"help hint\" data-hint=\"{{=it.hHelp}}\" data-help-type=\"{{=it.helpType}}\" data-help=\"{{=it.help}}\" data-help-func=\"{{=it.helpurl}}\"><div class=\"s-icon s16x16 sb-help\"></div></a>' +\n '<a href=\"#\" class=\"b-usefulLinks__icon hint i-tip-target_st_help_links\" data-hint=\"{{=it.hHelp}}\"><div class=\"s-icon s16x16 sb-help\"></div></a>' +\n '</div>' +\n '<div class=\"leftBar b-leftbar b-leftbar_for_form\">' +\n '<div class=\"reload hint fleft s48x48 s-icon i-tip-target_st_title_reload i-tip-target_st_typo {{=it.tImg}}\" data-hint-mn=\"hint_reload\" {{=it.tStyle}} data-tabid=\"{{=it.id}}\" data-hint=\"{{=it.hReload}}\"></div>' +\n//showcase if end\n '{{?}}' +\n '{{?!it.notitle}}' +\n '<span class=\"tab_title\">' +\n '<h2 class=\"reload hint b-title_type-form\" data-fn=\"{{=it.func}}\" data-mn=\"title\" data-hint-mn=\"hint_reload\" data-tabid=\"{{=it.id}}\" data-hint=\"{{=it.hReload}}\">' +\n '{{=it.tabTitle}}' +\n //devmode icons\n '{{?it.devMode}}' +\n '<div class=\"form-settings\">' +\n '<a href=\"#\" class=\"devel-link-settings devel-link-settings--form\" data-tabid=\"{{=it.id}}\"></a>' +\n '<a href=\"#\" class=\"devel-link-add devel-link-add--field\" data-tabid=\"{{=it.id}}\"></a>' +\n '</div>' +\n '{{?}}' +\n '</h2>' +\n '{{=it.breadcrumb}}' +\n '{{?!it.showcase}}' +\n '{{?}}' +\n '</span>' +\n//notitle if end\n '{{?}}' +\n '{{?!it.showcase}}' +\n '<div class=\"clearBoth\"></div>' +\n '</div>' +\n//showcase if end\n '{{?}}' +\n\n '{{?(!it.nostep)}}' +\n '{{?it.formflags.steps}}' +\n '<div class=\"b-wizard i-wizard\">' +\n '<div class=\"b-wizard__inner i-wizard__inner\">' +\n '<div class=\"l-wizard__triangle l-wizard__triangle_dir_left i-wizard__triangle_dir_left\">' +\n '<div class=\"b-wizard__triangle b-wizard__triangle_dir_left\"></div>' +\n '</div>' +\n '{{ var sNum = 0, active, actStep; for (var keyVar in it.formflags.steps) { sNum++ ; actStep = it.formflags.steps[keyVar]; if (keyVar == it.formflags.step ) { active = true; } else { active = false; } }}' +\n '{{?(sNum !== 1)}}' +\n '<div class=\"b-wizard__arrow\"></div>' +\n '{{?}}' +\n '{{?active}}' +\n '<div class=\"b-wizard__step i-wizard__step-num_st_active b-wizard__step-num_st_active\">' +\n '<div class=\"b-wizard__step-num b-wizard__step-num_st_active\" data-mn=\"msg_wizard_step\">{{=it.step}} {{=sNum}}</div>' +\n '<div class=\"b-wizard__step-desc b-wizard__step-desc_st_active\">{{=actStep.name}}</div>' +\n '</div>' +\n '{{??(actStep.unavailable)}}' +\n '<div class=\"b-wizard__step\">' +\n '<div class=\"b-wizard__step-num\" data-mn=\"msg_wizard_step\">{{=it.step}} {{=sNum}}</div>' +\n '<div class=\"b-wizard__step-desc\">{{=actStep.name}}</div>' +\n '</div>' +\n '{{??}}' +\n '<div class=\"b-wizard__step action\">' +\n '<div class=\"b-wizard__step-num\">' +\n '<a href=\"#\" data-href=\"func={{=keyVar}}\" class=\"i-wizard__step-link b-wizard__step-link\" data-mn=\"msg_wizard_step\">{{=it.step}} {{=sNum}}</a>' +\n '</div>' +\n '<div class=\"b-wizard__step-desc\">{{=actStep.name}}</div>' +\n '</div>' +\n '{{?}}' +\n '{{ } }}' +\n '<div class=\"l-wizard__triangle l-wizard__triangle_dir_right i-wizard__triangle_dir_right\">' +\n '<div class=\"b-wizard__triangle b-wizard__triangle_dir_right\"></div>' +\n '</div>' +\n '</div>' +\n '</div><div class=\"b-wizard__bottom-padding\"></div>' +\n '{{?}}' +\n //showcase if\n '{{?}}' +\n\n '{{?it.message.status}}' +\n banner +\n '{{??it.message.length}}' +\n messages +\n '{{?}}' +\n //toolbar\n toolbar +\n //toolbar end\n\n '{{?it.reportInfo}}' +\n '<div class=\"report_info\">{{=window.filterXSS(window.htmlEncode(it.reportInfo))}}</div>' +\n '{{?}}' +\n\n '<div class=\"error-message\">{{=it.ermsg}}</div>' +\n //topWrapper end\n '{{?(!it.showcase)}}' +\n '</div>' +\n '{{?}}' +\n\n '<div class=\"l-form l-form__wrapper {{=it.formflags.maxwidth}}\" id=\"form-scroll-{{=it.id}}\">' +\n '<div class=\"l-form__overlay\"><div class=\"l-form__loader\"></div></div>' +\n '<div class=\"l-form__inner\" id=\"form-scroll-in-{{=it.id}}\">' +\n '<form action=\"{{=it.formflags.action}}\" name=\"frm-{{=it.id}}\" method=\"post\" id=\"frm-{{=it.id}}\" class=\"{{=it.files}} {{?it.showcase}}b-form_showcase_yes{{?}}\" data-vars=\"{{=it.__innervars}}\" {{=it.formflags.autocomplete}}>' +\n '<div id=\"form-wrapper-{{=it.id}}\">' +\n '<input type=\"hidden\" name=\"func\" value=\"{{=it.func}}\"/>' +\n //chrome password autofilling prevent from http://benjaminjshore.info/2014/05/chrome-auto-fill-honey-pot-hack.html\n '<input type=\"password\" style=\"display:none;\"/>' +\n\n '<input type=\"hidden\" id=\"{{=it.id}}-progresstype\" value=\"{{=it.progress}}\"/>' +\n '<div id=\"{{=it.progress}}\"></div>' +\n\n '<input type=\"hidden\" name=\"elid\" value=\"{{=it.elid}}\" id=\"{{=it.id}}-elid\"/>' +\n '{{?(it.plid != \"\")}}<input type=\"hidden\" name=\"plid\" value=\"{{=it.plid}}\" id=\"{{=it.id}}-plid\"/>{{?}}' +\n '{{?it.isUserexp}}' +\n '<div class=\"userexperience {{=it.arePages}}\" data-level=\"{{=it.userexp}}\" data-mn=\"msg_userexperience\"> {{=it.userexpMsg}}</div>' +\n '{{?}}' +\n // check for form exist\n '{{?it.formstatus}}' +\n '{{=it.pages}}' +\n //submit buttons\n '{{?it.buttons.length}}' +\n '<div class=\"l-buttons i-buttons_form-type_{{=it.type}} l-buttons_for_form\" data-type=\"buttons\" id=\"{{=it.id}}-buttons\">' +\n '{{~it.buttons :val :ind}}' +\n button +\n '{{~}}' +\n '</div>' +\n '{{?}}' +\n '{{?}}' +\n\n // check for form exist END\n '</div>' +\n '<div class=\"bands\">{{=it.bands}}</div>' +\n '</form>' +\n '</div>' +\n '</div>' +\n '</div>' +\n '</div>';\n //captcha\n var formItemCaptcha = `<div class=\"b-captcha\"><div class=\"b-captcha__inner\"><div class=\"g-recaptcha\" id=\"{{=it.id}}-{{=it.name}}\" data-sitekey=\"{{=it.value}}\"></div></div></div>`;\n\n //Input template\n var formItemInput = `<div class=\"l-form__input-wr {{=val.dependFields}} {{=val.setvalue}} {{=val.classes}}\" >\n <input value=\"{{=val.value}}\" {{=val.attr}} class=\"{{=val.classes}} force-hint b-input b-input_type_{{=val.type}} i-input-control\" id=\"{{=val.name}}-{{=val.id}}\" data-tabid=\"{{=val.id}}\"/>\n {{?val.prefix}}<div class=\"b-input__prefix i-input__prefix\">{{=val.prefix}}</div>{{?}}\n </div>`;\n\n //Input File Template\n var formItemFile = '<div class=\"{{=it.dependFields}} {{=it.setvalue}} b-input-file__wr\" id=\"b-input-file__wr-{{=it.id}}\">' +\n '<input value=\"{{=it.value}}\" {{=it.attr}} id=\"{{=it.name}}-{{=it.id}}\" data-tabid=\"{{=it.id}}\" class=\"b-input b-input_type_file {{=it.classes}}\" />' +\n '<div class=\"b-input-file-fake\" data-source=\"{{=it.name}}-{{=it.id}}\">' +\n '<div class=\"b-input-file-fake__input hint\" id=\"f-{{=it.name}}-{{=it.id}}\" data-hint=\"\"></div>' +\n '<div class=\"b-input-file-fake__btn\">{{=it.msg}}</div>' +\n '</div>' +\n '</div>';\n\n //Password check template\n var passwdCheck = '<div class=\"checkpass-indicator-wrapper\">' +\n '<div id=\"checkpass-indicator-wrapper-{{=it.name}}-{{=it.id}}\">' +\n '<span class=\"strength-pass-indicator\">' +\n '<span class=\"ci-square si-one\"></span>' +\n '<span class=\"ci-square si-two\"></span>' +\n '<span class=\"ci-square si-three\"></span>' +\n '<span class=\"ci-square si-four\"></span>' +\n '</span>' +\n '<span class=\"strength-pass-text\">' +\n '<span class=\"st-text st-one\">{{=it.short}}</span>' +\n '<span class=\"st-text st-two\">{{=it.weak}}</span>' +\n '<span class=\"st-text st-three\">{{=it.good}}</span>' +\n '<span class=\"st-text st-four\">{{=it.strong}}</span>' +\n '</span>' +\n '</div>' +\n '</div>';\n\n var confirmCheck = '<div class=\"b-form-confirm-message\" id=\"check-confirm-{{=it.name}}-{{=it.id}}\">{{=it.doNotMatch}}</div>';\n\n //Password\n var formItemPassword =\n '<div class=\"l-form__input-wr {{=it.dependFields}} {{=it.setvalue}}\" >' +\n '<input {{=it.attr}} class=\"{{=it.classes}} b-input b-input_type_password force-hint i-input-control\" id=\"{{=it.name}}-{{=it.id}}\" data-parent=\"{{=it.name}}-{{=it.id}}\" data-tabid=\"{{=it.id}}\" value=\"{{=it.value}}\" data-confirm-field=\"{{=it.confirmField}}\" autocomplete=\"off\"/>' +\n '<input type=\"text\" id=\"{{=it.name}}-{{=it.id}}-fake\" data-parent=\"{{=it.name}}-{{=it.id}}\" data-tabid=\"{{=it.id}}\" style=\"display:none;\" data-confirm-field=\"{{=it.confirmField}}\" class=\"fakePasswd {{=it.classes}} force-hint b-input i-input-control\" autocomplete=\"off\"/>' +\n '</div>';\n\n //Input with zoom\n var formItemInputWithZoom = '<div class=\"l-form__input-wr {{=it.dependFields}} {{=it.setvalue}}\" >' +\n '<input value=\"{{=it.value}}\" {{=it.inputAttr}} class=\"{{=it.inputClasses}} {{=it.classes}} force-hint b-input b-input_type_text i-input-control\" id=\"{{=it.inputName}}-{{=it.id}}\" data-tabid=\"{{=it.id}}\"/>' +\n '<textarea class=\"{{=it.textareaClasses}} force-hint b-textarea\" {{=it.textareaAttr}} data-tabid=\"{{=it.id}}\"></textarea>' +\n '</div>';\n\n //Input with zoom\n var formItemInputWithZoom1 = '<div class=\"{{=it.dependFields}}\" >' +\n '<input {{=it.attr}} class=\"{{=it.classes}} force-hint b-input b-input_type_text i-input-control\" id=\"{{=it.name}}-{{=it.id}}\" data-tabid=\"{{=it.id}}\"/>' +\n '<textarea class=\"{{=it.textareaClasses}} force-hint b-textarea\" {{=it.textareaAttr}} data-tabid=\"{{=it.id}}\"></textarea>' +\n '</div>';\n\n var formItemTextarea = '<div id=\"b-msg-templ-{{=it.name}}-{{=it.id}}\" class=\"b-msg-templ__options\"></div>' +\n '<div class=\"{{=it.setvalue}} {{=it.dependFields}} b-textarea__wrapper\">' +\n '{{?it.quote}}' +\n '<div class=\"b-ticket-tools-link\">' +\n '<a href=\"#\" class=\"b-quote hint\" data-target=\"{{=it.name}}-{{=it.id}}\" data-hint-mn=\"hint_quote\" data-hint=\"{{=App.u.escapeQuote(it.hint_quote)}}\">{{=it.msg_quote}}</a>' +\n '</div>' +\n '{{?}}' +\n '{{?it.savedmessage}}' +\n '<div class=\"b-msg-templ__cont b-ticket-tools-link\" data-target=\"{{=it.name}}-{{=it.id}}\">' +\n '<a href=\"#\" class=\"b-msg-templ__link hint\" data-hint-mn=\"hint_savedmessage\" data-hint=\"{{=App.u.escapeQuote(it.hint_savedmessage)}}\" data-id=\"{{=it.name}}-{{=it.id}}\" data-tabid=\"{{=it.id}}\">{{=it.msg_savedmessage}}</a>' +\n '</div>' +\n '{{?}}' +\n '<textarea class=\"{{=it.classes}} force-hint b-textarea b-textarea_responsive_yes\" id=\"{{=it.name}}-{{=it.id}}\" {{=it.attr}} data-tabid=\"{{=it.id}}\" data-codelang=\"{{=it.codelang}}\">{{=it.value}}</textarea>' +\n '{{?it.editor}}<div id=\"{{=it.name}}-{{=it.id}}-editor\" data-id=\"{{=it.name}}-{{=it.id}}\"></div>{{?}}' +\n '<div class=\"b-resizer i-tip-target_st_textarea_resize {{?it.editor}}b-resizer_for_editor {{??}}b-resizer_for_textarea{{?}}\" id=\"resizer_editor-{{=it.name}}-{{=it.id}}\" data-id=\"{{=it.name}}-{{=it.id}}{{?it.editor}}-editor{{?}}\" {{?it.editor}}data-move-trigger=\"resizeEditor\"{{?}} data-tabid=\"{{=it.id}}\"></div>' +\n '</div>';\n\n var formItemCheckbox = '<div class=\"b-checkbox__wrapper {{=val.dependFields}} {{=val.setvalue}} {{?val.img}}l-checkbox-img{{?}}\">' +\n '{{?val.img}}' +\n '<div class=\"s-icon s16x16 {{=val.img}} b-checkbox__img\"></div>' +\n '{{?}}' +\n '<div class=\"b-checkbox checkboxel\">' +\n '<div class=\"b-checkbox__control {{=val.cbclass}} {{=val.readonly}} force-hint\" tabindex=\"0\" id=\"{{=val.id}}-{{=val.name}}\" data-tabid=\"{{=val.id}}\" data-id=\"{{=val.name}}\"></div>' +\n '</div>' +\n '<div class=\"l-label__wrapper l-label__wrapper_for_checkbox\">' +\n '<div class=\"b-label__visible b-label__visible_for_checkbox\" data-tabid=\"{{=val.id}}\" data-id=\"{{=val.name}}\">{{=val.desc}}</div>' +\n '<div class=\"b-label__invisible b-label__invisible_for_checkbox\">{{=val.desc}}</div>' +\n '<div class=\"b-label__line-dotted b-label__line-dotted_for_checkbox\"></div>' +\n '</div>' +\n '<input type=\"hidden\" value=\"{{=val.value}}\" class=\"{{=val.classes}}\" data-handler-val=\"{{=hash(val.value)}}\" name=\"{{=val.name}}\" data-type=\"checkbox\" data-tabid=\"{{=val.id}}\" {{=val.attrInput}}/>' +\n '</div>';\n\n var formItemHtmldata = '<div class=\"b-htmldata__inner b-htmldata\">' +\n '{{?it.img}}' +\n '<div class=\"b-htmldata__img\">' +\n '{{?it.img.src}}<img data-type=\"img\" src=\"{{=it.img.src}}\" id=\"{{=it.id}}-{{=it.img.name}}\" width=\"{{=it.img.width}}\" height=\"{{=it.img.height}}\"/>{{??it.img.img}}<div class=\"{{=it.img.img}}\"></div>{{?}}' +\n '</div>' +\n '{{?}}' +\n '<div id=\"{{=it.id}}-{{=it.name}}\">{{=window.filterXSS(window.htmlEncode(it.value))}}</div>' +\n '<div class=\"b-htmldata__clear\"></div>' +\n '</div>';\n\n var formItemSelectList = '{{~val.slist :value:index}}' +\n '{{ var selected = \"\"; if (val.value == value.key) { selected=\"selected\"; } }}' +\n '{{ var dependelem = \"\"; if (value.depend != \"\" && value.depend != undefined) { dependelem=\"dependelem\"; } else { dependelem=\"b-myselect__select-li_show_yes\"; } }}' +\n '<li data-val=\"{{=String(value.key).replace(/\"/g, \\'"\\')}}\" data-code=\"{{=value.code}}\" data-mask=\"{{=value.mask}}\" data-handler-val=\"{{=hash(value.key)}}\" data-dependkey=\"{{=value.depend}}\" ' +\n 'class=\"{{=selected}} {{=dependelem}} {{?value.src||value.img}}b-myselect__item-image{{?}} b-myselect__select-li\">' +\n '{{?value.src}} <span class=\"b-myselect__img\" style=\"background-image: url({{=value.src}}); ' +\n '{{?value.width}}width:{{=value.width}}px;{{?}}' +\n '{{?value.height}}height:{{=value.height}}px;{{?}}\"></span>{{?}}' +\n '{{?value.img}} <span class=\"b-myselect__img {{=value.img}}\"></span>{{?}}' +\n '<span class=\"{{=value.classes}} b-myselect__option-value\">{{=value.value}}</span>' +\n '</li>' +\n '{{~}}';\n\n var formItemSelect = `<div class=\"b-myselect b-myselect_st_close {{=val.search}} {{=val.depend}} {{=val.dependFields}} {{=val.readonly}} {{=val.setvalue}}\" data-depend=\"{{=val.dependMaster}}\" id=\"_{{=val.name}}-{{=val.id}}\">\n <div class=\"b-myselect__select-selected\" data-id=\"_{{=val.name}}-{{=val.id}}\">\n <div class=\"b-myselect__select-value force-hint\" tabindex=\"0\" data-tabid=\"{{=val.id}}\">{{=val.msg}}</div>\n <div class=\"b-myselect__arrow-down\"><div class=\"b-myselect__triangle-down\"></div></div>\n </div>\n {{?val.search}}<div class=\"b-myselect__search-box\">\n <input type=\"text\" class=\"scrlbr b-input b-input_for_search sb-input force-hint\" data-id=\"{{=val.id}}-{{=val.name}}\" data-tabId=\"{{=val.id}}\" id=\"sb-cont-{{=val.id}}-{{=val.name}}\"/>\n <div class=\"sb-info\" id=\"sb-info-{{=val.id}}-{{=val.name}}\"></div>\n </div>{{?}}\n\n <div class=\"b-myselect__option-wr\" id=\"opt_{{=val.name}}-{{=val.id}}\" data-tabid=\"{{=val.id}}\">\n <div class=\"b-myselect__select-list\" id=\"cont-{{=val.id}}-{{=val.name}}\">\n <ul data-id=\"_{{=val.name}}-{{=val.id}}\" id=\"{{=val.id}}-{{=val.name}}\" class=\"b-myselect__select-ul\">\n ${formItemSelectList}\n </ul>\n </div>\n </div>\n <input type=\"hidden\" value=\"{{=val.value}}\" class=\"{{=val.classes}}\" {{?val.targetfontfamilyview}}data-targetview=\"{{=val.targetfontfamilyview}}\"{{?}} data-handler-val=\"{{=hash(val.value)}}\" name=\"{{=val.name}}\" id=\"_{{=val.name}}-{{=val.id}}-val\" data-type=\"select\" data-tabid=\"{{=val.id}}\" {{=val.attrInput}}/>\n </div>`;\n\n var formItemMSelect = '{{ var l, selectedClass = \"\"; if (it.hasValue) { selectedClass = \"selected\"; } }}' +\n '<div class=\"b-mselect {{=selectedClass}} {{=it.readonly}} {{=it.setvalue}}\" data-depend=\"{{=it.dependMaster}}\" id=\"{{=it.id}}-{{=it.name}}-ms\">' +\n '<div class=\"b-mselect__view-value force-hint\" data-id=\"{{=it.id}}-{{=it.name}}\" tabindex=\"0\" id=\"{{=it.name}}-{{=it.id}}\" data-tabid=\"{{=it.id}}\">' +\n '<div class=\"b-myselect__arrow-down b-myselect__arrow-down_for_mselect\"><div class=\"b-myselect__triangle-down\"></div></div>' +\n '<ul class=\"b-mselect__ul-view\" id=\"{{=it.id}}-{{=it.name}}-ms-view\" data-tabid=\"{{=it.id}}\" data-maxselect=\"{{=it.maxselect}}\">' +\n '<li class=\"b-mselect__item b-mselect__item_msg_unselected\" data-default-msg=\"{{=it.msg}}\">{{?it.mixed}}{{=it.msg_mixed}} {{??}} {{=it.msg}}{{?}}</li>' +\n '{{ var v = \"\", ind = 0; for (var i in it.values) { }}' +\n '{{ var selected = \"\"; if (it.values[i]) { selected=\"chosen\"; } }}' +\n '{{ if (it.slist[i]) { if (v !== \"\") { v += \",\"; } v += it.slist[i].key; ind++; }}' +\n '{{ var dependelem = \"\"; if (it.slist[i].depend != \"\" && it.slist[i].depend != undefined) { dependelem=\"dependelem\"; } else { dependelem=\"b-myselect__select-li_show_yes\"; } }}' +\n '<li class=\"b-mselect__item {{=selected}} {{=dependelem}} \" data-val=\"{{=it.slist[i].key}}\" data-dependkey=\"{{=it.slist[i].depend}}\" unselectable=\"on\" data-s-id=\"{{=it.id}}-{{=it.name}}-{{=i}}\">' +\n '{{=it.slist[i].value}}' +\n '<span class=\"b-mselect__unselect\"></span>' +\n '</li>' +\n '{{ } } }}' +\n '</ul>' +\n '</div>' +\n '<div class=\"b-mselect__options closed\" id=\"{{=it.id}}-{{=it.name}}-ms-list-wrapper\" data-id=\"{{=it.id}}-{{=it.name}}\" data-tabid=\"{{=it.id}}\">' +\n '<div class=\"b-mselect__list-value\" id=\"{{=it.id}}-{{=it.name}}-ms-list\">' +\n '<ul class=\"b-mselect__ul-choose\" id=\"{{=it.id}}-{{=it.name}}-ms-list-ul\" data-id=\"{{=it.id}}-{{=it.name}}\">' +\n '<li class=\"b-mselect__item b-mselect__item_select-all\">{{=it.msg_select_all}}</li>' +\n '{{ var l = it.slist.length; for (var i = 0; i < l; i++) { }}' +\n '{{ var selected = \"\"; if (it.values[i]) { selected=\"chosen\"; } }}' +\n '{{ var dependelem = \"\"; if (it.slist[i].depend != \"\" && it.slist[i].depend != undefined) { dependelem=\"dependelem\"; } else { dependelem=\"b-myselect__select-li_show_yes\"; } }}' +\n '<li class=\"b-mselect__item {{=selected}} {{=dependelem}}\" data-handler-val=\"{{=hash(it.slist[i].key)}}\" data-dependkey=\"{{=it.slist[i].depend}}\" data-val=\"{{=it.slist[i].key}}\" unselectable=\"on\" id=\"{{=it.id}}-{{=it.name}}-{{=i}}\">' +\n '{{=it.slist[i].value}}' +\n '<span class=\"b-mselect__unselect\"></span>' +\n ' </li>' +\n '{{ } }}' +\n '</ul>' +\n '</div>' +\n '</div>' +\n //'<div class=\"b-input-btn b-input-btn_type_plus hint\" data-hint-mn=\"msg_plus\" data-hint=\"{{=App.u.escapeQuote(it.hintBtnPlus)}}\" data-id=\"{{=it.id}}-{{=it.name}}\"></div>' +\n //'<div class=\"b-input-btn b-input-btn_type_minus hint\" data-hint-mn=\"msg_minus\" data-hint=\"{{=App.u.escapeQuote(it.hintBtnMinus)}}\" data-id=\"{{=it.id}}-{{=it.name}}\"></div>' +\n '<input type=\"hidden\" name=\"{{=it.name}}\" class=\"{{=it.classes}}\" value=\"{{=v}}\" data-type=\"multiple\" {{=it.requiredAttr}} id=\"{{=it.id}}-{{=it.name}}-ms-value\" data-id=\"{{=it.id}}-{{=it.name}}\" data-tabid=\"{{=it.id}}\"/>' +\n '</div>';\n\n\n var formItemRadio = '<div class=\"b-radio {{=it.depend}} {{=it.dependFields}} {{=it.readonly}} {{=it.setvalue}}\" id=\"{{=it.id}}-{{=it.name}}-radio\" data-depend=\"{{=it.dependMaster}}\">' +\n //foreach\n '{{~it.slist :value :index}}' +\n '{{ var rbclass = \"\", tabindex = \"\"; if (it.value == value.key) { rbclass=\"checked\"; tabindex = \"tabindex=0\"; } }}' +\n '{{ var dependelem = \"\"; if (value.depend != \"\" && value.depend != undefined ) { dependelem=\"dependelem\"; } else { dependelem=\"b-myselect__select-li_show_yes\"; } }}' +\n '<div data-dependkey=\"{{=value.depend}}\" class=\"{{=dependelem}} l-radio__item\">' +\n '<div class=\"b-radio__control-wr\">' +\n '<div {{=tabindex}} class=\"b-radio__control {{=it.name}}-{{=it.id}} {{=it.name}}-{{=it.id}}-{{=hash(value.key)}} {{=rbclass}} force-hint\" data-id=\"{{=it.name}}-{{=it.id}}\" data-tabid=\"{{=it.id}}\" data-val=\"{{=value.key}}\" data-handler-val=\"{{=hash(value.key)}}\">' +\n '</div>' +\n '</div>' +\n '<div class=\"l-label__wrapper l-label__wrapper_for_radio\">' +\n '<div class=\"b-label__visible b-label__visible_for_radio\" data-r-class=\"{{=it.name}}-{{=it.id}}-{{=hash(value.key)}}\">{{=value.value}}</div>' +\n '<div class=\"b-label__invisible b-label__invisible_for_radio\">{{=value.value}}</div>' +\n '<span class=\"b-label__line-dotted b-label__line-dotted_for_radio\"></span>' +\n '</div>' +\n '</div>' +\n //end foreach\n '{{~}}' +\n '<input type=\"hidden\" name=\"{{=it.name}}\" data-handler-val=\"{{=hash(it.value)}}\" id=\"{{=it.name}}-{{=it.id}}\" value=\"{{=it.value}}\" class=\"{{=it.classes}}\" data-type=\"radio\" data-tabid=\"{{=it.id}}\" {{=it.attrInput}}/>' +\n '</div>';\n\n var formItemRadioImg = '<div class=\"b-radio {{=it.setvalue}} {{=it.readonly}}\">' +\n '<table class=\"b-radio-img\">' +\n '<tbody class=\"b-table__tbody\">' +\n '{{~it.slist :value :index}}' +\n '{{ var rbclass = \"\", tabindex = \"\"; if (it.value == value.key) { rbclass=\"checked\"; tabindex = \"tabindex=0\"; } }}' +\n '<tr class=\"b-radio-img__row\" data-r-class=\"{{=it.name}}-{{=it.id}}-{{=hash(value.key)}}\">' +\n '<td class=\"b-radio-img__col b-radio-img__col_radio\">' +\n '<div class=\"b-radio__control {{=it.name}}-{{=it.id}} {{=rbclass}} {{=it.name}}-{{=it.id}}-{{=hash(value.key)}}\" {{=tabindex}} data-id=\"{{=it.name}}-{{=it.id}}\" data-tabid=\"{{=it.id}}\" data-val=\"{{=value.key}}\" data-handler-val=\"{{=hash(value.key)}}\"></div>' +\n '</td>' +\n '<td class=\"b-radio-img__col b-radio-img__col_img\">' +\n '<div class=\"b-radio-img__img-wrapper\">' +\n '{{?value.src}} <span class=\"b-radio-img__img\" style=\"background-image: url({{=value.src}}); ' +\n '{{?value.width}}width:{{=value.width}}px;{{?}}' +\n '{{?value.height}}height:{{=value.height}}px;{{?}}\"></span>{{?}}' +\n '{{?value.img}} <span class=\"b-radio-img__img {{=value.img}}\"></span>{{?}}' +\n '</div>' +\n '</td>' +\n '<td class=\"b-radio-img__col b-radio-img__col_desc\"><div class=\"b-radio-img__desc\">{{=window.htmlDecode(value.value)}}</div></td>' +\n '</tr>' +\n '{{~}}' +\n '</tbody>' +\n '</table>' +\n '<input type=\"hidden\" name=\"{{=it.name}}\" id=\"{{=it.name}}-{{=it.id}}\" data-handler-val=\"{{=hash(it.value)}}\" class=\"{{=it.classes}}\" value=\"{{=it.value}}\" data-type=\"radio\" data-tabid=\"{{=it.id}}\" />' +\n '</div>';\n\n var formItemLink = '<div class=\"b-form-link{{?it.internal}} m-item{{?}}\"><a href=\"{{=it.href}}\" data-url=\"{{=it.href}}\" {{?!it.newtab}}data-parent=\"{{=it.id}}\"{{?}} data-type=\"link\" id=\"{{=it.id}}-{{=it.name}}\" {{?it.target}}target=\"{{=it.target}}\"{{?}} class=\"i-menu-link {{?it.newtab}}newtab{{?}}\">{{=it.text}}</a></div>';\n\n var formItemExtrBtn = '<{{=it.extrabtn}} data-tname=\"{{=it.name}}-{{=it.id}}\"/>';\n\n var formItemDesk = '<span class=\"desc\">{{=it.value}}</span>';\n\n var formItemDeskRadio = '<div class=\"desk\">' +\n '<div class=\"desk-visible\">{{=it.value}}</div>' +\n '<div class=\"desk-invisible\">{{=it.value}}</div>' +\n '<span class=\"b-label__line-dotted\"></span>' +\n '</div>';\n\n var formItemTextData = '{{?it.img}}<div class=\"b-textdata__img\">{{?it.img.src}}<img data-type=\"img\" src=\"{{=it.img.src}}\" id=\"{{=it.id}}-{{=it.img.name}}\" width=\"{{=it.img.width}}\" height=\"{{=it.img.height}}\"/>{{??it.img.img}}<div class=\"{{=it.img.img}}\"></div>{{?}}</div>{{?}}' +\n '<div class=\"b-textdata {{=it.classes}}\" id=\"{{=it.id}}-{{=it.name}}\" data-type=\"textdata\"><div class=\"b-textdata__inner\" {{?it.mtype === \"msg\" || it.mtype === \"msgdata\"}} data-mn=\"{{=it.msgname}}\"{{?}} id=\"{{=it.id}}-{{=it.name}}-inner\">{{=window.filterXSS(it.value)}}</div></div>' +\n '<div class=\"b-textdata__clear l-clear-both\"></div>';\n\n var formItemLabel =\n '<div class=\"l-label__wrapper\">' +\n '<div class=\"l-label__inner\">' +\n '<label class=\"b-label__visible\" data-tabid=\"{{=it.tabId}}\" data-id=\"{{=it.id}}\" data-fn=\"{{=it.func}}\" data-mn=\"{{=it.id}}\">{{=it.img}}{{=it.label}}</label>' +\n '<label class=\"b-label__invisible\">{{=it.img}}{{=it.label}}</label>' +\n '<span class=\"b-label__line-dotted\"></span>' +\n '{{?it.required}}<span class=\"b-required-star\">*</span>{{?}}' +\n '{{?it.devMode}}' +\n '<div class=\"field-settings\">' +\n '<a href=\"#\" class=\"devel-link-settings devel-link-settings--field\" data-elid=\"{{=it.id}}\" data-tabid=\"{{=it.tabId}}\"></a>' +\n '<a href=\"#\" class=\"devel-link-delete devel-link-delete--field\" data-elid=\"{{=it.id}}\" data-name=\"{{=it.label}}\" data-tabid=\"{{=it.tabId}}\"></a>' +\n '</div>' +\n '{{?}}' +\n '</div>' +\n '</div>';\n\n var filterItemLabel = '<label data-mn=\"{{=it.name}}\" data-fn=\"{{=it.func}}\">{{=it.label}}</label>';\n\n var formItemSlider = '<table class=\"b-slider\">' +\n '<tbody class=\"b-table__tbody\">' +\n '<tr>' +\n '<td class=\"l-slider__col l-slider__col_cont_slider\">' +\n '<div class=\"l-slider__wr {{=it.readonly}}\">' +\n '<div class=\"b-slider__line\"></div>' +\n '<div class=\"b-slider__border b-slider__border_pos_left\"></div>' +\n '<div class=\"b-slider__c-border b-slider__c-border_pos_top\"></div>' +\n '<div class=\"b-slider__c-border b-slider__c-border_pos_bottom b-slider__c-bottom-border\"></div>' +\n '<a id=\"{{=it.id}}-{{=it.name}}-slider\" class=\"b-slider__el force-hint\" tabindex=\"0\" data-min=\"{{=it.min}}\" data-tabid=\"{{=it.id}}\" data-max=\"{{=it.max}}\" data-step=\"{{=it.step}}\" data-id=\"{{=it.id}}-{{=it.name}}\" data-value=\"{{=it.value}}\">' +\n '<div class=\"b-slider__core\"></div>' +\n '</a>' +\n '<div class=\"b-slider__border b-slider__border_pos_right\"></div>' +\n '</div>' +\n '</td>' +\n '<td class=\"l-slider__col l-slider__col_cont_input {{=it.setvalue}}\">' +\n '<div class=\"l-slider__input-wr {{=it.setvalue}}\">' +\n '<input type=\"text\" len=\"32\" {{?it.targetfontsizeview}}data-targetview=\"{{=it.targetfontsizeview}}\"{{?}} class=\"b-input b-input_for_slider {{?it.targetfontsizeview}}i-font-size-control{{?}} {{=it.readonly}} force-hint i-input-control {{=it.inputClass}}\" id=\"{{=it.id}}-{{=it.name}}\" data-tabid=\"{{=it.id}}\" name=\"{{=it.name}}\" value=\"{{=it.value}}\" {{=it.readonly}} {{=it.attrInput}}/>' +\n '</div>' +\n '</td>' +\n '</tr>' +\n '</tbody>' +\n '</table>';\n\n var formItemSliderEditInList = '<div class=\"l-form__row_type_slider\">' +\n '<div class=\"l-form__control-wr\">' +\n formItemSlider +\n '</div>' +\n '</div>';\n\n var formItemTicketMsg = '{{~it.mlist :value:index}}' +\n '<tr class=\"b-ticket__table-row {{?value.isCollapsed}} b-ticket__table-row_is_collapsible b-ticket__table-row_is_collapsed {{?}}\">' +\n '<td class=\"b-ticket__table-col b-ticket__table-col_type_msg\">' +\n '<div class=\"b-ticket__item b-ticket__item_{{=value.type}} \">' +\n '<div class=\"b-ticket__item-inner b-ticket__item-inner_{{=value.type}} {{?value.rate.is}}b-ticket__item-inner_has_rate{{?}}\">' +\n '{{?value.type === \"info\"}}' +\n '<table class=\"b-ticket__table-info\">' +\n '<tbody class=\"b-table__tbody\">' +\n '{{~value.rows :v :i}}' +\n '<tr class=\"b-ticket__row-info {{?v.header}}b-ticket__row-info_type_header{{?}}\">' +\n '{{?v.header}}' +\n '<td class=\"b-ticket__col-info b-ticket__col-info_type_header\" colspan=\"2\">{{=v.label}}</td>' +\n '{{??}}' +\n '<td class=\"b-ticket__col-info b-ticket__col-info_type_label\">{{=v.label}}</td>' +\n '<td class=\"b-ticket__col-info b-ticket__col-info_type_value\">{{=String(v.v).replace(/(\\\\r\\\\n|\\\\n|\\\\r)/g,\" \").replace(/\\\\s+/g,\" \")}}</td>' +\n '{{?}}' +\n '</tr>' +\n '{{~}}' +\n '</tbody>' +\n '</table>' +\n '{{??}}' +\n '<div class=\"b-ticket__btn-collapse i-ticket__btn-collapse s16x16 s-icon mbar-showall\"></div>' +\n '{{?value.title}}<div class=\"b-ticket__title\">{{=value.title}}</div>{{?}}' +\n '<div class=\"b-ticket__body b-ticket__body_same_prop\">{{var b = String(value.body).replace(/\\\\s\\\\r\\\\n|\\\\r\\\\n|\\\\s\\\\n|\\\\n/g, \"<br/>\");}}{{=b}}</div>' +\n //file\n '{{?value.file.is}}' +\n '{{~value.file.elems :vv :ii}}' +\n '<div class=\"b-ticket__file\">' +\n '<a href=\"?func={{=vv.action}}{{~vv.params :v:i}}&{{=v.name}}={{=v.value}}{{~}}\" target=\"_blank\" class=\"b-ticket__file-link {{?vv.preview}}b-image-for-view{{?}}\">{{=vv.name}}</a>' +\n '</div>' +\n '{{~}}' +\n '{{?}}' +\n //rate\n '{{?value.rate.is}}' +\n '<div class=\"b-ticket__rate\">' +\n '{{~value.rate.items :vv :ii}}' +\n '<div class=\"b-ticket__rate-item\" data-id=\"{{=vv.id}}\" data-elid=\"{{=vv.elid}}\">' +\n '<span class=\"b-ticket__rate-msg\">{{=vv.msg}}</span>' +\n '{{~vv.items :v:i}}' +\n '<div class=\"b-ticket__rate-{{=v.name}} {{=v.classes}}\" data-name=\"{{=v.name}}\" data-func=\"{{=v.func}}\" data-type=\"{{=v.type}}\"><img src=\"{{=v.img}}\" data-hint=\"{{=App.u.escapeQuote(window.filterXSS(v.hint))}}\" class=\"b-ticket__rate-img hint\"/><span class=\"b-ticket__rate-text\">{{=v.msg}}</span></div>' +\n '{{~}}' +\n '</div>' +\n '{{~}}' +\n '</div>' +\n '{{?}}' +\n '<div class=\"b-ticket__clear\"></div>' +\n '{{?}}' +\n '</div>' +\n '</div>' +\n '</td>' +\n '<td class=\"b-ticket__table-col b-ticket__table-col_type_avatar\">' +\n '{{?value.avatar.is && (value.type === \"incoming\" || value.type === \"outcoming\")}}' +\n '<div class=\"b-ticket__avatar b-ticket__avatar_{{=value.type}}\">' +\n '<img src=\"{{=value.avatar.src}}\" width=\"{{=value.avatar.width}}\" height=\"{{=value.avatar.height}}\" class=\"b-ticket__avatar-img\"/>' +\n '</div>' +\n '{{?}}' +\n '</td>' +\n '</tr>' +\n '{{~}}';\n\n var formItemTicket = '<div class=\"b-ticket\" {{?it.fontsize||it.fontfamily}} style=\"{{?it.fontsize}}font-size: {{=it.fontsize}}px;{{?}} {{?it.fontfamily}}font-family: {{=String(it.fontfamily).replace(/\"/g, \\'"\\')}}{{?}}{{?}}\">' +\n '<div class=\"b-ticket__btn-move-wrapper\"><div class=\"b-ticket__btn-move_up b-ticket__btn-move i-ticket__btn-move_up\" data-tabid=\"{{=it.id}}\"></div><div class=\"b-ticket__btn-move_down b-ticket__btn-move i-ticket__btn-move_down\" data-tabid=\"{{=it.id}}\"></div></div>' +\n '<table class=\"b-ticket__table {{?it.fmsgtype === \"outcoming\"}}b-ticket__table_my_outcoming{{?}}\" id=\"{{=it.id}}-{{=it.name}}\" data-type=\"ticket\">' +\n '<tbody class=\"b-table__tbody\">' +\n formItemTicketMsg +\n '</tbody>' +\n '</table>' +\n '</div>';\n\n var formItemSelectAutocomplete = '<div class=\"{{=it.depend}} b-select-ac\">' +\n '<input type=\"text\" autocomplete=\"off\" data-name=\"{{=it.name}}\" {{=it.attr}} class=\"{{=it.classes}} b-input b-select-ac__input force-hint\" id=\"{{=it.name}}-{{=it.id}}\" data-tabid=\"{{=it.id}}\" />' +\n '</div>' +\n '<div class=\"b-select-ac__list-scroll-wrapper\" id=\"opt-{{=it.name}}-{{=it.id}}\" data-tabid=\"{{=it.id}}\">' +\n '<div class=\"b-select-ac__list-wrapper {{=it.dependFields}}\" id=\"cont-b-select-ac-list__{{=it.name}}-{{=it.id}}\">' +\n '<ul class=\"b-select-ac__list\" data-id=\"{{=it.name}}-{{=it.id}}\" id=\"b-select-ac-list__{{=it.name}}-{{=it.id}}\"></ul>' +\n '<input value=\"{{=it.value}}\" type=\"hidden\" name=\"{{=it.name}}\" class=\"{{=it.classes}}\" id=\"key-{{=it.name}}-{{=it.id}}\" data-tabid=\"{{=it.id}}\"/>' +\n '<div>' +\n '</div>';\n\n var formItemFrame = '<div class=\"b-form-frame\">' +\n '<iframe frameborder=\"0\" id=\"{{=it.name}}-{{=it.id}}\" name=\"{{=it.name}}\" class=\"{{?it.fullheight}}i-control__fullwidth{{?}}\" data-type=\"frame\" src=\"{{=it.value}}\" width=\"100%\" height=\"{{=it.height}}\"></iframe>' +\n '<div class=\"b-resizer\" id=\"resizer_editor-{{=it.id}}\" data-id=\"{{=it.name}}-{{=it.id}}\" data-tabid=\"{{=it.id}}\"></div>' +\n '</div>';\n\n var formItemDateTime = '<div class=\"b-form-datetime\" id=\"{{=it.id}}-{{=it.name}}\" data-type=\"datetime\" data-difftime=\"{{=it.difftime}}\">{{=it.value}}</div>';\n\n var formPageTitle = '<h3 class=\"l-form-page__title-wr\" data-name=\"{{=it.name}}\" id=\"tblock-{{=it.id}}\" data-type=\"{{=it.type}}\" data-block-type=\"{{=it.blockType}}\">' +\n '<div tabindex=\"0\" class=\"b-form-page__title i-form-page__title\">' +\n '<span class=\"b-form-page__title-content\" data-mn=\"{{=it.name}}\">{{=it.title}}</span>' +\n '{{?it.reload}}<span class=\"dashblock-reload hint\" data-hint-mn=\"hint_reload\" data-hint=\"{{=App.u.escapeQuote(it.hintReload)}}\"></span>{{?}}' +\n '<span class=\"b-triangle hint\" data-hint-expanded=\"{{=App.u.escapeQuote(it.hintCollapse)}}\" data-hint-collapsed=\"{{=App.u.escapeQuote(it.hintExpand)}}\" data-state=\"{{?it.collapsed}}collapsed{{??}}expanded{{?}}\"></span>' +\n '</div>' +\n '<div class=\"b-form-page__vline\"></div>' +\n '</h3>';\n\n var formItemMgrview = '<div class=\"mgrview\" id=\"mgrview-{{=it.tabId}}\"><!--<img src=\"{{=it.theme}}/img/hue.png\" width=\"251\" height=\"168\"/>--><div id=\"{{=it.tabId}}-color1\" class=\"color1 color\"></div><div class=\"color2 color\" id=\"{{=it.tabId}}-color2\" ></div><div class=\"color3 color\" id=\"{{=it.tabId}}-color3\" ></div><div class=\"color4 color\" id=\"{{=it.tabId}}-color4\" ></div><div class=\"color5 color\" id=\"{{=it.tabId}}-color5\" ></div><div class=\"color6 color\" id=\"{{=it.tabId}}-color6\" ></div><div class=\"color7 color\" id=\"{{=it.tabId}}-color7\" ></div></div>';\n\n var formPageWrapper = '<div class=\"b-form-page b-form-page_view_{{=it.view}} {{=it.classes}} {{?it.withList}}b-form-page_withlist_yes{{?}} {{?it.collapsed}}b-form-page_st_collapsed{{?}}\" id=\"page-{{=it.name}}-{{=it.tabId}}\" data-tabid=\"{{=it.tabId}}\" {{ if (it.hide) { for(var i =0; i< it.hide.length; i++) { }} {{=it.hide[i].name + \"-\" + hash(it.hide[i].value)}}=\"yes\" {{ } } }} {{ if (it.show) { for (var i =0; i< it.show.length; i++) { }} {{=it.show[i].name + \"-\" + it.hash(it.show[i].value)}}=\"yes\" {{ } } }}>' +\n '{{=it.title}}' +\n '<div class=\"b-form-page__inner\" style=\"display:{{=it.display}};\" >' +\n '<table class=\"l-form__table\">' +\n '<tbody class=\"b-table__tbody\">' +\n '{{=it.content}}' +\n '</tbody>' +\n '</table>' +\n '</div>' +\n '</div>';\n\n var filterWrapper = '<div class=\"filter-inner\">' +\n '<form name=\"frm-{{=it.tabId}}\" id=\"frm-{{=it.tabId}}\">' +\n '<input type=\"hidden\" value=\"{{=it.func}}\" name=\"func\"/>' +\n '<div class=\"filter-inner-inner\">' +\n '<div class=\"filter-cont\"><table><tr>{{=it.form}}</tr></table></div>' +\n '<div class=\"filter-btn-wrapper\">' +\n '<div class=\"filter-btns\">' +\n '<div class=\"b-button b-button__filter-set b-button_style_ok\" data-tabid=\"{{=it.tabId}}\" data-disabled=\"{{=it.disabled}}\" tabindex=\"0\">{{=it.filterMsg.findMsg}}</div>' +\n '<div class=\"b-button b-button__filter-save\" data-id=\"{{=it.tabId}}\" tabindex=\"0\">{{=it.filterMsg.saveMsg}}<div class=\"b-button__filter-save-name\">{{=it.sfname||\"\"}}</div></div>' +\n '<div class=\"b-button b-button__filter-clear\" data-tabid=\"{{=it.tabId}}\" tabindex=\"0\">{{=it.filterMsg.clearMsg}}</div>' +\n '</div>' +\n '</div>' +\n '<div class=\"clearBoth\"></div>' +\n '</div>' +\n '</form>' +\n '</div>';\n\n var filterItem =\n '<tr class=\"filter-item {{=it.classes}} l-form__row\" {{ if (it.hide) { for (var i = 0; i < it.hide.length; i++) { }} {{=it.hide[i].name + \"-\" + hash(it.hide[i].value)}}=\"yes\" {{ } } }} {{ if (it.show) { for (var i = 0; i < it.show.length; i++) { }} {{=it.show[i].name + \"-\" + hash(it.show[i].value)}}=\"yes\" {{ } } }}>' +\n '<td class=\"filter-first\">{{=it.first}}</td>' +\n '<td class=\"filter-second\"><div class=\"filter-input\">{{=it.second}}</div></td>' +\n '</tr>';\n\n var filterRow = '<td class=\"filter-col\">' +\n '<table class=\"filter-item__table filter-table_n_{{=it.index}}\">{{=it.content}}</table>' +\n '</td>';\n\n var filterSavedItem =\n '<div class=\"b-filter__saved-item {{?it.active}}b-filter__saved-item_st_active{{?}}\">' +\n '<div class=\"b-filter__saved-item-inner\">' +\n '<input type=\"text\" class=\"b-filter__saved-name-edit\" ' +\n 'id=\"b-filter__saved-name-edit_tid_{{=it.id}}\" value=\"{{=it.name}}\" ' +\n 'data-id=\"{{=it.id}}\" data-func=\"{{=it.func}}\" data-tabid=\"{{=it.tabId}}\" data-name=\"{{=it.name}}\" />' +\n '<span class=\"b-filter__saved-name\">{{=it.name}}</span>' +\n '</div>' +\n '<span class=\"b-filter__saved-edit\" data-id=\"{{=it.id}}\"></span>' +\n '<span class=\"b-filter__saved-remove\" data-id=\"{{=it.id}}\"></span>' +\n '</div>';\n\n var formItemRowDesc = '<tr class=\"{{=it.classes}} l-form__row\" {{ if (it.hide) { for (var i = 0; i < it.hide.length; i++) { }} {{=it.hide[i].name + \"-\" + hash(it.hide[i].value)}}=\"yes\" {{ } } }} {{ if (it.show) { for (var i =0; i < it.show.length; i++) { }} {{=it.show[i].name + \"-\" + hash(it.show[i].value)}}=\"yes\" {{ } } }}>' +\n '<td class=\"l-form__col l-form__col_cont_label\" colspan=\"4\">{{=it.second}}</td>' +\n '</tr>';\n\n var formItemRow = '<tr class=\"{{=it.classes}} l-form__row i-form__item\" {{ if (it.hide) { for (var i =0; i < it.hide.length; i++) { }} {{=it.hide[i].name + \"-\" + hash(it.hide[i].value)}}=\"yes\" {{ } } }} {{ if (it.show) { for (var i =0; i < it.show.length; i++) { }} {{=it.show[i].name + \"-\" + hash(it.show[i].value)}}=\"yes\" {{ } } }}>' +\n '<td class=\"l-form__col l-form__col_cont_label\">{{=it.first}}</td>' +\n '<td class=\"l-form__col l-form__col_cont_control\" {{=it.colspan}}>' +\n '<div class=\"l-form__table-control-wrapper\">' +\n '<table class=\"l-form__table-control\">' +\n '<tbody class=\"b-table__tbody\">' +\n '<tr>' +\n '<td class=\"l-form__col-control\">' +\n '<div class=\"l-form__control-wr\">{{=it.second}}</div>' +\n '</td>' +\n '<td class=\"l-form__col l-form__col_cont_hint\">' +\n '<div class=\"field-help {{=it.hint}} hint\" data-hint-mn=\"{{=it.fname}}\" data-hint=\"{{=it.third}}\"></div>' +\n '</td>' +\n '<td class=\"l-form__col l-form__col_cont_status\">' +\n '<div class=\"field-desc\" data-mn=\"{{=it.descName}}\">{{=it.desc}}</div>' +\n '<div class=\"field-status\"></div>' +\n '{{?it.devMode || it.testMode}}' +\n '<div class=\"field-settings\">' +\n '{{?it.devMode}}' +\n '<a href=\"#\" class=\"devel-link-settings devel-link-settings--field \" data-elid=\"{{=it.fname}}\" data-tabid=\"{{=it.tabId}}\"></a>' +\n '<a href=\"#\" class=\"devel-link-delete devel-link-delete--field\" data-elid=\"{{=it.fname}}\" data-name=\"{{=it.label}}\" data-tabid=\"{{=it.tabId}}\"></a>' +\n '{{??}}' +\n '<a href=\"#\" class=\"testmode__form-link b-elem_style_gracescale\" data-elid=\"{{=it.fname}}\" data-tabid=\"{{=it.tabId}}\"></a>' +\n '{{?}}' +\n '</div>' +\n '{{?}}' +\n '</td>' +\n '</tr>' +\n '<tr class=\"l-form__col-error\">' +\n '<td colspan=\"3\" class=\"\">' +\n '<div class=\"b-error-box__wrapper\" data-id=\"{{=it.id}}\">' +\n '<div class=\"b-error-box\">' +\n '<div class=\"b-error-box__top-triangle\"></div>' +\n '<div class=\"b-error-box__inner\">{{=it.error}}</div>' +\n '</div>' +\n '</div>' +\n '</td>' +\n '</tr>' +\n '</tbody>' +\n '</table>' +\n '</div>' +\n '</td>' +\n '<td class=\"l-form__col l-form__col_cont_row-end\"></td>' +\n '</tr>';\n\n var formItemFullWidthRow = '<tr class=\"{{=it.classes}} l-form__row i-form__item\" {{ if (it.hide) { for (var i =0; i < it. hide.length; i++) { }} {{=it.hide[i].name + \"-\" + hash(it.hide[i].value)}}=\"yes\" {{ } } }} {{ if (it.show) { for (var i =0; i < it.show.length; i++) { }} {{=it.show[i].name + \"-\" + hash(it.show[i].value)}}=\"yes\" {{ } } }}>' +\n '<td colspan=\"3\" class=\"l-form__col_type_fullwidth l-form__col l-form__col_cont_control\">' +\n '{{=it.first}}' +\n '<table class=\"l-table-fullwidth\">' +\n '<tbody class=\"b-table__tbody\">' +\n '<tr>' +\n '<td class=\"l-form__col-control\">' +\n '<div class=\"l-form__control-wr\">{{=it.second}}</div>' +\n '</td>' +\n '<td class=\"l-form__col l-form__col_cont_hint\">' +\n '<div class=\"field-help {{=it.hint}} hint\" data-hint-mn=\"{{=it.fname}}\" data-hint=\"{{=it.third}}\"></div>' +\n '</td>' +\n '<td class=\"l-form__col l-form__col_cont_status\">' +\n '<div class=\"field-status\" ></div>' +\n '{{?it.devMode || it.testMode}}' +\n '<div class=\"field-settings\">' +\n '{{?it.devMode}}' +\n '<a href=\"#\" class=\"devel-link-settings devel-link-settings--field \" data-elid=\"{{=it.fname}}\" data-tabid=\"{{=it.tabId}}\"></a>' +\n '<a href=\"#\" class=\"devel-link-delete devel-link-delete--field\" data-elid=\"{{=it.fname}}\" data-name=\"{{=it.label}}\" data-tabid=\"{{=it.tabId}}\"></a>' +\n '{{??}}' +\n '<a href=\"#\" class=\"testmode__form-link b-elem_style_gracescale\" data-elid=\"{{=it.fname}}\" data-tabid=\"{{=it.tabId}}\"></a>' +\n '{{?}}' +\n '</div>' +\n '{{?}}' +\n '</td>' +\n '</tr>' +\n '<tr class=\"l-form__col-error\">' +\n '<td colspan=\"3\" class=\"error\">' +\n '<div class=\"b-error-box__wrapper\" data-id=\"{{=it.id}}\">' +\n '<div class=\"b-error-box\">' +\n '<div class=\"b-error-box__top-triangle\"></div>' +\n '<div class=\"b-error-box__inner\">{{=it.error}}</div>' +\n '</div>' +\n '</div>' +\n '</td>' +\n '</tr>' +\n '</tbody>' +\n '</table>' +\n '</td>' +\n '</tr>';\n\n var formItemFormWidthRow = '<tr class=\"{{=it.classes}} l-form__row i-form__item\" {{ if (it.hide) { for (var i =0; i < it. hide.length; i++) { }} {{=it.hide[i].name + \"-\" + hash(it.hide[i].value)}}=\"yes\" {{ } } }} {{ if (it.show) { for (var i =0; i < it.show.length; i++) { }} {{=it.show[i].name + \"-\" + hash(it.show[i].value)}}=\"yes\" {{ } } }}>' +\n '<td colspan=\"2\" class=\"formwidth l-form__col l-form__col_cont_control\">' +\n '{{=it.first}}' +\n '<table class=\"l-form__table-formwidth l-table-clean\">' +\n '<tbody class=\"b-table__tbody\">' +\n '<tr>' +\n '<td class=\"l-form__col-control\">' +\n '<div class=\"l-form__control-wr\">{{=it.second}}</div>' +\n '</td>' +\n '<td class=\"l-form__col l-form__col_cont_hint\">' +\n '<div class=\"field-help {{=it.hint}} hint\" data-hint-mn=\"{{=it.fname}}\" data-hint=\"{{=it.third}}\"></div>' +\n '</td>' +\n '<td class=\"l-form__col l-form__col_cont_status\">' +\n '<div class=\"field-desc\"></div>' +\n '<div class=\"field-status\" ></div>' +\n '</td>' +\n '</tr>' +\n '<tr class=\"l-form__col-error\">' +\n '<td colspan=\"3\" class=\"error\">' +\n '<div class=\"b-error-box__wrapper\" data-id=\"{{=it.id}}\">' +\n '<div class=\"b-error-box\">' +\n '<div class=\"b-error-box__top-triangle\"></div>' +\n '<div class=\"b-error-box__inner\">{{=it.error}}</div>' +\n '</div>' +\n '</div>' +\n '</td>' +\n '</tr>' +\n '</tbody>' +\n '</table>' +\n '</td>' +\n '<td class=\"l-form__col l-form__col_cont_row-end\"></td>' +\n '</tr>';\n\n var formItemRowWithoutLabel = '<tr class=\"{{=it.classes}} l-form__row i-form__item without-label\" {{ if (it.hide) { for (var i =0; i < it.hide.length; i++) { }} {{=it.hide[i].name + \"-\" + hash(it.hide[i].value)}}=\"yes\" {{ } } }} {{ if (it.show) { for (var i = 0; i< it.show.length; i++) { }} {{=it.show[i].name + \"-\" + hash(it.show[i].value)}}=\"yes\" {{ } } }}>' +\n '<td class=\"l-form__col l-form__col_cont_control\" colspan=\"2\">' +\n '<table class=\"l-table-clean\">' +\n '<tbody class=\"b-table__tbody\">' +\n '<tr>' +\n '<td class=\"l-form__col-control\">' +\n '<div class=\"l-form__control-wr\">{{=it.second}}</div>' +\n '</td>' +\n '<td class=\"l-form__col l-form__col_cont_hint\">' +\n '<div class=\"field-help {{=it.hint}} hint\" data-hint-mn=\"{{=it.fname}}\" data-hint=\"{{=it.third}}\"></div>' +\n '</td>' +\n '<td class=\"l-form__col l-form__col_cont_status\">' +\n '<div class=\"field-desc\">{{=it.desc}}</div>' +\n '<div class=\"field-status\"></div>' +\n '{{?it.devMode}}' +\n '<div class=\"field-settings\">' +\n '<a href=\"#\" class=\"devel-link-settings devel-link-settings--field\" data-elid=\"{{=it.fname}}\" data-tabid=\"{{=it.tabId}}\"></a>' +\n '<a href=\"#\" class=\"devel-link-delete devel-link-delete--field\" data-elid=\"{{=it.fname}}\" data-name=\"{{=it.label}}\" data-tabid=\"{{=it.tabId}}\"></a>' +\n '</div>' +\n '{{?}}' +\n '</td>' +\n '</tr>' +\n '<tr class=\"l-form__col-error\">' +\n '<td colspan=\"3\" class=\"error\">' +\n '<div class=\"b-error-box__wrapper\" data-id=\"{{=it.id}}\">' +\n '<div class=\"b-error-box\">' +\n '<div class=\"b-error-box__top-triangle\"></div>' +\n '<div class=\"b-error-box__inner\">{{=it.error}}</div>' +\n '</div>' +\n '</div>' +\n '</td>' +\n '</tr>' +\n '</tbody>' +\n '</table>' +\n '<td class=\"l-form__col l-form__col_cont_row-end\"></td>' +\n// '</td>' +\n '</tr>';\n\n var formItemRowHidden = '<tr class=\"hidden l-form__row_type_hidden\">' +\n '<td class=\"l-form__col l-form__col_cont_control\" colspan=\"4\">{{=it.second}}</td>' +\n '</tr>';\n\n var formItemRowTextdata = '<tr class=\"{{=it.classes}} l-form__row i-form__item\" {{ if (it.hide) { for (var i = 0; i < it.hide.length; i++) { }} {{=it.hide[i].name + \"-\" + hash(it.hide[i].value)}}=\"yes\" {{ } } }} {{ if (it.show) { for (var i =0; i < it.show.length; i++) { }} {{=it.show[i].name + \"-\" + hash(it.show[i].value)}}=\"yes\" {{ } } }}>' +\n '<td colspan=\"3\">{{=it.second}}</td>' +\n '</tr>';\n\n var formPlainHint = '<tr data-show-{{=it.name}}-{{=window.hash(it.key)}}=\"yes\" class=\"depended-hidden-s l-form__row l-form__row_type_plainhint\">' +\n '<td class=\"l-form__col-control\" colspan=\"2\">{{=window.htmlEncode(it.content)}}</td>' +\n '<td class=\"l-form__col l-form__col_cont_row-end\"></td>' +\n '</tr>';\n\n var tabLi = '<li class=\"tab-group\" id=\"{{=it.tabId}}\">' +\n '<span class=\"subtab switch first hint {{?it.isPin}}subtab_is_pin{{?}}\" id=\"switch-{{=it.tabId}}\" data-hint=\"{{=it.hint}}\" data-tabid=\"{{=it.tabId}}\">' +\n '<a href=\"#\" data-tabid=\"{{=it.tabId}}\"><div {{=it.pinIcon}}></div><span class=\"short\">{{=it.shortTitle}}</span><span class=\"full\">{{=it.title}}</span></a>' +\n '<a href=\"#\" class=\"close\" rel=\"{{=it.tabId}}\"><div class=\"b-tab-close\"></div></a>' +\n '</span>' +\n '</li>';\n\n var tabChld = '<span id=\"{{=it.tabId}}\"><span class=\"sepr\"></span>' +\n '<span class=\"subtab switch hint\" id=\"switch-{{=it.tabId}}\" data-hint=\"{{=it.hint}}\" data-tabid=\"{{=it.tabId}}\">' +\n '<a href=\"#\" data-tabid=\"{{=it.tabId}}\"><span class=\"short\">{{=it.shortTitle}}</span><span class=\"full\">{{=it.title}}</span></a>' +\n '<a href=\"#\" class=\"close\" rel=\"{{=it.tabId}}\"><div class=\"i-tab-close b-tab-close\"></div></a>' +\n '</span>' +\n '</span>';\n\n var progressBar = '<div id=\"{{=it.tabId}}-progressbar\" class=\"b-progressbar__outer\">' +\n '<div class=\"b-progressbar__inner\">' +\n '<div class=\"b-progressbar__comment\">{{=it.comment}}</div>' +\n '<div class=\"b-progressbar__loader-wr\">' +\n '<div class=\"b-progressbar__loader {{=it.colorClass}}\" style=\"width: {{=it.width}}%;\">{{=it.per}}</div>' +\n '</div>' +\n '</div>' +\n '<div/>';\n\n var reportBand = '<div class=\"band-content {{=it.fullwidth}}\" id=\"{{=it.aid}}\">' +\n '<div class=\"band-title {{=it.titleClass}}\">{{=it.title}}</div>' +\n '<div class=\"band-graphic\" ><div class=\"anychart\" id=\"{{=it.gid}}\">' +\n //wrappers for graphics\n '{{ for (var i = 0; i < it.dc; i++) { }}' +\n '<div id=\"{{=it.gid}}{{=i}}\"></div>' +\n '{{ } }}' +\n //wrappers for graphics\n '</div></div>' +\n '<div class=\"band_show\">' +\n '<div class=\"band_show_button {{=it.hidden}}\" data-id=\"{{=it.id}}\">' +\n '<span class=\"show_msg\">{{=it.showMsg}}</span>' +\n '<span class=\"hide_msg\">{{=it.hideMsg}}</span>' +\n '<span class=\"triangle-band\"></span></div>' +\n '</div>' +\n '<div class=\"band-table block-table {{=it.hiddenClass}}\" id=\"{{=it.id}}\">{{=it.table}}</div>' +\n '</div>';\n\n var emptyBandOverlay = '<div class=\"b-band__empty-overlay\"></div>' +\n '<div class=\"b-band__empty-msg\">{{=it.emptymsg}}</div>' +\n '<div class=\"b-band__empty-wrapper\" id=\"{{=it.tabId}}-band-empty\"></div>';\n\n var reportBandDash = '<div class=\"band-content {{=it.fullwidth}}\">' +\n '{{?it.empty}}' +\n emptyBandOverlay +\n '{{?}}' +\n '<div class=\"band-title {{=it.titleClass}}\">{{=it.title}}</div>' +\n '<div id=\"{{=it.gid}}\" class=\"band-chart-cont\"></div></div>' +\n '</div>';\n\n var fatalError = '<div id=\"fatal-error-{{=it.id}}\" class=\"b-fatal-error b-err__{{=it.type}}\">' +\n '<div class=\"b-fatal-error__round\">' +\n '<div class=\"b-fatal-error__inner\">' +\n '<div class=\"b-fatal-error__sign\">' +\n '<div class=\"b-fatal-error__sign-top\"></div>' +\n '<div class=\"b-fatal-error__sign-body\"></div>' +\n '<div class=\"b-fatal-error__sign-empty\"></div>' +\n '<div class=\"b-fatal-error__sign-dot\"></div>' +\n '</div>' +\n '<div class=\"b-fatal-error__message\">' +\n '{{=it.message}}' +\n '{{?it.ref}}' +\n '<div class=\"more b-fatal-error__more-link\"><a href=\"{{=it.ref}}&newwindow=yes\" target=\"_blank\">{{=it.moreMsg}}</a></div>' +\n '{{?}}' +\n '{{?it.refreshLink}}' +\n '<div class=\"m-item b-fatal-error__refresh-link\"><a href=\"#\" data-url=\"{{=it.refreshLink}}\" >{{=it.refreshLinkMsg}}</a></div>' +\n '{{?}}' +\n '</div>' +\n '{{?it.id}}' +\n '<div class=\"l-buttons l-buttons_for_fatalerror\">' +\n '<div class=\"b-button b-button_type_cancel b-button_for_fatalerror i-button_type_cancel\" data-flags=\"refresh\" tabindex=\"0\" data-tabid=\"{{=it.id}}\">{{=it.msgClose}}</div>' +\n '</div>' +\n '{{?}}' +\n '</div>' +\n '</div>' +\n '<div class=\"b-fatal-error__triangle\">' +\n '</div>' +\n '</div>';\n\n var editinListForm = '<div>' +\n '<form id=\"editinlist-form-{{=it.id}}\" class=\"l-form__row\">' +\n '{{=it.field}}' +\n '<input type=\"hidden\" name=\"elid\" value=\"{{=it.elid}}\" />' +\n '<input type=\"hidden\" name=\"sok\" value=\"ok\" />' +\n '<input type=\"hidden\" name=\"func\" value=\"{{=it.func}}\" />' +\n '</form>' +\n '<div class=\"l-buttons l-buttons_for_editinlist\">' +\n '<div class=\"b-button b-button_style_small b-button_style_green i-btn-editlis-ok\" data-id=\"{{=it.id}}\">✔</div>' +\n '<div class=\"b-button b-button_style_small b-button_style_red i-btn-editlis-cancel\" data-id=\"{{=it.id}}\">✘</div>' +\n '</div>' +\n '<div id=\"err-cont-{{=it.id}}\" class=\"editlist-err-cont\"></div>' +\n '</div>';\n\n var hintList = '{{?val.hintByName}}<div class=\"field-help field-help_available_yes hint b-form-list__hint\" data-hint=\"{{=App.u.escapeQuote(val.hintByName)}}\"></div>{{?}}';\n\n\n var formListFilterWrapper = '<div id=\"{{=it.id}}-{{=it.name}}\" data-type=\"listfilter\">{{=it.content}}</div>';\n\n var formListFilter = '<div class=\"checkbox i-form__item i-form-list__filter\" data-srcname=\"{{=it.srcName}}\" data-tabid=\"{{=it.id}}\">' +\n '<div class=\"b-form-list__filter\">' +\n '{{~it.list :val :ind}}' +\n '{{val.id = it.id;}}' +\n formItemCheckbox +\n '{{~}}' +\n '</div>' +\n '<div class=\"b-form-list__filter-clear i-form-list__filter-clear\">{{=it.resetMsg}}</div>' +\n '<div class=\"b-form-list__filter-notfound\">{{=it.notFoundMsg}}</div>' +\n '</div>';\n\n var formListContent =\n `<div class=\"b-form-list b-form-list_view_{{=it.view}} i-form-list\" id=\"form-list-{{=it.id}}-{{=it.name}}\">\n <table class=\"b-form-list__table\" data-name=\"{{=it.name}}\" data-key=\"{{=it.key}}\" id=\"inner-form-list-{{=it.id}}-{{=it.name}}\">\n <tbody class=\"b-table__tbody\">\n {{~it.rows :v :i}}\n <tr class=\"b-form-list__row b-form-list__row_t_{{?(i % 2) === 0}}even{{??}}odd{{?}}\n {{?it.filterfield && v[it.filterfield]}} row__has__tags\n {{~v[it.filterfield].v :val :ind}} filter__{{=val}} {{~}}{{??}} row__nohas__tags{{?}}\">\n {{ for (var key in it.coldata) { }}\n <td class=\"b-form-list__col b-form-list__col_align_{{=it.coldata[key].align}} b-form-list__col_type_{{=it.coldata[key].type}} {{?v[key] && v[key].header}}b-form-list__col_header_yes{{?}} b-form-list__col_name_{{=key}}\" data-colname=\"{{=key}}\" style=\"width: {{=it.coldata[key].width}}; min-width: {{=it.coldata[key].width}}\">\n <div class=\"b-form-list__col-inner b-form-list__col-inner_type_{{=it.coldata[key].type}} {{?it.coldata[key].hint && v[key + \"_hint\"]}}hint{{?}}\" {{?it.coldata[key].hint && v[key + \"_hint\"]}}data-hint=\"{{=App.u.escapeQuote(v[key + \"_hint\"].v)}}\" {{?}}>\n {{?v[key]}}\n {{?it.coldata[key].type === \"data\" || it.coldata[key].type === \"msg\" || v[key].header}}\n <div class=\"b-form-list__data {{?v[key].color}}status-{{=v[key].color}}{{?}} {{?it.testMode}}i-testmode-field{{?}}\">\n {{~v[key].props :prop :index }}\n {{?index !== 0}}\n <div class=\"s-icon s16x16 props hint\" style=\"background-image: url({{=prop.img}})\" data-hint=\"{{=App.u.escapeQuote(prop.hint)}}\"></div>\n {{?}}\n {{~}}\n {{=window.filterXSS(window.htmlDecode(v[key].v))}}</div>\n {{??it.coldata[key].type === \"img\"}}\n {{?v[key].src}}\n {{?v[key].preview}}\n <a href=\"{{=v[key].src}}\" class=\"b-image-for-view\" data-lightbox=\"formlist\" target=\"_blank\">\n {{?}}\n <img src=\"{{=v[key].src}}\" class=\"b-form-list__img\" width=\"{{=v[key].width}}\" height=\"{{=v[key].height}}\"/>\n {{?v[key].preview}}\n </a>\n {{?}}\n {{??v[key].img}}\n <div class=\"{{=v[key].img}}\"></div>\n {{?}}\n {{??it.coldata[key].type === \"button\"}}\n {{~v[key] :val :ind}}\n ${button}\n {{~}}\n {{??it.coldata[key].type === \"control\"}}\n {{~v[key] :val :ind}}\n {{?val.type === \"checkbox\"}}\n {{val.id = it.id;}}\n <div class=\"i-form__item b-form-list__form-item\"><div class=\"b-form-list__control-wrapper\">${formItemCheckbox}</div>${hintList}</div>\n {{??val.type === \"select\"}}\n {{val.id = it.id;}}\n <div class=\"i-form__item b-form-list__form-item\"><div class=\"b-form-list__control-wrapper\">${formItemSelect}</div>${hintList}</div>\n {{??val.type === \"text\"}}\n {{val.id = it.id;}}\n <div class=\"i-form__item b-form-list__form-item\"><div class=\"b-form-list__control-wrapper\">${formItemInput}</div>${hintList}</div>\n {{?}}\n {{~}}\n {{?}}\n {{?}}\n </div>\n </td>\n {{ } }}\n </tr>\n {{~}}\n </tbody>\n </table>\n </div>`;\n\n var formListBlocksContent = '{{?it.label}}<h3 class=\"b-form-blocks__label\">{{=it.label}}</h3>{{?}}' +\n '<div class=\"b-form-blocks\">' +\n '{{~it.rows :v :i}}' +\n '<div class=\"b-form-blocks__block {{?it.filterfield && v[it.filterfield]}} row__has__tags' +\n '{{~v[it.filterfield].v :val :ind}} filter__{{=val}} {{~}}{{??}} row__nohas__tags{{?}}\">' +\n '{{ for (var key in it.coldata) { }}' +\n // '<td class=\"b-form-list__col align-{{=it.coldata[key].align}}\" style=\"width: {{=it.coldata[key].width}};\">' +\n '<div class=\"b-form-list__col-inner b-form-blocks__col-inner_type_{{=it.coldata[key].type}}\">' +\n '{{?v[key]}}' +\n '{{?it.coldata[key].type === \"data\" || it.coldata[key].type === \"msg\"}}' +\n '<div class=\"b-form-list__data {{?v[key].color}}status-{{=v[key].color}}{{?}}\">{{=window.filterXSS(window.htmlDecode(v[key].v))}}</div>' +\n '{{??it.coldata[key].type === \"img\"}}' +\n '{{?v[key].src}}' +\n '<img src=\"{{=v[key].src}}\" class=\"b-form-list__img\" width=\"{{=v[key].width}}\" height=\"{{=v[key].height}}\"/>' +\n '{{??v[key].img}}' +\n '<div class=\"{{=v[key].img}}\"></div>' +\n '{{?}}' +\n '{{??it.coldata[key].type === \"button\"}}' +\n '<div class=\"b-form-list__button-wrapper\">' +\n '{{~v[key] :val :ind}}' +\n button +\n '{{~}}' +\n '</div>' +\n '{{?}}' +\n '{{?}}' +\n '</div>' +\n // '</td>' +\n '{{ } }}' +\n '</div>' +\n '{{~}}' +\n '</div>';\n\n var formListItemRow =\n '<tr class=\"{{=it.classes}} l-form__row\" {{ if (it.hide) { for (var i =0; i < it.hide.length; i++) { }} {{=it.hide[i].name + \"-\" + hash(it.hide[i].value)}}=\"yes\" {{ } } }} {{ if (it.show) { for (var i =0; i < it.show.length; i++) { }} {{=it.show[i].name + \"-\" + hash(it.show[i].value)}}=\"yes\" {{ } } }}>' +\n '<td class=\"l-form__col l-form__col_cont_control\" colspan=\"3\">' +\n '<div id=\"{{=it.id}}-{{=it.name}}\" class=\"{{=it.id}}-list\" data-type=\"list\" data-name=\"{{=it.name}}\">' +\n '{{?it.view == \"block\"}}' +\n formListBlocksContent +\n '{{??}}' +\n formListContent +\n '{{?}}' +\n '</div>' +\n '</td>' +\n '</tr>';\n\n var tip = '<div class=\"b-tip b-tip_name_{{=it.name}}\">' +\n '<div class=\"b-tip__inner\">' +\n '{{=it.content}}' +\n '</div>' +\n '<div class=\"b-tip__close\" data-name=\"{{=it.name}}\"></div>' +\n '</div>';\n\n var usefulLinks = '<div class=\"b-useful-links {{?it.isCollapsed}}b-useful-links_is_collapsed{{?}}\">' +\n '<div class=\"b-tip__close i-userful-links-collapse\"></div>' +\n '<div class=\"b-tip__inner\">' +\n '<div class=\"b-useful-links__title\">{{=it.title}}</div>' +\n '<div class=\"b-useful-links__content\">{{=it.content}}</div>' +\n '</div>' +\n '</div>';\n\n var infoList = '<div class=\"b-infolist\">' +\n '<table class=\"b-infolist__table\">' +\n '<tbody class=\"b-table__tbody\">' +\n '{{~it.rows :v :i}}' +\n '<tr class=\"b-infolist__row {{?v.type === \"header\"}}b-infolist__row_type_header{{?}}\">' +\n '{{?v.type === \"header\"}}' +\n '<td class=\"b-infolist__col b-infolist__col_type_header\" colspan=\"2\">{{=v.label}}</td>' +\n '{{??v.type === \"data\"}}' +\n '<td class=\"b-infolist__col b-infolist__col_type_label\">{{=v.label}}</td>' +\n '<td class=\"b-infolist__col b-infolist__col_type_value status-{{=v.color}} {{?it.testMode}}i-testmode-field{{?}} hint\" data-hint=\"{{=v.hint}}\" data-name=\"{{=v.name}}\">{{=v.value}}</td>' +\n '{{??v.type === \"link\"}}' +\n '<td class=\"b-infolist__col b-infolist__col_type_label\">{{=v.label}}</td>' +\n '{{?v.link}}' +\n '<td class=\"b-infolist__col b-infolist__col_type_value m-item\"><a href=\"#\" data-url=\"{{=v.link}}\" data-name=\"{{=v.name}}\" data-hint=\"{{=v.hint}}\" class=\"i-menu-link b-infolist__col_type_value {{?it.testMode}}i-testmode-field{{?}} hint\">{{=v.value}}</a></td>' +\n '{{??v.url}}' +\n '<td class=\"b-infolist__col b-infolist__col_type_value\"><a href=\"{{=v.url}}\" target=\"_blank\" class=\"b-infolist__col_type_value {{?it.testMode}}i-testmode-field{{?}} hint\" data-hint=\"{{=v.hint}}\">{{=v.value}}</a></td>' +\n '{{?}}' +\n '{{??v.type === \"indicator\"}}' +\n '<td class=\"b-infolist__col b-infolist__col_type_label\">{{=v.label}}</td>' +\n '<td class=\"b-infolist__col b-infolist__col_type_value m-item {{?it.testMode}}i-testmode-field{{?}}\" data-name=\"{{=v.name}}\">{{=v.value}} (<span class=\"status-{{=v.color}}\">{{=v.suffix}}</span>)</td>' +\n '{{?}}' +\n '</tr>' +\n '{{~}}' +\n '</tbody>' +\n '</table>' +\n '</div>';\n\n var fatalAlert = '<div class=\"b-alert__inner {{?it.refreshLink}} b-alert__inner_t_refresh-link{{?}}\">' +\n '<div class=\"b-alert__icon\">' +\n '<div class=\"b-alert__sign\">' +\n '<div class=\"b-alert__sign-top\"></div>' +\n '<div class=\"b-alert__sign-body\"></div>' +\n '<div class=\"b-alert__sign-empty\"></div>' +\n '<div class=\"b-alert__sign-dot\"></div>' +\n '</div>' +\n '</div>' +\n '<div class=\"b-alert__msg-outter\"><div class=\"b-alert__msg\">{{=it.msg}}</div></div>' +\n '{{?it.ref}}' +\n '<div class=\"more b-fatal-error__more-link\">' +\n '<a href=\"{{=it.ref}}\" target=\"_blank\">{{=it.moreMsg}}</a>' +\n '</div>' +\n '{{?}}' +\n '{{?it.refreshLink}}' +\n '<div class=\"m-item b-fatal-error__refresh-link\">' +\n '<a href=\"#\" data-url=\"{{=it.refreshLink}}\" >{{=it.refreshLinkMsg}}</a>' +\n '</div>' +\n '{{?}}' +\n '</div>' +\n '<div class=\"b-alert__clear\"></div>';\n\n var msgTemplList = '<div class=\"b-msg-templ\" data-target=\"{{=it.id}}\">' +\n '<div class=\"b-msg-templ__table\">' +\n '<div class=\"b-msg-templ__table-col b-msg-templ__table-col_content_yes\">' +\n '<ul class=\"b-msg-templ__title-content\">' +\n '{{~it.templList :v :i}}' +\n '<li class=\"b-msg-templ__title-content-item b-msg-templ__title-content-item_ind_{{=i}}\">{{=v.msg}}</li>' +\n '{{~}}' +\n '</ul>' +\n '</div>' +\n '<div class=\"b-msg-templ__table-col b-msg-templ__table-col_title_yes\">' +\n '<ul class=\"b-msg-templ__title-list\">' +\n '{{~it.templList :v :i}}' +\n '{{?i !== 0}}<li class=\"b-msg-templ__title-list-item b-msg-templ__title-list-item_is_comma\">, </li>{{?}}<li class=\"b-msg-templ__title-list-item\" data-ind=\"{{=i}}\" data-id=\"{{=v.id}}\">{{=v.name}}</li>' +\n '{{~}}' +\n '</ul>' +\n '</div>' +\n '</div>' +\n '</div>';\n\n var t = doT.template,\n vSettings = {};\n $.extend(vSettings, doT.templateSettings, { varname: 'val' });\n\n return {\n tabCont: t(tabCont),\n tabContEmpty: t(tabContEmpty),\n tabContForm: t(tabContForm),\n tabContMap: t(tabContMap),\n listPager: t(listPager),\n tabContDashBoard: t(tabContDashBoard),\n tabLi: t(tabLi),\n tabChld: t(tabChld),\n formPageTitle: t(formPageTitle),\n formItemInput: t(formItemInput, vSettings),\n formItemCaptcha: t(formItemCaptcha),\n formItemFile: t(formItemFile),\n formItemPassword: t(formItemPassword),\n formItemInputWithZoom: t(formItemInputWithZoom),\n formItemInputWithZoom1: t(formItemInputWithZoom1),\n formItemTextarea: t(formItemTextarea),\n formItemCheckbox: t(formItemCheckbox, vSettings),\n formItemLabel: t(formItemLabel),\n formItemExtrBtn: t(formItemExtrBtn),\n formItemDesk: t(formItemDesk),\n formItemDeskRadio: t(formItemDeskRadio),\n formItemSelect: t(formItemSelect, vSettings),\n formItemSelectList: t(formItemSelectList, vSettings),\n formItemMSelect: t(formItemMSelect),\n formItemHtmldata: t(formItemHtmldata),\n formItemTicket: t(formItemTicket),\n formItemLink: t(formItemLink),\n formItemSelectAutocomplete: t(formItemSelectAutocomplete),\n formItemTicketMsg: t(formItemTicketMsg),\n formPageWrapper: t(formPageWrapper),\n formItemRow: t(formItemRow),\n formItemFullWidthRow: t(formItemFullWidthRow),\n formItemFormWidthRow: t(formItemFormWidthRow),\n formItemRowWithoutLabel: t(formItemRowWithoutLabel),\n formItemRowTextdata: t(formItemRowTextdata),\n formItemRowHidden: t(formItemRowHidden),\n formItemFrame: t(formItemFrame),\n formListContent: t(formListContent),\n formListBlocksContent: t(formListBlocksContent),\n filterWrapper: t(filterWrapper),\n filterSavedItem: t(filterSavedItem),\n filterRow: t(filterRow),\n filterItemLabel: t(filterItemLabel),\n filterItem: t(filterItem),\n formItemRowDesc: t(formItemRowDesc),\n formListItemRow: t(formListItemRow),\n formPlainHintRow: t(formPlainHint),\n formItemSlider: t(formItemSlider),\n formItemMgrview: t(formItemMgrview),\n formItemRadio: t(formItemRadio),\n formItemRadioImg: t(formItemRadioImg),\n formItemTextData: t(formItemTextData),\n dashTaskbar: t(dashTaskbar),\n progressBar: t(progressBar),\n reportBand: t(reportBand),\n reportBandDash: t(reportBandDash),\n banner: t(banner),\n buttons: t(buttons),\n fatalError: t(fatalError),\n passwdCheck: t(passwdCheck),\n editinListForm: t(editinListForm),\n confirmCheck: t(confirmCheck),\n formItemSliderEditInList: t(formItemSliderEditInList),\n tip: t(tip),\n infoList: t(infoList),\n fatalAlert: t(fatalAlert),\n msgTemplList: t(msgTemplList),\n emptyBandOverlay: t(emptyBandOverlay),\n usefulLinks: t(usefulLinks),\n formListFilter: t(formListFilter),\n formListFilterWrapper: t(formListFilterWrapper),\n formItemDateTime: t(formItemDateTime)\n };\n}());\n\n// Event manager\n//@todo unit test\nvar EventMgr = {\n\n o: function() {\n 'use strict';\n return $('body');\n },\n\n hooks: {},\n\n isTouch: function() {\n return (navigator.userAgent.match(/Android/i) ||\n navigator.userAgent.match(/webOS/i) ||\n navigator.userAgent.match(/iPhone/i) ||\n navigator.userAgent.match(/iPad/i) ||\n navigator.userAgent.match(/iPod/i) ||\n navigator.userAgent.match(/BlackBerry/i) ||\n navigator.userAgent.match(/Windows Phone/i));\n },\n\n touchEvents: {},\n\n touchData: {},\n /**\n * bind custom event\n * @this {EventMgr} EventMgr object\n */\n bind: function(event, callback) {\n 'use strict';\n var events = event.split(','),\n l = event.length;\n while (l--) {\n this.o().on(events[l], callback);\n }\n },\n /**\n * bind custom event for one time\n * @this {EventMgr} EventMgr object\n */\n one: function(event, callback, data) {\n 'use strict';\n var events = event.split(','),\n l = event.length;\n while (l--) {\n this.o().one(events[l], data, callback);\n }\n },\n /**\n * wrapper for jQuery.one\n */\n oone: function(object, event, callback) {\n 'use strict';\n if (typeof object === 'string') {\n $(object).one(event, callback);\n } else {\n object.one(event, callback);\n }\n },\n /**\n * wrapper for jQuery.obind\n */\n obind: function(object, event, callback) {\n 'use strict';\n var touch;\n if (event === 'click' &&\n this.isTouch() &&\n typeof object === 'string') {\n event = 'touchstart';\n touch = true;\n }\n if (!touch) {\n if (typeof object === 'string') {\n $(object).on(event, callback);\n } else {\n object.on(event, callback);\n }\n } else {\n var data = {\n eventMgr: this,\n cb: callback\n };\n if (typeof object === 'string') {\n data.innerSelect = object;\n $(object).on(event, data, this.touchStart);\n // $(object).on('touchmove', data, this.touchMove);\n $(object).on('touchend', data, this.touchEnd);\n }\n }\n },\n\n /**\n * wrapper for jQuery.on\n * */\n on: function(outObject, innerSelect, event, callback) {\n 'use strict';\n var touch = false;\n if (event === 'click' && this.isTouch()) {\n event = 'touchstart';\n touch = true;\n }\n if (!touch) {\n if (typeof outObject === 'string') {\n $(outObject).on(event, innerSelect, callback);\n } else {\n outObject.on(event, innerSelect, callback);\n }\n } else {\n var data = {\n innerSelect: innerSelect,\n eventMgr: this,\n cb: callback\n };\n if (typeof outObject === 'string') {\n $(outObject).on(event, innerSelect, data, this.touchStart);\n //$(outObject).on('touchmove', innerSelect, data, this.touchMove);\n $(outObject).on('touchend', innerSelect, data, this.touchEnd);\n } else {\n outObject.on(event, innerSelect, data, this.touchStart);\n //outObject.on('touchmove', innerSelect, data, this.touchMove);\n outObject.on('touchend', innerSelect, data, this.touchEnd);\n }\n }\n },\n /**\n * allow hooks for original events\n * @this {EventMgr} EventMgr object\n */\n onwithdata: function(outObject, innerSelect, event, customEvent, callback) {\n 'use strict';\n var data = {\n targetEvent: customEvent,\n targetCallback: callback,\n eventMgr: this,\n innerSelect: innerSelect,\n withData: true\n },\n touch = false;\n\n if (event === 'click' && this.isTouch()) {\n event = 'touchstart';\n touch = true;\n }\n if (!touch) {\n if (typeof outObject === 'string') {\n $(outObject).on(event, innerSelect, data, this.onwithdataHandler);\n } else {\n outObject.on(event, innerSelect, data, this.onwithdataHandler);\n }\n } else {\n if (typeof outObject === 'string') {\n $(outObject).on(event, innerSelect, data, this.touchStart);\n //$(outObject).on('touchmove', innerSelect, data, this.touchMove);\n $(outObject).on('touchend', innerSelect, data, this.touchEnd);\n } else {\n outObject.on(event, innerSelect, data, this.touchStart);\n //outObject.on('touchmove', innerSelect, data, this.touchMove);\n outObject.on('touchend', innerSelect, data, this.touchEnd);\n }\n }\n },\n\n touchStart: function(e) {\n e.preventDefault();\n var selector = e.data.innerSelect,\n em = e.data.eventMgr;\n em.touchEvents[selector] = true;\n },\n\n touchMove: function(e) {\n var selector = e.data.innerSelect,\n em = e.data.eventMgr;\n em.touchEvents[selector] = false;\n },\n\n touchEnd: function(e) {\n var selector = e.data.innerSelect,\n em = e.data.eventMgr;\n if (em.touchEvents[selector]) {\n if (e.data.withData) {\n em.onwithdataHandler.apply(this, [e]);\n em.touchEvents[selector] = false;\n } else {\n e.data.cb.apply(this, [e]);\n em.touchEvents[selector] = false;\n }\n }\n },\n\n /**\n * handler for onwithdata\n * @this {HTMLNode} HTMLNode\n */\n onwithdataHandler: function(e) {\n 'use strict';\n var eventData = e.data,\n targetEvent = eventData.targetEvent,\n targetCallback = eventData.targetCallback,\n data = {},\n self = eventData.eventMgr;\n if (this) {\n data.tabId = this.getAttribute('data-tabid');\n data.elemId = this.getAttribute('data-elemid');\n }\n if (targetEvent) {\n if (self.hooks[targetEvent] && self.hooks[targetEvent].length > 0) {\n var l = self.hooks[targetEvent].length;\n while (l--) {\n if (typeof self.hooks[targetEvent][l] === 'function') {\n self.hooks[targetEvent][l].apply(window, [data]);\n }\n }\n }\n }\n if (typeof targetCallback === 'function') {\n targetCallback.apply(this, [e, data]);\n }\n },\n /**\n * wrapper for jQuery.off\n */\n off: function(outObject, event) {\n 'use strict';\n if (typeof outObject === 'string') {\n $(outObject).off(event);\n } else {\n outObject.off(event);\n }\n },\n /**\n * unbind event\n * @this {EventMgr} EventMgr object\n */\n unbind: function(event, callback) {\n 'use strict';\n var events = event.split(','),\n l = event.length;\n while (l--) {\n this.o().off(events[l], callback);\n }\n },\n /**\n * wrapper for jQuery.trigger\n * @this {EventMgr} EventMgr object\n */\n trigger: function(event, data, delay) {\n 'use strict';\n if (delay) {\n setTimeout(function(self) { return function() {\n if (typeof event !== 'string') {\n console.log('event !== string in trigger', event, data);\n event = String(event);\n }\n self.o().trigger(event, data);};\n } (this), delay);\n } else {\n if (this.hooks[event] && this.hooks[event].length > 0) {\n var l = this.hooks[event].length;\n while (l--) {\n if (typeof this.hooks[event][l] === 'function') {\n this.hooks[event][l].apply(window, [data]);\n }\n }\n }\n if (typeof event !== 'string') {\n console.log('event !== string in trigger', event, data);\n event = String(event);\n }\n this.o().trigger(event, data);\n }\n if (this.triggerStack[event]) {\n this.triggerStackHandler(event, data);\n }\n },\n triggerStack: {},\n /**\n * add to trigger stack\n * @param {String} event event name\n * @param {function} func function for call\n * @param {number} priority stack call order\n * @this {EventMgr} EventMgr object\n */\n addToTriggerStack: function(event, func, priority) {\n if (!this.triggerStack[event]) {\n this.triggerStack[event] = [];\n }\n this.triggerStack[event].push({\n func: func,\n priority: priority\n });\n this.triggerStack[event].sort(this.prioritySort);\n },\n\n triggerStackHandler: function(event, data) {\n if (this.triggerStack[event]) {\n var l = this.triggerStack[event].length;\n for (var i = 0; i < l; i++) {\n if (typeof this.triggerStack[event][i].func === 'function') {\n //break if return true\n if (this.triggerStack[event][i].func.apply(window, [{}, data])) {\n break;\n }\n }\n }\n }\n },\n prioritySort: function(a, b) {\n return a.priority - b.priority;\n },\n /**\n * add hook for custom event\n * @this {EventMgr} EventMgr object\n */\n addHook: function(event, callback) {\n 'use strict';\n var events = event.split(','),\n l = event.length;\n while (l--) {\n if (this.hooks[events[l]]) {\n this.hooks[events[l]].push(callback);\n } else {\n this.hooks[events[l]] = [];\n this.hooks[events[l]].push(callback);\n }\n }\n },\n /**\n * remove hook\n * @this {EventMgr} EventMgr object\n */\n deleteHook: function(event, callback) {\n 'use strict';\n if (this.hooks[event]) {\n var len = this.hooks[event].length - 1,\n ar = this.hooks[event];\n\n for (var i = len; i <= 0; i--) {\n if (ar(i) === callback) {\n ar.slice(i, i);\n }\n }\n }\n }\n};\n\n/**\n * ScrollHandler\n * @class\n */\nvar ScrollHandler = (function() {\n 'use strict';\n var shiftY = 0,\n\n shiftX = 0,\n\n bigObj = {},\n /**\n * Current Scroll object\n */\n curObj = {\n /**\n * Object id\n */\n objId: null,\n /**\n * Wrapper id\n */\n contId: null,\n /**\n * Wrapper id\n */\n obj: null,\n /**\n * HTML Object of Object\n */\n cont: null,\n /**\n * HTML Object of ScrollHandler\n */\n sh: null,\n /**\n * Visible height (wrapper's height)\n */\n vh: null,\n /**\n * Scroll handler height\n */\n sch: null\n },\n\n moveObj = {}, //temp object moved elems\n down = false, //go down\n /* jslint evil:true */\n isIe = !!window.execScript,\n /* jslint evil:false */\n up = false, // go up\n left = false, //go left\n right = false, //go right\n intId = null,\n /**\n * Block not needed events when scrolling\n */\n blockEvent = function(e) {\n e = e || window.event;\n if (e.stopPropagation) {\n e.stopPropagation();\n } else { e.cancelBubble = true; }\n if (e.preventDefault) {\n e.preventDefault();\n } else { e.returnValue = false; }\n },\n /**\n * Handler for mouseup\n * unbind mouseup/touchend handlers\n */\n mouseUp = function() {\n down = false;\n up = false;\n left = false;\n right = false;\n document.onmouseup = null;\n document.ontouchend = null;\n },\n /**\n * Set Position for object and scrollhandler\n */\n lastValues = {},\n\n setPosition = function(newPosition) {\n var sTop, scrollTop,\n middle = false,\n top = false,\n bottom = false;\n if ((newPosition <= moveObj.vh - moveObj.sch) && (newPosition >= 0)) {\n sTop = newPosition;\n middle = true;\n } else if (newPosition > moveObj.vh - moveObj.sch) {\n sTop = moveObj.vh - moveObj.sch;\n bottom = true;\n } else {\n sTop = 0;\n top = true;\n }\n\n moveObj.sh.style.top = sTop + 'px';\n scrollTop = Math.round(sTop * moveObj.delta);\n if (isIe) {\n moveObj.cont.scrollTop = 0;\n moveObj.obj.style.marginTop = scrollTop * (-1) + 'px';\n } else {\n moveObj.cont.scrollTop = scrollTop;\n moveObj.sw.style.top = scrollTop + 'px';\n }\n if (lastValues[moveObj.contId] !== sTop) {\n var body = document.querySelector('body') || document.body,\n event;\n try {\n event = new CustomEvent('verticalScroll', { 'detail': {\n top: top,\n middle: middle,\n bottom: bottom,\n id: moveObj.contId}});\n body.dispatchEvent(event);\n } catch (e) {}\n }\n lastValues[moveObj.contId] = sTop;\n return false;\n },\n /**\n * Set Position for horizontal object and scrollhandler\n */\n setPositionHor = function(newPosition) {\n var sLeft, scrollLeft;\n if ((newPosition <= moveObj.vw - moveObj.schH) && (newPosition >= 0)) {\n sLeft = newPosition;\n } else if (newPosition > moveObj.vw - moveObj.schH) {\n sLeft = moveObj.vw - moveObj.schH;\n } else {\n sLeft = 0;\n }\n moveObj.hSh.style.left = sLeft + 'px';\n scrollLeft = Math.round(sLeft * moveObj.deltaH);\n\n if (isIe) {\n moveObj.cont.scrollLeft = 0;\n moveObj.obj.style.marginLeft = scrollLeft * (-1) + 'px';\n } else {\n moveObj.cont.scrollLeft = scrollLeft;\n moveObj.hSw.style.left = scrollLeft + 'px';\n }\n return false;\n },\n /**\n * Mouse wheel handler\n */\n wheel = function(e) {\n e = e || window.event;\n var wheelDelta = 0,\n id = this.getAttribute('id'),\n currentPosition,\n newPosition,\n direction, delta, STEP = 64;\n moveObj = bigObj[id];\n //check for exist scroll\n if (!moveObj) { return; }\n delta = moveObj.delta;\n //detect direction\n if (e.wheelDelta) {\n direction = e.wheelDelta > 0 ? -1 : 1;\n } else if (e.detail) {\n direction = e.detail < 0 ? -1 : 1;\n }\n //check for native scroll\n if (e.target) {\n var target = e.target;\n //check for scroll\n //target.clientHeight > 0 ==> for opera\n if (target.clientHeight < target.scrollHeight &&\n target.clientHeight > 0 &&\n target.nodeName === 'TEXTAREA') {\n //scroll down\n if (\n //(target.clientHeight + 1) ==> for safari\n (direction === 1 && (target.scrollTop <\n (target.scrollHeight - (target.clientHeight + 1)))) ||\n (direction === -1 && target.scrollTop !== 0)\n ) {\n return true;\n }\n }\n }\n\n if (e.wheelDelta) {\n wheelDelta = -e.wheelDelta / 2.5;\n } else if (e.detail) { //for FF\n wheelDelta = e.detail * 16;\n }\n\n if (wheelDelta) {\n currentPosition = parseFloat(moveObj.sh.style.top);\n newPosition = ((wheelDelta / delta)) + currentPosition;\n setPosition(newPosition);\n }\n blockEvent(e);\n },\n /**\n * Scroll mover by UP/DOWN scroll btn\n */\n scrollMove = function(stopPos) {\n var currentPosition, mDelta, newPosition, magicNumber = 5;\n if (!moveObj) {\n clearInterval(intId);\n }\n currentPosition = parseFloat(moveObj.sh.style.top);\n mDelta = magicNumber / moveObj.delta;\n if (up) {\n newPosition = currentPosition - mDelta;\n setPosition(newPosition);\n if (stopPos && newPosition < stopPos) {\n clearInterval(intId);\n }\n } else if (down) {\n newPosition = mDelta + currentPosition;\n setPosition(newPosition);\n if (stopPos && newPosition > stopPos) {\n clearInterval(intId);\n }\n } else {\n clearInterval(intId);\n }\n },\n /**\n * Scroll mover horizontal by UP/DOWN scroll btn\n */\n scrollMoveHoriz = function(stopPos) {\n var currentPosition, mDelta, newPosition, magicNumber = 5;\n if (!moveObj) {\n clearInterval(intId);\n }\n currentPosition = parseFloat(moveObj.hSh.style.left);\n mDelta = magicNumber / moveObj.deltaH;\n if (left) {\n newPosition = currentPosition - mDelta;\n setPositionHor(newPosition);\n if (stopPos && newPosition < stopPos) {\n clearInterval(intId);\n }\n } else if (right) {\n newPosition = mDelta + currentPosition;\n setPositionHor(newPosition);\n if (stopPos && newPosition > stopPos) {\n clearInterval(intId);\n }\n } else {\n clearInterval(intId);\n }\n },\n /**\n * Handler for button move up\n */\n moveUp = function(id, stopPos) {\n var doc = document,\n timeOut = stopPos !== undefined ? 1 : 10;\n moveObj = bigObj[id];\n up = true;\n //some issues about\n if (!('ontouchstart' in doc.documentElement)) {\n doc.onmouseup = mouseUp;\n }\n //for touchpads\n doc.ontouchend = mouseUp;\n doc.ontouchcancel = mouseUp;\n scrollMove(stopPos);\n intId = setInterval(function() { scrollMove(stopPos); }, timeOut);\n },\n\n moveUpHandler = function(e) {\n e = e || window.event;\n var id = this.getAttribute('id').replace('-top-button', '');\n moveUp(id);\n blockEvent(e);\n return false;\n },\n\n moveLeftHandler = function(e) {\n e = e || window.event;\n var id = this.getAttribute('id').replace('-left-button', '');\n moveLeft(id);\n blockEvent(e);\n return false;\n },\n\n moveLeft = function(id, stopPos) {\n var doc = document,\n timeOut = stopPos !== undefined ? 1 : 10;\n moveObj = bigObj[id];\n left = true;\n //some issues about\n if (!('ontouchstart' in doc.documentElement)) {\n doc.onmouseup = mouseUp;\n }\n //for touchpads\n doc.ontouchend = mouseUp;\n doc.ontouchcancel = mouseUp;\n scrollMoveHoriz(stopPos);\n intId = setInterval(function() { scrollMoveHoriz(stopPos); }, timeOut);\n },\n /**\n * Handler for button move down\n */\n moveDown = function(id, stopPos) {\n var doc = document,\n timeOut = stopPos !== undefined ? 1 : 10;\n moveObj = bigObj[id];\n down = true;\n if (!('ontouchstart' in doc.documentElement)) {\n doc.onmouseup = mouseUp;\n }\n //for touchpads\n doc.ontouchend = mouseUp;\n doc.ontouchcancel = mouseUp;\n scrollMove(stopPos);\n intId = setInterval(function() { scrollMove(stopPos); }, timeOut);\n },\n\n moveDownHandler = function(e) {\n e = e || window.event;\n var id = this.getAttribute('id').replace('-bottom-button', '');\n moveDown(id);\n blockEvent(e);\n return false;\n },\n\n moveRightHandler = function(e) {\n e = e || window.event;\n var id = this.getAttribute('id').replace('-right-button', '');\n moveRight(id);\n blockEvent(e);\n return false;\n },\n\n moveRight = function(id, stopPos) {\n var doc = document,\n timeOut = stopPos !== undefined ? 1 : 10;\n moveObj = bigObj[id];\n right = true;\n if (!('ontouchstart' in doc.documentElement)) {\n doc.onmouseup = mouseUp;\n }\n //for touchpads\n doc.ontouchend = mouseUp;\n doc.ontouchcancel = mouseUp;\n scrollMoveHoriz(stopPos);\n intId = setInterval(function() { scrollMoveHoriz(stopPos); }, timeOut);\n },\n /**\n * Cancel scroll, hide scroll handler\n * @param {curObj} obj Current object\n */\n cancelScroll = function(obj) {\n if (!obj) { return; }\n //need to fix\n obj.sh.style.display = 'none';\n obj.vstatus = true;\n obj.cont.style.overflowY = '';\n //hide horiz scroll\n if (obj.hs) {\n obj.vstatus = false;\n obj.sw.style.display = 'none';\n obj.cont.style.paddingRight = '0px';\n // $(obj.cont).removeClass('vertical-scroll');\n }\n $(obj.cont).removeClass('vertical-scroll');\n $(obj.cont.parentNode).removeClass('vertical-scroll-child');\n //this._curObj.sh = null;\n obj.cont.onmousewheel = null;\n obj.bb.onmousedown = null;\n obj.tb.onmousedown = null;\n obj.cont.onkeydown = null;\n if (isIe) {\n obj.obj.style.marginTop = 0;\n }\n obj.cont.scrollTop = 0;\n obj.sh.style.top = 0 + 'px';\n obj.sw.style.top = 0 + 'px';\n if (obj.contWheelEvent) {\n obj.cont.removeEventListener('DOMMouseScroll', wheel, false);\n obj.contWheelEvent = false;\n }\n },\n /**\n * Cancel horiz scroll, hide scroll handler\n * @param {curObj} obj Current object\n */\n cancelScrollHoriz = function(obj) {\n if (!obj) { return; }\n //need to fix\n obj.hSh.style.display = 'none';\n obj.cont.style.overflowX = '';\n obj.hstatus = true;\n if (!obj.hss) {\n obj.hstatus = false;\n obj.hSw.style.display = 'none';\n $(obj.cont).removeClass('horizontal-scroll');\n obj.cont.paddingBottom = '0px';\n }\n //this._curObj.sh = null;\n obj.hBb.onmousedown = null;\n obj.hTb.onmousedown = null;\n if (isIe) {\n obj.obj.style.marginLeft = 0;\n }\n obj.cont.scrollLeft = 0 + 'px';\n obj.hSh.style.top = 0 + 'px';\n },\n /**\n * Update scroll method\n */\n updateFunc = function(key) {\n if (bigObj[key] === undefined) { return; }\n var scrollCorrect = 36, swStyle, tmpHeight, scrollTop, curObjUp;\n curObjUp = bigObj[key];\n if (curObjUp.hstatus) {\n scrollCorrect += 18;\n }\n //trackHeight\n var visibleHeight = curObjUp.cont.clientHeight,\n scrollTrackHeight = visibleHeight - scrollCorrect,\n deltaTop = (curObjUp.obj.offsetTop > 0) ?\n curObjUp.obj.offsetTop : 0,\n allHeight = curObjUp.obj.offsetHeight + deltaTop,\n deltaAV = allHeight / visibleHeight,\n scrollHandlerHeight = scrollTrackHeight / deltaAV,\n delta = allHeight / scrollTrackHeight;\n //if hide element exit\n if (visibleHeight === 0) { return; }\n curObjUp.vh = scrollTrackHeight;\n //all height, object height\n\n //var sch = (visibleHeight) / (allHeight /\n // (visibleHeight + scrollCorrect));\n if (scrollHandlerHeight < 25) {\n scrollHandlerHeight = 25;\n delta = (allHeight - (scrollTrackHeight + scrollCorrect)) /\n (scrollTrackHeight - 25);\n }\n //size of step\n curObjUp.delta = delta;\n curObjUp.sch = scrollHandlerHeight;\n //check for nothing scroll\n tmpHeight = scrollTrackHeight + scrollCorrect;\n if (scrollTrackHeight < scrollCorrect ||\n scrollHandlerHeight > scrollTrackHeight ||\n tmpHeight === allHeight) {\n cancelScroll(curObjUp);\n //scrollHandlerHeight = scrollTrackHeight;\n } else {\n //set scroll handler size\n swStyle = curObjUp.sw.style;\n //keep state\n curObjUp.cont.scrollTop = parseFloat(swStyle.top);\n //swStyle.top = curObjUp.cont.scrollTop;\n curObjUp.sh.style.height = scrollHandlerHeight + 'px';\n curObjUp.sh.style.display = 'block';\n swStyle.display = 'block';\n curObjUp.cont.style.paddingRight = '18px';\n curObjUp.cont.style.overflowY = 'hidden';\n if (curObjUp.cont.className.indexOf('vertical-scroll') === -1) {\n curObjUp.cont.className += ' vertical-scroll';\n curObjUp.cont.parentNode.className += ' vertical-scroll-child';\n }\n if (!curObjUp.contWheelEvent) {\n curObjUp.cont.addEventListener('DOMMouseScroll', wheel, false);\n curObjUp.contWheelEvent = true;\n }\n\n curObjUp.cont.onmousewheel = wheel;\n\n curObjUp.bb.onmousedown = moveDownHandler;\n curObjUp.tb.onmousedown = moveUpHandler;\n\n //check real behavior\n if (parseInt(curObjUp.sh.style.top, 10) + curObjUp.sch >\n curObjUp.vh) {\n curObjUp.sh.style.top = curObjUp.vh - curObjUp.sch + 'px';\n scrollTop = (curObjUp.vh - curObjUp.sch) * curObjUp.delta;\n swStyle.top = scrollTop + 'px';\n curObjUp.cont.scrollTop = scrollTop;\n }\n }\n bigObj[key] = curObjUp;\n curObjUp = null;\n },\n /**\n * Update horiz scroll method\n */\n updateFuncHoriz = function(key) {\n if (bigObj[key] === undefined) { return; }\n var scrollCorrect = 36,\n curObjUp = bigObj[key],\n vw, aw, delta, sch;\n if (curObjUp.vstatus) {\n scrollCorrect += 18;\n }\n\n vw = curObjUp.cont.offsetWidth - scrollCorrect;\n curObjUp.vw = vw;\n //ll height, object height\n aw = curObjUp.obj.offsetWidth;\n delta = aw / (vw);\n //scroll height\n sch = (vw) / (aw / (vw + scrollCorrect));\n\n if (sch < 25) {\n //var dp = 25 - sch;\n sch = 25;\n delta = (aw - (vw + scrollCorrect)) / (vw - 25);\n }\n //size of step\n curObjUp.deltaH = delta;\n curObjUp.schH = sch;\n //check for nothing scroll\n if (vw < scrollCorrect || sch > vw || vw + scrollCorrect === aw) {\n cancelScrollHoriz(curObjUp);\n //sch = vw;\n } else {\n //set scroll handler size\n curObjUp.hSh.style.width = sch + 'px';\n curObjUp.hSw.style.display = 'block';\n curObjUp.hSh.style.display = 'block';\n curObjUp.cont.style.overflowX = 'hidden';\n curObjUp.cont.style.paddingBottom = '18px';\n\n curObjUp.hBb.onmousedown = moveRightHandler;\n curObjUp.hTb.onmousedown = moveLeftHandler;\n\n //check real behavior\n if (parseInt(curObjUp.hSh.style.top, 10) + curObjUp.schH >\n curObjUp.vw) {\n curObjUp.hSh.style.left = curObjUp.vw - curObjUp.schH + 'px';\n curObjUp.obj.scrollLeft =\n (curObjUp.vw - curObjUp.schH) * curObjUp.deltaH;\n }\n }\n bigObj[key] = curObjUp;\n curObjUp = null;\n },\n /**\n * void method, update sizes\n */\n update = function(id) {\n if (id) {\n updateFunc(id);\n updateFuncHoriz(id);\n } else {\n var key;\n /* jslint forin:true */\n for (key in bigObj) {\n updateFunc(key);\n updateFuncHoriz(key);\n }\n }\n },\n /**\n * get sizes of objects and calculate delta\n */\n getSize = function() {\n //visible height\n var scrollCorrect = 36,\n visibleHeight = curObj.cont.clientHeight,\n scrollTrackHeight = visibleHeight - scrollCorrect,\n deltaTop = (curObj.obj.offsetTop > 0) ? curObj.obj.offsetTop : 0,\n allHeight = curObj.obj.offsetHeight + deltaTop,\n deltaAV = allHeight / visibleHeight,\n scrollHandlerHeight = scrollTrackHeight / deltaAV,\n delta = allHeight / scrollTrackHeight;\n\n //-18px for top/bottom buttons\n curObj.vh = scrollTrackHeight;\n curObj.delta = delta;\n //scroll height\n curObj.sch = scrollHandlerHeight;\n\n //check for nothing scroll\n if (scrollTrackHeight < 36 ||\n scrollHandlerHeight > scrollTrackHeight ||\n ((scrollTrackHeight + 36) === allHeight)) {\n cancelScroll(curObj);\n } else {\n curObj.vstatus = true;\n curObj.cont.className += ' vertical-scroll';\n curObj.cont.parentNode.className += ' vertical-scroll-child';\n if (scrollHandlerHeight < 25) {\n scrollHandlerHeight = 25;\n }\n //set scroll handler size\n curObj.sh.style.height = scrollHandlerHeight + 'px';\n curObj.sh.style.left = 0;\n curObj.cont.scrollTop = 0;\n curObj.cont.style.paddingRight = '18px';\n curObj.cont.style.overflowY = 'hidden';\n }\n },\n\n getSizeHor = function() {\n //visible height\n var visibleWidth = curObj.cont.offsetWidth - 36,\n //all height, object height\n aw = curObj.obj.offsetWidth,\n //size of step\n delta = aw / (visibleWidth),\n sch;\n\n //-20px for top/bottom buttons\n curObj.vw = visibleWidth;\n curObj.deltaH = delta;\n //scroll height\n sch = (visibleWidth) / (aw / (visibleWidth + 36));\n curObj.schH = sch;\n\n //check for nothing scroll\n if (visibleWidth < 36 ||\n sch > visibleWidth ||\n visibleWidth + 36 === aw) {\n cancelScrollHoriz(curObj);\n sch = visibleWidth;\n } else {\n curObj.hstatus = true;\n curObj.cont.className += ' horizontal-scroll';\n if (sch < 25) {\n sch = 25;\n }\n //set scroll handler size\n curObj.hSh.style.width = sch + 'px';\n curObj.hSh.style.left = 0;\n curObj.hSw.style.display = 'block';\n curObj.cont.scrollLeft = 0;\n curObj.cont.style.paddingBottom = '18px';\n curObj.cont.style.overflowX = 'hidden';\n }\n },\n\n forceMoveSelectItem = function(id, offsetTop, boxHeight, elemHeight) {\n moveObj = bigObj[id];\n if (!moveObj) { return; }\n var boxHeight = boxHeight || 223,\n elemHeight = elemHeight || 16,\n newPosition = null,\n mTRaw = moveObj.cont.scrollTop,\n mT = 0,\n df;\n if (mTRaw !== '') {\n mT = parseFloat(mTRaw);\n }\n df = offsetTop - mT;\n if (boxHeight < df) {\n //movedown\n if (boxHeight < (df - 17)) {\n newPosition = (offsetTop) / moveObj.delta;\n } else {\n newPosition = (mT + elemHeight) / moveObj.delta;\n }\n } else if (df < 0) {\n //moveup\n newPosition = (mT - elemHeight) / moveObj.delta;\n }\n if (newPosition !== null) {\n setPosition(newPosition);\n }\n },\n\n TABKEY = 9,\n /**\n * force mov\n */\n forceMove = function(id) {\n if (!id) { return; }\n moveObj = bigObj[id];\n var scrollTop = moveObj.cont.scrollTop,\n newPosition = scrollTop / moveObj.delta;\n setPosition(newPosition);\n },\n\n checkTabKeyUp = function(e) {\n e = e || window.event;\n var codeKey, contId;\n codeKey = e.which || e.keyCode;\n if (codeKey === TABKEY) {\n contId = $(e.target || e.srcElement)\n .parents('div.vertical-scroll')\n .attr('id');\n forceMove(contId);\n }\n },\n animate = function(opts) {\n var start = new Date(),\n timer = setInterval(function() {\n var progress = (new Date() - start) / opts.duration;\n if (progress > 1) { progress = 1; }\n opts.step(progress);\n if (progress === 1) {\n clearInterval(timer);\n }\n }, opts.delay || 10);\n },\n\n animateMove = function(to, from) {\n from = from || 0;\n animate({\n duration: 350,\n step: function(progress) {\n //var newPos = (1 - Math.sin(Math.acos(progress))) * to;\n var newPos = from + (Math.pow(progress, 2)) * to;\n setPosition(newPos);\n }\n });\n },\n /**\n * set scrollTop\n * @param {string} id scroll contId\n * @param {number} offset Offset to move\n * @param {number} raw Raw value to Move in offset param\n * @param {boolean|undefined} animate Scrolling with animate\n */\n scrollTo = function(id, offset, raw, animate) {\n if (!id) { return; }\n moveObj = bigObj[id];\n if (!moveObj) { return; }\n var newPosition = 0,\n from = parseFloat(moveObj.sh.style.top) || 0;\n if (!raw) {\n newPosition = offset / moveObj.delta;\n } else {\n newPosition = offset;\n }\n if (!animate) {\n setPosition(newPosition);\n } else {\n newPosition -= from;\n animateMove(newPosition, from);\n }\n },\n /**\n * Handler for mouseup\n * unbind mousemove and mouseup\n */\n drop = function() {\n moveObj = null;\n document.onmousemove = null;\n document.onmouseup = null;\n },\n /**\n * Handler for touchend\n * unbind ontouchmove and touchend\n */\n tDrop = function() {\n moveObj = null;\n document.ontouchmove = null;\n document.ontouchend = null;\n document.ontouchcancel = null;\n },\n /**\n * Handler for move\n */\n move = function(e) {\n e = e || window.event;\n setPosition(e.clientY - shiftY);\n blockEvent(e);\n return false;\n },\n /**\n * Handler for move horizontal\n */\n moveHor = function(e) {\n e = e || window.event;\n setPositionHor(e.clientX - shiftX);\n blockEvent(e);\n return false;\n },\n /**\n * Handler for touchmove\n */\n tMove = function(e) {\n e = e || window.event;\n setPosition(e.touches[0].pageY - shiftY);\n blockEvent(e);\n return false;\n },\n /**\n * Handler for touchmove horizontal\n */\n tMoveHor = function(e) {\n e = e || window.event;\n setPositionHor(e.touches[0].pageX - shiftX);\n blockEvent(e);\n return false;\n },\n /**\n * Handler for mousedown for scrollhandler\n * bind handlers for touchmove, touchend\n */\n drag = function(e) {\n e = e || window.event;\n var id, doc, top;\n id = this.getAttribute('id').replace('-scrollbar-handler', '');\n top = this.style.top === '' ? 0 : parseFloat(this.style.top);\n shiftY = e.clientY - top;\n doc = document;\n moveObj = bigObj[id];\n doc.onmousemove = move;\n doc.onmouseup = drop;\n blockEvent(e);\n return false;\n },\n /**\n * Handler for mousedown for scrollhandler horizontal\n * bind handlers for touchmove, touchend\n */\n dragHor = function(e) {\n e = e || window.event;\n var id, doc, left;\n id = this.getAttribute('id').replace('-scrollbar-handler-horiz', '');\n left = this.style.left === '' ? 0 : parseFloat(this.style.left);\n shiftX = e.clientX - left;\n moveObj = bigObj[id];\n doc = document;\n doc.onmousemove = moveHor;\n doc.onmouseup = drop;\n blockEvent(e);\n return false;\n },\n /**\n * Handler for touchstart for scrollhandler\n * bind handlers for touchmove, touchend\n */\n tDrag = function(e) {\n e = e || window.event;\n var id, doc, top;\n id = this.getAttribute('id').replace('-scrollbar-handler', '');\n top = this.style.top === '' ? 0 : parseFloat(this.style.top);\n shiftY = e.touches[0].pageY - top;\n moveObj = bigObj[id];\n doc = document;\n doc.ontouchmove = tMove;\n doc.ontouchend = tDrop;\n doc.ontouchcancel = tDrop;\n blockEvent(e);\n return false;\n },\n /**\n * Handler for touchstart for scrollhandler horizontal\n * bind handlers for touchmove, touchend\n */\n tDragHor = function(e) {\n e = e || window.event;\n var id, doc, left;\n id = this.getAttribute('id').replace('-scrollbar-handler-horiz', '');\n left = this.style.left === '' ? 0 : parseFloat(this.style.left);\n shiftX = e.touches[0].pageX - left;\n moveObj = bigObj[id];\n doc = document;\n doc.ontouchmove = tMoveHor;\n doc.ontouchend = tDrop;\n doc.ontouchcancel = tDrop;\n blockEvent(e);\n return false;\n },\n /**\n * Scroll by scroll track click\n */\n scrollTrackMDHandler = function(e) {\n var id = String(this.getAttribute('id')).replace('-scrollbar-track', ''),\n sbh = document.getElementById(id + '-scrollbar-handler'),\n offsetY, offsetX,\n offsetST,\n horizScroll = false;\n if (!sbh) {\n id = String(this.getAttribute('id')).replace('-scrollbar-track-horiz', '');\n sbh = document.getElementById(id + '-scrollbar-handler-horiz');\n if (!sbh) {\n return;\n }\n horizScroll = true;\n }\n if (!horizScroll) {\n var borderTop = parseInt(sbh.style.top, 10),\n borderBottom = parseInt(sbh.style.height, 10);\n if (e.offsetX && e.offsetY) {\n offsetY = e.offsetY;\n } else {\n offsetST = $(this).offset();\n offsetY = e.clientY - offsetST.top;\n }\n if (offsetY < borderTop) {\n //direction up\n moveUp(id, offsetY);\n } else if (offsetY > borderBottom) {\n //direction down\n moveDown(id, offsetY - borderBottom);\n }\n } else {\n var borderLeft = parseInt(sbh.style.left, 10),\n borderRight = parseInt(sbh.style.width, 10);\n if (e.offsetX && e.offsetY) {\n offsetX = e.offsetX;\n } else {\n offsetST = $(this).offset();\n offsetX = e.clientX - offsetST.left;\n }\n if (offsetX < borderLeft) {\n //direction up\n moveLeft(id, offsetX);\n } else if (offsetX > borderRight) {\n //direction down\n moveRight(id, offsetX - borderRight);\n }\n }\n },\n /**\n * Bind handler for scrollhandler on mousedown and touchstart events\n */\n bindEvent = function() {\n if (curObj.sh) {\n curObj.sh.onmousedown = drag;\n curObj.sh.ontouchstart = tDrag;\n var contElem = curObj.cont;\n\n contElem.onkeyup = function(e) {\n checkTabKeyUp(e);\n };\n contElem = null;\n }\n if (curObj.hSh) {\n curObj.hSh.onmousedown = dragHor;\n curObj.hSh.ontouchstart = tDragHor;\n }\n },\n\n /**\n * void method for build scroll\n */\n buildScroll = function() {\n //@TODO might be add class?\n curObj.cont.style.overflowY = 'hidden';\n curObj.cont.style.position = 'relative';\n var sw, divId, tb, trt, st, sh, ln, lns, bb, trb;\n\n //create scroll wrapper\n sw = document.createElement('div');\n divId = curObj.contId + '-scrollbar-wrapper';\n sw.setAttribute('id', divId);\n sw.setAttribute('class', 'scrollbar-wrapper scrlbr');\n\n curObj.cont.appendChild(sw);\n\n //create scroll button top\n tb = document.createElement('div');\n tb.setAttribute('id', curObj.contId + '-top-button');\n tb.setAttribute('class', 'top-button scrlbr');\n sw.appendChild(tb);\n\n trt = document.createElement('div');\n trt.setAttribute('class', 'triangl-top scrlbr');\n tb.appendChild(trt);\n\n //create scroll button scrollbar-track\n st = document.createElement('div');\n st.setAttribute('id', curObj.contId + '-scrollbar-track');\n st.setAttribute('class', 'scrollbar-track scrlbr');\n sw.appendChild(st);\n //create scroll button scrollbar-handler\n sh = document.createElement('div');\n sh.setAttribute('id', curObj.contId + '-scrollbar-handler');\n sh.setAttribute('class', 'scrollbar-handler scrlbr');\n\n curObj.st = st;\n curObj.sh = sh;\n\n st.appendChild(sh);\n\n //create scroll button scrollbar-handler\n ln = document.createElement('div');\n ln.setAttribute('class', 'scrollbar-lines scrlbr');\n\n lns = document.createElement('div');\n lns.setAttribute('class', 'scrollbar-line scrlbr');\n\n ln.appendChild(lns);\n\n sh.appendChild(ln);\n\n //create scroll button bottom\n bb = document.createElement('div');\n bb.setAttribute('id', curObj.contId + '-bottom-button');\n bb.setAttribute('class', 'bottom-button scrlbr');\n sw.appendChild(bb);\n\n trb = document.createElement('div');\n trb.setAttribute('class', 'triangl-bot scrlbr');\n bb.appendChild(trb);\n\n curObj.sw = sw;\n curObj.bb = bb;\n curObj.tb = tb;\n\n if (curObj.sh !== null) {\n //for mouse wheel\n if (curObj.cont.addEventListener) {\n curObj.cont.addEventListener('DOMMouseScroll', wheel, false);\n curObj.contWheelEvent = true;\n curObj.st.addEventListener('mousedown', scrollTrackMDHandler, false);\n }\n curObj.cont.onmousewheel = wheel;\n //for button up/down scroll!!!\n if (!('ontouchstart' in document.documentElement)) {\n bb.onmousedown = moveDownHandler;\n tb.onmousedown = moveUpHandler;\n }\n //for touchpads\n bb.ontouchstart = moveDownHandler;\n tb.ontouchstart = moveUpHandler;\n }\n getSize();\n },\n\n buildHorizScroll = function() {\n curObj.cont.style.overflowX = 'hidden';\n curObj.cont.style.position = 'relative';\n\n //create scroll wrapper\n var sw, divId, tb, trt, st, sh, ln, lns, bb, trb;\n\n divId = curObj.contId + '-scrollbar-wrapper-horiz';\n sw = document.createElement('div');\n sw.setAttribute('id', divId);\n sw.setAttribute('class', 'scrollbar-wrapper-horiz scrlbr');\n\n curObj.cont.appendChild(sw);\n\n //create scroll button top\n tb = document.createElement('div');\n tb.setAttribute('id', curObj.contId + '-left-button');\n tb.setAttribute('class', 'left-button scrlbr');\n sw.appendChild(tb);\n\n trt = document.createElement('div');\n trt.setAttribute('class', 'triangl-left scrlbr');\n tb.appendChild(trt);\n\n //create scroll button scrollbar-track\n st = document.createElement('div');\n st.setAttribute('id', curObj.contId + '-scrollbar-track-horiz');\n st.setAttribute('class', 'scrollbar-track-horiz scrlbr');\n sw.appendChild(st);\n curObj.st = st;\n //create scroll button scrollbar-handler\n sh = document.createElement('div');\n sh.setAttribute('id', curObj.contId + '-scrollbar-handler-horiz');\n sh.setAttribute('class', 'scrollbar-handler-horiz scrlbr');\n\n curObj.hSh = sh;\n\n st.appendChild(sh);\n\n //create scroll button scrollbar-handler\n ln = document.createElement('div');\n ln.setAttribute('class', 'scrollbar-lines scrlbr');\n\n lns = document.createElement('div');\n lns.setAttribute('class', 'scrollbar-line scrlbr');\n\n ln.appendChild(lns);\n\n sh.appendChild(ln);\n\n //create scroll button bottom\n bb = document.createElement('div');\n bb.setAttribute('id', curObj.contId + '-right-button');\n bb.setAttribute('class', 'right-button scrlbr');\n sw.appendChild(bb);\n\n trb = document.createElement('div');\n trb.setAttribute('class', 'triangl-right scrlbr');\n bb.appendChild(trb);\n\n curObj.hSw = sw;\n curObj.hBb = bb;\n curObj.hTb = tb;\n\n if (curObj.hSh !== null) {\n //for button up/down scroll!!!!\n if (!('ontouchstart' in document.documentElement)) {\n bb.onmousedown = moveRightHandler;\n tb.onmousedown = moveLeftHandler;\n }\n //for touchpads\n bb.ontouchstart = moveRightHandler;\n tb.ontouchstart = moveLeftHandler;\n }\n if (curObj.st.addEventListener) {\n curObj.st.addEventListener('mousedown', scrollTrackMDHandler, false);\n }\n\n getSizeHor();\n },\n /**\n * Attach object for scrolling\n * @param {String} contId Id of wrapper object\n * @param {String} objId Id of object\n * @param {Boolean} hs HideScroll if nothing scrolling\n * @param {Boolean} hss hideHoriz scroll\n */\n attach = function(contId, objId, tabId, hs, hss) {\n var obj = document.getElementById(objId),\n cont = document.getElementById(contId);\n\n if (!obj || !cont) {\n return false;\n }\n //bind resize\n curObj = {\n 'objId' : objId,\n 'contId' : contId,\n 'obj' : obj,\n 'cont' : cont,\n 'tabId' : tabId,\n 'hs' : hs || false,\n 'hhs' : hss || false\n };\n buildScroll();\n buildHorizScroll();\n bigObj[contId] = curObj;\n bindEvent();\n curObj = null;\n obj = null;\n cont = null;\n //return _curObj;\n },\n\n detach = function(tabId) {\n var keyVar, keyVar1;\n //rbin = document.getElementById('rbin');\n for (keyVar in bigObj) {\n if (bigObj[keyVar].tabId === tabId) {\n if (bigObj[keyVar].cont.removeEventListener) {\n if (bigObj[keyVar].contWheelEvent) {\n bigObj[keyVar].cont\n .removeEventListener('DOMMouseScroll', wheel, false);\n bigObj[keyVar].contWheelEvent = false;\n }\n }\n for (keyVar1 in bigObj[keyVar]) {\n if (bigObj[keyVar].hasOwnProperty(keyVar1)) {\n bigObj[keyVar][keyVar1] = null;\n }\n }\n delete lastValues[bigObj[keyVar].contId];\n delete bigObj[keyVar];\n }\n }\n };\n return {\n attach: attach,\n update: update,\n bigObj: bigObj,\n scrollMove: scrollMove,\n scrollMoveHoriz: scrollMoveHoriz,\n scrollTo: scrollTo,\n forceMove: forceMove,\n forceMoveSelectItem: forceMoveSelectItem,\n detach: detach\n };\n}());\n"]}