﻿function AjaxValidate(formName, formElementName, formElementValue, className, idLanguage) {

    //alert('formName: ' + formName + '\r\n' + 'formElementName: ' + formElementName + '\r\n' + 'formElementValue: ' + formElementValue + '\r\n' + 'className: ' + className + '\r\n' + 'idLanguage: ' + idLanguage);
    var url = "/_modules/form/form.ashx?action=validate"
    var currentTime = new Date();
    $("#" + formName + " #" + formElementName + "_ajax_validating").show();
    $.ajax({
        type: "POST",
        url: url,
        data: "fn=" + formName + "&fen=" + formElementName + "&fev=" + formElementValue + "&cn=" + className + "&l=" + idLanguage,
        dataType: "json",
        cache: false,
        success: function(data) { AjaxValidationCompleted(formName, formElementName, data, currentTime); },
        error: function() { AjaxValidationFailed(formName, formElementName, currentTime); }
    });
}

function GetAutoCompleteRequestUrl(formName, formElementName, className, idLanguage) {
    //data: "fn=" + formName + "&fen=" + formElementName + "&fev=" + formElementValue + "&cn=" + className + "&l=" + idLanguage,
    return "/_modules/form/form.ashx?action=autocomplete&fn=" + formName + "&fen=" + formElementName + "&cn=" + className + "&l=" + idLanguage;
}

function AjaxValidationFailed(formName, formElementName, requestStartTime) {
    alert("Произошла ошибка на вызываемой странице.");
    HideAjaxValidatingIndicator(formName, formElementName, requestStartTime);
}

function HideAjaxValidatingIndicator(formName, formElementName, requestStartTime) {
    var currentTime = new Date();
    var requestDuration = currentTime.valueOf() - requestStartTime.valueOf();
    var hideValidatingIndicatorTimeout = 0;

    var timeout = 500;
    if (requestDuration < timeout) {
        hideValidatingIndicatorTimeout = timeout - requestDuration;
    }

    setTimeout('$("#' + formName + ' #' + formElementName + '_ajax_validating").hide();', hideValidatingIndicatorTimeout);
}

function AjaxValidationCompleted(formName, formElementName, data, requestStartTime) {
    if (data) {

        HideAjaxValidatingIndicator(formName, formElementName, requestStartTime);

        var formElement = $("#" + formName + " #" + formElementName);
        var errorMessageSpanContainer = $("#" + formName + " #" + formElementName + "_error_message_container");
        var errorMessageSpan = $("#" + formName + " #" + formElementName + "_error_message").get(0);
        if (errorMessageSpan) {

            if (data.errorMessage) {
                errorMessageSpan.innerHTML = data.errorMessage;
                errorMessageSpanContainer.show();
                formElement.data("is_valid", 0);
            }
            else {
                errorMessageSpanContainer.hide();
                formElement.data("is_valid", 1);
            }
        }
    }
}

function OnFormElementClientValidated(formName, formElementName, isElementValid, errorMessage) {
    var elementErrorMessageContainer = $('#' + formName + ' #' + formElementName + '_error_message_container');
    var elementErrorMessageSpan = $('#' + formName + ' #' + formElementName + '_error_message').get(0);

    if (!isElementValid) {
        elementErrorMessageSpan.innerHTML = errorMessage;
        elementErrorMessageContainer.show();
    }
    else {
        elementErrorMessageSpan.innerHTML = '';
        elementErrorMessageContainer.hide();
    }
}

function GetCheckBoxListValue(formName, formElementName) {
    var result = "";
    $("#" + formName + " #" + formElementName + " input[type='checkbox']:checked").each(function() {
        if (result != "") {
            result += ", "
        }
        result += this.value;
    });

    return result;
}


function change_password_input_visibility(id, changePasswordStr, cancelStr) {
    var password_input = $("#" + id).get(0);
    var tr_password_copy = $("#tr_password_copy_" + id).get(0);
    var change_password_link = $("#link_change_password_" + id).get(0);

    var display = "";

    if (change_password_link.innerHTML == changePasswordStr) {
        change_password_link.innerHTML = cancelStr;
    }
    else {
        display = "none"
        change_password_link.innerHTML = changePasswordStr;
    }

    password_input.style.display = display;
    tr_password_copy.style.display = display;
}
