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