//
// FlightTracker search form functions.
//
function ftSynchronize(oChangedElement) {

	var idSource = oChangedElement.id;
	var idTarget;
	
	switch (idSource) {
		case 'airline-pull':
			idTarget = 'airline-fill';
			break;
			
		case 'airline-fill':
			idTarget = 'airline-pull';
			break;

		case 'arrairline-pull':
			idTarget = 'arrairline-fill';
			break;
			
		case 'arrairline-fill':
			idTarget = 'arrairline-pull';
			break;
	
		case 'selFlightTrackerDepap':
			idTarget = 'txtFlightTrackerDepap';
			break;
			
		case 'txtFlightTrackerDepap':
			idTarget = 'selFlightTrackerDepap';
			break;
			
		case 'selFlightTrackerArrap':
			idTarget = 'txtFlightTrackerArrap';
			break;
			
		case 'txtFlightTrackerArrap':
			idTarget = 'selFlightTrackerArrap';
			break;
			
		default:
			alert('Unknown source id: ' + idSource);
			return;
	}
				
			
	var oSource = document.getElementById(idSource);
	var oTarget = document.getElementById(idTarget);
	
	if (oSource == null) {
		alert('Cannot find source object: ' + idSource);
		return;
	}
	
	if (oTarget == null) {
		alert('Cannot find target object: ' + idTarget);
		return;
	}
	
	ftSynchronizeSelTxt(oSource, oTarget);
}


function ftSynchronizeSelTxt(oElementSource, oElementTarget) {
	if (oElementSource.id.substring(0,3) == 'sel'
			|| oElementSource.id == 'airline-pull' || oElementSource.id == 'arrairline-pull') {
		// Source is a select element, target is a text input.
		var selectedOption = oElementSource.options[oElementSource.selectedIndex];
            if (oElementSource.id == 'airline-pull' || oElementSource.id == 'arrairline-pull') {
		    oElementTarget.value = selectedOption.value.substring(0,2);
            } else {
		    oElementTarget.value = selectedOption.value.substring(0,3);
            }
	} else {
		// Source is a text input, target is a select element.
		var targetCode = trim(oElementSource.value.toUpperCase());
		
		var i = 0;
		var found = false;
		
		while (!found && i < oElementTarget.length) {
			var currOption = oElementTarget.options[i];
            if (oElementSource.id == 'airline-fill' || oElementSource.id == 'arrairline-fill') {
			if (currOption.value.substring(0,2) == targetCode) {
				currOption.selected = true;
				found = true;
			}
            } else {
			if (currOption.value.substring(0,3) == targetCode) {
				currOption.selected = true;
				found = true;
			}
            }

			i++;
		}
	
		if (!found) {
			// Option still not found, select default in pulldown...
			oElementTarget.selectedIndex = 0;
		}
	}
}


function isEnterKeyPressed(event) {
	return (event.keyCode == 13);
}


function isPureNumber(strTest) {
	if (strTest.length == 0) {
		// Empty string.
		return false;
	}
	
	for (i=0; i<strTest.length; i++) {
		
		if (! isDigit(strTest.charAt(i))) {
			// Non-number digit detected.
			return false;
		}
	}
	return true;
}

//
// Checks if all characters are alphanumeric.
//
function checkCharacterValidity(str){

    for(var i=0; i<str.length; i++){
		if(isValidChar(str.charAt(i)) != true){
				return false;
		}
	}
	return true;    
}





function isDigit( ch )
{
   if( (ch >= '0') && (ch <= '9') ) 
	return true;
   else 
	return false;
}

function isAlpha( ch )

{
   if( (ch >= 'a') && (ch <= 'z') ) return true;
   else if( (ch >= 'A') && (ch <= 'Z') ) return true;
   else return false;
}

function isValidChar( ch )
{
	if(isDigit(ch) || isAlpha(ch))
		return true;
	else
		return false;
}

function isNum(inputStr)
{
	for(var i=0; i < inputStr.length; i++)
		if(isDigit(inputStr.charAt(i)) == false)
			return false;

	return true;

}

function stripLeadingZeros(strText){
	while (strText.substring(0,1) == '0')
		strText = strText.substring(1, strText.length);
	return strText;
}

function trimFlightNum(strText) {
			
	strText = trim(strText);
	strText = stripLeadingZeros(strText);
	
			
	if (!isNum(strText.substring(0,2))){
		strText = strText.substring(0,2) + stripLeadingZeros(strText.substring(2, strText.length));
	}
	return strText;
}


//
// MOVE THESE FUNCTIONS TO A COMMON MODULE
//

function trim(TRIM_VALUE){
	if (TRIM_VALUE.length < 1) {
		return"";
	}

	TRIM_VALUE = RTrim(TRIM_VALUE);
	TRIM_VALUE = LTrim(TRIM_VALUE);
	if (TRIM_VALUE=="") {
		return "";
	} else {
		return TRIM_VALUE;
	}
} //End Function



function RTrim(VALUE){
	var w_space = String.fromCharCode(32);
	var v_length = VALUE.length;
	var strTemp = "";
	
	if (v_length < 0) {
		return"";
	}
	var iTemp = v_length -1;

	while(iTemp > -1) {
		if (VALUE.charAt(iTemp) == w_space) {
		} else {
			strTemp = VALUE.substring(0,iTemp +1);
			break;
		}
		iTemp = iTemp-1;

	} //End While
	return strTemp;

} //End Function

function LTrim(VALUE){
	var w_space = String.fromCharCode(32);
	if(v_length < 1){
		return"";
	}
	var v_length = VALUE.length;
	var strTemp = "";

	var iTemp = 0;

	while(iTemp < v_length){
		if(VALUE.charAt(iTemp) == w_space) {
		} else {
			strTemp = VALUE.substring(iTemp,v_length);
			break;
		}
		iTemp = iTemp + 1;
	} //End While
	return strTemp;
} //End Function






function ftGetAirport(airportCode) {
	var targetAirport;
	var urlViewAirport = "/traveltools/viewairport.asp?airport="
	
	airportCode = airportCode.toUpperCase();
	
	targetAirport = apinfoGetRecord(airportCode);
	
	if (targetAirport == null) {
		document.write(airportCode);
	} else {
		document.write(targetAirport[APINFO_LOCATION]);
		
		document.write(' (');
		if (targetAirport[APINFO_FVSUPPORT] == 1) {
			document.write('<a href="' + urlViewAirport + airportCode + '">');
			document.write(targetAirport[APINFO_CODE]);	
			document.write('</a>');
		} else {
			document.write(targetAirport[APINFO_CODE]);
		}
		document.write(')');
	}
}

function ftAirportLocation(airportCode) {
	var result = airportCode;
	
	var targetAirport = apinfoGetRecord(airportCode);
	
	if (targetAirport != null) {
		result = targetAirport[APINFO_LOCATION];
	}
	
	return result;
}