	/*
	 * common form validation
	 *
	 * AWE · Ancert Web Engine
	 * com.ancert.dyd.MaxNoe 20040317
	 */

function checkAndSubmit(form, requiredFields, isCustomAction) {
	if (form) {
		if (requiredFields) {
			var requiredArray = requiredFields.split(',');
			var formElements = form.elements;
			for (var elementIndex = 0; elementIndex < formElements.length; elementIndex++) {
				var element = formElements[elementIndex];
				for (var fieldsIndex = 0; fieldsIndex < requiredArray.length; fieldsIndex++) {
					if (requiredArray[fieldsIndex] == element.name) {
						if (!element.value) {
							element.focus();
							alert('El campo donde está el cursor no puede estar vacío.');
							return;
						}
					}
				}
			}
		}

		// if this is a normal submit the custom action is disabled
		if (!isCustomAction) {
			if (form.elements) {
				if (form.elements['action']) {
					form.action.value = '';
				}
			}
		}

		form.submit();
	} else {
		alert ('No valid form could be found. Cannot continue. ' + form);
	}
}
function ComprobarySubmit(form){
	var label = document.getElementById('actoLabel');
	var content = document.forms[0].content;
	if(label.value!='' && content.value!='')
		form.submit();
	else
		alert("¡Los campos no pueden estar vacios!");
}

/*
 * performs a submit passing an action
 * to the server, to avoid having to
 * show a popup for some actions
 */
function doAction(form, action, requiredFields) {
	if (form) {
		var actionField = document.createElement('input');
		actionField.type = 'hidden';
		actionField.name = 'action';
		actionField.value = action;
		form.appendChild(actionField);
		checkAndSubmit(form, requiredFields, true);
	}
}

/*
 *  FUNCTION validateAndSubmit() should be merged with checkAndSubmit()
 *
 */
 function validateAndSubmit(form, validateFields)
{
	if (form) {
		if (validateFields) {

                        var validateArray = validateFields.split(',');
                        var formElements = form.elements;
                        for (var elementIndex = 0; elementIndex < formElements.length; elementIndex++) {

                        	var element = formElements[elementIndex];
				for (var fieldsIndex = 0; fieldsIndex < validateArray.length; fieldsIndex++) {

                                        var validateValues = validateArray[fieldsIndex].split(':');
                                        var validateField = validateValues[0];
                                        var validateType = validateValues[1];
                                        var requireField = validateValues[2];
                                        if ( validateValues.length == 2 )
                                                requireField = false;

                                        if ( validateField == element.name ) {
                                                var valid = true;
                                                var strMessage = '';
                                                
                                         		var valor = element.value.replace(/^\s*|\s*$/g,"");
										 		if (valor){
                                                        switch(validateType) {
                                                                case 'date':
                                                                        if (! (valid = validDate(element.value)) )
                                                                                strMessage = 'El campo donde está el cursor tiene que ser una fecha correcta, con el siguiente formato: dd/mm/aaaa.';
                                                                        break;
                                                                case 'year':
                                                                        if (! (valid = validYear(element.value)) )
                                                                                strMessage = 'El campo donde está el cursor tiene que ser un año correcto, con el siguiente formato: aaaa.';
                                                                        break;
                                                                case 'hour':
                                                                        if (! (valid = validHour(element.value)) )
                                                                                strMessage = 'El campo donde está el cursor tiene que ser una hora correcta, con el siguiente formato: hh:mm.';
                                                                        break;
                                                                case 'email':
                                                                        if (! (valid = validEmail(element.value)) )
                                                                                strMessage = 'El campo donde está el cursor tiene que ser un email correcto, con el siguiente formato: nombre@dominio.[es/com/org/etc...].';
                                                                        break;
                                                                case 'number':
                                                                        if (! (valid = validNumber(element.value)) )
                                                                                strMessage = 'El campo donde está el cursor tiene que ser un número.';
                                                                        break;
                                                                case 'url':
                                                                        if (! (valid = validUrl(element.value)) )
                                                                                strMessage = 'El campo donde está el cursor tiene que ser una dirección web correcta, con el siguiente formato: http://www.nombre.[es/com/org/etc...].';
                                                                        break;
                                                        }



						}
                                                else if ( requireField ) {
                                                        valid = false;
                                                        strMessage = 'El campo donde está el cursor no puede estar vacío.';
                                                }

                                                if ( !valid ) {
                                                        element.focus();
                                                        alert(strMessage);
                                                        return;
                                                }
					}
				}
			}
		}

		form.submit();
	} else {
		alert ('No valid form could be found. Cannot continue. ' + form);
	}

}

function validarCategoria(formulario)
			{
				if(formulario.category_id.value=="")
				{
					alert("Debe seleccionar una Categoría");
					formulario.category_id.focus();
				}
				else
				{
					validateAndSubmit(formulario);
				}
			}

function validDate(date)
{
	var result = false;
	values = date.split('/');
	if ((values.length == 3) && (values[2].length == 4) && (values[1].length == 2) && (values[0].length == 2)) {
		var year = y2k(Number(values[2]));
		var month = Number(values[1]) - 1;
		var day = Number(values[0]);

		var datetest = new Date(year,month,day);
		if ((y2k(datetest.getYear()) == year) && (month == datetest.getMonth()) && (day == datetest.getDate())) {
			result = true;
		}
	}
	return result;
}
function validYear(year)
{
         var result = true;
         var datetest = new Date();
         if ( !datetest.setFullYear(year) )
                 return false;
         return result;
}
function validHour(vhour)
{
         var result = false;
         if(vhour.length == 5){
	         values = vhour.split(':');
	         var hour = new Number();
	         var minute = new Number();
			 minute = Number(values[1]);
			 hour = Number(values[0]);
	         if (hour != 'NaN') {
			 	if ((minute = Number(values[1])!==false)) {
					if ((hour >= 0) && (hour <= 23) &&
					(minute >= 0) &&
					(minute <= 59)) {
						result = true;
					}
				} 
			 }
         }
         return result;
}
function validEmail(email)
{
        var result = false;
        var sEmail = new String(email);
        var index = sEmail.indexOf("@");
        if (index > 0)
        {
                var pindex = sEmail.indexOf(".",index);
                if ((pindex > index+1) && (sEmail.length > pindex+1))
      	                result = true;
        }
        return result;
}
function validNumber(number) {
        return Number(number);
}

function validUrl(url) {
        var result = false;
        re = /^(file|http|https):\/\/\S+\./i
        var sUrl = new String(url);
        if (sUrl.indexOf('http') > -1) {
                if (re.test(sUrl))
                        result = true;
        }
        return result;
}

function y2k(number) {
        return (number < 1000) ? number + 1900 : number;
}


function checkSearchAndSubmit() {
	cons = document.getElementById('querystring');
    var str = new String();
    str = cons.value;
    if (str.length <= 2) {
		alert('Se requiere como mínimo tres carácteres para realizar la búsqueda.');
		cons.focus();
		return false;
	}
    formobj = document.getElementById('formsearch');
	formobj.action = '?do=search.submit';
	formobj.submit();
	return true;
}
/*Busca el option con el valor que se le pasa y devuelve la label de dicho option.
  Requiere del valor a buscar (valor) y del select entero (seleccio)
*/

function devuelveLabel(valor, seleccion)
{
	var elementIndex=0;
		for( elementIndex = 0; elementIndex < seleccion.length; elementIndex++)
		{
		 if(seleccion[elementIndex].value==valor)break;
		}
		return seleccion[elementIndex].label;
}
function showCalendarCheckForm (d,fa,fm,fd) {
    if (Inicio == "flag") {
	location.reload();
	return;
    }
    showCalendar (d,fa,fm,fd);
}

function comprobacionesGuardias(formulari,validar){

	var archivo = document.getElementById('file');
	if(archivo && archivo.value != ""){
		archivo2 = archivo.value.split(":");
		if(archivo.value == archivo2){
			alert("Debe introducir una ruta correcta para el archivo");
			return;
		}
	}
	validateAndSubmit(formulari,validar);
}

function comprobacionesProtocolos(formulari,validar){

	var archivo = document.getElementById('file');
	if(archivo && archivo.value != ""){
		archivo2 = archivo.value.split(":");
		if(archivo.value == archivo2){
			alert("Debe introducir una ruta correcta para el archivo");
			return;
		}
	}
	validateAndSubmit(formulari,validar);
}

function promptBox(text,id){
var r=confirm(text);
if (r==true) {
		setTimeout( "window.location.href = '?do=foros.eraseForum&forum="+id+"'", 0 );
  }
}
function processForm(action) {
	var form = document.forms[0];
	if (action)
		form.action = action;
	form.submit();
}
function showMailMenu(type,data){
	if (type == 1) 
		var container = document.getElementById("Message");
	else {
		var container = document.getElementById("MessageReply");
	}
	container.style.display="block";
	if(type==2)
			var ide = document.getElementById("replyid").value=data;
}	
function forosPaginatorClick(page,forum){
	setTimeout( "window.location.href = '?do=foros&option=showTopics&forum="+forum+"&page="+page+"'", 0 );	
}
function forosReplysPaginator(page,forum,id){
	setTimeout( "window.location.href = '?do=foros.showPost&forum="+forum+"&id="+id+"&page="+page+"'", 0 );	
}
function checkSearchAndSubmit2() {
	cons = document.getElementById('searchText');
    var str = new String();
    str = cons.value;
    if (str.length <= 2) {
		alert('Se requiere como mínimo tres carácteres para realizar la búsqueda.');
		cons.focus();
		return;
	}
    formobj = document.getElementById('search');
	formobj.submit();
	return true;
}
function validateProtocoloForm(form) {
	if(!form.fecha.value) {
		alert("Debe introducir un valor para la fecha");
		form.fecha.focus();
		return;
	}
	
	values = form.fecha.value.split('/');
	if (values.length != 3) {
		alert("El campo donde está el cursor tiene que ser una fecha correcta, con el siguiente formato: dd/mm/aaaa");
		form.fecha.focus();
		return;
	}

	if(! ((values[0].length == 2) && (values[1].length == 2) && (values[2].length == 4)) ) {
        alert("El campo donde está el cursor tiene que ser una fecha correcta, con el siguiente formato: dd/mm/aaaa");
		form.fecha.focus();
		return;
    }
	var numDias = 0;
    switch(values[1]) {
		case "01": case "03": case "05": case "07": case "08": case "10": case "12":
			numDias = 31;
			break;
		case "04": case "06": case "09": case "11":
			numDias = 30;
			break;
		case "02":
            if (comprobarBisiesto(values[2]))
            	numDias=29;
            else 
            	numDias=28;
            break;
        default:
        	alert("El campo donde está el cursor tiene que ser una fecha correcta, con el siguiente formato: dd/mm/aaaa");
			form.fecha.focus();
			return;
    }
    
	if (values[0] > numDias || values[0] == 0) {
        alert("El campo donde está el cursor tiene que ser una fecha correcta, con el siguiente formato: dd/mm/aaaa");
		form.fecha.focus();
		return;
    }
        
	if((!form.nombre.value || !form.apellidos.value)) {
		alert("Debe informar del nombre y apellidos");
		return;
	}
	
	/*if(form.cuv.value.length != 7 && (!form.nombre.value || !form.apellidos.value)) {
		alert("El Código de Últimas Voluntades debe contener 7 dígitos");
		form.cuv.focus();
		return;
	}*/
	form.submit();	
}
function comprobarBisiesto(year) {
	if ( ( year % 100 != 0) && ((year % 4 == 0) || (year % 400 == 0))) 
	    return true;
	else 
	    return false;
}

