function CreateErrorSpan(oParentInput, strSpanID, strText)
{
    try
    {
        var oSpan = GEBI(strSpanID);

        if (oSpan)
        {
            try
            {
                oParentInput.parentNode.removeChild(oSpan);
            }
            catch (e)
            { }
        }

        var oNewSpan = document.createElement('Span');

        oNewSpan.id = strSpanID;
        oNewSpan.style.color = "red";
        oParentInput.parentNode.appendChild(oNewSpan);
        oNewSpan.innerHTML = "<BR>" + strText;
    }
    catch (e)
    {
    }

}
//-----------------------------------------------------------------
function RemoveErrorSpan(oParentInput, strSpanID)
{
    try
    {
        var oSpan = GEBI(strSpanID);

        if (oSpan)
        {
            try
            {
                oParentInput.parentNode.removeChild(oSpan);
            }
            catch (e)
            { }
        }

        if (oParentInput)
        {
            oParentInput.style.borderColor = "";
            oParentInput.style.borderWidth = "";
            oParentInput.style.borderStyle = "";
        }
    }
    catch (e)
    { }

}
//-----------------------------------------------------------------
function ValidateForm(oForm)
{
    var bRetInput = null;
    try
    {
        switch (oForm.id)
        {
        
            case "fImportExport":
                {
                    var oInputsCol = oForm.getElementsByTagName("INPUT");
                    var bBreakValidating = false;

                    try
                    {
                        GEBI("tdCabinetSettingsMessage").innerHTML = "";
                    }
                    catch (e)
                    { }

                    for (var i = 0; i < oInputsCol.length; i++)
                    {
                        var oInput = oInputsCol[i];

                        if (oInput)
                        {
                            if (oInput.type == "text")
                            {
                                oInput.style.borderColor = "";
                                oInput.style.borderWidth = "";
                                oInput.style.borderStyle = "";

                                // getting suffix
                                var strID = (oInput.name.length == 0) ? oInput.id : oInput.name;

                                RemoveErrorSpan(oInput, "ErrorSpan_" + strID);

                                if (bBreakValidating) continue;

                                // if value not changed after error
                                if (oInput.className == "ValidationError")
                                {
                                    bRetInput = oInput;
                                    bBreakValidating = true;
                                }
                                else
                                {
                                    var strProhibitedSymbols = StringHasProhibitedSymbols(oInput.value);
                                    if (strProhibitedSymbols.length > 0)
                                    {
                                        CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Symbol \"" + strProhibitedSymbols + "\" not allowed");
                                        bRetInput = oInput;
                                        bBreakValidating = true;
                                    }
                                }
                            }
                        }
                    }
                }
                break;

                case "fRenameCurrentListForm":
                {
                    var oInput = oForm.getElementsByTagName("INPUT")[0];
                    if (oInput)
                    {
                        var strProhibitedSymbols = "";

                        if (oInput.value.trim().length == 0)
                        {
                            oInput.className = "Watermark";
                        }
                        else
                        {
                            strProhibitedSymbols = StringHasProhibitedSymbols(oInput.value);
                        }

                        if (oInput.className == "Watermark" || oInput.className == "ValidationError")
                        {
                            CreateErrorSpan(oInput, "ErrorSpan_" + oInput.id, "Enter valid list name");
                            bRetInput = oInput;
                        }
                        else if (strProhibitedSymbols.length > 0)
                        {
                            CreateErrorSpan(oInput, "ErrorSpan_" + oInput.id, "Symbol \"" + strProhibitedSymbols + "\" not allowed");
                            bRetInput = oInput;
                        }
                    }
                }
                break;

                case "fAddEditRecipeForm":
                {
                    var oInputsCol = oForm.getElementsByTagName("INPUT");

                    var oMemo = oForm.getElementsByTagName("TEXTAREA")[0];

                    var oSpan = GEBI("ErrorSpan_" + oMemo.id);

                    if (oSpan)
                    {
                        try
                        {
                            oMemo.style.borderColor = "";
                            oMemo.style.borderWidth = "";
                            oMemo.style.borderStyle = "";
                            oMemo.parentNode.removeChild(oSpan);
                        }
                        catch (e)
                        { }
                    }

                    if (oMemo.className == "MemoWatermark" || oMemo.value.trim().length == 0)
                    {
                        oMemo.value = "";
                    }
                    else
                    {
                        var strProhibitedSymbols = StringHasProhibitedSymbols(oMemo.value);
                        if (strProhibitedSymbols.length > 0)
                        {
                            CreateErrorSpan(oMemo, "ErrorSpan_" + oMemo.id, "Symbol \"" + strProhibitedSymbols + "\" not allowed");
                            bRetInput = oMemo;
                            break;
                        }
                    }

                    var bBreakValidating = false;

                    for (var i = 0; i < oInputsCol.length; i++)
                    {
                        var oInput = oInputsCol[i];

                        if (oInput)
                        {
                            // getting suffix
                            var strID = (oInput.name.length == 0) ? oInput.id : oInput.name;

                            RemoveErrorSpan(oInput, "ErrorSpan_" + strID);
                            
                            if  (bBreakValidating) continue;  
                            
                            if (strID.indexOf("faRecipeType") != -1)
                            {
                                if (oInput.className == "forminputCaregoryWatermark")
                                {
                                    oInput.value = "";
                                }
                            }
                            else if (strID.indexOf("feNewRecipeName") != -1)
                            {
                                if (oInput.value.trim().length == 0 || oInput.className == "Watermark")
                                {
                                    CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Enter valid recipe name");

                                    bRetInput = oInput;
                                    bBreakValidating = true;
                                }
                                else
                                {
                                    var strProhibitedSymbols = StringHasProhibitedSymbols(oInput.value);
                                    if (strProhibitedSymbols.length > 0)
                                    {
                                        CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Symbol \"" + strProhibitedSymbols + "\" not allowed");
                                        bRetInput = oInput;
                                        bBreakValidating = true;
                                    }
                                }
                            }
                        }
                    }
                }
                break;

            case "fRenameCategoryForm":
                {
                    var oInputsCol = oForm.getElementsByTagName("INPUT");
                    var bBreakValidating = false;

                    try
                    {
                        GEBI("tdCabinetSettingsMessage").innerHTML = "";
                    }
                    catch (e)
                    { }

                    for (var i = 0; i < oInputsCol.length; i++)
                    {
                        var oInput = oInputsCol[i];

                        if (oInput)
                        {
                            if (oInput.type == "text")
                            {
                                oInput.style.borderColor = "";
                                oInput.style.borderWidth = "";
                                oInput.style.borderStyle = "";

                                // getting suffix
                                var strID = (oInput.name.length == 0) ? oInput.id : oInput.name;

                                RemoveErrorSpan(oInput, "ErrorSpan_" + strID);

                                if (bBreakValidating) continue;

                                // if value not changed after error
                                if (oInput.className == "ValidationError")
                                {
                                    bRetInput = oInput;
                                    bBreakValidating = true;
                                }
                                else
                                {
                                    if (strID.indexOf("faCategoryName") != -1)
                                    {
                                        if (oInput.className == "forminputCaregoryWatermark")
                                        {
                                            CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Select category");

                                            bRetInput = oInput;
                                            bBreakValidating = true;
                                        }
                                    }
                                    else if (strID.indexOf("feNewCategoryName") != -1)
                                    {
                                        if (oInput.value.trim().length == 0 || oInput.className == "Watermark")
                                        {
                                            CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Enter valid category name");

                                            bRetInput = oInput;
                                            bBreakValidating = true;
                                        }
                                        else
                                        {
                                            var strProhibitedSymbols = StringHasProhibitedSymbols(oInput.value);
                                            if (strProhibitedSymbols.length > 0)
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Symbol \"" + strProhibitedSymbols + "\" not allowed");
                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                break;

            case "fCabinet":
                {
                    var oInputsCol = oForm.getElementsByTagName("INPUT");
                    var bBreakValidating = false;

                    try
                    {
                        GEBI("tdCabinetSettingsMessage").innerHTML = "";
                    }
                    catch (e)
                    { }

                    for (var i = 0; i < oInputsCol.length; i++)
                    {
                        var oInput = oInputsCol[i];

                        if (oInput)
                        {
                            if (oInput.type == "text")
                            {
                                oInput.style.borderColor = "";
                                oInput.style.borderWidth = "";
                                oInput.style.borderStyle = "";

                                // getting suffix
                                var strID = (oInput.name.length == 0) ? oInput.id : oInput.name;

                                RemoveErrorSpan(oInput, "ErrorSpan_" + strID);

                                if (bBreakValidating) continue;

                                // if value not changed after error
                                if (oInput.className == "ValidationError")
                                {
                                    bRetInput = oInput;
                                    bBreakValidating = true;
                                }
                                else
                                {
                                    if (oInput.className != "Watermark")
                                    {
                                        if (strID.indexOf("%") != -1)
                                        {

                                            var strVal = oInput.value.replace(",", ".");

                                            // testing value
                                            if (isNaN(strVal))
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Enter valid tax value");

                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }
                                            // ok
                                            else
                                            {
                                                if (parseFloat(strVal) < 0)
                                                {
                                                    CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Tax value can not be negative");

                                                    bRetInput = oInput;
                                                    bBreakValidating = true;
                                                }
                                            }
                                        }
                                        else
                                        {
                                            var strProhibitedSymbols = StringHasProhibitedSymbols(oInput.value);
                                            if (strProhibitedSymbols.length > 0)
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Symbol \"" + strProhibitedSymbols + "\" not allowed");
                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                break;

            case "fUpdateMasterListForm":
                {
                    var oInputsCol = oForm.getElementsByTagName("INPUT");

                    var bBreakValidating = false;
                    
                    var strProductName = "";
                    
                    for (var i = 0; i < oInputsCol.length; i++)
                    {
                        var oInput = oInputsCol[i];

                        if (oInput)
                        {
                            if (oInput.type == "text")
                            {

                                oInput.style.borderColor = "";
                                oInput.style.borderWidth = "";
                                oInput.style.borderStyle = "";

                                // getting suffix
                                var strID = (oInput.name.length == 0) ? oInput.id : oInput.name;

                                RemoveErrorSpan(oInput, "ErrorSpan_" + strID);

                                if (bBreakValidating) continue;

                                // if value not changed after error
                                if (oInput.className == "ValidationError")
                                {
                                    bRetInput = oInput;
                                    bBreakValidating = true;
                                }
                                else
                                {
                                    // Coupon
                                    if (strID.indexOf("Coupon") != -1 || strID.indexOf("Unit") != -1 || strID.indexOf("Packaging") != -1 || strID.indexOf("Brand") != -1)
                                    {
                                        if (oInput.className == "Watermark" || oInput.className == "forminputCaregoryWatermark")
                                        {
                                            oInput.value = "";
                                        }
                                        else
                                        {
                                            var strProhibitedSymbols = StringHasProhibitedSymbols(oInput.value);
                                            if (strProhibitedSymbols.length > 0)
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Symbol \"" + strProhibitedSymbols + "\" not allowed");
                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }
                                        }
                                    }

                                    // Item name cannot be empty
                                    else if (strID.indexOf("Product") != -1)
                                    {
                                        if (oInput.value.trim().length == 0 || oInput.className == "Watermark")
                                        {
                                            CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Enter valid item name");

                                            bRetInput = oInput;
                                            bBreakValidating = true;
                                        }
                                        else
                                        {
                                            var strProhibitedSymbols = StringHasProhibitedSymbols(oInput.value);
                                            if (strProhibitedSymbols.length > 0)
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Symbol \"" + strProhibitedSymbols + "\" not allowed");
                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }
                                            
                                            // store product name for barcode
                                            strProductName = oInput.value;
                                        }
                                    }
                                    else if (strID.indexOf("Category") != -1 )
                                    {
                                        if (oInput.value.trim().length == 0 || oInput.className == "Watermark")
                                        {
                                            oInput.value = "";
                                        }
                                    }
                                    // value is set
                                    else
                                    {
                                        // validate price value
                                        if (strID.indexOf("Price") != -1)
                                        {
                                            oInput.value = oInput.value.replace(",", ".");

                                            // testing value
                                            if (isNaN(oInput.value))
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Enter valid price");

                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }
                                            // ok
                                            else
                                            {
                                                if (parseFloat(oInput.value) < 0)
                                                {
                                                    CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Price can not be negative");

                                                    bRetInput = oInput;
                                                    bBreakValidating = true;
                                                }
                                            }
                                        }
                                        else if (strID.indexOf("Size") != -1)
                                        {
                                            oInput.value = oInput.value.replace(",", ".");

                                            // testing value
                                            if (isNaN(oInput.value))
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Enter valid size");

                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }
                                            // ok
                                            else
                                            {
                                                if (parseFloat(oInput.value) < 0)
                                                {
                                                    CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Size can not be negative");

                                                    bRetInput = oInput;
                                                    bBreakValidating = true;
                                                }
                                            }
                                        }
                                        else if (strID.indexOf("faBarcode_input") != -1)
                                        {
                                            if (oInput.value.trim().length == 0 || oInput.className == "forminputBarcodeWatermark" || oInput.className == "Watermark")
                                            {
                                                oInput.value = "";
                                            }
                                            else
                                            {
                                                if (oInput.value.trim().length > 13)
                                                {
                                                    CreateErrorSpan(oInput, "ErrorSpan_" + strID, "UPC code max length is 13 digits");

                                                    bRetInput = oInput;
                                                    bBreakValidating = true;
                                                    break;
                                                }
                                                 
                                                // testing value
                                                if (isNaN(oInput.value))
                                                {
                                                    CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Enter valid barcode");

                                                    bRetInput = oInput;
                                                    bBreakValidating = true;
                                                }
                                                // ok
                                                else
                                                {
                                                    if (parseFloat(oInput.value) < 0)
                                                    {
                                                        CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Barcode can not be negative");

                                                        bRetInput = oInput;
                                                        bBreakValidating = true;
                                                    }
                                                }

                                                // check for barcode unique
                                                var oBarcodeFixed = GEBI("Barcode_fixed");

                                                var bIsBarcodeUnique = _Default.IsBarcodeUnique( strProductName, oBarcodeFixed.value, null,
                                                function()
                                                {
                                                    return false;
                                                }
                                                ).value;

                                                if (!bIsBarcodeUnique)
                                                {
                                                    CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Barcode is not unique.");

                                                    bRetInput = oInput;
                                                    bBreakValidating = true;
                                                }
                                                
                                            }
                                        }
                                        else
                                        {
                                            var strProhibitedSymbols = StringHasProhibitedSymbols(oInput.value);
                                            if (strProhibitedSymbols.length > 0)
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Symbol \"" + strProhibitedSymbols + "\" not allowed");
                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }

                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                break;

            case "fModalAddingForm":
                {
                    var oInputsCol = oForm.getElementsByTagName("INPUT");

                    var oMemo = oForm.getElementsByTagName("TEXTAREA")[0];

                    var oSpan = GEBI("ErrorSpan_" + oMemo.id);

                    if (oSpan)
                    {
                        try
                        {
                            oMemo.style.borderColor = "";
                            oMemo.style.borderWidth = "";
                            oMemo.style.borderStyle = "";
                            oMemo.parentNode.removeChild(oSpan);
                        }
                        catch (e)
                        { }
                    }

                    if (oMemo.className == "MemoWatermark" || oMemo.value.trim().length == 0)
                    {
                        oMemo.value = "";
                    }
                    else
                    {
                        var strProhibitedSymbols = StringHasProhibitedSymbols(oMemo.value);
                        if (strProhibitedSymbols.length > 0)
                        {
                            CreateErrorSpan(oMemo, "ErrorSpan_" + oMemo.id, "Symbol \"" + strProhibitedSymbols + "\" not allowed");
                            bRetInput = oMemo;
                            break;
                        }
                    }

                    var bBreakValidating = false;

                    var iCount = oInputsCol.length;

                    for (var i = 0; i < iCount; i++)
                    {
                        var oInput = oInputsCol[i];

                        if (oInput)
                        {
                            if (oInput.type == "text")
                            {
                                oInput.style.borderColor = "";
                                oInput.style.borderWidth = "";
                                oInput.style.borderStyle = "";

                                // getting suffix
                                var strID = (oInput.name.length == 0) ? oInput.id : oInput.name;

                                RemoveErrorSpan(oInput, "ErrorSpan_" + strID);

                                if (bBreakValidating) continue;


                                // if value not changed after error
                                if (oInput.className == "ValidationError")
                                {
                                    bRetInput = oInput;
                                    bBreakValidating = true;
                                }
                                else
                                {
                                    // Coupon, Unit, Packaging
                                    if (strID.indexOf("Coupon") != -1 || strID.indexOf("Unit") != -1 || strID.indexOf("Packaging") != -1 || strID.indexOf("Brand") != -1)
                                    {
                                        if (oInput.className == "Watermark" || oInput.className == "forminputCaregoryWatermark")
                                        {
                                            oInput.value = "";
                                        }
                                        else
                                        {
                                            var strProhibitedSymbols = StringHasProhibitedSymbols(oInput.value);
                                            if (strProhibitedSymbols.length > 0)
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Symbol \"" + strProhibitedSymbols + "\" not allowed");
                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }
                                        }
                                    }
                                    else if (strID.indexOf("Product") != -1)
                                    {
                                        if (oInput.value.trim().length == 0 || oInput.className == "Watermark")
                                        {
                                            CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Enter valid item name");

                                            bRetInput = oInput;
                                            bBreakValidating = true;
                                        }
                                        else
                                        {
                                            var strProhibitedSymbols = StringHasProhibitedSymbols(oInput.value);
                                            if (strProhibitedSymbols.length > 0)
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Symbol \"" + strProhibitedSymbols + "\" not allowed");
                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }

                                            // store product name for barcode
                                            strProductName = oInput.value;

                                        }
                                    }
                                    else if (strID.indexOf("Category") != -1 )
                                    {
                                        if (oInput.value.trim().length == 0 || oInput.className == "Watermark")
                                        {
                                            oInput.value = "";
                                        }
                                    }
                                    // value is set
                                    else
                                    {
                                        // validate price value
                                        if (strID.indexOf("Price") != -1)
                                        {
                                            oInput.value = oInput.value.replace(",", ".");

                                            // testing value
                                            if (isNaN(oInput.value))
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Enter valid price");

                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }
                                            // ok
                                            else
                                            {
                                                if (parseFloat(oInput.value) < 0)
                                                {
                                                    CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Price can not be negative");

                                                    bRetInput = oInput;
                                                    bBreakValidating = true;
                                                }
                                            }
                                        }
                                        else if (strID.indexOf("Quantity") != -1)
                                        {
                                            oInput.value = oInput.value.replace(",", ".");

                                            // testing value
                                            if (isNaN(oInput.value))
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Enter valid quantity");

                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }
                                            // ok
                                            else
                                            {
                                                if (parseFloat(oInput.value) < 0)
                                                {
                                                    CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Quantity can not be negative");

                                                    bRetInput = oInput;
                                                    bBreakValidating = true;
                                                }
                                            }
                                        }
                                        else if (strID.indexOf("Size") != -1)
                                        {
                                            oInput.value = oInput.value.replace(",", ".");

                                            // testing value
                                            if (isNaN(oInput.value))
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Enter valid size");

                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }
                                            // ok
                                            else
                                            {
                                                if (parseFloat(oInput.value) < 0)
                                                {
                                                    CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Size can not be negative");

                                                    bRetInput = oInput;
                                                    bBreakValidating = true;
                                                }
                                            }
                                        }
                                        else if (strID.indexOf("faBarcode_input") != -1)
                                        {
                                            if (oInput.value.trim().length == 0 || oInput.className == "forminputBarcodeWatermark" || oInput.className == "Watermark")
                                            {
                                                oInput.value = "";
                                            }
                                            else
                                            {
                                                if (oInput.value.trim().length > 13)
                                                {
                                                    CreateErrorSpan(oInput, "ErrorSpan_" + strID, "UPC code max length is 13 digits");

                                                    bRetInput = oInput;
                                                    bBreakValidating = true;
                                                    break;
                                                }
                                            
                                                // testing value
                                                if (isNaN(oInput.value))
                                                {
                                                    CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Enter valid barcode");

                                                    bRetInput = oInput;
                                                    bBreakValidating = true;
                                                }
                                                // ok
                                                else
                                                {
                                                    if (parseFloat(oInput.value) < 0)
                                                    {
                                                        CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Barcode can not be negative");

                                                        bRetInput = oInput;
                                                        bBreakValidating = true;
                                                    }
                                                }

                                                // check for barcode unique
                                                var oBarcodeFixed = GEBI("Barcode_fixed");

                                                var bIsBarcodeUnique = _Default.IsBarcodeUnique( strProductName, oBarcodeFixed.value, null,
                                                function()
                                                {
                                                    return false;
                                                }
                                                ).value;

                                                if (!bIsBarcodeUnique)
                                                {
                                                    CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Barcode is not unique.");

                                                    bRetInput = oInput;
                                                    bBreakValidating = true;
                                                }

                                            }
                                        }
                                        else
                                        {
                                            var strProhibitedSymbols = StringHasProhibitedSymbols(oInput.value);
                                            if (strProhibitedSymbols.length > 0)
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Symbol \"" + strProhibitedSymbols + "\" not allowed");

                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                break;

            case "fAddEditIngridientForm":
                {
                    var oInputsCol = oForm.getElementsByTagName("INPUT");

                    var oMemo = oForm.getElementsByTagName("TEXTAREA")[0];

                    var oSpan = GEBI("ErrorSpan_" + oMemo.id);

                    if (oSpan)
                    {
                        try
                        {
                            oMemo.style.borderColor = "";
                            oMemo.style.borderWidth = "";
                            oMemo.style.borderStyle = "";
                            oMemo.parentNode.removeChild(oSpan);
                        }
                        catch (e)
                                    { }
                    }

                    if (oMemo.className == "MemoWatermark" || oMemo.value.trim().length == 0)
                    {
                        oMemo.value = "";
                    }
                    else
                    {
                        var strProhibitedSymbols = StringHasProhibitedSymbols(oMemo.value);
                        if (strProhibitedSymbols.length > 0)
                        {
                            CreateErrorSpan(oMemo, "ErrorSpan_" + oMemo.id, "Symbol \"" + strProhibitedSymbols + "\" not allowed");
                            bRetInput = oMemo;
                            break;
                        }
                    }

                    var bBreakValidating = false;

                    var iCount = oInputsCol.length;

                    for (var i = 0; i < iCount; i++)
                    {
                        var oInput = oInputsCol[i];

                        if (oInput)
                        {
                            if (oInput.type == "text")
                            {
                                oInput.style.borderColor = "";
                                oInput.style.borderWidth = "";
                                oInput.style.borderStyle = "";

                                // getting suffix
                                var strID = (oInput.name.length == 0) ? oInput.id : oInput.name;

                                RemoveErrorSpan(oInput, "ErrorSpan_" + strID);

                                if (bBreakValidating) continue;


                                // if value not changed after error
                                if (oInput.className == "ValidationError")
                                {
                                    bRetInput = oInput;
                                    bBreakValidating = true;
                                }
                                else
                                {
                                    // Coupon, Unit, Packaging
                                    if (strID.indexOf("Unit") != -1)
                                    {
                                        if (oInput.className == "Watermark" || oInput.className == "forminputCaregoryWatermark")
                                        {
                                            oInput.value = "";
                                        }
                                        else
                                        {
                                            var strProhibitedSymbols = StringHasProhibitedSymbols(oInput.value);
                                            if (strProhibitedSymbols.length > 0)
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Symbol \"" + strProhibitedSymbols + "\" not allowed");
                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }
                                        }
                                    }
                                    else if (strID.indexOf("Product") != -1)
                                    {
                                        if (oInput.value.trim().length == 0 || oInput.className == "Watermark")
                                        {
                                            CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Enter valid item name");

                                            bRetInput = oInput;
                                            bBreakValidating = true;
                                        }
                                        else
                                        {
                                            var strProhibitedSymbols = StringHasProhibitedSymbols(oInput.value);
                                            if (strProhibitedSymbols.length > 0)
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Symbol \"" + strProhibitedSymbols + "\" not allowed");
                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }

                                        }

                                    }
                                    else if (strID.indexOf("Category") != -1)
                                    {
                                        if (oInput.value.trim().length == 0 || oInput.className == "Watermark")
                                        {
                                            oInput.value = "";
                                        }
                                    }

                                    // value is set
                                    else
                                    {
                                        // validate price value
                                        if (strID.indexOf("Amount") != -1)
                                        {
                                            oInput.value = oInput.value.replace(",", ".");

                                            // testing value
                                            if (isNaN(oInput.value))
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Enter valid price");

                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }
                                            // ok
                                            else
                                            {
                                                if (parseFloat(oInput.value) < 0)
                                                {
                                                    CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Price can not be negative");

                                                    bRetInput = oInput;
                                                    bBreakValidating = true;
                                                }
                                            }
                                        }
                                        else
                                        {
                                            var strProhibitedSymbols = StringHasProhibitedSymbols(oInput.value);
                                            if (strProhibitedSymbols.length > 0)
                                            {
                                                CreateErrorSpan(oInput, "ErrorSpan_" + strID, "Symbol \"" + strProhibitedSymbols + "\" not allowed");
                                                bRetInput = oInput;
                                                bBreakValidating = true;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                break;
        }

    }
    catch (e)
    {
        bRetInput = null;
    }

    return bRetInput;
}
//-----------------------------------------------------------------
