public ActionResult Billing(CheckoutDetailsModel checkoutDetailsModel)
        {
            if (CheckIfCartSessionTimedoutOrCartIsEmpty())
            {
                return RedirectToAction("CheckoutSessionTimeout");
            }
            if (!String.IsNullOrEmpty(Request.Form["LoginEmail"]))
            {
                var js = new JavaScriptSerializer();

                var jsonModel = js.Serialize(checkoutDetailsModel);

                return RedirectToAction("ProcessSignin", "MyAccount", new RouteValueDictionary
                                                                   {
                                                                       {"RedirectMode",RedirectMode.Route},
                                                                       {"RouteController","Checkout"},
                                                                       {"RouteAction","Billing"},
                                                                       {"Email",Request.Form["LoginEmail"]},
                                                                       {"Password",Request.Form["LoginPassword"]},
                                                                       {"JSONEncodedRouteValues",jsonModel},
                                                                       {"RouteValuesModelClassName",checkoutDetailsModel.GetType().FullName}

                                                                   });

            }

            var builder = new BillingViewModelBuilder(checkoutDetailsModel, authentication,accountService,mapper);
            var viewModel = builder.Build();

            return View(viewModel);
        }