/*  */

function removeOmittedRoutes(stationsArray)
{
	for( var i=0; i < stationsArray.length; i++ ) //traverse stations
	{
		currentStation = Stations[stationsArray[i]];
		if(currentStation) {
			var code = currentStation.code;
			var omittedRoute = omittedRoutes[currentStation.code];
			if(omittedRoute && omittedRoute.length > 0)
			{
				for( var k=0; k < currentStation.mkts.length; k++ )//traverse destinations for each station
				{
					currentStationMarket = currentStation.mkts[k];
					for( var l=0; l < omittedRoute.length; l++ )//traverse omitted-routes and if match  with current station - remove from stations
					{
						if(currentStationMarket == omittedRoute[l])
						{
							currentStation.mkts.splice(k,1);
							k--;
						
							if(currentStation.mkts.length==0)
							{
								stationsArray.splice(i,1);//remove station
								i--;
							}
							
							break;
						}
					}
				}
			}
		}
	}

	// Abflughäfen ohne Ziel löschen
	for ( var i=0; i < stationsArray.length; i++ )
	{
		currentStation = Stations[stationsArray[i]];
		if(currentStation)
		{
			for( var k=0; k < currentStation.mkts.length; k++ )
			{
				var destStation = Stations[currentStation.mkts[k]];
				if (destStation == null || !destStation.validDest)
				{
					currentStation.mkts.splice(k,1);
					k--;
					
					if(currentStation.mkts.length==0)
					{
						stationsArray.splice(i,1);//remove station
						i--;
					}
					
					break;
				}
			}
		}
	}
	
	return stationsArray;
}


function getRouteIntersection(stationsArray)
{
	var exist = false;
	for( var i=0; i < stationsArray.length; i++ ) //traverse stations
	{
		currentStation = Stations[stationsArray[i]];
		if(currentStation && allyoucanflyRoutes[currentStation.code] && allyoucanflyRoutes[currentStation.code].length > 0)
		{
			for( var k=0; k < currentStation.mkts.length; k++ )//traverse destinations for each station
			{
				currentStationMarket = currentStation.mkts[k];
				exist = false;
				for( var l=0; l < allyoucanflyRoutes[currentStation.code].length; l++ )//traverse omitted-routes and if match  with current station - remove from stations
				{
					if(currentStationMarket == allyoucanflyRoutes[currentStation.code][l])
					{
						exist = true;
						break;
					}
				}
				
				if(!exist) //remove route
				{
					currentStation.mkts.splice(k,1);
					k--;
					
					if(currentStation.mkts.length==0)
					{
						stationsArray.splice(i,1);//remove station
						i--;
					}
				}
			}
		}
		else
		{
			stationsArray.splice(i,1);//remove station
			i--;
		}
	}

	// Abflughäfen ohne Ziel löschen
	for ( var i=0; i < stationsArray.length; i++ )
	{
		currentStation = Stations[stationsArray[i]];
		if(currentStation)
		{
			for( var k=0; k < currentStation.mkts.length; k++ )
			{
				var destStation = Stations[currentStation.mkts[k]];
				if (destStation == null || !destStation.validDest)
				{
					currentStation.mkts.splice(k,1);
					k--;
					
					if(currentStation.mkts.length==0)
					{
						stationsArray.splice(i,1);//remove station
						i--;
					}
					
					break;
				}
			}
		}
	}
	
	return stationsArray;
}


// Removes return flights of African routes
// Example: The host defines the flights FRA-HRG and HRG-FRA
// In 'africanRoutes' there's the route FRA-HRG
// => It's not allowed to book HRG-FRA (with optional FRA-HRG as return flight),
// so remove this route
function removeAfricanRoutesGroups(){
	for (var i=0; i<destinationArray.length-1; i++)
	{
		currentStation = destinationArray[i];
		connections = connectionArray[i];
		for( var k=0; k < connections.length; k++ )
		{
			currentStationMarket = connections[k];
			if (africanRoutes[currentStationMarket])
			{
				for (var l = 0; l < africanRoutes[currentStationMarket].length; l++)
				{
					if (africanRoutes[currentStationMarket][l] == currentStation)
					{
						connections.splice(k,1);
						k--;
						break;
					}
				}
			}
		}
	}
}

function removeOmittedRoutesGroups(){
	for (i=0; i<destinationArray.length-1; i++)
	{
		currentStation = destinationArray[i];
		connections = connectionArray[i];
		if(omittedRoutes[currentStation] && omittedRoutes[currentStation].length > 0)
		{
			for( k=0; k < connections.length; k++ )
			{
				currentStationMarket = connections[k];
				for( l=0; l < omittedRoutes[currentStation].length; l++ )
				{
					if(currentStationMarket == omittedRoutes[currentStation][l])
					{
						connections.splice(k,1);
						k--;
						break;
					}
				}
			}
		}
	}
	removeAfricanRoutesGroups();
	
	// Abflughäfen ohne Ziel löschen
	var originDropDown = document['groupbooking.presentation.requestForm'].origin;
	for (i=0; i<destinationArray.length-1; i++)
	{
		currentStation = destinationArray[i];
		connections = connectionArray[i];
		if (connections.length == 1)
		{
			for (k=0; k<originDropDown.options.length; k++)
			{
				if (originDropDown.options[k].value == currentStation)
				{
					originDropDown.options[k] = null;
					break;
				}
			}
		}
	}
}

var RouteMaxDate = null;

function removeOutdatedRoutes(stationsArray){
 // FIX: Remove markets that are outdated
	if( available )//available array wird in flugplaneinschraenkungen.js definiert. Daten kommen direkt aus dem Backend
	{
		var now = new Date().getTime();
		for( var i=0; i < stationsArray.length; ++i ) 
		{
			var currentStation = Stations[stationsArray[i]];
			if(currentStation)
			{
				for( var k=0; k < currentStation.mkts.length; ++k )
				{
					var currentStationMarket = currentStation.mkts[k]; //market = destination
					var routeKey = currentStation.code + " " + currentStationMarket;
					var currentAvailableRange = available[routeKey];
					if(currentAvailableRange)
					{
						var endRange = new Date();
						endRange.setDate(currentAvailableRange.substring(15,17));
						endRange.setMonth(currentAvailableRange.substring(13,15) - 1);
						endRange.setFullYear(currentAvailableRange.substring(9,13));
						
						if(RouteMaxDate == null) RouteMaxDate = endRange;
						if(RouteMaxDate.getTime() < endRange.getTime()) {
							RouteMaxDate = endRange;
						}
					 
						if( endRange.getTime() < now )
						{
							currentStation.mkts.splice(k,1);
							k--;
							
							if( currentStation.mkts.length == 0 )
							{
								stationsArray.splice(i,1);
								i--;
							}
						}
					}
				}
			}
		}
	}
	
	return stationsArray;
}

function restrictRoutes(stationsArray, allowedRoutes){
 for ( i=0; i < stationsArray.length; i++ )
 {
	 var currentStation = Stations[stationsArray[i]];
	 for( k=0; k < currentStation.mkts.length; k++ )
	 {
		 var currentStationMarket = currentStation.mkts[k];
		 
		 var isRouteAllowed = false;
		 var allowedStationArray = new Array();
		 if (allowedRoutes[currentStation.code] != null)
		 {
			 allowedStationArray = allowedStationArray.concat(allowedRoutes[currentStation.code]);
		 }
		 if (allowedRoutes[currentStationMarket] != null)
		 {
			 allowedStationArray = allowedStationArray.concat(allowedRoutes[currentStationMarket]);
		 }
		 if (allowedStationArray.length > 0)
		 {
			 for (l=0; l < allowedStationArray.length; ++l)
			 {
				 if (allowedStationArray[l] == currentStation.code || allowedStationArray[l] == currentStationMarket)
				 {
					 isRouteAllowed = true;
					 break;
				 }
			 }
		 }
		 if (!isRouteAllowed)
		 {
			 currentStation.mkts.splice(k,1);
			 k--;
			 
			 if (currentStation.mkts.length == 0)
			 {
				 stationsArray.splice(i,1);
				 i--;
			 }
		 }
	 }
 }
 
 return stationsArray;
}

// 
//