Вход Регистрация
Файл: js/al/audio.js
Строк: 2345
<?php
var Audio = {
  
address'/audio',
  
scrollnodebrowser.msie6 pageNode window,
  
fixedScroll: !(browser.msie && browser.version || browser.mobile),
  
init: function(objaudioTpl) {
    
extend(cur, {
      
searchContge('audio_search'),
      
aSearchge('s_search'),
      
clearSearchge('audio_query_reset'),
      
aContentge('initial_list'),
      
sContentge('search_list'),
      
sPreloadge('search_preload'),
      
showMorege('more_link'),
      
sShowMorege('s_more_link'),
      
sWrapge('audio_search_wrap'),
      
sSummaryge('audio_search_summary'),
      
albumFiltersge('album_filters'),
      
albumFilteredge('album_filtered'),
      
searchFiltersge('audio_search_filters'),
      
popularFiltersge('audio_popular_filters'),
      
audioFriendsge('audio_friends'),
      
audioAlbumsge('audio_albums'),
      
audioAlbumsWrapge('audio_albums_wrap'),
      
audioWrapge('audio_wrap'),
      
searchInfoContge('audio_search_info'),
      
searchStr"",
      
autoComplete1,
      
audioTplaudioTpl,
      
audioEl: {
        
headge('page_header'),
        
barge('ac'),
        
contge('audio'),
        
filtersge('side_filters')
      }
    });

    if (
ge('ac') && window.audioPlayer) {
      
audioPlayer.initEvents();
      
audioPlayer.registerPlayer('ac', {
        
containerge('ac'),
        
performerge('ac_performer'),
        
titlege('ac_title'),
        
titleWrapge('ac_name'),
        
durationge('ac_duration'),
        
loadge('ac_load_line'),
        
progressge('ac_pr_line'),
        
progressAreage('ac_pr'),
        
volumege('ac_vol_line'),
        
volumeAreage('ac_vol'),
        
playge('ac_play'),
        
prevge('ac_prev'),
        
nextge('ac_next'),
        
addge('ac_add'),
        
repeatge('ac_repeat'),
        
shufflege('ac_shuffle'),
        
recge('ac_rec'),
        
statusge('ac_status'),
        
fixed: !(browser.msie && browser.version || browser.mobile)
      });
    }
    if (
browser.mobile) {
      
hide('ac_vol');
      
setStyle('ac_duration', {margin0});
    }

    if (!
cur.allAudiosIndexcur.allAudiosIndex 'all';

    
extend(curobj);
    
cur.module 'audio';
    
//cur.disableAutoMore = true;
    
if (cur.aSearch) {
      
cur.aSearch.value cur.q;
      
toggleClass(cur.clearSearch'shown', !!cur.q);
      
placeholderSetup(cur.aSearch, {backtrue});
      
setTimeout(function() {
        
cur.aSearch.focus();
      }, 
0);
    }

    
Audio.scrollnode browser.msie6 pageNode window;
    
Audio.fixedScroll = !(browser.msie && browser.version || browser.mobile);
    
window.scrollTop bodyNode.scrollTop pageNode.scrollTop htmlNode.scrollTop 0;
    
addEvent(Audio.scrollnode'scroll'Audio.scrollCheck);
    
addEvent(window'resize'Audio.scrollCheck);
    
addEvent(cur.aSearch'blur'Audio.searchBlur);
    
addEvent(cur.aSearch'focus'Audio.searchFocus);
    
cur.destroy.push(function() {
      
removeEvent(Audio.scrollnode'scroll'Audio.scrollCheck);
      
removeEvent(window'resize'Audio.scrollCheck);
      
removeEvent(cur.aSearch'blur'Audio.searchBlur);
      
removeEvent(cur.aSearch'focus'Audio.searchFocus);
      if (
Audio.fixedScroll) {
        var 
els geByClass('top_info_wrap'ge('page_wrap'));
        
each(els, function() { show(this); });
        
setStyle(cur.audioEl.head, {width''top''});
        
setStyle('side_bar', {top''});

        
removeClass(bodyNode'audio_fixed_nav');
        
_fixedNav false;

        
show(_stlSide'debuglogwrap');
      }
      
audioPlayer.deregisterPlayer('ac');
      
setTimeout(function() {
        
toggleGlobalPlayer(true);
        
updGlobalPlayer();
      }, 
100);
    });
    
cur.gpHidden true;
    
toggleGlobalPlayer(false);

    if (
Audio.fixedScroll) {
      var 
els geByClass('top_info_wrap'ge('page_wrap'));
      
each(els, function() { hide(this); });
      
hide(_stlSide);
      
setTimeout(function() {
        
each(els, function() { hide(this); });
        
hide(_stlSide);
      }, 
110);
      var 
headH cur.audioEl.head.clientHeight,
          
headT getXY(cur.audioEl.head)[1],
          
audioNavH cur.audioEl.bar.offsetHeight,
          
headW cur.audioEl.head.clientWidth,
          
contentY headH audioNavH;
      
setStyle(cur.audioEl.head, {widthheadWtopheadT});
      
setStyle('side_bar', {topheadH headT});
      
setStyle(cur.audioEl.bar, {topheadH headT});
      
setStyle(cur.audioEl.cont, {paddingTopcontentY});
      
setStyle(cur.audioEl.filters, {topcontentY});

      
addClass(bodyNode'audio_fixed_nav');
      
_fixedNav true;

      
// hide('debuglogwrap');
    
}
    
Audio.updateAlbumsTitles();
    
Audio.handleFilterPos();

    var 
_a window.audioPlayer;
    if (
_a && _a.showCurrentTrack) {
      
_a.shuffle false;
      
_a.showCurrentTrack();
    }

    
cur.audios = {};
    
hide(cur.sContent);

    
cur.silent true;
    var 
query = {act'load_audios_silent'id: (cur.allAudiosIndex == 'all' cur.id cur.audioFriend), gidcur.gid};
    if (
cur.allAudiosIndex != 'all') {
      
Audio.cacheFriendsList();
    }
    if (
cur.club) {
      
cur.curSection 'club' cur.club;
      
query.club cur.club;
      
cur.searchStr cur.q;
    }
    
ajax.post(Audio.addressquery, {onDone: (function(dataopts) {
      
opts = eval('('+opts+')');
      if (
opts.exp) {
        
_a.statusExport opts.exp;
        
checkbox('currinfo_audio', (_a.hasStatusExport()));
        if (
_a && _a.showCurrentTrack_a.showCurrentTrack();
        
delete opts.exp;
      }
      
extend(curopts);
      if (
cur.hashes && cur.hashes.add_hash && !_a.addHash) {
        
_a.addHash cur.hashes.add_hash;
      }
      if (
query.id 0) {
        
cur.allFriendsTitles cur.allFriendsTitles || {};
        
cur.allFriendsTitles[query.id] = opts.summaryLang.all_friend_title;
        
cur.allFriendsHTitles cur.allFriendsHTitles || {};
        
cur.allFriendsHTitles[query.id] = opts.summaryLang.all_friend_htitle;
      }
      var 
obj = eval('('+data+')');
      if (!
obj) {
        return;
      }
      
cur.audiosList cur.audiosList || {};
      if ((
query.club || query.id 0) && obj.club) {
        var 
club query.club || -query.id;
        
cur.allClubsHTitles cur.allClubsHTitles || {};
        
cur.allClubsHTitles[club] = opts.summaryLang.all_club_htitle || cur.htitle;
        
cur.allFriendsHTitles cur.allFriendsHTitles || {};
        
cur.allFriendsHTitles[-club] = opts.summaryLang.all_club_htitle || cur.htitle;
        
cur.curList 'club' club;
        
cur.audiosList[cur.curList] = obj.club;
      } else {
        
cur.curList = (cur.album_id) ? 'album'+cur.album_id cur.allAudiosIndex;
      }
      
cur.searchOffset 0;
      
cur.audiosList[cur.allAudiosIndex] = obj.all obj.all : [];
      if (
cur.allAudiosIndex == 'all'Audio.generateAlbums();
      
cur.sectionCount = (cur.audiosList[cur.curList] || []).length;
      if (
cur.canEdit && nav.objLoc.act != 'popular' && nav.objLoc.act != 'recommendations' && nav.objLoc.act != 'feed' && !browser.mobile && cur.allAudiosIndex == 'all' && !cur.shuffled) {
        if (
cur.sectionCount) {
          var 
opts = {onReorderAudio.onAudioReorderonMouseDownAudio.onDragStartonMouseUpAudio.onDragEndnoMoveCursor1};
          if (
cur.audioAlbumsWrap) {
            
extend(opts, {targetcur.audioAlbumsWraponDragOverAudio.onDragOveronDragOutAudio.onDragOut});
          }
          
sorter.init(cur.aContentopts);
        }
      }
      if (
cur.albums) {
        
Audio.initAlbumsSort();
      }
      
this.indexAll(function() {
        
cur.silent false;
        if (
cur.onSilentLoad) {
          
cur.onSilentLoad();
        }
        if (!
cur.q) {
          if (
cur.curSection == 'recommendations' || cur.curSection == 'popular' || cur.curSection == 'feed') {
            if (
cur[cur.curSection+'Audios']) {
              var 
0;
              for (var 
i in cur[cur.curSection+'Audios']) {
                
cur[cur.curSection+'Audios'][i]._order k++;
              }
              
audioPlayer.genPlaylist(cur[cur.curSection+'Audios'], false);
            }
          } else {
            
audioPlayer.genPlaylist(cur.audiosList[cur.curList], falsecur.curList == 'all' && cur.oid == vk.id);
          }
        } else if (!
query.club) {
          
Audio.selectPerformer(nullcur.q);
        }
        if (
cur.audio_id) {
          var 
audio cur.audios[cur.audio_id];
          if (
audio) {
            var 
audio_id audio[0] + '_' audio[1];
            try{
              
playAudioNew(audio_id);
            }catch(
e){};
          }
        }
      });
    }).
bind(this)});
  },

  
searchFocus: function() {
    var 
alist ge('audios_list');
    if (!
hasClass(alist'light')) addClass(alist'light');
  },

  
searchBlur: function() {
    var 
alist ge('audios_list');
    if (
hasClass(alist'light')) removeClass(alist'light');
  },

  
clearSearch: function(elevent) {
    
setStyle(el, {opacity.6});
    
cur.aSearch.focus();
    if (
cur.allAudiosIndex == 'all') {
      
Audio.loadAlbum(0);
    } else {
      
this.filterTimeout setTimeout((function() {
        
val(cur.aSearch'');
        
removeClass(cur.clearSearch'shown');
        
this.updateList(nullcur.aSearch);
        
this.hideSearchResults();
        
scrollToTop();
      }).
bind(this), 10);
    }
    if (
isVisible(cur.searchInfoCont)) {
      
hide(cur.searchInfoCont);
    }
  },

  
updateSorterRows: function(fromEl) {
    if (
fromEl && fromEl.parentNode.sorter){
      
sorter.update(fromEl);
    }
  },

  
showLyrics: function(idlidtop) {
    var 
lyrics_div ge('lyrics'+id);
    if (!
isVisible(lyrics_div)) {
      
show(lyrics_div);
      
lyrics_div.innerHTML "<div style='text-align: center; height: 50px; padding: 30px 10px 10px 10px'><img valign='middle' src='/images/progress7.gif'></div>";
      
Audio.updateSorterRows(ge('audio'+id));
      
ajax.post(Audio.address, {act'get_lyrics'lidlidaididtoptop 0}, {cache1onDone: (function(responseText) {
          
lyrics_div.innerHTML responseText;
          
Audio.updateSorterRows(ge('audio'+id));
        }).
bind(this)});
    } else {
      
lyrics_div.innerHTML "";
      
hide(lyrics_div);
      
Audio.updateSorterRows(ge('audio'+id));
      
Audio.handleFilterPos();
    }
  },

  
allAudios: function() {
    return 
cur.audiosList cur.audiosList[cur.allAudiosIndex] || [] : [];
  },

  
showRows: function(startendforce) {
    if (
cur.curSection == 'recommendations') {
      
Audio.loadRecommendations();
      return;
    } else if (
cur.curSection == 'popular') {
      
Audio.loadPopular();
      return;
    } else if (
cur.curSection == 'feed') {
      
Audio.loadFeed();
      return;
    }
    if (
cur.silent) {
      
cur.onSilentLoad = function() {
        
Audio.showRows(startendforce);
      };
      return;
    }
    var list = 
cur.audiosList[cur.curList] || [];
    if (list[
0] && list[0]._order !== undefined) {
      list = list.
sort(function(a,b) {return a._order b._order});
    }
    if (!
cur.searchStr) {
      list = 
Audio.filter(list);
      if (
cur.filterUnsorted) {
        list = 
Audio.filterByAlbum(list, 0);
      }
      
cur.sectionCount = list.length;
    }
    if (
start == undefined) {
      
start cur.shownAudios;
    }
    if (
end == undefined) {
      
end cur.shownAudios cur.audiosPerPage;
    }
    if (
window.tooltips && cur.tooltips) {
      for (var 
0cur.tooltips.length; ++i) {
        if (
cur.tooltips[i].el) {
          if (
hasClass(cur.tooltips[i].el'audio_friend')) continue;
          if (
cur.tooltips[i].el.ttimer) {
            
clearTimeout(cur.tooltips[i].el.ttimer);
          }
        }
        
cur.tooltips[i].hide({fasthidetrue});
      }
    }
    var 
_a window.audioPlayer;
    if (!list || !list.
length) {
      if (
cur.shownAudios == && (cur.album_id || (!Audio.allAudios().length && !cur.searchStr))) {
        var 
msg;
        if (
Audio.allAudios().length) {
          
msg = (cur.album_id) ? getLang('audio_album_no_recs') : getLang('audio_no_audios_found').split('{query}').join('<b>'+cur.searchStr.replace(/([<>&#]*)/g, '')+'</b>');
        
} else {
          if (
cur.oid && !cur.audioFriend) {
            if (
cur.id == vk.id && cur.allAudiosIndex == 'all') {
              
msg getLang('audio_no_rec_load_msg').split('{link}').join('<a href="#" onclick="Audio.addAudio(); return false">').split('{/link}').join('</a>');
            } else {
              
msg getLang('audio_user_no_recs');
            }
          } else {
            
msg cur.audioFriend getLang('audio_user_no_recs') : getLang('audio_group_no_recs');
          }
        }
        
cur.aContent.innerHTML '<div id="not_found" class="info_msg">'+msg+'</div>';
      }
      
hide(cur.showMore);
    } else {
      if (!
cur.shownAudioscur.aContent.innerHTML '';
      var 
audios = list.slice(startend);
      if (!
audios.length) {
        if (
cur.shownAudios >= cur.sectionCount) {
          
hide(cur.showMore);
          if (
cur.searchStr) {
            
this.loadRows();
          }
        }
        return;
      }
      var 
html = [];
      for (
i in audios) {
        var 
audio audios[i].slice();
        if (
cur.selection) {
          
audio[5] = audio[5].replace(cur.selection.recur.selection.val).replace(/&#(d*)<span>(d+)</span>(d*);/g, "&#$1$2$3;");
          
audio[6] = audio[6].replace(cur.selection.recur.selection.val).replace(/&#(d*)<span>(d+)</span>(d*);/g, "&#$1$2$3;");
        
}
        
html.push(this.drawAudio(audio));
        
cur.shownAudios += 1;
      }
      var 
au ce('div', {innerHTMLhtml.join('')});
      while (
au.firstChild) {
        var 
el au.firstChild;
        
cur.aContent.appendChild(el);
      }
      if (
cur.canEdit && nav.objLoc.act != 'popular' && nav.objLoc.act != 'recommendations' && nav.objLoc.act != 'feed' && !browser.mobile && !cur.searchStr && cur.sectionCount && cur.allAudiosIndex == 'all' && !cur.shuffled) {
        if (
start 0) {
          
setTimeout(sorter.added.pbind(cur.aContent), 0);
        } else {
          
setTimeout(function(){
            var 
opts = {onReorderAudio.onAudioReorderonMouseDownAudio.onDragStartonMouseUpAudio.onDragEndnoMoveCursor1};
            if (
cur.audioAlbumsWrap) {
              
extend(opts, {targetcur.audioAlbumsWraponDragOverAudio.onDragOveronDragOutAudio.onDragOut});
            }
            
sorter.init(cur.aContentopts);
          }, 
0);
        }
      }
      if (
cur.searchCount && isVisible(cur.sContent)) {
        
show(cur.sWrap);
        
cur.sContent.style.paddingTop '12px';
        
cur.sSummary.innerHTML langNumeric(cur.searchCountcur.summaryLang['list_found'], true);
      }
      if (
_a && _a.showCurrentTrack_a.showCurrentTrack();
    }
    
setTimeout(Audio.handleFilterPos0);
    var 
aid currentAudioId(), clubList = (cur.curSection && cur.curSection.substr(04) == 'club');
    if (
_a && _a.gpDisabled && aid) {
      var 
track_id aid.split('_')[1];
      if (!
cur.audios[track_id]) _a.stop();
    }
    if (
cur.justShuffled) {
      
toggle(cur.showMorecur.shownAudios cur.sectionCount);
      return;
    }
    if (
clubList) {
      
Audio.hideSearchResults();
    }
    if (
force) return;
    if (
cur.shownAudios >= cur.sectionCount) {
      
hide(cur.showMore);
      if (
cur.searchStr && !clubList) {
        
this.loadRows();
      } else {
        
Audio.setQLoc(cur.searchStr);
      }
    } else {
      
show(cur.showMore);
      
Audio.setQLoc(cur.searchStr);
    }
  },

  
loadRows: function() {
    if (
cur.sPreload.innerHTML) {
      while (
cur.sPreload.firstChild) {
        var 
el cur.sPreload.firstChild
        cur
.sContent.appendChild(el);
      }
    }
    
clearTimeout(this.searchTimeout);
    
this.searchTimeout setTimeout((function() {
      
Audio.searchRequest(cur.searchStrcur.searchOffset);
    }).
bind(this), 300);
  },

  
searchRequest: function(valoffset) {
    if (!
val) return;
    if (
val[val.length 1] == ' ') {
      
val[val.length 1] = '_';
    }
    
addClass(cur.searchCont'loading');
    
setStyle(cur.clearSearch, {opacity.6});
    var 
query = {act'search'qvaloffsetoffsetidcur.idgidcur.gidperformercur.searchTypeMenu cur.searchTypeMenu.val() : 0};
    var 
ge('audio_lyrics_filter');
    var 
ge('selectedItems');
    if (
&& parseInt(l.value)) query.lyrics 1;
    if (
squery.sort s.value;
    if (
cur.autoCompletequery.autocomplete cur.autoComplete;
    if (
nav.objLoc.claimquery.claim nav.objLoc.claim;
    
ajax.post(Audio.addressquery, {onDone: function(respreloadoptions) {
        
removeClass(cur.searchCont'loading');
        var 
newVal cur.searchStr;
        if (
newVal[newVal.length 1] == ' ') {
          
newVal[newVal.length 1] = '_';
        }
        if (
val != newVal) {
          return;
        }
        if (
res) {
          
cur.sContent.innerHTML res;
        }
        if (
preload) {
          
cur.sPreload.innerHTML preload;
        }
        
Audio.applyOptions(optionsoffset);
        
show(cur.sContent);
        if (!
cur.sectionCount) {
          
hide(cur.sWrap);
          
cur.sContent.style.paddingTop '0px';
          
Audio.changeSummary(true);
          
cur.aContent.innerHTML '';
          if (!
cur.searchCount && !res && !preload) {
            
msg getLang('audio_no_audios_found').split('{query}').join('<b>'+cur.searchStr.replace(/([<>&#]*)/g, '')+'</b>');
            
cur.aContent.innerHTML '<div id="not_found" class="info_msg">'+msg+'</div>';
            
hide(cur.showMore);
            
hide(cur.sContent);
          }
        } else {
          
cur.sContent.style.paddingTop '12px';
          if (
cur.searchCount) {
            
cur.sSummary.innerHTML langNumeric(cur.searchCountcur.summaryLang['list_found'], true);
            
show(cur.sWrap);
          } else {
            
Audio.hideSearchResults();
            
hide(cur.sWrap);
          }
        }
        
Audio.scrollCheck();
        if (!
offsetAudio.setQLoc(cur.searchStr);
        var 
_a window.audioPlayer;
        if (
_a && _a.showCurrentTrack_a.showCurrentTrack();
      },
      
onFail: function() {
        
removeClass(cur.searchCont'loading');
      },
      
showProgress: function () {
        
cur.isAudioLoading true;
      },
      
hideProgress: function () {
        
cur.isAudioLoading false;
      }
    });
  },

  
changeSearchFilters: function() {
    
cur.searchOffset 0;
    
Audio.searchRequest(cur.searchStr0);
  },

  
hideSearchResults: function() {
    
setTimeout(function(){
      
cur.sContent.innerHTML '';
      if (
cur.curSection != 'recommendations' && cur.curSection != 'popular' && cur.curSection != 'feed'cur.sPreload.innerHTML '';
      
hide(cur.sContent);
      
hide(cur.sWrap);
      
hide(cur.sShowMore);
      
Audio.scrollCheck();
    }, 
0);
  },

  
drawAudio: function(audio) {
    return 
cur.audioTpl(audiocur.curSection);
  },

  
applyOptions: function(optionsoffset) {
    
extend(curoptions);
    if (!
cur.has_more) {
      
hide(cur.sShowMore);
    } else {
      
show(cur.sShowMore);
    }
    if (!
offset) {
      if (
options.searchInfo) {
        
cur.searchInfoCont.innerHTML options.searchInfo;
        if (!
isVisible(cur.searchInfoCont)) {
          
show(cur.searchInfoCont);
        }
        
each(geByClass('audio_friend_name_now'cur.searchInfoCont), function() {
          if (
this.scrollWidth this.clientWidth) {
            
this.setAttribute('title'this.innerText || this.textContent);
          } else {
            
this.removeAttribute('title');
          }
        })
      } else if (
isVisible(cur.searchInfoCont)) {
        
hide(cur.searchInfoCont);
      }
    }
  },

  
handleFilterPos: function() {
    if (!
Audio.fixedScroll || !cur.audioEl) return false;
    var 
headH cur.audioEl.head.clientHeightaudioNavH cur.audioEl.bar.offsetHeight,
        
contentY headH audioNavH,
        
st Math.max(0scrollGetY()), wh window.lastWindowHeight || 0pos 0,
        
filt ge('side_panel'), filtPos getXY(filt)[1], filtY getSize(filt)[1],
        
sf ge('side_filters'), sfPos = (getStyle(sf'position') == 'fixed') ? parseInt(getStyle(sf'top')) : getXY(sf)[1], sfY getSize(sf)[1],
        
bottomPad Math.max(0st wh filtY contentY),
        
tooBig = (filtPos filtY sfPos sfY 20),
        
lastPos cur.filterLastPos || 100lastSt cur.lastSt || 0;

    if  (!
tooBig) {
      
addClass(sf'fixed');
      
pos = (wh sfY contentY) ? Math.min(contentYwh sfY bottomPad) : Math.max(Math.min(contentYlastPos lastSt st), wh sfY bottomPad);
    } else {
      
removeClass(sf'fixed');
      
pos 0;
    }
    
cur.filterLastPos pos;
    
cur.lastSt st;
    
setStyle(sf, {toppos 'px'});

    if (!
browser.mozilla && !browser.msie && cur.lastWW !== lastWindowWidth) {
      
cur.lastWW lastWindowWidth;
      var 
goodLeft1 ge('page_layout').offsetLeft,
          
goodLeft2 goodLeft1 cur.audioEl.cont.offsetLeft,
          
goodLeft3 goodLeft2 getSize(cur.audioEl.cont)[0] - getSize(cur.audioEl.filters)[0] - 10;
      
cur.audioEl.head.style.left ge('side_bar').style.left goodLeft1 'px';
      
cur.audioEl.bar.style.left goodLeft2 'px';
      
cur.audioEl.filters.style.left goodLeft3 'px';
      
setTimeout(Audio.resetStyles0);
    }
  },

  
resetStyles: function() {
    
cur.audioEl.head.style.left ge('side_bar').style.left =
    
cur.audioEl.bar.style.left cur.audioEl.filters.style.left '';
  },

  
scrollCheck: function () {
    
Audio.handleFilterPos();
    if (
browser.mobile || cur.isAudioLoading  || cur.disableAutoMore) return;

    if (!
isVisible(cur.showMore) && !isVisible(cur.sShowMore)) return;
    if (!
cur.curList) {
      
setTimeout(Audio.scrollCheck50);
      return;
    }

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

    if (
isVisible(cur.showMore) && st ch 400 cur.showMore.offsetTop) {
      
Audio.showRows();
    }
    if (
isVisible(cur.sShowMore) && st ch 400 cur.sShowMore.offsetTop) {
      
Audio.loadRows();
    }
  },

  
updateList: function(eobjforceshowAlbums) {
    if (
cur.silent) {
      
cur.onSilentLoad = function() {
        
Audio.updateList(eobjforceshowAlbums);
      };
      return;
    }
    if (
&& (e.keyCode == 10 || e.keyCode == 13) || cur.forceNoAutoComplete) {
      
delete cur.forceNoAutoComplete
      delete cur
.autoComplete;
    } else {
      
cur.autoComplete 1;
    }
    
clearTimeout(this.filterTimeout);
    
this.filterTimeout setTimeout((function() {
      var 
str trim(obj.value), el;
      if (
str == cur.searchStr && cur.autoComplete && !cur.ignoreEqual) {
        return;
      }
      
delete cur.ignoreEqual;
      
delete nav.objLoc.album_id;
      
delete nav.objLoc.audio_id;
      if (
nav.objLoc.act == 'recommendations' || nav.objLoc.act == 'popular' || nav.objLoc.act == 'feed' || nav.objLoc.act == 'albums'delete nav.objLoc.act;
      if (
showAlbums) {
        
nav.objLoc.act 'albums';
      }
      if (
cur.allAudiosIndex == 'all') {
        
cur.album_id 0;
      }
      
each(geByClass('audio_filter'cur.albumFilters), function(ie) {
        
removeClass(e'selected');
      });
      var 
Audio.allAudios().length;
      if (
str) {
        
el cur.albumFiltered;
        
hide(cur.audioFriendscur.audioAlbums);
        
addClass(cur.clearSearch'shown');
        
show(cur.searchFilters);
        if (!
&& cur.allAudiosIndex == 'all'removeClass(cur.audioWrap'audio_no_recs');
      } else {
        if (
showAlbums || cur.oid != vk.id) {
          if (
cur.allAudiosIndex == 'all') {
            
el ge('audios_albums') || ge('album0');
          }
          
hide(cur.audioFriends);
          
show(cur.audioAlbums);
          
Audio.updateAlbums();
        } else {
          
hide(cur.audioAlbums);
          
show(cur.audioFriends);
          if (
cur.allAudiosIndex == 'all') {
            
el ge('album0');
            var 
curEl geByClass1('current'ge('audio_friends_list'));
            if (
curElremoveClass(curEl'current');
          }
        }
        
removeClass(cur.clearSearch'shown');
        
removeClass(cur.albumFiltered'selected');
        
hide(cur.searchFilters);
        if (!
&& cur.allAudiosIndex == 'all' && cur.oid <= 0addClass(cur.audioWrap'audio_no_recs');
      }
      if (
eladdClass(el'selected');
      
hide(cur.popularFilters);
      
cur.searchStr str;
      
this.searchAudios(strcur.allAudiosIndexforce);

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

  
selectPerformer: function(eventname) {
    
cur.aSearch.setValue(name);
    
cur.forceNoAutoComplete true;
    if (
event) {
      
cur.searchTypeMenu.value 1;
      
cur.searchTypeChanged({target: {index1}}, true);
    }
    
Audio.updateList(nullcur.aSearch);
    if (
eventcancelEvent(event);
  },

  
searchAudios: function(strtypeforce) {
    
cur.shownAudios 0;
    
cur.curSection type;
    var 
clubList = (type && type.substr(04) == 'club');
    if (!
clubList) {
      
cur.searchSortFilter.disable(false);
      
cur.searchLyricsFilter.disable(false);
      
removeClass(cur.albumFiltered'club_shown');
      
delete cur.club;
    }
    if (
str) {
      var 
htmlentities = function(s){
        var 
el document.createElement('div');
        
el.innerText el.textContent s;
        
el.innerHTML;
        
delete el;
        return 
s.split('"').join('&quot;');
      }
      var 
htmlencode = function(str){
        return 
str.toLowerCase().replace(/u2013|u2014/g'-');
        var 
aStr str.toLowerCase().replace(/u2013|u2014/g'-').split(''), aStr.lengthaRet = [];
        while (
i--) {
          var 
iC aStr[i].charCodeAt();
          if ((
iC 127 && iC 994)) {
            
aRet.push('&#'+iC+';');
          } else if (
iC == 36) {
            
aRet.push('&#0'+iC+';');
          } else {
            
aRet.push(htmlentities(aStr[i]));
          }
        }
        return 
aRet.reverse().join('');
      }
      var 
res cur.audiosIndex.search(htmlencode(str));
      var 
newList cur.curSection;
      
newList += '_search_'+str;

      
cur.curList newList;
      
cur.audiosList[cur.curList] = res.sort(function(a,b) {return a._order b._order});
      
audioPlayer.genPlaylist(resfalse);

      if (
str) {
        
str += ' '+(parseLatin(str) || '');
        
str trim(escapeRE(str.replace(/)/g'')).split('&').join('&amp;'));
        
cur.selection = {
          
re: new RegExp('('+str.replace(cur.audiosIndex.delimiter'|').replace(/(^|||$|?)/g'')+')''gi'),
          
val'<span>$1</span>'
        
};
      }
    } else {
      if (!
clubListAudio.hideSearchResults();
      
cur.curList cur.curSection;
      
audioPlayer.genPlaylist(cur.audiosList[cur.curList], falsecur.curList == 'all' && cur.oid == vk.id);
      
cur.selection false;
    }

    
cur.sectionCount = (cur.audiosList[cur.curList]) ? cur.audiosList[cur.curList].length 0;
    
this.filterTimeout setTimeout((function() {
      if (!
force) {
        
hide(cur.sShowMore);
        
cur.searchOffset 0;
      }
      
this.showRows(nullnullforce);
      if (
cur.sectionCount || !cur.searchStr) {
        
this.changeSummary();
      }
      if (
cur.justShuffled) {
        
delete cur.justShuffled;
        var 
aid currentAudioId();
        if (
cur.nextPlaylist && (!aid || window.audioPlaylist && !window.audioPlaylist[aid])) {
          
window.audioPlaylist = clone(cur.nextPlaylist);
        }
        if (
Pads.updateAudioPlaylist) {
          
Pads.updateAudioPlaylist();
        }
      }
    }).
bind(this), 10);
  },

  
indexAll: function(callback) {
    var 
all Audio.allAudios(),
    
replacer = function(strp) {
      var 
intval(p);
      return (
>= 33 && 48) ? String.fromCharCode(c) : str;
    };

    
cur.audiosIndex = new vkIndexer(all, function(obj) {
      
cur.audios[parseInt(obj[1])] = obj;
      return (
obj[5]+' '+obj[6]).replace(/&#(d+);?/gi, replacer);
    
}, function() {
        if (
callback) {
          
callback();
        }
    });
  },

  
changeAllIndex: function(indexalbumSelectedshowAlbums) {
    if (!
cur.audiosList[index]) return;
    
cur.allAudiosIndex cur.curList index;
    
this.indexAll(function() {
      var 
_a window.audioPlayer;
      
Audio.mixAllAudios(_a && _a.shuffletrue);
      
audioPlayer.genPlaylist(cur.audiosList[cur.curList], falseindex == 'all' && cur.oid == vk.id);
      
each(geByTag('div'cur.albumFilters), function(ie) {
        
removeClass(e'loading');
      });
      
cur.ignoreEqual true;

      
setStyle(cur.clearSearch, {opacity.6});
      
val(cur.aSearch'');
      
removeClass(cur.clearSearch'shown');
      
cur.searchStr '';
      
Audio.hideSearchResults();
      if (
albumSelected) {
        
Audio.loadAlbum(albumSelected);
      } else {
        
Audio.updateList(nullcur.aSearchundefinedshowAlbums);
      }
    });
  },

  
generateAlbums: function() {
    for (var 
i in cur.audiosList) {
      if (
i.substr(05) == 'album'cur.audiosList[i] = [];
    }
    var 
all Audio.allAudios();
    for (var 
i in all) {
      var 
el all[i];
      if (
el[8] && parseInt(el[8])) {
        if (!
cur.audiosList['album'+el[8]]) cur.audiosList['album'+el[8]] = [];
        
cur.audiosList['album'+el[8]].push(el);
      }
    }
  },

  
changeHTitle: function(countfrom_search) {
    
// Updating document title
    
var htitle cur.htitle;
    if (
cur.curSection && !cur.curSection.indexOf('album')) {
      
htitle ge(cur.curSection).innerHTML;
    } else if (
cur.curSection && cur.curSection == 'recommendations') {
      
htitle cur.recommendTitle cur.recommendTitle getLang('audio_recommended_audios');
    } else if (
cur.curSection && cur.curSection == 'popular') {
      
htitle cur.popularTitle cur.popularTitle getLang('audio_popular_audios');
    } else if (
from_search) {
      
htitle getLang('audio_title_search').replace('{q}'val('s_search'));
    } else if (
cur.curSection && !cur.curSection.indexOf('club')) {
      
htitle cur.allClubsHTitles[cur.club] || htitle;
    } else if (
cur.audioFriend && cur.allAudiosIndex && !cur.allAudiosIndex.indexOf('friend')) {
      
htitle cur.allFriendsHTitles[cur.audioFriend];
    }
    if (
count && cur.lang.audio_N_recs) {
      
htitle += ' | ' getLang('audio_N_recs'count);
    }
    
document.title replaceEntities(stripHTML(htitle));
  },

  
changeSummary: function(from_search) {
    var 
count = (from_search) ? cur.searchCount cur.sectionCount;
    
Audio.changeHTitle(countfrom_search);
  },

  
setQLoc: function(query) {
    
clearTimeout(this.qTimeout);
    
this.qTimeout setTimeout(function() {
      if (
cur.allAudiosIndex != 'all') {
        
extend(nav.objLoc, {friendcur.audioFriend});
      } else {
        
delete nav.objLoc.friend;
      }
      if (
cur.curSection && cur.curSection.substr(04) == 'club') {
        
extend(nav.objLoc, {clubcur.club});
      } else {
        
delete nav.objLoc.club;
      }
      if (
query) {
        
extend(nav.objLoc, {qquery});
        var 
performer cur.searchTypeMenu parseInt(cur.searchTypeMenu.val()) : 0;
        if (
performer) {
          
extend(nav.objLoc, {performerperformer});
        } else {
          
delete nav.objLoc.performer;
        }
      } else {
        
delete nav.objLoc.q;
      }
      
nav.setLoc(nav.objLoc);
    }, 
500);
  },

  
filter: function(arr) {
    var 
len arr.length;
    var 
res = [];
    for (var 
0leni++) {
      var 
arr[i];
      if (
cur.audios && cur.audios[t[1]] && !cur.audios[t[1]].deleted) {
        
res.push(t);
      }
    }
    return 
res;
  },

  
filterByAlbum: function(arralbum) {
    var 
len arr.length;
    var 
res = [];
    for (var 
0leni++) {
      var 
arr[i];
      if (
album == t[8]) {
        
res.push(t);
      }
    }
    return 
res;
  },

  
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;
  },

  
addShareAudio: function(elaidoidhashgidtop) {
    if (
el.ttel.tt.hide();
    
el Audio.animateAdded(el200);
    var 
query = {act:'add'aid:aidoid:oidhash:hashtop:top};
    if (
gidquery.gid cur.gid;
    if (
cur.curSection == 'recommendations'query.recommendation 1;
    if ((
cur.module == 'audio' || cur.module == 'feed') && nav.objLoc['q'] || cur.module == 'search' && nav.objLoc['c[q]']) query.search 1;
    
ajax.post(Audio.addressquery, {
      
onDone: function (datares) {
        var 
obj = eval('('+data+')');
        if (((!
cur.gid && cur.id == vk.id) || (cur.gid && gid)) && obj) {
          
setTimeout(function(){
            
obj obj['all'][0];
            var 
all_list cur.audiosList['all'];
            if (
all_list && all_list.length) {
              
obj._order all_list[0]._order 1;
              
cur.audiosList['all'].splice(0,0,obj);
            } else {
              
obj._order 0;
              
cur.audiosList['all'] = [obj];
            }
            
cur.audios[obj[1]] = obj;
            if (
cur.allAudiosIndex == 'all') {
              
cur.audiosIndex.add(obj);
            }
          }, 
0);
        }
        var 
showShare = function() {
          
addClass(ge('audio'+oid+'_'+aid), 'tt_shown');
          
showTooltip(el, {
            
contentres.content,
            
slide15,
            
shift: [5950],
            
black1,
            
hidedt200,
            
className'audio_add_tt wall_tt rich',
            
onHide: function() {
              
removeClass(ge('audio'+oid+'_'+aid), 'tt_shown');
            }
          });
          var 
tip el.tt;
          if (
tip && !tip.inited) {
            var 
geByClass('add_cont'tip.container)[0];
            
tip.onClean = function() {
              
tip.inited false;
              
removeEvent(tip.container'mouseover'tip.show);
              
removeEvent(tip.container'mouseout'tip.hide);
            }
            
addEvent(tip.container'mouseover'tip.show);
            
addEvent(tip.container'mouseout'tip.hide);
            
addEvent(a'click', function(){
              
toggleClass(this'on');
              var 
share_q = {act'share_audio'audio:res.audiostatustip.statustip.status 0checkhasClass(a'on')?1:0hashres.hash};
              if (
gidshare_q.gid cur.gid;
              
ajax.post(Audio.addressshare_q, {
                
onDone: function(data) {
                  if (
datatip.status data;
                }
              });
            });
            
tip.inited true;
          }
        }
        
addEvent(el'mouseover'showShare);
        if (!
cur.addedIdscur.addedIds = {};
        
cur.addedIds[oid+'_'+aid] = 1;
        if (
window.audioPlayer && currentAudioId()) {
          var 
cur_aids currentAudioId().split('_');
          if (
cur_aids[0] == oid && cur_aids[1] == aid) {
            
audioPlayer.showCurrentAdded();
          }
        }
      }
    });
  },

  
alistOver: function(obj){
    if (!
hasClass(obj'audio_list_cell_on')) {
      
obj.className 'audio_list_cell_over';
    }
  },

  
alistOff: function(obj) {
    if (!
hasClass(obj'audio_list_cell_on')){
      
obj.className 'audio_list_cell';
    }
  },

  
listOut: function(obj) {
    
removeClass(obj'over');
  },

  
listOver: function(obj) {
    
addClass(obj'over');
  },

  
loadAlbum: function(album_idfiltershowAlbums) {
    if (
cur.silent) {
      
cur.onSilentLoad = function() {
        
Audio.loadAlbum(album_idfiltershowAlbums);
      };
      return;
    }
    if (!
album_id && !showAlbums && (cur.oid == vk.id) && isVisible('audio_more_friends')) {
      
cur.shownFriends = [];
      
Audio.showMoreFriends(addClass.pbind(ge('album0'), 'loading'), removeClass.pbind(ge('album0'), 'loading'));
    }
    if (
cur.searchStr && isVisible(cur.searchInfoCont)) {
      
hide(cur.searchInfoCont);
    }
    if (
cur.allAudiosIndex != 'all') {
      
Audio.loadFriendsAudios(vk.id'all'album_idshowAlbums);
      return;
    }
    if (!
Audio.allAudios().length && cur.allAudiosIndex == 'all' && cur.oid <= 0) {
      
addClass(cur.audioWrap'audio_no_recs');
    }
    if (
filter) {
      
cur.filterUnsorted 1;
    } else {
      
delete cur.filterUnsorted;
    }
    var 
curSel cur.filterUnsorted ge('album_unsorted') : (showAlbums ge('audios_albums') : ge('album' album_id));
    
cur.lastAct 'album' album_id;
    
album_id album_id || 0;
    
each(geByClass('audio_filter'cur.albumFilters), function(ie) {
      
removeClass(e'selected');
    });
    if (
curSeladdClass(curSel'selected');
    
removeClass(cur.albumFiltered'selected');
    
hide(cur.popularFilterscur.searchFilters);
    if (
album_id == && !showAlbums && (cur.oid == vk.id)) {
      
hide(cur.audioAlbums);
      
show(cur.audioFriends);
      var 
curEl geByClass1('current'ge('audio_friends_list'));
      if (
curElremoveClass(curEl'current');
    } else {
      
hide(cur.audioFriends);
      
show(cur.audioAlbums);
    }
    if (
showAlbums && !filter && !album_id) {
      
Audio.updateAlbums();
    }
    
delete nav.objLoc.q;
    
delete nav.objLoc.friend;
    
delete cur.recsOffset;
    
delete cur.popularOffset;
    
delete nav.objLoc.club;
    
delete nav.objLoc.audio_id;
    if (
nav.objLoc.act == 'recommendations' || nav.objLoc.act == 'popular' || nav.objLoc.act == 'feed' || nav.objLoc.act == 'albums'delete nav.objLoc.act;
    if (
album_id) {
      
extend(nav.objLoc, {album_idalbum_id});
    } else if (
showAlbums) {
      
extend(nav.objLoc, {act'albums'});
    } else {
      
delete nav.objLoc.album_id;
    }
    
nav.setLoc(nav.objLoc);
    
clearTimeout(this.filterTimeout);
    
this.filterTimeout setTimeout((function() {
      
val(cur.aSearch'');
      
removeClass(cur.clearSearch'shown');
      
cur.searchStr '';
      
cur.album_id album_id;
      var 
type = (album_id) ? 'album'+album_id cur.allAudiosIndex;
      
this.searchAudios(''type);
      
this.hideSearchResults();
      
scrollToTop();
    }).
bind(this), 10);
    if (
cur.oid == vk.id) {
      
ajax.post(Audio.address, {act'list_stats'albums: (album_id || showAlbums) ? 0});
    }
  },

  
addAudio: function(paramsevent) {
    if (
cur.uploadBanned) {
      
setTimeout(showFastBox(getLang('audio_no_upload_title'), getLang('audio_claims_no_upload')).hide5000);
      if (
eventcancelEvent(event);
      return 
false;
    }
    
showBox(Audio.addressextend(params || {}, {act'new_audio'gidcur.gid}), {
      
params: {width'440px'bodyStyle'padding: 0px; position: relative;'}
    });
    if (
eventcancelEvent(event);
    return 
false;
  },

  
mixAllAudios: function(mixnoShuffle) {
    var 
all_list Audio.allAudios(), _a window.audioPlayercurrent 0;
    if (!
all_list) return;
    if (
mix) {
      if (
all_list[0] && all_list[0]._old_order !== undefined) return;
      for (var 
all_list.lengthi; ) {
        var 
parseInt(Math.random() * i)
        var 
all_list[--i];
        
all_list[i] = all_list[j];
        
all_list[i]._old_order all_list[i]._order;
        
all_list[i]._order i;
        if (
currentAudioId() == all_list[i][0]+'_'+all_list[i][1]) {
          
current i;
        }
        
all_list[j] = x;
      };
      if (
current) {
        var 
all_list[current];
        
all_list[current] = all_list[0];
        
all_list[current]._order current;
        
all_list[0] = x;
        
all_list[0]._order 0;
      }
    } else {
      for (var 
i in all_list) {
        if (
all_list[i]._old_order !== undefined) {
          
all_list[i]._order all_list[i]._old_order;
          
delete all_list[i]._old_order;
        }
      };
    }
    if (!
noShufflecur.justShuffled true;
  },
  
mixAudios: function() {
    if (
cur.curSection == 'recommendations') {
      
Audio.loadRecommendations({update'remix'});
      return;
    }
    if (
cur.curSection == 'popular') {
      
Audio.loadPopular('remix');
      return;
    }
    if (
cur.silent) {
      
cur.onSilentLoad = function() {
        
Audio.mixAudios();
      };
      return;
    }
    var 
_a window.audioPlayer;
    
Audio.mixAllAudios(_a && _a.shuffle);
    
cur.ignoreEqual true;
    if (
cur.album_id) {
      
this.loadAlbum(cur.album_id);
    } else {
      
this.updateList(nullcur.aSearchundefinednav.objLoc.act == 'albums');
    }
    
cur.shuffled _a && _a.shuffle;
  },

  
loadRecommendations: function(opts) {
    if (
cur.loadingRecs) return;
    
opts opts || {};
    var 
update opts.updateaudioId opts.audioId;
    if (
update) {
      
delete cur.recsOffset;
      
delete cur.recommendIds;
      
delete cur.recommendAudios;
      
delete cur.preloadJSON;
    }
    if (
audioId) {
      
cur.recsAudioId audioId;
    } else if (
update === true) {
      
delete cur.recsAudioId;
    }
    
each(geByClass('audio_filter'cur.albumFilters), function(ie) {
      
removeClass(e'selected');
    });
    if (
cur.searchStr && isVisible(cur.searchInfoCont)) {
      
hide(cur.searchInfoCont);
    }
    var 
rec_filter ge('recommendations');
    
addClass(rec_filter'selected');
    
removeClass(cur.albumFiltered'selected');
    
hide(cur.searchFilterscur.popularFilters);
    if (
cur.oid == vk.id) {
      
show(cur.audioFriends);
      
hide(cur.audioAlbums);
    }
    
removeClass(cur.albumFiltered'club_shown');
    
Audio.handleFilterPos();
    
cur.lastSection cur.curSection;
    
cur.curSection 'recommendations';
    if (
cur.recsOffset === undefined) {
      
cur.recsOffset 0;
    } else {
      
addClass(cur.showMore'loading');
    }
    if (
cur.recommendIds === undefinedcur.recommendIds = [];
    if (
cur.recommendAudios === undefinedcur.recommendAudios = [];
    if (
cur.recsCount === undefinedcur.recsCount 0;
    if (
cur.sPreload.innerHTML) {
      while (
cur.sPreload.firstChild) {
        var 
el cur.sPreload.firstChild;
        
cur.aContent.appendChild(el);
        
cur.recsCount++;
      }
    }
    if (
cur.preloadJSON) {
      
json cur.preloadJSON['all'];
      var 
cur_order cur.recsCount;
      for (var 
i in json) {
        var 
audio json[i];
        
audio._order cur_order++;
        if (
indexOf(cur.recommendIdsaudio[0]+"_"+audio[1]) == -1) {
          
cur.recommendIds.push(audio[0]+"_"+audio[1]);
          
cur.recommendAudios.push(audio);
        }
      }
      var 
aid currentAudioId(), needs_update = (aid && cur.recommendIds && indexOf(cur.recommendIdsaid) != -1);
      
audioPlayer.genPlaylist(cur.recommendAudiosneeds_update);
    }
    if (
cur.noRecommendations) {
      
hide(cur.showMore);
      
delete cur.noRecommendations;
      return;
    }
    if (
opts.tt) {
      
opts.tt.hide();
    }
    
cur.loadingRecs true;
    
cur.lastAct 'recommendations';
    var 
offset cur.recsOffsetquery = {act'get_recommendations'idcur.idoffsetoffset},
        
needsUpdate window.audioPlayer && audioPlayer.shuffle;
    if (
update == 'remix' || needsUpdate != cur.recsRemix) {
      
cur.recsRemix needsUpdate;
      
query.remix needsUpdate 0;
      var 
aid currentAudioId();
      if (
aid && window.audioPlaylist && audioPlaylist[aid] && audioPlaylist.address && audioPlaylist.address.indexOf('act=recommendations') > 0) {
        var 
audioPlaylist[aid];
        if (
a[10]) query.current a[10]+' '+aid;
      }
    }
    if (
cur.recsAudioId) {
      
query.audio_id cur.recsAudioId;
    }
    
ajax.post(Audio.addressquery, {
      
onDone: function(rowspreloadjsonpreload_jsonoptions) {
        
delete cur.loadingRecs;
        if (
cur.lastAct != 'recommendations') return;
        if (
options.recsCount === && offset) {
          
cur.noRecommendations true;
          
delete options.recsOffset;
        }
        if (
json) {
          
json = eval('('+json+')');
          
json json['all'];
          var 
cur_order cur.recsCount;
          for (var 
i in json) {
            var 
audio json[i];
            
audio._order cur_order++;
            if (
indexOf(cur.recommendIdsaudio[0]+"_"+audio[1]) == -1) {
              
cur.recommendIds.push(audio[0]+"_"+audio[1]);
              
cur.recommendAudios.push(audio);
            }
          }
          var 
aid currentAudioId(), needs_update = (aid && cur.recommendIds && indexOf(cur.recommendIdsaid) != -1);
          
audioPlayer.genPlaylist(cur.recommendAudiosneeds_update);
          if (
query.audio_id) {
            
cur.nextPlaylist.rec 1;
          }
        }
        
removeClass(cur.showMore'loading');
        if (
offset) {
          
delete options.recsCount;
        }
        if (
optionsextend(curoptions);
        if (!
offset) {
          
cur.aContent.innerHTML rows;
        }

        
cur.preloadJSON preload_json ? eval('('+preload_json+')') : false;
        
cur.sPreload.innerHTML '';
        var 
au ce('div', {innerHTMLpreload});
        while (
au.firstChild) {
          if (!
ge(au.firstChild.id)) {
            var 
el au.firstChild;
            
cur.sPreload.appendChild(el);
          } else {
            
au.removeChild(au.firstChild);
          }
        }

        if (
cur.recsCount && !query.audio_id) {
          
show(cur.showMore);
        } else {
          
hide(cur.showMore);
        }
        if (
query.remix) {
          
cur.justShuffled true;
        }
        
Audio.changeHTitle();
        
val(cur.aSearch'');
        
removeClass(cur.clearSearch'shown');
        
cur.searchStr '';
        
cur.album_id 0;
        
Audio.hideSearchResults();
        
hide(cur.sShowMore);
        if (!
offsetscrollToTop();
        
delete nav.objLoc.q;
        
delete nav.objLoc.friend;
        
delete nav.objLoc.album_id;
        
delete nav.objLoc.club;
        
extend(nav.objLoc, {act'recommendations'});
        if (
query.audio_id) {
          
extend(nav.objLoc, {audio_idquery.audio_id});
        } else {
          
delete nav.objLoc.audio_id;
        }
        
nav.setLoc(nav.objLoc);
        var 
_a window.audioPlayer;
        if (
_a && _a.showCurrentTrack_a.showCurrentTrack();
      },
      
onFail: function(msg) {
        
delete cur.loadingRecs;
        
cur.curSection cur.lastSection;
        
removeClass(ge('recommendations'), 'selected');
        
setTimeout(showFastBox(getLang('global_error'), msg).hide3000);
        return 
true;
      },
      
showProgress: function () {
        
addClass(rec_filter'loading');
      },
      
hideProgress: function () {
        
removeClass(rec_filter'loading');
      }
    });
    
cur.recsOffset += offset 50 100;
  },

  
loadPopular: function(update) {
    if (
cur.loadingPopular) return;
    if (
update) {
      
delete cur.popularOffset;
      
delete cur.popularIds;
      
delete cur.popularAudios;
      
delete cur.preloadJSON;
    }
    
each(geByClass('audio_filter'cur.albumFilters), function(ie) {
      
removeClass(e'selected');
    });
    if (
cur.searchStr && isVisible(cur.searchInfoCont)) {
      
hide(cur.searchInfoCont);
    }
    var 
pop_filter ge('top_audios');
    
addClass(pop_filter'selected');
    
removeClass(cur.albumFiltered'selected');
    
toggle(cur.audioFriendsfalse);
    if (
cur.popularFilters) {
      
show(cur.popularFilters);
      
hide(cur.audioAlbums);
    } else {
      
show(cur.audioAlbums);
      
Audio.updateAlbums();
    }
    
removeClass(cur.albumFiltered'club_shown');
    
hide(cur.searchFilters);
    
Audio.handleFilterPos();
    
cur.curSection 'popular';
    if (
cur.popularOffset === undefined) {
      
cur.popularOffset 0;
    } else {
      
addClass(cur.showMore'loading');
    }
    if (
cur.popularIds === undefinedcur.popularIds = [];
    if (
cur.popularAudios === undefinedcur.popularAudios = [];
    if (
cur.popularCount === undefinedcur.popularCount 0;
    if (
cur.sPreload.innerHTML) {
      while (
cur.sPreload.firstChild) {
        var 
el cur.sPreload.firstChild;
        
cur.aContent.appendChild(el);
        
cur.popularCount++;
      }
    }
    if (
cur.preloadJSON) {
      
json cur.preloadJSON['all'];
      var 
cur_order cur.popularCount;
      for (var 
i in json) {
        var 
audio json[i];
        
audio._order cur_order++;
        if (
indexOf(cur.popularIdsaudio[0]+"_"+audio[1]) == -1) {
          
cur.popularIds.push(audio[0]+"_"+audio[1]);
          
cur.popularAudios.push(audio);
        }
      }
      var 
aid currentAudioId(), needs_update = (aid && cur.popularIds && indexOf(cur.popularIdsaid) != -1);
      
audioPlayer.genPlaylist(cur.popularAudiosneeds_update);
    }
    if (
cur.noPopular) {
      
hide(cur.showMore);
      
delete cur.noPopular;
      return;
    }
    
cur.loadingPopular true;
    
cur.lastAct 'popular';
    var 
offset cur.popularOffsetquery = {act'get_popular'offsetoffset},
        
needsUpdate window.audioPlayer && audioPlayer.shuffle;
    if (
needsUpdate && !offsetquery.offset = -1;
    if (
update == 'remix' || needsUpdate != cur.popRemix) {
      
cur.popRemix needsUpdate;
      
query.remix needsUpdate 0;
      var 
aid currentAudioId();
      if (
aid && window.audioPlaylist && audioPlaylist[aid] && audioPlaylist.address && audioPlaylist.address.indexOf('act=popular') > 0) {
        
query.current aid;
      }
    }
    if (
cur.topType !== undefined) {
      
query.type cur.topType;
      
delete cur.topType;
    }
    
ajax.post(Audio.addressquery, {
      
onDone: function(rowspreloadjsonpreload_jsonoptions) {
        
delete cur.loadingPopular;
        if (
cur.lastAct != 'popular') return;
        if (
options.popularCount === && offset) {
          
cur.noPopular true;
          
delete options.popularOffset;
        }
        if (
json) {
          
json = eval('('+json+')');
          
json json['all'];
          var 
cur_order cur.popularCount;
          for (var 
i in json) {
            var 
audio json[i];
            
audio._order cur_order++;
            if (
indexOf(cur.popularIdsaudio[0]+"_"+audio[1]) == -1) {
              
cur.popularIds.push(audio[0]+"_"+audio[1]);
              
cur.popularAudios.push(audio);
            }
          }
          var 
aid currentAudioId(), needs_update = (aid && cur.popularIds && indexOf(cur.popularIdsaid) != -1);
          
audioPlayer.genPlaylist(cur.popularAudiosneeds_update);
        }
        
removeClass(cur.showMore'loading');
        if (
offset) {
          
delete options.popularCount;
        }
        if (
optionsextend(curoptions);
        if (!
offset) {
          
cur.aContent.innerHTML rows;
        }

        
cur.preloadJSON = eval('('+preload_json+')');
        
cur.sPreload.innerHTML '';
        var 
au ce('div', {innerHTMLpreload});
        while (
au.firstChild) {
          if (!
ge(au.firstChild.id)) {
            var 
el au.firstChild;
            
cur.sPreload.appendChild(el);
          } else {
            
au.removeChild(au.firstChild);
          }
        }

        if (
cur.popularCount) {
          
show(cur.showMore);
        } else {
          
hide(cur.showMore);
        }
        if (
update == 'remix') {
          
cur.justShuffled true;
        }
        
Audio.changeHTitle();
        
val(cur.aSearch'');
        
removeClass(cur.clearSearch'shown');
        
cur.searchStr '';
        
cur.album_id 0;
        
Audio.hideSearchResults();
        
hide(cur.sShowMore);
        if (!
offsetscrollToTop();
        
delete nav.objLoc.q;
        
delete nav.objLoc.friend;
        
delete nav.objLoc.album_id;
        
delete nav.objLoc.club;
        
delete nav.objLoc.audio_id;
        
extend(nav.objLoc, {act'popular'});
        
nav.setLoc(nav.objLoc);
        var 
_a window.audioPlayer;
        if (
_a && _a.showCurrentTrack_a.showCurrentTrack();
      },
      
showProgress: function () {
        
addClass(pop_filter'loading');
      },
      
hideProgress: function () {
        
removeClass(pop_filter'loading');
      }
    });
    
cur.popularOffset += offset 50 100;
  },

  
loadFeed: function(update) {
    if (
cur.isFeedLoading) return;
    
cur.isFeedLoading true;
    if (
update) {
      
delete cur.feedFrom;
      
delete cur.feedOffset;
      
delete cur.feedIds;
      
delete cur.feedAudios;
      if (
update === 'reload') {
        var 
params = {act'feed'part1update1}, Audio.address '#' ajx2q(params);
        
delete window.ajaxCache[q];
      }
    }
    
each(geByClass('audio_filter'cur.albumFilters), function(ie) {
      
removeClass(e'selected');
    });
    if (
cur.searchStr && isVisible(cur.searchInfoCont)) {
      
hide(cur.searchInfoCont);
    }
    var 
feed_filter ge('feed_filter');
    
addClass(feed_filter'selected');
    
removeClass(cur.albumFiltered'selected');
    
hide(cur.searchFilterscur.popularFilters);
    if (
cur.oid == vk.id) {
      
show(cur.audioFriends);
      
hide(cur.audioAlbums);
    }
    
removeClass(cur.albumFiltered'club_shown');
    
Audio.handleFilterPos();
    
cur.lastSection cur.curSection;
    
cur.curSection 'feed';
    if (!
update) {
      
addClass(cur.showMore'loading');
    }
    
cur.lastAct 'feed';
    
ajax.post(Audio.address, {act'feed'offsetcur.feedOffsetfromcur.feedFrompart1updateupdate ''}, {
      
onDone: function (rowsscript) {
        if (
cur.lastAct != 'feed') return;
        if (
rows) {
          if (
update) {
            
cur.aContent.innerHTML rows;
          } else {
            var 
au ce('div'), par geByClass1('wall_module'cur.aContent), row;
            
au.innerHTML rows;
            if (
par && update) {
              
par.innerHTML '';
            }
            while (
row au.firstChild) {
              if (!
row.id || ge(row.id)) {
                
au.removeChild(row);
                continue;
              }
              if (
par) {
                
par.appendChild(row);
              }
            }
          }
        } else {
          
hide(cur.showMore);
        }
        if (
script) {
          eval(
script);
        }
        var 
aid currentAudioId(), needs_update = (aid && cur.feedIds && indexOf(cur.feedIdsaid) != -1);
        
audioPlayer.genPlaylist(cur.feedAudiosneeds_update);
        
removeClass(cur.showMore'loading');
        
Audio.changeHTitle();
        
val(cur.aSearch'');
        
removeClass(cur.clearSearch'shown');
        
cur.searchStr '';
        
cur.album_id 0;
        
Audio.hideSearchResults();
        
hide(cur.sShowMore);
        if (
updatescrollToTop();
        
delete nav.objLoc.q;
        
delete nav.objLoc.friend;
        
delete nav.objLoc.album_id;
        
delete nav.objLoc.club;
        
delete nav.objLoc.audio_id;
        
extend(nav.objLoc, {act'feed'});
        
nav.setLoc(nav.objLoc);
        var 
_a window.audioPlayer;
        if (
_a && _a.showCurrentTrack_a.showCurrentTrack();
      },
      
showProgress: function () {
        
cur.isFeedLoading true;
        
addClass(feed_filter'loading');
      },
      
hideProgress: function () {
        
cur.isFeedLoading false;
        
removeClass(feed_filter'loading');
      },
      
cache1
    
});
  },

  
removeFromPlaylist: function(aid) {
    
each([window.audioPlaylistcur.nextPlaylist], function(ie) {
      var list = 
e;
      if (list && list[
aid]) {
        var 
next_id = list[aid]._nextprev_id = list[aid]._prev;
        if (
next_id != aid) {
          
// delete list[aid];
          
list[next_id]._prev prev_id;
          list[
prev_id]._next next_id;
        }
      }
    });
    var 
plist ls.get('pad_playlist');
    if (
plist && plist[aid] && window.audioPlayer) {
      
audioPlayer.setPadPlaylist();
    }
  },

  
backToPlaylist: function(aid) {
    
each([window.audioPlaylistcur.nextPlaylist], function(ie) {
      var list = 
e;
      if (list && list[
aid]) {
        var 
next_id = list[aid]._nextprev_id = list[aid]._prev;
        if (
next_id != aid) {
          list[
next_id]._prev = list[prev_id]._next aid;
        }
      }
    });
    var 
plist ls.get('pad_playlist');
    if (
plist && plist[aid] && window.audioPlayer) {
      
audioPlayer.setPadPlaylist();
    }
  },

  
hideRecommendation: function(aidqhashevent) {
    if (
window.audioPlayer && currentAudioId() == aid) {
      
audioPlayer.nextTrack(true);
    }
    var 
recRow ge('audio'+aid);
    if (
recRow) {
      if (
window.tooltips) {
        
tooltips.hide(ge('remove'+aid))
      }
      
slideUp(recRow200, function() {
        
recRow.parentNode.removeChild(recRow);
        
Audio.removeFromPlaylist(aid);
        
cur.recsCount--;
        
Audio.changeHTitle();
      });
    }
    
ajax.post(Audio.address, {act'hide_recommendation'qqhashhash});
    if (
eventcancelEvent(event);
    return 
false;
  },

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

  
rowActive: function(elttsh) {
    
Audio._animDelX(el11);
    if (
ttshowTooltip(el, {textttshowdt0black1shift: (sh sh : [1240])});
  },
  
rowInactive: function(ellight) {
    var 
opacity light 0.6 0.4;
    
Audio._animDelX(elopacity0);
  },

  
switchToFriends: function() {
    
each(geByClass('audio_filter'cur.albumFilters), function(ie) {
      
removeClass(e'selected');
    });
    
addClass(ge('friends_audios'), 'selected');
    
removeClass(cur.albumFiltered'selected');
    var 
showFriends = function() {
      
show(cur.audioFriends);
      
hide(cur.audioAlbumscur.searchFilterscur.popularFilters);
    }
    if (!
cur.audioFriendPlaying && cur.shownFriends.length <= 10) {
      
Audio.cacheFriendsList();
      
showFriends();
      
Audio.selectFriend(cur.audioFriend);
    } else {
      
addClass(ge('friends_audios'), 'loading');
      var 
query = {act'more_friends'};
      if (
cur.audioFriendPlayingquery.friend cur.audioFriendPlaying;
      else if (
cur.audioFriendquery.friend cur.audioFriend;
      
ajax.post(Audio.addressquery, {
        
cache1,
        
onDone: function(contfriends) {
          if (
cont) {
            
ge('audio_friends_list').innerHTML cont;
          }
          
addClass(ge('audio_friend'+cur.audioFriend), 'current');
          
removeClass(ge('friends_audios'), 'loading');
          
showFriends();
          
cur.shownFriends friends;
          var 
fid cur.audioFriendPlaying cur.audioFriendPlaying cur.audioFriend;
          
Audio.selectFriend(fid);
        },
        
onFail: function() {removeClass(ge('friends_audios'), 'loading');}
      });
    }
  },
  
selectFriend: function(idev) {
    if (
cur.skipSelectFriend) {
      
cur.skipSelectFriend false;
      return;
    }
    
each(geByTag('div'cur.audioFriends), function(ie) {
      
removeClass(e'current');
    });
    
addClass(ge('audio_friend' id), 'current');
    
addClass(ge('album0'), 'loading');
    
each(geByClass('audio_filter'cur.albumFilters), function(ie) {
      
removeClass(e'selected');
    });
    
Audio.loadFriendsAudios(id'friend'+id);
    if (
id && cur.oid == vk.id) {
      
ajax.post(Audio.address, {act'list_stats'friendid});
    }
    return 
ev cancelEvent(ev) : false;
  },
  
skipSelectFriend: function() {
    
cur.skipSelectFriend true;
  },
  
selectCommunity: function(idev) {
    if (
cur.skipSelectCommunity) {
      
cur.skipSelectCommunity false;
      return;
    }
    
each(geByClass('audio_friend'cur.searchInfoCont), function(ie) {
      
removeClass(e'current');
    });
    
addClass(ge('audio_community' id), 'current');
    
mentionOver(ge('audio_community' id), {shift: [4777]});
    
each(geByClass('audio_filter'cur.albumFilters), function(ie) {
      
removeClass(e'selected');
    });
    
addClass(cur.albumFiltered'club_shown');
    
cur.searchSortFilter.disable(true);
    
cur.searchLyricsFilter.disable(true);
    
removeClass(cur.albumFiltered'selected');
    
cur.club id;
    
Audio.loadCommunityAudios(id'club'+id);
    if (
id && cur.oid == vk.id) {
      
ajax.post(Audio.address, {act'list_stats'clubid});
    }
    return 
ev cancelEvent(ev) : false;
  },
  
skipSelectCommunity: function() {
    
cur.skipSelectCommunity true;
  },
  
backToSearch: function() {
    if (
cur.curSection && cur.curSection.substr(04) == 'club') {
      
cur.ignoreEqual true;
      
each(geByClass('audio_friend'cur.searchInfoCont), function() {
        
removeClass(this'current');
      });
      
this.updateList(nullcur.aSearch);
    }
  },
  
playCurrent: function(elhashev) {
    var 
_a window.audioPlayeraid currentAudioId(), audioId el.getAttribute('data-audio');
    if (
_a_a.gpDisabled false;
    if ((
window.audioPlaylist || {})[audioId]) {
      if (!
_a || aid != audioId || _a.player.paused()) playAudioNew(audioId);
      return 
cancelEvent(ev);
    }

    var 
prg el.nextSibling || el.parentNode.appendChild(ce('span', {className'progress_inline current_audio_prg'}));
    
stManager.add(['audioplayer.css''audioplayer.js']);
    
ajax.post(Audio.address, {act'play_audio_status'idaudioIdhashhash}, {
      
onDone: function(infodatauid) {
        if (
data && uid && window.audioPlayer) {
          
audioPlayer.statusData audioPlayer.statusData || {};
          
audioPlayer.statusData[uid] = data;
        }
        if (!
info) return;

        if (!
window.audioPlaylist) {
          
window.audioPlaylist = {};
        }
        
audioPlaylist[audioId] = info;
        
audioPlaylist.start audioId;
        if (!
audioPlaylist.searchStr) {
          
window.lastPlaylist = clone(audioPlaylist);
        }
        if (
window.audioPlayer) {
          
audioPlayer.setPadPlaylist();
        }
        
delete audioPlaylist.searchStr;
        
playAudioNew(audioId);
      },
      
showProgress: function() {
        
show(prg);
        
hide(el);
      },
      
hideProgress: function() {
        
hide(prg);
        
show(el);
      }
    });
    return 
cancelEvent(ev);
  },
  
loadFriendsAudios: function(idindexalbumshowAlbums) {
    if (
cur.silent) {
      
cur.onSilentLoad = function() {
        
Audio.loadFriendsAudios(idindexalbumshowAlbums);
      };
      return;
    }
    if (!
cur.audiosList[index]) {
      if (
index == 'all') {
        
each(geByClass('audio_filter'cur.albumFilters), function(ie) {
          
removeClass(e'selected');
        });
        if (
showAlbums) {
          
addClass(ge('audios_albums'), 'selected loading');
        } else {
          
addClass(ge('album0'), 'selected loading');
        }
        
removeClass(cur.albumFiltered'selected');
      }
      
cur.lastAct index;
      var 
query = {act'load_audios_silent'idid};
      if (
index != 'all' && !ge('audio_friend' id)) {
        
cur.shownFriends = [];
        var 
txt domFC(ge('audio_more_friends')), prg domLC(ge('audio_more_friends'));
        
Audio.showMoreFriends(function() {
          
hide(txt);
          
show(prg);
        }, function() {
          
hide(prg);
          
show(txt);
        }, 
id);
      }
      
ajax.post(Audio.addressquery, {
        
cache1,
        
onDone: function(dataopts) {
          if (
cur.lastAct != index) return;
          
opts = eval('('+opts+')');
          if (
id 0) {
            
cur.allFriendsHTitles cur.allFriendsHTitles || {};
            
cur.allFriendsHTitles[id] = opts.summaryLang.all_club_htitle;
          } else {
            
cur.allFriendsTitles cur.allFriendsTitles || {};
            
cur.allFriendsTitles[id] = opts.summaryLang.all_friend_title;
            
cur.allFriendsHTitles cur.allFriendsHTitles || {};
            
cur.allFriendsHTitles[id] = opts.summaryLang.all_friend_htitle;
          }
          var 
obj = eval('('+data+')');
          if (!
obj) return;
          
cur.audiosList[index] = obj['all'];
          if (
id == vk.id && index == 'all') {
            
cur.allAudiosIndex 'all';
            
Audio.generateAlbums();
          }
          if (
index != 'all'cur.audioFriend id;
          
Audio.changeAllIndex(indexalbumshowAlbums);
          
Audio.cacheFriendsList();
        }
      });
    } else {
      if (
index != 'all'cur.audioFriend id;
      
Audio.changeAllIndex(indexalbumshowAlbums);
    }
  },
  
loadCommunityAudios: function(gidindex) {
    if (
cur.silent) {
      
cur.onSilentLoad = function() {
        
Audio.loadCommunityAudios(gidindex);
      };
      return;
    }
    if (!
cur.audiosList[index]) {
      
cur.lastAct index;
      
ajax.post(Audio.address, {act'load_audios_silent'gidgid}, {
        
cache1,
        
showProgressaddClass.pbind(ge('album0'), 'loading'),
        
hideProgressremoveClass.pbind(ge('album0'), 'loading'),
        
onDone: function(dataopts) {
          if (
cur.lastAct != index) return;
          
opts = eval('('+opts+')');
          
cur.allClubsHTitles cur.allClubsHTitles || {};
          
cur.allClubsHTitles[gid] = opts.summaryLang.all_club_htitle;
          var 
obj = eval('('+data+')');
          if (!
obj) return;
          
cur.audiosList[index] = obj['all'];
          
Audio.searchAudios(''index);
          
scrollToTop();
        }
      });
    } else {
      
Audio.searchAudios(''index);
      
scrollToTop();
    }
  },
  
showMoreFriends: function(showProgresshideProgressfriend) {
    if (
cur.moreFriendsSent) {
      return;
    }
    
cur.moreFriendsSent true;
    var 
query = {act'more_friends'idscur.shownFriends};
    if (
friend) {
      
query.friend friend;
    }
    
ajax.post(Audio.addressquery, {
      
onDone: function(contfriendsreset) {
        
cur.moreFriendsSent false;
        if (
cont) {
          var list = 
ge('audio_friends_list');
          
re('audio_friends_old');
          var 
old ce('div', {innerHTML'<div id="audio_friends_old" style="position: absolute;">'+list.innerHTML+'</div>'}).firstChild;
          list.
parentNode.insertBefore(old, list);
          list.
innerHTML '';
          
setStyle(list, {display'none'});
          list.
innerHTML cont;
          var 
oldRows geByClass('audio_friend'old), oldCnt oldRows.length,
              
newCnt geByClass('audio_friend', list).length;
          if (
oldCnt newCnt) {
            
oldRows oldRows.slice(newCnt);
            
each(oldRows, function() {
              
re(this);
            });
          }
          
setTimeout(Audio.handleFilterPos0);
          
fadeIn(list, 400re.pbind(old));
          if (
friends) {
            
cur.shownFriends reset friends cur.shownFriends.concat(friends);
          }
        } else {
          
hide(el.parentNode.parentNode);
          
Audio.handleFilterPos();
        }
      },
      
onFail: function() {
        
cur.moreFriendsSent false;
      },
      
showProgressshowProgress,
      
hideProgresshideProgress
    
});
  },
  
cacheFriendsList: function() {
    var 
query = {act'more_friends'};
    if (
cur.audioFriendPlayingquery.friend cur.audioFriendPlaying;
    else if (
cur.audioFriendquery.friend cur.audioFriend;
    
ajax.post(Audio.addressquery, {cache1});
  },

  
// Audio Edit functions

  
showAudioClaimWarning: function(aidclaim_idtitlereason) {
    if (
cur.silent) {
      
cur.onSilentLoad = function() {
        
Audio.showAudioClaimWarning(aidclaim_idtitlereason);
      };
      return;
    }
    var 
claimTextclaimTitle;
    if (
reason == 'crap') {
      
claimText getLang(claim_id >= 'audio_crap_warning_text' 'audio_crap_warning') || getLang(claim_id 'audio_claim_warning_objection' : (claim_id == 'audio_claim_warning_text' 'audio_claim_warning'));
      
claimTitle getLang('audio_crap_warning_title') || getLang('audio_claim_warning_title');
    } else {
      
claimText = (claim_id 0) ? getLang('audio_claim_warning_objection') : (claim_id == getLang('audio_claim_warning_text') : getLang('audio_claim_warning'));
      
claimTitle getLang('audio_claim_warning_title');
    }
    
claimText claimText.split('{audio}').join('<b>' title '</b>');
    
claimText claimText.split('{objection_link}').join('<a href="/help?act=cc_objection&claim=' claim_id '&content=audio' aid '">' getLang('audio_claim_objection') + '</a>');
    
claimText claimText.split('{delete_link}').join('<a href="#" onclick="Audio.deleteAudio('' + aid + ''); return false;">' getLang('audio_claim_delete') + '</a>');
    
cur.claimWarning showFastBox(claimTitleclaimText);
  },

  
deleteAudio: function(id) {
    if (
cur.silent) {
      
cur.onSilentLoad = function() {
        
Audio.deleteAudio(id);
      };
      return;
    }
    if (
cur.deleting) {
      return 
false;
    }
    
cur.deleting true;
    var 
el ge('audio' id), aid id.split('_')[1];
    if (!
cur.deletedAudioscur.deletedAudios = [];
    
cur.deletedAudios[aid] = el.innerHTML;
    var 
acts geByClass1('actions'el);
    
each(acts.children, function(){if (this.ttthis.tt.hide()});
    var 
= (cur.audios || {})[aid] || [], lyrics isVisible(ge('lyrics'+id)),
        
_tw el && geByClass1('title_wrap'el),
        
performer a[5] || _tw && (geByTag1('a'_tw) || {}).innerHTML || '',
        
title a[6] || _tw && (geByClass1('title'_tw) || {}).innerHTML || '';
    
el.innerHTML rs(cur.deletedTpl, {
      
audio_idid,
      
performerperformer.split('<span>').join('').split('</span>').join(''),
      
titletitle,
      
delete_all''
    
});
    var 
_a window.audioPlayer;
    if (
currentAudioId() == id) {
      
_a.showCurrentTrack();
    }
    if (
lyrics) {
      
Audio.updateSorterRows(ge('audio'+id));
    }
    var 
addBtn ge('audio_add'+id);
    if (
addBtn) {
      
addBtn.onmouseover = function() {};
    }
    
ajax.post(Audio.address, {act'delete_audio'oidcur.oidaidaidhashcur.hashes.delete_hashrestore1}, {
      
onDone: function(actiondelete_all) {
        
cur.deleting false;
        if (
cur.claimWarning) {
          
cur.claimWarning.hide();
        }
        var 
acts geByClass1('actions'el);
        
each(acts.children, function(){if (this.ttthis.tt.hide()});
        
el.innerHTML rs(cur.deletedTpl, {
          
audio_idid,
          
performerperformer.split('<span>').join('').split('</span>').join(''),
          
titletitle,
          
delete_allaction action ''
        
});
        
el.style.cursor 'auto';
        
el.setAttribute('nosorthandle''1');
        if (
currentAudioId() == id) {
          
_a.showCurrentTrack();
        }
        if (
delete_all) {
          
cur.lang cur.lang || {};
          
cur.lang.audio_delete_all delete_all;
        }
        if (
cur.audios[aid]) {
          
cur.audiosIndex.remove(cur.audios[aid]);
          
cur.audios[aid].deleted true;
        }
        
Audio.removeFromPlaylist(id);
        
cur.sectionCount--;
        if (
cur.shownAudioscur.shownAudios--;
        
Audio.changeSummary();
      },
      
onFail: function() {
        
cur.deleting false;
      }
    });
    return 
false;
  },

  
restoreAudio: function(id) {
    if (
cur.restoring) {
      return;
    }
    
cur.restoring true;
    var 
el ge('audio' id), aid id.split('_')[1];
    
ajax.post(Audio.address, {act'restore_audio'oidcur.oidaidaidhashcur.hashes.restore_hash}, {
      
onDone: function() {
        
cur.restoring false;
        var 
acts geByClass1('actions'el);
        
each(acts.children, function(){if (this.ttthis.tt.hide()});
        
el.innerHTML cur.deletedAudios[aid];
        var 
lyrics isVisible(ge('lyrics'+id));
        if (
lyrics) {
          
Audio.updateSorterRows(ge('audio'+id));
        }
        
el.removeAttribute('nosorthandle');
        if (
cur.audios[aid]) {
          
cur.audiosIndex.add(cur.audios[aid]);
          
cur.audios[aid].deleted false;
        }
        
Audio.backToPlaylist(id);
        
cur.sectionCount++;
        if (
cur.shownAudioscur.shownAudios++;
        
Audio.changeSummary();
        
toggleClass(ge('play'+id), 'playing'id == currentAudioId());
      },
      
onFail: function() {
        
cur.restoring false;
      }
    });
  },

  
deleteAll: function(object_idfrom_idto_idhash) {
    var 
box showFastBox(getLang('audio_delete_all_title'), getLang('audio_delete_all') || ''getLang('global_delete'), function(btn){
      
ajax.post(Audio.address, {act'delete_all'object_idobject_idto_idto_idfrom_idfrom_idhashhash}, {
        
showProgresslockButton.pbind(btn),
        
onDone: function() {
          
nav.reload();
        },
        
onFailbox.hide
      
});
    }, 
getLang('global_cancel'));
  },

  
editAudio: function(aidevent){
    
showBox(Audio.address, {act'edit_audio_box'aidaid}, {
      
params: {width'430px'bodyStyle'padding: 15px;'}
    });
    if (
eventcancelEvent(event);
    return 
false;
  },

  
updateAlbums: function() {
    if (!
cur.canEdit || browser.mobile) return;
    
each (cur.audioAlbumsWrap.sorter.elems, function() {
      
setStyle(this, {top'auto'left'auto'width'auto'});
    });
    
cur.audioAlbumsWrap.sorter.destroy();
    
this.initAlbumsSort();
    
this.updateAlbumsTitles();
  },

  
updateAlbumsTitles: function() {
    if (!
cur.audioAlbumsWrap) return;

    
each (geByClass('label'cur.audioAlbumsWrap), function() {
      if (
this.scrollWidth this.clientWidth) {
        
this.setAttribute('title'this.innerText || this.textContent);
      } else {
        
this.removeAttribute('title');
      }
    });
  },

  
initAlbumsSort: function() {
    if (!
cur.canEdit || browser.mobile || !cur.audioAlbumsWrap) return;
    
sorter.init(cur.audioAlbumsWrap, {onMouseDownAudio.hideAlbumsTTonReorderAudio.onAlbumReordernoMoveCursor1});
  },

  
hideAlbumsTT: function() {
    
each(geByClass('icon_wrap'cur.audioAlbumsWrap), function() {
      if (
this.ttthis.tt.hide();
    })
  },

  
onAlbumReorder: function(albumbeforeafter) {
    var 
aid album.id.replace('album''');
    var 
before_id = (before && before.id || '').replace('album''');
    var 
after_id = (after && after.id || '').replace('album''');
    
ajax.post(Audio.address, {act'reorder_albums'oidcur.oidaidaidbeforebefore_idafterafter_idhashcur.hashes.reorder_hash});
  },

  
editAlbum: function(aid){
    if (
cur.silent) {
      
cur.onSilentLoad = function() {
        
Audio.editAlbum(aid);
      };
      return;
    }
    if (!
cur.audiosList) {
      return;
    }
    var 
box showTabbedBox(Audio.address, {act'edit_album_box'album_idaidoidcur.oid}, {stat: ['privacy.js''privacy.css''ui_controls.js''ui_controls.css''indexer.js']});
    
cur.onOListSave Audio.saveAlbum.pbind(boxaid);
    return 
false;
  },

  
createAlbum: function() {
    return 
this.editAlbum(0);
  },

  
saveAlbum: function(boxaidaudio_ids) {
    var 
btn geByClass1('button_blue'box.bodyNode.nextSibling).firstChild,
        
albumName val('album_name');
    if (!
albumName) {
      
notaBene('album_name');
      return 
false;
    }
    var 
query = {act'save_album'album_idaidnamealbumNamegidcur.gidAudiosaudio_ids.join(','), hashcur.hashes.save_album_hash};
    
ajax.post(Audio.addressquery, {
      
showProgresslockButton.pbind(btn),
      
hideProgressunlockButton.pbind(btn),
      
onFailbox.hide,
      
onDone: function(album_idaudio_idsfilters) {
        try{
          
cur.audioAlbumsWrap.innerHTML filters;
          var 
old cur.audiosList['album'+album_id];
          if (
old) {
            for (var 
i in old) {
              
cur.audios[old[i][1]][8] = 0;
            }
          }
          for (var 
i in audio_ids) {
            
cur.audios[audio_ids[i]][8] = album_id;
          }
          
cur.albums[album_id] = {idalbum_idtitleclean(albumName)};
          
Audio.generateAlbums();
          
Audio.loadAlbum(album_id);
          
Audio.initAlbumsSort();
          
Audio.updateAlbumsTitles();
          
box.hide();
        }catch(
e){}
      }
    });
    return 
false;
  },

  
deleteAlbum: function(aidhash){
    var 
box showFastBox(getLang('audio_delete_album_title'), getLang('audio_delete_album_are_you_sure'), getLang('audio_delete_album_button'), function(btn){
      
ajax.post(Audio.address, {act'delete_album'album_idaidhashhashgidcur.gid}, {
        
showProgresslockButton.pbind(btn),
        
hideProgressunlockButton.pbind(btn),
        
onDone: function(audio_idsfilters){
          try{
            
re('album'+aid);
            
boxQueue.hideAll();
            for (var 
i in audio_ids) {
              
cur.audios[audio_ids[i]][8] = 0;
            }
            
delete cur.albums[aid];
            
Audio.generateAlbums();
            if (
cur.album_id == aid) {
              
Audio.loadAlbum(0undefinedtrue);
            }
            
Audio.updateAlbums();
          }catch(
e){}
        },
        
onFail: function(){
          
box.hide(200);
        }
      });
    }, 
getLang('global_cancel'));
  },

  
moveAudio: function(full_idalbum_id) {
    var 
id full_id.split('_')[1];
    
ajax.post(Audio.address, {act:'move_to_album'album_id:album_idaudio_id:idgid:cur.gidhash:cur.hashes.move_hash}, {
      
onDone: function(text) {
        if((
cur.album_id && cur.album_id != album_id) || cur.filterUnsorted){
          var 
el ge('audio'+full_id);
          
fadeOut(el300, function(){
            
el.parentNode.removeChild(el);
            
each (cur.aContent.sorter.elems, function() {
              
setStyle(this, {top'auto'left'auto'});
            });
            
cur.aContent.sorter.destroy();
            var 
opts = {onReorderAudio.onAudioReorderonMouseDownAudio.onDragStartonMouseUpAudio.onDragEndnoMoveCursor1};
            if (
cur.albumFilters) {
              
extend(opts, {targetcur.albumFiltersonDragOverAudio.onDragOveronDragOutAudio.onDragOut});
            }
            
sorter.init(cur.aContentopts);
            
cur.sectionCount--;
            
Audio.changeSummary();
            if (
cur.sectionCount == 0) {
              
cur.aContent.innerHTML '<div id="not_found" class="info_msg">'+getLang('audio_album_no_recs')+'</div>';
            }
            
hide(cur.showMore);
          });
        }
        
cur.audios[id][8] = album_id;
        
Audio.generateAlbums();
      }
    });
  },

  
onAudioReorder: function(audiobeforeafter) {
    var 
aid audio.id.replace('audio''').split('_')[1];
    var 
before_id = (before && before.id || '').replace('audio''').split('_')[1];
    var 
after_id = (after && after.id || '').replace('audio''').split('_')[1];
    
ajax.post(Audio.address, {act'reorder_audios'oidcur.oidaidaidbeforebefore_idafterafter_idhashcur.hashes.reorder_hash}, {
      
onDone: function(data) {
        var 
val;
        if (
before_id && !after_id) {
          
val cur.audios[before_id]._order 0.01;
        } else {
          
val cur.audios[after_id]._order 0.01;
        }
        
cur.audios[aid]._order val;
      }
    });
  },

  
onDragStart: function(el) {
    
// addClass(ge('page_body'), 'no_overflow');
    
cur.dragStartTimer setTimeout(function() {
      
addClass(cur.audioAlbumsWrap'drag');
      
hide('album_add');
      var 
ids el.id.substr(5), id parseInt(ids.split('_')[1]);
      var 
album_id = (cur.audios) ? cur.audios[id][8] : cur.album_id;
      
each(geByClass('audio_filter'cur.audioAlbumsWrap), function(i,v) {
        if (
'album'+album_id == v.id || (album_id == && v.id == 'album_unsorted')) {
          return;
        }
        
addClass(v'drag_on');
      });
      
animate(el, {opacity.8}, 200);
    }, 
300);
  },

  
onDragEnd: function(eltarget) {
    if (
cur.dragStartTimerclearTimeout(cur.dragStartTimer);
    
// removeClass(ge('page_body'), 'no_overflow');
    
each(geByClass('audio_filter'cur.audioAlbumsWrap), function(i,v) {
      
removeClass(v'drag_on');
    });
    
show('album_add');
    if (
target) {
      var 
new_albumfull_id el.id.substr(5), aid parseInt(full_id.split('_')[1]);
      var 
album_id = (cur.audios) ? cur.audios[aid][8] : cur.album_id;
      if (
target.id != 'album_unsorted') {
        
new_album parseInt(target.id.substr(5));
      } else {
        
new_album 0;
      }
      if (
new_album != album_id) {
        
Audio.moveAudio(full_idnew_album);
      }
    }
    
removeClass(cur.audioAlbumsWrap'drag');
    
animate(el, {opacity1}, 200);
  },

  
onDragOver: function(eltarget) {
    
cur.targetId target.id || '';
    var 
ids el.id.substr(5), id parseInt(ids.split('_')[1]);
    var 
album_id = (cur.audios) ? cur.audios[id][8] : cur.album_id;
    if (
'album'+album_id == target.id || (album_id == && target.id == 'album_unsorted')) {
      return;
    }
    if (
cur.dragOutTimer) {
      
clearTimeout(cur.dragOutTimer);
    }
    
addClass(target'drag_over');
    
setStyle(el, {opacity.4});
  },

  
onDragOut: function(eltarget) {
    
removeClass(target'drag_over');
    if (
target.id && cur.targetId != target.id) return;
    
cur.dragOutTimer setTimeout(function(){setStyle(el, {opacity.8});}, 200);
  },

  
ignoreOwner: function (post_rawowner_idhashbtn) {
    
triggerEvent(ge('delete_post' post_raw), 'mouseout');
    
cur.feedEntriesHTML cur.feedEntriesHTML || {};
    if (
post_raw) {
      
cur.feedEntriesHTML[post_raw '_ignored'] = val('post' post_raw);
    }
    
ajax.post(Audio.address, {act'a_ignore_owner'post_rawpost_rawowner_idowner_idhashhash}, {
      
onDone:function(html) {
        
val('post' post_rawhtml);
        
each(geByClass('post'cur.aContent), function(i,v) {
          var 
ids this.id.match(/post((-?d+)_(-?d+)(_d+)?)/);
          if (
ids[1] != post_raw && (!ids[4] && ids[2] == owner_id || ids[4] && ids[3] == owner_id)) {
            
hide(this);
          }
        });
      }
    });
  },

  
unignoreOwner: function (post_rawowner_idhash) {
    
ajax.post(Audio.address, {act'a_unignore_owner'post_rawpost_raw || ''owner_idowner_idhashhash}, {
      
onDone:function(html) {
        if (
post_raw) {
          
val('post' post_rawcur.feedEntriesHTML[post_raw '_ignored']);
        } else {
          
val('ignore_row' owner_idhtml);
        }
        
each(geByClass('post'cur.aContent), function(i,v) {
          var 
ids this.id.match(/post((-?d+)_(-?d+)(_d+)?)/);
          if (!
ids[4] && ids[2] == owner_id || ids[4] && ids[3] == owner_id) {
            
show(this);
          }
        });
      }
    });
  },

  
editHidden: function () {
    
showTabbedBox('al_settings.php', {act'a_edit_owners_list', list: 'audio'heightlastWindowHeight}, {stat: ['privacy.js''privacy.css''ui_controls.js''ui_controls.css''indexer.js']});
    
cur.onOListSave Audio.onHiddenSave;
    return 
false;
  },

  
onHiddenSave: function(whiteblack, list, options) {
    var 
box curBox(), params = {act'a_ignore_olist'hashoptions.hash};
    if (
white.length black.length) {
      
params.White white.join(',');
    } else {
      
params.Black black.join(',');
    }
    
ajax.post(Audio.addressparams, {
      
onDone: function(controlrules) {
        
box.hide();
        
Audio.loadFeed('reload');
      },
      
showProgressbox.showProgress,
      
hiderogressbox.hideProgress
    
});
    return 
false;
  },

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