2011-06-20 18:26:07 +04:00

93 lines
2.8 KiB
JavaScript

var Ajax = {
loadArtistData: function(name) {
Search.showSpinner();
name = name.split(' ').join('+');
$.get('/artist/'+ name +'/', function(data){
if (typeof data.status != 'undefined') {
if (data.status == 'loaded') {
Ajax.loadArtistData(name);
} else if (data.status == 'corrected') {
Ajax.loadArtistData(data.page);
} else if (data.status == 'suggestions') {
Search.hideSpinner();
Search.showSuggestions(data.values);
} else if (data.status == 'error') {
Ajax.load404Page();
}
return false;
} else {
var display_name = name.split('+').join(' ');
yaCounter7596904.hit('/artist/'+ name +'/', display_name, Ajax.getAnchor());
Ajax.setArchor('/artist/'+ name +'/');
Ajax.setTitle(display_name);
Pages.renderArtist(data);
beathaven.redrawScrollbar();
}
})
},
loadSearchPage: function() {
$.get('/demo/search.html', function(data){
yaCounter7596904.hit('/search/', 'Artist Search', Ajax.getAnchor());
Ajax.setArchor('/search/');
Ajax.setTitle('Artist Search');
$('#data-container .inner').html(data);
beathaven.redrawScrollbar();
$('#search_field').autocomplete({
serviceUrl: '/artist/autocomplete', // Страница для обработки запросов автозаполнения
minChars: 2, // Минимальная длина запроса для срабатывания автозаполнения
delimiter: /(,|;)\s*/, // Разделитель для нескольких запросов, символ или регулярное выражение
maxHeight: 400, // Максимальная высота списка подсказок, в пикселях
width: 415, // Ширина списка
zIndex: 9999, // z-index списка
deferRequestBy: 150, // Задержка запроса (мсек)
onSelect: Ajax.loadArtistData
});
$('#search_field').focus();
})
},
loadWheePage: function() {
$.get('/demo/whee.html', function(data){
$('#data-container .inner').html(data);
})
},
load404Page: function() {
$.get('/demo/404.html', function(data){
$('#data-container .inner').html(data);
beathaven.redrawScrollbar();
})
},
setArchor: function(anchor) {
window.location.hash = '#'+ anchor;
},
getAnchor: function() {
return window.location.hash.substring(1);
},
setTitle: function(title) {
document.title = title +' @ BeatHaven';
},
detectPage: function() {
if (m = Ajax.getAnchor().match(/\/artist\/(.+)\//)) {
Ajax.loadArtistData(m[1]);
} else if (Ajax.getAnchor() === '' || Ajax.getAnchor().match(/\/search\//)) {
Ajax.loadSearchPage();
} else {
Ajax.load404Page();
}
}
}
$(function(){
$('a.data.artist').live('click', function(){
Ajax.loadArtistData($(this).html());
return false;
});
$(window).bind('hashchange', Ajax.detectPage);
})