/*Движение слайдера*/
function moveSlider(id, course, targ)
{
	//php-скрипт для ajax-запроса
	var phpScript = "/usr/extensions/ajax/slider.php";
	//подвижная часть
	var slider = $('#'+id);
	//нажатая кнопка
	var userRequest = true;
	
	if(!targ)
	{
		targ = slider.parent().parent().find('a.'+course+'_btn')[0];
		var userRequest = false;
	}
	//буфер
	var buffer = document.getElementById(id+'_buffer');
	if(buffer)
	{
		var bufferUse = (buffer.title!='not_use');
	}
	else
	{
		var bufferUse = true;
	}
		
	//если слайдер сейчас в движении, то ничего не делаем
	if(slider.attr('moving')==1) 
	{
		if(userRequest)
		{
			slider.attr('needMove', course);
		}
		return;
	}
	slider.attr('moving', 1);
	
	//сбрасываем таймер и задаем заново
	var timeout = slider.attr('timeout');
	if(timeout)
	{
		var timer = slider.attr('timer');
		if(timer)
		{
			clearTimeout(timer);
			//slider.removeAttr(timer);
		}
	
		var nCourse = slider.attr('course');
		timer = setTimeout(function(){moveSlider(id, nCourse);}, timeout);
		slider.attr('timer', timer);
	}

	
	//елементы внутри слайдера
	var items = $('#'+id+' > div.item');
	
	/*Определяем шаг движения*/
	var step;
	if(course=='up')
	{
		step = -items[0].offsetHeight;
	}
	if(course=='down')
	{
		step = items[0].offsetHeight;
	}
	if(course=='left')
	{
		step = -items[0].offsetWidth;
	}
	if(course=='right')
	{
		step = items[0].offsetWidth;
	}
	/*/Определяем шаг движения*/
	
	/*Текущее отклонение*/
	if(course=='up' || course=='down')
	{
		var attr = 'marginTop';
		var shift = parseInt(slider.css(attr));
		var showLength = slider[0].parentNode.offsetHeight;
	}
	if(course=='left' || course=='right')
	{
		var attr = 'marginLeft';
		var shift = parseInt(slider.css(attr));
		var showLength = slider[0].parentNode.offsetWidth;
	}
	/*/Текущее отклонение*/
	
	if(!shift) shift = 0;
	var newShift = shift + step;
	var absStep = Math.abs(step);
	
	/*Проверяем, нужно ли подгружать данные*/
	if(buffer)
	{
		showLength += 30;
		/*Подгружаем новые элементы*/
		if(slider.attr('loading')!=1)
		{
			/*если нет подгруженных элементов, то останавлисаем слайдер*/
			if((step > 0 && newShift > 0) || (step < 0 && (items.length*absStep+newShift+absStep) < showLength))
			{
				targ.className = targ.className + ' inactive';
				slider.attr('moving', 0);
				return false;
			}
			/*/если нет подгруженных элементов, то останавлисаем слайдер*/			
			
			if(bufferUse)
			{
				if(step > 0 && Math.abs(newShift) < 3*absStep)
				{
					slider.attr('loading', 1);
					var cnt = parseInt(items[0].getAttribute('title'));
					$.post(phpScript, { limit: (cnt-6)+",5"},
					  function(data){
						if(data.length > 0)
						{
							if(slider.attr('moving')==1)
							{
								buffer.innerHTML = data;
								buffer.setAttribute('pos', 'begin');
							}
							else
							{
								slider[0].innerHTML = buffer.innerHTML + slider[0].innerHTML;
								slider.css(attr, newShift - step*5);
							}					
							targ.className = targ.className.replace('inactive', '');
						}
						slider.attr('loading', 0);
					  });
				}

				if(newShift < 0 && ((items.length*absStep+newShift) < showLength+3*absStep))
				{
					slider.attr('loading', 1);
					var cnt = parseInt(items[items.length-1].getAttribute('title'));
					$.post(phpScript, { limit: cnt+",5"},
					  function(data){
						if(data.length > 0)
						{
							if(slider.attr('moving')==1)
							{
								buffer.innerHTML = data;
								buffer.setAttribute('pos', 'end');
							}
							else
							{
								slider[0].innerHTML = slider[0].innerHTML + buffer.innerHTML;
							}					
							targ.className = targ.className.replace('inactive', '');
						}
						slider.attr('loading', 0);
					  });
				}
			}
		}
		else
		{
			return false;
		}
		/*/Подгружаем новые элементы*/
	}
	else if(bufferUse)
	{
		/*Если новые элементы не подгружаются, то перемещаем из начала в конец или наоборот*/
		//if(newShift > 0)
		if(step > 0)
		{
			$('#'+id+' > div.item:last').remove().insertBefore('#'+id+' > div.item:first');
			newShift = shift;
			slider.css(attr, shift - step);
		}
		
		//if(newShift < 0 && ((items.length*absStep+newShift) < showLength))
		if(step < 0)
		{
			$('#'+id+' > div.item:first').remove().insertAfter('#'+id+' > div.item:last');
			newShift = shift;
			slider.css(attr, shift - step);
		}
		/*/Если новые элементы не подгружаются, то перемещаем из начала в конец или наоборот*/
	}
	
	/*Настройки анимации*/
	if(course=='up' || course=='down')
	{
		var settings = {
					'marginTop': newShift
					};
	}
	if(course=='left' || course=='right')
	{
		var settings = {
					'marginLeft': newShift
					};
	}
	/*/Настройки анимации*/	
	
	/*Если будем двигать, то нужно активировать противоположную кнопку*/
	var parent = targ.parentNode;
	var child = parent.childNodes;
	for(var i=0; i<child.length; i++)
	{
		if(child[i].tagName=='A' && child[i].className.indexOf(course+'_btn')>-1)
		{
			child[i].className = child[i].className.replace(/\s*inactive/g, '');
		}
	}
	/*/Если будем двигать, то нужно активировать противоположную кнопку*/

	slider.animate(settings, "easein", function(){
													slider.attr('moving', 0);
													
													/*если нет подгруженных элементов, то деактивируем кнопки*/
													if(buffer && ((step > 0 && newShift+absStep > 0) || (step < 0 && (items.length*absStep+newShift) < showLength)))
													{
														targ.className = targ.className + ' inactive';
													}
													/*/если нет подгруженных элементов, то деактивируем кнопки*/
													
													/*Подгружаем новые элементы*/
													if(buffer && buffer.innerHTML.length > 0)
													{
														if(buffer.getAttribute('pos')=='begin')
														{
															slider[0].innerHTML = buffer.innerHTML + slider[0].innerHTML;
															slider.css(attr, newShift - step*5);
														}
														else
														{
															slider[0].innerHTML = slider[0].innerHTML + buffer.innerHTML;
														}
														buffer.innerHTML = '';
														targ.className = targ.className.replace('inactive', '');
													}
													/*/Подгружаем новые элементы*/
													
													/*Удаляем старые элементы*/
													if(step < 0 && newShift < step*10)
													{
														$('#'+id+' > div.item:first').remove();
														slider.css(attr, newShift - step);
													}
													if(step > 0 && ((items.length*absStep+newShift) > showLength+10*absStep))
													{
														$('#'+id+' > div.item:last').remove();
													}
													/*/Удаляем старые элементы*/
													
													/*Двигаем если нужно по запросу пользователя*/
													var needMove = slider.attr('needMove');
													if(needMove)
													{
														slider.removeAttr('needMove');
														moveSlider(id, needMove);
													}
													/*/Двигаем если нужно по запросу пользователя*/
												});
}
/*/Движение слайдера*/

/*Смена вкладок*/
function changeTab(n, link)
{
	if($('#tabsTitles').attr('mode')=='noscript')
	{
		return true;
	}
	
	$('#tabsTitles a').removeClass('active').addClass('active');
	$('#tabsContents > div').hide();
	
	link.className = '';
	document.getElementById('tabsContent'+n).style.display = 'block';
	link.blur();
	
	return false;
}
/*/Смена вкладок*/

/*Выпадающие списки с услугами*/
function checkService(select)
{
	var form = select;
	while(form.tagName!='FORM')
	{
		form = form.parentNode;
	}
	var key = select.options[select.selectedIndex].getAttribute('rel');
	
	var i = 0;
	while(document.getElementById('service'+i))
	{
		document.getElementById('service'+i).style.display = 'none';
		document.getElementById('service'+i).disabled = true;
		i++;
	}
	document.getElementById('service'+key).style.display = '';
	document.getElementById('service'+key).disabled = false;
}
/*/Выпадающие списки с услугами*/

/*Фильтр для расписания*/
function submitCFilter(select)
{
	var form = document.cfilterForm;
	form.action="/events/schedule/"+(select.value ? select.value+'/' : '');
	form.submit();
}
/*/Фильтр для расписания*/
