﻿// Hides popup for attribute value selection
function hideSizeSelector(productId)
{
    $('#sizeSelectorLink'+productId).simpletip().hide();
}

// Hides popup for size selection
function hideAttributeSelector(productId)
{
    $('#attributeSelectorLink' + productId).simpletip().hide();
}

// Changes picture, sku code, messages etc... when new attribute value is selected
function changeProductAttribute(productId, attributeValueId, sizeId)
{
    
    //alert("Changing product productId: " + productId + ", attributeValueId: " + attributeValueId + ", sizeId: " + sizeId);
    
    // Send postback to ajax handler
    $.post("/ajax_files/ChangeProductAttribute.ashx", {productId:productId,attributeValueId:attributeValueId,sizeId:sizeId}, changeProductAttributeCallback, "json");

    // Show loading
    var loadingIcon = $("#loadingImage" + productId);
    var productPicture = $("#productPicture" + productId);
    productPicture.hide();
    loadingIcon.show();

    
}

// Changes picture, sku code, messages etc... when new size is selected
function changeProductSize(productId, attributeValueId, sizeId)
{
    
    //alert("Changing product productId: " + productId + ", attributeValueId: " + attributeValueId + ", sizeId: " + sizeId);
    
    // Send postback to ajax handler
    $.post("/ajax_files/ChangeProductSize.ashx", {productId:productId,attributeValueId:attributeValueId,sizeId:sizeId}, changeProductSizeCallback, "json");

    // Show loading
    var loadingIcon = $("#loadingImage" + productId);
    var productPicture = $("#productPicture" + productId);
    productPicture.hide();
    loadingIcon.show();
    
}

// Fires when attribute value change request comes back from server
function changeProductAttributeCallback(newProductVariation, textStatus)
{

    if (textStatus == "success")
    {
    
        // Change product url
        $(".product-box-link").attr("href", newProductVariation.url);

        // Change product SKU
        $("#productSku" + newProductVariation.productId).html(newProductVariation.sku);

        // Change product variation icon
        var attributeIcon = $("#productAttributeIcon" + newProductVariation.productId);
        attributeIcon.attr("src", "/images/attribute-icons/" + newProductVariation.attributeIcon);
        attributeIcon.attr("alt", newProductVariation.attributeValue);
        //$("#productAttribute" + newProductVariation.productId).html(newProductVariation.attributeIcon);
        
        // Show/Hide add to cart button
        if (!newProductVariation.isInCart && newProductVariation.isInStock)
            $("#addToCartWrapper" + newProductVariation.productId).show();
        else
            $("#addToCartWrapper" + newProductVariation.productId).hide();
        
        // Show/hide message
        if (newProductVariation.isInCart || !newProductVariation.isInStock)
            $("#productMessage" + newProductVariation.productId).show();
        else
            $("#productMessage" + newProductVariation.productId).hide();
        
        // Display proper text
        if (newProductVariation.isInCart)
            $("#productMessage" + newProductVariation.productId).html("already in cart");
        else if (!newProductVariation.isInStock)
            $("#productMessage" + newProductVariation.productId).html("out of stock");

        // Show new product variation image
        var loadingIcon = $("#loadingImage" + newProductVariation.productId);
        var productPicture = $("#productPicture" + newProductVariation.productId);
        productPicture.attr("src", newProductVariation.picture.url);
        productPicture.css("width", newProductVariation.picture.width + "px");
        productPicture.css("height", newProductVariation.picture.height + "px");
        productPicture.css("top", newProductVariation.picture.top + "px");        

        // Hide loading
        loadingIcon.hide();
        productPicture.show();

        // Display updated sizes selector popup
        $("#sizeSelectorLink" + newProductVariation.productId + " > div").html(newProductVariation.sizesPopupMarkup);

        // Update selected attribute in popup
        $("#attributeSelectorList" + newProductVariation.productId + " .active-selector-link").attr("class", "selector-link");
        $("#attributeSelector-p" + newProductVariation.productId + "-a" + newProductVariation.attributeValueId).attr("class", "active-selector-link");

    }
    else
        alert("AJAX error happened. It is not critical, you can continue to use website.");
    
}

// Fires when product size change request comes back from server
function changeProductSizeCallback(newProductVariation, textStatus)
{

    if (textStatus == "success")
    {

        // Change product url
        $(".product-box-link").attr("href", newProductVariation.url);

        // Change product SKU
        $("#productSku" + newProductVariation.productId).html(newProductVariation.sku);

        // Change product Size
        $("#productSize" + newProductVariation.productId).html(newProductVariation.size);

        // Show/Hide add to cart button
        if (!newProductVariation.isInCart && newProductVariation.isInStock)
            $("#addToCartWrapper" + newProductVariation.productId).show();
        else
            $("#addToCartWrapper" + newProductVariation.productId).hide();
        
        // Show/hide message
        if (newProductVariation.isInCart || !newProductVariation.isInStock)
            $("#productMessage" + newProductVariation.productId).show();
        else
            $("#productMessage" + newProductVariation.productId).hide();
        
        // Display proper text
        if (newProductVariation.isInCart)
            $("#productMessage" + newProductVariation.productId).html("already in cart");
        else if (!newProductVariation.isInStock)
            $("#productMessage" + newProductVariation.productId).html("out of stock");

        // Hide loading
        var loadingIcon = $("#loadingImage" + newProductVariation.productId);
        var productPicture = $("#productPicture" + newProductVariation.productId);
        loadingIcon.hide();
        productPicture.show();

        // Display updated attributes selector popup
        $("#attributeSelectorLink" + newProductVariation.productId + " > div").html(newProductVariation.attributesPopupMarkup);

        // Update selected size in popup
        $("#sizeSelectorList" + newProductVariation.productId + " .active-selector-link").attr("class", "selector-link");
        $("#sizeSelector-p" + newProductVariation.productId + "-s" + newProductVariation.sizeId).attr("class", "active-selector-link");

    }
    else
        alert("AJAX error happened. It is not critical, you can continue to use website.");
    
}

// Add to cart
function ajaxAddToCart(productId, attributeValueId, sizeId, quantity)
{
    //alert("Adding to cart productId: " + productId + ", attributeValueId: " + attributeValueId + ", sizeId: " + sizeId + ", quantity: " + quantity);
    
    // Hide add to cart button and show loading icon
    $("#addToCartWrapper" + productId).hide();
    $("#loadingAddToCart" + productId).show();
    
    // Send postback to ajax handler
    $.post("/ajax_files/AddToCart.ashx", {productId:productId,attributeValueId:attributeValueId,sizeId:sizeId,quantity:quantity}, addToCartCallback, "json");
    
}

// Fires when add product to cart request comes back from server
function addToCartCallback(responseData, textStatus)
{

    if (textStatus == "success")
    {
        // Hide loading image
        $("#loadingAddToCart" + responseData.productId).hide();
        
        // Show already in cart message
        $("#productMessage" + responseData.productId).show();
        $("#productMessage" + responseData.productId).html("added to cart");
        
        // Renew cart subtotal
        $("#hdrCartSubtotal").html(responseData.cartSubtotal);
               
    }
    else
    {
        alert("AJAX error happened. It is not critical, you can continue to use website.");
        $("#addToCartWrapper" + responseData.productId).show();

    }
    
}
