function filltext(prompt,target) {
	with (document.getElementById(target)) {
		//name.value = prompt.value.split("*")[0];
		name.value = prompt.value;
	}
}

function findtext(prompt,target) {
	lookfor = prompt.value.toLowerCase();
	looklen = lookfor.length;
	here = document.getElementById(target).firstChild.nextSibling;
	while (here.value.substring(0,looklen).toLowerCase() != lookfor) {
		if (here.nextSibling == null) {
			break;
		} else {
			here = here.nextSibling;
		}
	}
	if (here.value.substring(0,looklen).toLowerCase() == lookfor) {
		document.getElementById(target).selectedIndex = here.index;
	}
}

function isNumeric(value) {
	return typeof value != "boolean" && value !== null && !isNaN(+ value);
}

function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
		num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
		cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + num + '.' + cents);
}

function numberOnly(inputObj,wholeNumbers) {
	if (wholeNumbers) 
		inputObj.value = inputObj.value.replace(/[^0-9]/g,'')
	else
		inputObj.value = inputObj.value.replace(/[^0-9.]/g,'');
	return true;
}

function clearPrompt(inputName,newValue) {
	document.getElementById(inputName).value = newValue;
}

function conversion() {
	var feet = document.getElementById("calc_feet").value;
	var inches = document.getElementById("calc_inches").value;
	var result = ((feet*12)+inches*1)*0.0254;
	document.getElementById("calc_metres").innerHTML = result.toFixed(3);
}

function calcQuantityPrice() {
	//only allow integer pack quantity
	var qty = document.getElementById("basket_quantity").value;
	var price = document.getElementById("current_price").value;
	var cost = qty*price;
	//write cost to page
	document.getElementById("cost_total").innerHTML = formatCurrency(cost);
	document.getElementById("basket_button").disabled = (cost*1<=0);
}
	
function calcLengthPrice() {
	//internet explorer bug
	var price = document.getElementById("current_price").value;
	var carpetWidth = document.getElementById("basket_width").value;
	if (carpetWidth=='') {
		var carpetSel = document.getElementById("basket_width");
		var chosen = carpetSel.selectedIndex;
		carpetWidth = carpetSel.options[chosen].value;
		//alert("selectedIndex: "+chosen+" option: "+carpetSel.options[chosen].value);
	}
	
	var carpetLength = document.getElementById("basket_length").value;
	var cost;
	//rounded to nearest 10cm ( *10 /10 )
	carpetLength = Math.round((carpetLength*10)+0.4999)/10;
	cost = carpetWidth*carpetLength*price;
	document.getElementById("cost_total").innerHTML = formatCurrency(cost);
	document.getElementById("basket_button").disabled = (cost*1<=0);
}
	
function calcRoom(c_area,c_length,allowance,sizes_string) {
	if (document.getElementById("room_width")==null) return;
	var room_width = document.getElementById("room_width").value * 1;
	var room_length = document.getElementById("room_length").value * 1;
	var tmp = 0;
	if (room_width > room_length) {
		tmp = room_width;
		room_width = room_length;
		room_length = tmp;
		document.getElementById("room_width").value = room_width;
		document.getElementById("room_length").value = room_length;
	}
	var room_area = 0;
	var room_circum = 0;
	var packs = 0;
	var pack_area = c_area;
	var pack_length = c_length;
	var qty = 0;
	if (isNumeric(room_width)&&isNumeric(room_length)) {
		//save in basket form for use on subsequent pages
		document.getElementById("save_room_width").value = room_width;
		document.getElementById("save_room_length").value = room_length;
		//calc dimensions
		room_area = room_width*room_length;
		room_circum = (room_width*2)+(room_length*2);
		document.getElementById("room_area").innerHTML = room_area.toFixed(2);
		document.getElementById("room_circum").innerHTML = room_circum.toFixed(2);
		if (pack_area!=0) { packs = (room_area/pack_area)*allowance; }
		if (pack_length!=0) { packs = room_circum/pack_length; }
		if ((pack_area!=0)||(pack_length!=0)) { 
			document.getElementById("packs").innerHTML = Math.round(packs*1000)/1000;
			qty = Math.round(packs+0.499);
			document.getElementById("basket_quantity").value = qty;
			calcQuantityPrice();
		} else { 
			if (sizes_string!="") {
				// need to select required carpet width and length, then
				var sizes = sizes_string.split(",");
				var many = sizes.length;
				var useWidth1 = 10000;
				var useLength1 = 10000;
				var useIndex1 = 0;

				var useWidth2 = 10000;
				var useLength2 = 10000;
				var useIndex2 = 0;
				
				var this_size;
				var debug = "";
				var available = false;
				var message = "";
				var results;
				
				for (var x = 0; x < many; x++) {
					this_size = sizes[x]*1;
					//find best match to width
					if ((room_width<=this_size)&&(this_size<useWidth1)) {
						useWidth1 = this_size;
						useLength1 = room_length;
						useIndex1 = x;
						available = true;
					}
					//find best match to length
					if ((room_length<=this_size)&&(this_size<useLength2)) {
						useWidth2 = this_size;
						useLength2 = room_width;
						useIndex2 = x;
						//debug = debug + ", choose " + this_size + " on length";
						available = true;
					}
					//debug = debug + "," + this_size;
				}
				
				// make sure we pick the most efficient direction of roll
				if ((useWidth1*useLength1) > (useWidth2*useLength2)) {
					useWidth1 = useWidth2;
					useLength1 = useLength2;
					useIndex1 = useIndex2;
				} 
				
				//can't have extreme lengths of carpet
				if (useLength1 > 25) available = false;
				
				if (available) {				
					//put into results
					document.getElementById("carpet_width").innerHTML = useWidth1;
					document.getElementById("carpet_length").innerHTML = useLength1;
			
					//put back into page form
					document.getElementById("basket_width").selectedIndex = useIndex1;
					//rounded to nearest 10cm ( *10 /10 )
					document.getElementById("basket_length").value = Math.round((useLength1*10)+0.4999)/10;
					calcLengthPrice();
					message = "none";
					results = "block";
				} else {
					message = "block";
					results = "none";
				}	
				document.getElementById("large_message").style.display = message;
				document.getElementById("large_result").style.display = results;
			}
		}
	}
}
