
var formID = 	"g_vps_form";
var planArr = 	[];
var planNum;
var prevPlanNum;
var period;
var os;

var vz1 = {};
vz1.name = 		"VZVPS1";
vz1.sliderPos = 15;
vz1.ram = 		"512";
vz1.storage = 	10;
vz1.transfer = 	50;
vz1.price = 	10;

var vz2 = {};
vz2.name = 		"VZVPS2";
vz2.sliderPos = 101;
vz2.ram = 		"1,024";
vz2.storage = 	30;
vz2.transfer = 	150;
vz2.price = 	30;

var vz3 = {};
vz3.name = 		"VZVPS3";
vz3.sliderPos = 187;
vz3.ram = 		"2,048";
vz3.storage = 	60;
vz3.transfer = 	300;
vz3.price = 	60;

planArr.push(vz1);
planArr.push(vz2);
planArr.push(vz3);



document.observe("dom:loaded", function(){
	var form = 	document.getElementById(formID);
	if(form){
		initForm();
	}
});


function initForm(){
	initSlider();
	onChangeSelectPeriod(null);
	onChangeSelectOS(null);
}


function initSlider(){
	var bar = 			document.getElementById("vps_slider");
	var pointer = 		document.getElementById("pointer");
	var valuesArr = 	[vz1.sliderPos,vz2.sliderPos,vz3.sliderPos];
	
	var vpsSlider = new Control.Slider(pointer, bar,{
		range: 			$R(0, 202),
		//values: 		[vz1.sliderPos,vz2.sliderPos,vz3.sliderPos],
		sliderValue: 	0,
		
		onSlide: function(value){
			onSlideHandler(value);
		},
		onChange: function(value){
			onChangeHandler(value);
		}
    });
	
	function setPlanNum(value){
		var step0;
		var step1;
		var i;
		
		//get the nearest sliderValues[] to the pointer value
		//find closest step below
		i = 0;
		while((valuesArr[i] < value) && (i < valuesArr.length)){
			i++;
		}
		step0 = i - 1;
		step1 = i;
		
		//slider below minum value
		if(step0 < 0){
			return(0);	
		}
		//slider above maximum value
		if(step1 == valuesArr.length){
			return(step1 - 1);
		}
		
		if(step0 != step1){
			return(Math.round(value / (valuesArr[step1] - valuesArr[step0])));	
		}
	}
	
	function onSlideHandler(value){
		prevPlanNum = 	null;
		planNum = 		setPlanNum(value);
		updateValues();
	}
	
	function onChangeHandler(value){
		if(planNum == prevPlanNum){
			prevPlanNum = 	null;
			return;	
		}else{
			prevPlanNum = 	planNum;	
		}
		planNum = 	setPlanNum(value);
		vpsSlider.setValue(valuesArr[planNum]);
		updateValues();
	}
	
	function updateValues(){
		var elem;
		
		//update bar highlight
		elem = 	document.getElementById("vps_bar_highlight");
		elem.style.width = 	(parseInt(pointer.style.left) + 14) + "px";
		
		//update values
		/*
		var i = 	0;
		while((value != planArr[i].sliderPos) && (i < planArr.length)){
			i++;
		}
		planNum = 	i;
		*/
		
		document.getElementById("vps_ram").innerHTML = 		planArr[planNum].ram + " MB";
		document.getElementById("vps_storage").innerHTML = 	planArr[planNum].storage + " GB";
		document.getElementById("vps_transfer").innerHTML = planArr[planNum].transfer + " GB";
		
		elem = 	document.getElementById("vps_left_d1");
		elem.className = 	"";
		elem = 	document.getElementById("vps_left_d2");
		elem.className = 	"";
		elem = 	document.getElementById("vps_left_d3");
		elem.className = 	"";
		elem = 	document.getElementById("vps_left_d" + (planNum + 1));
		elem.className = 	"at";
		
		updatePrice();
	}
	
	//init slider to position
	planNum = 		0;
	vpsSlider.setValue(valuesArr[planNum]);
}


function onChangeSelectPeriod(formObj){
	var elem;
	var index;
	
	elem = 		document.getElementById("select_period");
	index =		elem.selectedIndex;
	period = 	elem.options[index].value;
	
	updatePrice();
}


function onChangeSelectOS(formObj){
	var elem;
	var index;
	
	elem = 		document.getElementById("select_os");
	index =		elem.selectedIndex;
	os = 		elem.options[index].value;
	
	elem = 		document.getElementById("vps_left_choose");
	elem.style.display = 	"block";
	elem = 		document.getElementById("vps_left_choose_error");
	elem.style.display = 	"none";
}


function updatePrice(){
	document.getElementById("vps_price").innerHTML = 	(planArr[planNum].price * period) + ".00";
}


function onFormSubmit(){
	var elem;
	
	if(os == "null"){
		elem = 		document.getElementById("vps_left_choose");
		elem.style.display = 	"none";
		elem = 		document.getElementById("vps_left_choose_error");
		elem.style.display = 	"block";
		return(false);
	}else{
		//var queryStr = 		planArr[planNum].name + "_" + period + "MONTH_" + os;
		var queryStr = 			planArr[planNum].name;
		document.getElementById(formID).action = 	"https://geek.uber.com.au/index.php?redirect=" + queryStr;
		return(true);
	}
}
