/** 
 * Update a seat selection
 * 
 */

var currentFlightPax;
var currentFlight;
var numberOfMaps;



function writeToConsole ( message ) {
	throw new Error( message );
}



function updateSelection(seat, gfxURL, totalPax)
{
	initMaps(numberOfMaps);
	
	//writeToConsole(currentFlight + seat);
	var currentElement = document.getElementById(currentFlight + seat);
	var currentClass = currentElement.className;
	
	unselectPrevious(currentFlight + "pax" + currentFlightPax, gfxURL);
	//writeToConsole(currentFlight + seat + " " + currentClass);
	if (eval(currentClass == 'availableSeat')) {
		currentElement.className = 'userSelected';
		currentElement.onclick = '';		
	}
	
	
	updateVisual(currentFlight + "pax" + currentFlightPax, seat, gfxURL);
	updateMapSelection(currentFlight+seat, gfxURL);
	
	if(currentFlightPax < totalPax)
	{
		currentFlightPax++;
		changeCurrentPassenger(currentFlight, currentFlightPax);
	}
	else
	{
		closeMap(document.getElementById(currentFlight));
	}
	
	
	
	
	//var currentPicPath = document.getElementById(currentFlight + '_image_'+seat).src;
	//var lastSlash = currentPicPath.lastIndexOf('/');
	//var currentPic = currentPicPath.substring(lastSlash +1);
	//var avail = "available.gif";
	//if (eval(currentPic == avail))	{
	//	var element = document.getElementById(currentFlight + '_image_'+seat);
	//	element.src = 'notAvail.gif';
	//	element.onclick = '';	
	//	
	//}
}


function updateMapSelection(targetElement, gfxURL)
{

	var element = document.getElementById(targetElement);
	element.innerHTML = "<img src='"+gfxURL+"/images/airline/seatMap/selected.gif'>";
}

function unselectPrevious(targetElement, gfxURL) {
	var element = document.getElementById(targetElement);
	var currentSel = element.innerHTML;
	if (currentSel.length>5) {
		/* no seat selected previously */
		return;
	}
	else {
		var imageElement = document.getElementById(currentFlight + currentSel);
		//imageElement.src = 'available.gif';	
		imageElement.innerHTML = "<img src='"+gfxURL+"/images/airline/seatMap/avail.gif'>";
		imageElement.onclick = new Function("updateSelection('"+currentSel+"')");
	}
}


function updateVisual(targetElement,newSeat, gfxURL) {
	var element = document.getElementById(targetElement);
	element.innerHTML = newSeat;
	document.getElementById(targetElement + "selected").value = newSeat;
	document.getElementById(targetElement+"a").innerHTML = "<span class='seatMapStyle5'>"+newSeat+"</span>";
	document.getElementById(targetElement+"seatImage").innerHTML = "<img src='"+gfxURL+"/images/airline/seatMap/selected.gif'>";
}

/**
 * Show the specified map moving it near the clicked
 * location
 * 
 */
function showMap(flight,pax) {
	initMaps(numberOfMaps);
	var map = document.getElementById(flight);

	map.style.display = 'inherit';
	move(map);
	currentFlightPax = pax;
	currentFlight = flight;
}


function changeCurrentPassenger( flight, pax)
{
	closeMap(document.getElementById(currentFlight));
	showMap( flight, pax);
}

/**
 * Find the position of an element
 */	
function findPos(obj) {
    var pos = new Object;
    pos.left = 0;
    pos.top = 0;
    if (obj.offsetParent) {
    	while (obj.offsetParent) {
			pos.left += obj.offsetLeft;
    		pos.top  += obj.offsetTop;
    		obj = obj.offsetParent;
    	};        		
    }
    else if (obj.x) {
    	pos.left = obj.x;
        pos.top = obj.y;
    };
    return pos;
};
    
    

/**
 * Initialise Maps by moving from body 
 * element
 */    
function initMaps(numberOfFlights) {
	var body = document.getElementById('body');
	numberOfMaps = numberOfFlights;
	for (var i = 1; i <= numberOfFlights; i++) {
		var map = document.getElementById('flight'+ i);
		move(map,body,findPos(body));
		closeMap(map);
	}
}
    

/**
 * Close the specified map
 */    
function closeMap(target) {
	target.style.display = 'none';
}

function closeWithoutSelect(target) {
	var tgt = document.getElementById(target);
	tgt.style.display = 'none';
}
    

/**
 * Move an element to a position beside another element
 */
function move(element) {
    
        element.style.position = 'absolute';
        element.style.top = "20pc";
		element.style.left = "14.75pc";
    	element.style.display = "inherit";
}
