
function validate(inputArray) {
    var request = "";
    var formAction = "";

    if (inputArray.length == null) {
        // Submit a single input field and value
        request = formatInput(inputArray.name, getFormValue(inputArray));
        formAction = getFormAction(inputArray.name);
    } else {
        // Submit multiple input field and value pairs
        for (var i = 0; i < inputArray.length; i++) {
            var input = document.getElementsByName(inputArray[i].name)[0];
            var nameValuePair = formatInput(input.name, getFormValue(input));

            request = request + nameValuePair;

            if (i != inputArray.length) {
                request = request + "&";
            }
        }

        formAction = getFormAction(inputArray[0].name);
    }

    // Invoke server-side logic
    AjaxFormValidatorJS.validateString(formAction,
                                       request,
                                       handleValidationResponse);
}

function getFormValue(input) {
	if ((input.type == 'radio') || (input.type == 'checkbox')) {
		return getButtonValue(input);
	}
	else {
		return input.value;
	}
}

function getButtonValue(input) {
	var elements = document.getElementsByName(input.name);
	for (var i = 0; i < elements.length; i++) {
		if (elements[i].checked) {
			return elements[i].value;
		}
	}
}

function handleValidationResponse(response) {
    // The response is an array of id/message value pairs
    for (inputName in response) {
        var errorElementId = inputName + ".errors";
        var validationMessage = response[inputName];

        dwr.util.setValue(errorElementId, validationMessage);
        var inputElement = $("#" + inputName);
        var labelElement = $("#" + inputName + ".label");
        if (validationMessage.length > 0) {
        	if (inputElement != null) {
        		inputElement.addClass("error");
        	}
        	if (labelElement != null) {
	        	labelElement.addClass("error");
	        }
        } else {
        	if (inputElement != null) {
	        	inputElement.removeClass("error");
	        }
        	if (labelElement != null) {
	        	labelElement.removeClass("error");
	        }
        }
    }
}

function getFormAction(inputName) {
    var currentElement = document.getElementsByName(inputName)[0];

    while (currentElement != null) {
        if (currentElement.tagName.toLowerCase() == "form") {
            // Drop the http://servername [13]
            var formAction = "";
            var locationFragements = currentElement.action.split("/");

            for (var i = 4; i < locationFragements.length; i++) {
                formAction = formAction + "/" + locationFragements[i];
            }

            return formAction;
        } else {
            currentElement = currentElement.parentNode;
        }
    }
}

function formatInput(id, value) {
	return id + "=" + value;
}


(function($) {
$(function() {
	var closeText = 'Zatvoriť';
	var cancelText = 'Prerušenie';
	var errorText = 'Požadovaný obsah nebolo možné načítať.<br/>Pokúste sa neskôr ešte raz.<br/><a class="nyroModalClose" href="#">Zatvoriť</a>';
	$.fn.nyroModal.settings.minWidth = 100; // Minimum width
	$.fn.nyroModal.settings.minHeight = 100; // Minimum height
	$.fn.nyroModal.settings.closeButton = '<a title="' + closeText + '" id="closeBut" class="nyroModalClose" href="#">' + closeText + '</a>'; // Adding automaticly as the first child of #nyroModalWrapper
	$.fn.nyroModal.settings.contentLoading = '<a class="nyroModalClose" href="#">' + cancelText + '</a>'; // Loading div content
	$.fn.nyroModal.settings.contentError = errorText; // Content placed in the loading div in case of error
});
})(jQuery);

