﻿//---------------------------------------------------------------------
// Author:		Marc van Heugten
// Date:		16-02-2004
// Description: Validate the input controls for Shipping.aspx
// Input:		- RowNumber (number of multiple rows)
//				- MandatorySymbol (the mandatory symbol: c_strMandatory)
// Output:		- true if all fields are valid
//				- false if a field is not valid
// Reference:	TD Webshop 300
//---------------------------------------------------------------------
function ValidateInput(RowNumber, ErrorMessage, MandatorySymbol)
{
	var spnErrorMessage = document.getElementById(_ErrorMessage);
	
	var txtProductNumber;
	var txtQuantity;
	var spnQuantityExclamationMark;
	
	var returnValue = true;
	
	for (var i = 0; i < RowNumber; i++ )
	{
		//---------------------------------------------------------------------
		// get controls
		//---------------------------------------------------------------------
		txtProductNumber = document.getElementById("txtProductNumber" + i);
		txtQuantity = document.getElementById("txtQuantity" + i);
		
		spnQuantityExclamationMark = document.getElementById("spnQuantityExclamationMark" + i);
		spnQuantityExclamationMark.innerHTML = "";
		
		//---------------------------------------------------------------------
		// input validation: if number is filled in then quantity should also
		// been filled in
		//---------------------------------------------------------------------
		if ( txtProductNumber.value != "" && txtQuantity.value == "" )
		{
			spnQuantityExclamationMark.innerHTML = MandatorySymbol;
			returnValue = false;
		}
	}
	
	if ( returnValue == false )
	{
		spnErrorMessage.innerHTML = ErrorMessage;
	}
	
	return returnValue;

}

//---------------------------------------------------------------------
// Author:		Marc van Heugten
// Date:		01-12-2004
// Description: - Changes the field lengths of the products
//				- Clears the values of the products and quantities
//				- Changes the constraints of the product fields
// Input:		- ProductType (1,2, or 3: Hagemeyer number, Customer number, manufacturer number)
//				- NumberOfProducts (the total number of product rows)
// Reference:	TD Webshop 300
//---------------------------------------------------------------------
function ChangeConstraints(ProductType, NumberOfProducts)
{
	for (var i = 0; i < NumberOfProducts; i++ )
	{
		//---------------------------------------------------------------------
		// get controls
		//---------------------------------------------------------------------
		txtProductNumber = document.getElementById("txtProductNumber" + i);
		txtQuantity = document.getElementById("txtQuantity" + i);

		//---------------------------------------------------------------------
		// Clear the field values
		//---------------------------------------------------------------------		
		//txtProductNumber.value = '';
		//txtQuantity.value = '';
		
		//---------------------------------------------------------------------
		// Change the field lengths of the products
		//---------------------------------------------------------------------
		var intFieldLength;
		switch (ProductType)
		{
			case "1":
				//---------------------------------------------------------------------
				// Hagemeyer Product Number
				//---------------------------------------------------------------------
				txtProductNumber.maxLength = 14;
				break;
			case "2":
				//---------------------------------------------------------------------
				// Customer Product Number
				//---------------------------------------------------------------------
				txtProductNumber.maxLength = 30;
				break;
			case "3":
				//---------------------------------------------------------------------
				// Manufacturer Product Number
				//---------------------------------------------------------------------
				txtProductNumber.maxLength = 12;
				break;			
		}
	}			
}

function SelectAll()
{
	var checked = document.getElementById("idCheckAll").checked;
	
	for(var i = 0; i < 10; i++)
	{
		document.getElementById("chkRemoveProd" + i).checked = checked;
	}
}

var asyncThreadCount = 0;

function ValidatePartNumber (txtProductNumber, rowIndex, MinChar, MinCharMessage)
{
    var hdnCurrentRowIndex = document.getElementById(_hdnCurrentRowIndex);
    hdnCurrentRowIndex.value = rowIndex;
    
    if (txtProductNumber.value.length == 0)
    {
        //don't do anything ignore
    }
    else if (txtProductNumber.value.length >= MinChar)
    {
        //increment thread count and disable button
        if (asyncThreadCount === 0)
        {
            var cmdAddToBasket = document.getElementById(_cmdAddToBasket);
            cmdAddToBasket.disabled = true;
        }
        asyncThreadCount += 1;
        
        var partNumber = txtProductNumber.value;
        var txtProductType = document.getElementById("txtProductType" + rowIndex);
        var imgProcessing = document.getElementById(_imgWaitProcessing);
        imgProcessing.style.visibility = "visible";
        var context = new Array(txtProductType, txtProductNumber.value, rowIndex);
        WS.Webshop.UI.Order.QuickOrderWebService.ValidatePartNumber(partNumber, ValidatePartNumberSucess, ValidatePartNumberFail, context);
    }
    else
    {
        alert(MinCharMessage);
        txtProductNumber.focus();
    }
}

function ValidatePartNumberSucess(res, context)
{
    //decrement asyncThreadCount and if 0 then enable button
    asyncThreadCount -= 1;
    if (asyncThreadCount <= 0)
    {
        //set it to zero just to make sure it never becomes negative
        asyncThreadCount = 0;
        //enable button
        var cmdAddToBasket = document.getElementById(_cmdAddToBasket);
        cmdAddToBasket.disabled = false;
    }
    //alert(res);
    var txtProductType = context[0];
    var productNumber = context[1];
    var rowIndex = context[2];
    var nextRow = rowIndex + 1;
    var litMultipleOrderErrorMessage = document.getElementById(_ErrorMessage);
    var statusImg = document.getElementById('imgProductIssue' + rowIndex);
    
    //hide processing image
    var imgProcessing = document.getElementById(_imgWaitProcessing);
    imgProcessing.style.visibility = "hidden";
        
    //clear error message
    litMultipleOrderErrorMessage.innerHTML = "";
    
    switch (res){
//        case "HagemeyerPartNumber":
//        {
//            //Set hidden field to denote Hagemeyer part number
//            //txtProductType.value = "HagemeyerPartNumber";
//            txtProductType.value = productNumber;
//            if (nextRow < MaxRows)
//            {
//                var txtNextProductNumber = document.getElementById("txtProductNumber" + nextRow);
//                txtNextProductNumber.disabled = false;
//                txtNextProductNumber.style.backgroundColor = "";
//                var txtNextQuantity = document.getElementById("txtQuantity" + nextRow);
//                txtNextQuantity.disabled = false;
//                txtNextQuantity.style.backgroundColor = "";
//            }
//            break;
//        }
//        case "CustomerPartNumber":
//        {
//            //Set hidden filed to denote Customer part number
//            //txtProductType.value = "CustomerPartNumber";
//            txtProductType.value = productNumber;
//            if (nextRow < MaxRows)
//            {
//                var txtNextProductNumber = document.getElementById("txtProductNumber" + nextRow);
//                txtNextProductNumber.disabled = false;
//                txtNextProductNumber.style.backgroundColor = "";
//                var txtNextQuantity = document.getElementById("txtQuantity" + nextRow);
//                txtNextQuantity.disabled = false;
//                txtNextQuantity.style.backgroundColor = "";
//            }
//            break;
//        }
        case "NO PRODUCTS FOUND":
        case "MORE THAN ONE FOUND":
        {
            //TODO Show wait timer and do Lucene search
            //SearchForPartNumber(productNumber, rowIndex);
            statusImg.src = strPartNumNeedsAttnImagePath;
            statusImg.title = strRowIssueResolveText;
            statusImg.style.visibility = 'visible'
            break;
        }
        default:
        {
            
            //Set hidden field to denote Hagemeyer part number
            //txtProductType.value = "HagemeyerPartNumber";
            txtProductType.value = res;
            if (nextRow < MaxRows)
            {
                var txtNextProductNumber = document.getElementById("txtProductNumber" + nextRow);
                txtNextProductNumber.disabled = false;
                txtNextProductNumber.style.backgroundColor = "";
                var txtNextQuantity = document.getElementById("txtQuantity" + nextRow);
                txtNextQuantity.disabled = false;
                txtNextQuantity.style.backgroundColor = "";
            }
            break;
        }
    }
}

function ValidatePartNumberFail(res)
{
    //decrement asyncThreadCount and if 0 then enable button
    asyncThreadCount -= 1;
    if (asyncThreadCount <= 0)
    {
        //set it to zero just to make sure it never becomes negative
        asyncThreadCount = 0;
        //enable button
        var cmdAddToBasket = document.getElementById(_cmdAddToBasket);
        cmdAddToBasket.disabled = false;
    }
    //alert('Validate part number: ' + res);
}

function SearchForPartNumber(partNumber, rowIndex)
{
    var hdnCurrentRowIndex = document.getElementById(_hdnCurrentRowIndex);
    hdnCurrentRowIndex.value = rowIndex;
    var imgProcessing = document.getElementById(_imgWaitProcessing);
    imgProcessing.style.visibility = "visible";
    WS.Webshop.UI.Order.QuickOrderWebService.SearchForPartNumber(partNumber, rowIndex, SearchForPartNumberOnSucess, SearchForPartNumberOnFail);
}

function SearchForPartNumberOnSucess(res)
{
    var btnShowItemSelect = document.getElementById(_btnShowItemSelect);
    var btnShowSearchRedirect = document.getElementById(_btnShowSearchRedirect);
    var litMultipleOrderErrorMessage = document.getElementById(_ErrorMessage);
    var hdnCurrentRowIndex = document.getElementById(_hdnCurrentRowIndex);
    var statusImg = document.getElementById('imgProductIssue' + hdnCurrentRowIndex.value);
    
    //clear error message
    //litMultipleOrderErrorMessage.innerHTML = "";
    
    //Determine the results of the search
    switch(res[0])
    {
        case "DISPLAYSELECTMODALPOPUP":
        {
            btnShowItemSelect.click();
            break;
        }
        case "DISPLAYSEARCHMODALPOPUP":
        {
            btnShowSearchRedirect.click()
            break;
        }
        case "NOPRODUCTSFOUND":
        default:
        {
            //Show error message for no products found
            //litMultipleOrderErrorMessage.innerHTML = res[1];
            statusImg.src = strPartNumNotFoundImagePath;
            statusImg.title = strRowNoMatchText;
            break;
        }
    }
    var imgProcessing = document.getElementById(_imgWaitProcessing);
    imgProcessing.style.visibility = "hidden";
}

function SearchForPartNumberOnFail(res)
{
    //alert(res);
}

function updateProductNumber(productNumber)
{
    var arrProductNumbers = new Array();
    arrProductNumbers = productNumber.split("_");
    
    //Get current row index
    
    var rowIndex = document.getElementById(_hdnCurrentRowIndex).value;
    if (rowIndex != null)
    {
        var txtProductNumber = document.getElementById("txtProductNumber" + rowIndex);
        var txtProductType = document.getElementById("txtProductType" + rowIndex);
        
        txtProductType.value = productNumber;
        if (arrProductNumbers[0] != "")
        {
            txtProductNumber.value = arrProductNumbers[0];
            //txtProductType.value = "HagemeyerPartNumber";
        }
        else
        {
            txtProductNumber.value = arrProductNumbers[1];
            //txtProductType.value = "CustomerPartNumber";
        }
        
        //hide the status icon
        var statusImg = document.getElementById("imgProductIssue" + rowIndex);
        statusImg.style.visibility = 'hidden';
    }
    //set control focus
    var txtQuantity = document.getElementById("txtQuantity" + rowIndex);
    txtQuantity.focus();
    
    //enable the next row
    var nextRow = parseInt(rowIndex) + 1;
    if (nextRow < MaxRows)
    {
        var txtNextProductNumber = document.getElementById("txtProductNumber" + (nextRow));
        txtNextProductNumber.disabled = false;
        txtNextProductNumber.style.backgroundColor = "";
        var txtNextQuantity = document.getElementById("txtQuantity" + (nextRow));
        txtNextQuantity.disabled = false;
        txtNextQuantity.style.backgroundColor = "";
    }
            
    //hide modal popup
    var mpeMultipleOrderItemSelect = $find("mpeMultipleOrderItemSelect");
    mpeMultipleOrderItemSelect.hide();
}

function CancelmpeMultipleOrderItemSelect()
{
    //Get current row
    var rowIndex = document.getElementById(_hdnCurrentRowIndex).value;
    
    //Get txt controls for row
    var txtProductNumber = document.getElementById("txtProductNumber" + rowIndex);
    
    //emtpy text box and give it focus
    txtProductNumber.value = "";
    txtProductNumber.focus();
}
