﻿function ecf_PurchaseModule_OnAccessoriesUpdate(source, accessories)
{
    ecf_PurchaseModule_InitAccessoryCheckboxes();
}

function ecf_PurchaseModule_UpdatePrices(source, accessories,ControlID)
{
    if(source!=null)
    {
        if(!source.checked)
        {
            accessories[0] = -source.getAttribute('accessoryid');
        }       
    }
    
    try
    {
        var prodId = eval("m_ecf_PurchaseModule_ProductId_"+ControlID)
        var VariationId = document.getElementById("__ECFPURCHASEMODULE_ITEMID").value
       var KDPercentage = document.getElementById("__KDPercentage").value 
        Ignify.eCommerce.Web.Store.MasterTemplates.Ignify.Modules.SharedModules.MiniPurchaseModule.UpdatePrice(prodId, VariationId, m_ecf_PurchaseModule_CurrencyCode, accessories, KDPercentage, function(result) {ecf_PurchaseModule_UpdatePricesCallback(result, source, ControlID);});
    }
    catch(error)
    {
        //alert("Error occured while processing your request, please refresh the page. If the error persists,Please contact customer support. Thank You."); 
        //ecf_PurchaseModule_ToggleAccessoryCheckboxes(false);
        document.getElementById('loading').style.display = "none";
        document.getElementById('AddToCart').disabled = false;
    }
}

function ecf_PurchaseModule_UpdatePricesCallback(result, source, ControlID)
{
    
    //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 ItemCodeControlId = eval("m_ecf_PurchaseModule_ItemCodeControlId_"+ControlID)
    var itemCode = document.getElementById(ItemCodeControlId);
    
    var ERPItemCodeControlId = eval("m_ecf_PurchaseModule_ERPItemCodeControlId_"+ControlID)
    var erpitemCode = document.getElementById(ERPItemCodeControlId); 
    
    var PriceListControlId = eval("m_ignify_PurchaseModule_PriceListControlId_"+ControlID)
    var priceListControl = document.getElementById(PriceListControlId);
    
    var QtyPricingControlId =  eval("m_ecf_PurchaseModule_QtyPricingControlId_"+ControlID)
    var qtyPricingControl = document.getElementById(QtyPricingControlId);
    
    var SelectedSkuIDControlId = eval("m_ecf_PurchaseModule_SelectedSkuIDControlId_"+ControlID)
    var SelectedSkuIDControl = document.getElementById(SelectedSkuIDControlId);
    
    var KitTotalPriceControlId = eval("m_ecf_PurchaseModule_KitTotalPrice_"+ControlID)
    var KitTotalPriceControlId = document.getElementById(KitTotalPriceControlId);
    
    var KitTotalDiscountControlId = eval("m_ecf_PurchaseModule_KitTotalDiscount_"+ControlID)
    var KitTotalDiscountControl = document.getElementById(KitTotalDiscountControlId);
    
    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);
        //alert("Error occured while processing your request, please refresh the page. If the error persists,Please contact customer support. Thank You."); 
        document.getElementById('loading').style.display = "none";
        document.getElementById('AddToCart').disabled = false;
        return;
        
    }
    
    if(result.value == null || result.value.length < 3)
        return;
       
       KitTotalPriceControlId.value = result.value[1].replace("$","");
       KitTotalDiscountControl.value = result.value[2].replace("$","");
        
       //alert(result.value[1])
       //alert(result.value[2])
    //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];   
        
     //Popupate the add to cart variable
     SelectedSkuIDControl.value = document.getElementById("__ECFPURCHASEMODULE_ITEMID").value + "_quantity;";
     document.getElementById('loading').style.display = "none";
     document.getElementById('AddToCart').disabled = false;
     CalculateTotalPrice();
     
     
}

function CalculateTotalPrice()
{
    try
        {
            var selects= document.getElementsByTagName("select"); 
            for (var i = 0; i < selects.length; i++) 
                { 
                    if(selects[i].id.indexOf("_MiniPurchaseModule_")!=-1)
                        {
                            if(document.getElementById(selects[i].id).selectedIndex == 0)
                                {
                                    return;
                                }
                        }    

                }
            var inputs= document.getElementsByTagName("input"); 

            var KitTotalPrice =0.00;
            var KitTotalDiscount=0.00;

            for (var i = 0; i < inputs.length; i++) 
                { 
                    if(inputs[i].id.indexOf("hdnKitTotalPrice")!=-1)
                        {
                            KitTotalPrice = KitTotalPrice + roundNumber(parseFloat(document.getElementById(inputs[i].id).value),2);
                            
                        }
                    if(inputs[i].id.indexOf("hdnKitTotalDiscount")!=-1)
                        {
                            KitTotalDiscount = KitTotalDiscount +roundNumber(parseFloat(document.getElementById(inputs[i].id).value),2);
                            
                        }    

                }
            //document.getElementById('Your_Kit_Price').innerHTML = "$" + roundNumber(parseFloat(KitTotalPrice),2);
            //document.getElementById('Your_savings').innerHTML = "$" + roundNumber(parseFloat(KitTotalDiscount),2);
            document.getElementById('Your_Kit_Price').innerHTML = formatCurrency(KitTotalPrice);
            document.getElementById('Your_savings').innerHTML = formatCurrency(KitTotalDiscount);

        }
    catch(error)
        {
            
            document.getElementById('loading').style.display = "none";
            document.getElementById('AddToCart').disabled = false;
            
            return;
        }
}
function formatCurrency(num) {
num = num.toString().replace(/\$|\,/g, '');
if (isNaN(num)) num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num * 100 + 0.50000000001);
cents = num % 100;
num = Math.floor(num / 100).toString();
if (cents < 10) cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));
return (((sign) ? '' : '-') + '$' + num + '.' + cents);
}
function roundNumber(num, dec) {
	var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
	return result;
}
function ecf_PurchaseModule_PurchaseOptionChanged(source,strDropdownArray,ControlID)
{
    document.getElementById('loading').style.display = "block";
    document.getElementById('AddToCart').disabled = true;
    
    //ShowDiv('true');
    var DropdownArray=strDropdownArray.split(",");
    if(DropdownArray.length > 1)
    {
        var i;
        var attribute;
        var arrListAttribute;
        var AttributeNames = "";
        var AttributeValues = "";
        
        for(i=0; i < DropdownArray.length; i++)
        {

            attribute = document.getElementById(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];
            }
        }
        var ProdId = eval("m_ecf_PurchaseModule_ProductId_"+ControlID)
        Ignify.eCommerce.Web.Store.MasterTemplates.Ignify.Modules.SharedModules.MiniPurchaseModule.getSKUIdByAttributes(ProdId, AttributeNames, AttributeValues, function(result) {ecf_PurchaseModule_PopulateSKUId(result,ControlID);});
    }
    else
    {   document.getElementById("__ECFPURCHASEMODULE_ITEMID").value = source.value;
        ecf_PurchaseModule_InitAccessoryCheckboxes(ControlID);       
    }        
    //ShowDiv('false');
}

function ecf_PurchaseModule_PopulateSKUId(result,ControlID)
{
   
    if(result.error != null)
    {
        //alert("AJAX: Error occured while populating Attribute. Message: " + result.error.Message + ", code: " + result.error.Code);
        alert("Error occured while processing your request, please refresh the page. If the error persists,Please contact customer support. Thank You."); 
        return;
    }
    
    if(result.value != null)
    {
        document.getElementById("__ECFPURCHASEMODULE_ITEMID").value = result.value[0];
        ecf_PurchaseModule_InitAccessoryCheckboxes(ControlID);
    }
    else
    {
        alert("AJAX: No SKU found.");
        return;
    }
    
}

function ecf_PurchaseModule_Init()
{
    //window.onload = function(){ecf_PurchaseModule_InitAccessoryCheckboxes2(true);ecf_PurchaseModule_InitOptionLists();};    
    window.onload = function(){ecf_PurchaseModule_InitOptionLists();};    
}

function populateNextAttribute(currentsource,strDropdownArray,ControlID)
{
    var i, x, y;
    var nextattribute;
    var arrListAttribute;
    var listAttributeNames = "";
    var listAttributeValues;
    var nextAttributeName;    
    
    document.getElementById('loading').style.display = "block";
    document.getElementById('AddToCart').disabled = true;
    
    var DropdownArray=strDropdownArray.split(",");
    
    for(i =0; i <= DropdownArray.length - 1; i++)
    {
        
        attribute = document.getElementById(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(DropdownArray[i+1]);
            for(x = i+1; x < DropdownArray.length; x++)
            {
                removeattribute = document.getElementById(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]);    
    var ProductID = eval("m_ecf_PurchaseModule_ProductId_"+ControlID)
    

    Ignify.eCommerce.Web.Store.MasterTemplates.Ignify.Modules.SharedModules.MiniPurchaseModule.PopulateNextAttribute(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("Error occured while processing your request, please refresh the page. If the error persists,Please contact customer support. Thank You."); 
        //alert("AJAX: Error occured while populating Attribute. Message: " + result.error.Message + ", code: " + result.error.Code);
        document.getElementById('loading').style.display = "none";
        document.getElementById('AddToCart').disabled = false;
        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]);
        }    
    }
    document.getElementById('loading').style.display = "none";
    document.getElementById('AddToCart').disabled = false;
}
function ecf_PurchaseModule_InitOptionLists()
{ 
    
    if(typeof(ecf_MiniPurchaseModule_DropdownArray) == "undefined")
        return;
        
    initDynamicOptionLists();       
    
    if(ecf_MiniPurchaseModule_DropdownArray.length > 1)
    {
        var i = 0;
        for(i =0; i < ecf_MiniPurchaseModule_DropdownArray.length - 1; i++)
        {
            document.getElementById(ecf_MiniPurchaseModule_DropdownArray[i]).onchange = new Function("populateNextAttribute(this)");
        }
    }
    
    document.getElementById(ecf_MiniPurchaseModule_DropdownArray[ecf_MiniPurchaseModule_DropdownArray.length - 1]).onchange = new Function("ecf_PurchaseModule_PurchaseOptionChanged(this)");
    for(var index = 0; index<ecf_MiniPurchaseModule_DropdownArray.length; index++)
    {
        var dropdown = document.getElementById(ecf_MiniPurchaseModule_DropdownArray[index]);
        if(dropdown != null && dropdown.options.Length > 0)
            dropdown.options[0].selected = true;
    }
}

function ecf_PurchaseModule_InitAccessoryCheckboxes(ControlID)
{
    ecf_PurchaseModule_InitAccessoryCheckboxes2(false,ControlID);
}

function ecf_PurchaseModule_InitAccessoryCheckboxes2(onload,ControlID)
{
   
    // 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,ControlID);
    }
}

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;
    }
}