var allRegions= [
	{ name: "BARROW", comm: [
		{ name: "Auburn"},
		{ name: "Bethlehem"},
		{ name: "Carl"},
		{ name: "Statham"},
		{ name: "Winder"}
	]},
	{ name: "GWINNETT", comm: [
		{ name: "Berkeley Lake"},
		{ name: "Buford"},
		{ name: "Dacula"},
		{ name: "Duluth"},
		{ name: "Grayson"},
		{ name: "Lawrenceville"},
		{ name: "Lilburn"},
		{ name: "Norcross"},
		{ name: "Rest Haven"},
		{ name: "Snellville"},
		{ name: "Sugar Hill"},
		{ name: "Suwanee"}
	]},
	{ name: "HALL", comm: [
		{ name: "Clermont"},
		{ name: "Flowery Branch"},
		{ name: "Gainesville"},
		{ name: "Gillsville"},		
		{ name: "Lula"}
	]},
	{ name: "JACKSON", comm: [
		{ name: "Arcade"},
		{ name: "Braselton"},		
		{ name: "Commerce"},		
		{ name: "Hoschton"},
		{ name: "Jefferson"},
		{ name: "Maysville"},
		{ name: "Nicholson"},
		{ name: "Pendergrass"},
		{ name: "Talmo"}
	]},
	{ name: "NEWTON", comm: [
		{ name: "Covington"},
		{ name: "Oxford"},
		{ name: "Porterdale"}
	]},
	{ name: "OTHER", comm: [
		{ name: "All other Counties in Georgia"}
	]},
	{ name: "ROCKDALE", comm: [
		{ name: "Conyers"}
	]},
	{ name: "WALTON", comm: [
		{ name: "Between"},
		{ name: "Good Hope"},
		{ name: "Jersey"},
		{ name: "Loganville"},
		{ name: "Monroe"},
		{ name: "Social Circle"},
		{ name: "Walnut Grove"}		
	]}
];


//END REGIONS BEGIN SELECT POPULATION

// returns array of elements whose 'prop' property is 'value'
function filterByProperty(arr, prop, value) {
    return aiJQuery.grep(arr, function (item) { return item[prop] == value });
}

// populates select list from array of items given as objects: { name: 'text', value: 'value' }
function populateSelect(el, items) {
    el.options.length = 0;
    if (items.length > 0)
        el.options[0] = new Option('All', '');

    aiJQuery.each(items, function () {
        el.options[el.options.length] = new Option(this.name, this.value);
    });
}

// initialization
aiJQuery(document).ready(function () {
    // populating 1st select list
    populateSelect(aiJQuery('#region').get(0), aiJQuery.map(allRegions, function(selectedRegion) { return { name: selectedRegion.name, value: selectedRegion.name} }));

    // populating 2nd select list
    aiJQuery('#region').bind('change', function() {
        var regionName = this.value,
                theRegion = filterByProperty(allRegions, 'name', regionName),
                comm = [];

        if (theRegion.length > 0)
                comm = aiJQuery.map(theRegion[0].comm, function(selectedCommunity) { return { name: selectedCommunity.name, value: selectedCommunity.name} });

        populateSelect(aiJQuery('#community').get(0), comm);
    });

});
