
/**
 * Provides suggestions for state names (USA).
 * @class
 * @scope public
 */
function StateSuggestions() {
    this.states = [
	"ambon", "aalborg", "aalesund", "aarhus", "aberdeen", "abudhabi", "adelaide", "ahmedabad", "albany", "albuquerque", "amsterdam", "athens", "atlanta", "auckland", "austin", "abudhabi", 	
        "bali", "balikpapan", "bandaaceh","bandung", "banjarmasin", "batam", "biak", "bima", "bintuni", "buli", "buol", "baubau", "bengkulu", "baltimore", "bandarseribegawan", "bangalore", "bangkok", "barcelona", "basel", "beijing", "belfast", "bergen", "berlin", "billund", "boise", "boston", "bremen", "brisbane", "brussels",
        "cengkareng", "ciamis", "cilacap", "cirebon", "cairo", "calgary", "capetown", "charlotte", "chennai", "chicago", "christchurch", "cincinnati", "cleveland", "colombo", "coloradosprings", "copenhagen", "cork", "cebu", "chengdu", "chiangmai", "chongqing", "coimbatore",   
        "denpasar", "djambi", "djayapura", "djokjakarta", "dili", "dallasfortworth", "delhi", "denver", "dhaka", "dresden", "dubai", "dublin", "dunedin", "durban", "dusseldorf", "danang", "davao", 
        "ende", "eastlondon", "edinburgh", "edmonton",
        "fakfak",  "frankfurt", "fresno", "friedrichshafen", "fukuoka",
        "gorontalo", "gunung sitoli", "geneva", "glasgow", "gothenburg", "graz", "guangzhou", 
        "halim", "hochiminhcity", "halifax", "hamburg", "hanoi", "hanover", "hongkong", "houston", "hyderabad", 
        "innsbruck", "invercargill", "istanbul", 
        "jakarta", "jambi", "jayapura", "jogjakarta", "jeddah", "johannesburg", 
        "kualalumpur", "kupang", "kaimana", "kambuaya", "karubaga", "kebar", "kendari", "kepi", "kimam", "kisar", "karup", "kiel", "klagenfurt", "kolkata", "kos", "kristiansand", "kathmandu", "kochi", "kotakinabalu", "kuching", "kunming", "kuwait", 
        "labuhan bajo", "lahore", "lampung", "langgur", "langkawi", "larantuka", "larnaca", "lereh", "lewoleba", "lombok", "luwuk", "luyuk", "labuha", "lasvegas", "leipzig", "linz", "london", "losangeles", "lugano", "lyon",
        "makasar", "malaka", "malang", "malaysia", "mangole", "maumere", "merdei", "meulaboh", "morotaiisland", "mulia",  "maluku","mamuju","manado","manokwari","mataram","medan","melangguane","merauke", "male", "manchester", "manila", "marseille", "melbourne", "miami", "milan", "milwaukee", "minneapolis", "montreal", "moscow", "muenster", "mumbai", "munich",
        "nabire", "nias", "namlea", "namrole", "nagoya", "napier", "nelson", "newplymouth", "newyork", "nice", "nuremberg", 
        "okaba", "oksibil", "oklahomacity", "osaka/kansai", "oslo", "ottawa","orlando",
        "padang", "palangkaraya", "palembang", "palu","pangandaran","pangkal pinang","pangkalan bun","papua","pattaya","pekanbaru","penang","phuket","pontianak","purwokerto", "poso", "paderbom", "palmerstonnorth", "paris", "perth", "philadelphia", "phoenix", "pittsburgh", "portelizabeth", "portland", "providence", "phnompenh", 
        "queenstown", 
        "riau", "ruteng", "riyadh", "rome", "ronne", "rotorua",  
        "samarinda", "sampit","semarang","sibolga","singapore","solo","sorong","sumbawa","surabaya", "sabang", "sanana", "sarmi", "saumlaki", "sawu", "senggo", "sinabang", "sinak", "saltlakecity", "salzburg", "sanantonio", "sandiego", "sanfransisco", "seattle", "seoul", "shanghai", "shannon", "singapore", "sonderborg", "stlouis", "stavanger", "stockholm", "stuttgart", "sydney", "syracuse", "shenzhen", "siemrap", "solocity",
        "tambolaka","tambulaka", "tanahtoraja","tanjung karang","tanjung pandan","tanjung pinang","tanjungselor","tarakan","tawau","ternate","timika","timor timur","tolitoli","toronto","tual", "timor leste", "tanah merah", "teminabuan", "tiom", "tahuna", "tobelo", "taipei", "tauranga", "thessaloniki", "tokyo", "toronto", "toulouse", "trondheim", "trivandrum", 
        "ujungpandang",
        "vancouver", "victoria", "vienna",  
        "waingapu", "wamena", "washington", "wellington", "whangarei", 
        "xiamen",
        "yogyakarta", "yangon", 
        "zurich"
    ];
}

/**
 * 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){
    
        //search for matching states
        for (var i=0; i < this.states.length; i++) { 
            if (this.states[i].indexOf(sTextboxValue) == 0) {
                aSuggestions.push(this.states[i]);
            } 
        }
    }

    //provide suggestions to the control
    oAutoSuggestControl.autosuggest(aSuggestions, bTypeAhead);
};

