function controlar_sms(obj,contador) {
	tope=160;
	if (obj.value.length>tope) {
		obj.value=obj.value.substr(0,tope);
	}
	contador.value=tope-obj.value.length;
	obj2=obj;
	contador2=contador;
	setTimeout("controlar_sms(obj2,contador2)", 100);
}


function igualar_estado_checks(obj_check, estado) {
	if (!obj_check.length) {
		obj_check.checked=estado;
	} else {
		for (cc=0;cc<obj_check.length;cc++) {
			obj_check[cc].checked=estado;
		}
	}
}

function hay_check_seleccionada(obj_check) {
	if (!obj_check.length) {
		return obj_check.checked;
	} else {
		for (cc=0;cc<obj_check.length;cc++) {
			if (obj_check[cc].checked) return true;
		}
	}
	return false;
}

/**/



function activar_pestana(activo) {
    activar_div(activo, 'pestanas', 'content_');
}

function activar_idioma(activo) {
    activar_div(activo, 'pestanas_lang', 'lang_');
}

function activar_div(activo, class_content, prefijo) {
	var divs=document.getElementsByTagName('div');
	
	var div_pestanas=null;
	for (i=0;i<divs.length;i++) {
		if (divs[i].className==class_content) div_pestanas=divs[i];
	}

	if (!div_pestanas) {
		alert('no hay');
		return false;
	}
	
	divs=div_pestanas.getElementsByTagName('div');
	for (i=0;i<divs.length;i++) {
		if (divs[i].id.indexOf(prefijo)!=-1) {
			current_id=divs[i].id.substr(divs[i].id.indexOf(prefijo)+prefijo.length);
			document.getElementById('link_'+current_id).className='';
			document.getElementById(prefijo+current_id).style.display='none';
		}
	}	
	document.getElementById('link_'+activo).className='on';
	document.getElementById(prefijo+activo).style.display='block';
	
	return true;
}


/**/


function trim(cadena) {
    while (cadena.charAt(0) == ' ' && cadena != '') cadena = cadena.substr(1);
    while (cadena.charAt(cadena.length - 1) == ' ' && cadena != '') cadena = cadena.substr(0, cadena.length - 1);
    return cadena;
}

function openwindow(theURL, winName, features) {
 //2.0 , NHT-NORWICK (jGoncalves)

    array_features = features.split(",");

    var width = false;
    var height = false;
    var top = false;
    var left = false;

    final_features = "";
    for (i = 0; i < array_features.length; i++) {
        key_value = array_features[i].split("=");
        if (key_value[0] != "width" && key_value[0] != "height" && key_value[0] != "top" && key_value[0] != "left") final_features += "," + array_features[i];
        if (key_value[0] == "width" || key_value[0] == "height" || key_value[0] == "top" || key_value[0] == "left") eval(key_value[0] + "=\"" + key_value[1] + "\"");
    }

    if (width == "max") {
        width = screen.availWidth - 13;
        left = 1;
    }
    if (height == "max") {
        height = screen.availHeight - 31;
        top = 1;
    }

    if (left == false) left = parseInt((screen.availWidth - Number(width)) / 2);
    if (top == false) top = parseInt((screen.availHeight - (Number(height) + 20)) / 2);

    final_features += ",width=" + width + ",height=" + height + ",left=" + left + ",top=" + top;

    final_features = final_features.substr(1);
    w = window.open(theURL, winName, final_features);
    return w;
}


function es_formato_euro(valor) {
    var expresion = new RegExp('^[0-9]+(,[0-9]{2})?$');
    if (expresion.test(valor)) return true;
    return false;
}


function esta_elemento_en_array(array, elemento) {
    for (zz = 0; zz < array.length; zz++) {
        if (array[zz] == elemento) return true;
    }
    return false;
}


/**/


/***/

function comprobarMail(s) {
    var expresion = new RegExp('^[0-9a-zA-Z_]+(([\\.-]?[0-9a-zA-Z_]+)+)?@[0-9a-zA-Z_-]+(\\.([0-9a-zA-Z_-])+)+$');
    if (expresion.test(s)) return true;
    else return false;
}

function validar_numero_entero_positivo(s) {
    var expresion = new RegExp('^[0-9]+$');
    if (expresion.test(s)) return true;
    else return false;
}

function validar_telefono9(s) {
    var expresion = new RegExp('^[0-9]{9}$');
    if (expresion.test(s)) return true;
    else return false;
}

function validar_telefono11(s) {
    var expresion = new RegExp('^[0-9]{11}$');
    if (expresion.test(s)) return true;
    else return false;
}


function format_to_array(obj) {
    array = new Array();
    if (obj.length) for (z = 0; z < obj.length; z++) array[z] = obj[z];
    else array[0] = obj;
    return array;
}

function validarFecha(strFecha) {
  // formato dd/mm/aaaa
    if (strFecha.length != 10) return false;
    arr = strFecha.split("/");
    str2 = arr[1] + "/" + arr[0] + "/" + arr[2];
    fecha = new Date(str2);
    if ((fecha.getDate() == arr[0]) && ((fecha.getMonth() + 1) == arr[1]) && (fecha.getFullYear() == arr[2])) {
        return true;
    }
    else {
        return false;
    }
}

function es_fecha_mayor(fecha_mayor, fecha_referencia) {
    fecha_mayor = parseInt('' + fecha_mayor.split('/')[2] + '' + fecha_mayor.split('/')[1] + '' + fecha_mayor.split('/')[0]);
    fecha_referencia = parseInt('' + fecha_referencia.split('/')[2] + '' + fecha_referencia.split('/')[1] + '' + fecha_referencia.split('/')[0]);
    if (fecha_mayor > fecha_referencia) return true;
    return false;
}


function etiquetas_errores(codigo, etiqueta) {
    var errores = new Array();
    errores[0] = '   - El campo ' + etiqueta + ' es obligatorio.\n';
    errores[1] = '   - El campo ' + etiqueta + ' debe ser una dirección válida de e-mail.\n';
    errores[2] = '   - El campo ' + etiqueta + ' debe contener sólo números.\n';
    errores[3] = '   - El campo ' + etiqueta + ' debe ser una fecha válida en formato dd/mm/aaaa.\n';
    errores[4] = '   - El campo ' + etiqueta + ' no contiene elementos.\n';
    errores[5] = '   - El campo ' + etiqueta.split('~')[1] + ' debe ser mayor que el campo ' + etiqueta.split('~')[0] + '.\n';
    errores[6] = '   - El campo ' + etiqueta + ' debe ser un número entero positivo.\n';
    errores[7] = '   - Los campos ' + etiqueta + ' debe ser iguales.\n';
    errores[8] = '   - El campo ' + etiqueta + ' debe contener un número de 9 dígitos.\n';
    errores[9] = '   - El campo ' + etiqueta + ' debe contener un número de 11 dígitos.\n';
    errores[10] = '   - El campo ' + etiqueta + ' debe contener un número de 9 ó 11 dígitos.\n';
	
return errores[codigo];
}



function validar(f) {
    errores = '';
    for (i = 1; i < arguments.length; i++) {

        tipo = arguments[i].split('|')[1];
        etiqueta = arguments[i].split('|')[2];
        vacio_permitido = arguments[i].split('|')[3] == 'vacio_permitido'?true:false;

        switch (tipo) {                // primer switch para definir la variable 'campo'

            case 'grupochecks':        campo = (arguments[i].split('|')[0]).split('~');
                                       break;
            case 'fecha_mayor':        campo = (arguments[i].split('|')[0]).split('~');
                                       break;

            case 'campos_iguales':     campo = (arguments[i].split('|')[0]).split('~');
                                       break;


            default:                	campo = eval('f.' + arguments[i].split('|')[0]);
        }

		 switch (tipo) {

            case 'texto':            if (trim(campo.value) == '') errores += etiquetas_errores(0, etiqueta);
                                       break;

			case 'numero_entero_positivo':    if (trim(campo.value) == '') {				
												  if (!vacio_permitido) errores += etiquetas_errores(0, etiqueta);
											  }
										   	  else if (!validar_numero_entero_positivo(campo.value)) errores += etiquetas_errores(6, etiqueta);
										   break;			




            case 'mail':            if (trim(campo.value) == '') {
                                           if (!vacio_permitido) errores += etiquetas_errores(0, etiqueta);
                                       }
                                       else if (!comprobarMail(campo.value)) errores += etiquetas_errores(1, etiqueta);
                                       break;




            case 'telefono':        if (trim(campo.value) == '') {
                                           if (!vacio_permitido) errores += etiquetas_errores(0, etiqueta);
                                       }
                                       else if (isNaN(campo.value)) errores += etiquetas_errores(2, etiqueta);
                                       break;

            case 'telefono9':        if (trim(campo.value) == '') {
                                           if (!vacio_permitido) errores += etiquetas_errores(0, etiqueta);
                                       }
                                       else if (!validar_telefono9(campo.value)) errores += etiquetas_errores(8, etiqueta);
                                       break;
									   
            case 'telefono11':        if (trim(campo.value) == '') {
                                           if (!vacio_permitido) errores += etiquetas_errores(0, etiqueta);
                                       }
                                       else if (!validar_telefono11(campo.value)) errores += etiquetas_errores(9, etiqueta);
                                       break;
									   
            case 'telefono9_11':       if (trim(campo.value) == '') {
                                           if (!vacio_permitido) errores += etiquetas_errores(0, etiqueta);
                                       }
                                       else if (!validar_telefono9(campo.value) && !validar_telefono11(campo.value)) errores += etiquetas_errores(10, etiqueta);
                                       break;

            case 'fecha':            if (trim(campo.value) == '') {
                                           if (!vacio_permitido) errores += etiquetas_errores(0, etiqueta);
                                       }
                                       else if (!validarFecha(campo.value)) errores += etiquetas_errores(3, etiqueta);
                                       break;




            case 'fecha_mayor':        if (campo.length != 2) {
                                           break;
                                       }
                                       fecha_1 = eval('f.' + campo[0] + '.value');
                                       fecha_2 = eval('f.' + campo[1] + '.value');
                                       if (!validarFecha(fecha_1) || !validarFecha(fecha_2)) {
                                           break;
                                       }

                                       if (!es_fecha_mayor(fecha_2, fecha_1)) {
                                           errores += etiquetas_errores(5, etiqueta);
                                       }
                                       break;





            case 'radio':            campo = format_to_array(campo);
                                       seleccionado = false;
                                       for (j = 0; j < campo.length && !seleccionado; j++) {
                                           if (campo[j].checked) seleccionado = true;
                                       }
                                       if (!seleccionado) errores += etiquetas_errores(0, etiqueta);
                                       break;




            case 'select':            if (campo.options.length > 1 && campo.options[campo.selectedIndex].value == '') errores += etiquetas_errores(0, etiqueta);
                                       break;


            case 'lista_vacia':        if (campo.length <= 0) errores += etiquetas_errores(4, etiqueta);
                                       break;



            case "grupochecks":        seleccionado = false;
                                       for (j = 0; j < campo.length && !seleccionado; j++) {
                                           elemento = eval('f.' + campo[j]);
                                           if (elemento.checked) seleccionado = true;
                                       }
                                       if (!seleccionado) errores += etiquetas_errores(0, etiqueta);
                                       break;
									   
									   
									   
									   
            case "campos_iguales":     patron=eval('f.' + campo[0]+'.value');
									   ok = true;
                                       for (j = 0; j < campo.length && ok; j++) {
                                           elemento = eval('f.' + campo[j]);
                                           if (elemento.value!=patron) ok = false;
                                       }
                                       if (!ok) errores += etiquetas_errores(7, etiqueta);
                                       break;
									   
									   

        } // fin de switch
    } // fin de for de argumentos


    return errores;
    /*
	if (errores!='') {
		alert('Se han producido los siguientes errores:\n\n' + errores + '\n');
		return false;
	}
	else {
		return true;
	}*/
}


function mostrar_errores(errores) {
    alert('Se han producido los siguientes errores:\n\n' + errores + '\n');
}
