
/**
 * Provides suggestions for state names (USA).
 * @class
 * @scope public
 */
function StateSuggestions() {
    this.airports = [
            "Abilene, TX (ABI)",
            "Akron/Canton, OH (CAK)",
            "Adak Island, AK (ADK)" ,
            "Albany, NY (ALB)"   ,
            "Albuquerque, NM (ABQ)",
            "Allentown, PA (ABE)",
            "Amarillo, TX (AMA)",
            "Anchorage, AK (ANC)",
            "Appleton, WI (ATW)",
            "Arcata, CA (ACV)",
            "Asheville, NC (AVL)",
            "Aspen, CO (ASE)",
            "Atlanta-Hartsfield-Jackson (ATL)",
            "Augusta, GA (AGS)",
            "Austin, TX (AUS)",
            "Bakersfield, CA (BFL)",
            "Baltimore-Washington (BWI)",
            "Bangor, ME (BGR)",
            "Barrow, AK (BRW)",
            "Baton Rouge, LA (BTR)",
            "Bay City, MI (MBS)",
            "Bellingham, WA (BLI)",
            "Bemidji, MN (BJI)",
            "Bethel, AK (BET)",
            "Billings, MT (BIL)",
            "Biloxi/Gulfport, MS (GPT)",
            "Binghamton, NY (BGM)",
            "Bismarck, ND (BIS)",
            "Bloomington, IL (BMI)",
            "Boise, ID (BOI)",
            "Borinquen, PR (BQN)",
            "Boston-Logan (BOS)",
            "Bozeman, MT (BZN)",
            "Brownsville, TX (BRO)",
            "Buffalo, NY (BUF)",
            "Burbank, CA (BUR)",
            "Burlington, VT (BTV)",
            "Butte, MT (BTM)",
            "Carlsbad, CA (CLD)",
            "Carmel, CA (MRY)",
            "Casper, WY (CPR)",
            "Cedar Rapids, IA (CID)",
            "Charleston, SC (CHS)",
            "Charleston, WV (CRW)",
            "Charlotte-Douglas (CLT)",
            "Chattanooga, TN (CHA)",
            "Chicago-Midway (MDW)",
            "Chicago-O\'Hare (ORD)",
            "Chico, CA (CIC)",
            "Cincinnati-North KY (CVG)",
            "Cleveland-Hopkins (CLE)",
            "Cody/Yellowstone, WY (COD)",
            "Colorado Springs, CO (COS)",
            "Columbia, SC (CAE)",
            "Columbus, GA (CSG)",
            "Columbus, OH (CMH)",
            "Cordova, AK (CDV)",
            "Corpus Christi, TX (CRP)",
            "Crescent City, CA (CEC)",
            "Cyril E King, VI (STT)",
            "Dallas, TX - Love Field (DAL)",
            "Dallas-Ft Worth (DFW)",
            "Dayton, OH (DAY)",
            "Daytona Beach, FL (DAB)",
            "Denver Int\'l (DEN)",
            "Des Moines, IA (DSM)",
            "Detroit-Metro Wayne (DTW)",
            "Dillingham, AK (DLG)",
            "Duluth, MN (DLH)",
            "Durango, CO (DRO)",
            "Durham, NC (RDU)",
            "El Centro, CA (IPL)",
            "El Paso, TX (ELP)",
            "Elko, NV (EKO)",
            "Elmira, NY (ELM)",
            "Erie, PA (ERI)",
            "Eugene, OR (EUG)",
            "Evansville, IN (EVV)",
            "Fairbanks, AK (FAI)",
            "Fargo, ND (FAR)",
            "Fayetteville - NW Arkansas (XNA)",
            "Flagstaff, AZ (FLG)",
            "Flint, MI (FNT)",
            "Fort Myers, FL (RSW)",
            "Fort Smith, AR (FSM)",
            "Fort Walton Beach, FL (VPS)",
            "Fort Wayne, IN (FWA)",
            "Fort Lauderdale-Hollywood (FLL)",
            "Fresno, CA (FAT)",
            "Glacier Park Int\'l, MT (FCA)",
            "Gladewater/Kilgore, TX (GGG)",
            "Grand Forks, ND (GFK)",
            "Grand Junction, CO (GJT)",
            "Grand Rapids, MI (GRR)",
            "Great Falls, MT (GTF)",
            "Green Bay, WI (GRB)",
            "Greensboro, NC (GSO)",
            "Greenville/Spartanburg, SC (GSP)",
            "Gunnison, CO (GUC)",
            "Gustavus, AK (GST)",
            "Hailey, ID (SUN)",
            "Hampton, VA (PHF)",
            "Hancock, MI (CMX)",
            "Harlingen, TX (HRL)",
            "Harrisburg, PA (MDT)",
            "Hartford, CT (BDL)",
            "Hayden, CO (HDN)",
            "Helena, MT (HLN)",
            "Henry E Rohlsen, VI (STX)",
            "Hilo, HI - Island of Hawaii (ITO)",
            "Honolulu-Int\'l (HNL)",
            "Houston - Hobby Int\'l (HOU)",
            "Houston-George Bush (IAH)",
            "Huntsville, AL (HSV)",
            "Idaho Falls, ID (IDA)",
            "Indianapolis, IN (IND)",
            "Int\'l Falls, MN (INL)",
            "Inyokern, CA (IYK)",
            "Islip, NY (ISP)",
            "Jackson Hole, WY (JAC)",
            "Jackson, MS (JAN)",
            "Jacksonville, FL (JAX)",
            "Juneau, AK (JNU)",
            "Kahului, HI - Maui, (OGG)",
            "Kalamazoo, MI (AZO)",
            "Kansas City, MO (MCI)",
            "Kauai Island/Lihue, HI (LIH)",
            "Ketchikan, AK (KTN)",
            "King Salmon, AK (AKN)",
            "Knoxville, TN (TYS)",
            "Kodiak, AK (ADQ)",
            "Kona, HI - Island of Hawaii (KOA)",
            "Kotzebue, AK (OTZ)",
            "La Crosse, WI (LSE)",
            "La Palmdale Regional, CA (PMD)",
            "Lansing, MI (LAN)",
            "Las Vegas-McCarran (LAS)",
            "Lewiston, ID (LWS)",
            "Lexington, KY (LEX",
            "Lincoln, NE (LNK)",
            "Little Rock, AR (LIT)",
            "Long Beach, CA (LGB)",
            "Los Angles Int\'l (LAX)",
            "Louisville, KY (SDF)",
            "Lubbock, TX (LBB)",
            "Madison, WI (MSN)",
            "Manchester, NH (MHT)",
            "Mcallen, TX (MFE)",
            "Medford, OR (MFR)",
            "Melbourne, FL (MLB)",
            "Memphis Int\'l (MEM)",
            "Miami Int\'l (MIA)",
            "Midland/Odessa, TX (MAF)",
            "Milwaukee, WI (MKE)",
            "Minneapolis-St Paul (MSP)",
            "Minot, ND (MOT)",
            "Missoula, MT (MSO)",
            "Mobile, AL (MOB)",
            "Modesto, CA (MOD)",
            "Moline, IL (MLI)",
            "Montgomery, AL (MGM)",
            "Montrose, CO (MTJ)",
            "Myrtle Beach, SC (MYR)",
            "Nantucket, MA (ACK)",
            "Nashville, TN (BNA)",
            "New Orleans, LA (MSY)",
            "New York-John F Kennedy (JFK)",
            "New York-La Guardia (LGA)",
            "Newark Int\'l (EWR)",
            "Newburgh/Stewart Field, NY (SWF)",
            "Nome, AK (OME)",
            "Norfolk, VA (ORF)",
            "Oakland, CA (OAK)",
            "Oklahoma City, OK (OKC)",
            "Omaha, NE (OMA)",
            "Ontario, CA (ONT)",
            "Orange County, CA (SNA)",
            "Orlando Int\'l (MCO)",
            "Oxnard/Ventura, CA (OXR)",
            "Palm Springs, CA (PSP)",
            "Panama City, FL (PFN)",
            "Pasco, WA (PSC)",
            "Pellston, MI (PLN)",
            "Pensacola, FL (PNS)",
            "Peoria, IL (PIA)",
            "Petersburg, AK (PSG)",
            "Philadelphia Int\'l (PHL)",
            "Phoenix-Sky Harbor (PHX)",
            "Pittsburg Int\'l (PIT)",
            "Pocatello, ID (PIH)",
            "Ponce, Puerto Rico (PSE)",
            "Portland Int\'l (PDX)",
            "Portland, ME (PWM)",
            "Providence, RI (PVD)",
            "Prudhoe Bay/Deadhorse, AK (SCC)",
            "Rapid City, SD (RAP)",
            "Redding, CA (RDD",
            "Reno, NV (RNO)",
            "Rhinelander, WI, (RHI)",
            "Richmond, VA (RIC)",
            "Roanoke, VA (ROA)",
            "Rochester, MN (RST)",
            "Rockford, IL (RFD)",
            "Sacramento, CA (SMF)",
            "Saint George, UT (SGU)",
            "Salem, OR (SLE)",
            "Salt Lake City Int\'l (STL)",
            "San Antonio, TX (SAT)",
            "San Diego-Lindbergh Field (SAN)",
            "San Francisco Int\'l (SFO)",
            "San Jose, CA (SJC)",
            "San Juan, Puerto Rico (SJU)",
            "San Luis Obispo, CA (SBP)",
            "Santa Barbara, CA (SBA)",
            "Santa Maria, CA (SMX)",
            "Sarasota, FL (SRQ)",
            "Savannah, GA (SAV)",
            "Seattle-Tacoma (SEA)",
            "Shreveport, LA (SHV)",
            "Sioux City, IA (SUX)",
            "Sioux Falls, SD (FSD)",
            "Sitka, AK (SIT)",
            "South Bend, IN (SBN)",
            "Spokane, WA (GEG)",
            "Springfield, IL (SPI)",
            "St Louis-Lambert (SLC)",
            "State College/Univ. Park, PA (SCE)",
            "Stevens Point/Wausau, WI (CWA)",
            "Syracuse, NY (SYR)",
            "Tallahassee, FL (TLH)",
            "Tampa Int\'l (TPA)",
            "Traverse City, MI (TVC)",
            "Tucson, AZ (TUS)",
            "Tulsa, OK (TUL)",
            "Twin Falls, ID (TWF)",
            "Vail, CO - Eagle County (EGE)",
            "Waco, TX (ACT)",
            "Washington-Dulles (IAD)",
            "Washington-National (DCA)",
            "Waterloo, IA (ALO)",
            "West Palm Beach, FL (PBI)",
            "West Yellowstone, MT (WYS)",
            "Westchester County, NY (HPN)",
            "Wichita Falls, TX (SPS)",
            "Wichita, KS (ICT)",
            "Wilmington, NC (ILM)",
            "Wrangell, AK (WRG)",
            "Yakima, WA (YKM)",
            "Yakutat, AK (YAK)",
            "Yuma, AZ (YUM)"
    ];
}


/**
 * Request suggestions for the given autosuggest control. 
 * @scope protected
 * @param oAutoSuggestControl The autosuggest control to provide suggestions for.
 */
StateSuggestions.prototype.requestSuggestions = function (oAutoSuggestControl /*:AutoSuggestControl*/,
                                                          bTypeAhead /*:boolean*/) {
    var aSuggestions = [];
    var sTextboxValue = oAutoSuggestControl.textbox.value;
     
    if (sTextboxValue.length > 0){
    
        var sTextboxValueLC =  sTextboxValue.toLowerCase();
        
   
        //search for matching aiports

        for (var i=0; i < this.airports.length; i++) { 
            var airports = this.airports[i];
            var airportsLC = this.airports[i].toLowerCase();         

//-------------------Split functionality-----------------------
 
            var airportsLCSplitArray =  new Array();
                airportsLCSplitAray = airportsLC.split("(");
           for(var j=0;j<airportsLCSplitAray.length;j++){
                 
                     var airportsLCSplit = airportsLCSplitAray[j];
                 if(j==0)
               {
                     if (airportsLCSplit.indexOf(sTextboxValueLC) == 0 )
                            {
                                aSuggestions.push(this.airports[i]);
                                break;
                            }
                   

                }

           /*    else if(j==(airportsLCSplitAray.length-1)){
                  
                   
                         
                        var airportsLCSplitBracketArray = new Array();

                            airportsLCSplitBracketArray = airportsLCSplit.split("(");
                        
                           for(var k=0;k<airportsLCSplitBracketArray.length;k++){
                                    var airportsLCSplitBracket = airportsLCSplitBracketArray[k];
                                    if(k==0)
                                    {
                                         
                                             if (airportsLCSplitBracket.indexOf(sTextboxValueLC) == 1 )
                                             {
                                               aSuggestions.push(this.airports[i]);
                                               break;
                                              }
                                         
                                      }
                                     else{
                                         
                                             if (airportsLCSplitBracket.indexOf(sTextboxValueLC) == 0 )
                                             {
                                               aSuggestions.push(this.airports[i]);
                                               break;
                                              }

                                          }

                              
                              }   
                          
                   // break;
               }*/


                else {
                    if(airportsLCSplit.indexOf(sTextboxValueLC) == 0 )
                            {
                                aSuggestions.push(this.airports[i]);
                                break;
                            }
            
                    }
 
          
         } 
   }

 }   //provide suggestions to the control
    oAutoSuggestControl.autosuggest(aSuggestions, bTypeAhead);
};