// JavaScript Document
function DefaultListBuilder()
{
  this.defaultExpression; 
  this.defaultExpressionMatcher=new AirportExpressionMatcher();
}

DefaultListBuilder.prototype.setDefaultExpressionMatcher=function(aMatcher)
{
  this.defaultExpressionMatcher=aMatcher;
}

DefaultListBuilder.prototype.matchList=function(anArray, anExpression)
{
  return this.buildMatchList(anArray, anExpression, this.defaultExpressionMatcher);
}

DefaultListBuilder.prototype.buildMatchList=function(anArray, anExpression, aExprMatcher)
{
  var theResult = new Array();
  if (anArray!=null)
  {
    var theIndex=-1;
    var theLength=anArray.length;
    for (var i =0;i<theLength;i++)
    {
      if (aExprMatcher.matchExpression(anExpression, anArray[i]))
      {
        theIndex++;
        theResult[theIndex]=anArray[i];
      }
    }
  }
  if (anExpression.length == 3) {
  	var stop = true;
  }
  return theResult;
}


function StringExpressionMatcher ()
{

}

StringExpressionMatcher.prototype.matchExpression=function(anExpression, aValue)
{
  if (aValue!= null && aValue.length>=anExpression.length)
    return aValue.toLowerCase().indexOf(anExpression.toLowerCase()) > -1;
  else
    return false;
}


function AirportExpressionMatcher ()
{
}

AirportExpressionMatcher.prototype.matchExpression=function(anExpression, aValue)
{
	var theReturn = false;
  	var theValue = aValue.name;
  	var theCode = aValue.code;
	theReturn = (anExpression.length == 3 && theCode!= null	&& theCode.toLowerCase().indexOf(anExpression.toLowerCase()) > -1);
  	if (theReturn == false 
		&& theValue!= null 
		&& theValue.length>=anExpression.length)
  	{
    	theReturn = theValue.toLowerCase().indexOf(anExpression.toLowerCase()) > -1;
	}	
	return theReturn == true ? true : false;	
}