/**
	 *
	 *
	 *
	 *
	 */ 
	public function get_rates( $order, $shipment, $package = '' ) {
		
		$this->get_auth();
		
		$address = $this->account_info->Address;
		
		$authenticator = $this->authenticator;
		
		$service = $this->get_service( $order );	
		
		$service_code = $this->service_types[$service];
		
		$total = 0.00;
				
		$packages = empty( $package ) ? $shipment['_packages'] : (array)$shipment['_packages'][$package];
	
		foreach( $packages as $package ) {
			$type = $this->get_package_type( $package );
			$params = array(
				'Authenticator' => $authenticator,
				'Rate' => array (
					'FromZIPCode' 	=> $address->ZIPCode,
					'ServiceType'	=> $service_code,
					'WeightLb' 		=> $package->weight,
					'PackageType'  	=> $type,
					'Length'		=> $package->length,
					'Width'			=> $package->width,
					'Height'		=> $package->height,
					'ShipDate'		=> date( 'Y-m-d' ),
				)
			);
			
			if( in_array( $order->shipping_country, $this->domestic ) ) {
				$params['Rate']['ToZIPCode'] = strlen( $order->shipping_postcode > 5 ) ? substr( $order->shipping_postcode, 0, 5 ) : $order->shipping_postcode;
			} else {
				$params['Rate']['ToCountry']	 = $order->shipping_country;
				$params['Rate']['DeclaredValue'] = $order->get_subtotal();
			}

			$rate = $this->stamps->getRates( $params );
						
			if( is_soap_fault( $rate ) ) {
				slp_ajax_functions::error_handler( __FUNCTION__, __CLASS__, __LINE__, $rate->faultstring );
			}	else {
				$authenticator = $rate->Authenticator;
				unset( $rate->Rates->Rate->AddOns );
				$total += $rate->Rates->Rate->Amount;
				$package->Rate = $rate->Rates->Rate;
				$package->PackageType = $type;
			}
		}
		
		$shipment['_packages'] = $packages;
		$shipment['_shipping_cost'] = $total;
		
		$xml = array(			
			'ShippingTotal' => $total
		);	
		
		slp_ajax_functions::confirm_rates( $order, $shipment );
	}
	/**
	 *
	 *
	 *
	 *
	 */ 
	public function get_rates( $order, $shipment ) {
		
		$package_requests = $this->get_package_request( $shipment['_packages'] );
		
		//Create XML for Shipment Confirm Request
		$request  = $this->xml_header();
		$request .= 
		"<ShipmentConfirmRequest xml:lang='en-US'>
			<Request>
				<RequestAction>ShipConfirm</RequestAction>
				<RequestOption>nonvalidate</RequestOption>
		 	</Request>
		  	<TransactionReference>
			 	 <CustomerContext>Shipping Label Pro</CustomerContext>
		  	</TransactionReference>
			<Shipment>";
		$request .=	isset( $shipment['_customs'] ) ? $this->get_customs( $order, $shipment ) : '';
		$request .=	$this->get_shipper();
		$request .=	$this->get_shipping_address( $order );
		$request .= "		
				<PaymentInformation>
					<Type>01</Type>
					<Prepaid>
						<BillShipper>
							<AccountNumber>" . $this->settings['shipper_number'] . "</AccountNumber>
						</BillShipper>
					</Prepaid>
				</PaymentInformation>";
		$request .=	$this->get_service_code( $order );
		foreach ( $package_requests as $package_request ) {
			$request .= $package_request;
		}
		$request .= "
			</Shipment>
			<LabelSpecification>
				<LabelPrintMethod>
					<Code>GIF</Code>
					<Description>gif file</Description>
				</LabelPrintMethod>
				<HTTPUserAgent>Mozilla/4.5</HTTPUserAgent>
				<LabelImageFormat>
					<Code>GIF</Code>
				</LabelImageFormat>
			</LabelSpecification>
		</ShipmentConfirmRequest>";

		$request = str_replace( array( "\n", "\r" ), '', $request );	
		
		//var_dump( htmlentities( $request ) );
					
		//send, receive and parse xml response	
		$response = $this->xml_request( $request, $this->endpoints['production'] . 'ShipConfirm' );
		
		//var_dump( $response );
			
		$shipment['_shipment_digest'] = (string)$response->ShipmentDigest;
		$shipment['_shipping_cost']  = (float)$response->ShipmentCharges->TotalCharges->MonetaryValue;
	
		slp_ajax_functions::confirm_rates( $order, $shipment );
	}