ТС, ты зачем мозг насилуешь? Тебе всего-то надо заменить несколько переменных по одному всего лишь признаку. Сделай таблицу цен по рыгионам и подставляй нужный объект, ты мужик или не мужык?
var costs={},
Cost; /* выбранный регион */
costs.msk={
name:Мозгва,
0:970,
1:100,
12:300,
31:0
};
costs.nsk={
name:Новосибирск
0:670,
1:200,
12:500,
31:0
};
/* продолжай копипастить и менять цены по дням для рыгиона */
costs.spb={
name:Питербурх
0:170,
1:600,
12:600,
31:1
};
Cost=costs.msk; /* дефаульт сити */
Теперь делаешь список
var html=[];
for(var item in costs)
html.push('<option value="'+key+'"'+((costs[key]===Cost)?' selected':'')+'>'+costs[key].name+'</option>';
some_elem.innerHTML='<select>'+html.join('')+'</select>';
some_elem.addEventListener('change',calc);
Теперь калькируешь
var calc=function(e){
/* если есть такой регион, то взять, иначе в мозгву, или какой-то дефольт */
var region = (costs.hasOwnProperty(this.value))?costs[this.value]:costs.msk
/* в var today; номер дня, если не твой день, то дефолт */
Cost = region.hasOwnProperty(today)?cost[today]:cost[0];
};
Всенах.