	
	var Shipping = {
		from_form:function(){
			if(!Valid(document.getElementById("shippingform"), 'Shipping')) return false;
			
			var form = document.getElementById("shipform");
			var fields = form.getElementsByTagName("input");
			var country = form.getElementsByTagName("select")[0];
			
			//get location object for server for storage in order
			var address = fields[0].value;
			var address2 = fields[1].value;
			var city = fields[2].value;
			var state = fields[3].value;
			var zip = fields[4].value;
			var country = country.value;
									
			//todo: look up lng/lat for closest shipping location from shop shipping centers.. 
			
			
			//send to the server
			var json = '{"address":"'+address+'","address2":"'+address2+'","city":"'+city+'","state":"'+state+'","zip":"'+zip+'","country":"'+country+'"}';
			
			document.getElementById("shipform").style.display = "none";
			document.getElementById("looking").style.display = "block";
			
			RemoteCall.handlers = Shipping.onRates;
			RemoteCall.make("checkout","save_shipping_location", json);
			
			
			
		},
		onRates:{
			onData:function(data){
				document.getElementById("looking").style.display = "none";
				var addr = document.getElementById("address");
					addr.innerHTML = "";
				//fill in address
				var print = data.address.address;
				if(data.address.address2 != "")
					print += "<br />" + data.address.address2;
					
					print += "<br />" + data.address.city + ", " + data.address.state + " " + data.address.zip;
					print += "<br />" + data.address.country;
					
					print += "<br />"  + '<a href="javascript:void(Shipping.edit_address())">Change</a>';
					print += "<br />"  + '<a href="<?php echo use_home; ?>/shop/checkout/edit_address" style="font-size:10px">No Javascript?</a><br /><br />';
					
					
				addr.innerHTML = print;
				addr.style.display = "block";
				
				//print shipping rates 	
				var form = document.getElementById("optionsform");
				var ups = document.createElement("strong");
					ups.innerHTML = "UPS Options";
					form.appendChild(ups);
						
				for(var o = 0; o < data.rates['ups'].length; o++){
					var rad = document.createElement("input");
						rad.setAttribute("type","radio");
						rad.setAttribute("style","width:auto;");
						rad.setAttribute("name","shipping_rate");
						rad.setAttribute("method","UPS " + data.rates['ups'][o]['name']);
						rad.setAttribute("value",data.rates['ups'][o]['cost']);
						rad.setAttribute("onclick","Shipping.select(this)");
							
					var label = document.createElement("label");
						label.setAttribute
						label.innerHTML = data.rates['ups'][o]['name'] + ": <span>$" + data.rates['ups'][o]['cost'] + '</span>';
					
					form.appendChild(rad);			
					form.appendChild(label);	
					
					if(o == 0){
						rad.setAttribute("checked","true");
						Shipping.select(rad);
					}
				}
				
						
				/*var usps = document.createElement("strong");
					usps.innerHTML = "USPS Options";
					form.appendChild(usps);
				
				for(var o = 0; o < data.rates['usps'].length; o++){
					var rad = document.createElement("input");
						rad.setAttribute("type","radio");
						rad.setAttribute("name","shipping_rate");
						rad.setAttribute("method","USPS " + data.rates['usps'][o]['name']);
						rad.setAttribute("value",data.rates['usps'][o]['cost']);
						rad.setAttribute("onclick","Shipping.select(this)");

					var label = document.createElement("label");
						label.setAttribute
						label.innerHTML = data.rates['usps'][o]['name'] + ": $" + data.rates['usps'][o]['cost'];

					form.appendChild(rad);
					form.appendChild(label);	
					
					
				}	*/
							
			},
			onError:function(response){
				alert('error getting address!');
				var error = document.createElement("div");
					error.innerHTML = response;
					error.style.position = "absolute";
					error.style.backgroundColor = "#FFF";
					document.body.appendChild(error);
			}
		},
		edit_address:function(){
			document.getElementById("optionsform").innerHTML = "";	
			document.getElementById("shipform").style.display = "block";
			document.getElementById("address").style.display = "none";
			
		},
		select:function(radio){
			//update total
			var sub = parseFloat(document.getElementById("order-subtotal").getAttribute("cost"));
			var ship = parseFloat(radio.value);	
			var total = sub + ship;
			var update = document.getElementById("shipping-cost");
				update.innerHTML = "Shipping: $" + dollar(ship);
			var print = document.getElementById("grand-total");
				print.innerHTML = "Order Total: $" + dollar(total);
		
			document.getElementById("billingbutton").disabled = false;
			document.getElementById("methodin").value = radio.getAttribute("method");
			document.getElementById("shipcostin").value = radio.getAttribute("value");
		}
		
	}
	
	function dollar(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);
	}
	

	
	var Billing = {	
		select:function(radio){
			//update total
			var sub = parseFloat(document.getElementById("order-subtotal").getAttribute("cost"));
			var ship = parseFloat(radio.value);	
			var total = sub + ship;
			var update = document.getElementById("shipping-cost");
				update.innerHTML = "Shipping: $" + dollar(ship);
			var print = document.getElementById("grand-total");
				print.innerHTML = "Order Total: $" + dollar(total);
		
			document.getElementById("billingbutton").disabled = false;
		
		},
		edit_address:function(){
			document.getElementById("billform").style.display = "block";
			document.getElementById("address").style.display = "none";		
		},
	}
