﻿var BasketContents = {
    Count: 0,
    BasketId: null,
    Contents: null
}

var isCulture = null;
var _cartname = '';
var _cartid = '';

function RefreshBasket() {
    UpdateSmallBasket(BasketContents.Contents);
}

function UpdateSmallBasket(basket, showvat) {
    stopUpdateWindow();
    BasketContents.BasketId = basket.EntryId;
    
    
    if (isCulture == null)
        isCulture = Sys.CultureInfo._parse('{"name":"","numberFormat":{"CurrencyDecimalDigits":0,"CurrencyDecimalSeparator":",","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":".","CurrencySymbol":"\u00A4","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":0,"NumberDecimalSeparator":",","NumberGroupSeparator":".","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":",","PercentGroupSeparator":".","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"MM/dd/yyyy","ShortTimePattern":"HH:mm","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"yyyy MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":true,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}');
    // Check if small basket is visible
    BasketContents.Contents = basket;
    
    
    
    try {
        if (!g_inSmallBasket)
            return;
    } catch (e) { return; }
    
    var withVat = false;
    
    if (showvat != undefined)
        withVat = showvat;
    
    try {
        if (document.getElementById("user_settings_with_vat").checked)
            withVat = true;
            
        if (document.getElementById("user_settings_without_vat").checked)
            withVat = false;
    } catch (e) {}
    
    var objBasketDate = $get("basket_date");
    var objBasketTime = $get("basket_time");
    var objBasketName = $get("basket_name");
    var objBasketContent = $get("basket_content");
    
    if (basket.Modified.localeFormat) {
        objBasketDate.innerHTML = basket.Modified.localeFormat('dd.MM.yyyy');
        objBasketTime.innerHTML = basket.Modified.localeFormat('HH:mm');
    }
    
    objBasketName.innerHTML = '<h4>' + basket.Name + '</h4>';
    
    objBasketContent.innerText = '';
    
    var html = '';
    var productCount = 0;
    
    if(basket.RelatedProducts.length > 0) {
        var removedproducts = '<div>';
        removedproducts += '<strong>Sumar vörur hafa verið teknar úr körfu vegna notendaréttinda þinna. Vinsamlegast leitaðu að öðrum sambærilegum vörum:</strong><br />';
        for (var i=0;i < basket.RelatedProducts.length;i++) {
            removedproducts += '<span>' + basket.RelatedProducts[i].Name + '</span><br />';
        }
        removedproducts += '</div>';
        createAlert(removedproducts);
    }
    
        
    if(basket.Products.length > 0) {
        if(basket.Products.length > 1) {
            $get('product_count').innerHTML = basket.Products.length +' '+ Translate("basket.items");
        }
        else {
            $get('product_count').innerHTML = basket.Products.length + ' ' + Translate("basket.item");
        }
    }
    else {
        $get('product_count').innerHTML = ''
    }
    
    if(basket.Products.length > 10) {
        
        for (var i=0;i < basket.Products.length;i++) {
            var myProduct = basket.Products[i];
            
            productCount += myProduct.Quantity;
        }
        
        //Checking if the product count ends with 11 to get correct Icelandic grammar
        var basketCountStr = productCount + "xx";
        var basketEnds = (basketCountStr.indexOf("11xx") > -1);
            
        if (productCount == 1 || (productCount % 10 == 1 && !basketEnds)) {
            html = '<div class="basket_count">' + productCount + ' ' + Translate("basket.product") + '</div>';
          }
        else if (productCount > 1) {
            html = '<div class="basket_count">' + productCount + ' ' + Translate("basket.products") + '</div>';  
        }
        else {
            html = '<div class="basket_count">' + Translate("product.empty") + '</div>';
        }
    }
    else {
        for (var i=0;i < basket.Products.length;i++) {
            var product = basket.Products[i];
            
            productCount += product.Quantity;
            
            var price = product.Price;
            if (withVat)
                price = product.PriceWithVat;
                
            var totalPrice = price * product.Quantity;
            var basketTot=Math.round(totalPrice)._toFormattedString('n0', isCulture);
            html += '<div class="basket_row"><div class="basket_row_quantity" title="'+ Translate("basket.quantity") + ': ' + product.Quantity + '"> ' + product.Quantity + ' x</div><div class="basket_row_name"><strong title="' + removeQuotes(product.Name) + '">' + cropText(product.Name,'4') + '</strong></div>';

            html += '<div class="basket_row_total">' + basketTot + ' <span title="' + Translate('basket.icelandic.krona') + '"></span></div>';
            html += '<div class="basket_row_remove"><a class="img_replace icon_remove" title="' + trnRemove + '" href="javascript:RemoveProductFromBasket(\'' + product.Id + '\');"><span>[x]</span></a></div>';
            html += '</div>';
        }
    }
    
    var subTotalPrice = 0;
    if (withVat)
    {
        subTotalPrice = basket.TotalPriceWithVat;
    }
    else
    {
        subTotalPrice = basket.TotalPrice;
    }
    
    html += '<div class="basket_total"><strong>' + Math.round(subTotalPrice)._toFormattedString('n0', isCulture) + '</strong> <span title="' + Translate('basket.icelandic.krona') + '">' + Translate('common.currency') + '</span></div>';
    html += '<div class="basket_vat">';
    
    if (withVat) {
        html += Translate('basket.allwithvat');
    }
    else 
    {
        html += Translate('basket.allwithoutvat');
    }
    
    html += '</div>';
    
    objBasketContent.innerHTML = html;
    BasketContents.Count = productCount;
    
    EventHandler.Fire('basketupdate');
            
    //Check if the user is in a user group with a fixed purchase limit
    CheckBasketLimit();
}

function OnSuccessAddProduct(results) {

    UpdateSmallBasket(results);
    stopUpdateWindow();
}

function OnErrorAddProduct(error) {
    alert(error.get_message());
    //TODO: Handle error
    stopUpdateWindow();
}

function CheckBasketLimit() {
    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.CheckBasketPurchaseLimit(OnGetPurchaseLimit, OnGetPurchaseLimitError);
}

function OnGetPurchaseLimit(results) {
    if(results.length == 0) {
        //No error, no limit breach
        if(document.getElementById("start_checkout")) {
            showContainer("start_checkout");
        }
    } else {
        if(results == "showmsg") {
            createAlert(Translate("error.basket.overpurchaselimit"));
        }
        
        hideCheckout();
    }
}

function hideCheckout() {
    if(document.getElementById("start_checkout")) {
        hideContainer("start_checkout");
    }
}

function OnGetPurchaseLimitError(error) {
    createAlert(error.get_message());
    
    hideCheckout();
}

function OnSuccessRemoveProduct(results) {
    try {
        DoLargeBasketUpdate(results.EntryId);
        stopUpdateWindow();
    } catch(e) {
        stopUpdateWindow();
    }
    
    if (BasketContents.BasketId == results.EntryId) {
        UpdateSmallBasket(results);
    }
}

function OnErrorUpdateProduct(error) {
    alert(error.get_message());
    //TODO: Handle error
}

function OnSuccessUpdateProduct(results) {
    UpdateSmallBasket(results);
    stopUpdateWindow();
}

function OnErrorRemoveProduct(error) {
    alert(error.get_message());
    stopUpdateWindow();
    //TODO: Handle error
}

function AddProductToBasket(id, count) {
    ShowUpdateWindow();
    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.AddProductToBasket(id, count, OnSuccessAddProduct, OnErrorAddProduct);
}
function AddProductToBasketDec(id, count,dec) {
    ShowUpdateWindow();
    var obj=document.getElementById('product_units_'+id);
    validateNumber(obj);
	    if(obj.value.length > 0) {   
    		var count=parseInt(obj.value);
    		var t=count-dec;
    		
    		if(t>dec || t>0)
    		{
    		    count=count-dec;
    		    obj.value=count;      
    
    }
    }
   
     
    stopUpdateWindow();
   
    }

function AddProductToBasketInc(id, count,inc) {
    ShowUpdateWindow();
    var obj=document.getElementById('product_units_'+id);
     validateNumber(obj);
	    if(obj.value.length > 0) {   
    		var count=parseInt(obj.value);
    		    count=count+inc;
    		    obj.value=count;    		
    
               
    }
     stopUpdateWindow();
}



var t_ProductId;
var t_Count;
function AddProductToBasket1(id, count) {
    t_ProductId=id;
    t_Count=count;
    ShowUpdateWindow();
    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.CheckProduct(id,OnSuccessAddProduct1, OnErrorAddProduct1);
    
}
var basketId_sendTo;
function sendBasket(id)
{
    basketId_sendTo=id;

 var request = '<h3>' + Translate('basket.sendto') + '</h3>';
    request +='<div >';
    request +='<div>';
    request +='<label class="hide" for="basketname">' + Translate("user.email") + ' *</label>';
    request += '<input id="useremailid" class="validate" size="30"/><br />';
    request +='</div></div><label id="result"></label><br/>';
    request += '<a class="button_orange" title="' + Translate('common.sendandclose') + '" href="javascript:SendAndClose()"><span>' + Translate('common.sendandclose') + '</span></a>';
    request += '<div class="clear"></div>';

    createAlert(request);

}
function SendAndClose()
{
    var id=document.getElementById('useremailid').value;
    if(id!='')
        ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.SendBasketToOtherUser(basketId_sendTo,id,OnSuccessSendAndClose);

}
function OnSuccessSendAndClose(results)
{
    if(results)
    {
        document.getElementById('result').innerHTML=  Translate("basket.sendsuccessfully");  
    }
    else
    {
       document.getElementById('result').innerHTML=  Translate("basket.sendfailed");
    }
 
}
var ProductImageId;
function acceptBasket(obj,id)
{

ProductImageId=obj;
ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.AcceptBasket(id,OnSuccessAcceptBasket);
}
function OnSuccessAcceptBasket(results)
{
if(results)
{
 var requestHtml = '<h2>' + Translate('basket.acceptedsuccessfully') + '</h2><br/>';
       requestHtml += '<div class="clear"></div>';
    createAlert(requestHtml);
  
  document.getElementById(ProductImageId).className="actions_icon icon_sendto";      
    
}
else{
var requestHtml = '<h2>' + Translate('basket.acceptedfailed') + '</h2><br/>';
       requestHtml += '<div class="clear"></div>';
    createAlert(requestHtml);
}
}
function OnSuccessAddProduct1(results) {

   if(results)
   {
   ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.AddProductToBasket(t_ProductId, t_Count, OnSuccessAddProduct, OnErrorAddProduct);
     
   }   
   else
   {
   stopUpdateWindow();
  
    var requestHtml = '<h2>' + Translate('basket.noproduct') + '</h2><br/>';
    requestHtml+='<span>'+ Translate('basket.noproducte') + '</span><br/>';
    //requestHtml += '<a href="javascript:deleteAlert();" class="button_red"><span>' + Translate('forms.cancel') + '</span></a>';
    requestHtml += '<div class="clear"></div>';
    createAlert(requestHtml);
    $get("commentText").focus();
   }
    
}

function OnErrorAddProduct1(error) {
    alert(error.get_message());
    //TODO: Handle error
    stopUpdateWindow();
}

function UpdateProductInBasket(id, count) {
    ShowUpdateWindow();
    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.UpdateProductInBasket(id, count, OnSuccessUpdateProduct, OnErrorUpdateProduct);
}

function RemoveProductFromBasket(id, basketId) {
    ShowUpdateWindow();

    var emptyBasket = '00000000-0000-0000-0000-000000000000';
    
    if (basketId != null && basketId != undefined) {
        ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.RemoveProductFromBasket(basketId, id, OnSuccessRemoveProduct, OnErrorRemoveProduct);
    } else {
        ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.RemoveProductFromBasket(emptyBasket, id, OnSuccessRemoveProduct, OnErrorRemoveProduct);
    }
}

function NewBasket() 
{
   var request = '<h3>' + Translate('basket.new') + '</h3>';
    request +='<div id="new_cart">';
    request +='<div>';
    request +='<label class="hide" for="basketname">' + Translate("common.name") + ' *</label>';
    request += '<input id="basketname" class="validate" size="25"/><br />';
    request +='</div></div>';
    request += '<a class="button_orange" title="' + Translate('common.saveandclose') + '" href="javascript:SaveAndClose()"><span>' + Translate('common.saveandclose') + '</span></a>';
    request += '<a class="button_green" title="' + Translate('common.saveandactivate') + '" href="javascript:SaveAndActivate()"><span>' + Translate('common.saveandactivate') + '</span></a>';
    request += '<div class="clear"></div>';

    createAlert(request);
}

function OnSuccessSaveAndActivate(results) {
    UpdateSmallBasket(results);
    stopUpdateWindow();
}

function SaveAndActivate() {
    var basketname = $get("basketname");
    
    if(validateForm("new_cart",Translate("common.missing"))) {
        ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.CreateNewBasketAndSelect(basketname.value, OnSuccessSaveAndActivate);
        deleteAlert();
    }
}

function OnSuccessSaveAndClose(results) {
    //TODO: Done saving
}

function SaveAndClose() {
    var basketname = $get("basketname");
    
    if(validateForm("new_cart",Translate("common.missing"))) {
        ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.CreateNewBasket(basketname.value, OnSuccessSaveAndClose);
        deleteAlert();
    }
}

function OnSuccessSelectBasket(results) {
    UpdateSmallBasket(results);
}

function ActivateBasket(id) {
    ShowUpdateWindow();
    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.SelectBasket(id, OnSuccessSelectBasket);
}

function OnUpdateBasketQuantity(results, context) {
    try {        
        DoLargeBasketUpdate(results.EntryId, context);
    } catch(e) {}
    
    if (BasketContents.BasketId == results.EntryId) {
        UpdateSmallBasket(results);
    }
}

function OnUpdateBasketQuantityError(error) {
    stopUpdateWindow();
    createAlert(error.get_message());
}

function UpdateBasketQuantity(obj, id, basketId,e) 
{
    var QuantityChanged = false;
   if (!e) var e = window.event; 
    if (e) {
        if(e.keyCode > 47 && e.keyCode < 58)
            QuantityChanged = true;
	    else if(e.keyCode > 95 && e.keyCode < 106)
                QuantityChanged = true;
	    else if(e.keyCode == 46)
	        QuantityChanged = true;
	    else if(e.keyCode == 8)
	        QuantityChanged = true;
    }
    else if (obj) {
	
        if(obj.which > 47 && obj.which < 58)
            QuantityChanged = true;
	    else if(obj.which > 95 && obj.which < 106)
                QuantityChanged = true;
	    else if(obj.which == 46)
	        QuantityChanged = true;
	    else if(obj.which == 8)
	        QuantityChanged = true;
    }

    if(obj.type != 'text') {
	QuantityChanged = true;
    }

    if(QuantityChanged) { 

	    validateNumber(obj);

	    if(obj.value.length > 0) {   
    		
	            ShowUpdateWindow();
        	    if (basketId != undefined) {
            		    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.UpdateBasketQuantity(basketId, id, obj.value, OnUpdateBasketQuantity, OnUpdateBasketQuantityError, id);
	            } else {
        		    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.UpdateBasketQuantity(null, id, obj.value, OnUpdateBasketQuantity, OnUpdateBasketQuantityError, id);
	            }
	    }
    }
}
function UpdateBasketQuantityKeyUp(obj,id, basketId,inc,e) {
    
     var QuantityChanged = false;
   if (!e) var e = window.event; 
    if (e) {
        if(e.keyCode > 47 && e.keyCode < 58)
            QuantityChanged = true;
	    else if(e.keyCode > 95 && e.keyCode < 106)
                QuantityChanged = true;
	    else if(e.keyCode == 46)
	        QuantityChanged = true;
	    else if(e.keyCode == 8)
	        QuantityChanged = true;
    }
    else if (obj) {
	
        if(obj.which > 47 && obj.which < 58)
            QuantityChanged = true;
	    else if(obj.which > 95 && obj.which < 106)
                QuantityChanged = true;
	    else if(obj.which == 46)
	        QuantityChanged = true;
	    else if(obj.which == 8)
	        QuantityChanged = true;
    }

    if(obj.type != 'text') {
	QuantityChanged = true;
    }

    if(QuantityChanged) { 
    
	    validateNumber(obj);
	    if(obj.value.length > 0) {   
    		var count=parseInt(obj.value);
    		   // count=count+inc;
    		    obj.value=count;    		
	            ShowUpdateWindow();
        	    if (basketId != undefined) {
            		    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.UpdateBasketQuantity(basketId, id,count , OnUpdateBasketQuantity, OnUpdateBasketQuantityError, id);
	            } else {
        		    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.UpdateBasketQuantity(null, id, count, OnUpdateBasketQuantity, OnUpdateBasketQuantityError, id);
	            }
	    }
    }
}




function UpdateBasketQuantity2(obj,id, basketId,inc) {
    
	    validateNumber(obj);
	     if(obj.value=='')
	    {
	     obj.value=inc;
	    } 
	   else if(obj.value.length > 0) {   
    		var count=parseInt(obj.value);
    		    count=count+inc;
    		    obj.value=count;    		
	            ShowUpdateWindow();
        	    if (basketId != undefined) {
            		    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.UpdateBasketQuantity(basketId, id,count , OnUpdateBasketQuantity, OnUpdateBasketQuantityError, id);
	            } else {
        		    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.UpdateBasketQuantity(null, id, count, OnUpdateBasketQuantity, OnUpdateBasketQuantityError, id);
	            }
	    }
    
}
function UpdateBasketQuantity1(obj,id, basketId,dec) {
        
	    validateNumber(obj);
	     if(obj.value=='')
	    {
	     obj.value=dec;
	    } 
	   else if(obj.value.length > 0) {   
    		var count=parseInt(obj.value);
    		var t=count-dec;
    		if(t>dec || t>0)
    		{
    		    count=count-dec;
    		    obj.value=count;    		
	            ShowUpdateWindow();
        	    if (basketId != undefined) {
            		    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.UpdateBasketQuantity(basketId, id,count , OnUpdateBasketQuantity, OnUpdateBasketQuantityError, id);
	            } else {
        		    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.UpdateBasketQuantity(null, id, count, OnUpdateBasketQuantity, OnUpdateBasketQuantityError, id);
	            }
	         }
	    }
    
}




function OnUpdateBasketComment(results) {
    try {
        DoLargeBasketUpdate(results.EntryId);
    } catch(e) {
        alert(e.message);
    }
    
    if (BasketContents.BasketId == results.EntryId) {
        UpdateSmallBasket(results);
    }
}

function __UpdateBasketComment(productId, comment, basketId) {
    // function added to split long comments
    var usercomments = GetWebSafeName(comment,'32');
    if (basketId != undefined) {
        ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.SetBasketComment(basketId, productId, usercomments, OnUpdateBasketComment);
    } else {
        ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.SetBasketComment(null, productId, usercomments, OnUpdateBasketComment);
    }
    
    deleteAlert();
}

function SetBasketComment(productid, commentPosition, basketId) {
    var defaultText = $get("comment_" + commentPosition).value;
    var requestHtml = '<h2>' + Translate('basket.addcomment.heading') + '</h2><label for="commentText">' + Translate('basket.addcomment.question') + '</label><br/><textarea id="commentText" cols="35" rows="12" style="width:95%;margin-top:5px;margin-bottom:10px;">' + (defaultText?defaultText:'') + '</textarea><br/>';
    requestHtml += '<a href="javascript:__UpdateBasketComment(\'' + productid + '\', $get(\'commentText\').value, \'' + basketId + '\')" class="button_green"><span>' + Translate('forms.confirm') + '</span></a>';
    requestHtml += '<a href="javascript:deleteAlert();" class="button_red"><span>' + Translate('forms.cancel') + '</span></a>';
    requestHtml += '<div class="clear"></div>';
    createAlert(requestHtml);
    $get("commentText").focus();
}

function EditBasket() {
    ShowUpdateWindow();
    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.GetLargeBasket(BasketContents.BasketId, OnSuccessGetLargeBasketEdit, OnErrorGetLargeBasket);
}

function UpdateLargeBasketWindow()
{
    ShowUpdateWindow();    
    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.GetLargeBasket(BasketContents.BasketId, OnSuccessGetLargeBasketWindow, OnErrorGetLargeBasket);
}

function UpdateLargeBasketWindow(context)
{
    ShowUpdateWindow();    
    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.GetLargeBasket(BasketContents.BasketId, OnSuccessGetLargeBasketWindow, OnErrorGetLargeBasket, context);
}

function OnSuccessGetLargeBasketWindow(results, context) {
    stopUpdateWindow();
    
    if(document.getElementById("basket_window")) {
        document.getElementById("basket_window").innerHTML = results;
    }
    
    if(document.getElementById("basket_container")) {
        document.getElementById("basket_container").innerHTML = results;
    }
    if($get('product_units_' + context) != null) {
        $get('product_units_' + context).focus();
    }
}

function OnSuccessGetLargeBasketEdit(results) {
    stopUpdateWindow();
    
    var html = '<div id="basket_window">' + results + '</div>';
    createWindow(html);
}

function OnSuccessGetLargeBasket(results, context) {
    stopUpdateWindow();
    var contentId = context;
    
    var updateTemplate = $get("basketupdatetemplate");
    var content = FilterListContentGet(contentId);
    
    if (content) {
        content.innerHTML = updateTemplate.innerHTML.replace("$id$", contentId);
        FilterListContentShow(contentId);
       
        $get(contentId + "_base").innerHTML = results;
    }
}

function OnErrorGetLargeBasket(error) {
    stopUpdateWindow();
    createAlert(error.get_message());
}

var arrBaskets = [];

function updateBasket(contentId, basketId, hide) {
    arrBaskets[basketId] = contentId;
    
    var content = FilterListContentGet(contentId);
    
    var mustHide = true;
    
    if (hide != undefined) {
        if (!hide)
            mustHide = false;
    }
    
    if (content) {
        var editIcon = document.getElementById(contentId);
        
        if(editIcon.className.indexOf("_on") > -1)
            editIcon.className = editIcon.className.replace("_on","");
        else
            editIcon.className = editIcon.className + "_on";
                
        if (FilterListContentIsShown(contentId) && mustHide) {                
            FilterListContentHide(contentId);
        } else {   
            ShowUpdateWindow();
            ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.GetLargeBasketCheckout(basketId, OnSuccessGetLargeBasket, OnErrorGetLargeBasket, contentId);
        }
    }
}

function DoLargeBasketUpdate(basketId) {
    if (arrBaskets[basketId]) {
        updateBasket(arrBaskets[basketId], basketId, false);
    }
    
    if(document.getElementById("basket_window") || document.getElementById('basket_container')) {
        UpdateLargeBasketWindow();
    }
}

function DoLargeBasketUpdate(basketId, context) {
    if (arrBaskets[basketId]) {
        updateBasket(arrBaskets[basketId], basketId, false);
    }
    
    if(document.getElementById("basket_window") || document.getElementById('basket_container')) {
        UpdateLargeBasketWindow(context);
    }
}

function deleteBasket(basketId) {
    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.RemoveBasket(basketId, OnSuccessRemoveBasket, OnErrorRemoveBasket);
}

function OnSuccessRemoveBasket() {
    UpdateBasketList();
}

function OnErrorRemoveBasket(error) {
    createAlert(error.get_message());
}

function UpdateBasketList() {
    FilterViewChangeSingle(document.getElementById('filter_cell_name'), 'Name', 'basket_list');
}

function ClearBasket() {
    var html = '<a class="img_replace global_close_window" href="javascript:deleteObject(\'object_container\');"><span>' + Translate("forms.cancel") + '</span></a>';
    html += '<h1>' + Translate("basket.clear.message") + '</h1><div>';
    //html += '<h1>' + Translate("login.forgotpassword") + '</h1><div>';
    //html += '<label for="forgot_password">' + Translate("common.email") +' *</label>';
    //html += '<input type="text" id="forgot_password" class="validate email" maxlength="128" /></div>';
    html += '<div class="login_buttons">';
    html += '<a class="button_green" href="javascript:doClearBasket();"><span>' + Translate("basket.clear.button") + '</span></a><span class="hide"> | </span>';
    html += '<a class="button_red" href="javascript:deleteObject(\'object_container\');"><span>' + Translate("forms.cancel") + '</span></a><div class="clear"></div></div>';
    html += '<p>' + Translate("basket.clear.description") + '</p><hr class="hidden"/>';
    
    createObject(html, "forgot_password_container", "user_form");
}

function doClearBasket() {
    deleteObject('object_container');
    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.ClearBasket(OnBasketCleared, OnErrorClearBasket);
}

function OnBasketCleared(results) {
    UpdateSmallBasket(results);
}

function OnErrorClearBasket(error) {
    createAlert(error.get_message());
}

function makeEditable(id) {
    var span = document.getElementById("field_" + id);
    span.className = span.className.replace("editme","");
    
    var tmpValue = span.innerHTML;
    
    span.innerHTML = "";
    span.onclick = "";
    span.ondblclick = "";
    
    var inputBox = "";
    
    inputBox = '<input id="edit_' + id + '" onblur="saveEditable(\'' + id + '\')" size="25" maxlength="70" title="Click outside to save / ESC to cancel" class="editable"/>';
    
    var html = span.innerHTML;
        
    span.innerHTML = html + "" + inputBox;
    var box = document.getElementById("edit_" + id);
    box.onkeypress = cancelEdit;
    box.value = tmpValue;
    box.orig_value = tmpValue;
    box.ectype = id;
    box.focus();
}

function cancelEdit(e) {
    var keycode; 

    if (window.event) keycode = window.event.keyCode; 
    else if (e) keycode = e.keyCode; 
    
    if (keycode == 13)
    {
        //If the user presses enter update the value
        saveEditable(this.ectype);
    }
    else if (keycode == 27) {
        //If the user presses ESC replace the current value with the original value
        var type = this.ectype;
        var value = this.orig_value;
        
        var span = document.getElementById("field_" + type);
        var container = span.parentNode;
        
        var safariBug = false;
                
        if(span != null) {
            try {
                container.removeChild(span);
            } catch (err){
                safariBug = true;
            }
        }
        
        var newSpan = '<span id="field_' + type + '" ondblclick="makeEditable(\'' + type + '\')" class="pointer" title="Click to edit">' + value + '</span>';
        var html = container.innerHTML;
        container.innerHTML = "";
        
        if(safariBug && type == "name")
            container.innerHTML = newSpan;
        else
            container.innerHTML = html + "" + newSpan;    
    }
}

function saveEditable(id) {
    var value = document.getElementById("edit_" + id).value.trim();
    var origValue = document.getElementById("edit_" + id).orig_value;
    var cancelUpdate = false;
    
    //only update if the original value is not the same as the current value
    if(origValue == value || value == '')
        cancelUpdate = true;
        
    var span = document.getElementById("field_" + id);
    var container = span.parentNode;
    
    if(span != null)
        container.removeChild(span);
    
    if(!cancelUpdate) { 
        _cartid = id;
        _cartname = origValue;
        updateValue(id,value);  
        var newSpan = '<span id="field_' + id + '" ondblclick="makeEditable(\'' + id + '\')" class="editme" title="Double-click to edit">' + value + '</span>';
        var html = container.innerHTML;
        container.innerHTML = "";
        container.innerHTML = html + "" + newSpan;      
    }
    else {
        var newSpan = '<span id="field_' + id + '" ondblclick="makeEditable(\'' + id + '\')" class="editme" title="Double-click to edit">' + origValue + '</span>';
        var html = container.innerHTML;
        container.innerHTML = "";
        container.innerHTML = html + "" + newSpan;
    }
}


function updateValue(id, value) {
    ShowUpdateWindow();      
    ecSoftware.eMarketPlace.Web.SOAP.FrontEnd.UpdateBasketName(id, value, OnUpdatedValueSuccess, OnUpdatedValueErrror);
}

function OnUpdatedValueSuccess(result) {
    stopUpdateWindow();
    if(!result) {
        document.getElementById("field_" + _cartid).innerHTML = _cartname; 
        _cartname = '';
        _cartid = '';
        createAlert(Translate("error.basket.rename"));
    }
}

function OnUpdatedValueErrror(error) {
    createAlert(error.get_message());
}

function DescribeShipping(basketprice, shippingprice, vendorid){
    var description = document.getElementById('shippingdesc_' + vendorid).value;
    var html = '<strong>' + Translate("basket.minimumbasketprice") + ':</strong><span>' + (basketprice > 0 ? basketprice : 'NA') + '</span><br />';
    html += '<strong>' + Translate("basket.shippingpricecharged") + ':</strong><span>' + (shippingprice > 0 ? shippingprice : Translate("basket.noshippingprice")) + '</span><br />';
    html += '<strong>' + Translate("common.description") + ':</strong><br /><span>' + description + '</span>';
    createAlert(html);
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}

String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

var LargeBasket = {
    timerOn : false,
    timerValue : 0,
    searchTimer : '',
    isUpdating : false,
    
    //global vars
    recordId : '',
    productId : '',
    box : '',
    
    StartTimer : function() {
        if(this.timerValue > 0) {
           LargeBasket.ResetTimer();
           UpdateBasketQuantity(LargeBasket.box, LargeBasket.recordId, LargeBasket.productId);     
           LargeBasket.box.focus();      
        }
        else {
            this.timerValue++;
        }
    },
    
    ResetTimer : function() {
        clearInterval(this.searchTimer);
        this.timerOn = false;
        this.timerValue = 0;
        
    },
    
    Listener : function(box, recordid, productid) {
        if(!this.timerOn && !this.isUpdating) {
            this.timerOn = true;
            
            LargeBasket.box = box;
            LargeBasket.recordId = recordid;
            LargeBasket.productId = productid;
            
            this.searchTimer = setInterval(LargeBasket.StartTimer,1000);
        }
    }
};
