	/*
	 * common form validation
	 *
	 * AWE · Ancert Web Engine
	 * com.ancert.dyd.MaxNoe 20040317
	 */
/*
 * 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 = '';

						if (element.value) {
	                        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 validDate(date)
{
         var result = true;
         values = date.split('/');
         if(! ((values[2].length == 4) &&
               (values[1].length == 2) &&
               (values[0].length == 2)) ) {
             result = false;
         }
         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 = false;
         }
         //else
         //        element.value = day + "/" + month + "/" + year;
         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;
         values = vhour.split(':');
         var hour = new Number();
         var minute = new Number();
         if ( (hour = Number(values[0])) )
                 if ( ( minute = Number(values[1])) )
                         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+\.(com|net|org|info|biz|ws|us|tv|cc|es|net)$/i
		re = /^(?:http:\/\/)?(.+?\.(?:com|net|org|info|biz|ws|us|tv|cc|co\.uk|co\.jp|es|us|cz))/
        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 countChars(objChars, objCounter, maxChars) {
	var nChars = objChars.value.length;
	var strCounter = maxChars - nChars;

	if(maxChars - nChars < 0){
		//strCounter = "<font color='#ff0000'>" + strCounter + "</font>";
		strCounter = 0;
		objChars.value = objChars.value.substring(0, maxChars);
	}
	objCounter.innerHTML = strCounter;
}


/*VIGIA*/

function showCalendarCheckForm (d,fa,fm,fd) {
    if (Inicio == "flag") {
	location.reload();
	return;
    }
    showCalendar (d,fa,fm,fd);
}


/*  Functions to make appear and disappear an element
    depending on its element counter being 0 or not*/
var elementCounter=0;
function increase(element) {
    elementCounter++;
    element.style.visibility='visible';
}
function decrease(element) {
    elementCounter--;
    if(elementCounter==0)
        element.style.visibility='hidden';
}

 
function showHideObject(id) {

		element = document.getElementById(id);

		if (element.style.display == 'none' || element.style.display == '') 
			element.style.display = 'block';
		else 
			element.style.display = 'none';
}
