var days = 3;
var radios = [];
var aux = 0;
var t = 0;
var price = 0;
radios[radios.length] = ["fixed", 0];
radios[radios.length] = ["flexible", 45];
radios[radios.length] = ["center", 0];
radios[radios.length] = ["bottom", 45];

var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
function LZ(x) {return(x<0||x>9?"":"0")+x}
function formatDate(date,format) {
	format=format+"";
	var result="";
	var i_format=0;
	var c="";
	var token="";
	var y=date.getYear()+"";
	var M=date.getMonth()+1;
	var d=date.getDate();
	var E=date.getDay();
	var H=date.getHours();
	var m=date.getMinutes();
	var s=date.getSeconds();
	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
	// Convert real date parts into formatted versions
	var value=new Object();
	if (y.length < 4) {y=""+(y-0+1900);}
	value["y"]=""+y;
	value["yyyy"]=y;
	value["yy"]=y.substring(2,4);
	value["M"]=M;
	value["MM"]=LZ(M);
	value["MMM"]=MONTH_NAMES[M-1];
	value["NNN"]=MONTH_NAMES[M+11];
	value["d"]=d;
	value["dd"]=LZ(d);
	value["E"]=DAY_NAMES[E+7];
	value["EE"]=DAY_NAMES[E];
	value["H"]=H;
	value["HH"]=LZ(H);
	if (H==0){value["h"]=12;}
	else if (H>12){value["h"]=H-12;}
	else {value["h"]=H;}
	value["hh"]=LZ(value["h"]);
	if (H>11){value["K"]=H-12;} else {value["K"]=H;}
	value["k"]=H+1;
	value["KK"]=LZ(value["K"]);
	value["kk"]=LZ(value["k"]);
	if (H > 11) { value["a"]="PM"; }
	else { value["a"]="AM"; }
	value["m"]=m;
	value["mm"]=LZ(m);
	value["s"]=s;
	value["ss"]=LZ(s);
	while (i_format < format.length) {
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
		}
		if (value[token] != null) { result=result + value[token]; }
		else { result=result + token; }
	}
	return result;
}

function getDeliveryDateObj(businessDaysLeftForDelivery) {
  var now = new Date();
  var dayOfTheWeek = now.getDay();
  var calendarDays = businessDaysLeftForDelivery;
  var deliveryDay = dayOfTheWeek + businessDaysLeftForDelivery;
  if (deliveryDay >= 6) {
    //deduct this-week days
    businessDaysLeftForDelivery -= 6 - dayOfTheWeek;
    //count this coming weekend
    calendarDays += 2;
    //how many whole weeks?
    deliveryWeeks = Math.floor(businessDaysLeftForDelivery / 5);
    //two days per weekend per week
    calendarDays += deliveryWeeks * 2;
  }
  now.setTime(now.getTime() + calendarDays * 24 * 60 * 60 * 1000);
  return now;
}


document.observe("dom:loaded", function() {


	function attachPrice() {
		for (var i in radios) {
			if (i % 2 < 1) {
				el = $(radios[i][0]);
				el.onchange = function() {
					for (var x in radios) {
						if (radios[x] && radios[x][0] == this.id) {
							aux -= radios[x * 1 + 1][1];
						}
					}
					updatePrice();
				};
			}
			else if (i % 2 > 0 && radios[i]) {
				el = $(radios[i][0]);
				el.onchange = function() {
					for (var x in radios) {
						if (radios[x] && radios[x][0] == this.id) {
							aux += radios[x][1];
						}
					}
					updatePrice();
				};
			}
		}
	}

	attachPrice();
	var c = $("slider").down(".track");
	var d = c.down(".knob");
	var e = new(Control.Slider)(d, c, {
		values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
		range: $R(1, 10.2),
		sliderValue: 3,
		onChange: function(a) {
			if (a == 1) {
				var b = " Day";
			}
			else {
				var b = " Days";
			}
			$("days").update(a + b);
			$("days-2").update(a + b);
			$("timeframe").value = a;
			days = a;
			var date = getDeliveryDateObj(a);
			$("date").innerHTML = (formatDate(date, "MMM dd"));
			updatePrice();
		}
	});
	var f = $("slider").down(".plus");
	$(f).observe("click", function() {
		var a = parseInt($("timeframe").value);
		if (a < 10) {
			e.setValue(a + 1);
			$("days").innerHTML = a + 1 + " days";
			$("timeframe").value = a + 1;
		}
	});
	var g = $("slider").down(".minus");
	$(g).observe("click", function() {
		var a = parseInt($("timeframe").value);
		if (a > 1) {
			if (a == 2) {
				word = " day";
			}
			else {
				word = " days";
			}
			e.setValue(a - 1);
			$("days").innerHTML = a - 1 + word;
			$("timeframe").value = a - 1;
		}
	});
	updatePrice();

	function updatePrice() {
		if (days < 2) {
			price = 600;
		} else if (days < 3) {
			price = 450;
		} else {
			price = (400 - (days - 3) * 10);
		}
		price += aux;
		$("price").innerHTML = '$' + price + '<sup class="small_asterisk">*</sup>';
		$('total_price').setAttribute('value', price)	}
});
