﻿function ecf_PurchaseModule_OnAccessoriesUpdate(source, accessories)
{
    ecf_PurchaseModule_InitAccessoryCheckboxes();
}

function ecf_PurchaseModule_UpdatePrices(source, accessories)
{
    if(source!=null)
    {
        if(!source.checked)
        {
            accessories[0] = -source.getAttribute('accessoryid');
        }       
    }
    
    try
    {
        //var VariationId = m_ecf_PurchaseModule_VariationId.split("~~");
        //alert(m_ecf_PurchaseModule_ProductId);
        //alert(m_ecf_PurchaseModule_VariationId);
        //alert(m_ecf_PurchaseModule_CurrencyCode);
        Ignify.eCommerce.Web.Store.MasterTemplates.Ignify.Modules.SharedModules.PurchaseModule.UpdatePrice(m_ecf_PurchaseModule_ProductId, m_ecf_PurchaseModule_VariationId, m_ecf_PurchaseModule_CurrencyCode, accessories, function(result) {ecf_PurchaseModule_UpdatePricesCallback(result, source);});
    }
    catch(error)
    {
        ecf_PurchaseModule_ToggleAccessoryCheckboxes(false);
    }
}

function ecf_PurchaseModule_UpdatePricesCallback(result, source)
{
    
    //var listPrice = document.getElementById(m_ecf_PurchaseModule_ListPriceControlId);
    //var finalPrice = document.getElementById(m_ecf_PurchaseModule_FinalPriceControlId);
    //var discountPrice = document.getElementById(m_ecf_PurchaseModule_DiscountPriceControlId);
    var itemCode = document.getElementById(m_ecf_PurchaseModule_ItemCodeControlId); 
    var erpitemCode = document.getElementById(m_ecf_PurchaseModule_ERPItemCodeControlId); 
    //var availability = document.getElementById(m_ecf_PurchaseModule_AvailabilityControlId);
    var priceListControl = document.getElementById(m_ignify_PurchaseModule_PriceListControlId);
    var qtyPricingControl = document.getElementById(m_ecf_PurchaseModule_QtyPricingControlId);
    
    if(result.error!=null)
    {
        //alert("AJAX: Error occured while processing the request, refresh the page. Message: " + result.error.Message + ", code: " + result.error.Code);
        ecf_PurchaseModule_ToggleAccessoryCheckboxes(false);
        return;
    }
    
    if(result.value == null || result.value.length < 3)
        return;
       
    //listPrice.innerHTML = result.value[0];
    //finalPrice.innerHTML = result.value[1];
    //if(discountPrice != null)
    //    discountPrice.innerHTML = result.value[2];
        
    if(result.value.length >= 4 && itemCode!=null)
        itemCode.innerHTML = result.value[3];
        //alert("hi:" + itemCode.innerHTML);
    //if(result.value.length >= 5)        
    //availability.innerHTML = result.value[4];
    
    if(result.value.length >= 6)        
        priceListControl.innerHTML = result.value[5];
    if(result.value.length >= 7 && qtyPricingControl != "undefined" && qtyPricingControl != null)
        qtyPricingControl.innerHTML = result.value[6];
        //alert("hi:" + result.value[5]);
        //alert("code=" result.value[7]);
     if(result.value.length >= 8)
        erpitemCode.innerHTML = result.value[7];   
}

function ecf_PurchaseModule_PurchaseOptionChanged(source)
{
    if(ecf_PurchaseModule_DropdownArray.length > 1)
    {
        var i;
        var attribute;
        var arrListAttribute;
        var AttributeNames = "";
        var AttributeValues = "";
        
        for(i=0; i < ecf_PurchaseModule_DropdownArray.length; i++)
        {
            attribute = document.getElementById(ecf_PurchaseModule_DropdownArray[i]);
            arrListAttribute = attribute.value.split("~~");   
            
            if(AttributeNames.length == 0)
            {
                AttributeNames = arrListAttribute[0];
                AttributeValues = arrListAttribute[1];
            }
            else
            {
                AttributeNames = AttributeNames + "~~" + arrListAttribute[0];
                AttributeValues = AttributeValues + "~~" + arrListAttribute[1];
            }
        }
        
        Ignify.eCommerce.Web.Store.MasterTemplates.Ignify.Modules.SharedModules.PurchaseModule.getSKUIdByAttributes(m_ecf_PurchaseModule_ProductId, AttributeNames, AttributeValues, function(result) {ecf_PurchaseModule_PopulateSKUId(result);});
    }
    else
    {
        m_ecf_PurchaseModule_VariationId = source.value;
        document.getElementById("__ECFPURCHASEMODULE_ITEMID").value = m_ecf_PurchaseModule_VariationId;
        ecf_PurchaseModule_InitAccessoryCheckboxes();       
    }        
}

function ecf_PurchaseModule_PopulateSKUId(result)
{
   
    if(result.error != null)
    {
        //alert("AJAX: Error occured while populating Attribute. Message: " + result.error.Message + ", code: " + result.error.Code);
        return;
    }
    
    if(result.value != null)
    {
        m_ecf_PurchaseModule_VariationId = result.value[0];
        document.getElementById("__ECFPURCHASEMODULE_ITEMID").value = m_ecf_PurchaseModule_VariationId;
        ecf_PurchaseModule_InitAccessoryCheckboxes();
    }
    else
    {
        alert("AJAX: No SKU found.");
        return;
    }
    
}

function ecf_PurchaseModule_Init()
{
    window.onload = function(){ecf_PurchaseModule_InitAccessoryCheckboxes2(true);ecf_PurchaseModule_InitOptionLists();};    
}

function populateNextAttribute(currentsource)
{
    var i, x, y;
    var nextattribute;
    var arrListAttribute;
    var listAttributeNames = "";
    var listAttributeValues;
    var nextAttributeName;    
    for(i =0; i <= ecf_PurchaseModule_DropdownArray.length - 1; i++)
    {
        attribute = document.getElementById(ecf_PurchaseModule_DropdownArray[i]);
        arrListAttribute = attribute.value.split("~~");
        
        if(listAttributeNames.length == 0)
        {
            listAttributeNames = arrListAttribute[0];
            listAttributeValues = arrListAttribute[1];
        }
        else
        {
            listAttributeNames = listAttributeNames + "~~" + arrListAttribute[0];
            listAttributeValues = listAttributeValues + "~~" + arrListAttribute[1];
        }
        if(attribute.id==currentsource.id)
        {
            nextattribute = document.getElementById(ecf_PurchaseModule_DropdownArray[i+1]);
            for(x = i+1; x < ecf_PurchaseModule_DropdownArray.length; x++)
            {
                removeattribute = document.getElementById(ecf_PurchaseModule_DropdownArray[x]);
                removeattribute.length = 1;
                //for(y = 1; y < removeattribute.options.length; y++)
                //{
                //    removeattribute.options[y] = null;   
                //}
            }
            break;
        }
    }
    nextAttributeName = nextattribute.value.split("~~");
    
//    alert("m_ecf_PurchaseModule_ProductId=" + m_ecf_PurchaseModule_ProductId);
//    alert("listAttributeNames=" + listAttributeNames);
//    alert("listAttributeValues=" + listAttributeValues);
//    alert("nextAttributeName=" + nextAttributeName[0]);    
    Ignify.eCommerce.Web.Store.MasterTemplates.Ignify.Modules.SharedModules.PurchaseModule.PopulateNextAttribute(m_ecf_PurchaseModule_ProductId, listAttributeNames, listAttributeValues, nextAttributeName[0], function(result) {ecf_PurchaseModule_PopulateNextAttribute(result, nextattribute, nextAttributeName[0]);});
}

function ecf_PurchaseModule_PopulateNextAttribute(result, nextattribute, nextAttributeName)
{
    if(result.error != null)
    {
        //alert("AJAX: Error occured while populating Attribute. Message: " + result.error.Message + ", code: " + result.error.Code);
        return;
    }
    
//    if(result.value == null || result.value.length == 0)
//    {
//        alert("AJAX: No Attribute Value found.");
//        return;
//    }
    
    if(result.value != null)
    {
        for(var i=0; i < result.value.length; i++)
        {
            var nextAttributeValue = result.value[i];
            nextattribute.options[nextattribute.length] = new Option(nextAttributeValue, nextAttributeName + "~~" + result.value[i]);
        }    
    }
}
function ecf_PurchaseModule_InitOptionLists()
{ 
    if(typeof(ecf_PurchaseModule_DropdownArray) == "undefined")
        return;
        
    initDynamicOptionLists();       
    
    if(ecf_PurchaseModule_DropdownArray.length > 1)
    {
        var i = 0;
        for(i =0; i < ecf_PurchaseModule_DropdownArray.length - 1; i++)
        {
            document.getElementById(ecf_PurchaseModule_DropdownArray[i]).onchange = new Function("populateNextAttribute(this)");
        }
    }
    
    document.getElementById(ecf_PurchaseModule_DropdownArray[ecf_PurchaseModule_DropdownArray.length - 1]).onchange = new Function("ecf_PurchaseModule_PurchaseOptionChanged(this)");
    for(var index = 0; index<ecf_PurchaseModule_DropdownArray.length; index++)
    {
        var dropdown = document.getElementById(ecf_PurchaseModule_DropdownArray[index]);
        if(dropdown != null && dropdown.options.Length > 0)
            dropdown.options[0].selected = true;
    }
}

function ecf_PurchaseModule_InitAccessoryCheckboxes()
{
    ecf_PurchaseModule_InitAccessoryCheckboxes2(false);
}

function ecf_PurchaseModule_InitAccessoryCheckboxes2(onload)
{
    // get array length
    var arrayLength = 0;
    var hasCheckedControls = false;
    for(var index = 0; index<ecf_PurchaseModule_CheckboxesArray.length; index++)
    {
        var checked = document.getElementById(ecf_PurchaseModule_CheckboxesArray[index]);      
        if(checked.checked)
            arrayLength++;
    }

    // populate array
    var items = new Array(arrayLength);
    for(var index = 0; index<ecf_PurchaseModule_CheckboxesArray.length; index++)
    {
        var checked = document.getElementById(ecf_PurchaseModule_CheckboxesArray[index]);
        var id = document.getElementById(ecf_PurchaseModule_CheckboxesArray[index]).getAttribute('accessoryid');
       
        if(checked.checked)
        {
            hasCheckedControls = true;
            items[index] = id;
        }
    }

    // don't update on first visit if checkbox-es are not checked, they will be checked only if back button is clicked    
    if((onload && hasCheckedControls) || !onload)
    {
        ecf_PurchaseModule_UpdatePrices(null, items);
    }
}

function ecf_PurchaseModule_ToggleAccessoryCheckboxes(check)
{
    for(var index = 0; index<ecf_PurchaseModule_CheckboxesArray.length; index++)
    {
        var checked = document.getElementById(ecf_PurchaseModule_CheckboxesArray[index]);      
        checked.checked = check;
    }
}