/*  GRIMLORDS - Copyright ? 2009 Marc Buchholz
*   -------------------------------------------------
*   Projekt:        Grimlords.de 
*   Datei:          grimlords_battle.js
*   Beschreibung:   JS für Battle in Grimlords 
*   Autor:          Marc Buchholz
*   Datum:          15.06.2009
*   
*   Letzte ?nderungen:
*   -------------------------------------------------
*   MB 15.06.2009   Erstellt / Kompletter Neuaufbau
* 
*/ 

/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                         CHAR_MOVE                                                 //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Spieler bewegt sich */

function char_move(dir)
{
  var params = "action=1"+"&dir="+dir;
  
  hide_navigation();
  $('msg_loader').update('<img src="images/misc/ajax-loader.gif">');
  new Ajax.Request("ajax/set_battle_char.php", { method: "post", parameters: params, asynchronous: true, 
				onComplete:  eval_request_battle,
				onFailure: function() { show_request_failure(); },
				onException: function(req,exception) { alert("Fehler in Request.\n\n" + exception); return true;}  });   
  
  return false;
}


/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                       SHOW_NAVIGATION                                             //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Zeigt die Navigation an */

function show_navigation()
{
   new Effect.Appear($('navigation'),{duration: 0.5});
   new Effect.Appear($('weapon'),{duration: 0.5});
   new Effect.Appear($('skip'),{duration: 0.5});
   new Effect.Appear($('flee'),{duration: 0.5});
   new Effect.Appear($('item'),{duration: 0.5});
   new Effect.Appear($('spell'),{duration: 0.5});
}

/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                       HIDE_NAVIGATION                                             //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Versteckt die Navigation an */

function hide_navigation()
{
	$('navigation').hide();
	$('skip').hide();
	$('flee').hide();
	$('item').hide();
	$('spell').hide();
	$('weapon').hide();
}

/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                         CHAR_WEAPON                                               //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Spieler benutzt eine Waffe */

function char_weapon(type)
{
  var params = "action=2"+"&type="+type;
  
  hide_navigation();
  $('msg_loader').update('<img src="images/misc/ajax-loader.gif">');
  
  new Ajax.Request("ajax/set_battle_char.php", { method: "post", parameters: params, asynchronous: true, 
				onSuccess: eval_request_battle,
				onFailure: function() { show_request_failure(); },
				onException: function(req, exception) { alert("Fehler in Request. (char_weapon)\n\n" + exception); return true;  } }); 
  return true;
}

/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                         CHAR_SPELL                                                //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Spieler setzt einen Zauber ein */

function char_spell(spell_head, stage)
{
  var params = "action=3"+"&spell_head="+spell_head+"&stage="+stage;
  
  hide_navigation();
  $('msg_loader').update('<img src="images/misc/ajax-loader.gif">');
  
  new Ajax.Request("ajax/set_battle_char.php", { method: "post", parameters: params, asynchronous: true, 
					onSuccess: eval_request_battle,
					onFailure: function() { show_request_failure(); },
					onException: function(req, exception) { alert("Fehler in Request. (char_spell)\n\n" + exception); return true;  } });  
  $('special_view').value = 0;  
  return true;
}

/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                         CHAR_ITEM                                                 //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Spieler setzt ein Item ein */

function char_item(item_id)
{
  var params = "action=4"+"&item_id="+item_id;
  
  hide_navigation();
  $('msg_loader').update('<img src="images/misc/ajax-loader.gif">');
  
  new Ajax.Request("ajax/set_battle_char.php", { method: "post", parameters: params, asynchronous: true,
				 onSuccess: eval_request_battle,
				 onFailure: function() { show_request_failure(); },
				 onException: function(req, exception) { alert("Fehler in Request. (char_item)\n\n" + exception); return true;  } }); 
  $('special_view').value = 0;    
  return true;
}

/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                         CHAR_SKIP                                                 //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Spieler setzt eine Runde aus */

function char_skip()
{
  var params = "action=5";
  
  hide_navigation();
  $('msg_loader').update('<img src="images/misc/ajax-loader.gif">');
  
  new Ajax.Request("ajax/set_battle_char.php", { method: "post", parameters: params, asynchronous: true,
				 onSuccess: eval_request_battle,
				 onFailure: function() { show_request_failure(); },
				 onException: function(req, exception) { alert("Fehler in Request. (char_skip)\n\n" + exception); return true;  } });  
  return true;
}

/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                         CHAR_FLEE                                                 //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Spieler ergreift die Flucht */

function char_flee()
{
  var params = "action=6";
  
  hide_navigation();
  $('msg_loader').update('<img src="images/misc/ajax-loader.gif">');
  
  new Ajax.Request("ajax/set_battle_char.php", { method: "post", parameters: params, asynchronous: true,
				 onSuccess: eval_request_battle,
				 onFailure: function() { show_request_failure(); },
				 onException: function(req, exception) { alert("Fehler in Request. (char_flee)\n\n" + exception); return true;  } });   
  return true;
}


/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                     MONSTER_MOVE                                                  //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Monster macht seinen Zug */

function monster_move()
{
  $('msg_loader').update('<img src="images/misc/ajax-loader.gif">'); 
  new Ajax.Request("ajax/set_battle_monster.php", { method: "post", asynchronous: true, 
				onSuccess: eval_request_battle,
				onFailure: function() { show_request_failure(); },
				onException: function(req, exception) { alert("Fehler in Request. (monster_move)\n\n" + exception); return true;  } });  
  return true;
}

/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                    EVAL_REQUEST_BATTLE                                            //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Request Antwort in JS ausführen */

function eval_request_battle(answer)
{
	eval(answer.responseText);
	$('msg_loader').update('');
}

/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                         BATTLE_OVER                                               //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Zeigt den Loottable an */
function battle_over(loot)
{
	  
	  if (!$('loottable'))
	  {
		var loottable = new Element('div', { 'id': 'loottable'});
		$('main_content').appendChild(loottable);   
	  } 
	  else
	  {
		$('loottable').show();
	  }  
	   
	  $('loottable').update('<img src="images/misc/ajax-loader.gif">');
	  
	  new Ajax.Updater("loottable", "ajax/get_battle_loot.php", {evalScripts: true, 
					onSuccess: function(transport) { $('loottable').update(transport.responseText); },
					onFailure: function(transport) { show_request_failure();; },
					onException: function(req,exception) { alert("Fehler in Request. (battle_over)\n\n" + exception); return true; } });
	 
}

/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                      BATTLE_IDENTIFY                                              //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
function battle_identify()
{
	
	if (!$('identify'))
	  {
		var identify = new Element('div', { 'id': 'identify'});
		$('main_content').appendChild(identify); 
		
		$('identify').update('<img src="images/misc/ajax-loader.gif">');
	  
		new Ajax.Updater("identify", "ajax/get_battle_identify.php", {evalScripts: true, 
						onSuccess: function(transport) { $('identify').update(transport.responseText); },
						onFailure: function(transport) { show_request_failure();; },
						onException: function(req,exception) { alert("Fehler in Request. (battle_indentify)\n\n" + exception); return true; } });
	  } 
	  else
	  {
		new Effect.toggle($('identify'),'Blind', {duration:1});
	  }  
		  
}

/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                          CHECK_TILE                                               //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Prüft in welche Richtung man laufen kann und stell die Navigation entsprechend dar */
function check_tile()
{
   
   // Osten
   if ($('char_y').value == 4 || (parseInt($('char_y').value) + 1 == $('monster_y').value && $('char_x').value == $('monster_x').value ) ) 
   { 
		$('nav_east').className = 'buttonhover_east_disable'; 
		$('nav_east').onclick = function(){ };
   } 
   else 
   { 
		$('nav_east').className = 'buttonhover_east';
		$('nav_east').onclick = function(){ char_move(2); };
   }
   
   // Westen
   if ($('char_y').value == 0 || (parseInt($('char_y').value) - 1 == $('monster_y').value && $('char_x').value == $('monster_x').value ) )
   { 
		$('nav_west').className = 'buttonhover_west_disable';
		$('nav_west').onclick = function(){ }; 
   } 
   else 
   { 
		$('nav_west').className = 'buttonhover_west';
		$('nav_west').onclick = function(){ char_move(4); }; 
   }
   
   // Süden
   if ($('char_x').value == 4 || (parseInt($('char_x').value) + 1 == $('monster_x').value && $('char_y').value == $('monster_y').value ) )
   { 
		$('nav_south').className = 'buttonhover_south_disable';
		$('nav_south').onclick = function(){ };    
   }
   else 
   { 
		$('nav_south').className = 'buttonhover_south'; 
		$('nav_south').onclick = function(){ char_move(3); };
   }
   
   // Norden
   if ($('char_x').value == 0 || (parseInt($('char_x').value) - 1 == $('monster_x').value && $('char_y').value == $('monster_y').value ) ) 
   { 
		$('nav_north').className = 'buttonhover_north_disable';
		$('nav_north').onclick = function(){ }; 
   } 
   else 
   { 
		$('nav_north').className = 'buttonhover_north';
		$('nav_north').onclick = function(){ char_move(1); }; 
   }
}

/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                         BATTLE_FINISH                                             //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Beendet den Kampf */

function battle_finish()
{
  
	new Ajax.Request("ajax/set_battle_finish.php", { method: "post", asynchronous: true, 
			onSuccess: function(answer) { eval(answer.responseText); },
			onFailure: function(transport) { show_request_failure();; },   
			onException: function(req,exception) { alert("Fehler in Request. (battle_finish)\n\n" + exception); return true; } });  
  
}

/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                     BATTLE_ANIMATE                                                //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Stellt den Angriff grafisch da */  

function battle_animate(turn, type, c_points, c_color, m_points, m_color, graphic, size, speed, extra)
{
	
	/* extra: 0=neutral (Nichts passiert)
			  1=Treffer ohne Schaden (Pulsate Defense Figur)
			  2=Kritischer Treffer 
			  3=Patzer (Pulsate Attack Figur)
			  4=Zu weit entfernt (Grafik verändert sich)	
	*/
	var figur_attack = "";
	var figur_defense = "";
	
	$('attack_graphic').style.backgroundImage = 'url(images/battle/'+graphic+')'; 
					 
	if (turn == 1) {figur_attack = 'char'; figur_defense = 'monster'; }
	if (turn == 2) {figur_attack = 'monster'; figur_defense = 'char'; }
	
	// Grösse von Div anpassen
	$('attack_graphic').style.width = size+'px';
	$('attack_graphic').style.height = size+'px'; 
	
			
	// Grafik erscheint bei Monster
	if (type == 1)
	{
		
		$('attack_graphic').style.left = ($(figur_defense).offsetLeft + (50 - (size/2)) )+'px';
		$('attack_graphic').style.top = ($(figur_defense).offsetTop + (50 - (size/2)) )+'px';	
		
		$('attack_graphic').style.backgroundPosition = '0px 0px';
	
		new Effect.Appear($('attack_graphic'),{duration: speed, queue: 'end' });
		new Effect.Fade($('attack_graphic'), { duration: speed, queue: 'end', afterFinish: 
			function() 
			{ 
				
				// Wenn Treffer mit Schadenspunkten
				if (m_points > 0) 
				{
					show_points('monster', ''+m_color+'', ''+m_points+'');
				}
				
				// Wenn Schadenspunkte
				if (c_points > 0)
				{
					show_points('char', ''+c_color+'', ''+c_points+'');
				}
				
				// Wenn Treffer ohne Schadenspunkte
				if (extra == 1)
				{
					new Effect.Pulsate($(figur_defense), { pulses: 2, from: 0.2, duration: 0.5 });	
				}
				
				// Wenn Patzer
				if (extra == 3)
				{
					new Effect.Pulsate($(figur_attack), { pulses: 2, from: 0.2, duration: 0.5 });	
				}
				
			} 
		});    
		
	}
	
	// Grafik bewegt sich zu Monster
	if (type == 2)
	{	
		
		// Startposition
	   $('attack_graphic').style.left = ($(figur_attack).offsetLeft + 28)+'px';
	   $('attack_graphic').style.top = ($(figur_attack).offsetTop + 28 )+'px';
	   
	   battle_graphic_direction('attack_graphic', ''+figur_attack+'', 45, 4);
			
	   // Zielposition 
	   // Berechnung: 100/2(Grösse Div Figur) - 45/2(Grösse Div Attack-Grafik)
	   target_x = (($(figur_defense).offsetLeft + 28) - ($(figur_attack).offsetLeft + 28)) ;
	   target_y = (($(figur_defense).offsetTop + 28) - ($(figur_attack).offsetTop + 28)) ;
	   
	   var target_temp_x = target_x;
	   var target_temp_y = target_y; 
	
	   // Flugzeit
	   if (target_x < 0 ) { target_temp_x = target_x * (-1); }
	   if (target_y < 0 ) { target_temp_y = target_y * (-1); }
			  
	   target_time = 0.2 * ((target_temp_x / 2) + target_temp_y) / 64;
	   if (target_time < 0) { target_time = target_time *(-1); }	
	   
	   new Effect.Appear($('attack_graphic'),{duration: speed, queue: 'end' });
	   new Effect.Move($('attack_graphic'),{ x : target_x, y : target_y , duration: target_time, queue: 'end', afterFinish: 
			function() 
			{ 
				
				// Wenn Monster getroffen wurde
				if (m_points > 0) 
				{
					show_points('monster', ''+m_color+'', ''+m_points+'');
				}
				
				// Spieler hat auch Punkte
				if (c_points > 0)
				{
					show_points('char', ''+c_color+'', ''+c_points+'');
				}
				
				// Wenn Treffer ohne Schadenspunkte
				if (extra == 1)
				{
					new Effect.Pulsate($(figur_defense), { pulses: 2, from: 0.2, duration: 0.5 });    
				}
				
				// Wenn Patzer
				if (extra == 3)
				{
					new Effect.Pulsate($(figur_attack), { pulses: 2, from: 0.2, duration: 0.5 });    
				}

			} 
		});    
		new Effect.Fade($('attack_graphic'), { duration:0.3, queue: 'end' }); 

	}
	
	// Grafik bleibt bei Charakter
	if (type == 3)
	{
		$('attack_graphic').style.left = ($(figur_attack).offsetLeft + (50 - (size/2)) )+'px';
		$('attack_graphic').style.top = ($(figur_attack).offsetTop + (50 - (size/2)) )+'px';    
		
		$('attack_graphic').style.backgroundPosition = '0px 0px';
	
		new Effect.Appear($('attack_graphic'),{duration: speed, queue: 'end' });
		new Effect.Fade($('attack_graphic'), { duration: speed, queue: 'end', afterFinish: 
			function() 
			{ 
				
				// Wenn Monster getroffen wurde
				if (m_points > 0) 
				{
					show_points('monster', ''+m_color+'', ''+m_points+'');
				}
				
				// Spieler hat auch Punkte
				if (c_points > 0)
				{
					show_points('char', ''+c_color+'', ''+c_points+'');
				}
				
				
				
			} 
		});    
	
	
	}
	
}

/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                      SHOW_POINTS                                                  //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Zeigt Punkte in der Battle */

function show_points(id, color, points)
{
	
	var point_string = '';
	
	// Negative Punkte
	if (color == 'hit_red' || color == 'hit_lila') { point_string = '-'+points+''; } 
	// Postive Punkte
	if (color == 'hit_green' || color == 'hit_blue') { point_string = '+'+points+''; }
	
	if (!$('hit_'+id+''))
	{
		var el = new Element('div', { 'id': 'hit_'+id+'','style': 'position: absolute; z-index: 900;'});                         
		   
		$('battlefield').appendChild(el);
		el.style.left = ($(id).offsetLeft + 32)+'px';  
		el.style.top = ($(id).offsetTop + 20)+'px';            
	}
	else
	{
		$('hit_'+id+'').show(); 
		$('hit_'+id+'').style.left = ($(id).offsetLeft + 32)+'px';  
		$('hit_'+id+'').style.top = ($(id).offsetTop + 20)+'px';   
	} 
	  
	$('hit_'+id+'').className = ''+color+''; 
	$('hit_'+id+'').update(''+point_string+'');
	  
	new Effect.HitPoint('hit_'+id+'',{duration: 1.0 });
	  
	if (color == 'hit_red' && points > 0 )
	{
	  new Effect.Pulsate(''+id+'', { pulses: 2, from: 0.2, duration: 0.5 });
	}      

	//alert(''+figure+','+color+','+points+'');

}

function show_points_extra(id, color, points, delay, id_add)
{
	
	var point_string = '';
	
	// Negative Punkte
	if (color == 'hit_red' || color == 'hit_lila') { point_string = '-'+points+''; } 
	// Postive Punkte
	if (color == 'hit_green' || color == 'hit_blue') { point_string = '+'+points+''; }
	
			new Effect.Fade($('dummy'),{duration: delay, queue: 'end', afterFinish: 
				function() 
				{ 
		
			if (!$('hit_'+id_add+'_'+id+''))
			{
				var el = new Element('div', { 'id': 'hit_'+id_add+'_'+id+'','style': 'position: absolute; z-index: 900;'});                         
				   
				$('battlefield').appendChild(el);
				el.style.left = ($(id).offsetLeft + 32)+'px';  
				el.style.top = ($(id).offsetTop + 20)+'px';            
			}
			else
			{
				$('hit_'+id_add+'_'+id+'').show(); 
				$('hit_'+id_add+'_'+id+'').style.left = ($(id).offsetLeft + 32)+'px';  
				$('hit_'+id_add+'_'+id+'').style.top = ($(id).offsetTop + 20)+'px';   
			} 
			  
			$('hit_'+id_add+'_'+id+'').className = ''+color+''; 
			$('hit_'+id_add+'_'+id+'').update(''+point_string+'');
			  
			new Effect.HitPoint('hit_'+id_add+'_'+id+'',{duration: 1.0 });
			  
			if (color == 'hit_red' && points > 0 )
			{
			  new Effect.Pulsate(''+id+'', { pulses: 2, from: 0.2, duration: 0.5 });
			}    
		
	} });  

}


function show_update_bar(id, type, value, delay)
{
	new Effect.Fade($('dummy'),{duration: delay, queue: 'end', afterFinish: 
				function() 
				{ 
					update_bar(id, type, value, delay);				
				}
	});
}

/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                          CHAR_SHOW                                                //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Zeigt verfügbare Zauber bzw. Items an */


function char_show(view)
{
	
	if (!$('special'))
	{
		
		// Item
		if (view == 1)
		{
			var special = new Element('div', { 'id': 'special', 'class': 'special_item'});                         
			$('main_content').appendChild(special);
		}
		
		// Zauber
		if (view == 2)
		{
			var special = new Element('div', { 'id': 'special', 'class': 'special_spell'});                         
			$('main_content').appendChild(special);
		}    
	
	}
	else
	{
		// Item
		if (view == 1)
		{
			$('special').className = 'special_item';
		}
	   
		// Zauber
		if (view == 2)
		{
			$('special').className = 'special_spell';
		}

		$('special').show();
	}
	
	$('special').update('<img src="images/misc/ajax-loader.gif">');
	
	if (view != $('special_view').value)
	{
		var params = "view="+view;  
		$('special').update('<img src="images/misc/ajax-loader.gif">');
		if (view == 1 || view == 2 ) { $('special_view').value = view; }
	
		new Ajax.Updater("special", "ajax/get_battle_action.php", { method: "post", asynchronous: true, parameters: params,
				onSuccess: function(transport) { $('special').update(transport.responseText); },
				onException: function(transport) { $('special').update('Fehler'); } 
				});
	}
	else
	{
		$('special').hide();
		$('special_view').value = 0;
		return false;
	}
	
}


/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                            BATTLE_GRAPHIC_DIRECTION                                               //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Ermittelt die Richtung in die sich Spielfigur bzw. Monster drehen muss */ 

function battle_graphic_direction(id, figure, size, pictures)
{
	
	if (figure == 'char') { figure_1 = 'monster'; }
	if (figure == 'monster') { figure_1 = 'char';} 
	
	var x = $(''+figure+'_x').value - $(''+figure_1+'_x').value;
	var y = $(''+figure+'_y').value - $(''+figure_1+'_y').value; 
	
	var x_sign = 0;
	var y_sign = 0;
	
	// Vorzeichen Bereinigung
	if (x < 0) { x_sign = x *(-1); } else { x_sign = x; }
	if (y < 0) { y_sign = y *(-1); } else { y_sign = y; }
	
	var pos = 0;
	var faktor = 0;
	
	if (x == 0)
	{
		if ( y > 0 ) { faktor = 1;  }
		if ( y < 0 ) { faktor = 3;  }
	}
	
	if (x > 0)
	{
		if ( y > 0 )
		{
			if (x_sign > y_sign) {faktor = 2; } else { faktor = 1; }
		} 
		
		if ( y == 0 ) { faktor = 2; }
		
		if ( y < 0 )
		{
			if (x_sign > y_sign) { faktor = 2;} else { faktor = 3; }
		} 
	}
	
	if (x < 0)
	{
		if ( y > 0 )
		{
			if (x_sign > y_sign) { faktor = 0; } else { faktor = 1; }
		} 
		
		if ( y == 0 ) { faktor = 0; }
		
		if ( y < 0 )
		{
			if (x_sign > y_sign) { faktor = 0; } else { faktor = 3; }
		} 
	}
	
		
	if (pictures == 4) { pos = faktor * size; }
	
	if (pictures == 8) { pos = size + (faktor * 2) * size; }    
	
	
	$(id).style.backgroundPosition = '-'+pos+'px 0px';

}



/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                     SPELL_STAGE_BATTLE                                            //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* Zeigt die einzelnen Zauberstufen an */ 

function spell_stage_battle(spell_head, spell_name, spell_max_stage)
{
  if ($('spell_stage'))
  {
	
  var params = "view=3"+"&spell_head="+spell_head+"&spell_name="+spell_name;
  
  $('spell_stage').update('<img src="images/misc/ajax-loader.gif">');
  
  
  slider_values = new Array();
  for (var i = 1; i <= spell_max_stage; ++i)
  {
	  slider_values[i] = i;  	
  }
	
  new Ajax.Updater("spell_stage", "ajax/get_battle_action.php", {method: "post", asynchronous: true, parameters: params,
		onSuccess: function(transport) { $('spell_stage').update(transport.responseText); },
		onException: function(transport) { $('spell_stage').update('Fehler'); } 
		});
		
  }
  else
  {
	return false;
  }
}


/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* //                                                      SHOW_RANGE                                                   //*/
/* ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
// Färbt die Tiles die in Reichweite einer Waffe bzw. Zaubers liegen ein

function show_range(range, range_type)
{
  
  // Direkt
  if (range_type == 0)
  {
	
	var player = get_tile_id($('char_x').value, $('char_y').value );
	var el = new Array();    //el[j++]
	var y = 5;
	var x = 1;
	
	for (i=0,j=0; i < range; i++)
	{
		
		// - Y
		if (player - y >= 0 ) { el[j++] = (player - y); }
		// + Y
		if (player + y <= 24 ) { el[j++] = (player + y); }
		
		// - X
		if (player - x >= ($('char_y').value * 5) ) { el[j++] = (player - x); }
		// + X
		if (player + x <= ($('char_y').value * 5 + 4) ) { el[j++] = (player + x); }
		
		y = y + 5;
		x = x + 1;
	}
	
	for(l=0; l<el.length; l++)
	{
		$('tile_overlay_'+el[l]+'').className = 'tile_overlay_on';
	}
 
  }
  
  // Bereich/Area
  if (range_type == 1)
  {

	var el = new Array();    //el[j++]
	
	for (i=1,j=0; i <= range; i++)
	{
		
		var element_1 = get_tile_id(parseInt($('char_x').value) , parseInt($('char_y').value) - i );
		var element_2 =	get_tile_id(parseInt($('char_x').value) , parseInt($('char_y').value) + i );	
		
		if (element_1 != 99) { el[j++] = element_1; }
		if (element_2 != 99) { el[j++] = element_2; }
		
		for (k=1; k <= range; k++)
		{
			
			for (u=(parseInt($('char_y').value)-i); u <= (parseInt($('char_y').value)+i); u++)
			{
				var element_3 = get_tile_id(parseInt($('char_x').value)-k , u );
				var element_4 = get_tile_id(parseInt($('char_x').value)+k , u );
				
				if (element_3 != 99) { el[j++] = element_3; }
				if (element_4 != 99) { el[j++] = element_4; }
			}
		
		}
	}
	
	for(l=0; l<el.length; l++)
	{
		$('tile_overlay_'+el[l]+'').className = 'tile_overlay_on';
	}
	
  }
  
   // Bei Monster
  if (range_type == 2)
  {
	var monster = get_tile_id($('monster_x').value, $('monster_y').value );
	$('tile_overlay_'+monster+'').className = 'tile_overlay_on';    
  }
  
  // Bei Spieler
  if (range_type == 3)
  {
	var player = get_tile_id($('char_x').value, $('char_y').value );
	$('tile_overlay_'+player+'').className = 'tile_overlay_on';    
  }
  
  // Diagonal
  if (range_type == 4)
  {
	
	var el = new Array();    //el[j++]
	
	for (i=1,j=0; i <= range; i++)
	{
		var element_1 = get_tile_id(parseInt($('char_x').value) - i, parseInt($('char_y').value) - i );
		var element_2 = get_tile_id(parseInt($('char_x').value) + i, parseInt($('char_y').value) - i );
		var element_3 = get_tile_id(parseInt($('char_x').value) - i, parseInt($('char_y').value) + i );
		var element_4 = get_tile_id(parseInt($('char_x').value) + i, parseInt($('char_y').value) + i );
		
		if (element_1 != 99) { el[j++] = element_1; }
		if (element_2 != 99) { el[j++] = element_2; }
		if (element_3 != 99) { el[j++] = element_3; }
		if (element_4 != 99) { el[j++] = element_4; }
		
	}
	
	for(l=0; l<el.length; l++)
	{
		$('tile_overlay_'+el[l]+'').className = 'tile_overlay_on';
	}
  }

  
}


// Löscht die Färbung der Tiles
function clear_range()
{
	
	var tiles = getElementsByClass('tile_overlay_on');

	for(i=0; i<tiles.length; i++)
		tiles[i].className = 'tile_overlay_off';
	
}


function get_tile_id(x,y)
{
	var tile_id = 99;
	
	if (x == 0 && y == 0 ) { tile_id = 0; }
	if (x == 1 && y == 0 ) { tile_id = 1; }
	if (x == 2 && y == 0 ) { tile_id = 2; }
	if (x == 3 && y == 0 ) { tile_id = 3; }
	if (x == 4 && y == 0 ) { tile_id = 4; }
	
	if (x == 0 && y == 1 ) { tile_id = 5; }
	if (x == 1 && y == 1 ) { tile_id = 6; }
	if (x == 2 && y == 1 ) { tile_id = 7; }
	if (x == 3 && y == 1 ) { tile_id = 8; }
	if (x == 4 && y == 1 ) { tile_id = 9; }
	
	if (x == 0 && y == 2 ) { tile_id = 10; }
	if (x == 1 && y == 2 ) { tile_id = 11; }
	if (x == 2 && y == 2 ) { tile_id = 12; }
	if (x == 3 && y == 2 ) { tile_id = 13; }
	if (x == 4 && y == 2 ) { tile_id = 14; }
	
	if (x == 0 && y == 3 ) { tile_id = 15; }
	if (x == 1 && y == 3 ) { tile_id = 16; }
	if (x == 2 && y == 3 ) { tile_id = 17; }
	if (x == 3 && y == 3 ) { tile_id = 18; }
	if (x == 4 && y == 3 ) { tile_id = 19; }
	
	if (x == 0 && y == 4 ) { tile_id = 20; }
	if (x == 1 && y == 4 ) { tile_id = 21; }
	if (x == 2 && y == 4 ) { tile_id = 22; }
	if (x == 3 && y == 4 ) { tile_id = 23; }
	if (x == 4 && y == 4 ) { tile_id = 24; }
	
	
	return tile_id;
}



	  


/*var queue = Effect.Queues.get("myscope");

function battle_action()
{
  new Ajax.Request("ajax/set_battle.php", {
										method: "post", 
										asynchronous: false,
										onComplete: after_action });   
 
  return false;
}

function after_action(answer)
{
	
	var check = answer.responseText;
	eval(check);
}

function color_mon_2()
{
   document.getElementById("monster_2").style.border="1px solid red";
   document.getElementById("monster_2").style.width="100px";
   document.getElementById("monster_2").innerHTML="mon3";
}

*/
