Вход Регистрация
Файл: js/al/search.js
Строк: 1041
<?php
var slide_show = function(elem) {
  if (!
isVisible(elem)) slideDown(elem150);
};

var 
slide_hide = function(elem) {
  if (
isVisible(elem)) slideUp(elem150);
};


var 
searcher = {
  
getSectionParams: function(section) {
    var 
form ge('filter_form'), params = {};
    if (!
form || section && section != cur.section || cur.section == 'quick') {
      
params = {'c[section]'section || cur.section'c[q]'val('search_query')};
    } else {
      
params serializeForm(form) || {};
    }
    
params['c[q]'] = val('search_query');
    for (var 
i in params) {
      if (!
params[i] || params[i] == '0'delete params[i];
    }
    if (
cur.section == 'video' && !params['c[sort]']) {
      
params['c[sort]'] = '0';
    }
    if (
cur.section == 'people' && ge('c[name]') && !params['c[name]']) {
      
params['c[name]'] = '0';
    }
    if (
cur.section == 'people' && ge('c[photo]') && !params['c[photo]']) {
      
params['c[photo]'] = '0';
    }
    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;
  },
  
switchSection: function(newSectionoptsevent) {
    if (
event && checkEvent(event)) return true;
    
opts opts || {};
    var 
params searcher.getSectionParams(newSection);
    if (
newSection != 'auto' && newSection != 'quick' && opts.updateStats) {
      
params.swt 1;
    }
    if (
opts.tab) {
      
params.tab 1;
    }
    if (
ge('search_section_tabs')) {
      
each(geByClass('active'ge('search_section_tabs')), function(iv) {
        
removeClass(v'active');
      });
      if (
ge('search_'+newSection+'_tab')) addClass(ge('search_'+newSection+'_tab'), 'active');
    }
    
searcher.setSection(newSection);
    
searcher.sendSearchReq(paramstrue);
    return 
false;
  },
  
switchAudioTop: function(rec) {
    
cur.useRec rec;
    
cur.audioTop rec;
    return 
this.switchSection('audio');
  },
  
showMedia: function(sectionelevent) {
    if (
event && checkEvent(event)) return false;
    
hide(geByClass1('label'el));
    
show(geByClass1('progress'el));
    
cur.loadingMedia true;
    return 
searcher.switchSection(section, {updateStatstrue}, event);
  },
  
updResults: function(data) {
    var 
params searcher.getSectionParams();
    if (
searcher.sameParams(params)) return false;
    if (
cur.onSearchChange) {
      
cur.onSearchChange(params);
    }
    
searcher.sendSearchReq(paramscur.section == 'auto' && !params.offset);
    if (
hasClass(ge('search_filters'), 'fixed')) {
      
scrollToTop();
    }
  },
  
onInputChange: function (e) {
    
clearTimeout(cur.requestTimeout);
    if (
&& (e.type != 'keydown' || e.keyCode == 13)) {
      
searcher.updResults();
    } else {
      
cur.requestTimeout setTimeout(function () {searcher.updResults()}, 1000);
    }
  },
  
onKey: function () {
    var 
val('search_query'), reset_el ge('search_query_reset')
    
setStyle(reset_el, {opacity0.5});
    
toggleClass(reset_el'shown'v);
    if (
cur.section != 'quick') return;
    
clearTimeout(cur.requestTimeout);
    
cur.requestTimeout setTimeout(function () {searcher.updResults()}, 300);
  },
  
sendSearchReq: function (paramschangeSection) {
    if (
cur.searchReq) {
      try {
        
cur.searchReq.abort();
      } catch (
e) {debugLog(e);}
    }
    if (
changeSection && !params.offset) {
      
extend(params, {uf1ra1});
    }
    if (
cur.useRec !== undefined) {
      
params.rec cur.useRec;
      
delete cur.useRec;
    }
    
params.edit nav.objLoc.edit;
    
params.sign nav.objLoc.sign;
    
params.all nav.objLoc.all;
    
params.change 1;
    if (
cur.topType !== undefined) {
      
params.type cur.topType;
      
delete cur.topType;
    }
    if (
window.iSearch && iSearch.select) {
      
iSearch.select.hide();
      
delete cur.setISearch;
    }
    if (!
cur.loadingMedia) {
      
addClass(ge('search_query_wrap'), 'loading');
    }
    
cur.params params;
    
cur.searchReq ajax.post('al_search.php'params, {
      
onDone: function (optionsrowssectionsfiltersads) {
        var 
res = (params.uf && ge('results_wrap')) ? ge('results_wrap') : ge('results'),
            
filters_el ge('sections_filter') ? ge('search_filters') : ge('filters');
        
res.innerHTML rows || '';
        if (
ge('sections_filter')) {
          
ge('sections_filter').innerHTML sections || '';
        }
        if (
changeSection) {
          
filters_el.innerHTML filters || '';
          
ge('search_query').focus();
        }
        if (
changeSection || ads) {
          
__adsSet(ads);
        }
        
searcher.applyOptions(optionschangeSection);
        if (
changeSection && ge('search_section_tabs')) {
          
each(geByClass('active'ge('search_section_tabs')), function(iv) {
            
removeClass(v'active');
          });
          if (
ge('search_'+cur.section+'_tab')) addClass(ge('search_'+cur.section+'_tab'), 'active');
        }
        if (
TopSearch && TopSearch.tsNeedsClear) {
          
TopSearch.clear();
          
TopSearch.toggleInput(falsetrue);
          
delete TopSearch.tsNeedsClear;
        }
        
removeClass(ge('search_query_wrap'), 'loading');
        var 
_a window.audioPlayer;
        if (
_a && _a.showCurrentTrack_a.showCurrentTrack();
        if (
cur.onSearchFinish) {
          
cur.onSearchFinish();
        }
        if (
params['c[section]'] == 'video') {
          
toggleClass(ge('results_wrap'), 'no_query', !params['c[q]']);
        } else {
          
removeClass(ge('results_wrap'), 'no_query');
        }
      },
      
onFail: function () {
        
removeClass(ge('search_query_wrap'), 'loading');
        return 
true;
      },
      
showProgress: function () {
        
addClass(ge('filter_'+cur.section), 'loading');
        
cur.isSearchLoading true;
      },
      
hideProgress: function () {
        
removeClass(ge('filter_'+cur.section), 'loading');
        
cur.isSearchLoading false;
        
cur.loadingMedia false;
      }
    });
  },
  
setSection: function (newSection) {
    if (
newSection == cur.section || newSection == 'auto' || !newSection) return;
    if (
ge('filter_' cur.section)) {
      
removeClass(ge('filter_' cur.section), 'cur_section');
      
removeClass(ge('filter_' cur.section), 'loading');
    }
    
cur.section newSection;
    
addClass(ge('filter_' cur.section), 'cur_section');
  },
  
applyOptions: function(optionschangeSection) {
    
iSearch.initSelect();
    
searcher.setSection(options.section);
    if (
options.reply_names) {
      
extend(cur.options.reply_namesoptions.reply_names);
      
delete options.reply_names;
    }
    
extend(curoptions);
    if (
options.summary) {
      
ge('summary').innerHTML options.summary;
    }
    if (
options.auto_rows !== undefined) {
      
ge('search_auto_rows').innerHTML options.auto_rows || '';
    }
    
clearTimeout(cur.setLocTO);
    if (
options.loc) {
      if (
changeSection) {
        try {
        
nav.setLoc(options.loc);
        } catch (
e) {debugLog(e);}
      } else {
        
cur.setLocTO setTimeout(function () {
          if (
nav.objLoc[0] != 'search' && nav.objLoc[0] != 'communities' && nav.objLoc[0] != 'brands' && !nav.objLoc[0].match(/^people($|/)/)) return;
          try {
          
nav.setLoc(options.loc);
          } catch (
e) {debugLog(e);}
        }, 
1000);
      }
    }
    if (
options.htitle) {
      
document.title replaceEntities(stripHTML(options.htitle));
    }
    if (
options.!== undefined) {
      
val('search_query'replaceEntities(stripHTML(options.q)) || '');
      var 
reset_el ge('search_query_reset');
      
setStyle('search_query_reset', {opacity0.5});
      
toggleClass(reset_el'shown'options.q);
    }
    if (
options.tabs && ge('search_section_tabs')) {
      
ge('search_section_tabs').innerHTML options.tabs;
    }
    if (
options.script) {
      eval(
options.script);
    }
    var 
res ge('results'), sc ge('search_content'), lighted hasClass(sc'highlight');
    
res.className 'results ' cur.section '_results' + (cur.section == 'statuses' || cur.section == 'auto' ' wall_module wide_wall_module' '');
    if (
lightedaddClass(sc'highlight')
    var 
more_results ge('search_more_results');
    if (
cur.has_more || more_results && more_results.firstChild) {
      
hide('seach_pages');
      
show('show_more_link');
    } else {
      
hide('show_more_link')
    }
  },
  
toggleFilter: function (objtarget) {
    if (
hasClass(obj'filter_shut') || !isVisible(target)) {
     
addClass(obj'filter_open');
     
removeClass(obj'filter_shut');
     var 
extraH slideDown(target200).to.height;
     
searcher.checkFiltersHeight(extraH);
    } else {
     
slideUp(target200, function(){
       
addClass(obj'filter_shut');
       
removeClass(obj'filter_open');
     });
    }
  },
  
switchFilter: function(paramvalueelevent) {
    if (
checkEvent(event)) return false;
    if (
el && hasClass(el'active')) return;
    if (
ge('c['+param+']')) ge('c['+param+']').value value;
    if (
cur.section == 'video' && param == 'quality') {
      if (
ge('c[hd]')) ge('c[hd]').value value 1;
    }
    if (
el) {
      
each(geByClass(paramel.parentNode), function(iv) {
        if (
hasClass(v'active')) removeClass(v'active');
      });
      
addClass(el'active');
    }
    
searcher.updResults();
  },
  
showMore: function() {
    var 
show_more_link ge('show_more_link'), nextRows ge('search_more_results');
    if (!
show_more_link || !isVisible(show_more_link) || cur.isSearchLoading) {
      if (
nextRows) {
        
nextRows.id '';
      }
      return;
    }
    if (
nextRows) {
      
nextRows.id '';
    }
    if (!
cur.has_more) {
      
hide('show_more_link');
      return;
    }
    
cur.disableAutoMore false;
    
cur.isSearchLoading true;
    
hide('show_more');
    
show('show_more_progress');
    var 
params extend(searcher.getSectionParams(), {offsetcur.offset});
    
params.edit nav.objLoc.edit;
    
params.sign nav.objLoc.sign;
    
params.all nav.objLoc.all;
    
ajax.post('al_search.php'params, {
      
onDone: function (optionsrows) {
        
cur.isSearchLoading false;
        if (
rows) {
          if (
ge('no_results')) re('no_results');
          
ge('results').insertBefore(ce('div', {innerHTMLrowsid'search_more_results'}), show_more_link);
        }
        
show('show_more');
        
hide('show_more_progress');
        
searcher.applyOptions(options);
        
searcher.scrollCheck();
      },
      
showProgress: function () {
      },
      
hideProgress: function () {
      },
      
cache: (params['c[section]'] == 'audio' && !params['c[q]']) ? 1
    
});
  },
  
close: function () {
    return 
nav.go(cur.search_return_to, {}, {backtrue});
  },
  
checkFiltersHeight: function(extraH) {
    if (!
ge('filters_td')) return false;
    var 
st scrollGetY(),
        
filt ge('filters_td'), filtPos getXY(filt)[1], filtY getSize(filt)[1],
        
sf ge('search_filters'), sfY getSize(sf)[1],
        
lastPos cur.filterLastPos || 0filtPad filtY filtPos sfY lastPos st;
    if  (
hasClass(sf'fixed') && filtPad extraH) {
      
animate(sf, {top: (lastPos extraH filtPad) + 'px'}, 200, function() {
        
cur.filterLastPos += filtPad extraH;
      })
    }
  },
  
handleFilterPos: function() {
    if (!
ge('filters_td')) return false;
    var 
st scrollGetY(), wh window.lastWindowHeight || 0pos 0,
        
filt ge('filters_td'), filtPos getXY(filt)[1], filtY getSize(filt)[1],
        
sf ge('search_filters'), sfPos getXY(sf)[1], sfY getSize(sf)[1],
        
bottomPad Math.max(0st wh filtY filtPos),
        
tooBig = (filtY sfY 20),
        
lastPos cur.filterLastPos || 0lastSt cur.lastSt || 0;
    if  (
st filtPos && !tooBig) {
      
addClass(sf'fixed');
      
pos = (wh sfY) ? Math.min(0wh sfY bottomPad) : Math.max(Math.min(0lastPos lastSt st), wh sfY bottomPad);
      if (
cur.onSearchPosChange) {
        
cur.onSearchPosChange(truepos);
      }
    } else {
      
removeClass(sf'fixed');
      
pos 0;
      if (
cur.onSearchPosChange) {
        
cur.onSearchPosChange(falsepos);
      }
    }
    
cur.filterLastPos pos;
    
cur.lastSt st;
    
setStyle(sf, {toppos 'px'});
  },
  
subscribe: function(eloidhashsub) {
    var 
addressparams;
    if (
sub) {
      
address 'al_feed.php';
      
params = {act'subscr'oidoidhashhash};
    } else {
      
address 'al_fans.php';
      
params = {act'unsub'oidoidhashhashfrom'search'};
    }
    
ajax.post(addressparams, {
      
onDone: function() {
        
toggle('search_sub' oid, !sub);
        
toggle('search_unsub' oid, !!sub);
      },
      
showProgress: function() {
        if (
sub)  {
          
lockButton(el);
        } else {
          
hide(el);
          
show(domNS(el) || domPN(el).appendChild(ce('span', {className'progress_inline fans_idol_unsub_p'})));
        }
      },
      
hideProgress: function() {
        if (
sub) {
          
unlockButton(el);
        } else {
          
show(el);
          
re(domNS(el));
        }
      }
    });
  },

  
onResize: function() {
    var 
sf ge('search_filters');
    if (
isVisible(sf) && hasClass(sf'fixed')) {
      
removeClass(sf'fixed');
      
setTimeout(addClass.pbind(sf'fixed'), 0);
    }
    
searcher.scrollCheck();
  },

  
// scrollTop check
  
scrollCheck: function () {
    
searcher.handleFilterPos();
    if (
browser.mobile || cur.isSearchLoading || cur.disableAutoMore) return;
    var 
el ge('show_more_link')
    if (!
isVisible(el)) {
      var 
nextRows ge('search_more_results');
      if (
nextRows) {
        
nextRows.id '';
      }
      return;
    }

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

    if (
st ch 200 el.offsetTop) {
      
searcher.showMore();
    }
  },

  
init: function (options) {
    
extend(cur, {
      
oidoptions.user_id,
      
module'search',
      
bigphCache: {},
      
bigphShown: {}
      
// Decomment
      // disableAutoMore: true,
    
});
    var 
hist_len globalHistory.length;
    if (
hist_len && globalHistory[hist_len 1] && globalHistory[hist_len 1].loc.indexOf('search')) {
      
cur.search_return_to globalHistory[hist_len 1].loc;
    } else {
      
cur.search_return_to '/';
    }
    
hide('header');
    var 
el ge('search_query'), reset_el ge('search_query_reset');
    
placeholderSetup(el, {backtrue});
    
iSearch.destroy();
    if (
vk.id) {
      
iSearch.init(el);
    }
    
addEvent(el'focus', function() {addClass(ge('search_content'), 'highlight');});
    
addEvent(el'blur', function() {removeClass(ge('search_content'), 'highlight');});
    if (
browser.opera_mobile) {
      
addEvent(el'blur', function (e) {
        if (
val(el)) {
          
searcher.updResults(true);
          
clearTimeout(cur.requestTimeout);
          return 
cancelEvent(e);
        }
      });
    } else {
      
addEvent(el'keyup'searcher.onKey);
      
addEvent(el'keydown', function (e) {
        if (
val(el) && e.keyCode == KEY.RETURN && (!iSearch.select || iSearch.select.active 0)) {
          
searcher.updResults(true);
          
el.blur();
          
clearTimeout(cur.requestTimeout);
          return 
cancelEvent(e);
        }
      });
    }
    
el.focus();
    
toggleClass(reset_el'shown'val(el));
    
addEvent(reset_el'mouseover mouseout click', function (e) {
      if (
e.type != 'click') {
        if (
isVisible(reset_el))
          
animate(reset_el, {opacitye.type == 'mouseover' 0.5}, 100);
        return;
      }
      
val(el'');
      
el.focus();
      
triggerEvent(el'keyup');
      
searcher.updResults();
    });

    
cur.nav.push(function(changedoldn) {
      if (
changed[0] !== undefined) {
        
clearTimeout(cur.setLocTO);
        if (
nav.strLoc != cur.loc && cur.loc) {
          
hab.setLoc(cur.loc);
        }
        return;
      }
      var 
params = clone(n);
      
delete(params[0]);
      
searcher.setSection(params['c[section]'] || params.section || 'quick');
      
searcher.sendSearchReq(paramstrue);
      return 
false;
    });

    if (!
cur.options) {
      
cur.options = {reply_names: {}};
    }
    
extend(cur.optionsoptions);
    
searcher.applyOptions(options);

    
// Scroll check routine
    
searcher.scrollnode browser.msie6 pageNode window;
    
window.scrollTop bodyNode.scrollTop pageNode.scrollTop htmlNode.scrollTop 0;
    
addEvent(searcher.scrollnode'scroll'searcher.scrollCheck);
    
addEvent(window'resize'searcher.onResize);
    
setTimeout(searcher.scrollCheck50);

    var 
_a window.audioPlayer;
    if (
_a && _a.showCurrentTrack_a.showCurrentTrack();

    
cur._back = {
      
textgetLang('search_back_to'),
      
show: [function () {
        
hide('header');
        var 
hist_len globalHistory.length;
        if (
hist_len && globalHistory[hist_len 1] && globalHistory[hist_len 1].loc.indexOf('search')) {
          
cur.search_return_to globalHistory[hist_len 1].loc;
        }
        
addEvent(searcher.scrollnode'scroll'searcher.scrollCheck);
        
addEvent(window'resize'searcher.onResize);
        
iSearch.destroy();
        if (
vk.id) {
          
iSearch.init(ge('search_query'));
        }
      }],
      
hide: [function () {
        
removeEvent(searcher.scrollnode'scroll'searcher.scrollCheck);
        
removeEvent(window'resize'searcher.onResize);
        
iSearch.destroy();
        for (var 
i in cur.bigphShown) {
          
animate(cur.bigphShown[i], {marginTop100}, 0);
        }
        
cur.bigphShown = {};
      }]
    }
  },

  
bigphOver: function(objuid) {
    if (!
window.lang || !lang.global_photo_full_size) return;
    var 
obj.firstChildch cur.bigphCache[uid];
    if (
o.tagName != 'A' || o.className != 'search_bigph') {
      (
obj.insertBefore(ce('a', {className'search_bigph'hrefch && ch._id ? ('/photo' ch._id '?all=1') : ('/albums' uid), innerHTML'<span class="search_bigph_label">' getLang('global_photo_full_size') + '</span>'}), obj.firstChild)).onclick Searcher.bigphClick.pbind(uid);
      
o._uid uid;
    }

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

    if (
ch === undefined) {
      
cur.bigphCache[uid] = 'load';
      
ajax.post('al_photos.php', {act'fast_get_photo'oiduid}, {onDone: function(res) {
        if (!
res) {
          
obj.onmouseover = function() {};
          
re(obj.firstChild);
          return;
        }
        var 
sh = (cur.bigphCache[uid] == 'show');
        
cur.bigphCache[uid] = res;
        
o.href '/photo' res._id '?all=1';
        if (
shSearcher.bigphClick(uid);
      }, 
onFail: function() {
        
obj.onmouseover = function() {};
        
re(obj.firstChild);
        return 
true;
      }});
    }

    if (!
obj.onmouseoutobj.onmouseout Searcher.bigphOut.pbind(obj);
  },
  
bigphOut: function(obj) {
    var 
obj.firstChild;
    if (!
|| o.tagName != 'A' || o.className != 'search_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];
    if (
ch == 'load' || ch == 'show') {
      
cur.bigphCache[uid] = 'show';
      return 
cancelEvent(ev);
    }
    if (!
ch) return;
    return 
showPhoto(ch._id'album' uid '_0/rev'extend({jumpTo: {z'albums' uid}}, ch), ev);
  }

}, 
Searcher searcher;

if (
window.iSearch === undefined) {
iSearch = {
  
init: function (inputoptions) {
    if (
this.inited) {
      return;
    }
    var 
self this;
    
this.inited true;
    
this.input input;
    
this.cont input.parentNode.parentNode;
    var 
resultContainer ce('div', {className'results_container'innerHTML'<div class="result_list"></div><div class="result_list_shadow"><div class="shadow1"></div><div class="shadow2"></div></div>'});
    
this.cont.appendChild(resultContainer);
    
this.resultList geByClass('result_list'resultContainer)[0];
    
this.resultListShadow geByClass('result_list_shadow'resultContainer)[0];
    
hide(this.resultListthis.resultListShadow);

    if (
browser.chromethis.resultList.style.opacity 1;
    else if (!
browser.safarisetStyle(this.resultListShadow'top'browser.mozilla : (browser.msie && browser.version 8) ? : -1);
    
this.resultList.style.width this.resultListShadow.style.width resultContainer.style.width hasClass(ge('search_query_wrap'), 'wide') ? '512px' '451px';

    
this.initSelect();

    
addEvent(input'keyup click mouseup'self.inputUpHandler);
    
addEvent(document'click'self.documentClick);
    
addEvent(input'keypress keydown'self.inputDownHandler);

    if (
ge('top_search')) ge('top_search').onclick = function (e) {
      if (
hab.getLoc().indexOf('search')) {
        return 
nav.go('search'e, {searchtruenoframetrue});
      } else {
        if (
window.searchersearcher.close();
        return 
false;
      }
    };
  },
  
inputUpHandler: function(e) {
    var 
self iSearch;
    if (!
self.select) return;
    if (
self.select.isVisible() && self.select.active > -1) {
      if (
inArray(e.keyCode, [KEY.UPKEY.DOWNKEY.PAGEUPKEY.PAGEDOWNKEY.RETURN])) return cancelEvent(e);
    }
    
clearTimeout(cur.requestTimeout);
    var 
term val(self.input);
    
self.currentTerm term;
    var 
section cur.section;
    if (!
term) {
      
self.select.hide();
      return;
    }
    
cur.requestTimeout setTimeout(function() {
      
cur.setISearch true;
      
ajax.post('/hints.php?act=a_gsearch_hints', {qtermsectionsection}, {
        
onDone: function (data) {
          if (
self.currentTerm == term && cur.setISearchself.showSelectList(termdata);
          
delete cur.setISearch;
        }, 
cache1
      
});
    }, 
300);
  },
  
documentClick: function() {
    var 
self iSearch;
    if (!
self.select) return;
    
self.select.hide();
  },
  
inputDownHandler: function(e) {
    var 
self iSearch;
    if (!
self.select) return;
    if (!
self.select || self.select.active 0) return true;

    if (
e.keyCode == KEY.RETURN || e.keyCode == 10) {
      if (
self.select && self.select.isVisible()) {
        
triggerEvent(documente.typee);
        return 
cancelEvent(e);
      }
    } else if (
e.keyCode == KEY.SPACE) {
      var 
el self.select.list.childNodes[self.select.active], id el el.getAttribute('val') : ''item;
      
each(self.lastItems, function () {
        if (
this[0] == id) {
          
item this;
        }
      });
      if (!
item) return;
      
val(inputitem[3] + ' ');
      
focusAtEnd(input);
      return 
cancelEvent(e);
    }
    return 
true;
  },

  
initSelect: function() {
    if (
this.select || !window.Select || !window._ui) return;
    if (!
this.resultList || !this.resultListShadow) {
      return;
    }
    
this.guid _ui.reg(this);
    
this.select = new Select(this.resultListthis.resultListShadow, {
      
selectFirstfalse,
      
onItemSelectthis.onItemSelect.bind(this),
      
onShow_ui.sel.pbind(this.guid),
      
onHide_ui.sel.pbind(false),
      
cycletrue
    
});
    
this.select.hide();
  },
  
showSelectList: function (termitems) {
    var 
self this;
    if (!
this.select) return;
    
items isArray(items) && items.length items : [];
    if (!
items.length) {
      
self.select.hide();
      return;
    }
    
this.select.clear();
    
this.lastItems items;
    
this.select.content(items);
    
this.select.show();
  },
  
onItemSelect: function(id) {
    if (!
this.select) return;
    
this.select.hide();
    var 
item;
    
each(this.lastItems, function () {
      if (
this[0] == id) {
        
item this;
      }
    });
    if (!
item) return;
    var 
el ce('div', {innerHTMLitem[3]});
    
val(this.inputel.innerText || el.textContent);
    
this.input.blur();
    
searcher.updResults();
  },
  
onEvent: function(e) {
    if (
e.type == (browser.opera || browser.mozilla 'keypress' 'keydown')) {
      
this.select.handleKeyEvent(e);
    }
  },
  
destroy: function (prevCur) {
    
cleanElems(this.resultListthis.resultListShadow);
    
clearTimeout(prevCur prevCur.requestTimeout cur.requestTimeout);
    
removeEvent(this.input'keyup click mouseup'this.inputUpHandler);
    
removeEvent(document'click'this.documentClick);
    
removeEvent(this.input'keypress keydown'this.inputDownHandler);
    if (
this.select) {
      
this.select.destroy();
      
delete this.select;
    }
    if (
this.resultList) {
      
re(this.resultList.parentNode);
    }
    
delete this.lastItems;
    
this.inited false;
  }
}
}

// Extra functions for sections
window.searchActions = {
  
peopleMessage: function (mid) {
    
showWriteMessageBox(window.event || {}, mid);
  },
  
peopleAction: function (linkurlparams) {
    
ajax.post(urlparams, {onDone: function(text) {
      
link.parentNode.replaceChild(ce('span', {innerHTMLtext}).firstChildlink);
    }});
  },
  
groupAction: function(linkactiongidmidhash) {
    
ajax.post('al_groups.php', {
      
act'member_action',
      
actionaction,
      
gidgid,
      
midmid,
      
hashhash,
      
context'search'
    
}, {onDone: function(text) {
      
link.parentNode.replaceChild(ce('span', {innerHTMLtext}).firstChildlink);
      var 
loc _tbLink.loc;
      if (
locglobalHistoryDestroy(loc);
    }});
  },
  
groupAddOfficer: function(linkparams) {
      
stManager.add('groups_edit.css');
    
ajax.post('al_groups.php', {act'assign_box'name'id' params.midgidparams.gid}, {onDone: function(titlehtmlmidhashbtn) {
      
cur.doAddOfficer = function() {
        
ajax.post('al_groups.php', {
          
act'assign',
          
gidparams.gid,
          
midmid,
          
hashhash,
          
adminisChecked('group_p_is_admin'),
          
positionge('group_p_admin_position').value,
          
context'search'
        
}, {progresscur.addOfficerBox.progress});
      };
      
cur.addOfficerBox showFastBox(titlehtmlbtncur.doAddOfficergetLang('global_cancel'));
      
cur.addOfficerBox.setOptions({width430});
      
elfocus('group_p_admin_position');
    }});
  },
  
animateAdded: function(elspeed) {
    var 
se('<div class="audio_add_wrap anim fl_r"><div class="audio_add_anim_wrap"><div class="audio_add_anim clear_fix"><div class="audio_add fl_l"></div><div class="audio_add done fl_l"></div></div></div></div>');
    
el.parentNode.replaceChild(cel);
    
el c;
    
setTimeout(function() {
      var 
anim geByClass1('audio_add_anim'el), add anim.firstChildadded add.nextSibling;
      
cssAnim(anim, {left'-15px'}, {durationspeed}, function() {
        
setStyle(anim.parentNode, {width'15px'});
        
setStyle(anim.parentNode.parentNode, {paddingLeft'2px'});
        
setStyle(anim, {left'-13px'});
      });
      
cssAnim(add, {opacity0}, {durationspeed});
      
cssAnim(added, {opacity1}, {durationspeed});
    }, 
0);
    return 
el;
  },
  
addAudio: function (linkparams) {
    if (
link.ttlink.tt.hide();
    
link searchActions.animateAdded(link200);
    
ajax.post('al_audio.php'params, {
      
onDone: function() {
        if (!
cur.addedIdscur.addedIds = {};
        
cur.addedIds[params.oid+'_'+params.aid] = 1;
        if (
window.audioPlayer) {
          var 
cur_aids currentAudioId().split('_');
          if (
cur_aids[0] == params.oid && cur_aids[1] == params.aid) {
            
audioPlayer.showCurrentAdded();
          }
        }
      }
    });
  },
  
addVideo: function (linkparams) {
    
ajax.post('al_video.php'params, {onDone: function(label) {
      var 
label ce('span', {innerHTMLlabelclassName'added'});
      
link.parentNode.replaceChild(labellink);
    }});
  },
  
addApp: function (linkparams) {
    
ajax.post('al_apps.php?act=join'params, {onDone: function(loclabel) {
      
location.href loc;
      return;
      var 
label ce('span', {innerHTMLlabelclassName'added'});
      
link.parentNode.replaceChild(labellink);
    }});
  },
  
showLyrics: function(audio_idlyrics_idtop) {
    var 
lEl ge('lyrics'+audio_id);
    if (!
lEl) {
      
lEl ce('div', {id'lyrics' audio_idclassName'lyrics_wrap'innerHTML'<div class="loading"></div>'});
      
ge('audio' audio_id).appendChild(lEl);
      
ajax.post('/al_audio.php', {act'get_lyrics'lidlyrics_idaidaudio_idtoptop}, {onDone: function(lyrics_text) {
        
lEl.innerHTML '<div class="lyrics ta_l">' lyrics_text '</div>';
      }});
    } else if (
isVisible(lEl)) {
      
hide(lEl);
    } else {
      
show(lEl);
    }
  },
  
toggleBanInGroup: function(elmidgidhash) {
    
showBox('al_groups.php', {act'bl_edit'name'id' midgidgid}, {stat: ['page.css''ui_controls.js''ui_controls.css'], dark1});
  },
  
addCommunity: function() {
    
showBox('al_search.php', {act'suggest_community'}, {
      
params: {
        
width380,
        
bodyStyle'padding: 20px;'
      
}
    });
  },
  
uShowMessage: function(txt) {
    
showDoneBox(txt);
  },
  
uEditAdmin: function(u) {
    
showBox('groupsedit.php', {
      
act'edit_admin'idnav.objLoc.gidaddrufrom'search'
    
}, {stat'groups_edit.css'});
  },
  
uRemoveAdmin: function(u) {
    return 
showBox('groupsedit.php', {
      
act'edit_admin'idnav.objLoc.gidaddrufrom'search'remove1
    
}, {stat'groups_edit.css'});
  },
  
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;
        
searchActions.uDoneAdmin(midhash);
      }, 
getLang('global_back'));
    }
    
ajax.post('groupsedit.php', {
      
act'done_admin',
      
idnav.objLoc.gid,
      
addrmid,
      
levellevel,
      
contactisChecked('gedit_admbox_check'),
      
positionval('gedit_admbox_position'),
      
emailval('gedit_admbox_email'),
      
phoneval('gedit_admbox_phone'),
      
hashhash,
      
from'search'
    
}, {onDone: function(msgactslev) {
      
globalHistoryDestroy(_tbLink.loc);
      var 
tabs = ['members''unsure''admins'], i;

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

      
val(ge('sgedit_acts' mid), acts);
      
val(ge('sgedit_lev' mid), lev);
      
toggle('sgedit_lev' mid, !!lev);

      if (
remsearchActions.uAction(falserem[0], rem[1], rem[2]);
    }, 
showProgresscurBox().showProgresshideProgresscurBox().hideProgress});
  },
  
uAction: function(elmidhashact) {
    if (!
curBox() && ((domFC(el) || {}).className == 'progress_inline')) return;
    var 
tab cur.tab;
    
ajax.post('groupsedit.php', {
      
act'user_action'idnav.objLoc.gidaddrmidhashhashactionactfrom'search'
    
}, {
      
onDone: function(actslev) {
        
globalHistoryDestroy(_tbLink.loc);
        if (
curBox()) curBox().hide();
        if (
lev || lev === '') {
          
val(ge('sgedit_acts' mid), acts);
          
val(ge('sgedit_lev' mid), lev);
          
toggle('sgedit_lev' mid, !!lev);
        } else if (
acts) {
          
searchActions.uShowMessage(acts);
        } else {
          
searchActions.uRemoveAdmin(mid).uRemove = [midhashact];
        }
      },
      
showProgress: function() {
        if (
curBox()) {
          
curBox().showProgress();
        } else {
          if (!
el._sel._s val(el);
          
val(el'<span class="progress_inline"></span>');
        }
      },
      
hideProgress: function() {
        if (
curBox()) {
          
curBox().hideProgress();
        } else {
          if (
el._s) {
            
val(elel._s);
            
el._s false;
          }
        }
      }
    });
  }
};

function 
legacyPlaceholderSetup(id) {
  var 
el ge(id);
  if (!
el) return;
  if (
browser.opera && browser.mobile) {
    
el.getValue = function(){return el.value;}
    
el.setValue = function(v){el.value v;}
    return;
  }
  var 
ph el.getAttribute("placeholder");
  if (!
el['phevents'] && ph && ph != "") {
    
el['active'] = 1;
    if ((!
el.value || el.value == ph) && !el.focused) {
      
el.style.color '#777';
      
el.value ph;
      
el['active'] = 0;
    }
    
addEvent(el'focus', function(){
      if (
el['active']) return;
      
el['active'] = 1;
      
el.value '';
      
el.style.color '#000';
    });
    
addEvent(el'blur', function(){
      if( !
el['active'] || !ph || el.value != "" ) return;
      
el['active'] = 0;
      
el.style.color '#777';
      
el.value ph;
    });
    
el.getValue = function() {
      return (
el['active'] || el.value != ph) ? el.value '';
    }
    
el.setValue = function(val) {
      
el.active val 0;
      
el.value val val ph;
      
el.style.color val '#000' '#777';
    }
    
el['phevents'] = 1;
  }
}

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