$(document).ready(function(){ 
	var loadImage = function(src){
		var _img = new Image();
		_img.src = src;
		_img.onload = function(){};
	};
	var indicator = "images/indicator.gif";
	loadImage(indicator);

	var _wasUrl = window.location.href.replace(/#.*/, '');
	var tmpImage = $(document.createElement("img")).
		attr('src', indicator).
		attr('width', 80).
		attr('height', 80).
		css('padding-top', '50px');
	
	var form = $('#SearchForm');
	var tmpSuccessCount = 0;
	var tmpCurrentPage = 1;
	var tmpCountOnPage = 0;
	var tmpDiv = $(document.createElement('div')).
		css('position', 'absolute').
		css('top', '0').
		css('left', '0').
		css('display', 'none');
	
	$('body').append(tmpDiv);
	var searchForm = $('#SearchForm');		
	searchForm.find('#MainInput').click(function(){
		$('.ac_results').hide();	
	});
	
	searchForm.find('#MainInput').bind('keydown', function(event){
		if (event.keyCode == 13) {
			tmpCountOnPage = 1;
			pageInput.val(1);
			//$('.ac_results').hide();
		}
	});
	

	var searchInput = searchForm.find("input[name='SearchForm[search]']");
	searchInput.attr('id', 'MainSearchInput');
	var pageInput = searchForm.find("input[name='SearchForm[page]']");
	var hiddenSearch = searchForm.find("input[name='SearchForm[hiddenSearch]']");
	var submitButton = searchForm.find("input[type='submit']");
	
	var waitProgress = false;
	var renderProgress = false;
	
	submitButton.click(function(){
		pageInput.val(1);
		$(this).blur();
	});
	
	$('.Example').click(function(){
		searchInput.val($(this).find('i').text());
	});
	
	var getPageCount = function(){
		return Math.ceil( parseFloat(tmpSuccessCount) / parseFloat(tmpCountOnPage) );
	}
	
	var dataRender = function(count){
		$('#content').find('h1:first').html('Результаты поиска').fadeIn('fast');
		
		$('.ItemSpace').html(tmpDiv.html()).
			css('opacity', '0').
			css('display', 'block').
			css('text-align', 'left');
		$('.ItemSpace UL.ratingStars' ).rating();
		if (getPageCount() > 1) {
			
			var paginator = $(document.createElement('div'));
			var curPage = $(document.createElement('div')).html(tmpCurrentPage).
				addClass('CurrentPage').attr('title', 'Текущая страница поиска');
			var toLeft = $(document.createElement('span')).html('&larr;').addClass('toLeft').
				attr('title', 'Предыдущая');
			var toRight = $(document.createElement('span')).html('&rarr;').addClass('toRight').
				attr('title', 'Следующая');;
			
			
			var downPaginator = $(document.createElement('ul')).addClass('DownPaginator');
			for(var i = 0; i < getPageCount() ; i++){
				var li = $(document.createElement('li'));
				var a = $(document.createElement('a'));
				a.html(i+1);
				a.attr('href', 'javascript:void(0)');
				if(tmpCurrentPage == i+1){
					a.addClass('selected');
				}
				li.append(a);
				a.click(function(){
					var _this = $(this);
					downPaginator.fadeOut('slow', function(){
						searchInput.val(hiddenSearch.val());
						downPaginator.find('.selected').removeClass('selected');
						pageInput.val(parseInt(_this.html()));
						_this.addClass('selected');
						form.submit();
					});
				});
				downPaginator.append(li);
				downPaginator.append("\n");
			}
			
			toLeft.click(function(){
				if(tmpCurrentPage > 1 ){
					searchInput.val(hiddenSearch.val());
					pageInput.val(tmpCurrentPage - 1);
					form.submit();
				}
			});
			
			toRight.click(function(){
				if(tmpCurrentPage < getPageCount() ){
					searchInput.val(hiddenSearch.val());
					pageInput.val(tmpCurrentPage + 1);
					form.submit();
				}
			});
			
			paginator.addClass('Paginator').append(curPage).append(toLeft).append(toRight);
			$('.ItemSpace').prepend(paginator);
			$('.ItemSpace').append($(document.createElement('div')).append(downPaginator));
			
		}
		$('.ItemSpace').animate({height: tmpDiv.height(), opacity: 1}, 'slow', function(){
			$('.ItemSpace').css('height', 'auto');
			
			sstchur_SmartScroller_GetCoords();
			var offset = $('.ItemSpace').offset().top;
			var scroll = scrollY;

			/*
			var smoothScrol = function(){
				scroll += 30;
				if(scroll >= offset - 10){
					scroll = offset - 10;
					clearInterval(_iHandler);
					submitButton.attr('disabled', false);
				}
				window.scrollTo(0, scroll);
			}
			var _iHandler = setInterval(smoothScrol, 40);
			*/
			
			renderProgress = false;
			submitButton.attr('disabled', false);

		
		});
	}
	
	var iHandler;
	var wait = function(){
		if(!waitProgress){
			clearInterval(iHandler);
			dataRender();
			
		}else{
		}
	};
	
	// Основные обработчики
	var dataSend = function(data){
		renderProgress = true;
		tmpSuccessCount = data.Count;
		tmpCurrentPage = parseInt(form.find("[type=hidden]").val());
		if(isNaN(tmpCurrentPage)){
			tmpCurrentPage = 1;
		}
		tmpCountOnPage = data.CountOnPage;
		tmpDiv.html(data.Html);
		
		//jQuery('UL.ratingStars' , tmpDiv ).rating(); 
	        
		iHandler = setInterval(wait, 1000);
	}

	
	var beforeSubmit = function(){
		if(waitProgress || renderProgress){
			return false;
		}
		
		if(!searchInput.val()){
			searchForm.find('.error').remove();
			searchForm.find('.Message').after('<label for="MainSearchInput" class="error">Нужно понять, что мы ищем</label>');
			return false;
		}
		waitProgress = true;
		submitButton.attr('disabled', true);
		if(isNaN(parseInt(pageInput.val()))){
			pageInput.val(1);
		}
				
		searchForm.find('.error').remove();
		
		window.location.href =  _wasUrl + "#" + encodeURIComponent(searchInput.val()) +
			(pageInput.val() && pageInput.val() != 1 ? '/' + pageInput.val() : '');
		
		var aOpt = {opacity: 0, height: 200};
		
		//$('#content').find('h1:first').fadeOut('slow');
		$('#obzor').hide();
		$('#maincontent').fadeOut('fast');
		$('.ItemSpace').animate(
			aOpt, Math.round( $('.ItemSpace').height() * 0.7), function(){
				$('.ItemSpace').html(tmpImage).
				css('text-align', 'center').
				css('display', 'none').
				css('opacity', '1').fadeIn('slow', function(){
					waitProgress = false;
				});
			});
		$('.ac_results').hide();
		var cSpace = $('#content').find('.text');
		if(cSpace.is(':visible')){
			cSpace.slideUp('fast');
		}
		hiddenSearch.val(searchInput.val());
		return true;
	};
	
	var onError = function(){
		alert('Извините, произошла ошибка, пожалуйста, попробуйте еще раз');
	}

	form.ajaxForm({
		dataType: 'json', 
		success: dataSend,
		error: onError,
		beforeSubmit: beforeSubmit
	}); 
	
	//Стартовая инициализация
	var current;
	if(current = window.location.href.match(/#(.*)$/g)){
		current = current[0].substr(1);
		if(current){
			var _cur = '';
			var page = 1;
			
			current = current.split('/');
			
			if(current.length > 1 && current[1]){
				page = current[1];
			}
			current = current[0];
		}
		
		if(isNaN(page)){
			page = 1;
		}
		
		if (current = decodeURIComponent(current)) {
			searchInput.val(current);
			pageInput.val(page);
			searchForm.submit();
		}
	}
});

function sstchur_SmartScroller_GetCoords(){
	//var scrollX, scrollY;
      
    if (document.all){
		if (!document.documentElement.scrollLeft)
			scrollX = document.body.scrollLeft;
        else
			scrollX = document.documentElement.scrollLeft;
               
        if (!document.documentElement.scrollTop)
			scrollY = document.body.scrollTop;
       else
	   	scrollY = document.documentElement.scrollTop;
    }   
    else
    {
		scrollX = window.pageXOffset;
        scrollY = window.pageYOffset;
    }
}

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}
	
function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
	
function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
