function sunshine_paypal_redirect()
{
    global $current_user, $sunshine;
    if (is_page($sunshine->options['page_checkout']) && isset($_GET['paypal_redirect']) && isset($_GET['order_id'])) {
        $order = get_post((int) $_GET['order_id']);
        if (!$order) {
            wp_die(__('ERROR, something went really wrong', 'sunshine') . ' (1)');
            exit;
        }
        $status = sunshine_get_order_status($order->ID);
        if ($status->slug != 'pending') {
            wp_die(__('ERROR, something went really wrong', 'sunshine') . ' (2)');
            exit;
        }
        $paypal_args = array();
        $paypal_args['custom'] = $order->ID;
        $paypal_url = $sunshine->options['paypal_test_mode'] ? 'https://www.sandbox.paypal.com/cgi-bin/webscr' : 'https://www.paypal.com/cgi-bin/webscr';
        ?>
	<html>
		<head>
			<title><?php 
        _e('Redirecting to PayPal', 'sunshine');
        ?>
...</title>
			<style type="text/css">
			body, html { margin: 0; padding: 50px; background: #FFF; }
			h1 { color: #000; text-align: center; font-family: Arial; font-size: 24px; }
			</style>
		</head>
		<body>
			<h1><?php 
        _e('Redirecting to PayPal', 'sunshine');
        ?>
...</h1>
			<form method="post" action="<?php 
        echo $paypal_url;
        ?>
" id="paypal" style="display: none;">

			<?php 
        // Cart info
        $order_data = maybe_unserialize(get_post_meta($order->ID, '_sunshine_order_data', true));
        $order_items = maybe_unserialize(get_post_meta($order->ID, '_sunshine_order_items', true));
        $i = 1;
        foreach ($order_items as $item) {
            $name_key = 'item_name_' . $i;
            $quantity_key = 'quantity_' . $i;
            $amount_key = 'amount_' . $i;
            $product = get_post($item['product_id']);
            $cat = wp_get_post_terms($item['product_id'], 'sunshine-product-category');
            $name = apply_filters('sunshine_cart_item_category', isset($cat[0]->name) ? $cat[0]->name : '', $item) . ' - ' . apply_filters('sunshine_cart_item_name', $product->post_title, $item);
            if ($item['image_id'] > 0) {
                $image = get_post($item['image_id']);
                $name = $image->post_title . ' - ' . $name;
            }
            $paypal_args[$name_key] = $name;
            $paypal_args[$quantity_key] = $item['qty'];
            $paypal_args[$amount_key] = number_format($item['price'], 2);
            $i++;
        }
        if ($sunshine->cart->shipping_method['cost'] > 0) {
            $paypal_args['item_name_' . $i] = sprintf(__('Shipping via %s', 'sunshine'), $sunshine->cart->shipping_method['title']);
            $paypal_args['quantity_' . $i] = 1;
            $paypal_args['amount_' . $i] = number_format($sunshine->cart->shipping_method['cost'], 2);
        }
        $paypal_args['tax_cart'] = number_format($sunshine->cart->tax, 2);
        $discount_total = 0;
        if ($sunshine->cart->discount_total) {
            $discount_total = $sunshine->cart->discount_total;
        }
        if ($sunshine->cart->useable_credits) {
            $discount_total += $sunshine->cart->useable_credits;
        }
        $paypal_args['discount_amount_cart'] = number_format($discount_total, 2);
        /*
        $paypal_args['item_name_1'] = __( 'Order from ','sunshine' ).get_bloginfo( 'name' );
        $paypal_args['quantity_1'] = 1;
        $paypal_args['amount_1'] = number_format( $sunshine->cart->total, 2 );
        */
        // Business Info
        $paypal_args['business'] = $sunshine->options['paypal_email'];
        $paypal_args['cmd'] = '_cart';
        $paypal_args['upload'] = '1';
        $paypal_args['charset'] = 'utf-8';
        if ($sunshine->options['page_style']) {
            $paypal_args['page_style'] = $sunshine->options['page_style'];
        }
        $paypal_args['currency_code'] = $sunshine->options['currency'];
        $paypal_args['return'] = add_query_arg(array('paypal_complete' => '1'), get_permalink($order->ID));
        $paypal_args['cancel_return'] = wp_nonce_url(add_query_arg('order_id', $order->ID, sunshine_url('checkout')), 'paypal_cancel', 'paypal_cancel');
        $paypal_args['notify_url'] = trailingslashit(get_bloginfo('url')) . '?sunshine_paypal_ipn=paypal_standard_ipn';
        if (isset($order_data['shipping_method']) && ($order_data['shipping_method'] == 'pickup' || $order_data['shipping_method'] == 'download')) {
            // Don't need any shipping info, so don't pass anything
            $paypal_args['no_shipping'] = 1;
        } else {
            // Need shipping information
            $paypal_args['no_shipping'] = 2;
            $paypal_args['address_override'] = 1;
            // Send what we got
            $paypal_args['address1'] = SunshineUser::get_user_meta('shipping_address');
            $paypal_args['address2'] = SunshineUser::get_user_meta('shipping_address2');
            $paypal_args['city'] = SunshineUser::get_user_meta('shipping_city');
            $paypal_args['state'] = SunshineUser::get_user_meta('shipping_state');
            $paypal_args['zip'] = SunshineUser::get_user_meta('shipping_zip');
            $paypal_args['country'] = SunshineUser::get_user_meta('shipping_country');
        }
        // Prefill user info
        $paypal_args['first_name'] = SunshineUser::get_user_meta('first_name');
        $paypal_args['last_name'] = SunshineUser::get_user_meta('last_name');
        $paypal_args['email'] = SunshineUser::get_user_meta('email');
        $phone = preg_replace("/[^0-9,.]/", "", SunshineUser::get_user_meta('phone'));
        $paypal_args['night_phone_a'] = substr($phone, 0, 3);
        $paypal_args['night_phone_b'] = substr($phone, 3, 3);
        $paypal_args['night_phone_c'] = substr($phone, 6, 4);
        $paypal_args = apply_filters('sunshine_paypal_args', $paypal_args);
        foreach ($paypal_args as $key => $value) {
            $paypal_args_array[] = '<input type="hidden" name="' . esc_attr($key) . '" value="' . esc_attr($value) . '" />';
        }
        echo implode("\r\n", $paypal_args_array);
        ?>

			<input type="submit" value="<?php 
        _e('Submit payment via PayPal', 'sunshine');
        ?>
" style="border: none; background: #FFF; color: #FFF; box-shadow: none; text-shadow: none;" />
		</form>
		<script>
			document.getElementById("paypal").submit();
		</script>
		</body>
		</html>
<?php 
        die;
    }
}
    ?>
" class="sunshine-button-alt" />
	</div>

	</form>
	
	<?php 
    do_action('sunshine_after_cart_form');
    ?>

	<div id="sunshine-cart-totals">
		<?php 
    sunshine_cart_totals();
    ?>
		<p id="sunshine-cart-checkout-button"><a href="<?php 
    echo sunshine_url('checkout');
    ?>
" class="sunshine-button"><?php 
    _e('Continue to checkout', 'sunshine');
    ?>
 &rarr;</a></p>
	</div>

<?php 
} else {
    ?>
	<p><?php 
    _e('You do not have anything in your cart yet!', 'sunshine');
    ?>
</p>
<?php 
function sunshine_favorites_submit()
{
    global $sunshine, $current_user;
    if (isset($_GET['submit_favorites']) && isset($_GET['nonce']) && wp_verify_nonce($_GET['nonce'], 'sunshine_submit_favorites')) {
        $content = sprintf(__('%s has submitted their favorites, <a href="%s">view them here</a>', 'sunshine'), $current_user->display_name, admin_url('user-edit.php?user_id=' . $current_user->ID . '#sunshine-favorites'));
        $search = array('[message_content]');
        $replace = array($content);
        if ($sunshine->options['order_notifications']) {
            $admin_emails = explode(',', $sunshine->options['order_notifications']);
        } else {
            $admin_emails = array(get_bloginfo('admin_email'));
        }
        foreach ($admin_emails as $admin_email) {
            $mail_result = SunshineEmail::send_email('favorites', trim($admin_email), sprintf(__('%s has submitted favorites'), $current_user->display_name), '', $search, $replace);
        }
        $sunshine->add_message(__('Your favorite images have been sent', 'sunshine'));
        wp_redirect(sunshine_url('favorites'));
        exit;
    }
}
function sunshine_custom_login_url($url)
{
    if (isset($_GET['sunshine']) && $_GET['sunshine'] == 1 || isset($_POST['sunshine']) && $_POST['sunshine'] == 1) {
        return sunshine_url('home');
    }
    return $url;
}
 function build_main_menu($menu)
 {
     global $sunshine;
     if (is_user_logged_in()) {
         $menu[110] = array('name' => __('Logout', 'sunshine'), 'url' => wp_logout_url($sunshine->base_url), 'class' => 'sunshine-logout');
         $menu[100] = array('name' => __('Account', 'sunshine'), 'url' => sunshine_url('account'), 'class' => 'sunshine-account');
     } else {
         $menu[100] = array('name' => __('Login', 'sunshine'), 'url' => wp_login_url(sunshine_current_url(false)), 'class' => 'sunshine-login');
         $menu[110] = array('name' => __('Register', 'sunshine'), 'url' => wp_registration_url() . '&redirect_to=' . sunshine_current_url(false), 'class' => 'sunshine-register');
     }
     $menu[10] = array('name' => get_the_title($sunshine->options['page']), 'url' => sunshine_url('home'), 'class' => 'sunshine-galleries');
     if (!$sunshine->options['proofing']) {
         $cart_count = '';
         if (!empty($sunshine->cart->content)) {
             $cart_count = '<span class="sunshine-count sunshine-cart-count">' . $sunshine->cart->item_count . '</span>';
         }
         $menu[40] = array('name' => __('Cart', 'sunshine'), 'url' => sunshine_url('cart'), 'class' => 'sunshine-cart', 'after_a' => $cart_count);
         $menu[50] = array('name' => __('Checkout', 'sunshine'), 'url' => sunshine_url('checkout'), 'class' => 'sunshine-checkout');
     }
     return $menu;
 }