/*

var tw_servicedesk_params= {
		   url:'https://www.exness.com',
		   sid:'user_id',
		   container:'service_desk',
		   user_name:'user_name'
	};

*/


(function () {
   var g_container;
   var g_groups;
   var g_transl;
   //---
   var g_filter=1;
   var g_filter_cntrl;
   //---
   var g_incidents_per_page=10;
   var g_comments_per_page =10;

   function OnInit()
     {
      if(!tw_servicedesk_params) { alert("TeamWox: TW_SreviceDesk_Init() failed, tw_servicedesk_params empty or null"); return; }
      if(!tw_servicedesk_params.url) { alert("TeamWox: TW_SreviceDesk_Init() failed, url isn't defined"); return; }
      if(!tw_servicedesk_params.container) { alert("TeamWox: TW_SreviceDesk_Init() failed, container isn't defined"); return; }
      var container=document.getElementById(tw_servicedesk_params.container);
      if(!container) return;
      //---
      if(tw_servicedesk_params.incidents_per_page) g_incidents_per_page=tw_servicedesk_params.incidents_per_page;
      if(tw_servicedesk_params.comments_per_page)  g_comments_per_page =tw_servicedesk_params.comments_per_page;
      //---
      SelectLanguage();
      //---
      g_container=document.createElement('div');
      g_container.className='tw_desk';
      container.appendChild(g_container);
      //---
      PageIndex(0, g_incidents_per_page);
     }

   function SelectLanguage()
     {
      var lng;
      if(!lng && navigator.language) lng=navigator.language;
      if(!lng && navigator.userLanguage) lng=navigator.userLanguage;
      if(!lng && navigator.systemLanguage) lng=navigator.systemLanguage;
      //---
      var transl_en={
        'DATE':'Date',
        'ID':'Id',
        'TITLE':'Title',
        'NEW_INCIDENT':'New request',
        'LIST':'Back to list',
        'USER_NAME':'Name',
        'USER_EMAIL':'Email',
        'USER_COMPANY':'Company',
        'CONTACT_INFO':'Your contact information',
        'INCIDENT_INFO':'Request information',
        'INCIDENT_TITLE':'Title',
        'INCIDENT_GROUP':'Group',
        'INCIDENT_PRODUCT':'Product',
        'INCIDENT_CATEGORY':'Category',
        'INCIDENT_DESCRIPTION':'Description',
        'SEND':'Send',
        'TITLE_SEND':'Send request',
        'NEW_COMMENT':'New comment',
        'COMMENTS':'Comments',
        'OK':'OK',
        'CANCEL':'Cancel',
        'ENTER_YOUR_CONTACT':'Enter your contact information',
        'TODAY':'Today',
        'YESTERDAY':'Yesterday',
        'TOMORROW':'Tomorrow',
        'CREATED':'Created',
        'MODIFIED':'Modified',
        'STATUS':'Status',
        'CATEGORY':'Category',
        'PRODUCT':'Product',
        'STATUS_CLOSED':'Closed',
        'STATUS_COMPLETED':'Completed',
        'STATUS_SUSPENDED':'Suspended',
        'STATUS_REJECTED':'Rejected',
        'STATUS_OPEN':'Open',
        'STATUS_UNAPPROVED':'Unapproved',
        'FILTER':'Filter',
        'FILTER_ALL':'All',
        'FILTER_OPENED':'Opened',
        'FILTER_CLOSED':'Closed',
        'AUTHOR':'Author',
        'SIZE_BYTES':'bytes',
        'SIZE_KBYTES':'Kb',
        'SIZE_MBYTES':'Mb',
        'ATTACHED_FILES':'Attached files',
        'ADD':'Add',
        'ADD_TITLE':'Add new request',
        'CANCEL':'Cancel',
        'CANCEL_TITLE':'Cancel and back to list',
        'ATTACH_FILE':'Attach file',
        'DELETE_SMALL':'delete',
        'REPLY':'reply',
        'OPEN_INCIDENT':'Open',
        'OPEN_INCIDENT_TITLE':'Reopen request',
        'CLOSE_INCIDENT':'Close',
        'CLOSE_INCIDENT_TITLE':'Close request',
        'CHANGED_PRIVATE':'Internal status changed',
        'CHANGED_PRODUCT':'Product changed:',
        'CHANGED_GROUP':'Group changed:',
        'CHANGED_STATUS':'Status changed:',
        'CHANGED_TITLE':'Title changed:',
        'CHANGED_CATEGORY':'Category changed:',
        'CHANGED_DATE_START':'Date start:',
        'CHANGED_DATE_FINISH':'Date finish:',
        'CHANGED_DATE_LIMIT':'Date limit:',
        'NO_REQUESTS':'No requests',
        'EMPTY_TITLE':'Please fill out the Title field',
        'EMPTY_CONTENT':'The content body must not be empty'
       };
      var transl_ru={
        'DATE':'Дата',
        'ID':'#',
        'TITLE':'Заголовок',
        'NEW_INCIDENT':'Новая заявка',
        'LIST':'К списку',
        'USER_NAME':'Имя',
        'USER_EMAIL':'Email',
        'USER_COMPANY':'Компания',
        'CONTACT_INFO':'Ваша контактная информация',
        'INCIDENT_INFO':'Подробная информация об инциденте',
        'INCIDENT_TITLE':'Заголовок',
        'INCIDENT_GROUP':'Группа',
        'INCIDENT_PRODUCT':'Продукт',
        'INCIDENT_CATEGORY':'Категория',
        'INCIDENT_DESCRIPTION':'Описание',
        'SEND':'Отправить',
        'TITLE_SEND':'Отправить инцидент',
        'NEW_COMMENT':'Новый комментарий',
        'COMMENTS':'Комментарии',
        'OK':'OK',
        'CANCEL':'Отмена',
        'ENTER_YOUR_CONTACT':'Введите Вашу контактную информацию',
        'TODAY':'Сегодня',
        'YESTERDAY':'Вчера',
        'TOMORROW':'Завтра',
        'CREATED':'Создано',
        'MODIFIED':'Изменено',
        'STATUS':'Статус',
        'CATEGORY':'Категория',
        'PRODUCT':'Продукт',
        'STATUS_CLOSED':'Закрыта',
        'STATUS_COMPLETED':'Выполнена',
        'STATUS_SUSPENDED':'Отложена',
        'STATUS_REJECTED':'Отклонена',
        'STATUS_OPEN':'Открыта',
        'STATUS_UNAPPROVED':'Необработана',
        'FILTER':'Фильтр',
        'FILTER_ALL':'Все',
        'FILTER_OPENED':'Открытые',
        'FILTER_CLOSED':'Закрытые',
        'AUTHOR':'Автор',
        'SIZE_BYTES':'байт',
        'SIZE_KBYTES':'Кб',
        'SIZE_MBYTES':'Мб',
        'ATTACHED_FILES':'Прикрепленные файлы',
        'ADD':'Добавить',
        'ADD_TITLE':'Добавить новую заявку',
        'CANCEL':'Отмена',
        'CANCEL_TITLE':'Отменить и вернуться к списку',
        'ATTACH_FILE':'Прикрепить файл',
        'DELETE_SMALL':'удалить',
        'REPLY':'ответить',
        'OPEN_INCIDENT':'Открыть',
        'OPEN_INCIDENT_TITLE':'Вернуть заявку на обработку',
        'CLOSE_INCIDENT':'Закрыть',
        'CLOSE_INCIDENT_TITLE':'Закрыть заявку, если проблема решена',
        'CHANGED_PRIVATE':'Изменен внутренний статус',
        'CHANGED_PRODUCT':'Изменен продукт:',
        'CHANGED_GROUP':'Изменена группа:',
        'CHANGED_STATUS':'Изменен статус:',
        'CHANGED_TITLE':'Изменен заголовок:',
        'CHANGED_CATEGORY':'Изменена категория:',
        'CHANGED_DATE_START':'Дата начала:',
        'CHANGED_DATE_FINISH':'Дата завершения:',
        'CHANGED_DATE_LIMIT':'Срок исполнения:',
        'NO_REQUESTS':'Нет заявок',
        'EMPTY_TITLE':'Необходимо заполнить поле "Заголовок"',
        'EMPTY_CONTENT':'Пожалуйста, введите текст содержимого'
       };
      //---
      g_transl=transl_en;
      //---
      if(lng=='ru') for(id in transl_ru) g_transl[id]=transl_ru[id];
     }

   function Tr(id)
     {
      return(!g_transl[id] ? '' : g_transl[id]);
     }
   //--- создание объекта
   function CE(parent, tag, attrs)
     {
      var obj=document.createElement(tag);
      if(attrs)
        {
         for(var key in attrs)
           {
            if(key=='name') obj.setAttribute('name', attrs[key]);
            else if(key=='className') obj.className=attrs[key];
            else if(key.indexOf('style')!=-1) { alert('Invalid argument - style'); }
            else obj[key]=attrs[key];
           }
        }
      if(parent) parent.appendChild(obj);
      return(obj);
     }
   //--- засейвить содержимое
   function SafeString(str)
     {
      str = str.replace(/&/gi, '&amp;');
      str = str.replace(/</gi, '&lt;');
      str = str.replace(/>/gi, '&gt;');
      str = str.replace(/"/gi, '&quot;');
      return str;
     } 
   //--- убрать класс если ест
   function RemoveClass(node, className)
     {
      if(!node || !node.className) return;
      //---
      var classes=node.className.split(' ');
      for(var tt=0, count=classes.length; tt<count; ++tt)
        if(classes[tt]==className)
          {
           classes.splice(tt, 1);
           node.className = classes.join(' ');
           return;
          }
     }
   //--- установить доп. класс если уже нет
   function AddClass(node, className)
     {
      if(TestClass(node, className)) return;
      //---
      if(!node.className) node.className=className;
      else                node.className+=' '+className;
     }
   //--- проверить установленность класса
   function TestClass(node, className)
     {
      if(!node || !node.className) return(false);
      //---
      var classes=node.className.split(' ');
      for(var tt=0, count=classes.length; tt<count; ++tt)
        if(classes[tt]==className) return(true);
      //---
      return(false);
     }
   //--- получение даты и времени
   function GetDateTime(datetime)
     {
      var s='';
      var cur_dt=new Date();
      var dt=new Date(1000*datetime);
      //dt.setTime(1000*datetime);
      //---
      var diff=parseInt(dt.getTime()/(24*60*60*1000))-parseInt(cur_dt.getTime()/(24*60*60*1000));
      if(diff==0)
        {
         s+=(dt.getHours()>9 ? dt.getHours() : '0'+dt.getHours());
         s+=':'+(dt.getMinutes()>9 ? dt.getMinutes() : '0'+dt.getMinutes());
         s+=' | '+Tr('TODAY');
        }
      else if(diff==-1)
        {
         s+=(dt.getHours()>9 ? dt.getHours() : '0'+dt.getHours());
         s+=':'+(dt.getMinutes()>9 ? dt.getMinutes() : '0'+dt.getMinutes());
         s+=' | '+Tr('YESTERDAY');
        }
      else if(diff==1)
        {
         s+=(dt.getHours()>9 ? dt.getHours() : '0'+dt.getHours());
         s+=':'+(dt.getMinutes()>9 ? dt.getMinutes() : '0'+dt.getMinutes());
         s+=' | '+Tr('TOMORROW');
        }
      else
        {
         s+=dt.getFullYear();
         s+='.'+(dt.getMonth()>8 ? dt.getMonth()+1 : '0'+(dt.getMonth()+1));
         s+='.'+(dt.getDate()>9 ? dt.getDate() : '0'+dt.getDate());
         s+=' '+(dt.getHours()>9 ? dt.getHours() : '0'+dt.getHours());
         s+=':'+(dt.getMinutes()>9 ? dt.getMinutes() : '0'+dt.getMinutes());
        }
      return(s);
//      return(Math.abs(cur_dt-datetime)<60*60*12 ? dt.toLocaleTimeString() : dt.toLocaleDateString());
     }
   //--- печать статуса  
   function GetStatus(status)
     {
      switch(status)
       {
        case 1: return(Tr("STATUS_CLOSED"));
        case 2: return(Tr("STATUS_COMPLETED"));
        case 3: return(Tr("STATUS_SUSPENDED"));
        case 4: return(Tr("STATUS_REJECTED"));
        case 501: return(Tr("STATUS_UNAPPROVED"));
       }
      //--- 
      return(Tr("STATUS_OPEN"));
     }
   //--- печать цифры в нумераторе
   function WritePage(div_main, page_num, page_cur, per_page, switcher, extra)
     {
      page_num=Math.floor(page_num);
      var obj=CE(div_main, 'a', {href:'javascript:void(0)'});
      //---
      if(page_num==page_cur) obj.className='select';
      else
        {
         if(page_cur<0) obj.className='range';
         var tmp=this;
         if(extra===undefined) obj.onclick=function(){ switcher(page_num*per_page, per_page); }
         else                  obj.onclick=function(){ switcher(page_num*per_page, per_page, extra); }
        }
      //---
      if(page_cur<0) obj.innerHTML='...';
      else           obj.innerHTML=page_num+1;
      //---
      div_main.appendChild(obj);
     }
     
   function PageIndex(from, per_page)
     {
      var obj=document.createElement('script');
      obj.type="text/javascript";
      obj.src=tw_servicedesk_params.url+"/public/servicedesk/list.js?count="+per_page+"&from="+from+"&sid="+encodeURIComponent(tw_servicedesk_params.sid)+"&filter="+g_filter+"&t="+Math.random();
      document.body.appendChild(obj);
     }

   function isNill(obj)
     {
      return(obj===undefined || obj===null);
     }

   function NewIncident()
     {
      var obj=document.createElement('script');
      obj.type='text/javascript';
      obj.src=tw_servicedesk_params.url+'/public/servicedesk/new.js?sid='+encodeURIComponent(tw_servicedesk_params.sid);
      document.body.appendChild(obj);
     }
   //--- просмотр инцидента
   function PageView(from, per_page, id)
     {
      if(isNill(per_page)) per_page=g_comments_per_page;
      var obj=document.createElement('script');
      obj.type='text/javascript';
      obj.src=tw_servicedesk_params.url+'/public/servicedesk/view.js?id='+id+'&count='+per_page
         +(isNill(from) ? '' : '&from='+from)+'&sid='+encodeURIComponent(tw_servicedesk_params.sid);
      document.body.appendChild(obj);
     }
   //--- показ постраничного вывода
   function ShowNumerator(container, pos, per_page, total, switcher, extra)
     {
      //---
      if(total<=per_page || per_page==0) return;
      //---
      var div_main=CE(container, 'div', {className:'tw_page_numerator'});
      var div_number=CE(div_main, 'div', {className:'number'});
      var span_range=CE(div_number, 'span');
      //---
      if(pos>total-1) pos=total-1;
      else if(pos<0)  pos=0;
      //---
      var page_cur =Math.floor(pos/per_page);
      var res_start=page_cur*per_page;
      var res_end  =Math.min(res_start+per_page, total);
      //---
      span_range.innerHTML=(res_start+1)+' ... '+res_end+' &#x279D; '+total;
      //---
      var page_max=Math.floor((total-1)/per_page)+1;
      //---
      var page_low =page_cur-4;
      var page_high=page_cur+4;
      //---
      if(page_low<2 && page_high<page_max-2)
        {
         var shift=Math.min(2-page_low, (page_max-2)-page_high);
         page_low +=shift;
         page_high+=shift;
        }
      //---
      if(page_low>2 && page_high>page_max-3)
        {
         var shift=Math.min(page_high-(page_max-3), page_low-2);
         page_low -=shift;
         page_high-=shift;
        }
      //---
      page_low =(page_low<=2 ? 0 : Math.max(page_low, 0));
      page_high=(page_high>=page_max-3 ? page_max-1 : Math.min(page_high, page_max-1));
      //---
      if(page_low>0) WritePage(div_main, 0, page_cur, per_page, switcher, extra);
      if(page_low>2) WritePage(div_main, (page_low+1)/2, -1, per_page, switcher, extra);
      for(var tt=page_low; tt<=page_high; tt++)
         WritePage(div_main, tt, page_cur, per_page, switcher, extra);
      if(page_high<page_max-2) WritePage(div_main, (page_high+page_max-1)/2, -1, per_page, switcher, extra);
      if(page_high+1<page_max) WritePage(div_main, page_max-1, page_cur, per_page, switcher, extra);
     }
    //--- добавление аттача
    function AddNewAttach(obj, obj_event)
      {
       var cntr=1;
       var obj_div=obj.firstChild;
       while(obj_div)
         {
          if(obj_div.className && obj_div.className=='tw_attachments_item')
             obj_div.firstChild.innerHTML=(cntr++)+'.';
          obj_div=obj_div.nextSibling;
         }
       //---
       if(obj_event) obj_event.nextSibling.style.display='';
       //---
       obj_div=CE(obj, 'div', {className:'tw_attachments_item'});
       CE(obj_div, 'span', {'innerHTML':(cntr++)+'.'});
       var obj_attach=CE(obj_div, 'input', {name:'attachment', type:'file', size:'90'});
       obj_attach.onchange = function(){ if(this.value) { AddNewAttach(obj, this); } }
       var obj_a=CE(obj_div, 'a', {innerHTML:Tr('DELETE_SMALL'), href:'javascript:void(0)'});
       obj_a.style.display='none';
       obj_a.onclick=function(){ DeleteAttach(obj_div); }
      }
   //--- удаление аттача
   function DeleteAttach(obj)
     {
      var container=obj.parentNode;
      container.removeChild(obj);
      //---
      var cntr=1;
      obj=container.firstChild;
      while(obj)
        {
         if(obj.className && obj.className=='tw_attachments_item')
            obj.firstChild.innerHTML=(cntr++)+'.';
         obj=obj.nextSibling;
        }
     }
   //--- конвертирование текста
   function TextToHtml(text)
     {
      if(!text) return('');
      //---
      text=text.replace(/(<|>|&)/g, function(text,p)
        {
         switch(p)
           {
            case '<': return '&lt;';
            case '>': return '&gt;';
            case '&': return '&amp;';
            default: return '&#'+p.charCodeAt(0)+';';
           }
        });
      //---
      return(text.replace(/\r\n|\n|\r/g,'<BR />'));
     }

   function BuildUserString(obj)
     {
      var res=false;
      var html='<span>';
      if(tw_servicedesk_params.user_name)    { html+=tw_servicedesk_params.user_name; res=true; }
      else                                   html+=Tr('ENTER_YOUR_CONTACT');
      if(tw_servicedesk_params.user_email)   { html+=',</span><span>'+tw_servicedesk_params.user_email; res=true; }
      if(tw_servicedesk_params.user_company) { html+=',</span><span>'+tw_servicedesk_params.user_company; res=true; }
      else                                   html+='</span>'
      obj.innerHTML=html;
      //---
      return(res);
     }
   //--- построение списка назначенных
   function BuildAttaches(container, attachments)
     {
      //--- добавим аттачи
      if(!attachments) return;
      //---
      var obj_div=CE(container, 'div', {className:'tw_attachments',innerHTML:'<strong>'+Tr('ATTACHED_FILES')+':</strong>'});
      var cnt=1;
      var kb;
      for(i in attachments)
        {
         var data = attachments[i];
         //---
         if(data[2]<1000) kb = data[2]+' '+Tr('SIZE_BYTES');
         else if(data[2]<1000000) kb = (data[2]/1024).toFixed(2)+' '+Tr('SIZE_KBYTES');
         else kb = (data[2]/1048576).toFixed(2)+' '+Tr('SIZE_MBYTES');
         CE(obj_div, 'div', {className:'tw_attachment',innerHTML:(cnt++)+'. <a href="'+tw_servicedesk_params.url+'/public/servicedesk/download/'+data[0]+"?sid="+encodeURIComponent(tw_servicedesk_params.sid)+'">'+data[1]+'</a> ('+kb+')'});
        }
     }
   //--- фильтрация групп
   function FilterGroups(groups)
     {
      if(tw_servicedesk_params.filter_group) tw_servicedesk_params.filter_groups=tw_servicedesk_params.filter_group;
      //---
      for(id in groups)
        {
         if(tw_servicedesk_params.filter_groups)
           {
            var tt=0;
            var count=tw_servicedesk_params.filter_groups.length;
            for(tt=0; tt<count; ++tt) if(tw_servicedesk_params.filter_groups[tt]==id) break;
            if(tt==count) { delete groups[id]; continue; }
           }
         if(tw_servicedesk_params.filter_products)
           {
            if(!groups[id].products) continue;
            for(id2 in groups[id].products)
              {
               var tt=0;
               var count=tw_servicedesk_params.filter_products.length;
               for(tt=0; tt<count; ++tt) if(tw_servicedesk_params.filter_products[tt]==id2) break;
               if(tt==count) delete groups[id].products[id2];
              }
           }
         if(tw_servicedesk_params.filter_categories)
           {
            if(!groups[id].categories) continue;
            for(id2 in groups[id].categories)
              {
               var tt=0;
               var count=tw_servicedesk_params.filter_categories.length;
               for(tt=0; tt<count; ++tt) if(tw_servicedesk_params.filter_categories[tt]==id2) break;
               if(tt==count) delete groups[id].categories[id2];
              }
           }
        }
     }
   //--- показать инфу о пользователе
   /*function ShowUserInfo(obj)
     {
      while(obj.firstChild) obj.removeChild(obj.firstChild);
      //---
      var obj_a=CE(obj, 'a', {href:'javascript:void(0)'});
      var filled=BuildUserString(obj_a);
      //---
      var obj_input, obj_span, obj_div, obj_div2;
      obj_div=CE(obj, 'div', {className:'tw_desk_user_data'});
      if(filled) obj_div.style.display='none';
      obj_div2=CE(obj_div, 'div', {className:'tw_desk_user_contact', innerHTML:Tr('CONTACT_INFO')});
      obj_div2=CE(obj_div, 'div');
      CE(obj_div2, 'span',  {innerHTML:Tr('USER_NAME')});
      var i1=CE(obj_div2, 'input', {'type':'text',name:'user_name','value':tw_servicedesk_params.user_name});
      obj_div2=CE(obj_div, 'div');
      CE(obj_div2, 'span',  {innerHTML:Tr('USER_EMAIL')});
      var i2=CE(obj_div2, 'input', {'type':'text',name:'user_email','value':tw_servicedesk_params.user_email});
      obj_div2=CE(obj_div, 'div');
      CE(obj_div2, 'span',  {innerHTML:Tr('USER_COMPANY')});
      var i3=CE(obj_div2, 'input', {'type':'text',name:'user_company','value':tw_servicedesk_params.user_company});
      obj_div2=CE(obj_div, 'div');
      obj_div2.style.textAlign='right';
      obj_input=CE(obj_div2, 'input', {'type':'button', className:'tw_desk_user_button', 'value':Tr('OK')});
      obj_input.onclick=function(){tw_servicedesk_params.user_name=i1.value; tw_servicedesk_params.user_email=i2.value; tw_servicedesk_params.user_company=i3.value; obj_div.style.display='none'; BuildUserString(obj_a); return(false);}
      obj_input=CE(obj_div2, 'input', {'type':'button', className:'tw_desk_user_button', 'value':Tr('CANCEL')});
      obj_input.onclick=function(){i1.value=tw_servicedesk_params.user_name; i2.value=tw_servicedesk_params.user_email; i3.value=tw_servicedesk_params.user_company; obj_div.style.display='none'; return(false);}
      obj_a.onclick=function(){obj_div.style.display='';}
     }*/
   //--- обработчик смены группы
   function OnChangeGroup(group_id, obj_categories, obj_products)
     {
      if(!g_groups || !g_groups[group_id]) return;
      //---
      var data=g_groups[group_id].categories;
      obj_categories.innerHTML='';
      if(data)
        {
         for(id in data)
            CE(obj_categories, 'option', {'value':id, innerHTML:data[id].name, title:data[id].description});
        }
      //---
      var data=g_groups[group_id].products;
      obj_products.innerHTML='';
      if(data)
        {
         for(id in data)
            CE(obj_products, 'option', {'value':id, innerHTML:data[id].name, title:data[id].description});
        }
     }
   //--- create comment
   window.ShowCommentEditor=function(incident_id, obj_src, text, status)
     {
      //---
      var coll=g_container.getElementsByTagName('form');
      if(coll.length==1)
        {
         if(coll[0].previousSibling==obj_src) return;
         //if(!text) text=coll[0].getElementsByTagName('textarea')[0].value;
         coll[0].parentNode.removeChild(coll[0]);
        }
      //---
      var obj_iframe=g_container.getElementsByTagName('iframe')[0];
      var obj_form=CE(null, 'form', {className:'tw_view_container', target:'tw_desk_hidden', method:'post', action:tw_servicedesk_params.url+'/public/servicedesk/comment'});
      obj_form.encoding='multipart/form-data';
      if(status) obj_form.style.display='none';
      //---
      CE(obj_form, 'input', {type:'hidden', name:'incident_id', value:incident_id});
      CE(obj_form, 'input', {type:'hidden', name:'user_sid', value:tw_servicedesk_params.sid});
      CE(obj_form, 'input', {type:'hidden', name:'user_name', value:tw_servicedesk_params.user_name});
      CE(obj_form, 'input', {type:'hidden', name:'user_email', value:tw_servicedesk_params.user_email});
      CE(obj_form, 'input', {type:'hidden', name:'user_company', value:tw_servicedesk_params.user_company});
      if(status) CE(obj_form, 'input', {type:'hidden', name:'comment_status', value:status});
      //---
      var obj_div=CE(obj_form, 'div', {className:'tw_view_editor'});
      var obj_textarea=CE(obj_div, 'textarea', {className:'tw_edit_editor', name:'comment_content'});
      obj_textarea.value=(text ? text : '');
      obj_form.onsubmit=function() {
         if(obj_textarea.value=='') { alert(Tr("EMPTY_CONTENT")); obj_textarea.focus(); return(false); }
         obj_textarea.value='<p>'+obj_form.getElementsByTagName('textarea')[0].value.replace(/\r\n|\n|\r/g,'<BR />')+'</p>';
         obj_iframe.onload=function(){ PageView(null, g_comments_per_page, incident_id); }
         obj_iframe.onreadystatechange=function(){ PageView(null, g_comments_per_page, incident_id); }
        };
      //--- форма для аттачей
      obj_div=CE(obj_form, 'div', {'className':'tw_view_attachments'});
      CE(obj_div, 'div', {'className':'tw_attachments_text','innerHTML':Tr('ATTACHED_FILES')+':'});
      AddNewAttach(obj_div);
      //---
      obj_div=CE(obj_form, 'div', {className:'tw_view_ending'});
      obj_button=CE(obj_div, 'input', {type:'submit', className:'tw_send_button', value:Tr('ADD'), title:Tr('TITLE_ADD')});
      obj_button=CE(obj_div, 'button', {className:'tw_send_button', innerHTML:Tr('CANCEL'), title:Tr('TITLE_CANCEL')});
      obj_button.onclick=function(){ obj_form.parentNode.removeChild(obj_form); return(false); };
      //---
      obj_src.parentNode.insertBefore(obj_form, obj_src.nextSibling);
      //---
      if(status) setTimeout(function() {
         obj_iframe.onload=function(){ PageView(null, g_comments_per_page, incident_id); }
         obj_iframe.onreadystatechange=function(){ PageView(null, g_comments_per_page, incident_id); }
         obj_form.submit(); 
        }, 0);
      else       obj_textarea.focus();
     }
   //--- при просмотре
   window.TW_OnDeskView=function(incident, comments, from, count, total)
     {
      if(!g_container) return;
      while(g_container.firstChild) g_container.removeChild(g_container.firstChild);
      //---
      var obj_iframe, obj_div, obj_div2, obj_div3, obj_span, obj_a, obj_select, obj_img;
      //---
      obj_div=CE(g_container, 'div', {className:'tw_top_band'});
      //---
//      if(isNill(tw_servicedesk_params.logo)) obj_div.innerHTML='<img style="width:247px; height:34px;" src="'+tw_servicedesk_params.url+'/public/servicedesk/logo.gif'+'" />';
      if(isNill(tw_servicedesk_params.logo)) obj_div.innerHTML='';
      else                                   obj_div.innerHTML=tw_servicedesk_params.logo;
      //---
      obj_iframe=CE(obj_div, 'iframe', {id:'tw_desk_hidden', name:'tw_desk_hidden'});
      try
        {
         if(window.frames['tw_desk_hidden'].name!=obj_iframe.name)
            window.frames['tw_desk_hidden'].name=obj_iframe.name;
        }
      catch(e){}
      //---
      obj_div=CE(obj_div, 'div', {className:'tw_band_menu'});
      //---
      if(incident.status!=501)
        {
         obj_a=CE(obj_div, 'a', {className:'tw_band_new tw_band_new_status', href:'javascript:void(0)', innerHTML:Tr(incident.status==500 ? 'CLOSE_INCIDENT' : 'OPEN_INCIDENT'), title:Tr(incident.status==500 ? 'CLOSE_INCIDENT_TITLE' : 'OPEN_INCIDENT_TITLE')});
         obj_a.onclick=function(){ ShowCommentEditor(incident.id, this, '', (incident.status==500 ? 1 : 500)); return(false); }
         CE(obj_div, 'span', {className:'tw_band_delim tw_band_delim_view', innerHTML:'|'});
        }
      obj_a=CE(obj_div, 'a', {className:'tw_band_new', href:'javascript:void(0)', innerHTML:Tr('LIST')});
      obj_a.onclick=function(){ PageIndex(0, g_incidents_per_page); }
      //---
      obj_div=CE(g_container, 'div', {className:'tw_view_container'});
      CE(obj_div, 'div', {className:'tw_view_header', innerHTML:'#'+incident.id+' '+SafeString(incident.title)});
      //---
      CE(obj_div, 'div', {className:'tw_view_author', innerHTML:incident.author+' | '+GetDateTime(incident.date_modify)});
      //---
      obj_div2=CE(obj_div, 'div', {className:'tw_view_descr'});
      obj_span=CE(obj_div2, 'span', {className:'tw_item_info', innerHTML:Tr('STATUS')+':'});
      obj_span=CE(obj_span, 'span', {className:'tw_item_value', innerHTML:GetStatus(incident.status)});
      obj_span=CE(obj_div2, 'span', {className:'tw_item_info', innerHTML:Tr('CATEGORY')+':'});
      obj_span=CE(obj_span, 'span', {className:'tw_item_value', innerHTML:incident.category});
      obj_span=CE(obj_div2, 'span', {className:'tw_item_info tw_item_last', innerHTML:Tr('PRODUCT')+':'});
      obj_span=CE(obj_span, 'span', {className:'tw_item_value', innerHTML:incident.product});
      //---
      CE(obj_div, 'div', {className:'tw_view_content', innerHTML:incident.content});
      //---
      obj_div2=CE(obj_div, 'div', {className:'tw_view_attachments'});
      BuildAttaches(obj_div2, incident.attachments);
      //---
      obj_div2=CE(obj_div, 'div', {className:'tw_view_line'});
      obj_a=CE(obj_div2, 'a', {className:'tw_view_new', href:'javascript:void(0)', innerHTML:Tr('NEW_COMMENT')});
      obj_a.onclick=function(){ ShowCommentEditor(incident.id, this.parentNode); };
      obj_span=CE(obj_div2, 'span', {className:'tw_view_line', innerHTML:Tr('COMMENTS')+': '+total});
      //---
      for(var tt=0, len=comments.length; tt<len; tt++)
        {
         obj_div2=CE(obj_div, 'div', {className:'tw_view_comment'});
//         CE(obj_div2, 'img', {className:'tw_comment_photo', src:tw_servicedesk_params.url+'/public/servicedesk/'+(comments[tt].author_url ? 'photo/'+comments[tt].author_url : 'avatar.gif')});
         obj_div3=CE(obj_div2, 'div', {className:'tw_comment_descr'});
         CE(obj_div3, 'span', {className:'tw_comment_author', innerHTML:comments[tt].author});
         //
         if(comments[tt].changes)
           {
            tmp = CE(obj_div2, 'div', {'className':'tw_comment_changes'});
            if(comments[tt].changes['product'])     CE(tmp,'div',{'innerHTML':Tr('CHANGED_PRODUCT'+" <b>"+comments[tt].changes['product'][0]+"</b> &#x279D; <b>"+comments[tt].changes['product'][1]+"</b>")});
            if(comments[tt].changes['group'])       CE(tmp,'div',{'innerHTML':Tr('CHANGED_GROUP')+" <b>"+comments[tt].changes['group'][0]+"</b> &#x279D; <b>"+comments[tt].changes['group'][1]+"</b>"});
            if(comments[tt].changes['category'])    CE(tmp,'div',{'innerHTML':Tr('CHANGED_CATEGORY')+" <b>"+comments[tt].changes['category'][0]+"</b> &#x279D; <b>"+comments[tt].changes['category'][1]+"</b>"});
            if(comments[tt].changes['title'])       CE(tmp,'div',{'innerHTML':Tr('CHANGED_TITLE')+" <b>"+comments[tt].changes['title'][0]+"</b> &#x279D; <b>"+comments[tt].changes['title'][1]+"</b>"});
            if(comments[tt].changes['status'])      CE(tmp,'div',{'innerHTML':Tr('CHANGED_STATUS')+" <b>"+GetStatus(comments[tt].changes['status'][0])+"</b> &#x279D; <b>"+GetStatus(comments[tt].changes['status'][1])+"</b>"});
            if(comments[tt].changes['date_start'])  CE(tmp,'div',{'innerHTML':Tr('CHANGED_DATE_START')+" <b>"+GetDateTime(comments[tt].changes['date_start'][1])+"</b>"});
            if(comments[tt].changes['date_finish']) CE(tmp,'div',{'innerHTML':Tr('CHANGED_DATE_FINISH')+" <b>"+GetDateTime(comments[tt].changes['date_finish'][1])+"</b>"});
            if(comments[tt].changes['date_limit'])  CE(tmp,'div',{'innerHTML':Tr('CHANGED_DATE_LIMIT')+" <b>"+GetDateTime(comments[tt].changes['date_limit'][1])+"</b>"});
            if(comments[tt].changes['assigned'] || comments[tt].changes['contact'] || comments[tt].changes['client'] || comments[tt].changes['priority'])
               CE(tmp, 'div', {'innerHTML':'<b>'+Tr('CHANGED_PRIVATE')+'</b>'});
           }
         //
         CE(obj_div3, 'span', {className:'tw_comment_date', innerHTML:' | '+GetDateTime(comments[tt].date_create)});
         CE(obj_div2, 'div', {className:'tw_comment_content', innerHTML:comments[tt].content});
         //---
         if(comments[tt].attachments)
           {
            obj_div3=CE(obj_div2, 'div', {className:'tw_comment_attachments'});
            BuildAttaches(obj_div3, comments[tt].attachments);
           }
         //---
         obj_div3=CE(obj_div2, 'div', {className:'tw_comment_menu'});
//         obj_div3.style.display='none';
//         obj_div3.style.visibility='hidden';
         obj_a=CE(obj_div3, 'a', {href:'javascript:void(0)', innerHTML:Tr('REPLY')});
         (function(content, author){ obj_a.onclick=function(){ ShowCommentEditor(incident.id, this.parentNode.parentNode, '>> '+author+'\n\n'); } })(comments[tt].content, comments[tt].author);
         //---
//         (function(obj1, obj2){ obj1.onmouseover=function(){ obj2.style.visibility='visible'; } })(obj_div2, obj_div3);
//         (function(obj1, obj2){ obj1.onmouseout=function(){ obj2.style.visibility='hidden'; } })(obj_div2, obj_div3);
        }
      //---
      if(comments.length>0)
        {
         obj_div2=CE(obj_div, 'div', {className:'tw_view_line'});
         obj_a=CE(obj_div2, 'a', {className:'tw_view_new', href:'javascript:void(0)', innerHTML:Tr('NEW_COMMENT')});
         obj_a.onclick=function(){ ShowCommentEditor(incident.id, this.parentNode); };
         obj_span=CE(obj_div2, 'span', {className:'tw_view_line', innerHTML:'&nbsp;'});
        }
      //---
      ShowNumerator(obj_div, from, count, total, PageView, incident.id);
     }
   //--- форма нового инцидента
   window.TW_OnNewIncident=function(groups)
     {
      if(!g_container) return;
      while(g_container.firstChild) g_container.removeChild(g_container.firstChild);
      //---
      g_groups=groups;
      FilterGroups(g_groups);
      //---
      var obj_iframe, obj_div, obj_div2, obj_div3, obj_span, obj_a, obj_select, obj_select1, obj_select2, obj_img, obj_tbl, obj_tr, obj_td, obj_form, obj_textarea;
      //---
      obj_div=CE(g_container, 'div', {className:'tw_top_band'});
      //---
//      if(isNill(tw_servicedesk_params.logo)) obj_div.innerHTML='<img style="width:247px; height:34px;" src="'+tw_servicedesk_params.url+'/public/servicedesk/logo.gif'+'" />';
      if(isNill(tw_servicedesk_params.logo)) obj_div.innerHTML='';
      else                                   obj_div.innerHTML=tw_servicedesk_params.logo;
      //---
      obj_iframe=CE(obj_div, 'iframe', {'id':'tw_desk_hidden', name:'tw_desk_hidden'});
      try
        {
         if(window.frames['tw_desk_hidden'].name!=obj_iframe.name)
            window.frames['tw_desk_hidden'].name=obj_iframe.name;
        }
      catch(e){}
      //---
      obj_div=CE(obj_div, 'div', {className:'tw_band_menu'});
      //---
      obj_a=CE(obj_div, 'a', {className:'tw_band_new', href:'javascript:void(0)', innerHTML:Tr('LIST')});
      obj_a.onclick=function(){ PageIndex(0, g_incidents_per_page); }
      //---
      obj_form=CE(g_container, 'form', {className:'tw_edit_container', target:'tw_desk_hidden', method:'post', action:tw_servicedesk_params.url+'/public/servicedesk/register'});
      obj_form.encoding = 'multipart/form-data';
      obj_div=CE(obj_form, 'div', {className:'tw_edit_header'});
      //---
      CE(obj_form, 'input', {type:'hidden', name:'user_sid', value:tw_servicedesk_params.sid});
      CE(obj_form, 'input', {type:'hidden', name:'user_name', value:tw_servicedesk_params.user_name});
      CE(obj_form, 'input', {type:'hidden', name:'user_email', value:tw_servicedesk_params.user_email});
      CE(obj_form, 'input', {type:'hidden', name:'user_company', value:tw_servicedesk_params.user_company});
      //---
      obj_tbl=CE(obj_div, 'table', {className:'tw_edit_header', cellPadding:0, cellSpacing:0});
      obj_tbl=CE(obj_tbl, 'tbody');
      //---
      obj_tr=CE(obj_tbl, 'tr');
      obj_td=CE(obj_tr, 'td', {className:'tw_edit_first', innerHTML:Tr('INCIDENT_TITLE')+':'});
      obj_td=CE(obj_tr, 'td', {className:'tw_edit_input', colSpan:6});
      obj_input=CE(obj_td, 'input', {type:'text', className:'tw_edit_title', name:'incident_title', maxLength:80});
      setTimeout(function () {obj_input.focus();}, 0);
      //---
      obj_tr=CE(obj_tbl, 'tr');
      obj_td=CE(obj_tr, 'td', {className:'tw_edit_first', innerHTML:Tr('INCIDENT_GROUP')+':'});
      obj_td=CE(obj_tr, 'td', {className:'tw_edit_select'});
      obj_select=CE(obj_td, 'select', {className:'tw_edit_select', name:'incident_group'});
      for(id in g_groups) CE(obj_select, 'option', {value:id, innerHTML:g_groups[id].name, title:g_groups[id].name});
      obj_td=CE(obj_tr, 'td', {className:'tw_edit_first', innerHTML:Tr('INCIDENT_CATEGORY')+':'});
      obj_td=CE(obj_tr, 'td', {className:'tw_edit_select'});
      obj_select1=CE(obj_td, 'select', {className:'tw_edit_select', name:'incident_category'});
      obj_td=CE(obj_tr, 'td', {className:'tw_edit_first', innerHTML:Tr('INCIDENT_PRODUCT')+':'});
      obj_td=CE(obj_tr, 'td', {className:'tw_edit_last'});
      obj_select2=CE(obj_td, 'select', {className:'tw_edit_select', name:'incident_product'});
      obj_td=CE(obj_tr, 'td', {className:'tw_edit_remainder'});
      //---
      (function(obj_select, obj_select1, obj_select2){
        obj_select.onchange=function(){ OnChangeGroup(obj_select.value, obj_select1, obj_select2); } }
        )(obj_select, obj_select1, obj_select2);
      //---
      obj_select.onchange();
      //---
      obj_div=CE(obj_form, 'div', {className:'tw_edit_editor'});
      obj_textarea=CE(obj_div, 'textarea', {className:'tw_edit_editor', name:'incident_content'});
      obj_form.onsubmit=function() {
         if(obj_input.value=='') { alert(Tr("EMPTY_TITLE")); obj_input.focus(); return(false); }
         if(obj_textarea.value=='') { alert(Tr("EMPTY_CONTENT")); obj_textarea.focus(); return(false); }
         obj_textarea.value='<p>'+obj_form.getElementsByTagName('textarea')[0].value.replace(/\r\n|\n|\r/g,'<BR />')+'</p>';
         obj_iframe.onload=function(){ PageIndex(0, g_incidents_per_page); }
         obj_iframe.onreadystatechange=function(){ PageIndex(0, g_incidents_per_page); }
        };
      //--- форма для аттачей
      obj_div=CE(obj_form, 'div', {'className':'tw_view_attachments'});
      CE(obj_div, 'div', {'className':'tw_attachments_text','innerHTML':Tr('ATTACHED_FILES')+':'});
      AddNewAttach(obj_div);
      //---
      obj_div=CE(obj_form, 'div', {className:'tw_edit_ending'});
      obj_button=CE(obj_div, 'input', {type:'submit', className:'tw_send_button', value:Tr('ADD'), title:Tr('TITLE_ADD')});
      obj_button=CE(obj_div, 'button', {className:'tw_send_button', innerHTML:Tr('CANCEL'), title:Tr('TITLE_CANCEL')});
      obj_button.onclick=function(){ PageIndex(0, g_incidents_per_page); return(false); }
     }
   //--- создание и показ фильтра
   function ShowFilter()
     {
      var obj_div, obj_div2;
      //---
      g_filter_cntrl.onclick=null;
      obj_div=CE(g_filter_cntrl, 'div', {className:'tw_filter_container'});
      var obj_input=CE(obj_div, 'input', {type:'text', className:'tw_focuser'});
      obj_div2=CE(obj_div, 'div', {className:'tw_filter_select', innerHTML:Tr('FILTER_ALL') + "<br/>"});
      obj_div2.onmouseover=function() { this.className='tw_filter_select2'; }
      obj_div2.onmouseout =function() { this.className='tw_filter_select'; }
      obj_div2.onclick    =function() { ChangeFilter(1); PageIndex(0, g_incidents_per_page); }
      obj_div2=CE(obj_div, 'div', {className:'tw_filter_select', innerHTML:Tr('FILTER_OPENED') + "<br/>"});
      obj_div2.onmouseover=function() { this.className='tw_filter_select2'; }
      obj_div2.onmouseout =function() { this.className='tw_filter_select'; }
      obj_div2.onclick    =function() { ChangeFilter(2); PageIndex(0, g_incidents_per_page); }
      obj_div2=CE(obj_div, 'div', {className:'tw_filter_select', innerHTML:Tr('FILTER_CLOSED') + "<br/>"});
      obj_div2.onmouseover=function() { this.className='tw_filter_select2'; }
      obj_div2.onmouseout =function() { this.className='tw_filter_select'; }
      obj_div2.onclick    =function() { ChangeFilter(4); PageIndex(0, g_incidents_per_page); }
      obj_input.onblur=function()
        {
          setTimeout(function()
            {
             try {
             obj_div.parentNode.removeChild(obj_div);
             g_filter_cntrl.onclick=function() { ShowFilter(); }
             } catch(e){}
            }, 1000);
        }
      obj_input.focus();
     }
   //--- смена фильтра
   function ChangeFilter(new_filter)
     {
      g_filter=new_filter;
      //---
      var text;
      switch(g_filter)
        {
         case 2:  text=Tr('FILTER_OPENED'); break;
         case 4:  text=Tr('FILTER_CLOSED'); break;
         default: text=Tr('FILTER_ALL');
        }
      //---
      g_filter_cntrl.innerHTML=Tr('FILTER')+': '+text;
      g_filter_cntrl.onclick=function() { ShowFilter(); }
     }
   //--- отображение списка инцидентов
   window.TW_OnDeskList=function(data, from, count, total)
     {
      if(!g_container) return;
      while(g_container.firstChild) g_container.removeChild(g_container.firstChild);
      //---
      var obj_div, obj_div2, obj_div3, obj_span, obj_a, obj_select, obj_img;
      //---
      obj_div=CE(g_container, 'div', {className:'tw_top_band'});
      //---
//      if(isNill(tw_servicedesk_params.logo)) obj_div.innerHTML='<img style="width:247px; height:34px;" src="'+tw_servicedesk_params.url+'/public/servicedesk/logo.gif'+'" />';
      if(isNill(tw_servicedesk_params.logo)) obj_div.innerHTML='';
      else                                   obj_div.innerHTML=tw_servicedesk_params.logo;
      //---
      obj_div2=CE(obj_div, 'div', {className:'tw_band_menu'});
      //---
      g_filter_cntrl=CE(obj_div2, 'a', {className:'tw_band_filter', href:'javascript:void(0)', innerHTML:''});
      CE(obj_div2, 'span', {className:'tw_band_delim', innerHTML:'|'});
      //---
      ChangeFilter(g_filter);
      //---
      obj_a=CE(obj_div2, 'a', {className:'tw_band_new', href:'javascript:void(0)', innerHTML:Tr('NEW_INCIDENT')});
      obj_a.onclick=function(){ NewIncident(); }
      //---
      obj_div2=CE(g_container, 'div', {className:'tw_items_container'});
      //---
      for(var tt=0, length=data.length; tt<length; tt++)
        {
         obj_div3=CE(obj_div2, 'div', {className:'tw_item_container'});
         if(data[tt].status<500) obj_div3.className+=' tw_item_container_closed';
         obj_div3.onmouseover=function(){ AddClass(this, 'tw_item_container_over'); AddClass(this.nextSibling, 'tw_item_container_next'); };
         obj_div3.onmouseout=function(){ RemoveClass(this, 'tw_item_container_over'); RemoveClass(this.nextSibling, 'tw_item_container_next'); };
         (function(incident_id){ obj_div3.onclick=function(){ PageView(null, g_comments_per_page, incident_id); } })(data[tt].id);
         //---
         obj_div=CE(obj_div3, 'div', {className:'tw_item_title'});
         obj_a=CE(obj_div, 'a', {href:'javascript:void(0)'});
         obj_a.innerHTML='#'+data[tt].id+' '+SafeString(data[tt].title);
         (function(incident_id){ obj_a.onclick=function(){ PageView(null, g_comments_per_page, incident_id); } })(data[tt].id);
         obj_span=CE(obj_div, 'span', {className:'tw_item_date', innerHTML:GetDateTime(data[tt].date_modify)});
         //---
         obj_div=CE(obj_div3, 'div', {className:'tw_item_user', innerHTML:data[tt].author+' | '+GetDateTime(data[tt].date_create)});
         obj_div=CE(obj_div3, 'div', {className:'tw_item_descr', innerHTML:TextToHtml(data[tt].description)});
         //---
         obj_div=CE(obj_div3, 'div', {className:'tw_item_info'});
         obj_span=CE(obj_div, 'span', {className:'tw_item_info tw_item_last tw_item_comments', innerHTML:Tr('COMMENTS')+':'});
         obj_span=CE(obj_span, 'span', {className:'tw_item_value', innerHTML:data[tt].comments});
         obj_span=CE(obj_div, 'span', {className:'tw_item_info', innerHTML:Tr('STATUS')+':'});
         obj_span=CE(obj_span, 'span', {className:'tw_item_value', innerHTML:GetStatus(data[tt].status)});
         obj_span=CE(obj_div, 'span', {className:'tw_item_info', innerHTML:Tr('CATEGORY')+':'});
         obj_span=CE(obj_span, 'span', {className:'tw_item_value', innerHTML:data[tt].category});
         obj_span=CE(obj_div, 'span', {className:'tw_item_info tw_item_last', innerHTML:Tr('PRODUCT')+':'});
         obj_span=CE(obj_span, 'span', {className:'tw_item_value', innerHTML:data[tt].product});
        }
      //---  
      if(data.length==0)
         obj_div3=CE(obj_div2, 'div', {className:'tw_item_empty', innerHTML:Tr('NO_REQUESTS')});
      //---
      CE(obj_div2, 'div', {className:'tw_item_ender', innerHTML:'&nbsp;'});
      //---
      ShowNumerator(g_container, from, count, total, PageIndex);
     }

		
	  $(document).ready(function(){
		  OnInit();
	  });
		
/*  if(window.navigator.userAgent.indexOf('MSIE')!=-1)
    {
     document.write("\<script defer='defer' id='tw_startupscript'\>\</script\>");
     var script = document.getElementById('tw_startupscript');
     script.onreadystatechange = function () { if(this.readyState=='complete') OnInit(); };
    }
  else if(window.navigator.userAgent.indexOf('WebKit')!=-1)
    {
     var inittimer = setInterval(function() { if(document.readyState=="loaded" || document.readyState=="complete") { clearInterval(inittimer); OnInit(); } }, 10);
    }
  else document.addEventListener('DOMContentLoaded', OnInit, false);*/
  
  
})();
