﻿// common validation functions

function ValidateDate(dateControlId, dateFormat)
{
    if (dateControlId == null || dateControlId == "")
    {
        return true;
    }

    var datePickerDate = document.getElementById(dateControlId);
    var datePickerDateText = document.getElementById(dateControlId + '_text');
    
    if (datePickerDate != null && datePickerDateText != null)
    {
        if (datePickerDateText.value != '')
        {
            try
            {
                var dateValue = ParseLocaleDate(datePickerDateText.value, dateFormat);
                if (dateValue == null)
                {
                    datePickerDateText.value = '';
                }
            }
            catch (e)
            {
                datePickerDateText.value = '';
            }
        }
    }
}

function OnClientLoad(ctl) {
    ctl.attachEventHandler("onkeyup", function(e) {
        valid(ctl);
    });
}

function ValidateEditorEmpty(radEditorControlId) {
    var editor = $find(radEditorControlId);
    var text = editor.get_text();
    if (text.length > 0) {
        editor._contentArea.style.backgroundColor = "#EEF3EF";
    }
    else {
        editor._contentArea.style.backgroundColor = "#fffacd";
        editor._contentArea.scrollIntoView();
        editor.setFocus();        
    }
    return text.length > 0;
}

function valid(editor) {
    for (var i = 0; i < Page_Validators.length; i++) {
        if (Page_Validators[i].controltovalidate == editor.get_id()) {
            ValidatorValidate(Page_Validators[i]);
        }
    }

    ValidatorUpdateIsValid();
}

function ValidateStartEndDate(startDateControlId, endDateControlId, dateFormat)
{
    if (startDateControlId == null || startDateControlId == "" || endDateControlId == null || endDateControlId == "")
    {
        return true;
    }

    var datePickerStartDateText = document.getElementById(startDateControlId + '_text');
    
    if (datePickerStartDateText == null)
    {
        datePickerStartDateText = document.getElementById(startDateControlId);
    }

    var datePickerEndDateText = document.getElementById(endDateControlId + '_text');
    var isEndDateVisible = $(datePickerEndDateText).is(":visible");
    
    if (datePickerStartDateText == null || datePickerStartDateText.value == '' || datePickerEndDateText == null || datePickerEndDateText.value == '' ||
        !isEndDateVisible)
    {
        return true;
    }
    else
    {
        try
        {  
            var startDateValue;
            if (datePickerStartDateText.value == undefined) {
                startDateValue = ParseLocaleDate(datePickerStartDateText.innerText, dateFormat);
            }
            else {
                startDateValue = ParseLocaleDate(datePickerStartDateText.value, dateFormat);
            }
            var endDateValue = ParseLocaleDate(datePickerEndDateText.value, dateFormat);
        }
        catch (e)
        {
            return true;
        }

        if ( startDateValue <= endDateValue )
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

function ParseLocaleDate(dateValue, dateFormat)
{
    var parsedDateValue = Date.parseLocale(dateValue, dateFormat);
    
    if (parsedDateValue == null)
    {
        dateFormat = dateFormat.replace('yyyy', 'yy');
        parsedDateValue = Date.parseLocale(dateValue, dateFormat);            
    }
        
    return parsedDateValue;
}

function DateSelected(sender, eventArgs) {
    var event = new Object();
    sender.set_textBoxValue(eventArgs.get_newValue()); 
    var isStartDate = false;
    for(var i=0; i<Page_Validators.length; i++)
    {
        if (Page_Validators[i].getAttribute("controltohighlight") == sender._clientID + "_text") {
            event.srcElement = document.getElementById(sender._clientID);
            isStartDate = true;
            ValidatorValidate(Page_Validators[i], null, event);            
        }
    }   

    if (!isStartDate) {
        event.srcElement = document.getElementById(sender._clientID + "_text");

        var targetedControl;
        if ((typeof (event.srcElement) != "undefined") && (event.srcElement != null)) {
            targetedControl = event.srcElement;
        }
        else {
            targetedControl = event.target;
        }
        var vals;
        if (typeof (targetedControl.Validators) != "undefined") {
            vals = targetedControl.Validators;
        }
        else {
            if (targetedControl.tagName.toLowerCase() == "label") {
                vals = targetedControl.Validators;
            }
        }

        if (vals != undefined) {
            ValidatorOnChange(event);
        }
    }
    
    ValidatorUpdateIsValid();
}

function validatePassword(source, args) {
    var isStrongPassword = new RegExp(passwordValidationData.Expression).test(args.Value);

    var isProhibitedPassword = $.parseJSON(
        $.ajax({
            url: "Common.ashx/IsProhibitedPassword",
            type: "POST",
            data: ({ pwd: args.Value }),
            dataType: "json",
            async: false
        }).responseText);

    if (!isStrongPassword) {
        source.ValidatorCalloutBehavior.setErrorMessage(passwordValidationData.MessagePasswordStrength);
    }

    if (isProhibitedPassword) {
        source.ValidatorCalloutBehavior.setErrorMessage(passwordValidationData.MessageProhibitedWord);
    }

    args.IsValid = isStrongPassword && !isProhibitedPassword;
}
function CheckRadComboBoxRequired(source, args) {
    args.IsValid = false;
    var combo = $find($(source).attr("clientcontroltovalidate"));
    var text = combo.get_text();

    if (text.length > 1) {
        var node = combo.findItemByText(text);
        if (node) {
            var value = node.get_value();
            args.IsValid = value.length > 0 && parseInt(value) > 0;
        }
    } 
}


