//Для персонажей
var duration = 500;        //Длительность в мс
var personage_count = 5    //количество персонажей

//Для слайдера
var step = 192;
var step_counter=0;
var start_move=-1*step;

	
	
/*--------------------Слайдер------------------------------*/	
//Последовательность вызовов:
/*
slider_left() - AJAX
   _callbackSlider(data)
      onmovecomplete()
*/
	
//Влево
function slider_left()
{			
		var tbl = $('production_table'); 
		if( tbl.getAttribute('process')!=1 )
		{
			tbl.setAttribute('process', 1);
			tbl.setAttribute('move', 1);
			tbl.setAttribute('course', 1);
			
			var start = parseInt(tbl.style.marginLeft);
			if( isNaN(start) )
			{
			  start=start_move;
			}			

			//Сделать AJAX и вставить td слева
			var out_xml=0;
			step_counter--;
			//При запросе загружаем предыдыущий перед step_counter элемент
			makeHttpRequest("/get_production_cell.php?sc="+(step_counter-1), "_callbackSlider(", out_xml);  			
			
			//перемещение с эффектом
			var myFx = new Fx.Style(tbl, 'margin-left', {transition: Fx.Transitions.Back.easeOut});
			myFx.start(start, start+step);
			myFx.addEvent('onComplete', function()
			{			   
				//alert('Move left end');
				tbl.setAttribute('move', 0);
			});
		}
};
	
//Вправо
function slider_right()
{
		var tbl = $('production_table'); 
		if(parseInt(tbl.getAttribute('process'))!=1)
		{
			tbl.setAttribute('process', 1);
			tbl.setAttribute('move', 1);
			tbl.setAttribute('course', -1);
			
			var start = parseInt(tbl.style.marginLeft);
			if( isNaN(start) )
			{
			  start=start_move;
			}

			//Сделать AJAX и вставить td слева
			var out_xml=0;
			step_counter++;		
			//При запросе загружаем следующий за step_counter элемент
			makeHttpRequest("/get_production_cell.php?sc="+(step_counter+1), "_callbackSlider(", out_xml);  
			
			//перемещение с эффектом
			var myFx = new Fx.Style(tbl, 'margin-left', {transition: Fx.Transitions.Back.easeOut});
			myFx.start(start, start-step);
			myFx.addEvent('onComplete', function()
			{			    
				//alert('Move right end');
				tbl.setAttribute('move', 0);
			});	
		}
};	

//callback-функция при перемещении - добавляет ячейки
function _callbackSlider(data)
{		
	var tbl = $('production_table'); 
	var tr = tbl.getElementsByTagName('tr')[0];
	var course = tbl.getAttribute('course');
		
	if(course < 0)
	{
		//Вправо
		var cell = tr.insertCell(-1);
		cell.innerHTML = data;
        cell.setAttribute('align','center');	
		cell.setAttribute('valign','top');
		cell.style.display = 'none';
	}
	else
	{
		//Влево
		var cell = tr.insertCell(0);
		cell.innerHTML = data;
        cell.setAttribute('align','center');
		cell.setAttribute('valign','top');
		cell.style.display = 'none';
	}
		
	
	//Только по завершению движения запустить показ ячеек таблицы
	if(tbl.getAttribute('move')==1)
	{
		setTimeout('onmovecomplete()', 200);
	}else
	{
		onmovecomplete();
	}
}

//Вызывается при завершении процесса движения (но после AJAX)
function onmovecomplete()
{	
	var tbl = $('production_table'); 
	
	if(tbl.getAttribute('move')==1)
	{
		setTimeout('onmovecomplete()', 200);
		return false;
	}
	
	var tr = tbl.getElementsByTagName('tr')[0];
	var course = tbl.getAttribute('course');
	
	if(course < 0)
	{
		//Вправо
		//alert('Ajax right end');
		tr.cells.item(tr.cells.length-1).style.display = '';
		tr.deleteCell(0);		
		tbl.style.marginLeft = start_move+'px';
	}else
	{
		//Влево
		//alert('Ajax left end');
		tr.cells.item(0).style.display = '';
		tr.deleteCell(tr.cells.length-1);
		tbl.style.marginLeft = start_move+'px';
	}
	
	tbl.setAttribute('process', 0);
}
/*-------------------/Слайдер------------------------------*/		



window.addEvent('domready', function() 
{		
	// MooTools is able to handle effects without the use of a wrapper,
	// so you are able to do effects with just one easy line.

	

	
	/*Действия для персонажей*/
	var personage = null;
	for(var i=1; i<personage_count+1; i++){
		personage = $('personage_'+i+'_over');
		personage.addEvent('mouseover', function(e) 
		{
		    //определяем персонажа
			if(e.id){
				var personage = e;
			}else{
				var personage = window.event ? window.event.srcElement : e ? e.target : null;
				if(!personage) return false;
				while(!personage.id || !personage.id.match(/^personage_\d+_over$/)){
					personage = personage.parentNode;
				}
			}
			//пишем последнее событие
			personage.setAttribute('last_event', 'mouseover');
			
			//Начать, только если процесс еще не идет
			if(parseInt(personage.getAttribute('process'))!=1)
			{
			  personage.setAttribute('process', '1');
			
			  //Показать большую картинку
			  var img_big = $(personage.id.replace('_over', '_big'));
			  var myFx = new Fx.Style(img_big, 'opacity', {duration: duration});
			  myFx.start(0, 1);
			
			  //Скрыть маленькую картинку
			  var img_small = $(personage.id.replace('_over', ''));
			  var myFx = new Fx.Style(img_small, 'opacity', {duration: duration});
			  myFx.start(1, 0);

			  myFx.addEvent('onComplete', function()
			  {
			    personage.setAttribute('process', '0');
				//если последним было другое событие, то выполняем его
				if(personage.getAttribute('last_event') == 'mouseout'){
					personage.fireEvent("mouseout", [personage], 0);
				}
			  })
			}
		});	
		
		personage.addEvent('mouseout', function(e) 
		{
		    //определяем персонажа
			if(e.id){
				var personage = e;
			}else{
				var personage = window.event ? window.event.srcElement : e ? e.target : null;
				if(!personage) return false;
				while(!personage.id || !personage.id.match(/^personage_\d+_over$/)){
					personage = personage.parentNode;
				}
			}
			//пишем последнее событие
			personage.setAttribute('last_event', 'mouseout');
			
			//Начать, только если процесс еще не идет
			if(parseInt(personage.getAttribute('process'))==0)
			{		
			  personage.setAttribute('process', '1');
			  
			  //Скрыть большую картинку
			  var img_big = $(personage.id.replace('_over', '_big'));
			  var myFx = new Fx.Style(img_big, 'opacity', {duration: duration});
			  myFx.start(1, 0.01);		
			
			  //Показать маленькую картинку
			  var img_small = $(personage.id.replace('_over', ''));
			  var myFx = new Fx.Style(img_small, 'opacity', {duration: duration});
			  myFx.start(0, 1);
			
			  myFx.addEvent('onComplete', function()
			  {
			    personage.setAttribute('process', '0');
				//если последним было другое событие, то выполняем его
				if(personage.getAttribute('last_event') == 'mouseover'){
					personage.fireEvent("mouseover", [personage], 0);
				}
			  })		
			}
		});
	}
	/*/Действия для персонажей*/
});
