﻿// case 11690
$(function() {
    $("[id$='_ddlQuantities']").change( function() {
        $("[id$='_txtQuantity']").val(this.value);        
    });
});

function ddlMaterial_SelectedIndexChanged() {
    UpdateSizeOptions();
}

function ddlSize_SelectedIndexChanged() {
    UpdateIsDoubleSided();
    $("[id$='_txtSize']").val($("[id$='_ddlSize']").val());
}

function UpdateSizeOptions() {
    var materialId = parseInt($("[id$='_ddlMaterial']")[0].value);
    var ddlSizes = $("[id$='_ddlSize']");    
    var sizeId = parseInt(ddlSizes[0].value);        
    
    if (!isNaN(materialId) && !isNaN(sizeId) && !isNaN(storeId) ) {
        var resourceLocation = isUsingMetricSystem ? "/WebServices/SizeMaterialsService.asmx/GetAvailableMetricSizesByMaterialIdStoreId" : "/WebServices/SizeMaterialsService.asmx/GetAvailableSizesByMaterialIdStoreId";

        $.ajax({
            type: "POST",
            url: resourceLocation,
            data: "{'materialId':" + materialId + ",'storeId':" + storeId + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(data) {
                // bind the new options
                ddlSizes.fillSelect(data.d);
                ddlSize_SelectedIndexChanged();
                UpdateSizeMaterialQuantities();
                UpdateIsDoubleSided();                
            }
        });
    }
}

function UpdateSelectToNearestValue(dropDown, value) {
    var nearestValue = dropDown[0].options[0].value;
    var valueNumber = parseInt(value);
    var difference = 99999;

    if (!isNaN(valueNumber)) {
        for (var i = 0; i < dropDown[0].options.length; i++) {
            var optionValue = dropDown[0].options[i].value;
            var optionValueNumber = parseInt(value);
            var currentDifference = Math.abs(optionValueNumber - valueNumber);

            if (difference > currentDifference) {
                difference = currentDifference;
                nearestValue = optionValue;
            }
        }

        dropDown.val(nearestValue.toString());
    }
}

function UpdateSizeMaterialQuantities() {
    var materialId = parseInt($("[id$='_ddlMaterial']")[0].value);
    var sizeId = parseInt($("[id$='_ddlSize']")[0].value);     

    var resourceLocation = "/WebServices/SizeMaterialsService.asmx/GetAvailableSizesMaterialQuantitiesByMaterialIdSizeIdStoreId";    

    if (!isNaN(materialId) && !isNaN(sizeId) && !isNaN(storeId)) {
        $.ajax({
            type: "POST",
            url: resourceLocation,
            data: "{'materialId':" + materialId + ",'sizeId':" + sizeId + ",'storeId':" + storeId + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(data) {
                // bind the new options                               
                var ddlQuantities = $("[id$='_ddlQuantities']");
                var txtQuantity = $("[id$='_txtQuantity']");
                ddlQuantities.fillSelect(data.d);

                if (ddlQuantities[0].options.length > 0) {
                    if (ddlQuantities.css('display') == 'none') {
                        // the drop down is not visible, update the selection to the nearest value in the text box
                        ddlQuantities.valSelect(txtQuantity.val());
                        // pull the selected value out of the drop down and put it back into the textbox because it could have changed
                        txtQuantity.val(ddlQuantities.val());
                    }

                    ddlQuantities.show();
                    txtQuantity.hide();
                }
                else {
                    if (ddlQuantities.css('display') == 'none') {
                        // the text is not visible, update the selection to the drop down value
                        txtQuantity.val(ddlQuantities.val());
                    }

                    ddlQuantities.hide();
                    txtQuantity.show();
                }
            }
        });
    }
}

function UpdateIsDoubleSided() {
    var materialId = parseInt($("[id$='_ddlMaterial']")[0].value);
    var sizeId = parseInt($("[id$='_ddlSize']")[0].value);

    if (!isNaN(materialId) && !isNaN(sizeId) && !isNaN(storeId)) {
        var resourceLocation = "/WebServices/SizeMaterialsService.asmx/IsDoubleSidedBySizeIdMaterialId";

        $.ajax({
            type: "POST",
            url: resourceLocation,
            data: "{'materialId':" + materialId + ",'sizeId':" + sizeId + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(data) {
                var ddlSides = $("[id$='_ddlTwoSided']")[0];

                // show or hide the double sided area if based on the number of options shown and if the double sided option is available
				if(materialId == 20) // if sandwich board, make it two sided only!
				{
					ddlSides.selectedIndex = 1;
					ddlSides.disabled = true;
				}
                else if (data.d == false) {
                    ddlSides.selectedIndex = 0;
                    ddlSides.disabled = true;
                }
                else {
                    ddlSides.disabled = false;
                }                
            }
        });
    }    
}


$.fn.valSelect = function(value) {
    return this.each(function() {
        var nearestValue = this.options[0].value;
        var valueNumber = parseInt(value);
        var difference = 99999;

        if (!isNaN(valueNumber)) {
            for (var i = 0; i < this.options.length; i++) {
                var optionValue = this.options[i].value;
                var optionValueNumber = parseInt(optionValue);
                var currentDifference = Math.abs(optionValueNumber - valueNumber);

                if (difference > currentDifference) {
                    difference = currentDifference;
                    nearestValue = optionValue;
                }
            }

            this.value = nearestValue.toString();
        }
    });
}

$.fn.fillSelect = function(data) {
    return this.each(function() {
        if (this.tagName == 'SELECT') {
            var dropdownList = this;
            var previousSelectedValue = dropdownList.value;
            var newOptionsContainOldSelectedValue = false;

            this.options.length = 0;

            $.each(data, function(index, optionData) {
                var option = new Option(optionData.Name, optionData.Value);

                if (optionData.Value == previousSelectedValue)
                    newOptionsContainOldSelectedValue = true;

                if ($.browser.msie) {
                    dropdownList.add(option);
                }
                else {
                    dropdownList.add(option, null);
                }
            });

            if (newOptionsContainOldSelectedValue)
                dropdownList.value = previousSelectedValue;
            else
                dropdownList.selectedIndex = 0;
        }
    });
}