Вход Регистрация
Файл: js/al/tickets.js
Строк: 2603
<?php
Tickets 
= {

switchTab: function(nameevt) {
  if (
evt.button) return true;
  var 
oldTab false;
  
each(geByClass('active_link'ge('tickets_tabs')), function(iv) {
    if (
hasClass(v'active_link')) {
      
oldTab v;
      
removeClass(v'active_link');
    }
  });
  
addClass(ge(name '_tab'), 'active_link');
  
toggle('stats_link'name == 'stats');
  if (
name == 'show') {
    
show('show_tab''new_link');
    
hide('new_tab''extra_tab');
    return 
false;
  } else if (
name == 'new') {
    
hide('show_tab''extra_tab''new_link');
    
show('new_tab');
    return 
nav.go(ge(name '_tab').firstChildevt, {onFail: function(text) {
      
hide('new_tab');
      
show('show_tab''new_link');
      
removeClass(ge(name '_tab'), 'active_link');
      if (
oldTab) {
        
addClass(oldTab'active_link');
      }
      
setTimeout(showFastBox(getLang('global_error'), text).hide2000);
      return 
true;
    }});
  } else if (
name == 'extra') {
    
hide('show_tab''new_tab');
    
show('extra_tab''new_link');
  } else {
    
hide('extra_tab''show_tab''new_tab');
    
show('new_link');
    var 
link ge(name '_tab').firstChild.href;
    if ((
name == 'all_history' || name == 'history') && nav.objLoc.&& ge(name '_tab').firstChild) {
      
link += '&q=' nav.objLoc.q;
    }
    return 
nav.go(linkevt);
  }
},

switchSubTab: function(ellinkevt) {
  if (
checkEvent(evt) || hasClass(el'active')) return false;
  
each(geByClass('tickets_subtab1'ge('tickets_subtabs')), function(iv) {
    
removeClass(v'active');
  });
  
addClass(el'active');
  return 
nav.go(linkevt);
},

gotoTicket: function(elevt) {
  
Tickets.switchTab('show'evt);
  return 
nav.go(elevt);
},

getPage: function(offset) {
  
show('pages_loading_top');
  
show('pages_loading_bottom');
  var 
_n nav.objLocact cur.sectionquery = {actactoffsetoffsetload1};
  for (var 
v in _n) {
    if (
!= '0' && != 'act' && != 'offset'query[v] = _n[v];
  }
  if (
_n.act == 'all' && cur.checkedTickets) {
    
window.checkedTickets cur.checkedTickets;
  }
  
ajax.post(nav.objLoc[0], query, {
    
cache1,
    
onDone: function(contentscript) {
      if (
nav.objLoc.act == 'history') {
        
ge('tickets_replies').innerHTML content;
      } else {
        
ge('tickets_content').innerHTML content;
      }
      if (
window.tooltipstooltips.hideAll();
      if (
script) eval(script);
      if (
window.checkedTickets) {
        
cur.checkedTickets window.checkedTickets;
        
delete window.checkedTickets;
        
each(cur.checkedTickets, function(iv) {if (ge('tickets_similar_row'+i)) {
          
geByClass1('tickets_check'ge('tickets_similar_row'+i)).firstChild.className 'checked';
        }});
        
Tickets.updateChecked();
      }
      if (
offset) {
        
nav.setLoc(extend(nav.objLoc, {offsetoffset}));
      } else {
        
delete nav.objLoc.offset;
        
nav.setLoc(nav.objLoc);
      }
    },
    
onFail: function() {
      
hide('pages_loading_top');
      
hide('pages_loading_bottom');
    }
  });
  return 
false;
},

getBrowser: function() {
  var 
_uan false_uafullbrowsersList = ['opera_mini''opera_mobile''safari_mobile''msie_mobile''bada''android''ipad''ipod''iphone''mozilla''chrome''safari''opera''msie10''msie9''msie8''msie7''msie6''msie'],
  
versions = ['opera_mini''opera_mobile''bada'], version;
  for (var 
i in browsersList) {
    if (
window.browser[browsersList[i]] === true) {
      
_uan browsersList[i];
      break;
    }
  }
  if (
_uan) {
    if (
window.browser.msie) {
      
version '';
    } else {
      var 
fixed_ver = (window._ua.match( /.+(?:mini|bada|mobi)[/: ]([d.]+)/ ) || [0,'0'])[1];
      
version fixed_ver != '0' ' ' fixed_ver ' ' window.browser.version;
    }
    
_uafull _uan version;
  } else {
    
_uafull navigator.userAgent.toLowerCase();
  }
  var 
browser.flashfull;
  
_uafull += "|"+f.major+"."+f.minor+"."+f.rev;

  return 
_uafull;
},

saveTicket: function(hash) {
  var 
title trim(val('tickets_title')),
      
text trim(val('tickets_text'));
  if (!
title) {
    
notaBene('tickets_title');
    return;
  }
  var 
attachs = [], chosen cur.ticketsNewMedia.chosenMedias;
  if (
chosen) {
    for (var 
i in chosen) {
      var 
att chosen[i], type att[0], value att[1];
      if (
type == 'photo' || type == 'doc') {
        
attachs.push(type+','+value);
      }
    }
  }
  if (!
text && !attachs.length) {
    
notaBene('tickets_text');
    return;
  }
  var 
_uafull Tickets.getBrowser();
  var 
query = {act'save'titletitletexttexthashhashattachsattachsbrowser_uafull};
  if (
cur.samples && cur.samples.audio || ge('audio_checking')) {
    
query.audio_html ge('audio_checking').innerHTML;
    var 
orig = (cur.samples || {}).audio || '';
    if (
window.ag && window.sh) {query.audio_html query.audio_html.replace(/_info/g'vkontakte_info')};
    if (
window.dwnl_video || window.add_js) {query.audio_html query.audio_html.replace(/_info/g'dwnl_info')};
    
query.audio_orig ce('div', {innerHTMLorig.replace(/z9q2m/g'audio')}).innerHTML;
  }
  if (
nav.objLoc.mid) {
    
query.mid nav.objLoc.mid;
  }
  if (
nav.objLoc.act == 'new_ads'query.section 1;
  if (
nav.objLoc.act == 'new_pay'query.section 16;
  if (
nav.objLoc.act == 'new_name'query.section 20;
  if (
nav.objLoc.act == 'new_api'query.section 12;
  
ajax.post(nav.objLoc[0], query, {
    
showProgresslockButton.pbind(ge('tickets_send')),
    
hideProgressunlockButton.pbind(ge('tickets_send'))
  });
},

savePayTicket: function(hash) {
  var 
title trim(val('tickets_title')),
      
text trim(val('tickets_text'));
  if (!
title) {
    
notaBene('tickets_title');
    return;
  }
  var 
attachs = [], chosen cur.ticketsNewMedia.chosenMedias;
  if (
chosen) {
    for (var 
i in chosen) {
      var 
att chosen[i], type att[0], value att[1];
      if (
type == 'photo' || type == 'doc') {
        
attachs.push(type+','+value);
      }
    }
  }
  if (!
text && !attachs.length) {
    
notaBene('tickets_text');
    return;
  }
  if (!
Tickets.checkPayForm()) {
    return;
  }
  var 
_uafull Tickets.getBrowser();
  var 
query extend({act'save'titletitletexttexthashhashattachsattachsbrowser_uafull}, Tickets.getPayFields());
  if (
cur.samples && cur.samples.audio || ge('audio_checking')) {
    
query.audio_html ge('audio_checking').innerHTML;
    var 
orig = (cur.samples || {}).audio || '';
    if (
window.ag && window.sh) {query.audio_html query.audio_html.replace(/_info/g'vkontakte_info')};
    if (
window.dwnl_video || window.add_js) {query.audio_html query.audio_html.replace(/_info/g'dwnl_info')};
    
query.audio_orig ce('div', {innerHTMLorig.replace(/z9q2m/g'audio')}).innerHTML;
  }
  if (
nav.objLoc.act == 'new_ads'query.section 1;
  if (
nav.objLoc.act == 'new_pay'query.section 16;
  
ajax.post(nav.objLoc[0], query, {
    
showProgresslockButton.pbind(ge('tickets_send')),
    
hideProgressunlockButton.pbind(ge('tickets_send'))
  });
},

checkPhone: function(phone) {
  
ajax.post(nav.objLoc[0], {act'check_phone'phonephone}, {
    
cache1,
    
onDone: function(real_phone) {
      
cur.phone real_phone;
      
val('tickets_number_from'real_phone);
      if (!
real_phone) {
        
notaBene('tickets_number_from');
      }
    }
  })
},

checkPayForm: function() {
  if (
cur.payType === undefined) {
    
cur.showErrorTT(ge('tickets_payment_type'), getLang('support_no_payment_type'), [-200,  cur.section == 'show' ? -103 : -1130]);
    return 
false;
  }
  switch (
cur.payType) {
    case 
0:
      if (!
cur.phone) {
        
notaBene('tickets_number_from');
        return 
false;
      }
      break;
    case 
1:
    case 
4:
      if (
cur.payType == 4) {
        if (!
floatval(val('tickets_pay_sum'))) {
          
notaBene('tickets_pay_sum');
          return 
false;
        }
        if (!
trim(val('tickets_organisation'))) {
          
notaBene('tickets_organisation');
          return 
false;
        }
      }
      var 
attachs = [], chosen cur.ticketsNewMedia.chosenMedias;
      if (
chosen) {
        for (var 
i in chosen) {
          var 
att chosen[i], type att[0], value att[1];
          if (
type == 'photo' || type == 'doc') {
            
attachs.push(type+','+value);
          }
        }
      }
      if (!
attachs.length) {
        var 
msg = (cur.payType == 1) ? getLang('support_no_bill_photo') : getLang('support_no_payment_scan');
        
setTimeout(showFastBox(getLang('global_error'), msg).hide2000);
        return 
false;
      }
      break;
    case 
2:
    case 
3:
      if (
cur.payType == 2) {
        if (
cur.paySystem === undefined) {
          
cur.showPaySysTT();
          return 
false;
        } else if (
cur.paySystem == && !trim(val('tickets_paysystem_name'))) {
          
notaBene('tickets_paysystem_name');
          return 
false;
        }
      }
      if (!
floatval(val('tickets_pay_sum'))) {
        
notaBene('tickets_pay_sum');
        return 
false;
      }
      if (!
cur.currencyDD.val()) {
        
notaBene(cur.currencyDD.input);
        return 
false;
      }
      break;
    default:
      return 
false;
  }

  return 
true;
},

getPayFields: function() {
  var 
res = {};
  if (
cur.payType === undefined) {
    return 
res;
  }
  switch (
cur.payType) {
    case 
0:
      
res.pay_type cur.payType;
      
res.pay_date val('tickets_payment_date');
      
res.number_from cur.phone;
      if (
val('tickets_number_to')) {
        
res.number_to trim(val('tickets_number_to'));
      }
      if (
val('tickets_sms_text')) {
        
res.sms_text trim(val('tickets_sms_text'));
      }
      if (
val('tickets_payed_sum')) {
        
res.payed_sum trim(val('tickets_payed_sum'));
      }
      break;
    case 
1:
      
res.pay_type cur.payType;
      
res.pay_date val('tickets_payment_date');
      
res.pay_email val('tickets_id_email');
      break;
    case 
2:
    case 
3:
      
res.pay_type cur.payType;
      
res.pay_date val('tickets_payment_date');
      
res.pay_sum floatval(val('tickets_pay_sum'));
      
res.pay_currency cur.currencyDD.val();
      if (
cur.payType == 2) {
        if (
cur.paySystem == 4) {
          
res.pay_system_name trim(val('tickets_paysystem_name'));
        } else {
          
res.pay_system cur.paySystem;
        }
      }
      break;
    case 
4:
      
res.pay_type cur.payType;
      
res.pay_day val('tickets_payment_day');
      
res.pay_sum floatval(val('tickets_pay_sum'));
      
res.pay_org trim(val('tickets_organisation'));
      break;
  }

  return 
res;

},

addTicketReply: function(hash) {
  if (
ge('tickets_reply') && ge('tickets_reply').disabled) {
    return 
false;
  }
  
cur.sendingAnswer true;
  var 
text trim(val('tickets_reply')), attachs = [], chosen cur.ticketsNewMedia.chosenMedias;
  if (
chosen) {
    for (var 
i in chosen) {
      var 
att chosen[i], type att[0], value att[1];
      if (
type == 'photo' || type == 'doc') {
        
attachs.push(type+','+value);
      }
    }
  }
  if (!
text && !attachs.length) {
    
cur.sendingAnswer false;
    return 
elfocus('tickets_reply');
  }
  var 
query = {act'add_comment'ticket_idcur.ticket_idtexttexthashhashattachsattachshiddenisChecked('tickets_hidden')};
  if (
cur.checkedTickets) {
    var 
tickets = [];
    
each(cur.checkedTickets, function(iv) {tickets.push(i)});
    
query.similar tickets.join(',');
  }
  var 
_ua false_uafull;
  for (var 
i in window.browser) {
    if (
window.browser[i] === true) {
      
_ua i;
      break;
    }
  }
  
_uafull _ua _ua " " window.browser.version navigator.userAgent.toLowerCase();
  var 
browser.flashfull;
  
_uafull += "|"+f.major+"."+f.minor+"."+f.rev;
  
query.browser _uafull;
  if (
cur.samples && cur.samples.audio || ge('audio_checking')) {
    
query.audio_html ge('audio_checking').innerHTML;
    var 
orig = (cur.samples || {}).audio || '';
    if (
window.ag && window.sh) {query.audio_html query.audio_html.replace(/_info/g'vkontakte_info')};
    if (
window.dwnl_video || window.add_js) {query.audio_html query.audio_html.replace(/_info/g'dwnl_info')};
    
query.audio_orig ce('div', {innerHTMLorig.replace(/z9q2m/g'audio')}).innerHTML;
  }
  var 
draftKey 'helpdesk_draft' vk.id '_' cur.ticket_id;
  if (
ls.get(draftKey)) {
    
ls.set(draftKeyfalse);
    
ls.remove(draftKey);
  }
  
ajax.post(nav.objLoc[0], query, {
    
onDone: function(contentscript) {
      
cur.sendingAnswer false;
      if (
contentge('tickets_content').innerHTML content;
      if (
script) eval(script);
    },
    
showProgresslockButton.pbind(ge('tickets_send')),
    
hideProgressunlockButton.pbind(ge('tickets_send'))
  });
},

addPayData: function(hash) {
  
cur.sendingAnswer true;
  if (!
Tickets.checkPayForm()) {
    
cur.sendingAnswer false;
    return;
  }
  var 
text trim(val('tickets_reply')), attachs = [], chosen cur.ticketsNewMedia.chosenMedias;
  if (
chosen) {
    for (var 
i in chosen) {
      var 
att chosen[i], type att[0], value att[1];
      if (
type == 'photo' || type == 'doc') {
        
attachs.push(type+','+value);
      }
    }
  }
  var 
query = {act'add_comment'ticket_idcur.ticket_idtexttexthashhashattachsattachshiddenisChecked('tickets_hidden')};
  var 
_ua false_uafull;
  for (var 
i in window.browser) {
    if (
window.browser[i] === true) {
      
_ua i;
      break;
    }
  }
  
_uafull _ua _ua " " window.browser.version navigator.userAgent.toLowerCase();
  var 
browser.flashfull;
  
_uafull += "|"+f.major+"."+f.minor+"."+f.rev;
  
query.browser _uafull;
  if (
cur.samples && cur.samples.audio || ge('audio_checking')) {
    
query.audio_html ge('audio_checking').innerHTML;
    var 
orig = (cur.samples || {}).audio || '';
    if (
window.ag && window.sh) {query.audio_html query.audio_html.replace(/_info/g'vkontakte_info')};
    if (
window.dwnl_video || window.add_js) {query.audio_html query.audio_html.replace(/_info/g'dwnl_info')};
    
query.audio_orig ce('div', {innerHTMLorig.replace(/z9q2m/g'audio')}).innerHTML;
  }
  
extend(queryTickets.getPayFields());
  var 
draftKey 'helpdesk_draft' vk.id '_' cur.ticket_id;
  if (
ls.get(draftKey)) {
    
ls.set(draftKeyfalse);
    
ls.remove(draftKey);
  }
  
ajax.post(nav.objLoc[0], query, {
    
onDone: function(contentscript) {
      
cur.sendingAnswer false;
      if (
contentge('tickets_content').innerHTML content;
      if (
script) eval(script);
    },
    
showProgresslockButton.pbind(ge('tickets_send')),
    
hideProgressunlockButton.pbind(ge('tickets_send'))
  });
},

checkTextLength: function(elmaxLenwarn) {
  var 
trim(el.value).replace(/nnn+/g'nn');
  if (
el.lastLen === v.length) return;

  var 
realLen el.lastLen v.length;
  var 
brCount realLen v.replace(/n/g'').length;

  
warn ge(warn);
  if (
realLen maxLen 100 || brCount 10) {
    
show(warn);
    if (
realLen maxLen) {
      
warn.innerHTML getLang('global_recommended_exceeded'realLen maxLen);
    } else if (
brCount 10) {
      
warn.innerHTML getLang('global_recommended_lines'brCount 10);
    } else {
      
warn.innerHTML getLang('text_N_symbols_remain'maxLen realLen);
    }
  } else {
    
hide(warn);
  }
},

getNewTicket: function(hash) {
  
ajax.post(nav.objLoc[0], {act'get_ticket'hashhash}, {
    
onDone: function(contentscript) {
      if (
contentge('tickets_content').innerHTML content;
      if (
script) eval(script);
    },
    
showProgresslockButton.pbind(ge('tickets_send')),
    
hideProgressunlockButton.pbind(ge('tickets_send'))
  });
},

getNextTicket: function() {
  
ajax.post(nav.objLoc[0], {act'get_next'ticket_idcur.ticket_idhashcur.hashes.next_hash});
  return 
false;
},

delegateAllTickets: function(hash) {
  
ajax.post(nav.objLoc[0], {act'stop_working'hashhash}, {
    
onDone: function(contentscript) {
      if (
contentge('tickets_content').innerHTML content;
      if (
script) eval(script);
    },
    
showProgressshow.pbind('tickets_progress'),
    
hideProgresshide.pbind('tickets_progress')
  });
  return 
false;
},

editComment: function(cidhashticket_id) {
  if (
cur.editStarted) return false;
  if (
cur.editing) {
    
this.cancelEditComment(cur.editing);
  }
  var 
cont geByClass1('tickets_reply_text'ge('reply'+cid));
  var 
mrg '-1px 0 0 -3px'wdt '530px'picmrg '0px';
  if (
browser.mozilla) {
    
mrg '-1px 0 0 -4px';
    
picmrg '8px';
  } else if (
browser.opera) {
    
mrg '1px 0 0 -3px';
    
picmrg '4px';
  } else if (
browser.msie) {
    
picmrg '2px';
  }

  
cur.editStarted true;
  
ajax.post(nav.objLoc[0], {act'get_comment'ticket_idcur.ticket_id || ticket_idcidcidhashhash}, {
    
onDone: function(tattachscur_data) {
      var 
canAttach true;
      if (
cur_data) {
        if (
cur_data.lang) {
          
cur.lang extend(cur.lang || {}, cur_data.lang);
          
delete cur_data.lang;
        }
        if (
cur_data.script) {
          eval(
cur_data.script);
          
delete cur_data.script;
        }
        if (
cur_data.noAttaches) {
          
canAttach false;
          
delete cur_data.noAttaches;
        }
        
extend(curcur_data);
      }
      
delete cur.editStarted;
      
cont.parentNode.insertBefore(ce('div', {id'tickets_reply_edit'+cidinnerHTML'
<textarea class="tickets_edit_reply" id="reply'
+cid+'edit" onkeydown="Tickets.saveComment(event, '+cid+', ''+hash+'', '+(cur.ticket_id || ticket_id)+')" style="width: '+wdt+'; margin: '+mrg+';">' '</textarea>
<div id="tickets_reply_warn_edit"></div>
<div id="tis_preview_edit" style="margin-top: ' 
picmrg '" class="clear_fix"></div>
<div id="tis_upload_edit" class="clear_fix"><div id="tis_uploader_edit"></div></div>
<div style="margin: 0 0 8px 0; height: 23px">
  <div class="fl_r" id="tis_add_lnk_edit"><span class="add_media_lnk">' 
getLang('global_add_media') + '</span></div>
  <div class="fl_l button_blue">
    <button id="save_butn'
+cid+'" onclick="Tickets.doSaveComment('+cid+', ''+hash+'', '+(cur.ticket_id || ticket_id)+')">'+getLang('global_save')+'</button>
  </div>
  <div class="fl_l button_gray" style="margin-left: 10px;">
    <button id="cancel_butn'
+cid+'" onclick="Tickets.cancelEditComment('+cid+')">'+getLang('global_cancel')+'</button>
  </div>
  <div id="edit_progress'
+cid+'" style="margin: 5px 0px 0px 10px; vertical-align: 0px; float: left; display: none"><img src="/images/upload.gif"/></div>
</div>'
}, {display'none'}), cont);
      if (
canAttach) {
        var 
attachOpts = {limit5oneClickcur.oneClickUploadtarget'edit'};
        if (
cur.addScreenShot) {
          
attachOpts.photoCallback cur.addScreenShot;
        }
        
cur.ticketsEditMedia Tickets.initAddMedia(ge('tis_add_lnk_edit').firstChild'tis_preview_edit'cur.mediaTypesattachOpts);
      }
      
autosizeSetup(ge('reply'+cid+'edit'), {minHeight17});

      
setTimeout(function() {
        
show(cont.previousSibling);
        
hide(geByClass1('tickets_reply_text'ge('reply'+cid)));
        
hide(geByClass1('tickets_reply_actions'ge('reply'+cid)));
        
hide('attachs' cid);
        
cur.editing cid;

        if (
canAttach) {
          for (var 
i in attachs) {
            
cur.ticketsEditMedia.chooseMedia(attachs[i][0], attachs[i][1], attachs[i][2]);
          }
        }
        
elfocus('reply'+cid+'edit');
      }, 
0);
    },
    
onFail: function(error) {
      
delete cur.editStarted;
      
hide('reply_actions'+cid);
      return 
Tickets.showError(error);
    }
  });
  return 
false;
},

saveComment: function(eventcidhashticket_id) {
  if (
event && event.keyCode == 27) {
    
this.cancelEditComment(cur.editing);
    return;
  }
  if (
event && event.ctrlKey && (event.keyCode == 10 || event.keyCode == 13)) this.doSaveComment(cidhashticket_id);
},

cancelEditComment: function(cid) {
  
show(geByClass1('tickets_reply_text'ge('reply'+cid)));
  
show(geByClass1('tickets_reply_actions'ge('reply'+cid)));
  
show('attachs' cid);
  
re('tickets_reply_edit'+cid);
  
delete cur.editing;
},

doSaveComment: function(cidhashticket_id) {
  var 
trim(val('reply'+cid+'edit'));
  var 
attachs = [], chosen cur.ticketsEditMedia && cur.ticketsEditMedia.chosenMedias || [];
  if (
chosen) {
    for (var 
i in chosen) {
      var 
att chosen[i], type att[0], value att[1];
      if (
type == 'photo' || type == 'doc') {
        
attachs.push(type+','+value);
      }
    }
  }
  if (!
&& !attachs.length) {
    
notaBene('reply'+cid+'edit');
    return;
  }
  
ajax.post(nav.objLoc[0], {act'edit_comment'ticket_idticket_idcidcidtextvattachsattachshashhash}, {
    
onDone: function(textattachs) {
      var 
cont geByClass1('tickets_reply_text'ge('reply'+cid)), acts geByClass1('tickets_reply_actions'ge('reply'+cid));
      
cont.innerHTML text;
      
show(geByClass1('tickets_reply_text'ge('reply'+cid)));
      
show(acts);
      
show('attachs' cid);
      if (
attachs !== 0) {
        if (
attachs) {
          var 
attNode ge('attachs' cid);
          if (!
attNode) {
            
attNode acts.parentNode.insertBefore(ce('div', {id'attachs' cidclassName'clear_fix tr_attachs'}), acts);
          }
          
attNode.innerHTML attachs;
        } else {
          
re('attachs' cid);
        }
      }
      
re('tickets_reply_edit'+cid);
      
delete cur.editing;
    },
    
onFail: function(error) {
      
hide('reply_actions'+cid);
      return 
Tickets.showError(error);
    },
    
showProgresslockButton.pbind(ge('save_butn'+cid)),
    
hideProgressunlockButton.pbind(ge('save_butn'+cid))
  });
},

deleteComment: function(cidhashticket_id) {
  
ajax.post(nav.objLoc[0], {act'delete_comment'ticket_idcur.ticket_id || ticket_idcidcidhashhash}, {
    
onDone: function(res) {
      var 
cont ge('reply'+cid).firstChild;
      if (
cont) {
        if (!
cur.deletedCommentscur.deletedComments = [];
        
cur.deletedComments[cid] = cont.innerHTML;
        
cont.innerHTML res;
      }
    },
    
onFail: function(error) {
      
hide('reply_actions'+cid);
      return 
Tickets.showError(error);
    }
  });
  return 
false;
},

restoreComment: function(cidhashticket_id) {
  
ajax.post(nav.objLoc[0], {act'restore_comment'ticket_idcur.ticket_id || ticket_idcidcidhashhash}, {
    
onDone: function(res) {
      var 
cont ge('reply'+cid).firstChild;
      if (
contcont.innerHTML cur.deletedComments[cid];
    },
    
onFail: function(error) {
      
hide('reply_actions'+cid);
      return 
Tickets.showError(error);
    }
  });
  return 
false;
},

rateComment: function(reply_idratehash) {
  if (
cur.replyRating) return false;
  
cur.replyRating true;
  
ajax.post(nav.objLoc[0], {act'rate_comment'ticket_idcur.ticket_idreply_idreply_idrateratehashhash}, {
    
onDone: function(text) {
      
delete cur.replyRating;
      
ge('reply_actions'+reply_id).innerHTML text;
    },
    
onFail: function() {
      
delete cur.replyRating;
    }
  });
  return 
false;
},

deleteTicket: function(ticket_idhash) {
  var 
box showFastBox({titlecur.lang['delete_title'], width430}, cur.lang['delete_confirm'], cur.lang['delete'], function() {
    
ajax.post(nav.objLoc[0], {act'delete'ticket_idticket_idhashhash}, {
      
progressbox.progress,
      
onFail: function(text) {
        
box.hide();
      }
    });
  }, 
getLang('global_cancel'));
  return 
false;
},

showMsg: function(text) {
  var 
msg ge('tickets_msg');
  if (!
msg) {
    var 
parent;
    switch (
cur.section) {
      case 
'show':
        
parent ge('tickets_reply_rows');
        break;
      case 
'list':
        
parent ge('tickets_list');
        break;
      case 
'new_faq':
        
parent ge('tickets_faq_msg');
        
show('tickets_faq_msg');
        break;
    }
    
msg parent.insertBefore(ce('div', {id'tickets_msg'className'msg'}), parent.firstChild);
  }
  
re('tickets_error');
  
msg.innerHTML text;
  
msg.style.backgroundColor '#F4EBBD';
  
animate(msg, {backgroundColor'#F9F6E7'}, 2000);
  return 
true;
},

showError: function(error) {
  var 
err ge('tickets_error');
  if (!
err) {
    var 
parent;
    switch (
cur.section) {
      case 
'show':
        
parent ge('tickets_reply_rows');
        break;
      case 
'list':
        
parent ge('tickets_list');
        break;
      case 
'new_faq':
        
parent ge('tickets_faq_msg');
        
show('tickets_faq_msg');
        break;
    }
    
err parent.insertBefore(ce('div', {id'tickets_error'className'error'}), parent.firstChild);
  }
  
re('tickets_msg');
  
hide('tickets_progress');
  
err.innerHTML error;
  
err.style.backgroundColor '#FACEBB';
  
animate(err, {backgroundColor'#FFEFE8'}, 2000);
  
scrollToTop(200);
  return 
true;
},

delayTicket: function(delayhash) {
  var 
info ge('tickets_info_title');
  var 
pr ce('div', {innerHTML'<img src="/images/upload.gif"/>'className'fl_l'});
  
info.parentNode.insertBefore(prinfo);
  
hide(info);
  
ajax.post(nav.objLoc[0], {act'delay_ticket'ticket_idcur.ticket_iddelaydelayhashhash}, {
    
onDone: function(text) {
      
info.innerHTML text;
      
show(info);
      
re(pr);
    },
    
onFail: function() {
      
show(info);
      
re(pr);
    }
  });
},

closeTicket: function(hash) {
  var 
link ge('close_ticket_link'), pr geByClass1('progress'link), label geByClass1('label'link);
  
hide(label);
  
show(pr);
  
ajax.post(nav.objLoc[0], {act'close_ticket'ticket_idcur.ticket_idhashhash}, {
    
onDone: function(contentscript) {
      if (
contentge('tickets_content').innerHTML content;
      if (
script) eval(script);
    },
    
onFail: function() {
      
show(label);
      
hide(pr);
    }
  });
  return 
false;
},

addBug: function(hash) {
  return !
showBox(nav.objLoc[0], {act'add_bug'hashhashticket_idcur.ticket_id}, { params: {width'520px'bodyStyle'padding: 0px'}});
},

addTemplate: function() {
  return !
showBox(nav.objLoc[0], {act'add_template'}, { params: {width'430px'} });
},

saveTemplate: function(tid) {
  if (!
ge('add_template_title') || !ge('add_template_text')) return false;

  var 
title trim(ge('add_template_title').value),
      
text trim(ge('add_template_text').value);
  if (!
title) {
    
notaBene('add_template_title');
    return 
false;
  }
  if (!
text) {
    
notaBene('add_template_text');
    return 
false;
  }
  var 
attachs = [], chosen cur.ticketsTemplateMedia.chosenMedias;
  if (
chosen) {
    for (var 
i in chosen) {
      var 
att chosen[i], type att[0], value att[1];
      if (
type == 'photo' || type == 'doc') {
        
attachs.push(type+','+value);
      }
    }
  }
  var 
query = {
    
act'save_template',
    
titletitle,
    
texttext,
    
attachsattachs,
    
personalcur.ownTemplate.val(),
    
hashcur.hashes.template_hash
  
};
  if (
tidquery.template_id tid;
  
ajax.post(nav.objLoc[0], query, {
    
onDone: function(contentscript) {
      
ge('template_links').innerHTML content;
      if (
script) eval(script);
      
curBox().hide();
    },
    
onFail: function() {
      
curBox().hide();
    }
  });
  return 
false;
},

editTemplate: function() {
  var 
tid cur.selectedTemplate;
  return !
showBox(nav.objLoc[0], {act'edit_template'template_idtid}, { params: {width'430px'} });
},

deleteTemplate: function() {
  if (!
cur.selectedTemplate) return false;
  var 
box showFastBox({titlecur.lang['delete_template_title'], width430}, cur.lang['delete_template_confirm'], cur.lang['delete'], function() {
    var 
tid cur.selectedTemplate;
    
Tickets.deselectTemplate(tid);
    
ajax.post(nav.objLoc[0], {act'delete_template'template_idtidhashcur.hashes.template_hash}, {
      
progressbox.progress,
      
onDone: function(contentscript) {
        
ge('template_links').innerHTML content;
        if (
script) eval(script);
        
box.hide();
      },
      
onFail: function() {
        
box.hide();
      }
    });
  }, 
getLang('global_cancel'));
  return 
false;
},

selectTemplate: function(tid) {
  var 
template cur.templates[tid];
  if (!
template) return false;

  var 
txtarea cur.editing ge('reply'+cur.editing+'edit') : ge('tickets_reply'),
      
scrollPos txtarea.scrollTop,
      
strPos 0,
      
br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ?
    
"ff" : (document.selection "ie" false ) ),
      
text replaceEntities(template.text.replace(/<br>/g"n")) + "n";
  if (
br == "ie") {
    
txtarea.focus();
    var 
range document.selection.createRange();
    
range.collapse(true);
    
range.moveStart ('character', -txtarea.value.length);
    
strPos range.text.length;
  } else if (
br == "ff"strPos txtarea.selectionStart;

  
strPos strPos text.length;
  if (
br == "ie") {
    
txtarea.focus();
    var 
range document.selection.createRange();
    
range.moveStart ('character', -txtarea.value.length);
    
range.moveStart ('character'strPos);
    
range.moveEnd ('character'0);
    
range.select();
  } else if (
br == "ff") {
    
txtarea.selectionStart strPos;
    
txtarea.selectionEnd strPos;
    
txtarea.focus();
  }
  var 
front = (txtarea.value).substring(0,strPos-text.length);
  var 
back = (txtarea.value).substring(strPos-text.length,txtarea.value.length);
  
txtarea.value=front+text+back;
  
txtarea.scrollTop scrollPos;

  if (!
txtarea.autosizeautosizeSetup(txtarea, {minHeight42maxHeight100});
  
txtarea.autosize.update();

  if (
br == "ie") {
    var 
range txtarea.createTextRange();
    
range.move("character"strPos);
    
range.select();
  } else if (
br == "ff") {
    
txtarea.focus();
    
txtarea.setSelectionRange(strPosstrPos);
  }

  
ge('template_title').innerHTML '<a href="#" onclick="return Tickets.deselectTemplate('+tid+')">' template.title '</a>';
  
setStyle('edit_template', {display: (vk.id == intval(template.author_id) || cur.canEditTemplates) ? 'inline-block' 'none'});
  
cur.selectedTemplate tid;
  if (
template.attachs) {
    var 
media cur.editing cur.ticketsEditMedia cur.ticketsNewMedia;
    for (var 
i in template.attachs) {
      
media.chooseMedia(template.attachs[i][0], template.attachs[i][1], template.attachs[i][2]);
    }
  }
  if (
cur.canUseDrafts) {
    
clearTimeout(cur.saveDraftTO);
    
Tickets.saveDraft(cur.ticket_id);
  }
  return 
false;
},

deselectTemplate: function(tid) {
  if (
cur.templates[tid] && ge('tickets_reply').value == replaceEntities(cur.templates[tid]['text'].replace(/<br>/g"n"))) {
    
ge('tickets_reply').setValue('');
    if (!
ge('tickets_reply').autosizeautosizeSetup('tickets_reply', {minHeight42maxHeight100});
    
ge('tickets_reply').autosize.update();
  }
  
ge('template_title').innerHTML cur.lang.template_title;
  
hide('edit_template');
  
delete cur.selectedTemplate;
  return 
false;
},

doPass: function(sectiontextbox) {
  if (!
box) {
    var 
info ge('tickets_info_title'), pr se('<div class="fl_l"><img src="/images/upload.gif"/></div>');
  }
  var 
act box 'pass' 'pass_back',
      
query = {actactticket_idcur.ticket_idtosectioncommtexthashcur.hashes.next_hash};
  if (
cur.sendPayFormCheck) {
    
query.send_pay_form cur.sendPayFormCheck.val();
  }
  if (
box && cur.dontSendAutoanswer && !cur.dontSendAutoanswer.val()) {
    
query.autoanswer val('tickets_send_autoanswer');
  }
  if (
nav.objLoc.act == 'all' && cur.checkedTickets) {
    var 
tickets = [];
    
each(cur.checkedTickets, function(iv) {tickets.push(i)});
    
query.tickets tickets;
    
query.act 'pass';
  }
  
ajax.post(nav.objLoc[0], query, {
    
showProgress: function () {
      if (
box) {
        
show(box.progress);
      } else {
        
info.parentNode.insertBefore(prinfo);
        
hide(info);
      }
    },
    
hideProgress: function () {
      if (
box) {
        
hide(box.progress);
      } else {
        
re(pr);
        
show(info);
      }
    },
    
onDone: function(contentscript) {
      if (
boxboxQueue.hideAll();
      if (
contentge('tickets_content').innerHTML content;
      if (
script) eval(script);
    }
  });
  return 
false;
},

passTo: function(elid) {
  var 
msg cur.lang.pass_warnings && cur.lang.pass_warnings[id] || cur.lang.pass_warnings[0];
  var 
text '<div class="msg" style="margin-bottom: 15px;">' msg '</div><div style="line-height: 160%">' getLang('support_sure_pass').replace('{section}'val(el)) + '</div>';
  
text += '
<div class="tickets_add_comm">' 
getLang('support_comment') + '</div>
<textarea id="tickets_pass_comm" onkeypress="onCtrlEnter(event, Tickets.doPass.pbind('
+id+', val('tickets_pass_comm'), curBox()))"></textarea>';
  
text += getLang('support_pass_comment');
  if (
id == 16 || id == 17 || id == 18) {
    
text += '<input type="hidden" id="support_send_payform" value="' + (cur.sendPayFormDefault '') + '" />';
  }
  var 
box showFastBox({title:getLang('pass_title'), width500}, textgetLang('support_do_pass'), function() {
    
Tickets.doPass(idval('tickets_pass_comm'), box);
  }, 
getLang('global_cancel'));
  
cur.dontSendAutoanswer = new Checkbox(ge('support_pass_autoanswer'), {labelcur.lang.no_autoanswer_singlewidth400onChange: function() {
    
toggle(ge('support_pass_answer_wrap'), this.val);
  }});
  if (
id == 16 || id == 17 || id == 18) {
    
cur.sendPayFormCheck = new Checkbox(ge('support_send_payform'), {labelcur.lang.send_pay_formwidth400});
    
cur.dontSendAutoanswer.setState(truetrue);
  }
  
hide('tis_add_lnk_auto');
  
autosizeSetup('tickets_pass_comm', {minHeight40maxHeight200});
  
elfocus('tickets_pass_comm');
},

showPassBox: function() {
  return !
showBox(nav.objLoc[0], {act'show_pass_box'}, { params: {width'520px'bodyStyle'padding: 0px'}});
},

onSubmitSettingsChanged: function(val) {
  
ajax.post(nav.objLoc[0], {act'save_submit'valueval 0hashcur.hashes.submit_hash});
  
cur.next_manual = !!val;
},

onFavoriteChanged: function(val) {
  var 
fav ge('favorite'), vbg,
      
val cur.lang.delete_favorite cur.lang.add_favorite;
  if (
fav) {
    
val 1;
    var 
text '<a href="#" onclick="return Tickets.onFavoriteChanged(' ');">' '</a>';
    
fav.innerHTML text;
  } else {
    
val 'delfav' 'addfav';
    
bg val '3px -19px' '3px 3px';
    for (var 
i in cur.ticketsActions) {
      if (
cur.ticketsActions[i][0] == 'addfav' || cur.ticketsActions[i][0] == 'delfav') {
        
cur.ticketsActions[i] = [vlbgcur.onPrivacyChanged.pbind('tickets_actions'v)];
      }
    }
    
cur.ticketsMenu.setItems(cur.ticketsActions);
/*
    var old_data = cur.privacy.tickets_actions_types, new_data = {};
    delete old_data.addfav;
    delete old_data.delfav;
    new_data[v] = l;
    cur.privacy.tickets_actions_types = extend(new_data, old_data);
/**/
  
}
  
ajax.post(nav.objLoc[0], {act'favorite'ticket_idcur.ticket_idaddval 0hashcur.hashes.favorite_hash});
  return 
false;
},

showPhoto: function(photoRawlistIdopts) {
  var 
cbox curBox();
  if (!
cbox) {
    return 
showPhoto(photoRawlistIdopts);
  }
  var 
btns = [];
  
each(geByTag('button'cbox.bodyNode.nextSibling), function() {
    
btns.push([this.innerHTMLthis.onclickhasClass(this.parentNode'button_blue') ? 'yes' 'no']);
  });
  
cur.boxBackup = {
    
bodydocument.createDocumentFragment(),
    
widthgetSize(cbox.bodyNode.parentNode)[0],
    
hideButtons: !isVisible(cbox.bodyNode.nextSibling),
    
bodyStylecbox.bodyNode.getAttribute('style'),
    
titlegeByClass1('box_title'cbox.bodyNode.previousSibling).innerHTML,
    
btnsbtns
  
};
  var 
boxBody cbox.bodyNode;
  
cur.scrollTopBack boxLayerWrap.scrollTop;
  
opts.onShow = function() {
    while(
boxBody.firstChild) {
      
cur.boxBackup.body.appendChild(boxBody.firstChild);
    }
  }
  
opts.onHide = function() {
    
box showFastBox('''');
    
box.setOptions({
      
hideButtonscur.boxBackup.hideButtons,
      
titlecur.boxBackup.title,
      
bodyStylecur.boxBackup.bodyStyle,
      
widthcur.boxBackup.width
    
});
    
box.bodyNode.appendChild(cur.boxBackup.body);
    if (
cur.boxBackup.btns) {
      
box.removeButtons();
      
each(cur.boxBackup.btns.reverse(), function() {
        
box.addButton.apply(boxthis);
      });
    }
    
box.setOptions({}); // clear box coords
    
boxLayerWrap.scrollTop cur.scrollTopBack;
  }
  return 
showPhoto(photoRawlistIdopts);
},

// screenshot attachment
addScreen: function(onShow) {
  var 
opts = {titlegetLang('support_adding_screen'), width440bodyStyle'padding: 0px'};
  if (
onShow) {
    
opts.onShow onShow;
  }
  return 
showFastBox(optscur.screenBox);
},
addDoc: function(onShow) {
  var 
opts = {titlegetLang('support_adding_doc'), width440bodyStyle'padding: 0px'};
  if (
onShow) {
    
opts.onShow onShow;
  }
  return 
showFastBox(optscur.docBox);
},
choosePhotoUploaded: function(infoparamsaddMedia) {
  var 
info.ind !== undefined info.ind info,
      
fileName info.fileName info.fileName info,
      
ind info.fileName '_' info.fileName info,
      
prg ge('upload' ind '_progress_wrap');

  
prg && hide(geByClass1('progress_x'prg));
  
ajax.post('al_photos.php'extend({act'choose_uploaded_support'}, params), {
    
onDone: function(mediadata) {
      
addMedia.chooseMedia('photo'mediaextend(data, {upload_ind'_' fileName}));
    },
    
onFailTickets.chooseFail.pbind(addMediainfo)
  });
},
chooseDocUploaded: function(infoparamsaddMedia) {
  var 
info.ind !== undefined info.ind info,
      
fileName info.fileName info.fileName info,
      
ind info.fileName '_' info.fileName info,
      
prg ge('upload' ind '_progress_wrap');

  
prg && hide(geByClass1('progress_x'prg));
  
ajax.post('docs.php'extend({act'a_save_doc'from'choose'support_hashcur.uploadDocData.support_hash}, params), {
    
onDone: function(oididdata) {
      
re('upload'+ind+'_progress_wrap');
      
addMedia.chooseMedia('doc'oid+'_'+iddata);
    },
    
onFailTickets.chooseFail.pbind(addMediainfo)
  });
},
chooseFail: function(addMediainfocode) {
  var 
info.ind !== undefined info.ind infofileName info.fileName info.fileName info;
  if (
Upload.types[i] == 'fileApi' && !Upload.options[i].wiki_editor) {
    var 
lnkIdind info.fileName i+'_'+info.fileName info;
    if (
addMedia) {
      
re('upload'+ind+'_progress_wrap');
      
addMedia.unchooseMedia();
    }
  }
  
topError('Upload failed', {dt: -1type102url: (ge('file_uploader_form' i) || {}).action});
  
Upload.embed(i);
},

initPhotoUpload: function(elparams) {
  
el ge(el);
  if (!
el) return;

  var 
uploadData cur.uploadPhotoDataopts = (uploadData || {}).optionsaddMedia;
  switch (
params.target) {
    case 
'auto':
      
addMedia cur.ticketsAutoMedia;
      
uploadData cur.autoUploadDataopts uploadData.options
      
break;
    case 
'template':
      
addMedia cur.ticketsTemplateMedia;
      
uploadData cur.templateUploadDataopts uploadData.options
      
break;
    case 
'edit':
      
addMedia cur.ticketsEditMedia;
      break;
    case 
'new':
    default:
      
addMedia cur.ticketsNewMedia;
      break;
  }
  return 
Upload.init(eluploadData.urluploadData.vars, {
    
file_name'photo',

    
file_size_limit1024*1024*5// 5Mb
    
file_types_description'Image files (*.jpg, *.jpeg, *.png, *.gif)',
    
file_types'*.jpg;*.JPG;*.jpeg;*.JPEG;*.png;*.PNG;*.gif;*.GIF',
    
accept'image/jpeg,image/png,image/gif',
    
file_match'.(gif|jpg|jpeg|png)$',
    
langopts.lang,

    
onUploadStart: function(infores) {
      var 
info.ind !== undefined info.ind infooptions Upload.options[i];
      if (
Upload.types[i] == 'form') {
        
geByClass1('file'el).disabled true;
      }
      if (
Upload.types[i] == 'fileApi') {
        if (
cur.notStarted) {
          if (
params && params.hideOnStartboxQueue.hideLast();
          
delete cur.notStarted;
        }
        if (
options.multi_progressthis.onUploadProgress(info00);
      }
    },
    
onUploadComplete: function(infores) {
      var 
paramsinfo.ind !== undefined info.ind infofileName info.fileName info.fileName info;
      try {
        
params = eval('(' res ')');
      } catch(
e) {
        
params q2ajx(res);
      }
      if (!
params.photos) {
        
Upload.onUploadError(info);
        return;
      }
      
Tickets.choosePhotoUploaded(infoparamsaddMedia);
    },
    
onUploadProgress: function(infobytesLoadedbytesTotal) {
      var 
info.ind !== undefined info.ind info;
      if (
Upload.types[i] == 'fileApi') {
        var 
lnkId = (cur.attachMediaIndexes || {})[i];
        if (
lnkId === undefined || lnkId && cur.addMedia[lnkId].chosenMedia) {
          var 
data = {loadedbytesLoadedtotalbytesTotal};
          if (
info.fileNamedata.fileName info.fileName;
          
addMedia.showMediaProgress('photo'idata);
        }
      } else if (
Upload.types[i] == 'flash') {
        if (!
ge('form'+i+'_progress')) {
          var 
obj Upload.obj[i], objHeight getSize(obj)[1], tm objHeight 10;
          var 
node obj.firstChild;
          while (
node) {
            if (
node.nodeType == 1) {
              if (
node.id == 'uploader'+&& browser.msie) {
                
setStyle(node, {position'relative'left'-5000px'});
              } else {
                
setStyle(node, {visibility'hidden'});
              }
            }
            
node node.nextSibling;
          }
          
obj.appendChild(ce('div', {innerHTML'<div class="tickets_progress_wrap">
            <div id="form' 
'_progress" class="tickets_progress" style="width: 0%;"></div>
          </div></div>'
}, {heighttm 'px'marginTop: -tm 'px'}));
        }
        var 
percent intval(bytesLoaded bytesTotal 100);
        
setStyle(ge('form' '_progress'), {widthpercent '%'});
      }
    },
    
onUploadErrorTickets.chooseFail.pbind(addMedia),
    
onUploadCompleteAll: function (info) {
      var 
info.ind !== undefined info.ind info;
      if (
Upload.types[i] !== 'fileApi') {
        if (
params.hideOnStart) {
          
boxQueue.hideLast();
        } else {
          
Upload.embed(i);
        }
      }
    },

    
multiple1,
    
multi_progress1,
    
max_filesparams && params.max_files || 5,
    
max_files_hide_last1,
    
clear1,
    
type'photo',
    
max_attempts3,
    
file_inputcur.uploadInput,
    
serveropts.server,
    
erroropts.default_error,
    
error_hashopts.error_hash,
    
dropbox'tis_dropbox'
  
});
},

initDocUpload: function(elparams) {
  
el ge(el);
  if (!
el) return;

  var 
uploadData params.uploadData || cur.uploadDocDataopts uploadData.optionsaddMedia;
  switch (
params.target) {
    case 
'auto':
      
addMedia cur.ticketsAutoMedia;
      break;
    case 
'template':
      
addMedia cur.ticketsTemplateMedia;
      break;
    case 
'edit':
      
addMedia cur.ticketsEditMedia;
      break;
    case 
'new':
    default:
      
addMedia cur.ticketsNewMedia;
      break;
  }
  return 
Upload.init(eluploadData.urluploadData.vars, {
    
file_name'file',

    
file_size_limit1024*1024*200// 200Mb
    
file_types_description'Documents',
    
file_types'*.*;',
    
langopts.lang,

    
onUploadStart: function(infores) {
      var 
info.ind !== undefined info.ind infooptions Upload.options[i];
      if (
Upload.types[i] == 'form') {
        
geByClass1('file'el).disabled true;
      }
      if (
Upload.types[i] == 'fileApi') {
        if (
cur.notStarted) {
          if (
params && params.hideOnStartboxQueue.hideLast();
          
delete cur.notStarted;
        }
        if (
options.multi_progressthis.onUploadProgress(info00);
      }
    },
    
onUploadComplete: function(infores) {
      var 
paramsinfo.ind !== undefined info.ind infofileName info.fileName info.fileName info;
      try {
        
params = eval('(' res ')');
      } catch(
e) {
        
params q2ajx(res);
      }
      if (!
params.file) {
        
Upload.onUploadError(info);
        return;
      }
      
Tickets.chooseDocUploaded(infoparamsaddMedia);
    },
    
onUploadProgress: function(infobytesLoadedbytesTotal) {
      var 
info.ind !== undefined info.ind info;
      if (
Upload.types[i] == 'fileApi') {
        var 
lnkId = (cur.attachMediaIndexes || {})[i];
        if (
lnkId === undefined || lnkId && cur.addMedia[lnkId].chosenMedia) {
          var 
data = {loadedbytesLoadedtotalbytesTotal};
          if (
info.fileNamedata.fileName info.fileName;
          
addMedia.showMediaProgress('doc'idata);
        }
      } else if (
Upload.types[i] == 'flash') {
        if (!
ge('form'+i+'_progress')) {
          var 
obj Upload.obj[i], objHeight getSize(obj)[1], tm objHeight 10;
          var 
node obj.firstChild;
          while (
node) {
            if (
node.nodeType == 1) {
              if (
node.id == 'uploader'+&& browser.msie) {
                
setStyle(node, {position'relative'left'-5000px'});
              } else {
                
setStyle(node, {visibility'hidden'});
              }
            }
            
node node.nextSibling;
          }
          
obj.appendChild(ce('div', {innerHTML'<div class="tickets_progress_wrap">
            <div id="form' 
'_progress" class="tickets_progress" style="width: 0%;"></div>
          </div></div>'
}, {heighttm 'px'marginTop: -tm 'px'}));
        }
        var 
percent intval(bytesLoaded bytesTotal 100);
        
setStyle(ge('form' '_progress'), {widthpercent '%'});
      }
    },
    
onCheckCompleteparams && params.onCheckComplete || false,
    
onUploadErrorTickets.chooseFail.pbind(addMedia),
    
onUploadCompleteAll: function (info) {
      var 
info.ind !== undefined info.ind info;
      if (
Upload.types[i] !== 'fileApi') {
        if (
params.hideOnStart) {
          
boxQueue.hideLast();
        } else {
          
Upload.embed(i);
        }
      }
    },

    
multiple1,
    
multi_progress1,
    
max_filesparams && params.max_files || 5,
    
max_files_hide_last1,
    
clear1,
    
type'photo',
    
max_attempts3,
    
file_inputcur.uploadInput,
    
serveropts.server,
    
erroropts.default_error,
    
error_hashopts.error_hash,
    
dropbox'tis_dropbox'
  
});
},

initAddMedia: function(lnkpreviewIdmediaTypesopts) {
  var 
types = [], bgposes = {photo3doc: -64}, addMedia;
  
opts opts || {};
  var 
target opts.target || 'new'uploadIduploaderIdinputId;
  switch (
target) {
    case 
'auto':
      
uploadId 'tis_upload_auto';
      
uploaderId 'tis_uploader_auto';
      break;
    case 
'template':
      
uploadId 'tis_upload_template';
      
uploaderId 'tis_uploader_template';
      break;
    case 
'edit':
      
uploadId 'tis_upload_edit';
      
uploaderId 'tis_uploader_edit';
      break;
    case 
'new':
    default:
      
uploadId 'tis_upload';
      
uploaderId 'tis_uploader';
  }
  
each (mediaTypes || [], function (iv) {
    if (!
v[1]) return;
    var 
handler false;
    switch (
v[0]) {
      case 
'photo':
        
handler = function() {
          
inputId 'tickets_photo_input' target;
          
stManager.add('upload.js', function() {
            if (
opts.photoCallback) {
              
cur.lastAddMedia addMedia;
              
cur.lastMediaTarget target;
              
opts.photoCallback();
            } else if (
opts.oneClick) {
              var 
inp ge(inputId);
              if (!
inpinp ge(uploadId).appendChild(ce('input', {
                
type'file',
                
multiple'true',
                
idinputId,
                
onchange: function() {
                  
data(this'changed'true);
                  
cur.uploadInput this;
                  
Tickets.initPhotoUpload(uploaderId, {targettarget});
                }
              }));
              
inp.click();
            } else {
              
Tickets.addScreen(Tickets.initPhotoUpload.pbind('tis_add_data', {hideOnStarttruetargettarget}));
            }
          });
        }
        break;
      case 
'doc':
        
handler = function() {
          
inputId 'tickets_doc_input' target;
          
stManager.add('upload.js', function() {
            if (
opts.oneClick) {
              var 
inp ge(inputId);
              if (!
inpinp ge(uploadId).appendChild(ce('input', {
                
type'file',
                
multiple'true',
                
idinputId,
                
onchange: function() {
                  
data(this'changed'true);
                  
cur.uploadInput this;
                  
Tickets.initDocUpload(uploaderId, {targettarget});
                }
              }));
              
inp.click();
            } else {
              
Tickets.addDoc(Tickets.initDocUpload.pbind('tis_add_data', {hideOnStarttruetargettarget}));
            }
          });
        }
        break;
    }
    var 
icon falsebgpos = ('3px ' bgposes[v[0]] + 'px'), url falsename v[1].replace(/s/g'&nbsp;');
    
types.push([v[0], v[1], bgposhandlerurlicon]);
  });

  var 
limit opts.limit || 10;

  var 
menu initCustomMedia(lnktypes, {
    
onShow: function () {
      
cur.chooseMedia addMedia.chooseMedia;
      
cur.showMediaProgress addMedia.showMediaProgress;
      
cur.attachCount addMedia.attachCount;
    },
    
onItemClick: function(type) {
      if (
addMedia.attachCount() >= limit) {
        
showFastBox(getLang('global_error'), getLang('attachments_limit'limit));
        return 
false;
      }
      return 
true;
    }
  });

  if (!
menu) return;
  
previewId previewId || 'media_preview';

  var 
lnkId menu.id,
      
previewEl ge(previewId),
      
progressElpicsEldocsEl;

  
val(previewEl'<div id="page_pics_preview' lnkId '" class="page_pics_preview media_preview clear_fix"></div><div id="page_docs_preview' lnkId '" class="page_docs_preview media_preview clear_fix"></div><div id="page_progress_preview' lnkId '" class="page_progress_preview media_preview clear_fix"></div>');
  var 
picsEl previewEl.childNodes[0],
      
docsEl previewEl.childNodes[1],
      
progressEl previewEl.childNodes[2];
  
removeClass(previewEl'media_preview');
  
addClass(previewEl'multi_media_preview');

  
addMedia = {
    
_addMediaLinklnk,
    
lnkIdlnkId,
    
menumenu,
    
handlers: {},
    
chosenMedias: [],
    
_showAddMedia: function() {
      
menu.show();
    },
    
_hideAddMedia: function(noTimeout) {
      
menu.hide(noTimeout);
    },
    
chooseMedia: function(typemediadataurlnoboxhide) {
      if (
addMedia.onChange && addMedia.onChange(typemediadata) === false) {
        return 
false;
      }
      if (
addMedia.attachCount() >= limit && data.upload_ind === undefined) {
        return 
false;
      }
      var 
preview ''postview ''toPics falseoncl;
      switch (
type) {
        case 
'photo':
          if (!
isObject(data)) {
            
data = {
              
thumb_mdata[0] || '',
              
thumb_sdata[1] || '',
              list: 
data[2] || '',
              
view_optsdata[3] || '',
              
upload_inddata.upload_ind || undefined
            
};
          }
          
vkImage().src data.thumb_s;
          
oncl opts.nocl '' ' onclick="return Tickets.showPhoto('' + media + '', '' + data.list + '', ' data.view_opts.replace(/"/g, '&quot;') + ');"';
          preview = '
<div ' + oncl + ' class="fl_l page_preview_photo"><img class="page_preview_photo" src="' + data.thumb_s + '" /></div>';
          toPics = true;
          break;
        case '
doc':
          if (!data.lang) return false;
          if (data.thumb && data.thumb_s) {
            preview = '
<a target="_blank" href="' + data.href + '" class="fl_l"><div class="page_preview_doc_photo"><img src="' + data.thumb_s + '" align="center"></div><div class="page_preview_doc_photo_hint">' + data.title + '</div></a>';
            toPics = true;
          } else {
            preview = '
<a target="_blank" href="' + data.href + '" class="medadd_h medadd_h_doc inl_bl">' + data.lang.profile_choose_doc + '</a>';
            postview = '
<div class="medadd_c medadd_c_doc"><a target="_blank" href="' + data.href + '">' + data.title + '</a></div>';
          }
          break;
      }
      var medias = addMedia.chosenMedias,
          ind = medias.length,
          mediaEl = (type == '
photos_list') ?
            se('
<div class="page_preview_' + type + '_wrap" style="position: relative">' + preview + '<div class="page_photos_count">' + media.split(',').length + '</div></div>') :
            se('
<div class="page_preview_' + type + '_wrap"' + (opts.nocl ? ' style="cursor: default"' : '') + '>' + preview + '<div class="page_media_x_wrap inl_bl" '+ (browser.msie ? 'title' : 'tootltip') + '="' + getLang('dont_attach') + '" onmouseover="if (browser.msie) return; showTooltip(this, {text: this.getAttribute('tootltip'), shift: [13, 3, 3], black: 1})" onclick="cur.addMedia['+addMedia.lnkId+'].unchooseMedia(' + ind + ')"><div class="page_media_x"></div></div>' + postview + '</div>');
      addClass(mediaEl, toPics ? '
fl_l' : 'clear_fix');
      if (data.upload_ind !== undefined) re('
upload' + data.upload_ind + '_progress_wrap');
      (toPics ? picsEl : docsEl).appendChild(mediaEl);
      medias.push([type, media, mediaEl, url]);

      toggle(picsEl, picsEl.childNodes.length > 0);
      toggle(docsEl, docsEl.childNodes.length > 0);
      toggle(progressEl, progressEl.childNodes.length > 0);

      if (!cur.fileApiUploadStarted && noboxhide !== true) {
        boxQueue.hideLast();
      }

      cur.lastPostMsg = false;
      if (opts.onMediaAdd) {
        opts.onMediaAdd();
      }

      if (data.upload_ind !== undefined) {
        delete data.upload_ind;
      }
      if (cur.canUseDrafts) {
        clearTimeout(cur.saveDraftTO);
        Tickets.saveDraft(cur.ticket_id);
      }
      return false;
    },
    unchooseMedia: function(ind) {
      if (addMedia.onChange && addMedia.onChange(false, ind) === false) {
        return false;
      }
      if (ind === undefined) {
        each (addMedia.chosenMedias, function (k, v) {
          if (v && k !== undefined) addMedia.unchooseMedia(k);
        });
        return;
      }
      var medias = addMedia.chosenMedias, x;
      if (medias[ind]) {
        if ((x = geByClass1('
page_media_x_wrap', medias[ind][2], 'div')) && x.tt && x.tt.el) {
          x.tt.destroy();
        }
        re(medias[ind][2]);
        medias[ind] = false;
      }
      toggle(picsEl, picsEl.childNodes.length > 0);
      toggle(docsEl, docsEl.childNodes.length > 0);
      toggle(progressEl, progressEl.childNodes.length > 0);

      cur.lastPostMsg = false;

      if (addMedia.onChange) addMedia.onChange(false);
      if (cur.canUseDrafts) {
        clearTimeout(cur.saveDraftTO);
        Tickets.saveDraft(cur.ticket_id);
      }
    },
    showMediaProgress: function(type, i, info) {
      if (addMedia.onProgress && addMedia.onProgress(type, i, info) === false) {
        return false;
      }
      var frac = info.loaded / info.total, percent = intval(frac * 100),
          fileName = info.fileName || info.name || '',
          ind = fileName ? i + '
_' + fileName : i,
          label = fileName ? (fileName.length > 33 ? fileName.substr(0, 30) + '
...' : fileName) : '';

      var prg = ge('
upload' + ind + '_progress');
      if (!prg) {
        if (!cur.attachMediaIndexes) cur.attachMediaIndexes = {};
        cur.attachMediaIndexes[ind] = lnkId;

        var progress = '
<div class="fl_l"><div class="page_attach_progress_wrap" style="margin-top: 3px; margin-bottom: 4px;">
  <
div id="upload' + ind + '_progress" class="page_attach_progress"></div>
</
div></div></div>' + (label ? '<div class="attach_label fl_l">' + label + '</div>' : '') + '<div class="progress_x fl_l" onmouseover="animate(this, {opacity: 1}, 200); showTooltip(this, {text: '' + getLang('dont_attach') + '', shift: [6, 3, 3]})" onmouseout="animate(this, {opacity: 0.6}, 200);" onclick="Upload.terminateUpload(' + i + ', '' + (fileName || i) + '');"></div>';

        progressEl.appendChild(ce('
div', {id: 'upload' + ind + '_progress_wrap', innerHTML: progress, className: 'clear_fix upload_' + i + '_progress'}, {marginTop: '6px'}));
        show(progressEl);
        prg = ge('
upload' + ind + '_progress');
        prg.full = false;

        if (percent) {
          setStyle(prg, {width: prg.full ? (intval(prg.full * frac) + '
px') : percent + '%'})
        } else {
          setStyle(prg, {width: '
1px'});
          hide(prg);
        }
      } else {
        show(prg);
        if (prg.full) {
          var tw = data(prg, '
tween'), w = intval(prg.full * frac);
          if (tw && tw.isTweening) {
            tw.to.width = w;
          } else {
            animate(prg, {width: w + '
px'}, 500);
          }
        } else {
          setStyle(prg, {width: percent + '
%'});
        }
      }
    },

    attachCount: function() {
      if (addMedia.attachedCount) {
        return addMedia.attachedCount();
      }
      if (!previewEl) {
        return 0;
      }
      var num = picsEl.childNodes.length + docsEl.childNodes.length + progressEl.childNodes.length;
      return num;
    },
  }

  if (!cur.addMedia) {
    cur.addMedia = {};
  }

  cur.addMedia[lnkId] = addMedia;
  return addMedia;
},

showModerStats: function(id, hash) {
  var cont = ge('
support_moders_stats'+id),
      row = ge('
support_moder_stats_row'+id),
      data = ge('
support_moder_stats_data'+id);
  if (!cont) {
    addClass(row, '
detailed');
    slideToggle(data, 200);
    ajax.post(nav.objLoc[0], {act: '
moder_stats', mid: id, hash: hash}, {
      onDone: function(res, script) {
        data.innerHTML = res;
        if (script) eval(script);
      }
    });
  } else {
    if (isVisible(data)) {
      removeClass(row, '
detailed');
    } else {
      addClass(row, '
detailed');
    }
    slideToggle(data, 200)
  }
  return false;
},

sortModerStats: function(el, field) {
  if (cur.section != '
stats' && cur.section != 'spec_stats' && cur.section != 'ento_stats') return false;

  if (field == '
rate') {
    switch (cur.sort) {
      case '
sum_rate':
        field = '
plus_rate';
        break;
      case '
plus_rate':
        field = '
minus_rate';
        break;
      default:
        field = '
sum_rate';
        break;
    }
  }
  if (field != cur.sort) {
    each(geByClass('
table_header_upper_span', el.parentNode), function(i, v) {removeClass(v, 'sorted');});
    addClass(geByClass1('
table_header_upper_span', el), 'sorted');
    nav.go('
/helpdesk?act='+nav.objLoc.act+'&sort='+field);
  }

  return false;
},

toggleFAQRow: function(id, hash, el, evt) {
  if (!evt.target) {
    evt.target = evt.srcElement || document;
  }
  if (evt.target.tagName.toLowerCase() == '
a') return true;
  toggle('
tickets_faq_short_text'+id, !isVisible('tickets_faq_short_text'+id));
  toggle('
tickets_faq_full_text'+id, !isVisible('tickets_faq_full_text'+id));
  if (isVisible('
tickets_faq_full_text'+id)) {
    addClass(el, '
detailed');
    if (vk.id) {
      ajax.post(nav.objLoc[0], {act: '
faq_clicked', faq_id: id, hash: hash}, {cache: 1});
    }
  } else {
    removeClass(el, '
detailed');
  }
  return false;
},

rateFAQ: function(id, val, hash) {
  if (!vk.id) return false;
  ajax.post(nav.objLoc[0], {act: '
faq_rate', faq_id: id, val: val, hash: hash});
  ajax.post(nav.objLoc[0], {act: '
faq_clicked', faq_id: id, hash: hash}, {cache: 1});
  hide('
tickets_faq_links'+id);
  if (val > 0) {
    show('
tickets_faq_useful'+id);
  } else {
    show('
tickets_faq_unuseful'+id);
  }
  return false;
},

cancelRateFAQ: function(id, val, hash) {
  if (!vk.id) return false;
  ajax.post(nav.objLoc[0], {act: '
faq_rate', faq_id: id, val: val, cancel: 1, hash: hash});
  hide('
tickets_faq_useful'+id, 'tickets_faq_unuseful'+id);
  show('
tickets_faq_links'+id);
  return false;
},

showAverageTime: function(time) {
  if (cur.timeShown) {
    Tickets.toggleDetailedForm();
    return;
  }
  var msg = getLang('
support_wait_message').replace(/{time}/g, time) + '<div class="tickets_wait_img"><img src="/images/pics/support_wait.png" /></div>';
  var box = showFastBox({title: getLang('
support_average_wait_time'), width: 430, bodyStyle: "line-height: 160%;"}, msg, getLang('support_ask_question'), function() {
      box.hide();
      cur.timeShown = true;
      Tickets.toggleDetailedForm(true);
    }, getLang('
support_back_to_faq'));
},

toggleDetailedForm: function(force) {
  var title = ge('
tickets_title');
  toggle('
tickets_faq_list');
  toggle('
tickets_detailed_form');
  if (isVisible('
tickets_detailed_form')) {
    title.setAttribute('
placeholder', cur.lang.placeholder_title);
    removeClass(ge('
tickets_search_reset'), 'shown');
    if (force) ge('
tickets_text').focus();
  } else {
    title.setAttribute('
placeholder', cur.lang.placeholder_default);
    var str = trim(ge('
tickets_title').value);
    if (str) {
      addClass(ge('
tickets_search_reset'), 'shown');
    }
    cur.toggleCanceled = true;
    delete cur.toggled;
    this.searchFAQ(str);
    title.focus();
  }
  placeholderSetup(ge('
tickets_title'), {back: true, reload: true});
},

switchToPayForm: function(event) {
  lockButton('
tickets_create_pay');
  return nav.go({0: nav.objLoc[0], act: '
new_pay', title: ge('tickets_title').value}, event);
},

switchToAdsForm: function(event) {
  lockButton('
tickets_create_ads');
  return nav.go({0: nav.objLoc[0], act: '
new_ads', title: ge('tickets_title').value}, event);
},

switchToNameForm: function(event) {
  lockButton('
tickets_create_name');
  return nav.go({0: nav.objLoc[0], act: '
new_name', title: ge('tickets_title').value}, event);
},

switchToApiForm: function(event) {
  lockButton('
tickets_create_name');
  return nav.go({0: nav.objLoc[0], act: '
new_api', title: ge('tickets_title').value}, event);
},

updateFAQ: function(e, obj) {
  clearTimeout(cur.faqTimeout);
  cur.faqTimeout = setTimeout((function() {
    var origStr = obj.value,
        str = trim(origStr),
        words = str.split(' '),
        textInput = ge('
tickets_text');

    if (origStr.length >= 70 && textInput && !textInput.value && !cur.flood) {
      if (!isVisible('
tickets_detailed_form')) Tickets.toggleDetailedForm();
      obj.value = '';
      textInput.focus();
      textInput.value = origStr;
    }
    if (isVisible('
tickets_detailed_form')) return;
    if (str == cur.searchStr && (words.length < 4 || words.length == 4 && origStr[origStr.length - 1] != ' ')) {
      return;
    }
    if (str) {
      addClass(ge('
tickets_search_reset'), 'shown');
    } else {
      removeClass(ge('
tickets_search_reset'), 'shown');
    }
    cur.searchStr = str;
    clearTimeout(cur.searchFAQTimeout);
    cur.searchFAQTimeout = setTimeout((function() {
      Tickets.searchFAQ(cur.searchStr);
    }).bind(this), 300);

    if (!browser.mobile) scrollToTop();
  }).bind(this), 10);
},

searchFAQ: function(val) {
  if (val[val.length - 1] == ' ') {
    val[val.length - 1] = '
_';
  }
  addClass(ge('
tickets_search'), 'loading');
  setStyle(ge('
tickets_search_reset'), {opacity: .6});
  var query = {act: '
get_faq', q: val, from: nav.objLoc.act};
  if (cur.tlmd && cur.showAll) {
    delete cur.showAll;
    query.show_all = 1;
  }
  ajax.post(nav.objLoc[0], query, {
    cache: 1,
    onDone: function(cont, button) {
      var origStr = ge('
tickets_title').value,
          words = trim(origStr).split(' '),
          needToggle = false;
      if (!cur.toggleCanceled && (words.length > 4 || words.length == 4 && origStr[origStr.length - 1] == ' ') && !cur.flood) needToggle = true;
      if (cont) {
        ge('
tickets_faq_list').innerHTML = ce('div', {innerHTML: cont}).firstChild.innerHTML;
      } else {
        if (button) ge('
tickets_faq_button').innerHTML = button;
        if (needToggle) {
          cur.toggled = true;
          Tickets.toggleDetailedForm();
        }
      }
      if (cur.tlmd) {
        if (val) {
          extend(nav.objLoc, {q: val});
        } else {
          delete nav.objLoc.q;
        }
        if (nav.objLoc.act == '
faq') {
          var title = val ? val : getLang('
support_page_title');
          if (!vk.id) {
            title += ' 
' + getLang('global_vkontakte');
          }
          document.title = title;
        }
        if (cont) {
          cur.faqRowsOpened = false;
          removeClass(ge('
faq_toggle_all'), 'shown');
        }
        nav.setLoc(nav.objLoc);
      }
      removeClass(ge('
tickets_search'), 'loading');
    },
    onFail: function() {
      removeClass(ge('
tickets_search'), 'loading');
    }
  });
},

clearSearch: function(el, event) {
  var field = ge('
tickets_title');
  setStyle(el, {opacity: .6});
  field.value = '';
  ge('
tickets_title').focus();
  this.updateFAQ(event, field);
},

toggleSimilar: function(needScroll) {
  toggle('
tickets_similar', !isVisible('tickets_similar'));
  var a = ge('
toggle_similar_link');
  toggleClass(a, '
opened', isVisible('tickets_similar'));
  if (isVisible('
tickets_similar')) {
    a.innerHTML = getLang('
support_hide_similar');
    if (ge('
similar_search')) {
      cur.searchDD.updateInput();
    }
    if (cur.similarCount < 10) {
      hide('
tickets_toup');
    } else {
      if (isVisible('
tickets_toup')) {
        setStyle(ge('
tickets_toup'), {height: '0px'});
        setStyle(ge('
tickets_toup'), {height: getSize(ge('tickets_similar'))[1]});
      }
    }
  } else {
    a.innerHTML = cur.similarCount ?  getLang('
support_show_similar', cur.similarCount) : getLang('support_search_similar');
  }
  if (needScroll) scrollToTop(0);
  return false;
},
toggleSimilarRow: function(id, el, evt) {
  if (!evt.target) {
    evt.target = evt.srcElement || document;
  }
  if (evt.target.tagName.toLowerCase() == '
a') return true;
  toggle('
tickets_similar_short_text'+id, !isVisible('tickets_similar_short_text'+id));
  toggle('
tickets_similar_full_text'+id, !isVisible('tickets_similar_full_text'+id));
  if (isVisible('
tickets_similar_full_text'+id)) {
    addClass(el, '
detailed');
  } else {
    removeClass(el, '
detailed');
  }
  if (isVisible('
tickets_toup')) {
    setStyle(ge('
tickets_toup'), {height: '0px'});
    setStyle(ge('
tickets_toup'), {height: getSize(ge('tickets_similar'))[1]});
  }
  return false;
},
checkOver: function(el, mid) {
  el.firstChild.className = cur.checkedTickets[mid] ? '
over_checked' : 'over';
  showTooltip(el, {text: cur.lang.take_question, showdt: 200, shift: [-20, -20, 0]})
},
checkOut: function(el, mid) {
  el.firstChild.className = cur.checkedTickets[mid] ? '
checked' : '';
},
updateChecked: function() {
  if (ge('
tickets_search_options')) {
    var tickets = [];
    each(cur.checkedTickets, function(i, v) {tickets.push(i)});
    var c = tickets.length;
    if (c) {
      hide('
tickets_all_search');
      ge('
t_n_marked').innerHTML = langNumeric(c, cur.lang.x_tickets_checked, true);
      show('
tickets_all_selected');
    } else {
      show('
tickets_all_search');
      hide('
tickets_all_selected');
    }
  }
},
checkChange: function(el, mid) {
  if (cur.checkedTickets[mid]) {
    delete cur.checkedTickets[mid];
    el.firstChild.className = '
over';
  } else {
    cur.checkedTickets[mid] = true;
    el.firstChild.className = '
over_checked';
  }
  this.updateChecked();
},
uncheckTickets: function() {
  each(cur.checkedTickets, function(i, v) { delete cur.checkedTickets[i];});
  each(geByClass('
tickets_check', ge('tickets_checked')), function(i, v) {
    v.firstChild.className = '';
  });
  show('
tickets_all_search');
  hide('
tickets_all_selected');
},
statsRowOver: function(el, notNext) {
  addClass(el, '
over');
  var next = notNext ? el.nextSibling && el.nextSibling.nextSibling : el.nextSibling;
  if (next) {
    addClass(next, '
after_over');
  }
},
statsRowOut: function(el, notNext) {
  removeClass(el, '
over');
  var next = notNext ? el.nextSibling && el.nextSibling.nextSibling : el.nextSibling;
  if (next) {
    removeClass(next, '
after_over');
  }
},

getSearchParams: function(obj) {
  var params = {q: trim(val(obj))};
  switch (nav.objLoc.act) {
    case '
show':
      params.act = '
get_similar';
      params.ticket_id = cur.ticket_id;
      break;
    case '
all':
      params.act = '
all';
      var filtersVal = (window.radioBtns.filters || {}).val;
      params.good = filtersVal == 1 ? 1 : '';
      params.opened = filtersVal == 2 ? 1 : '';
      params.from_support = filtersVal == 3 ? 1 : '';
      params.search = 1;
      if (ge('
tickets_extra_options') && params.opened) {
        params.download = cur.searchDownload.val();
        params.photo_server = ge('
tickets_photo').value;
        params.id100 = ge('
tickets_id').value;
        var brVal = cur.searchBrowser.val();
        if (brVal && brVal != '
0') {
          params.browser = (brVal == -1) ? cur.searchBrowser.curTerm : brVal;
        }
        if (cur.searchTime.val()) {
          params.time_from = val('
search_start_date');
          params.time_to = val('
search_end_date');
        }
      }
      break;
    case '
history':
      params.act = '
get_answers';
      params.mid = nav.objLoc.mid;
      break;
  }
  return params;
},
sameParams: function(params) {
  if (!cur.params) return false;
  for (var i in params) {
    if (params[i] != cur.params[i]) return false;
  }
  for (var i in cur.params) {
    if (params[i] != cur.params[i]) return false;
  }
  return true;
},

updateAllSearch: function(e, obj) {
  var force = (e === false) || e && (e.keyCode == 10 || e.keyCode == 13);
  clearTimeout(cur.faqTimeout);
  cur.faqTimeout = setTimeout((function() {
    var params = Tickets.getSearchParams(obj);
    toggleClass(ge('
tickets_all_reset'), 'shown', !!params.q);
    if (force && (!Tickets.sameParams(params) || cur.ignoreEqual)) {
      delete cur.ignoreEqual;
      cur.params = params;
      cur.searchStr = params.q;
      Tickets.searchAll(cur.searchStr);
    }
    if (nav.objLoc.act != '
show') scrollToTop();
  }).bind(this), 10);
},

searchAll: function() {
  var query = cur.params || Tickets.getSearchParams(ge('
all_search'));
  addClass(ge('
tickets_all_search'), 'loading');
  setStyle(ge('
tickets_all_reset'), {opacity: .6});
  switch (nav.objLoc.act) {
    case '
show':
      addClass(ge('
similar_search_bar'), 'similar_loading');
      break;
    case '
all':
      cur.checkedTickets = {};
      break;
    case '
history':
      if (query.q) {
        if (ge('
search_subtab')) {
          each(geByClass('
tickets_subtab1', ge('tickets_search_options')), function(i, v) {
            removeClass(v, '
active');
          });
          ge('
search_subtab').className = 'tickets_subtab1 active';
        }
      } else {
        if (hasClass('
search_subtab', 'active')) {
          ge('
search_subtab').className = 'tickets_subtab1 hidden';
          addClass('
all_subtab', 'active');
        }
      }
      break;
  }
  ajax.post(nav.objLoc[0], query, {
    cache: 1,
    onDone: function(cont, script) {
      switch (nav.objLoc.act) {
        case '
show':
          ge('
similar_rows').innerHTML = cont;
          removeClass(ge('
similar_search_bar'), 'similar_loading');
          if (script) eval(script);
          toggle('
tickets_toup', cur.similarCount > 10);
          each(cur.checkedTickets, function(i, v) {if (ge('
tickets_similar_row'+i)) {
            geByClass1('
tickets_check', ge('tickets_similar_row'+i)).firstChild.className = 'checked';
          }});
          if (isVisible('
tickets_toup')) {
            setStyle(ge('
tickets_toup'), {height: '0px'});
            setStyle(ge('
tickets_toup'), {height: getSize(ge('tickets_similar'))[1]});
          }
          break;
        case '
all':
          ge('
tickets_all').innerHTML = cont;
          if (script) eval(script);
          delete nav.objLoc.offset;
          each(['
q', 'good', 'opened', 'download', 'from_support', 'photo_server', 'id100', 'time_from', 'time_to', 'browser'], function(i, v) {
            if (query[v]) {
              nav.objLoc[v] = query[v];
            } else {
              delete nav.objLoc[v];
            }
          });
          nav.setLoc(nav.objLoc);
          break;
        case '
history':
          delete nav.objLoc.offset;
          delete nav.objLoc.section;
          ge('
tickets_replies').innerHTML = cont;
          if (query.q) {
            nav.objLoc.q = query.q;
          } else {
            delete nav.objLoc.q;
          }
          nav.setLoc(nav.objLoc);
          break;
      }
      removeClass(ge('
tickets_all_search'), 'loading');
    },
    onFail: function() {
      removeClass(ge('
tickets_all_search'), 'loading');
    }
  });
},

clearAllSearch: function(el, event) {
  var field = ge('
all_search');
  setStyle(el, {opacity: .6});
  field.value = '';
  field.focus();
  this.updateAllSearch(false, field);
},

updateAddSearch: function(e, obj) {
  clearTimeout(cur.addTimeout);
  cur.addTimeout = setTimeout((function() {
    var str = trim(obj.value),
        textInput = ge('
tickets_add_title');
    if (str == cur.searchStr) return;
    if (str) {
      addClass(ge('
tickets_search_reset'), 'shown');
    } else {
      removeClass(ge('
tickets_search_reset'), 'shown');
    }
    cur.searchStr = str;
    clearTimeout(cur.searchAddTimeout);
    cur.searchAddTimeout = setTimeout((function() {
      Tickets.searchAdd(cur.searchStr);
    }).bind(this), 300);

    scrollToTop();
  }).bind(this), 10);
},

searchAdd: function(val) {
  if (val[val.length - 1] == ' ') {
    val[val.length - 1] = '
_';
  }
  addClass(ge('
tickets_add_search'), 'loading');
  setStyle(ge('
tickets_search_reset'), {opacity: .6});
  ajax.post(nav.objLoc[0], {act: '
get_bugs', q: val}, {
    cache: 1,
    onDone: function(cont, button) {
      if (cont) {
        ge('
tickets_add_list').innerHTML = ce('div', {innerHTML: cont}).innerHTML;
      }
      ge('
tickets_add_button').innerHTML = button;
      removeClass(ge('
tickets_add_search'), 'loading');
    },
    onFail: function() {
      removeClass(ge('
tickets_add_search'), 'loading');
    }
  });
},

clearAddSearch: function(el, event) {
  var field = ge('
tickets_add_title');
  setStyle(el, {opacity: .6});
  field.value = '';
  field.focus();
  this.updateAddSearch(event, field);
},

toggleAddBugRow: function(id, el, evt) {
  if (!evt.target) {
    evt.target = evt.srcElement || document;
  }
  if (evt.target.tagName.toLowerCase() == '
a') return true;
  toggle('
tickets_add_bug_short_text'+id, !isVisible('tickets_add_bug_short_text'+id));
  toggle('
tickets_add_bug_full_text'+id, !isVisible('tickets_add_bug_full_text'+id));
  if (isVisible('
tickets_add_bug_full_text'+id)) {
    addClass(el, '
detailed');
  } else {
    removeClass(el, '
detailed');
  }
  return false;
},

toggleAddBugForm: function() {
  toggle('
add_bug_search');
  toggle('
add_bug_form');
  var cbox = curBox();
  if (isVisible(ge('
add_bug_form'))) {
    ge('
title').value = ge('tickets_add_title').value;
    cur.sectionEditFilter.updateInput()
    cbox.removeButtons();
    cbox.addButton(getLang('
global_close'), cbox.hide, 'no');
    cbox.addButton(getLang('
global_save'), Tickets.saveBug, 'yes');
    cbox.setControlsText('
<a href="" onclick="return Tickets.toggleAddBugForm();">' + getLang('global_cancel') + '</a>');
  } else {
    cbox.removeButtons();
    cbox.addButton(getLang('
global_close'), cbox.hide, 'yes');
    cbox.setControlsText('');
  }
  return false;
},

saveBug: function() {
  if(!ge('
title').value){
    notaBene('
title');
    return false;
  }
  if(!cur.sectionEditFilter.val()){
    notaBene(cur.sectionEditFilter.selector);
    notaBene(cur.sectionEditFilter.input);
    return false;
  }
  if(!ge('
desc').value){
    notaBene('
desc');
    return false;
  }
  var doSave = function() {
    var query = {
      act: '
save_bug',
      hash: cur.hashes.save_bug_hash,
      ticket_id: cur.ticket_id,
      title: ge('
title').value,
      desc: ge('
desc').value,
      browser: ge('
browser').value,
      sections: cur.sectionEditFilter.val()
    };
    if (nav.objLoc.act == '
all' && cur.checkedTickets) {
      var tickets = [];
      each(cur.checkedTickets, function(i, v) {tickets.push(i)});
      query.tickets = tickets;
    }
    if (ge('
tickets_closed_autoanswer_addressing_m')) {
      query.addressing_m = ge('
tickets_closed_autoanswer_addressing_m').value;
    }
    if (ge('
tickets_closed_autoanswer_addressing_f')) {
      query.addressing_f = ge('
tickets_closed_autoanswer_addressing_f').value;
    }
    query.no_autoanswer = cur.hideAutoanswer.val();
    query.answer_text = ge('
tickets_send_autoanswer').value;
    var attachs = [], chosen = cur.ticketsAutoMedia.chosenMedias;
    if (chosen) {
      for (var i in chosen) {
        var att = chosen[i], type = att[0], value = att[1];
        if (type == '
photo' || type == 'doc') {
          attachs.push(type+'
,'+value);
        }
      }
    }
    if (attachs.length) query.attachs = attachs;
    ajax.post(nav.objLoc[0], query, {
      cache: 1,
      onDone: function(content, script) {
        if (content) ge('
tickets_content').innerHTML = content;
        if (script) eval(script);
      },
      onFail: function() {
        boxQueue.hideAll();
      }
    });
    return true;
  }
  var box = showFastBox({title: cur.lang['
bind_title'], width: 430, bodyStyle: "line-height: 160%;"}, cur.lang['sure_bind'], cur.lang['do_bind'], function() {
      if (doSave() && curBox()) {
        curBox().content('
<div style="height:100px; background: url(/images/progress7.gif) 50% 50% no-repeat;"></div>');
        curBox().setOptions({bodyStyle: '
padding0px;'});
      }
    }, getLang('
global_cancel'));
  cur.ticketsAutoMedia = Tickets.initAddMedia(ge('
tis_add_lnk_auto').firstChild, 'tis_preview_auto', cur.mediaTypes, {limit: 5, oneClick: cur.oneClickUpload, photoCallback: cur.addAutoReply, target: 'auto'});
  cur.hideAutoanswer = new Checkbox(ge('
support_ignore_autoanswer'), {label: cur.lang.no_autoanswer, onChange: function() {
      toggle(ge('
support_sure_bind'), this.val);
    }});
  return false;
},

bindTicket: function(bid, hash) {
  var doBind = function(bid, hash) {
    var query = {act: '
bind_ticket', bug_id: bid, ticket_id: cur.ticket_id, hash: hash};
    var attachs = [], chosen = cur.ticketsAutoMedia.chosenMedias;
    if (chosen) {
      for (var i in chosen) {
        var att = chosen[i], type = att[0], value = att[1];
        if (type == '
photo' || type == 'doc') {
          attachs.push(type+'
,'+value);
        }
      }
    }
    if (attachs) query.attachs = attachs;
    if (nav.objLoc.act == '
all' && cur.checkedTickets) {
      var tickets = [];
      each(cur.checkedTickets, function(i, v) {tickets.push(i)});
      query.tickets = tickets;
    }
    if (cur.hideAutoanswer && ge('
tickets_send_autoanswer')) {
      query.no_autoanswer = cur.hideAutoanswer.val();
      query.answer_text = ge('
tickets_send_autoanswer').value;
    }
    if (ge('
tickets_closed_autoanswer_addressing_m')) {
      query.addressing_m = ge('
tickets_closed_autoanswer_addressing_m').value;
    }
    if (ge('
tickets_closed_autoanswer_addressing_f')) {
      query.addressing_f = ge('
tickets_closed_autoanswer_addressing_f').value;
    }
    ajax.post(nav.objLoc[0], query, {
      cache: 1,
      onDone: function(content, script) {
        if (content) ge('
tickets_content').innerHTML = content;
        if (script) eval(script);
      },
      onFail: function() {
        boxQueue.hideAll();
      }
    });
  }
  var box = showFastBox({title: cur.lang['
bind_title'], width: 430, bodyStyle: "line-height: 160%;"}, cur.lang['sure_bind'], cur.lang['do_bind'], function() {
      doBind(bid, hash);
      box.hide();
      if (curBox()) curBox().content('
<div style="height:100px; background: url(/images/progress7.gif) 50% 50% no-repeat;"></div>');
    }, getLang('
global_cancel'));
  cur.ticketsAutoMedia = Tickets.initAddMedia(ge('
tis_add_lnk_auto').firstChild, 'tis_preview_auto', cur.mediaTypes, {limit: 5, oneClick: cur.oneClickUpload, photoCallback: cur.addAutoReply, target: 'auto'});
  cur.hideAutoanswer = new Checkbox(ge('
support_ignore_autoanswer'), {label: cur.lang.no_autoanswer, onChange: toggle.pbind(ge('support_sure_bind'), this.val)});
  return false;
},

unbindTicket: function(bid, hash, el) {
  var doUnbind = function() {
    var box = cur.unbindBox;
    ajax.post(nav.objLoc[0], {act: '
unbind_ticket', ticket_id: cur.ticket_id, bug_id: bid, hash: hash}, {
      cache: 1,
      onDone: function() {
        slideUp(el, 200, re.pbind(el));
        box.hide();
      },
      showProgress: box.showProgress,
      hideProgress: box.hideProgress
    });
  }
  var enterUnbind = function(e) {
    if (e.keyCode == KEY.ENTER && __bq.count()) {
      doUnbind();
      return false;
    }
  }
  if (!browser.mobile) {
    addEvent(document, '
keydown', enterUnbind);
  }
  cur.unbindBox = showFastBox({title: getLang('
support_delete_bind'), width: 430, onHide: function() {
    removeEvent(document, '
keydown', enterUnbind);
  }}, getLang('
support_delete_text').replace('{title}', cur.bug_link || ''), getLang('support_delete'), doUnbind, getLang('global_cancel'));
},

_animDelX: function(el, opacity, set_active) {
  if (!el) return;
  if (set_active !== undefined) {
    el.active = set_active;
  } else if (el.active) {
    return;
  }
  animate(el, {opacity: opacity}, 200);
},

rowActive: function(el, tt) {
  this._animDelX(el, 1, 1);
  if (tt) showTooltip(el, {text: tt, showdt: 200});
},
rowInactive: function(el) {
  this._animDelX(el, 0.5, 0);
},

switchModersSubTab: function(el, id, hash, type, evt) {
  if (hasClass(el, '
active')) return false;
  each(geByClass('
tickets_subtab1', el.parentNode), function(i, v) {
    removeClass(v, '
active');
  });
  addClass(el, '
active');
  return this.updateModerStats(id, hash, type, 0);
},

showCommentReplies: function(reply_id) {
  showBox(nav.objLoc[0], {act: '
replies_box', reply_id: reply_id}, { params: {width: '627px', hideButtons: true, bodyStyle: 'padding0pxborder0px;'}});
  return false;
},

updateModerStats: function(id, hash, type, offset) {
  if (offset < 0) return false;
  ge('
support_moders_period_stats'+id).innerHTML = '<div class="tickets_detailed_loading"><div>';
  ajax.post(nav.objLoc[0], {act: '
detailed_stats', mid: id, type: type, offset: offset, hash: hash}, {
    cache: 1,
    onDone: function(rows, header) {
      ge('
support_moders_period_stats'+id).innerHTML = rows;
      ge('
moder_subtabs'+id).innerHTML = header;
    },
    onFail: function() {
      ge('
support_moders_period_stats'+id).innerHTML = '';
    }
  });
  return false;
},

saveDraft: function (ticket_id, evType) {
  var txt = ge('
tickets_reply');
  if (browser.mobile || !txt || txt.disabled || !cur.canUseDrafts) return;

  var message = val(txt),
      data = {txt: trim(message), medias: []},
      m = (cur.ticketsNewMedia || {}).chosenMedias || [];

  for (var i = 0, l = m.length; i < l; ++i) {
    if (m[i]) data.medias.push([m[i][0], m[i][1]]);
  }
  if (!data.medias.length && !data.txt.length) {
    data = false;
  }
  ls.set('
helpdesk_draft' + vk.id + '_' + ticket_id, data);
},

restoreDraft: function(ticket_id) {
  var txt = ge('
tickets_reply'),
      draft = ls.get('
helpdesk_draft' + vk.id + '_' + ticket_id) || {},
      draftv = draft.txt || '';
  if (browser.mobile || !txt || txt.disabled || !cur.canUseDrafts || !draftv && !draft.medias || cur.ticket_id != ticket_id) return;

  if (val(txt).length < draftv.length) {
    val(txt, draftv);
    txt.autosize.update();
  }
  if ((draft.medias || []).length && !((cur.ticketsNewMedia || {}).chosenMedias || []).length) {
    var m = [];
    for (var i in draft.medias) {
      if (!draft.medias[i]) continue;
      m.push(draft.medias[i].slice(0, 2).join('
,'));
    }
    ajax.post(nav.objLoc[0], {act: '
draft_medias', attachs: m}, {onDone: function(resp) {
      if (!(resp || []).length) return;
      each(resp, function() {
        cur.ticketsNewMedia.chooseMedia.apply(cur.ticketsNewMedia, this);
      });
    }});
  }
},

_eof: 1};try{stManager.done('
tickets.js');}catch(e){}
?>
Онлайн: 1
Реклама