(function($) { $.shopSelector = function(settings) { var $prefSelect = $(settings.prefSelect); var $townSelect = $(settings.townSelect); var $shopSelect = $(settings.shopSelect); var postedTownName = settings.postedTownName; var postedShopName = settings.postedShopName; if(!$prefSelect.size() || !$townSelect.size() || !$shopSelect.size()) return; var csvDir = settings.csvDir; var shopData = []; $prefSelect.change(function(e) { var value = $prefSelect.val(); if(!value) return; $townSelect.find("option").not(":eq(0)").remove(); $shopSelect.find("option").not(":eq(0)").remove(); $.ajax({ url: csvDir + value + ".csv", dataType: "text", success: function(data) { var data = data.split("\n"); $.each(data, function(index) { var line = data[index].split(","); var townName = line[2]; if(!shopData[townName]) { shopData[townName] = []; appendOption($townSelect, townName); } shopData[townName].push(line); }); if(postedTownName) { setTimeout(function() { $townSelect.val(postedTownName); postedTownName = ""; $townSelect.change(); }, 0); } } }); }).change(); $townSelect.change(function(e) { var townName = $townSelect.val(); if(!townName) return; $shopSelect.find("option").not(":eq(0)").remove(); var data = shopData[townName]; $.each(data, function(index) { var shopName = data[index][3]; appendOption($shopSelect, shopName); }); if(postedShopName) { setTimeout(function() { $shopSelect.val(postedShopName); postedShopName = ""; }, 0); } }); function appendOption($select, value) { $select.append($("