Вход Регистрация
Файл: js/al/fansbox.js
Строк: 654
<?php
var FansBox = {
  
init: function(boxopts) {
    if (
cur.lSTLre(cur.lSTL);
    
extend(cur, {
      
fnbxOffsetscur.fnbxOffsets || {},
      
fnbxPhCachecur.fnbxPhCache || {},
      
fnbxPhShowncur.fnbxPhShown || {},
      
fnbxIdolsListcur.fnbxIdolsList || {},
      
fnbxIdolsCachecur.fnbxIdolsCache || {},
      
fnbxIdolsIndexcur.fnbxIdolsIndex || {},
      
fnbxIdolsProcessedcur.fnbxIdolsProcessed || {},
      
fnbxIdolsQuerycur.fnbxIdolsQuery || '',

      
fnbxAutoloadtrue,
      
fnbxWasScrollfalse,
      
fnbxHashopts.hash,
      
fnbxOwnerIdopts.ownerId,
      
fnbxIdbox.tbId,
      
fnbxSearchLinkopts.searchLink || '',
      
fnbxPageopts.address || 'al_fans.php',

      
lSTLboxLayerWrap.appendChild(ce('div', {id'layer_stl'innerHTML'<div id="layer_stl_bg" class="fixed"></div><div id="layer_stl_cl"></div><nobr id="layer_stl_text" class="fixed">' getLang('global_to_top') + '</nobr>'elbox.bodyNodeonclickcancelEventonmousedownFansBox.lSTLDownscFansBox.onScroll})),
      
lSTLShown0,
      
lSTLWas0,
      
lSTLWasSet0
    
});
    
cur.fnbxOffsets[opts.tab] = opts.offset;

    
ajax.preload(cur.fnbxPage, {
      
actcur.fnbxAct || 'box',
      
tabopts.tab,
      
oidopts.ownerId,
      
offsetopts.offset
    
}, opts.preload);

    
box.setOptions({width620bodyStyle'margin-top: 50px'onShow: function() {
      if (
cur.fnbxWasScroll) {
        
boxLayerWrap.scrollTop cur.fnbxWasScroll;
        
cur.fnbxWasScroll false;
      }
      
addEvent(boxLayerWrap'scroll'FansBox.onScroll);
      
setTimeout(FansBox.onScroll0);
    }, 
onHide: function() {
      
removeEvent(boxLayerWrap'scroll'FansBox.onScroll);
      
hide(cur.lSTL);
      
cur.lSTLShown 0;
    }});

    if (!
box.tbDeinit) {
      
extend(box, {
        
tbDeinit: function() {
          
cur.fnbxOwnerId cur.fnbxOffsets cur.fnbxPhShown false;
          
re(cur.lSTL);
          
removeEvent(boxLayerWrap'scroll'FansBox.onScroll);
        },
        
tbcShowProgress: function() {
          
hide('fans_idol_search');
          if (
cur.fnbxSearchLinkhide(cur.fnbxSearchLink);
        },
        
tbcOnLoad: function() {
          if (
curBox().tbVis == 'idols') {
            if (
ge('fans_rowsidols') && ge('fans_rowsidols').childNodes.length 10) {
              
show('fans_idol_search');
              var 
oid cur.fnbxOwnerId;
              if (!
cur.fnbxIdolsList[oid]) {
                
cur.fnbxIdolsList[oid] = 'loading';
                
ajax.post(cur.fnbxPage, {act'load_idols'oidoid}, {onDone: function(result) {
                  if (!
cur.fnbxIdolsList) return;

                  var 
rf = (cur.fnbxIdolsList[oid] == 'update'), upd rf || (cur.fnbxIdolsList[oid] == 'more');
                  
cur.fnbxIdolsCache[oid] = {all: []};
                  var 
processed cur.fnbxIdolsProcessed;
                  for (var 
0count result.lengthcount; ++i) {
                    if (
processed[result[i][0]] !== undefined) {
                      
result[i][1] = processed[result[i][0]];
                    }
                    
cur.fnbxIdolsCache[oid].all.push(i);
                  }
                  
cur.fnbxIdolsList[oid] = result;

                  
cur.fnbxIdolsIndex[oid] = new vkIndexer(cur.fnbxIdolsCache[oid].all, function(obj) {
                    return 
cur.fnbxIdolsList[oid][obj][2];
                  }, 
upd ? function() {
                    if (
cur.fnbxOwnerId == oid && curBox().tbId == cur.fnbxId && curBox().tbVis == 'idols') {
                      
FansBox.moreIdols(rf);
                    }
                  } : function() {});
                }});
              } else if (
cur.fnbxIdolsQuery) {
                
FansBox.moreIdols(true);
              }
            }
          } else {
            
hide('fans_idol_search');
            if (
cur.fnbxSearchLinkshow(cur.fnbxSearchLink);
          }
        }
      });
      
addEvent(boxLayerWrap'scroll'FansBox.onScroll);
    }

    
placeholderSetup('fans_idol_search_inp', {backtrue});
    
box.tbcOnLoad();

    if (
cur.fnbxLoadedcur.fnbxLoaded();
    
onBodyResize();
    
FansBox.onScroll();
  },
  
getHighlight: function(q) {
    var 
indxr cur.fnbxIdolsIndex[cur.fnbxOwnerId], 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="fans_row_highlight">$1</span>'
    
}
  },
  
moreIdols: function(force) {
    var 
oid cur.fnbxOwnerId, list = cur.fnbxIdolsList[oid];
    if (
curBox().tbId != cur.fnbxId) return;

    if (!list || list == 
'loading' || list == 'update' || list == 'more') {
      if (list == 
'loading'cur.fnbxIdolsList[oid] = 'more';
      return;
    }

    var list = 
cur.fnbxIdolsCache[oid].alltrim(val('fans_idol_search_inp'));
    
toggle('fans_reset_search', !!q);

    if (!
isVisible('fans_idol_search')) {
      
'';
    }

    var 
refresh = (force || != cur.fnbxIdolsQuery), highlight false;
    
cur.fnbxIdolsQuery q;
    if (
q) {
      list = 
cur.fnbxIdolsCache[oid]['_' q];
      if (list === 
undefined) {
        var 
tmp cur.fnbxIdolsIndex[oid].search(q), mp = {};
        list = [];
        for (var 
0tmp.lengthl; ++i) {
          if (!
mp[tmp[i]]) {
            
mp[tmp[i]] = true;
            list.
push(tmp[i]);
          }
        }
        list.
sort(function(a,b){return a-b;});
        
cur.fnbxIdolsCache[oid]['_' q] = list;
      }
      
highlight FansBox.getHighlight(q);
    }

    var 
len = list.lengthcont ge('fans_rowsidols'), more ge('fans_more_linkidols');
    if (!
len) {
      
hide(more);
      
val(contFansBox.genIdolEmpty(val('fans_idol_search_inp')));
      return;
    }

    var 
start refresh cont.childNodes.lengthend Math.min(lenstart 32), html = [];
    for (var 
startend; ++i) {
      var 
row cur.fnbxIdolsList[oid][list[i]], name row[2];
      if (!
row) continue;
      
row FansBox.genIdolRow(rowhighlight name.replace(highlight.rehighlight.val) : name);
      if (
refresh) {
        
html.push(row);
      } else {
        
cont.appendChild(se(row));
      }
    }
    if (
refresh) {
      
val(conthtml.join(''));
      
curBox().tbToTop();
    }
    
toggle(moreend len);
  },
  
genIdolEmpty: function(q) {
    var 
lnk '<a href="/search?c[section]=groups&c[q]=' encodeURIComponent(q) + '">';
    var 
text trim(q) ? (getLang('fans_idols_not_found') + '<br><br>' getLang('groups_you_can_find').replace('{term}'lnk clean(q) + '</a>').replace('{link}'lnk).replace('{/link}''</a>')) : getLang('fans_no_idols');
    return 
'<div class="fans_no_rows">' text '</div>';
  },
  
genIdolRow: function(rowname) {
    var 
oid row[0], evs row[6] ? ' onmouseover="FansBox.bigphOver(this, ' oid ')"' ''href '/' + (row[4] ? row[4] : (oid 'id' oid 'public' + (-oid))), photo row[3], size getLang('public_N_followers'row[5], true), non ' style="display: none"'status row[7].length row[7] : getLang(oid 'profile_own_profile' 'groups_type_public'), btns vk.id && vk.id != oid;
    return [
'
<div class="fans_idol_row inl_bl">
  <div class="fans_idolph_wrap fl_l"'
evs'>
    <a class="fans_idol_ph" href="'
href'">
      <img class="fans_idol_img" src="'
photo'" />
    </a>
  </div>
  <div class="fans_idol_info fl_l">
    <div class="fans_idol_name"><a class="fans_idol_lnk" href="'
href'">'name'</a></div>
    <div class="fans_idol_status">'
status'</div><div class="fans_idol_size">'size'</div>
    <div id="fans_idol_sub'
oid'" class="button_blue fans_idol_sub"', ((row[1] || !btns) ? non ''), '>
      <button onclick="FansBox.subscribe(this, '
oid')">'getLang('public_subscribe'), '</button>
    </div>
    <div id="fans_idol_unsub'
oid'" class="fans_idol_unsub"', (row[1] && btns '' non), '>
      <a onclick="FansBox.unsubscribe(this, '
oid')">'getLang('public_unsubscribe'), '</a>
    </div>
  </div>
</div>'
].join('');
  },

  
resetSearch: function() {
    
val('fans_idol_search_inp''');
    
FansBox.moreIdols(true);
    
setTimeout(elfocus.pbind('fans_idol_search_inp'), 0);
  },
  
more: function() {
    var 
curBox().tbCur;
    if (
== 'idols') return FansBox.moreIdols();
    if (
isVisible('fans_more_prg' t)) return;
    
ajax.post(cur.fnbxPage, {actcur.fnbxAct || 'box'tabtoidcur.fnbxOwnerIdoffsetcur.fnbxOffsets[t]}, {
      
onDone: function(rowsnewOffsetneedMore) {
        var 
el ce('div', {innerHTMLrows}), cnt ge('fans_rows' t);
        if (!
cnt) return;

        for (var 
domFC(el); edomFC(el)) {
          
cnt.appendChild(e);
        }
        
cur.fnbxOffsets[t] = newOffset;
        if (
needMore) {
          
FansBox.preload();
        } else {
          
hide('fans_more_link' t);
        }
      }, 
showProgress: function() {
        
hide('fans_more_link' t);
        
show('fans_more_prg' t);
      }, 
hideProgress: function() {
        
show('fans_more_link' t);
        
hide('fans_more_prg' t);
      }, 
cache1
    
});
    
cur.fnbxAutoload true;
  },
  
preload: function() {
    var 
curBox().tbCur;
    
ajax.post(cur.fnbxPage, {actcur.fnbxAct || 'box'tabtoidcur.fnbxOwnerIdoffsetcur.fnbxOffsets[t]}, {
      
cache1
    
});
  },
  
markSubsc: function(oidv) {
    
cur.fnbxIdolsProcessed[oid] = v;
    var 
lst cur.fnbxIdolsList[cur.fnbxOwnerId];
    if (
lst && lst.length) {
      for (var 
0lst.lengthl; ++i) {
        if (
lst[i][0] == oid) {
          
cur.fnbxIdolsList[cur.fnbxOwnerId][i][1] = v;
          break;
        }
      }
    }
  },
  
subscribe: function(eloid) {
    
ajax.post('al_feed.php', {act'subscr'oidoidhashcur.fnbxHash}, {
      
onDone: function() {
        
hide('fans_idol_sub' oid);
        
show('fans_idol_unsub' oid);
        if (
cur.fnbxOwnerId == vk.id) {
          
FansBox.recache(1);
        }
        
FansBox.markSubsc(oid1);
      },
      
showProgresslockButton.pbind(el),
      
hideProgressunlockButton.pbind(el)
    });
  },
  
blacklistTip: function(el) {
    
showTooltip(el, {
      
textgetLang('fans_block_fan'),
      
shift: [1311],
      
black1
    
});
  },
  
blacklist: function(eloidev) {
    if (
el.tt && el.tt.destroyel.tt.destroy();
    
cur.fnbxWasScroll boxLayerWrap.scrollTop;
    
showBox(cur.fnbxPage, {act'block'oidoid});
    return 
cancelEvent(ev);
  },
  
unsubscribe: function(eloid) {
    
ajax.post(cur.fnbxPage, {act'unsub'oidoidhashcur.fnbxHashfrom'box'}, {
      
onDone: function() {
        
show('fans_idol_sub' oid);
        
hide('fans_idol_unsub' oid);
        if (
cur.fnbxOwnerId == vk.id) {
          
FansBox.recache(-1);
        }
        
FansBox.markSubsc(oid0);
      },
      
showProgress: function() {
        
hide(el);
        
show(domNS(el) || domPN(el).appendChild(ce('span', {className'progress_inline fans_idol_unsub_p'})));
      },
      
hideProgress: function() {
        
show(el);
        
re(domNS(el));
      }
    })
  },
  
lSTLDown: function(e) {
    
|| window.event;
    if (
checkEvent(e)) return;

    if (!
__afterFocus) {
      var 
to 0st boxLayerWrap.scrollTop;
      if (
cur.lSTLWasSet && cur.lSTLWas) {
        
to cur.lSTLWas;
        
cur.lSTLWas 0;
      } else {
        
cur.lSTLWas st;
      }
      
boxLayerWrap.scrollTop to;
/*      var diff = st - to;
      if (Math.abs(diff) > 6) {
        boxLayerWrap.scrollTop = (to + (diff > 0 ? 6 : -6));
      }
      setTimeout(function() {
        animate(boxLayerWrap, {scrollTop: to, transition: Fx.Transitions.easeInCirc}, 100);
      }, 0);/**/
    
}
    return 
cancelEvent(e);
  },
  
onScroll: function() {
    var 
st boxLayerWrap.scrollTopmx 200vis cur.lSTLWas || (st mx), 0;
    
cur.lSTL.style.marginTop st 'px';
    if (!
vis) {
      if (
cur.lSTLShown !== 0) {
        
hide(cur.lSTL);
        
cur.lSTLShown 0;
      }
    } else {
      if (
cur.lSTLShown !== 1) {
        
show(cur.lSTL);
        
cur.lSTLShown 1;
      }
      if (
cur.lSTLWas && st 500) {
        
cur.lSTLWas 0;
      }
      if (
st mx) {
        
= (st mx) / mx;
        if (
cur.lSTLWasSet) {
          
cur.lSTLWasSet 0;
          
val(domLC(cur.lSTL), getLang('global_to_top'));
          
removeClass(domLC(cur.lSTL), 'down');
        }
      } else {
        
= (mx st) / mx;
        if (
cur.lSTLWas) {
          if (!
cur.lSTLWasSet) {
            
cur.lSTLWasSet 1;
            
val(domLC(cur.lSTL), '');
            
addClass(domLC(cur.lSTL), 'down');
          }
        }
      }
    }
    
setStyle(cur.lSTL, {opacityMath.min(Math.max(o0), 1)});
    if (!
cur.fnbxAutoload) return;
    var 
bt lastWindowHeightobjMore ge('fans_more_link' curBox().tbCur);
    if (
isVisible(objMore) && (bt getXY(objMoretrue)[1])) {
      
objMore.click();
    }
  },
  
recache: function(d) {
    
cur.fnbxOffsets[curBox().tbCur] += d;
    for (var 
i in ajaxCache) {
      if (
i.match(new RegExp('^\/' cur.fnbxPage '\#act=' + (cur.fnbxAct || 'box'), ''))) {
        
delete(ajaxCache[i]);
      }
    }
  },
  
remove: function(oid) {
    
re('fans_fan_row' oid);
    
FansBox.recache(-1);
    
FansBox.onScroll();
    if (!
domFC(ge('fans_rowsfans'))) {
      
oid cur.fnbxOwnerId;
      
curBox().hide();
      
showBox(cur.fnbxPage, {actcur.fnbxAct || 'box'tab'fans'oidoid});
    }
  },

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

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

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

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

    var 
ch cur.fnbxPhCache[uid], curBox().tbCurcur.fnbxPhShown[uid], obj domPN(o);
    if (!
|| !obj) return;
    if (
ch === undefined) {
      
ch cur.fnbxPhCache[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.fnbxPhCache[uid] == 'show');
        
cur.fnbxPhCache[uid] = res;
        
o.href '/photo' res._id '?all=1';
        if (
shFansBox.bigphClick(uid);
      }, 
onFail: function() {
        
obj.onmouseover = function() {};
        
re(o);
        return 
true;
      }});
    }
    if (
ch == 'show') {
      return 
cancelEvent(ev);
    }
    if (!
ch) return;

    for (var 
i in cur.fnbxPhShown) {
      
animate(cur.fnbxPhShown[i], {marginTop100}, 0);
    }
    
cur.fnbxPhShown false;
    
extend(cur, {
      
fnbxBack: {
        
tabt,
        
initialcurBox().tbInitial,
        
oidcur.fnbxOwnerId,
        
offsetscur.fnbxOffsets,
        
scrollboxLayerWrap.scrollTop,
        
querycur.fnbxIdolsQuery,
        
visisVisible('fans_more_link' t) || isVisible('fans_more_prg' t),
        
contge('fans_rows' t)
      }
    });
    
extend(ch, {
      
jumpTo: {z'albums' uid},
      
onHide: function() {
        
cur.fnbxLoaded = function() {
          var 
curBox().tbViscont ge('fans_rows' t), cur.fnbxBack.scroll;
          if (
!= cur.fnbxBack.tab) {
            
curBox().tbTab(cur.fnbxBack.tab);
            return;
          }
          
extend(cur, {
            
fnbxOffsetscur.fnbxBack.offsets,
            
fnbxIdolsQuerycur.fnbxBack.query
          
});
          
domPN(cont).replaceChild(cur.fnbxBack.contcont);
          
toggle('fans_more_link' t, !!cur.fnbxBack.vis);
          
hide('fans_more_prg' t);
          
cur.fnbxLoaded cur.fnbxBack false;

          
boxLayerWrap.scrollTop s;
          
val('fans_idol_search_inp'cur.fnbxIdolsQuery);
          if (
== 'idols' && cur.fnbxIdolsQuery) {
            
elfocus('fans_idol_search_inp');
            
show('fans_reset_search');
          }
          
setTimeout(function() { boxLayerWrap.scrollTop sonBodyResize(); FansBox.onScroll(); }, 0);
        }
        
showBox(cur.fnbxPage, {actcur.fnbxAct || 'box'tabcur.fnbxBack.initialoidcur.fnbxBack.oid}, {cache1});
      }
    });
    
cur.fnbxAutoload false;
    return 
showPhoto(ch._id'album' uid '_0/rev'chev);
  }
};

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