1
0
Fork 0
oldhaven/public/javascripts/beathaven/ajax.js

93 lines
2.8 KiB
JavaScript
Raw Normal View History

2011-06-15 23:06:46 +00:00
var Ajax = {
loadArtistData: function(name) {
Search.showSpinner();
2011-06-17 15:13:47 +00:00
name = name.split(' ').join('+');
2011-06-15 23:06:46 +00:00
$.get('/artist/'+ name +'/', function(data){
if (typeof data.status != 'undefined') {
if (data.status == 'loaded') {
2011-06-15 23:06:46 +00:00
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') {
2011-06-15 23:06:46 +00:00
Ajax.load404Page();
}
return false;
} else {
2011-06-20 14:26:07 +00:00
var display_name = name.split('+').join(' ');
yaCounter7596904.hit('/artist/'+ name +'/', display_name, Ajax.getAnchor());
Ajax.setArchor('/artist/'+ name +'/');
2011-06-20 14:26:07 +00:00
Ajax.setTitle(display_name);
Pages.renderArtist(data);
beathaven.redrawScrollbar();
2011-06-15 23:06:46 +00:00
}
})
},
loadSearchPage: function() {
$.get('/demo/search.html', function(data){
2011-06-20 14:26:07 +00:00
yaCounter7596904.hit('/search/', 'Artist Search', Ajax.getAnchor());
Ajax.setArchor('/search/');
Ajax.setTitle('Artist Search');
2011-06-16 00:19:40 +00:00
$('#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();
2011-06-15 23:06:46 +00:00
})
},
loadWheePage: function() {
$.get('/demo/whee.html', function(data){
2011-06-16 00:19:40 +00:00
$('#data-container .inner').html(data);
2011-06-15 23:06:46 +00:00
})
},
load404Page: function() {
$.get('/demo/404.html', function(data){
2011-06-16 00:19:40 +00:00
$('#data-container .inner').html(data);
beathaven.redrawScrollbar();
2011-06-15 23:06:46 +00:00
})
},
setArchor: function(anchor) {
2011-06-17 15:13:47 +00:00
window.location.hash = '#'+ anchor;
2011-06-15 23:06:46 +00:00
},
getAnchor: function() {
2011-06-17 15:13:47 +00:00
return window.location.hash.substring(1);
2011-06-15 23:06:46 +00:00
},
2011-06-20 14:26:07 +00:00
setTitle: function(title) {
document.title = title +' @ BeatHaven';
},
2011-06-15 23:06:46 +00:00
2011-06-17 15:13:47 +00:00
detectPage: function() {
if (m = Ajax.getAnchor().match(/\/artist\/(.+)\//)) {
Ajax.loadArtistData(m[1]);
} else if (Ajax.getAnchor() === '' || Ajax.getAnchor().match(/\/search\//)) {
Ajax.loadSearchPage();
2011-06-15 23:06:46 +00:00
} else {
2011-06-17 15:13:47 +00:00
Ajax.load404Page();
2011-06-15 23:06:46 +00:00
}
}
}
$(function(){
$('a.data.artist').live('click', function(){
Ajax.loadArtistData($(this).html());
return false;
});
2011-06-17 15:13:47 +00:00
$(window).bind('hashchange', Ajax.detectPage);
2011-06-15 23:06:46 +00:00
})