﻿
window.MilouShopen = {};

MilouShopen.Class = {
	create: function() {
		return function() {
		this.initialize.apply(this, arguments);
		}
	}
};


var _CurrentLanguage = "1";

MilouShopen.Basket = {
    Init: function() {

    },
    Add: function(intProductId, strAttributeName) {
        var strAttributeValue = "";
        if (Object.isElement($('AttributeValue' + intProductId))) {
            var objAttributeValue = $('AttributeValue' + intProductId).firstDescendant()
            strAttributeValue = $F(objAttributeValue);
        }

        new Ajax.Request(_AjaxPath, {
            parameters: {
                Task: 'Add',
                ProductID: intProductId,
                AttributeName: strAttributeName,
                AttributeValue: strAttributeValue,
                Quantity: $F('txtQuantity' + intProductId)
            },
            onLoading: function() {

            },
            onSuccess: function(strResult) {
                //alert(strResult.responseText)
                MilouShopen.Basket.Refresh(strResult.responseText.strip());
            },
            onFailure: function(strResult) {
                alert(strResult.responseText);
            }
        });
    },
    AddExternal: function(intProductId, strAttributeName) {
        var strAttributeValue = "";
        if (Object.isElement($('AttributeValue' + intProductId))) {
            var objAttributeValue = $('AttributeValue' + intProductId).firstDescendant()
            strAttributeValue = $F(objAttributeValue);
        }

        new Ajax.Request(_AjaxPath, {
            parameters: {
                Task: 'Add',
                ProductID: intProductId,
                AttributeName: strAttributeName,
                AttributeValue: strAttributeValue,
                Quantity: 1
            },
            onLoading: function() {

            },
            onSuccess: function(strResult) {
                document.location.href = _ShopUrl;
            },
            onFailure: function(strResult) {
                alert(strResult.responseText);
            }
        });
    },
    GetQuantity: function() {
        new Ajax.Request(_AjaxPath, {
            parameters: {
                Task: 'GetQuantity'
            },
            onLoading: function() {

            },
            onSuccess: function(strResult) {
                $('GlobalBasketHolderCounter').update(strResult.responseText);
            },
            onFailure: function(strResult) {
                alert(strResult.responseText);
            }
        });
    },
    Get: function(intBasketItemId) {
        new Ajax.Request(_AjaxPath, {
            parameters: {
                Task: 'Get'
            },
            onLoading: function() {

            },
            onSuccess: function(strResult) {
                if (strResult.responseText.strip() != "EMPTY") {
                    $('GlobalBasketHolderItems').update(strResult.responseText);
                    $('GlobalBasket').show();
                    if (intBasketItemId != null) {
                        
                        setTimeout(function() {try{new Effect.Pulsate('row_' + intBasketItemId, { duration: 1.5, pulses: 3 })} catch (exp) { }}, 300);
                        setTimeout(function() { try { new Effect.Pulsate('GlobalBasketHolderCounter', { duration: 1.5, pulses: 3 }) } catch (exp) { } }, 300);
                        
                    }
                }
                else {
                    $('GlobalBasket').hide();
                }
            },
            onFailure: function(strResult) {
                alert(strResult.responseText);
            }
        });
    },
    GetTotal: function() {
        new Ajax.Request(_AjaxPath, {
            parameters: {
                Task: 'GetTotal'
            },
            onLoading: function() {

            },
            onSuccess: function(strResult) {
                if (strResult.responseText.strip() != "EMPTY") {
                    $('OrderBox1Holder').update(strResult.responseText);
                }
                else {
                    document.location.href = _RootUrl;
                }
            },
            onFailure: function(strResult) {
                alert(strResult.responseText);
            }
        });
    },
    Refresh: function(intBasketItemId) {
        if (Object.isElement($('OrderBox1Holder'))) {
            MilouShopen.Basket.GetTotal();
        }

        if (Object.isElement($('GlobalBasketHolderItems'))) {
            MilouShopen.Basket.Get(intBasketItemId);
            MilouShopen.Basket.GetQuantity();
        }
    },
    UpdateAlert: function(objElement) {
        var bolIsChanged = false;

        if ($F(objElement) == objElement.defaultValue) {
            $(objElement).setStyle({ backgroundColor: '#ffffff' })
            $('imgBtnBasketUpdate').src = $('imgBtnBasketUpdate').src.replace(/_update_alert/, "_update");
        }
        else {
            $(objElement).setStyle({ backgroundColor: '#ed7e04' })

        }

        $('OrderStep1Basket').select('input.quantity').each(
			function(item) {
			    if ($F(item) != item.defaultValue) {
			        bolIsChanged = true;
			        throw $break;
			    }
			}
		)

        if (bolIsChanged && $('imgBtnBasketUpdate').src.indexOf("_update_alert.gif") == -1) {
            $('imgBtnBasketUpdate').src = $('imgBtnBasketUpdate').src.replace(/_update/, "_update_alert");
        }
        else if (!bolIsChanged && $('imgBtnBasketUpdate').src.indexOf("_update.gif") == -1) {
            $('imgBtnBasketUpdate').src = $('imgBtnBasketUpdate').src.replace(/_update_alert/, "_update");
        }
    },
    FilterQuatity: function(evt) {
        var keyCode = evt.which ? evt.which : evt.keyCode;
        if (keyCode == '13')
            setTimeout('MilouShopen.Basket.Update()', 300);
        return (keyCode >= '0'.charCodeAt() && keyCode <= '9'.charCodeAt()) || keyCode == 8 || keyCode == 46 || keyCode == 37 || keyCode == 39 || (keyCode > 95 && keyCode < 106);
    },
    Update: function() {
        $('OrderStep1Basket').select('input.quantity').each(
			function(item) {
			    if (!isNaN(item.value)) {
			        new Ajax.Request(_AjaxPath, {
			            parameters: {
			                Task: 'Update',
			                BasketItemID: item.id,
			                Quantity: item.value
			            },
			            onLoading: function() {

			            },
			            onSuccess: function(strResult) {
			                MilouShopen.Basket.GetTotal()
			            },
			            onFailure: function(strResult) {
			                alert(strResult.responseText);
			            }
			        });
			    }
			}
		)
        MilouShopen.Basket.Refresh();
    },
    SetQuantity: function(intBasketItemId, intQuantity) {
        new Ajax.Request(_AjaxPath, {
            parameters: {
                Task: 'SetQuantity',
                BasketItemID: intBasketItemId,
                Quantity: intQuantity
            },
            onLoading: function() {

            },
            onSuccess: function(strResult) {
                MilouShopen.Basket.Refresh(intBasketItemId);
            },
            onFailure: function(strResult) {
                alert(strResult.responseText);
            }
        });
    },
    Delete: function(intBasketItem, strMessage) {
        if (confirm(strMessage)) {
            new Ajax.Request(_AjaxPath, {
                parameters: {
                    Task: 'Delete',
                    BasketItemID: intBasketItem
                },
                onSuccess: function(strResult) {
                    MilouShopen.Basket.Refresh();
                },
                onFailure: function(strResult) {
                    alert(strResult.responseText);
                }
            });
        }
    }
};
