﻿var functionToCallAfterBasketRemove = null;

function Basket(totalBasketCountElementIds) {
  this.totalBasketCountElementIds = totalBasketCountElementIds;
  this.Add = function(productId, quantity) {
      LaissezwareWebService.AddToBasket(productId, quantity, addToBasketComplete, addToBasketFailed);
  };
  this.AddLineItemAndRedirect = function(productId, quantity) {
      LaissezwareWebService.AddToBasket(productId, quantity, addToBasketAndRedirectComplete, addToBasketFailed);
  };
  this.AddGiftCertificateToBasket = function(amount, recipientEmail, to, from, message, typeId) {
      LaissezwareWebService.AddGiftCertificateToBasket(amount, recipientEmail, to, from, message, typeId, addToBasketAndRedirectComplete, addToBasketFailed);
  };
  
  this.RemoveGiftCertificateLineItem = function(giftCertificateGuid, removeCompleteFunction) {
      functionToCallAfterBasketRemove = removeCompleteFunction;
      LaissezwareWebService.RemoveGiftCertificateFromBasket(giftCertificateGuid, removeBasketLineItemComplete, removeBasketLineItemFailed);
  }  
  ///
  ///redeem for the order detail of the checkout process
  ///
    this.redeemCouponByElementId = function(elementId) {
    var CouponNumber=document .getElementById (elementId).value;
      LaissezwareWebService.RedeemCoupon(CouponNumber, addRedeemOrderComplete,addRedeemOrderFailed);
  };
  ///
  ///remove redeemed item
  ///
   this.RemoveredeemedCouponByElementId = function(elementId) {
      LaissezwareWebService.RemoveRedeemCoupon(CouponId, removeRedeemOrderComplete,removeRedeemOrderFailed);
  };
  
  
  
  ///
  ///add the product to wishlist
  ///
  
   this.AddProductToShoppingCartByTypeKey= function(productId, typeKey, redirectUrl) {
    LaissezwareWebService.AddToShoppingCart(productId, typeKey,redirectUrl, addToShoppingCartComplete, addToShoppingCartFailed);
  };
  
  
  
 
  
    this.MailingListSignUp= function() {
    var request=new Laissezware.Web.Ajax.SignupData();
   //  request.MailingListIds=$('#mailListIds').val();
     
      request.MailingListIds=new Array();
    //get great ride categoryId
     request.MailingListIds[0]=parseInt($('#mailListIds').val());
     
     request.CustomAttributeKey=$('#customAttributeKey').val();
     request.EmailAddress=$('#yourEmail').val();
     request.FirstName=$('#yourName').val();
      //LaissezwareWebService.MailingListSignupTest(mailingSignUpComplete, mailingSignUpFailed);
     
     LaissezwareWebService.MailingListSignup(request, mailingSignUpComplete, mailingSignUpFailed);
  };
  

  
   this.RemoveShoppingCartItemByTypeKey = function(productId,typeKey,redirectUrl) {
     LaissezwareWebService.RemoveShoppingCartItem(productId,typeKey,redirectUrl, removeShoppingCartItemComplete, removeShoppingCartItemFailed);
  }  ;
 
  
  
  this.AddPackageProductToBasket = function(productPackageValues, quantity) {
      LaissezwareWebService.AddProductPackageToBasket(productPackageValues, quantity, addToBasketComplete, addToBasketFailed)
  }; 
  
  //edit packageProduct with code
    this.EditPackageProductToBasket = function(packageCode, productPackageValues) {
      LaissezwareWebService.EditProductPackageToBasket(packageCode, productPackageValues, addToBasketComplete, addToBasketFailed)
  }; 
  
   
  this.UpdateLineItem = function(productId, quantity) {
      LaissezwareWebService.UpdateBasketLineItem(productId, quantity, updateBasketLineItemComplete, updateBasketLineItemFailed);
  }
  this.RemoveLineItem = function(productId, removeCompleteFunction) {
  functionToCallAfterBasketRemove = removeCompleteFunction;
      LaissezwareWebService.RemoveBasketLineItem(productId, removeBasketLineItemComplete, removeBasketLineItemFailed);
  }

  this.UpdatePackageProductLineItem = function(productPackageValues, quantity) {
  LaissezwareWebService.UpdateProductPackageItem(productPackageValues, quantity, updateBasketLineItemComplete, updateBasketLineItemFailed);
  }
  this.RemovePackageProductLineItem = function(productPackageValues, removeCompleteFunction) {
      functionToCallAfterBasketRemove = removeCompleteFunction;
      LaissezwareWebService.RemoveProductPackageFromBasket(productPackageValues, removeBasketLineItemComplete, removeBasketLineItemFailed);
  }  
  LaissezwareWebService.GetBasket(getBasketComplete);
} 


function formatLatLngNumber(number) {
/// lat = -36.98154 appears as "-036.98154" 10 chars long
/// long = -36.98154 appears as "-036.98154" 10 chars long
    var num=number.toFixed(5);
    var numStr=num+'';
    var counter=numStr.length;

    while (counter<10)
    {
    if(numStr.substring(0,1)=="-")
    {
    var noMinusStr=numStr.substring(1,counter);
    noMinusStr="0"+noMinusStr;
    numStr="-"+noMinusStr;
    }
    else
    {
    numStr="0"+numStr;
    }

    counter=numStr.length;
    }
    return numStr ;  
}



function getBasketComplete(basketContent) {
    UpdateCartPreview(basketContent);
}

function UpdateCartPreview(basketContent) {
    for (var idx in cart.totalBasketCountElementIds) {
        if ( document.getElementById(cart.totalBasketCountElementIds[idx]))
        {
        document.getElementById(cart.totalBasketCountElementIds[idx]).innerHTML = basketContent.TotalProducts;
        }
    }
    // Display the shopping cart total everywhere its needed
    $(".shoppingCartTotal").text(basketContent.FormattedTotalAmount);
    if (basketContent.Lines != null) {
        for (var idx in basketContent.Lines) {
            var line = basketContent.Lines[idx];
            $(".shoppingCartLineItemAmount" + line.ProductId).text(line.FormattedAmount);
            $(".shoppingCartLineItemPrice" + line.ProductId).text(line.FormattedPrice);
        }
    }
}

///UpdateOrderPreview with redeem coupon details
function UpdateOrderPreview(result) {
   appendRow(result,'orderTable');
   
    $(".orderTotal").text(result.FormattedTotalAmountWithRedeem);
   
   
   //alert ("Message: "+result.Message+ "FormattedRedeemAmount "+result.FormattedRedeemAmount+ "FormattedTotalAmountWithRedeem "+result.FormattedTotalAmountWithRedeem);
}


function appendRow(result,tblId)
{
	var tbl = document.getElementById(tblId);
	var newRow = tbl.insertRow(tbl.rows.length-2);
	var newCell = newRow.insertCell(0);
	var onclickContent='cart.RemoveredeemedCouponByElementId(\""+result.RedeemCode+"\");deleteRow(tblId,this.parentNode.parentNode.rowIndex);return false;';
	newCell.innerHTML = '<a href="#" onclick=\""+onclickContent+"\">Remove</a>';
	newCell = newRow.insertCell(1);
	newCell.innerHTML = '<h4> Coupon: '+result.RedeemCode+'</h4>';
	newCell = newRow.insertCell(2);
	newCell.innerHTML = '';
	newCell = newRow.insertCell(3);
	newCell.innerHTML = '';
	newCell = newRow.insertCell(4);
	newCell.innerHTML ="<h4 class='alignright'> -"+ result.FormattedRedeemAmount+'</h4>';
}



function addToBasketComplete(result) {
 //alert(' add to cart ' + result.Message + " , " + result.TotalProducts);
    //UpdateCartPreview(result);
    //alert('The product has been added to your basket');
     if (result.Message != null) {
     ///add to basket error
     
     $('#addtobasketerror').attr('style',"display:block");
     $('#inner').html('<h2>'+result.Message+'</h2>');
     //alert(result.Message);
    }else
    {
    $('#addtobasketerror').attr('style',"display:none");
        if (result.RedirectUrl != null) {
        window.location = result.RedirectUrl; // Redirect to the page we are told to.
    }else {
    UpdateCartPreview(result);
    //alert('The product has been added to your basket');
    }
    }

}
//wishlist or other cartTypeKey item added to shoppingCart
function addToShoppingCartComplete(result) { 
    if (result.Message != null) {
        alert(result.Message);
    }
    if (!result.IsAuthenticated) {
        window.location = result.RedirectUrl; // Redirect to the page we are told to.
    } 
}



function removeShoppingCartItemComplete(redirectUrl){
 if (redirectUrl != null) {
        window.location =redirectUrl; // Redirect to the page we are told to.
    }
}
function removeShoppingCartItemFailed() {
    alert('Remove wishlist item failed');
}



/// If the add to basket call finishes but the 
// product cannot be added as its not a simple product then this code issues the redirect to the page.
function addToBasketAndRedirectComplete(result) {
    if (result.RedirectUrl != null) {
        window.location = result.RedirectUrl; // Redirect to the page we are told to.
    }else {
    UpdateCartPreview(result);
    //alert('The product has been added to your basket');
    $(document).ready(function() {			
    		$('.btn_add').click(function() {
				var _set;
				_set = $(this).parent();
				 var div = document.createElement("div");
				div.className = "btn_added";
				$(_set).append(div);
				setTimeout(
					function() {
						$(_set).find(".btn_added").fadeOut('slow', 
							function() {
								$(this).remove();});
							}, 2000); 
				});		
		});	
    }
}
/**
function addToShoppingCartComplete() {
    alert('The product has been added to your wishlist');
}**/

function addToShoppingCartFailed() {
    alert(' add to wishlist failed');
}



///
///.if adding the redeem coupon sucessfully
function addRedeemOrderComplete(result) {
     
     
    if (result.Message=="true")
    {
    UpdateOrderPreview(result);
    }else
    {
    alert(result.Message);
    }
    
    
}

function addRedeemOrderFailed() {
    alert('The redeem coupon added failed');
}



///if remove redeemed coupon sucessfully
function removeRedeemOrderComplete(result) {
    if (result.Message=="true")
    {
    $(".orderTotal").text(result.FormattedTotalAmountWithRedeem);
    }else
    {
    alert(result.Message);
    }
    
    
}


function removeRedeemOrderFailed() {
    alert('The redeem coupon remove failed');
}

function deleteRow(tableId, i){
    var tbl = document.getElementById(tblId);
    tbl.deleteRow(i)
}



function updateBasketLineItemComplete(result) {
    //alert(' add to cart ' + result.Message + " , " + result.TotalProducts);
    if (result.Message != null) {
     ///add to basket error
     
     $('#addtobasketerror').attr('style',"display:block");
     $('#inner').html('<h2>'+result.Message+'</h2>');
     
     
    for (var item in result.Lines)
     {
     
      var line = result.Lines[item];
     
     var prodId=line.ProductId;
     var qtydropId="#cartitem"+prodId;
     var qty=line.Quantity;

     $(qtydropId).val(qty);
     }
     //alert(result.Message);
    }else
    {
    $('#addtobasketerror').attr('style',"display:none");
    
    
    

    UpdateCartPreview(result);
    }
}

function removeBasketLineItemComplete(result) {
    //alert(' add to cart ' + result.Message + " , " + result.TotalProducts);
    if (functionToCallAfterBasketRemove) {
        functionToCallAfterBasketRemove();
    }
    UpdateCartPreview(result);
}


 function mailingSignUpComplete(result) {
    if(result ==MailingListSignupStatus.InvalidEmailAddress)
    alert('Sorry,You have entered an invalid Email address');
    if(result ==MailingListSignupStatus.AlreadySignedUp)
    alert('Sorry, You have already signedUp with us');
    if(result ==MailingListSignupStatus.Created)
    alert('Thanks for signing up our newsletter mail list');
    if(result ==MailingListSignupStatus.UnknownFailure)
    alert('Sorry, Unknown Failure'); 
}
  function mailingSignUpFailed() {
    alert('mailing SignUp failed');
}


function removeBasketLineItemFailed() {
    alert('Remove basket line item failed');
}


function updateBasketLineItemFailed() {
    alert('Update basket line item failed');
}

function addToBasketFailed() {
//$('#servererror').val(result.GeoMapId);
 $('#addtobasketerror').attr('style',"display:block");
     $('#inner').html('<h2>Sorry, adding to basket failed, please try again </h2>');


    //alert("Sorry, Cannot add to the basket. The product may run out of stock.");
}

function addGeoMapComplete(result) {
$('#GeoMapIdHidden').val(result.GeoMapId);
var herfText="/the-hedge/great-rides/save-result.aspx?GeoMapId="+result.GeoMapId+"&amp;ie=UTF-8&amp;iframe";
$('a#resultview').attr('href', herfText);
$('#resultview').click()
   // alert(result.Message);
}

function addGeoMapFailed() {

    //alert('Sorry, an error occured and your map could not be saved');
}

function editGeoMapComplete(result) {

    alert(result.Message);
}

function editGeoMapFailed() {
    alert('Sorry, an error occured and your map could not be saved');
}


/** add onKeyDown event handler for checking if customer typing "enter"***/
function KeyDownSubmitHandler(event) {  
 if (event.keyCode == 13) {
   return true;
  }
  return false;
}



