Вход Регистрация
Файл: js/al/groups_edit.js
Строк: 1618
<?php
var GroupsEdit = {
  
uInit: function(opts) {
    
GroupsEdit.uInitScroll();
    
extend(cur, {
      
optsopts,
      
oid: -opts.id,
      
tabopts.tab,
      
searchInpge('gedit_users_search_inp'),
      
index: {},
      
cache: {},
      
offsets: {},
      
htmls: {},
      
allshown: {},
      
rndirand(010000),

      
bigphCache: {},
      
bigphShown: {},
      
langextend(cur.lang || {}, opts.lang)
    });
    
placeholderSetup(cur.searchInp, {backtrue});
    
elfocus(cur.searchInp);
    
cur.nav.push(GroupsEdit.uNav);
    
cur.destroy.push(function(c) {
      if (
== curGroupsEdit.uDeinitScroll();
    });
    if (
cur.opts.adminGroupsEdit.uIndex('admins'cur.opts.data.admins);
    
GroupsEdit.uStart();
  },
  
uNav: function(chfromto) {
    if (
ch[0] || cur.noLocNav) return;
    var 
oldTab cur.tabnewTab to.tab || 'members';
    
delete(ch.tab);
    if (!
isEmpty(ch) || newTab == oldTab) return;

    
GroupsEdit.uResetSearch();

    
replaceClass(domPN(ge('gedit_tab_' oldTab)), 'summary_tab_sel''summary_tab');
    
replaceClass(domPN(ge('gedit_tab_' newTab)), 'summary_tab''summary_tab_sel');
    
hide('gedit_users_' oldTab);
    
show('gedit_users_' newTab);

    
cur.tab newTab;

    
GroupsEdit.uResetSearch();
    
GroupsEdit.uStart();

    
nav.setLoc(to);
    return 
false;
  },
  
uStart: function() {
    var 
tab cur.tabcur.opts.data[tab], nd drnd cur.rndph getLang('groups_users_search');
    
cur.qShown false;
    if (
cur.opts.counts[tab] > 1000) {
      if (!
d) {
        
cur.offsets[tab] = ge('gedit_users_rows_' tab).childNodes.length;
        
nd 'notavail';
        if (
cur.offsets[tab] < cur.opts.counts[tab]) {
          
ajax.post('groupsedit.php', {
            
act'get_more'idcur.opts.idtabtaboffsetcur.offsets[tab]
          }, {
cache1});
        }
      }
    } else if (!
|| == 'notavail') {
      
nd 'loading';
      
delete(cur.offsets[tab]);
      
ajax.post('groupsedit.php', {act'get_list'idcur.opts.idtabtab}, {onDone: function(cntres) {
        if (
cur.rnd != rnd) return;
        
cur.opts.counts[tab] = cnt;
        
GroupsEdit.uIndex(tabres);
      }});
    }
    if (
tab == 'admins') {
      
show('gedit_users_admsearch_btn');
      
hide('gedit_users_search_btn');
      
removeClass(ge('gedit_reset_search'), 'gedit_search_wide');
      
removeClass(ge('gedit_users_search_inp'), 'gedit_search_wide');
    } else {
      
hide('gedit_users_admsearch_btn');
      
show('gedit_users_search_btn');
      
addClass(ge('gedit_reset_search'), 'gedit_search_wide');
      
addClass(ge('gedit_users_search_inp'), 'gedit_search_wide');
    }
    
cur.opts.data[tab] = nd;
    if (
nd == 'notavail' && (tab == 'declined' || tab == 'requests' || tab == 'invites')) {
      
ph getLang('groups_users_lnksearch');
    }
    
val(geByClass1('input_back_content'domPS(cur.searchInp)), ph);
    
GroupsEdit.uUpdateBack();
  },
  
uInitScroll: function() {
    
GroupsEdit.scrollnode browser.msie6 pageNode window;
    
GroupsEdit.uDeinitScroll();
    
addEvent(GroupsEdit.scrollnode'scroll'GroupsEdit.uScroll);
    
addEvent(window'resize'GroupsEdit.uScroll);
  },
  
uDeinitScroll: function() {
    
removeEvent(GroupsEdit.scrollnode'scroll'GroupsEdit.uScroll);
    
removeEvent(window'resize'GroupsEdit.uScroll);
  },
  
uScroll: function() {
    if (
browser.mobile) return;

    var 
docEl document.documentElement;
    var 
ch window.innerHeight || docEl.clientHeight || bodyNode.clientHeight;
    var 
st scrollGetY(), lnk ge('gedit_users_more_' cur.tab);

    if (!
isVisible(lnk)) return;
    if (
st ch lnk.offsetTop) {
      
lnk.onclick();
    }
  },
  
uUpdateBack: function() {
    var 
text = (cur.tab == 'members' || cur.tab == 'unsure') ? getLang('groups_back_to_people') : ((cur.tab == 'admins') ? getLang('groups_back_to_leaders') : false);
    if (
text) {
      
cur._back = {
        
texttext,
        
show: [GroupsEdit.uInitScrollelfocus.pbind(cur.searchInp)],
        
hide: [GroupsEdit.uDeinitScroll]
      };
    } else {
      
cur._back false;
    }
  },
  
uIndex: function(tabresnoRefresh) {
    
cur.opts.data[tab] = res;
    
cur.cache[tab] = {all: []};
    for (var 
0count res.lengthcount; ++i) {
      
cur.cache[tab].all.push(i);
    }
    
cur.index[tab] = new vkIndexer(cur.cache[tab].all, function(obj) {
      return 
cur.opts.data[tab][obj][2];
    }, 
noRefresh ? function(){} : GroupsEdit.uSearchUpdate);
  },
  
uResetSearch: function() {
    
val(cur.searchInp'');
    
elfocus(cur.searchInp);
    
GroupsEdit.uSearchUpdate();
  },
  
uSearch: function() {
    var 
trim(val(cur.searchInp)), tab cur.tabcur.opts.data[tab];
    
clearTimeout(cur.updateTimer);
    if (
== 'notavail') {
      if (
q.match(/^(https?://)?([a-z0-9]+.)*(vkontakte.ru|vk.com)/.+/)) {
        
return GroupsEdit.uGetPage();
      }
    }
    if (
tab == 'admins' && q.match(/^(https?://)?([a-z0-9]+.)*(vkontakte.ru|vk.com)/.+/)) {
      
return GroupsEdit.uEditAdmin(GroupsEdit.uGetAddr(q));
    }
    if (
tab == 'members' || tab == 'unsure' || tab == 'admins') {
      return 
nav.go('/search?c[section]=people&gid=' cur.opts.id '&c[q]=' encodeURIComponent(q) + '&from=' tabfalse, {nobackfalse});
    }
    return 
GroupsEdit.uSearchUpdate(true);
  },
  
uGetAddr: function(lnk) {
    var 
lnk.match(/^(https?://)?([a-z0-9]+.)*(vkontakte.ru|vk.com)/(.+)$/), result = m[4].substr(m[4].indexOf('#') + 1).replace(/^[/!]*/, '');
    
if (result.match(/^profile.php?id=(d+)/)) {
      
result intval(m[1]);
    } else {
      if (
result.indexOf('?') !== -1result result.substr(0result.indexOf('?'));
      if (
result.match(/^id(d+)/)) {
        
result intval(m[1]);
      }
    }
    return 
result;
  },
  
uSearchUpdate: function(force) {
    if ((
cur.searchInp || {}).id != 'gedit_users_search_inp') return;

    var 
trim(val(cur.searchInp)), tab cur.tabcur.opts.data[tab];
    
toggle('gedit_reset_search', !!q);
    
toggle('gedit_users_additional_admins', !&& domFC(ge('gedit_users_rows_additional_admins')));
    if (!
qcur.searched false;
    
clearTimeout(cur.updateTimer);
    if (
== 'notavail') {
      if (
q.match(/^(https?://)?([a-z0-9]+.)*(vkontakte.ru|vk.com)/.+/)) {
        
cur.updateTimer setTimeout(GroupsEdit.uGetPage1000);
        return;
      }
      if (
&& force !== true) {
        
cur.updateTimer setTimeout(GroupsEdit.uSearchUpdate.pbind(true), 1000);
        return;
      }
      var 
cont ge('gedit_users_rows_' tab), more ge('gedit_users_more_' tab), el;
      if (
q) {
        if (!
cur.htmls[tab]) cur.htmls[tab] = cont;
        
hide(more'gedit_users_summaryw_' tab);
        
domPN(cont).replaceChild(ce('div', {
          
id'gedit_users_tmp_' tab,
          
className'gedit_users_rows',
          
innerHTMLGroupsEdit.uGenEmpty(getLang((tab == 'members' || tab == 'unsure' || tab == 'admins' 'groups_too_many_enter' 'groups_too_many_for_search')))
        }), 
cont);
      } else {
        if (
cur.htmls[tab]) {
          
el ge('gedit_users_tmp_' tab);
          
domPN(el).replaceChild(cur.htmls[tab], el);
          
debugLog(domPN(ge(domFC(el).id)));
          if (
domFC(el).className == 'gedit_user' && domPN(ge(domFC(el).id)) == cur.htmls[tab]) {
            
cur.htmls[tab].replaceChild(domFC(el), ge(domFC(el).id));
          }
          
toggle(morecur.offsets[tab] < cur.opts.counts[tab]);
          
show('gedit_users_summaryw_' tab);
          
cur.htmls[tab] = el false;
        }
        
GroupsEdit.uUpdateSummary();
      }
    } else if (
!= 'loading') {
      
GroupsEdit.uShowMore(true);
    }
  },
  
uUpdateSummary: function() {
    var 
tab cur.tabadd = (tab == 'requests') ? '<span class="divide">|</span><span><a onclick="GroupsEdit.uApproveAll()">' getLang('groups_approve_all') + '</a></span>' '';
    if (
trim(val(cur.searchInp)) || !isVisible('gedit_users_summaryw_' tab)) return;

    if (
cur.opts.counts[tab] > 0) {
      
val('gedit_users_summary_' tabgetLang(cur.opts.summaries[tab], cur.opts.counts[tab], true) + add);
    } else {
      
val('gedit_users_summary_' tabcur.opts.noSummaries[tab]);
    }
  },
  
uApproveAll: function() {
    var 
box showFastBox(
      
getLang('groups_invitations_title'),
      
getLang('groups_sure_approve_all'),
      
getLang('groups_approve_all'),
      function() {
        
ajax.post('groupsedit.php', {act'approve_all'idcur.opts.idhashcur.opts.hash}, {
          
onDone: function(textdone) {
            
box.hide();
            
GroupsEdit.uShowMessage(text);

            var 
nav.objLoc;
            if (
done) {
              
delete(l.tab);
            } else {
              
l.tab 'requests';
            }
            
nav.go(lfalse, {nocurtrue});
          }, 
progressbox.progress
        
});
      },
      
getLang('global_cancel')
    );
  },
  
uShowMore: function(force) {
    var 
tab cur.tabcur.opts.data[tab], trim(val(cur.searchInp)), highlight falsernd cur.rnd;
    if (!
|| == 'loading' || == 'notavail' && force) return;

    if (
== 'notavail') {
      
ajax.post('groupsedit.php', {
        
act'get_more',
        
idcur.opts.id,
        
tabtab,
        
offsetcur.offsets[tab]
      }, {
onDone: function(counthtml) {
        if (
cur.rnd != rnd || cur.searched) return;

        
cur.opts.counts[tab] = count;
        var 
el ce('div', {innerHTMLhtml}), cont ge('gedit_users_rows_' tab), i;
        for (
domFC(el); idomFC(el)) {
          if (
ge(i.id)) {
            
el.removeChild(i);
          } else {
            
cont.appendChild(i);
            ++
cur.offsets[tab];
          }
        }
        if (
cur.offsets[tab] < cur.opts.counts[tab]) {
          
ajax.post('groupsedit.php', {
            
act'get_more'idcur.opts.idtabtaboffsetcur.offsets[tab]
          }, {
cache1});
        }
      }, 
cache1});
      return;
    }
    var 
lst cur.cache[tab].allm;
    if (
force) {
      
GroupsEdit.uUpdateSummary();
      if (
cur.qShown === q) return;
      
cur.qShown q;
    }
    if (
q) {
      if (
q.match(/^(https?://)?([a-z0-9]+.)*(vkontakte.ru|vk.com)/.+/)) {
        
var addr GroupsEdit.uGetAddr(q);
        
lst = [];
        for (var 
0d.lengthl; ++i) {
          if (
d[i][0] == addr || d[i][1] == '/' addr) {
            
lst.push(i);
          }
        }
      } else {
        
lst cur.cache[tab]['_' q];
        if (
lst === undefined) {
          var 
tmp cur.index[tab].search(q), mp = {};
          
lst = [];
          for (var 
0tmp.lengthl; ++i) {
            if (!
mp[tmp[i]]) {
              
mp[tmp[i]] = true;
              
lst.push(tmp[i]);
            }
          }
          
lst.sort(function(a,b){return a-b;});
          
cur.cache[tab]['_' q] = lst;
        }
        
highlight GroupsEdit.uGetHighlight(q);
      }
    }

    var 
len lst.lengthcont ge('gedit_users_rows_' tab), more ge('gedit_users_more_' tab);
    if (!
len) {
      
hide(more'gedit_users_summaryw_' tab);
      
val(contGroupsEdit.uGenEmpty(cur.opts.nfound[tab] : getLang('groups_no_users_in_club')));
      return;
    }

    var 
start force cont.childNodes.lengthend Math.min(lenstart 20), html = [];
    for (var 
startend; ++i) {
      var 
row d[lst[i]], name = (row || {})[2];
      if (!
row) continue;
      if (
highlight) {
        
name name.replace(highlight.rehighlight.val);
      }
      
html.push(GroupsEdit.uGenRow(tabrowname));
    }

    if (
force) {
      
val(conthtml.join(''));
      
show('gedit_users_summaryw_' tab);
      if (
q) {
        
val('gedit_users_summary_' tabgetLang('groups_found_n_users'lentrue));
      } else {
        
GroupsEdit.uUpdateSummary();
      }
    } else {
      
cont.innerHTML += html.join('');
    }
    
toggle(moreend len);
  },
  
uGetPage: function(force) {
    var 
trim(val(cur.searchInp)), tab cur.tabrnd cur.rnd;
    if (
force !== true && cur.searched === q) return;

    
cur.searched q;
    
ajax.post('groupsedit.php', {act'get_page'idcur.opts.idtabtabaddrGroupsEdit.uGetAddr(q)}, {
      
onDone: function(htmlfound) {
        if (
cur.rnd != rnd) return;

        var 
cont ge('gedit_users_rows_' tab);
        if (!
cur.htmls[tab]) cur.htmls[tab] = cont;
        
hide('gedit_users_more_' tab);
        if (
found) {
          
show('gedit_users_summaryw_' tab);
          
val('gedit_users_summary_' tabgetLang('groups_found_n_users'1true));
        } else {
          
hide('gedit_users_summaryw_' tab);
        }
        if (
cont) {
          
domPN(cont).replaceChild(ce('div', {
            
id'gedit_users_tmp_' tab,
            
className'gedit_users_rows',
            
innerHTMLhtml
          
}), cont);
        } else {
          
val('gedit_users_tmp_' tabhtml);
        }
      }
    });
  },
  
uGetHighlight: function(q) {
    var 
indxr cur.index[cur.tab], delimiter indxr.delimitertrimmer indxr.trimmer;

    
+= ' ' + (parseLatin(q) || '');
    
escapeRE(q).replace(/&/g'&amp;');
    
q.replace(trimmer'').replace(delimiter'|');
    return {
      
re: new RegExp('(' ')''gi'),
      
val'<span class="gedit_user_highlight">$1</span>'
    
}
  },
  
uGenEmpty: function(text) {
    return 
'<div class="gedit_users_none">' text '</div>';
  },
  
uGenRow: function(tabrowname) {
    var 
oid row[0], href row[1], photo row[3], sex row[4], infoArr row[5], level row[6], hash row[7], info ''btns ''actions ''nm name || row[2], cur.qShown;
    if (!
name && && !q.match(/^(https?://)?([a-z0-9]+.)*(vkontakte.ru|vk.com)/.+/)) {
      
highlight GroupsEdit.uGetHighlight(q);
      
nm nm.replace(highlight.rehighlight.val);
    }
    if (
infoArr[0]) { // uni
      
info += '<div class="gedit_user_uni">' infoArr[0] + '</div>';
    }
    if (
level 0) {
      
info += '<div class="gedit_user_level">' cur.opts.levels[level] + '</div>';
    }
    if (
infoArr[1]) { // online
      
info += '<div class="gedit_user_online">' + (getLang('global_online'sex) + (infoArr[1] != '<b class="mob_onl gedit_mob_onl" onmouseover="mobileOnlineTip(this, {mid: ' oid '})" onclick="mobilePromo()"></b>' '')) + '</div>';
    }

    switch (
tab) {
      case 
'requests':
        if (
level != -1) { // declined or approved request
          
btns = [
'<div class="gedit_user_buttons">',
  
'<div class="gedit_btns_text">'getLang(level 'groups_request_declined' 'groups_request_accepted'),
    
' <a onclick="GroupsEdit.uAction(this, 'oid', '', hash, '', 0)">'getLang('global_cancel'), '</a>',
  
'</div>',
'</div>'].join('');
        } else { 
// request
          
btns = [
'<div class="gedit_user_buttons">',
  
'<div class="button_blue fl_l">',
    
'<button onclick="GroupsEdit.uAction(this, 'oid', '', hash, '', 1)">'getLang('groups_members_application_admit'), '</button>',
  
'</div>',
  
'<div class="button_cancel gedit_user_cancel_button fl_l">',
    
'<div class="button" onclick="GroupsEdit.uAction(this, 'oid', '', hash, '', -1)">'getLang('groups_members_application_decline'), '</div>',
  
'</div>',
'</div>'].join('');
        }
      break;

      case 
'members':
      case 
'unsure':
      case 
'admins':
        if (
level 3) {
          if (
level 6) {
            
actions += '<a class="gedit_user_action" onclick="GroupsEdit.uMainAdmin()">' getLang('Edit') + '</a>';
          }
        } else if (
level 0) {
          
actions += '<a class="gedit_user_action" onclick="GroupsEdit.uEditAdmin(' oid ')">' getLang('Edit') + '</a>';
          
actions += '<a class="gedit_user_action" onclick="GroupsEdit.uRemoveAdmin(' oid ')">' getLang('group_managers_demote') + '</a>';
        } else if (!
level && cur.opts.admin) {
          
actions += '<a class="gedit_user_action" onclick="GroupsEdit.uEditAdmin(' oid ')">' getLang('groups_members_appoint_manager') + '</a>';
        }
        if (
level 0) {
          
actions += '<a class="gedit_user_action" onclick="GroupsEdit.uAction(this, ' oid ', '' + hash + '', 0)">' getLang('groups_restore_member') + '</a>';
        } else if (
level 4) {
          
actions += '<a class="gedit_user_action" onclick="GroupsEdit.uAction(this, ' oid ', '' + hash + '', -1)">' getLang('groups_members_delete') + '</a>';
        }
      break;

      case 
'declined':
        if (
level 0) {
          
actions += '<a class="gedit_user_action" onclick="GroupsEdit.uAction(this, ' oid ', '' + hash + '', 0)">' getLang('groups_restore_member') + '</a>';
        } else {
          
actions += '<a class="gedit_user_action" onclick="GroupsEdit.uAction(this, ' oid ', '' + hash + '', -1)">' getLang('groups_members_delete') + '</a>';
        }
      break;

      case 
'invites':
        if (
level 0) {
          
actions += '<a class="gedit_user_action" onclick="GroupsEdit.uAction(this, ' oid ', '' + hash + '', 0)">' getLang('groups_send_invitation') + '</a>';
        } else {
          
actions += '<a class="gedit_user_action" onclick="GroupsEdit.uAction(this, ' oid ', '' + hash + '', -1)">' getLang('groups_members_invitations_cancel') + '</a>';
        }
      break;
    }

    return [
'<div id="gedit_user_'taboid'" class="gedit_user">',
  
'<div class="gedit_user_bigph_wrap fl_l" onmouseover="GroupsEdit.bigphOver(this, 'oid')">',
    
'<a class="gedit_user_thumb" href="'href'"><img class="gedit_user_img" src="'photo'" /></a>',
  
'</div>',
  
'<div class="gedit_user_info fl_l">',
    
'<div class="gedit_user_name"><a class="gedit_user_lnk" href="'href'">'nm'</a></div>',
    
info,
    
'<div class="gedit_user_btns">'btns'</div>',
  
'</div>',
  
'<div class="gedit_user_actions fl_r">'actions'</div>',
'</div>'].join('');
  },
  
bigphOver: function(objuid) {
    if (!
cur.lang || !cur.lang.global_photo_full_size || browser.mobile) return;
    var 
obj.firstChildch cur.bigphCache[uid];
    if (
o.tagName != 'A' || o.className != 'gedit_bigph') {
      
obj.insertBefore(ce('a', {className'gedit_bigph'hrefch && ch._id ? ('/photo' ch._id '?all=1') : ('/albums' uid), innerHTML'<span class="gedit_bigph_label">' getLang('global_photo_full_size') + '</span>'}), obj.firstChild);
    }
    if (!
o.onclicko.onclick GroupsEdit.bigphClick.pbind(uid);
    if (!
o._uido._uid uid;

    
clearTimeout(o.hideTO);
    
animate(o, {marginTop75}, {duration200transitionFx.Transitions.easeOutCirc});
    
cur.bigphShown[uid] = o;

    if (!
obj.onmouseoutobj.onmouseout GroupsEdit.bigphOut.pbind(obj);
  },
  
bigphOut: function(obj) {
    var 
obj.firstChild;
    if (!
|| o.tagName != 'A' || o.className != 'gedit_bigph') return;

    
clearTimeout(o.hideTO);
    
o.hideTO setTimeout(function() {
      
animate(o, {marginTop100}, 200);
      
delete(cur.bigphShown[o._uid]);
    }, 
150);
  },
  
bigphClick: function(uidev) {
    if (
checkEvent(ev) !== false) return;

    var 
ch cur.bigphCache[uid], cur.bigphShown[uid], obj domPN(o);
    if (!
|| !obj) return;
    if (
ch === undefined) {
      
ch cur.bigphCache[uid] = 'show';
      
ajax.post('al_photos.php', {act'fast_get_photo'oiduid}, {onDone: function(res) {
        if (!
res) {
          
obj.onmouseover = function() {};
          
re(o);
          return;
        }
        var 
sh = (cur.bigphCache[uid] == 'show');
        
cur.bigphCache[uid] = res;
        
o.href '/photo' res._id '?all=1';
        if (
shGroupsEdit.bigphClick(uid);
      }, 
onFail: function() {
        
obj.onmouseover = function() {};
        
re(o);
        return 
true;
      }});
    }
    if (
ch == 'show') {
      return 
cancelEvent(ev);
    }
    if (!
ch) return;
    return 
showPhoto(ch._id'album' uid '_0/rev'extend({jumpTo: {z'albums' uid}}, ch), ev);
  },
  
uShowMessage: function(txt) {
    
showDoneBox(txt);
  },
  
uEditAdmin: function(user) {
    
showBox('groupsedit.php', {act'edit_admin'idcur.opts.idaddruser});
  },
  
uRemoveAdmin: function(user) {
    return 
showBox('groupsedit.php', {act'edit_admin'idcur.opts.idaddruserremove1});
  },
  
uDoneAdmin: function(midhash) {
    var 
level intval(radioBtns['admlevel'].val);
    if (
cur.notSureAdmin && level >= 3) {
      return 
showFastBox(getLang('groups_admin_warning_title'), cur.notSureAdmingetLang('groups_admin_do_add'), function() {
        
curBox().hide();
        
cur.notSureAdmin false;
        
GroupsEdit.uDoneAdmin(midhash);
      }, 
getLang('global_back'));
    }
    
ajax.post('groupsedit.php', {
      
act'done_admin',
      
idcur.opts.id,
      
addrmid,
      
levellevel,
      
contactisChecked('gedit_admbox_check'),
      
positionval('gedit_admbox_position'),
      
emailval('gedit_admbox_email'),
      
phoneval('gedit_admbox_phone'),
      
hashhash
    
}, {onDone: function(msgrow) {
      var 
tabs = ['members''unsure''admins'], i;

      var 
rem curBox().uRemove;
      if (!
rem) {
        
curBox().hide();
        if (
msgGroupsEdit.uShowMessage(msg);
      }
      if (!
row) return;

      for (
03; ++i) {
        var 
tabs[i], cur.opts.data[t], found falsejklel;
        if (
isArray(d)) {
          for (
0d.lengthl; ++j) {
            if (
d[j][0] == mid) {
              
found true;
              if (
== 'admins') {
                if (
row[6] > && d[j][6] <= 0) {
                  ++
cur.opts.counts[t];
                } else if (
row[6] <= && d[j][6] > 0) {
                  --
cur.opts.counts[t];
                }
              }
              
cur.opts.data[t][j] = row;
              break;
            }
          }
        }
        if (
== 'admins' && !found && level) {
          
cur.opts.data[t].unshift(row);
          ++
cur.opts.counts['admins'];
          
val(cur.searchInp'');
          
GroupsEdit.uIndex(tcur.opts.data[t]);
        } else {
          if (
el ge('gedit_user_' mid)) {
            
domPN(el).replaceChild(se(GroupsEdit.uGenRow(trow)), el);
          }
          if (!
found) {
            
ajaxCache = {};
          }
        }
        
GroupsEdit.uUpdateSummary();
      }
      if (
remGroupsEdit.uAction(falserem[0], rem[1], rem[2]);
    }, 
showProgresscurBox().showProgresshideProgresscurBox().hideProgress});
  },
  
uMainAdmin: function() {
    
showBox('groupsedit.php', {act'main_admin'idcur.opts.id});
  },
  
uInitAdmin: function(boxhostsextcurlng) {
    
box.setOptions({onClean: function() {
      if (
window.WideDropdown) {
        
WideDropdown.deinit('gedit_host_dd');
      }
    }});
    
extend(curextcur, {
      
langextend(cur.lang || {}, lng)
    });
    
WideDropdown.init('gedit_host_dd', {
      
defaultItemshosts,
      
noResultgetLang('groups_host_not_found'),
      
introTextgetLang('groups_choose_host'),
      
onItemSelect: function(sel) {
        
ge('gedit_hostbox_thumb').href ge('gedit_hostbox_name').href sel[4];
        
ge('gedit_hostbox_img').src sel[3];
        
val(ge('gedit_hostbox_name'), sel[1]);
        
cur.hostSel sel;
        
WideDropdown.clear('gedit_host_dd');
        return 
false;
      }
    });
    
WideDropdown.select('gedit_host_dd'falsecur.hostSel);
    
box.removeButtons().addButton(getLang('global_cancel'), box.hide'no');
    
box.addButton(getLang('global_save'), GroupsEdit.uSaveAdmin);
  },
  
uSaveAdmin: function() {
    
ajax.post('groupsedit.php', {
      
act'save_admin'idcur.hostGidoidcur.hostSel[0], fromcur.hostFromhashcur.hostHash
    
}, {
      
onDone: function(rowadmrowsmsg) {
        if (
cur.hostFrom == 'page') {
          
curBox().hide();
          
showDoneBox(msg);
          
domPN(ge('event_admin')).replaceChild(se(row), ge('event_admin'));
          return;
        }
        var 
'admins';
        
toggle('gedit_users_additional_' t, !!admrows);
        
val('gedit_users_rows_additional_' tadmrows);
        var 
last cur.opts.data[t][cur.opts.data[t].length 1];
        if (
el ge('gedit_user_' row[0])) {
          
domPN(el).replaceChild(se(GroupsEdit.uGenRow(trow)), el);
        }
        if (
row[0] > && last[0] < 0) {
          
cur.opts.data[t].pop();
          --
cur.opts.counts[t];
          if (
el ge('gedit_user_' last[0])) {
            
domPN(el).removeChild(el);
          }
        } else if (
row[0] < && last[0] > 0) {
          
cur.opts.data[t].push(row);
          ++
cur.opts.counts[t];
          if (
el ge('gedit_user_' last[0])) {
            
domPN(el).appendChild(se(GroupsEdit.uGenRow(trow)), el);
          }
        } else {
          
cur.opts.data[t][cur.opts.data[t].length 1] = row;
          if (
el ge('gedit_user_' last[0])) {
            
domPN(el).replaceChild(se(GroupsEdit.uGenRow(trow)), el);
          }
        }
        
GroupsEdit.uIndex(tcur.opts.data[t], true);
        
curBox().hide();
        
GroupsEdit.uShowMessage(msg);
        if (
cur.tab != 'admins'nav.go(extend(nav.objLoc, {tab'admins'}));
      },
      
showProgresscurBox().showProgress,
      
hideProgresscurBox().hideProgress
    
});
  },
  
uAction: function(elmidhashact) {
    if (!
curBox() && (buttonLocked(el) || (domFC(el) || {}).className == 'progress_inline')) return;
    var 
tab cur.tab;
    
ajax.post('groupsedit.php', {act'user_action'idcur.opts.idaddrmidhashhashactionact}, {
      
onDone: function(row) {
        if (
curBox()) curBox().hide();
        if (
isArray(row)) {
          var 
tabs = (tab == 'requests' || tab == 'declined' || tab == 'invites') ? [tab] : ['members''unsure''admins'], cnt tabs.lengthi;
          for (
0cnt; ++i) {
            var 
tabs[i], cur.opts.data[t], found falsejklel;
            if (
isArray(d)) {
              for (
0d.lengthl; ++j) {
                if (
d[j][0] == mid) {
                  
found true;
                  
cur.opts.data[t][j] = row;
                  if (
!= 'admins') {
                    if (
act) {
                      --
cur.opts.counts[t];
                    } else {
                      ++
cur.opts.counts[t];
                    }
                  }
                  break;
                }
              }
            }
            if (
el ge('gedit_user_' mid)) {
              
domPN(el).replaceChild(se(GroupsEdit.uGenRow(trow)), el);
              if (
!= 'admins' && == 'notavail') {
                if (
act) {
                  --
cur.opts.counts[t];
                  --
cur.offsets[t];
                } else {
                  ++
cur.opts.counts[t];
                  ++
cur.offsets[t];
                }
              }
            }
            if (!
found) {
              
ajaxCache = {};
            }
          }
          if (
tab == 'requests' && act || tab == 'admins' && act 0) {
            
cur.noLocNav true;
          }
          
GroupsEdit.uUpdateSummary();
        } else if (
row) {
          
GroupsEdit.uShowMessage(row);
        } else {
          
GroupsEdit.uRemoveAdmin(mid).uRemove = [midhashact];
        }
      },
      
showProgress: function() {
        if (
curBox()) {
          
curBox().showProgress();
        } else if (
el && el.tagName == 'BUTTON') {
          
lockButton(el);
        } else {
          if (!
el._sel._s val(el);
          
val(el'<span class="progress_inline"></span>');
        }
      },
      
hideProgress: function() {
        if (
curBox()) {
          
curBox().hideProgress();
        } else if (
el && el.tagName == 'BUTTON') {
          
unlockButton(el);
        } else {
          if (
el._s) {
            
val(elel._s);
            
el._s false;
          }
        }
      }
    });
  },

  
waitTwitter: function() {
    
ajax.post('al_groups.php', {act'get_twitter_auth'gidcur.gid}, {onDone: function(url) {
      if (
url) {
        
hide(cur.twitterBox.progress);
        
ge('group_status_export_data').innerHTML getLang('groups_authorize_please');
        
cur.twitterBox.addButton(getLang('groups_auth_in_twitter'), function() {
          
location.href url;
        });
      } else {
        
cur.twitterTimer setTimeout(GroupsEdit.waitTwitter1000);
      }
    }});
  },
  
startTwitter: function() {
    
cur.twitterBox showFastBox(getLang('groups_status_export'), '
<div class="group_status_export_info">
  <img class="groups_twitter_icon fl_l" src="/images/twitter_sync.png" />
  <div class="groups_twitter_info fl_l">
    <b>Twitter</b><br />' 
getLang('groups_twitter_desc') + '
  </div>
  <br class="clear" />
</div>
<center id="group_status_export_data">' 
getLang('groups_external_site_request') + '</center>
    '
);
    
cur.twitterBox.setOptions({onHideclearTimeout.bind(window).pbind(cur.twitterTimer)});
    
cur.twitterBox.removeButtons().addButton(getLang('global_cancel'), cur.twitterBox.hide'no');
    
show(cur.twitterBox.progress);
    
ajax.post('al_groups.php', {act'get_twitter_auth'gidcur.gidfirst1}, {onDone: function() {
      
cur.twitterTimer setTimeout(GroupsEdit.waitTwitter1000);
    }});
  },
  
checkTwitter: function() {
    
ajax.post('al_groups.php', {act'get_twitter_name'gidcur.gid}, {onDone: function(name) {
      if (
name) {
        
cur.twitterCheckTimer false;
        var 
lnk ge('name_service1');
        
lnk.innerHTML name;
        
lnk.href 'http://twitter.com/' name;
      } else {
        
cur.twitterCheckTimer setTimeout(GroupsEdit.checkTwitter1000);
      }
    }});
  },
  
removeTwitter: function() {
    var 
box showFastBox(getLang('groups_status_export'), '<center>' getLang('groups_status_confirm') + '</center>'getLang('global_continue'), function() {
      
ajax.post('al_groups.php', {act'clear_twitter'gidcur.gidhashcur.hash}, {progressbox.progress});
    }, 
getLang('global_cancel'));
  },

  
getFields: function() {
    var 
result = {};
    for (var 
0arguments.length; ++i) {
      var 
arguments[i];
      
result[n] = cur.privacy['g_' n][0];
    }
    return 
result;
  },
  
nbAddr: function() {
    var 
tbl ge('group_edit_addr_table');
    
setStyle(tbl'backgroundColor''#FAEAEA');
    
setTimeout(animate.pbind(tbl, {backgroundColor'#FFFFFF'}, 300), 400);
    
elfocus('group_edit_addr');
  },
  
saveInfo: function() {
    var 
name trim(ge('group_edit_name').value), addr trim(ge('group_edit_addr').value);
    if (!
name) {
      return 
notaBene(ge('group_edit_name'));
    }
    if (!
addr) {
      return 
GroupsEdit.nbAddr();
    }

    var 
params = {
      
act'save',
      
gidcur.gid,
      
namename,
      
addraddr,
      
descriptiontrim(ge('group_edit_desc').value),
      
websitetrim(ge('group_website').value),
      
rsstrim(ge('group_rss').value),
      
hashcur.hash
    
}, btn ge('group_save');
    if (
cur.cls == || cur.cls == 2) {
      
extend(paramsGroupsEdit.getFields(
        
'wall''photos''video''audio''docs''topics''wiki''access'
      
));
      
params.subject cur.subjectDD.val();
      if (
cur.cls == 2) {
        
extend(params, {
          
start_dateval('group_start_date'),
          
finish_dateisVisible('group_edit_finish_time') ? val('group_finish_date') : 0,
          
hostcur.hostDD cur.hostDD.val() : false,
          
emailval('event_mail'),
          
phoneval('event_phone')
        });
      }
    } else if (
cur.cls == 1) {
      
extend(params, {
        
pcategorycur.pcategoryDD.val(),
        
psubcategorycur.psubcategoryDD.val(),
        
public_dateval('gedit_public_date')
      });
      
each(['enable_replies''enable_topics''enable_photos''enable_video''enable_audio''enable_links''enable_events''enable_places''enable_contacts'], function(iv) {
        
params[v] = isChecked(v);
      });
    }

    
ajax.post('al_groups.php'params, {onDone: function(resultoldaddr) {
      if (
result 0) {
        return 
GroupsEdit.nbAddr();
      }
      if (
result === false) {
        return 
notaBene(ge('group_edit_name'));
      }
      if (
nav.objLoc.act == 'edit_first') {
        return 
nav.go(nav.objLoc[0]);
      }
      ((
cur.privacy['g_wall'][0] > || cur.twitterVal) ? show hide)('group_edit_twitter');
      var 
msg ge('group_saved_msg');
      
show(msg);
      
msg.style.backgroundColor '#F4EBBD';
      
animate(msg, {backgroundColor'#F9F6E7'}, 2000);
      
scrollToTop();
      if (
oldaddr != addr) {
        
each(geByTag('a'), function() {
          
this.href this.href.replace(new RegExp('/' oldaddr '\?''g'), '/' addr '?').replace(new RegExp('/' oldaddr '$''g'), '/' addr);
        });
        
nav.setLoc({0addract'edit'});
        
globalHistoryDestroy(oldaddr);
      }
      
globalHistoryDestroy(addr);
    }, 
showProgresslockButton.pbind(btn), hideProgressunlockButton.pbind(btn)});
  },

  
checkAddr: function(timeout) {
    
clearTimeout(cur.checkAddrTimer);
    if (
timeout) {
      var 
inp ge('group_edit_addr'), tmp inp.value.replace(/[^0-9a-zA-Z_.]/g'');
      if (
tmp != inp.valueinp.value tmp;
      
cur.checkAddrTimer setTimeout(GroupsEdit.checkAddr.pbind(false), 1000);
      return;
    }
    var 
val ge('group_edit_addr').value;
    if (
val) {
      
ajax.post('al_settings.php', {act'check_addr'addrvaloid: -cur.gid}, {onDone: function(resulttext) {
        
ge('group_edit_about_addr').innerHTML text;
      }});
    }
  },
  
show: function(elem) {
    if (!
isVisible(elem)) {
      
slideDown(elem150);
    }
  },
  
hide: function(elem) {
    if (
isVisible(elem)) {
      
slideUp(elem150);
    }
  },
  
init: function(selData) {
    
autosizeSetup('group_edit_desc', {
      
minHeight50,
      
maxHeight600
    
});

    
cur.twitterVal selData.twitter;
    
extend(cur, {
      
module'groups_edit',
      
privacycur.privacy || {},
      
clsselData.cls
    
});
    if (
cur.cls == || cur.cls == 2) {
      
extend(cur, {
        
subjectDD: new Dropdown(ge('group_subject'), selData.subjects, {
          
widthcur.cls == 266 186,
          
multiselectfalse,
          
autocompletetrue,
          
introTextgetLang('groups_start_typing_subject'),
          
noResult'',
          
placeholdergetLang('groups_choose_subject')
        })
      });
      if (
selData.subject && selData.subject != '0') {
        
cur.subjectDD.val(selData.subject);
      }
    }
    if (
cur.cls == 1) {
      
extend(cur, {
        
pcategoryDD: new Dropdown(ge('public_type'), selData.pcategories, {
          
width266,
          
multiselectfalse,
          
autocompletefalse,
          
onChange: function(v) {
            
intval(v);
            if (
&& (selData.psubcategories[v] || {}).length 1) {
              
cur.psubcategoryDD.setOptions({defaultItemsselData.psubcategories[v]});
              
cur.psubcategoryDD.val(0);
              
GroupsEdit.show(ge('group_edit_psubcategory'));
            } else {
              
GroupsEdit.hide(ge('group_edit_psubcategory'));
            }
            if (
selData.plabelsmap[v] !== undefined) {
              
val('gedit_public_date_label'selData.plabels[selData.plabelsmap[v]]);
            } else {
              
val('gedit_public_date_label'selData.plabels[selData.plabelsmap[0]]);
            }
          }
        }),
        
psubcategoryDD: new Dropdown(ge('public_subtype'), selData.psubcategories[selData.pcategory || 0] || [], {
          
width266,
          
multiselectfalse,
          
autocompletefalse
        
}),
        
bdPicker: new Daypicker('gedit_public_date', {startYear1800width266})
      });
      
cur.pcategoryDD.val(selData.pcategorytrue);
      
cur.psubcategoryDD.val(selData.psubcategory);
    } else if (
cur.cls == 2) {
      new 
Datepicker('group_start_date', {time'group_start_time'width140resfmt'plain'});
      new 
Datepicker('group_finish_date', {time'group_finish_time'width140resfmt'plain'});
      var 
width 140 47 10el geByClass1('group_edit_at'ge('group_edit_start_time'));

      
width += el.offsetWidth;
      var 
toAdd = (266 width), toAddLeft Math.floor(toAdd 2), toAddRight toAdd toAddLeft;
      var 
st = {paddingLefttoAddLeft 'px'paddingRighttoAddRight 'px'};
      
setStyle(elst);
      
setStyle(geByClass1('group_edit_at'ge('group_edit_finish_time')), st);

      if (
selData.hosts) {
        
extend(cur, {
          
hostDD: new Dropdown(ge('event_host'), selData.hosts, {
            
width266,
            
multiselectfalse,
            
autocompletefalse,
            
selectedItems: [selData.host]
          })
        });
      }
    }

    
cur.destroy.push(function(c) {
      if (
c.cls == 0) {
        
c.subjectDD.destroy();
      } else if (
c.cls == 1) {
        
c.pcategoryDD.destroy();
        
c.psubcategoryDD.destroy();
      } else if (
c.cls == 2) {
        
c.subjectDD.destroy();
        if (
c.hostDDc.hostDD.destroy();
      }
    });

    
placeholderSetup('group_rss');
  },

  
doSearchBlacklist: function() {
    var 
inp ge('group_bl_search'), name trim(inp.value), btn ge('group_bl_submit');
    if (!
name) {
      return 
elfocus(inp);
    }

    return 
showBox('al_groups.php', {act'bl_edit'namenamegidcur.gid}, {stat: ['page.css''ui_controls.js''ui_controls.css'], dark1});
  },
  
toggleBlacklist: function(midel) {
    if ((
domFC(el) || {}).className == 'progress_inline') return;
    
ajax.post('al_groups.php', {act'bl_user'midmidgidcur.gidhashcur.hash}, {
      
onDoneGroupsEdit.updateBlacklist.pbind(cur.gid),
      
showProgress: function() {
        if (!
el._sel._s val(el);
        
val(el'<span class="progress_inline"></span>');
      }, 
hideProgress: function() {
        if (
el._s) {
          
val(elel._s);
          
el._s false;
        }
      }
    });
  },
  
editBlacklist: function(mid) {
    
showBox('al_groups.php', {act'bl_edit'name'id' midgidcur.gid}, {stat: ['page.css''ui_controls.js''ui_controls.css'], dark1});
  },
  
updateBlacklist: function(gidmsgmidhtmldelta) {
    if (
mid && curBox()) curBox().hide();
    if (
msg === 0) return GroupsEdit.editBlacklist(mid);
    if (
msgshowDoneBox(msg, {out3000});
    if (
nav.objLoc[0] == 'search' && nav.objLoc.from == 'ban' && nav.objLoc.gid && mid) {
      return 
nav.go(
        (
ge('club_bl_lnk') || {href'club' nav.objLoc.gid '?act=blacklist'}).href,
        
false,
        {
nobacktrue}
      );
    }
    if (
ge('group_bl_rows') && cur.gid == gid) {
      var 
row ge('group_bl' mid), newrow se(html);
      if (!
row && !(delta 0)) return;

      if (
row) {
        
domPN(row).replaceChild(newrowrow);
      } else if (
delta 0) {
        var 
rows ge('group_bl_rows');
        
rows.insertBefore(newrowdomFC(rows));
        
re('group_bl_no');
      }
      
GroupsEdit.recache(cur.offsetdelta);
      
GroupsEdit.updateBlacklistSummary(delta);
    }
  },
  
updateBlacklistSummary: function(delta) {
    
cur.count += delta;
    if (
cur.count 0) {
      
ge('group_bl_summary').innerHTML getLang('groups_X_banned_members'cur.count);
    } else {
      
ge('group_bl_summary').innerHTML getLang('group_no_banned_users');
    }
  },
  
scrollResize: function() {
    if (
browser.mobile) return;

    var 
docEl document.documentElement;
    var 
ch window.innerHeight || docEl.clientHeight || bodyNode.clientHeight;
    var 
st scrollGetY();
    var 
lnk ge(cur.moreLink);

    if (!
isVisible(lnk)) return;
    if (
st ch lnk.offsetTop) {
      
cur.showMore();
    }
  },
  
initScroll: function() {
    
GroupsEdit.scrollnode browser.msie6 pageNode window;
    
window.scrollTop bodyNode.scrollTop pageNode.scrollTop htmlNode.scrollTop 0;

    
addEvent(GroupsEdit.scrollnode'scroll'GroupsEdit.scrollResize);
    
addEvent(window'resize'GroupsEdit.scrollResize);
    
removeEvent(window'load'GroupsEdit.initScroll);
  },
  
deinitScroll: function() {
    
removeEvent(GroupsEdit.scrollnode'scroll'GroupsEdit.scrollResize);
    
removeEvent(window'resize'GroupsEdit.scrollResize);
  },
  
recache: function(fromdelta) {
    if (
cur.loading) {
      
cur.loading 1;
      
setTimeout(GroupsEdit.recache.pbind(fromdelta), 100);
      return;
    }

    var 
cur.offsetkey '/' nav.objLoc[0] + '#' ajx2q(extend({offset12345part1}, cur.moreParams));
    var 
ajaxCache[key.replace('12345'i)];
    if (
a) {
      
a[0] += delta;
      
ajaxCache[key.replace('12345'delta)] = a;
      
delete(ajaxCache[key.replace('12345'i)]);
    }
    
cur.offset += delta;
  },
  
loaded: function(offrows) {
    
cur.offset off;

    var 
cont ge('group_bl_rows'), ce('div', {innerHTMLrows});
    while (
d.firstChild) {
      
cont.appendChild(d.firstChild);
    }

    if (
off >= cur.count || !rows) {
      
hide('group_users_more');
      return;
    }
    
cur.loading 1;
    
ajax.post(nav.objLoc[0], extend({offsetcur.offsetpart1}, cur.moreParams), {cache1onDone: function() {
      if (
cur.loading == 2) {
        
GroupsEdit.loaded.apply(windowarguments);
      } else {
        
cur.loading false;
      }
    }, 
onFail: function() {
      
cur.loading 0;
      return 
true;
    }});
  },
  
load: function() {
    if (!
isVisible('group_users_more') || isVisible('group_more_progress')) return;
    if (
cur.loading) {
      
cur.loading 2;
      return;
    }

    
ajax.post(nav.objLoc[0], extend({offsetcur.offsetpart1}, cur.moreParams), {onDoneGroupsEdit.loadedonFail: function() {
      
cur.loading 0;
      return 
true;
    }, 
showProgress: function() {
      
show('group_more_progress');
      
hide(ge('group_users_more').firstChild);
    }, 
hideProgress: function() {
      
show(ge('group_users_more').firstChild);
      
hide('group_more_progress');
    }, 
cache1});
  },

  
initLinks: function() {
    
placeholderSetup('group_l_search', {backtrue});
    
elfocus('group_l_search');
    
cur.module 'groups_edit';
    if (!
ge('group_l_no')) {
      var 
cont ge('group_l_rows');
      
sorter.init(cont, {onReorderGroupsEdit.reorderLinksdh1});
      
cur.destroy.push(cont.sorter.destroy);
    }
  },
  
reorderLinks: function(lnkbeforeafter) {
    var 
lnk_id lnk.id.replace('group_l_row''');
    for (; 
after && (!after.id || isVisible('group_l_restore' after.id.replace('group_l_row'''))); ) {
      
after after.previousSibling;
    }
    var 
after_id = (after && after.id || '').replace('group_l_row''');
    
ajax.post('al_groups.php', {act'reorder_links'gidcur.gidhashcur.hashlidlnk_idafterafter_id}, {onDoneGroupsEdit.invalidateBack});
  },
  
editLink: function(id) {
    
showBox('al_groups.php', {act'edit_link'lididgidcur.gidhashcur.hash});
  },
  
invalidateBack: function() {
    
globalHistoryDestroy(nav.objLoc[0]);
    
globalHistoryDestroy('club' cur.gid);
    
globalHistoryDestroy('event' cur.gid);
  },
  
linkAction: function(elactid) {
    var 
del = (act == 'delete_link');
    if (!
del && cur.count >= cur.linksLimit) {
      return 
GroupsEdit.linkMessage('<b>' getLang('global_unknown_error') + '.</b>'true);
    }

    var 
params = {actactlididgidcur.gidhashcur.hash};
    
GroupsEdit.linksCount(cur.count + (del ? -1));
    if (!
del) { // say after what link is that one
      
var after ge('group_l_row' id).previousSibling
      
for (; after && (!after.id || isVisible('group_l_restore' after.id.replace('group_l_row'''))); ) {
        
after after.previousSibling;
      }
      
params.after = (after && after.id || '').replace('group_l_row''');
    }
    
ajax.post('al_groups.php'params, {onDone: function() {
      
GroupsEdit.invalidateBack();
      (
del hide show)('group_l_actions' id);
      (
del show hide)('group_l_restore' id);
    }, 
onFail: function() {
      
GroupsEdit.linksCount(cur.count + (del : -1));
    }, 
showProgress: function() {
      
hide('group_l_actions' id'group_l_restore' id);
      
show('group_l_progress' id);
    }, 
hideProgress: function() {
      
hide('group_l_progress' id);
      
show((del 'group_l_actions' 'group_l_restore') + id);
    }});
  },
  
updateImgs: function() {
    if (
cur.lnkImages.length 1) {
      
ge('group_al_thumb_img').parentNode.style.cursor 'pointer';
    }
  },
  
rotateImgs: function() {
    if (
cur.lnkImages.length 2) return;

    var 
index = ((cur.lnkIndex || 0) + 1) % cur.lnkImages.length;
    
ge('group_al_thumb_img').src cur.lnkImages[index];
    
cur.lnkIndex index;
  },
  
parseLink: function(urlcuteurl) {
    if (!/
https?:///i.test(url)) {
      
url 'http://' url;
    }
    if (
cuteurl && !/https?:///i.test(cuteurl)) {
      
cuteurl 'http://' cuteurl;
    }
    
lockButton(ge('group_l_submit'));

    var 
cont ge('group_l_bar');
    
re(cur.lnkParse);
    
cur.lnkParse cont.insertBefore(ce('div', {innerHTML'
<iframe class="upload_frame" name="link_parse_iframe"></iframe>
   '
}), cont.firstChild);

    var 
parseForm cur.lnkParse.appendChild(ce('form', {actioncur.parseUrlmethod'post'target'link_parse_iframe'}));
    
each({
      
act'parse_share',
      
from_hostlocHost,
      
midvk.id,
      
hashcur.parseHash,
      
rhashcur.parseRHash,
      
urlurl
    
}, function(iv) {
      
parseForm.appendChild(ce('input', {type'hidden'nameivaluev}));
    });

    
cur.lnkImages = ['/images/lnkouter100.gif'];
    
window.onParseDone = function(data) {
      
unlockButton(ge('group_l_submit'));
      
GroupsEdit.addLinkBox(data.title || ''cuteurl || url);
      if (!
data.images || !data.images.length) {
        return;
      }
      
cur.addBox.setOptions({onClean: function() {
        
clearInterval(cur.imgLoadInterval);
      }});
      for (var 
i in data.images) {
        var 
src ''img vkImage();
        if (/^
//.test(data.images[i])) {
          
src = (/^https:///i.test(url) ? 'https://' : 'http://') + GroupsEdit.getDomain(url);
        
} else if (!/^https?:///i.test(data.images[i])) {
          
src url.replace(/[^/]*$/, '');
          if (/^
https?://$/i.test(src)) {
            
src url '/';
          }
        }
        
img.src src data.images[i];
        
data.images[i] = img;
      }
      
cur.imgLoadInterval setInterval(function() {
        var 
nl 0;
        for (var 
i in data.images) {
          var 
img data.images[i];
          if (!
img) continue;
          var 
img.widthimg.height;
          if (
|| h) {
            if (
>= 50 && >= 20) {
              
cur.lnkImages.push(img.src);
              
GroupsEdit.updateImgs();
              if (!
cur.lnkIndexGroupsEdit.rotateImgs();
            }
            
data.images[i] = false;
          } else {
            ++
nl;
          }
        }
        if (!
nl) {
          
clearInterval(cur.imgLoadInterval);
          
cur.imgLoadInterval true;
        }
      }, 
200);
    }

    
window.onParseFail = function() {
      
unlockButton(ge('group_l_submit'));
      
GroupsEdit.addLinkBox(''cuteurl || url);
    }

    
parseForm.submit();
  },
  
getDomain: function(url) {
    if (
url.charAt(0) == '/') return locDomain;
    return 
url.match(/^(https?://)?([^/]+)(/|$)/)[2];
  
},
  
addLinkBox: function(titleurl) {
    var 
img cur.lnkImages[0];
    
cur.lnk url;
    
cur.lnkOwnerId cur.lnkPhotoId false;
    
cur.editing false;
    
cur.addBox showFastBox(cur.boxTitle'
<div class="group_al_thumb select_fix fl_l" onclick="GroupsEdit.rotateImgs()">
  <img src="' 
img '" id="group_al_thumb_img" />
</div>
<div class="group_al_info fl_l">
  <input type="text" class="text" id="group_al_title" value="' 
trim(title) + '" onkeypress="if (event.keyCode == 10 || event.keyCode == 13) GroupsEdit.doAddLink()" placeholder="' getLang('group_link_add_title') + '" />
  <div class="group_al_position">' 
GroupsEdit.getDomain(url) + '</div>
</div>
<br class="clear" />'
getLang('global_add'), GroupsEdit.doAddLinkgetLang('global_cancel'));
    var 
inp ge('group_al_title');
    
placeholderSetup(inp, {backtrue});
    
elfocus(inp);
  },
  
addLink: function() {
    var 
lnk trim(ge('group_l_search').value).replace(/s/g'+');
    if (!
lnk) {
      return 
elfocus('group_l_search');
    }
    
cur.lnkIndex 0;
    
ajax.post('al_groups.php', {act'add_link_box'lnklnk}, {onDone: function(codeinnerlnkhtmljs) {
      if (
code 0) {
        if (
code 1) { // inner link
          
ajax.plainpost(innerlnk, {}, function(text) {
            var 
title trim((text.match(/<title>([^<]*)/i) || {})[1] || '');
            
cur.lnkImages = ['/images/lnkinner100.gif'];
            
cur.lnk innerlnk;
            
GroupsEdit.addLinkBox(titleinnerlnk);
          }, (
code 2) ? GroupsEdit.parseLink.pbind(htmljs) : function(text) {
            
GroupsEdit.linkMessage(getLang('groups_bad_link'), true);
            return 
elfocus('group_l_search');
          }, 
true);
        } else if (
code 2) {
          
GroupsEdit.parseLink(innerlnkhtml);
        }
      } else if (
code 0) {
        
GroupsEdit.linkMessage(getLang('groups_bad_link'), true);
        return 
elfocus('group_l_search');
      } else {
        
cur.lnk innerlnk;
        
cur.lnkOwnerId cur.lnkPhotoId false;
        
cur.addBox showFastBox(cur.boxTitlehtmlgetLang('global_add'), GroupsEdit.doAddLinkgetLang('global_cancel'));
        
cur.addBox.evalBox(js);
      }
    }, 
showProgresslockButton.pbind(ge('group_l_submit')), hideProgressunlockButton.pbind(ge('group_l_submit'))});
  },
  
uploadImg: function() {
    
show(cur.addBox.progress);
    var 
cont ge('group_l_bar');
    var 
uploadCont cont.appendChild(ce('div', {innerHTML'<iframe class="upload_frame" name="link_upload_iframe"></iframe>'})),
        
uploadForm uploadCont.appendChild(ce('form', {action'/share.php'method'post'target'link_upload_iframe'}));
    
each({
      
act'a_photo',
      
index0,
      
imagecur.lnkImages[cur.lnkIndex],
      
extra'link'
    
}, function (iv) {
      
uploadForm.appendChild(ce('input', {type'hidden'nameivaluev}));
    });
    
window.onUploadDone = function(indexparams) {
      
window.onUploadFail window.onUploadDone = function () {};
      
cur.lnkOwnerId params.user_id;
      
cur.lnkPhotoId params.photo_id;
      
cont.removeChild(uploadCont);
      
cur.lnkIndex 0;
      
GroupsEdit.doAddLink(true);
    }
    
window.onUploadFail = function(indexmsg) {
      
window.onUploadFail window.onUploadDone = function () {};
      
cont.removeChild(uploadCont);
      
cur.lnkIndex 0;
      
GroupsEdit.doAddLink(true);
    }
    
cur.lnkOwnerId cur.lnkPhotoId false;
    
uploadForm.submit();
  },
  
linkMessage: function(texterror) {
    var 
msg ge('group_l_msg');
    
msg.innerHTML text;
    
show(msg);
    var 
colors error ? ['#FACEBB''#FFEFE8''#E89B88'] : ['#F4EBBD''#F9F6E7''#D4BC4C'];
    
msg.style.backgroundColor colors[0];
    
each(['Left''Top''Right''Bottom'], function() {
      
msg.style['border' this 'Color'] = colors[2];
    });
    
animate(msg, {backgroundColorcolors[1]}, 2000);
  },
  
linksCount: function(count) {
    
cur.count count;
    
ge('group_l_summary').innerHTML count getLang('links_count'count) : getLang('links_no_count');
    (
count >= cur.linksLimit hide show)('group_l_bar');
  },
  
doAddLink: function(force) {
    if (!
force && isVisible(cur.addBox.progress)) return;

    var 
title ge('group_al_title');
    if (
title && cur.lnkIndex) {
      return 
GroupsEdit.uploadImg();
    }
    var 
str = (title title ge('group_al_position')).value;
    var 
params = {
      
lnkcur.lnk,
      
indexcur.lnkIndex,
      
owner_idcur.lnkOwnerId,
      
photo_idcur.lnkPhotoId,
      
strstr,
      
gidcur.gid,
      
lidcur.editing,
      
hashcur.hash
    
}, callback;
    if (
cur.editing) {
      
params.act 'do_edit_link';
      
callback = function(lidthumbtitleposition) {
        
cur.addBox.hide();
        
GroupsEdit.invalidateBack();
        if (
thumb !== falsege('group_l_photo' lid).src thumb;
        if (
title !== falsege('group_l_title' lid).innerHTML title;
        if (
position !== falsege('group_l_position' lid).innerHTML position;
      }
    } else {
      
params.act 'add_link';
      
callback = function(counttextrow) {
        
cur.addBox.hide();
        
GroupsEdit.invalidateBack();
        
GroupsEdit.linkMessage(text);
        var 
cont ge('group_l_rows');
        
cont.appendChild(ce('div', {innerHTMLrow}).firstChild);
        var 
no ge('group_l_no');
        if (
no) {
          
cont.removeChild(no);
          
sorter.init(cont, {onReorderGroupsEdit.reorderLinksdh1});
          
cur.destroy.push(cont.sorter.destroy);
        } else {
          
sorter.added(cont);
          
sorter.shift(cont);
        }
        
GroupsEdit.linksCount(count);
        var 
ge('group_l_search');
        
s.setValue('');
        
elfocus(s);
      }
    }
    
setTimeout(ajax.post.pbind('al_groups.php'params, {onDonecallbackonFail: function(text) {
      
cur.addBox.hide();
      
GroupsEdit.linkMessage(text || getLang('groups_bad_link'), true);
      return 
true;
    }, 
progresscur.addBox.progress}), 0);
  },

  
failed: function(oldtext) {
    
GroupsEdit.setActive(old);
    if (!
text) return;

    
setTimeout(showFastBox(getLang('global_error'), text).hide2000);
    return 
true;
  },
  
getsect: function() {
    var 
filters ge('group_edit_filters');
    if (!
filters) return;

    var 
current filters.firstChild;
    for (; !
current.tagName || !hasClass(current'active_link');) {
      
current current.nextSibling;
    }
    return 
current;
  },
  
setActive: function(el) {
    var 
filters ge('group_edit_filters');
    if (!
filters) return;

    var 
current GroupsEdit.getsect();
    if (
current != el) {
      
current.className '';
      
el.className 'active_link';
    }
  },
  
go: function(elev) {
    var 
result nav.go(elev, {onFailGroupsEdit.failed.pbind(GroupsEdit.getsect())});
    if (
result === false) {
      
GroupsEdit.setActive(el.parentNode);
    }
  },

  
editPlace: function() {
    
showBox('al_page.php', {act'edit_group_place'gidcur.gid}, {stat: ['maps.js''ui_controls.js''ui_controls.css''selects.js''page.css'], dark1});
  },
  
onPlaceSave: function(res) {
    
ge('group_edit_address_link').innerHTML res;
  },

  
showStickersTT: function(text) {
    var 
ttEl ge('group_edit_addr_table');
    
showTooltip(ttEl, {
      
text'<div class="stickers_side_tt_pointer"></div>' text.replace('{link}'"<a href="#" onclick="showBox('al_groups.php', {act: 'stickers_box', gid: cur.gid}); return false;">").replace('{/link}', '</a>'),
      
className'stickers_side_tt',
      
slideX15,
      
shift: [-276, -433],
      
nohide1,
      
hasover1
    
});
    
ge('group_edit_addr').onblur = function () {
      
GroupsEdit.checkAddr();
      if (!
ttEl.tt || !ttEl.tt.hide) return;
      
ttEl.tt.hide();
    }
  }
}

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