Spamol,
мысли вслух ... делим диапазон в 0 часов...а в течении одних суток можно так
function cost(run, end)
{
var time = {0:6,3:0,15:2.5,18:3.5,21:5},
sum = 0, min = 0;
for (var i=0; i< 24; i++) {
if(i in time) min = time[i];
if(i >= run[0]) {sum += (60-run[1])*min ; run[1]=0};
if(i+1 > end[0]) {sum -= (60-end[1])*min; break};
}
return sum
}
alert(cost([11,3],[20,45]) )