//KSVALIDATOR
//Last revision by Beckerle Matias, 20090715

//Definición de variables para los titulares de los mensajes
var _ksval_title = "L' formulari conté els següents errors:";
var _ksval_required = "És necessari completar els camps: ";
var _ksval_email = "La següent adreça de correu electrònic ha de ser vàlida: ";
var _ksval_checked = "Ha de marcar l'opció: ";
var _ksval_selected = "Ha de seleccionar una opció: "

//Definición de variables para la descripción de los tooltips
var _ksval_tooltip_required = "Ha de completar el camp.";
var _ksval_tooltip_email = "Ha d'ingressar una adreça de correu electrònic vàlida.";
var _ksval_tooltip_checked = "Ha de marcar l'opció.";
var _ksval_tooltip_selected = "Heu de seleccionar una opció.";  

//Expresiones regulares
var RegExEmail = /[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/; //Para validar un email

//Global
var _ksval_errors = "";

function Validate() {
    _ksval_errors = "";
    
	ValidateRequired();
	ValidateEmail();
	ValidateSelected();
	ValidateChecked();
    
    if (_ksval_errors == "") {
        return true;
    } else {
		ShowErrors(_ksval_errors);
        return false;
    }    
}

function ValidateRequired(){
	var _first_error_required = true;
    $(".required").each(function(){
        if (jQuery.trim($(this).val()) == ""){
            if(_first_error_required){
                _ksval_errors += "<div class='validator_type'>" + _ksval_required + "</div><ul>";
                _first_error_required = false;
            }
            _ksval_errors += "<li>" + $(this).attr("titulovalidador") + "</li>";
            $(this).attr("title", _ksval_tooltip_required);
            $(this).addClass("tooltip_error");
        }
    });
	if(!_first_error_required){
        _ksval_errors += "</ul>";
    }
}

function ValidateSelected(){
    var _first_error_selected = true;
	$(".selected").each(function(){
        if($(this).val() == -1){
            if(_first_error_selected){
                _ksval_errors += "<div class='validator_type'>" + _ksval_selected + "</div><ul>";
                _first_error_selected = false;
            }
            _ksval_errors += "<li>" + $(this).attr("titulovalidador") + "</li>";
            $(this).attr("title", _ksval_tooltip_selected);
            $(this).addClass("tooltip_error");
        }
    });
	if(!_first_error_selected){
        _ksval_errors += "</ul>";
    }
}

function ValidateChecked(){
    var _first_error_checked = true;
    $(".checked").each(function(){
        if(!$(this).attr("checked")){
            if(_first_error_checked){
                _ksval_errors += "<div class='validator_type'>" + _ksval_checked + "</div><ul>";
                _first_error_checked = false;
            }
            _ksval_errors += "<li>" + $(this).attr("titulovalidador") + "</li>";
            $(this).attr("title", _ksval_tooltip_checked);
            $(this).addClass("tooltip_error");
        }
    });
	if(!_first_error_checked){
        _ksval_errors += "</ul>";
    }
}

function ValidateEmail(){
	var _first_error_email = true;
    $(".email").each(function(){
        if(jQuery.trim($(this).val()) != ""){
            if(!$(this).val().match(RegExEmail)){
                if(_first_error_email){
                	_ksval_errors += "<div class='validator_type'>" + _ksval_email + "</div><ul>";
                	_first_error_email = false;
				}
                _ksval_errors += "<li>" + $(this).attr("titulovalidador") + "</li>";
                $(this).attr("title", _ksval_tooltip_email);
                $(this).addClass("tooltip_error");
            }
        }
    });
	if(!_first_error_email){
        _ksval_errors += "</ul>";
    }
}

function ShowErrors(_ksval_errors) {
    if ($.trim(_ksval_errors) != '') {
		ShowTooltips();
        _ksval_errors = '<div class="validator_title" align="left">' + _ksval_title + '</div>' + _ksval_errors;
        $("#validator_container").html(_ksval_errors);
        $("#validator_container").slideDown();
    } else {
        $("#validator_container").hide();
    }
}

function ShowTooltips(){
    jQuery('.tooltip_error').tooltip({
        track: true,
        delay: 0, 
        showURL: false, 
        showBody: " - ", 
        fade: 250                   
    });
}