
var _startX = 0; // mouse starting positions 
var _startY = 0; 
var _offsetX = 0; // current element offset
var _offsetY = 0; 
var _dragElement; // needs to be passed from OnMouseDown to OnMouseMove 
var _oldZIndex = 0; // we temporarily increase the z-index during drag 
//var _debug = document.getElementById('debug'); // makes life easier
var _dragobject_isongrid = false;
var _dragableobjects = new Array();
var _dragoverobject = null;

var _battlefield_posx = 0;
var _battlefield_posy = 0;

var _UNITSTEP = 40;

var _dragdroppossible = false;

var _totalSharedColors = 0;

var this_is_IE = document.all ? true : false;

function ExtractNumber(value) 
{ 
	var n = parseInt(value); 
	return n == null || isNaN(n) ? 0 : n; 
} 

function drag_IsOnGrid(posx, posy)
{	
	if((posx >= _battlefield_posx) && (posx < _battlefield_posx+5*_UNITSTEP) && (posy >= _battlefield_posy) /* && (posy < _battlefield_posy+12*_UNITSTEP) */ )
		return true;
	else
		return false;
}

function drag_IsOnBattleField(posx, posy)
{	
	if((posx >= _battlefield_posx) && (posx < _battlefield_posx+5*_UNITSTEP) && (posy >= _battlefield_posy) && (posy < _battlefield_posy+5*_UNITSTEP))
		return true;
	else
		return false;
}

//function isUnitOnGrid(unit)
//{
//	return ( (parseInt(unit.getAttribute('baseX')) != parseInt(unit.style.left)) || (parseInt(unit.getAttribute('baseX')) != parseInt(unit.style.left)) );
//}

function isUnitOnGrid(unit)
{
	return drag_IsOnBattleField(parseInt(unit.style.left), parseInt(unit.style.top));
}

function calcGridField(pos, offset)
{
	var newpos = offset + _UNITSTEP * Math.floor(( pos - offset) / _UNITSTEP);
		
	return newpos;
}

function InitDragDrop() 
{ 	
	var battlefield = document.getElementById('battle_grid');
	if(battlefield != null)
	{	
		_battlefield_posx = parseInt(battlefield.getAttribute('bf_left'));
		_battlefield_posy = parseInt(battlefield.getAttribute('bf_top'));
		
		if(this_is_IE)
		{
			_battlefield_posx -= 10;
			_battlefield_posy -= 18;
		}

		document.onmousedown = OnMouseDown; 
		document.onmouseup = OnMouseUp; 
		
		//OLD - not internet explorer compatible
		//var allElements = document.getElementsByClassName('drag');
		var allElements = nyman_getElementsByClassName('drag');
		
		for(i=0;i<allElements.length;i++)
		{
			var xop = ExtractNumber(allElements[i].style.left);
			var yop = ExtractNumber(allElements[i].style.top);
			
			if(xop >= _battlefield_posx)
			{
				var newposx = calcGridField(xop, _battlefield_posx);
				var newposy = calcGridField(yop, _battlefield_posy);				
				allElements[i].style.left = newposx + 'px';
				allElements[i].style.top  = newposy + 'px';
			}
			_dragableobjects.push(allElements[i]);
		}
		
		updateColorNeighbours();
	}
}

function OnMouseDown(e) 
{ 
	// IE is retarded and doesn't pass the event object 
	if (e == null) 
		e = window.event; 
		
	//IE uses srcElement, others use target 
	var target = e.target != null ? e.target : e.srcElement; 
	
//	_debug.innerHTML = target.className == 'drag' ? 'draggable element clicked' : 'NON-draggable element clicked'; 
	
	// for IE, left click == 1 
	// for Firefox, left click == 0 
	if ((e.button == 1 && window.event != null || e.button == 0) && target.className == 'drag') 
	{ 
		// grab the mouse position 
		_startX = e.clientX; 
		_startY = e.clientY; 
		
		// grab the clicked element's position 
		_offsetX = ExtractNumber(target.style.left); 
		_offsetY = ExtractNumber(target.style.top); 
		
		// bring the clicked element to the front while it is being dragged 
		_oldZIndex = target.style.zIndex; 
		target.style.zIndex = 10000; 
		
		// we need to access the element in OnMouseMove 
		_dragElement = target; 
		
		// tell our code to start moving the element with the mouse 
//		document.onmousemove = OnMouseMove; 
		_dragdroppossible = true;
		
		// cancel out any text selections 
		document.body.focus(); 
		
		// prevent text selection in IE 
		document.onselectstart = function () { return false; }; 
		
		// prevent IE from trying to drag an image 
		target.ondragstart = function() { return false; }; 
		
		// prevent text selection (except IE) 
		return false; 
	} 
}

function OnMouseMove(e) 
{ 
	if (e == null) 
		var e = window.event; 
		
	// this is the actual "drag code" 
	var newposx = _offsetX + e.clientX - _startX;
	var newposy = _offsetY + e.clientY - _startY
	
	//reset first - because probably nothing will be found (below)
	_dragoverobject = null;
	
	_dragobject_isongrid = drag_IsOnGrid(newposx, newposy);
	if(_dragobject_isongrid == true)
	{	
		newposx = calcGridField(newposx + 8, _battlefield_posx);
		newposy = calcGridField(newposy + 8, _battlefield_posy);
	}
	
	_dragElement.style.left = (newposx) + 'px'; 
	_dragElement.style.top = (newposy) + 'px'; 	
		
	if(_dragobject_isongrid == true)
	{
		//check if this grid space is used ...
		for(var i = 0; i < _dragableobjects.length; i++)
		{
			if(_dragableobjects[i] != _dragElement)
			{
				if( 	(_dragableobjects[i].style.left == _dragElement.style.left)
					&&	(_dragableobjects[i].style.top == _dragElement.style.top) )
				{						
					_dragoverobject = _dragableobjects[i];
					break;
				}
			}
		}		
	}	
	
//	_debug.innerHTML = '(' + _dragElement.style.left + ', ' + _dragElement.style.top + ')'; 
}


function OnMouseUp(e) 
{ 
	if (_dragElement != null) 
	{ 
		_dragElement.style.zIndex = _oldZIndex;
		
		var inputBox = document.getElementById('curField' + _dragElement.getAttribute('curFieldId'));
		
		if(_dragobject_isongrid == false)
		{
			_dragElement.style.borderStyle = "dashed";
			_dragElement.style.left = _dragElement.getAttribute('baseX') + 'px'; 
			_dragElement.style.top = _dragElement.getAttribute('baseY') + 'px';
			
			inputBox.value = '';
		}
		else
		{	
			_dragElement.style.borderStyle = "none";
			
			var xop = ExtractNumber(_dragElement.style.left);
			var yop = ExtractNumber(_dragElement.style.top);
			
			saveCoordinate(inputBox, xop, yop);
		}
		
		if(_dragoverobject != null)
		{
			var inputBox = document.getElementById('curField' + _dragoverobject.getAttribute('curFieldId'));
			
			if(_offsetX >= _battlefield_posx)
			{
				_dragoverobject.style.left = _offsetX + 'px';
				_dragoverobject.style.top = _offsetY + 'px';				
				saveCoordinate(inputBox, _offsetX, _offsetY);						
			}
			else
			{
				_dragoverobject.style.borderStyle = "dashed";
				_dragoverobject.style.left = _dragoverobject.getAttribute('baseX') + 'px';
				_dragoverobject.style.top = _dragoverobject.getAttribute('baseY') + 'px';
				inputBox.value = '';
			}
			_dragoverobject = null;
		}		
		
		// we're done with these events until the next OnMouseDown 
//		document.onmousemove = null; 
		_dragdroppossible = false;
		document.onselectstart = null; 
		_dragElement.ondragstart = null; 
		
		// this is how we know we're not dragging 
		_dragElement = null; 
		
		
		hideSaveButton();
		
		updateColorNeighbours();
	} 
}

function hideSaveButton()
{
	save_button = document.getElementById('use_saved_button');
	if(save_button != null)
		save_button.style.visibility = 'hidden';
}

function getColor(index)
{
	switch(index)
	{
		case 0: return '#ffffff';
		case 1: return '#888888';
		case 2: return '#00bb00';
		case 3: return '#994400';
		case 4: return '#ff9900';
		case 5: return '#cc0000';
		case 6: return '#cc00dd';
		case 7: return '#0000ff';		
	}
}

function getColorDesc(index)
{
	switch(index)
	{
		case 0: return '<font color=#f3f3f3>+MVS</font>';
		case 1: return '<font color=#888888>+HP</font>';
		case 2: return '<font color=#00bb00>+HP</font>';
		case 3: return '<font color=#994400>+HP</font>';
		case 4: return '<font color=#f38800>+SPD</font>';
		case 5: return '<font color=#cc0000>+AT</font>';
		case 6: return '<font color=#cc00dd>+EXP</font>';
		case 7: return '<font color=#0000ff>+RNG</font>';		
	}
}

function updateBoostTexts(value, srcunit)
{
	if(value > 0)
	{
		var bf = document.getElementById('battle_grid');
		var bf_x = _battlefield_posx; //parseInt(bf.getAttribute('bf_left'));
		var bf_y = _battlefield_posy; //parseInt(bf.getAttribute('bf_top'));
		var offset_x = parseInt(srcunit.style.left) - bf_x;
		var offset_y = parseInt(srcunit.style.top) - bf_y;
		
		//in IE the position=absolute starts on top,left of battlefield - in FF it starts left of the page (FF seems wrong! so TODO: fix it so that it is always correct, also in OPERA)
		if(this_is_IE)
		{
			bf_x = 26;		
			bf_y += 20;
		}

		var boosttext = document.createElement("div");
		boosttext.style.position='absolute';	
		boosttext.style.left= (bf_x + offset_x - 4) + 'px';
		boosttext.style.top= (bf_y + offset_y - 5) + 'px';
		
		boosttext.style.fontSize = '7px';
		boosttext.style.fontWeight = 'normal';
		boosttext.innerHTML = '+' + value;
		bf.appendChild(boosttext);	
	}
}

function updateColors(up, srcunit, previous_neighbour)
{
	// update takes src unit and previous  neighbour unit, displays colors between them (attached to srcunit)
	var src_colors = srcunit.getAttribute('colors');
	var prv_colors = previous_neighbour.getAttribute('colors');
	
	var bf = document.getElementById('battle_grid');
	var bf_x = _battlefield_posx; //parseInt(bf.getAttribute('bf_left'));
	var bf_y = _battlefield_posy; //parseInt(bf.getAttribute('bf_top'));
	var offset_x = parseInt(srcunit.style.left) - bf_x;
	var offset_y = parseInt(srcunit.style.top) - bf_y;
	
	var shared_colors = 0;
	for(i = 0; i < 8; i++)
	{
		// compare colors
		if( (src_colors.substring(i, i+1) > 0) && (prv_colors.substring(i, i+1) > 0))
		{
			shared_colors++;
			_totalSharedColors++;
		}
	}
	
	var src_total_col = srcunit.getAttribute('shared_colors');
	var prv_total_col = previous_neighbour.getAttribute('shared_colors');
	
	if(src_total_col == null)
		src_total_col = 0;
	if(prv_total_col == null)
		prv_total_col = 0;
		
	srcunit.setAttribute('shared_colors', 			 parseInt(src_total_col) + parseInt(shared_colors));
	previous_neighbour.setAttribute('shared_colors', parseInt(prv_total_col) + parseInt(shared_colors));
	
	var depth = 4;
	var half_depth = depth / 2;
	var side_length = _UNITSTEP - depth;
	var box_length = Math.floor(side_length / shared_colors);
	if(box_length > 8)
		box_length = 8;
		
	var startpos = _UNITSTEP / 2 - (box_length * shared_colors/2);
	
	//in IE the position=absolute starts on top,left of battlefield - in FF it starts left of the page (FF seems wrong! so TODO: fix it so that it is always correct, also in OPERA)
	if(this_is_IE)
	{
		bf_x = 26;		
		bf_y += 17;
	}
	
	var count = 0;
	for(i = 0; i < 8; i++)
	{	
		//where identical display
		if( (src_colors.substring(i, i+1) > 0) && (prv_colors.substring(i, i+1) > 0))
		{
			var colbox = document.createElement("div");
			colbox.style.backgroundColor=getColor(i);
			colbox.style.position='absolute';	
			if(up)
			{
				colbox.style.height=depth + 'px';
				colbox.style.width=box_length + 'px';	
				colbox.style.fontSize = '4px';
				colbox.style.left= (startpos + half_depth + (count * box_length) + (bf_x + offset_x) - 6) + 'px';
				colbox.style.top= (bf_y + offset_y - half_depth - 4) + 'px';
//				colbox.onmouseover=function() { tooltip.show(getColorDesc(i) + " Boost (for both units: top and bottom)"); }
			}
			else //left
			{
				colbox.style.width=depth + 'px';
				colbox.style.height=box_length + 'px';			
				colbox.style.fontSize = '4px';
				colbox.style.left= (bf_x + offset_x - half_depth - 4) + 'px';
				colbox.style.top= (startpos + half_depth + (count * box_length) + (bf_y + offset_y) - 6) + 'px';			
//				colbox.onmouseover=function() { tooltip.show(getColorDesc(i) + " Boost (for both units: left and right)"); }
			}
//			colbox.onmouseout='tooltip.hide();' ;
			bf.appendChild(colbox);
			count++;
		}
	}	
}

function updateColorNeighbours()
{
	_totalSharedColors = 0;
	var bf = document.getElementById('battle_grid');

	//remove all color tags
	if ( bf.hasChildNodes() )
	{
	    while ( bf.childNodes.length > 0 )
	    {
	        bf.removeChild( bf.firstChild );       
	    } 
	}
	
	var total_price = 0;
	var placed_units = 0;
	var identical_count = 0;
	var identical_brethren_count = 0;
	
	var races = new Array();

	//reset stats counters
	for(var i = 0; i < _dragableobjects.length; i++)
	{	
		_dragableobjects[i].setAttribute('shared_colors', 0);	
	}
	
	//go through all others, check who's neighbour,
	for(var i = 0; i < _dragableobjects.length; i++)
	{	
		identical_brethren_count = 0;
		
		if(isUnitOnGrid(_dragableobjects[i]) == true)
		{
			var unit_def_id = parseInt(_dragableobjects[i].getAttribute('def_id'));
			for(var i2 = 0; i2 < _dragableobjects.length; i2++)
			{
				newPlacedElement = _dragableobjects[i2];
				
				if(isUnitOnGrid(newPlacedElement) === true)
				{	
					if(_dragableobjects[i] != newPlacedElement)
					{
						//tell next neighbours to update with "me" and update  ourself with each of the previous neighbours
						if( 	(parseInt(_dragableobjects[i].style.left) == parseInt(newPlacedElement.style.left))
							&&	(parseInt(_dragableobjects[i].style.top) > (parseInt(newPlacedElement.style.top) - (_UNITSTEP + 5)))
							&&	(parseInt(_dragableobjects[i].style.top) < (parseInt(newPlacedElement.style.top) - 5)) )
						{
							//alert("upper neighbour");
							updateColors(true, newPlacedElement, _dragableobjects[i]);
						}	
						if( 	(parseInt(_dragableobjects[i].style.left) > (parseInt(newPlacedElement.style.left) - (_UNITSTEP + 5)))
							&&	(parseInt(_dragableobjects[i].style.left) < (parseInt(newPlacedElement.style.left) - 5))
							&&	(parseInt(_dragableobjects[i].style.top) == parseInt(newPlacedElement.style.top)) )
						{
							//alert("left  neighbour");
							updateColors(false, newPlacedElement, _dragableobjects[i]);
						}
										
						var new_def_id = parseInt(newPlacedElement.getAttribute('def_id'));
						if(unit_def_id == new_def_id)
						{
//							if(identical_brethren_count== 0)
//								identical_brethren_count=2; //the original one plus the first found equals two...
//							else
								identical_brethren_count++; //... each further adds one
						}
					}
				}
			}		
			
			placed_units++;
			total_price = total_price + parseInt(_dragableobjects[i].getAttribute('price'));
			
			if(races[_dragableobjects[i].getAttribute('race')] == null)
				races[_dragableobjects[i].getAttribute('race')] = 1;
			else
				races[_dragableobjects[i].getAttribute('race')]++;
				
			_dragableobjects[i].setAttribute('boost_identical', identical_brethren_count * 3);
		}
		
		identical_count += Math.pow(identical_brethren_count, 0.5);
	}
	
	document.getElementById('units_placed_count').innerHTML = placed_units;
	document.getElementById('units_placed_value').innerHTML = "~" + total_price;
	
	enemy_value = document.getElementById('units_placed_value').getAttribute('enemy_value');
	if(enemy_value > 0)
		if(enemy_value < total_price * 0.95)
			document.getElementById('units_placed_value').innerHTML = "<font color='#ff0000'>~" + total_price + " is to much, <b>unfair</b>!</font>";
		else if(enemy_value < total_price)
			document.getElementById('units_placed_value').innerHTML = "<font color='#ff8800'>~" + total_price + " is nearly to much.</font>";			
	
	document.getElementById('units_placed_colors').innerHTML = "+" + (_totalSharedColors * 2) + " stats"; //for both units that will be boosted!	
	
	document.getElementById('race_count_1').innerHTML = "&nbsp;";
	document.getElementById('race_count_2').innerHTML = "&nbsp;";
	document.getElementById('race_count_3').innerHTML = "&nbsp;";
	races = sortAssocArray(races);
	var index = 0;
	var totalraceboost = 0;
	
	var races_bonus = new Array();
	
	var size = 0;
	for( racegroup in races )
		size++;
		
	for( racegroup in races )
	{
		switch(index)
		{
			case 0:
				if(size == 1)
					bonus = 3+2+1; //6+5+4+3;	
				else if(size == 2)
					bonus = 3+1; //6+2+2;
//				else if(size == 3)
//					bonus = 6+1;
				else
					bonus = 3; //6;
				break
			case 1:
//				if(size == 2)
//					bonus = 5+2+1;			
//				else if(size == 3)
//					bonus = 5+1;
//				else
					bonus = 2; //5;
				break;	
			case 2:
//				if(size == 3)
//					bonus = 4+1;
//				else
					bonus = 1; //4;
				break;
//			case 3:
//				bonus = 3;
//				break;
			default:
				bonus = 0;
				break;
		}	
		races_bonus[racegroup] = bonus;
		ru_count = races[racegroup];			
		currentraceboost = (bonus * ru_count);
		if(index == 0)
		{
			document.getElementById('race_count_1').innerHTML += ru_count + " " + racegroup + ": +" + currentraceboost + " stats";
		}
		else if(index == 1)
		{
			document.getElementById('race_count_2').innerHTML += ru_count + " " + racegroup + ": +" + currentraceboost + " stats";
		}		
		else if(index == 2)
		{
			document.getElementById('race_count_3').innerHTML += ru_count + " " + racegroup + ": +" + currentraceboost + " stats";
		}
			
		totalraceboost += currentraceboost;
		index++;	
	}
//	for(i = index; i < 3; i++)
//		document.getElementById('race_count').innerHTML += "<br/>";		
		
	document.getElementById('units_placed_identicals').innerHTML = "+" + Math.floor(identical_count*3) + " stats";
	
	
	
	//go through all others, display stat boosts
	for(var i = 0; i < _dragableobjects.length; i++)
	{	
		//remove all boost tags
		if ( _dragableobjects[i].hasChildNodes() )
		{
		    while ( _dragableobjects[i].childNodes.length > 0 )
		    {
		        _dragableobjects[i].removeChild( _dragableobjects[i].firstChild );       
		    } 
		}	
		
		//display boost tags
		if(isUnitOnGrid(_dragableobjects[i]) == true)
		{
			var colstats = _dragableobjects[i].getAttribute('shared_colors');	
			var identstats = _dragableobjects[i].getAttribute('boost_identical');
			var racebooststats = races_bonus[_dragableobjects[i].getAttribute('race')];
			updateBoostTexts(parseInt(colstats) + parseInt(identstats) + parseInt(racebooststats), _dragableobjects[i]);	
		}
	}
}
/*
function sortFunction(a, b)
{
//	alert(a[0] + ": " + a[1] + ", " + b[0] + ": " + b[1]);
	return parseInt(a[1]) < parseInt(b[1]);
}

function sortAssocArray(aInput)
{
	var aTemp = [];
	for (var sKey in aInput)
	{
		aTemp.push([sKey, aInput[sKey]]);
	}
	
	aTemp.sort(sortFunction);
	
	alert(aTemp);

	var aOutput = [];
	for (var i = 0; i < aTemp.length; i++)
	{
		aOutput[aTemp[i][0]] = aTemp[i][1];
	}

	return aOutput;
}
*/

function sortAssocArray(aInput)
{
	var aCopy = [];
	for (var sKey in aInput)
	{
		aCopy.push([sKey, aInput[sKey]]);
	}

	var aTemp = [];
	var originalLength = aCopy.length;
	
	for(var i=0; i < originalLength; i++)
	{
		var biggest = 0;
		var biggestI = 0;
		
		for(var i2=0; i2 < aCopy.length; i2++)
		{
			if(aCopy[i2][1] > biggest)
			{
				biggest = aCopy[i2][1];
				biggestI = i2;
			}
		}
		
		//alert("biggest: " + biggestI + "= " + aCopy[biggestI][1] + ":" + aCopy[biggestI][0]);
		
		aTemp[aCopy[biggestI][0]] = aCopy[biggestI][1];
		aCopy.splice(biggestI, 1);
	}

	return aTemp;
}

function saveCoordinate(inputBox, xop, yop)
{
	var xcoord = 1 + Math.floor((xop - _battlefield_posx) / _UNITSTEP);
	var ycoord = 1 + Math.floor((yop - _battlefield_posy) / _UNITSTEP);
	
	if(drag_IsOnBattleField(xop, yop) == true)
	{
		inputBox.value = String.fromCharCode(64 + xcoord) + String(ycoord);
	}
	else
	{
		inputBox.value = '';
	}
}

/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
	
	DR: this file has been versioned 2008: 1.0.1
*/	
var nyman_getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};

function reGroupUnits_BattleFieldChange()
{
	var selector = document.getElementById("display_units_for_last_battle_id");
	if(selector != null)
	{
		var chosen_last_battle_id = 0;
		
		for (i = 0; i < selector.length; i++)
			if (selector.options[i].selected == true)
				chosen_last_battle_id = selector.options[i].value;
				
		if(chosen_last_battle_id != 0)
		{			
			hideSaveButton();
		
			//loop through all units, those that are not of the current chosen id remove from battle grid
			for(var i = 0; i < _dragableobjects.length; i++)
			{	
				var currentObject = _dragableobjects[i];
				var inputBox = document.getElementById('curField' + currentObject.getAttribute('curFieldId'));
				
				if(currentObject.getAttribute("last_bid") != chosen_last_battle_id)
				{			
					inputBox.value = '';
					
					currentObject.style.borderStyle = "dashed";
					currentObject.style.left = currentObject.getAttribute('baseX') + 'px'; 
					currentObject.style.top = currentObject.getAttribute('baseY') + 'px';			
				}
				else //it is of the current chosen id
				{
					var xop = currentObject.getAttribute('lastX');
					var yop = currentObject.getAttribute('lastY');
					if((xop != null) && (yop != null))
					{
						saveCoordinate(inputBox, xop, yop);
						
						currentObject.style.borderStyle = "none";
						currentObject.style.left = xop + 'px'; 
						currentObject.style.top = yop + 'px';	
					}
				}
			}
			
			updateColorNeighbours();
		}
	}
}
