function openwindow(href,ancho,alto)
{
    var hwnd = window.open(href,"SEIS","left=50,top=50,width=" + ancho + ",height=" + alto + ",scrollbars=1, menubar=no, toolbar=no,resizable=no");
    hwnd.focus();
}
function openwindow_sin(href,ancho,alto)
{
    var hwnd = window.open(href,"SEIS","left=50,top=50,width=" + ancho + ",height=" + alto + ",scrollbars=auto, menubar=no, toolbar=no,resizable=yes");
    hwnd.focus();
}
function abrir(href)
{
    var hwnd = window.open(href,"SEIS","left=50,top=50,scrollbars=no, menubar=no, toolbar=no,resizable=no");
    hwnd.focus();
}

// El primer parámetro es el nombre del campo "text", el segundo es el directorio
function upload(nombrecampo,directorio)
{
	window.open("../uploads/uploadsform.jsp?directorio=" + directorio + "&nombrecampo="+nombrecampo,"","resizable=yes,left=100,top=100,width=450,height=150,scrollbars=yes, menubar=no, toolbar=no");
}



/*-----------------------------------FICHERO DE VALIDACIONES------------------------*/
/*
///////////////////////////////////////////////////////////////////////////////////////
///////////////        FUNCIONES QUE EXISTEN EN ESTE FICHERO            ///////////////
///////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////
//               OBJETO QUE ALMACENA LAS PROPIEDADES DE LOS CAMPOS                   //
///////////////////////////////////////////////////////////////////////////////////////
//			1.- Campo ( tipo, referencia, longitud,  obligatorio, descrip )
///////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////
//                   FUNCIONES GENERALES A VARIAS VALIDACIONES                       //
///////////////////////////////////////////////////////////////////////////////////////
//			2.- validaObligatorio( Object.referencia )
//			3.- validaRango ( Object.referencia.value )
///////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////
//                   FUNCIONES VALIDACION NUMERICOS NATURALES                        //
///////////////////////////////////////////////////////////////////////////////////////
//			4.- esNumerico( Object.referencia )
//			5.- validaNumerico ( Object )
///////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////
//                   FUNCIONES VALIDACION NUMERICOS REALES                           //
///////////////////////////////////////////////////////////////////////////////////////
//			6.- validaDecimales( Object.referencia.value, Object.longitud )
//			7.- esReal ( Object.referencia )
//			8.- validaReal ( Object )
///////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////
//                   FUNCIONES VALIDACION DATOS ALFANUMERICOS                        //
///////////////////////////////////////////////////////////////////////////////////////
//			9.- validaLongitud( Object.referencia.value, Object.longitud )
//			10.- convierteOracle ( Object.referencia.value )
//                      10B.- Quitablancos (Object.referencia.value)
//			11.- validaDatos ( Object )
///////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////
//                         FUNCIONES VALIDACION FECHAS                               //
///////////////////////////////////////////////////////////////////////////////////////
//			12.- meterSeparador( Object.referencia )
//			12.bis- fechaValida( Object.referencia )
//			13.- validaFecha ( Object )
///////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////
//                     FUNCION QUE CONTROLE LAS VALIDACIONES                         //
///////////////////////////////////////////////////////////////////////////////////////
//			14.- validarCampos()
///////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////
//                     FUNCION QUE COMPARE FECHAS                         	     //
///////////////////////////////////////////////////////////////////////////////////////
//			15.- esFechaMayor( pDia, pMes, pAnio, sDia, sMes, sAnio )
///////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////
//         FUNCION QUE QUITA NOTACION CIENTIFICA Y FORMATEA A 2 DECIMALES     	     //
///////////////////////////////////////////////////////////////////////////////////////
//			16.- formatea( Object )
///////////////////////////////////////////////////////////////////////////////////////

*/

///////////////////////////////////////////////////
//ARRAY QUE ALMACENA TODOS LOS OBJETOS A VALIDAR
///////////////////////////////////////////////////
campos = new Array ( );

///////////////////////////////////////////////////
//OBJETO QUE ALMACENA LAS PROPIEDADES DE LOS CAMPOS
///////////////////////////////////////////////////
function Campo ( tipo, referencia, longitud, obligatorio, descrip ){
	this.tipo = tipo;
	this.referencia = referencia;
	this.longitud = longitud;
	
	this.obligatorio = obligatorio;
	this.descrip = descrip;
}

////////////////////////////////////////////
//FUNCIONES GENERALES A VARIAS VALIDACIONES
///////////////////////////////////////////
function validaObligatorio ( ref ){
	if ( ref.value == "" )
		return false;
	return true;
}


/////////////////////////////////////////
//VALIDACION DE DATOS NUMERICOS NATURALES
/////////////////////////////////////////
function esNumerico ( idobj ){
	var chr;
	var valor = idobj.value;
	for ( var i=0; i< valor.length; i++){
		chr = valor.substring ( i, i+1);
		if (chr < "0" || chr > "9")
			return false;
	}
	return true;
	
}

function validaNumerico ( obj ){
	if ( obj.rgoini != obj.rgofin ){
		if ( ! validaRango ( obj.referencia.value, obj.rgoini, obj.rgofin )){
			alert ( "El valor del Campo "+obj.descrip+" debe estar comprendido entre: "+obj.rgoini+" y "+obj.rgofin);
			obj.referencia.focus ( );
			return false;
		}
	}
	if ( ! esNumerico ( obj.referencia ) ){
		alert ( "El valor del Campo "+obj.descrip+" es de tipo Numérico");
		obj.referencia.focus ( );
		return false;
	}
	return true;
}

/////////////////////////////////////////
//VALIDACION DE DATOS NUMERICOS REALES
/////////////////////////////////////////
function validaDecimales ( valor, lng ){
	decimales = valor.substring ( valor.indexOf (".")+1, valor.length );
	//if (valor.indexOf(".") != -1){
	if (decimales.length > 0){
		if ( decimales.length > lng )
			return false;
	}
	//}
	return true;
}

function esReal ( idobj ){
	var valor = idobj.value;
	var chr, cnt = 0;
	for ( var i=0; i <valor.length; i++){
		chr=valor.substring ( i, i+1);
		if ( chr == "." )
			cnt ++;
		else{
			if ((chr < "0") || (chr > "9"))
				return false;
		}
	}
	if (cnt == 0)
		idobj.value = valor+".0";
	if (cnt >1)
		return false;
	return true;
}

function validaReal ( obj ){
	if ( obj.rgoini != obj.rgofin ){
		if ( ! validaRango ( obj.referencia.value, obj.rgoini, obj.rgofin )){
			alert ( "El valor del Campo "+obj.descrip+" debe estar comprendido entre: "+obj.rgoini+" y "+obj.rgofin);
			obj.referencia.focus ( );
			return false;
		}
	}

	if ( ! esReal ( obj.referencia ) ){
		alert ( "El valor del Campo "+obj.descrip+" es de tipo Real");
		obj.referencia.focus ( );
		return false;
	}

	if ( obj.longitud != 0 ){
		if ( ! validaDecimales (obj.referencia.value, obj.longitud)){
			alert ( "El Campo "+obj.descrip+" debe tener "+obj.longitud+" cifras decimales ");
			obj.referencia.focus ( );
			return false;
		}
	}
	return true;
}

///////////////////////////////////
//VALIDACION DE DATOS ALFANUMERICOS
///////////////////////////////////
function validaLongitud ( valor, longi ) {
	if ( valor.length > longi )
		return false;
	return true;
}

function convierteOracle ( valor ){
	var chr, str = "";

	for ( var i=0; i< valor.length; i++){
		chr = valor.substring ( i, i+1);
		if (chr == "*")
			chr = "%";
		if (chr =="?")
			chr = "_";
		str = str + chr;
	}
	return str;
}

function Quitablancos(valor)
 {
  var i; 
  var cad=valor;
  var i=0;

  while (cad.charAt(0)<=' ' && i<cad.length)
   {
    cad=cad.substring(1,cad.length);
    i++;
   }

  i=cad.length-1;
  while (cad.charAt(i)==' ' && i>0)
   {
    cad=cad.substring(0,cad.length-1);
    i--;
   }
  
  return cad;
 }



function validaDatos( obj ){
	obj.referencia.value=Quitablancos(obj.referencia.value);
	if ( obj.longitud != 0 ){
		if ( ! validaLongitud ( obj.referencia.value, obj.longitud )){
			alert ( "El Campo "+obj.descrip+" puede tener "+obj.longitud+" caracteres como maximo");
			obj.referencia.focus ( );
			return false;
		}
	}
	//obj.referencia.value = convierteOracle (obj.referencia.value);
	return true;
}

///////////////////////////////////
//       VALIDACION DE FECHAS
///////////////////////////////////
function meterSeparador( ref ){
	var fecha;
	if ( ref.length == 6 ){		
		dia = ref.substring ( 0, 2);
		mes = ref.substring ( 2, 4);
		anho = "19"+ref.substring (4 , 6)
		fecha = dia+"/"+mes+"/"+anho;
	}
	if ( ref.length == 8 ){
		dia =ref.substring ( 0, 2);
		mes =ref.substring ( 2, 4);
		anho =  ref.substring ( 4, 8);
		fecha = dia+"/"+mes+"/"+anho;
	}
	return fecha;
}
function bisiesto( a )
{
    return  ( ( a % 400 == 0 ) || ( ( a % 4 == 0 ) && !( a % 100 == 0 )));
}
function esFecha(input)
{
	re=/^\d\d-\d\d-\d\d\d\d$/;
	re2=/^\d\d\/\d\d\/\d\d\d\d$/;
	if(!re.test(input.value) && !re2.test(input.value))
	{
		return false;
	}
        fecha = input.value;
        dia = fecha.substr( 0, 2 );
        mes = fecha.substr( 3, 2 );
        anno = fecha.substr( 6, 4 );      

        if(anno<1000)
        {
            return false;
        }
        if ( mes < 1 || mes > 12 )
        {
            return false;
        }
        if ( dia < 1 )
        {
            return false;
        }
        if ( mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12 )
        {
            if ( dia > 31 )
            {
                return false;
            }
        }

        if ( mes == 4 || mes == 6 || mes == 9 || mes == 11 )
        {
            if ( dia > 30 )
            {
                return false;
            }
        }

        if ( mes == 2 )
        {
            if ( bisiesto( anno ) )
            {
                if ( dia > 29 )
                {
                    return false;
                }
            }
            else
            {
                if ( dia > 28 )
                {
                    return false;
                }
            }
        }
        return true;
}	

function fechaValida ( ref ){
	
	var dia, mes, anho, mod, chr;
	if (ref.value == null || ref.value.length == 0 )
		return true;
	var j = 0;
	var separador = 0;
	while( j < ref.value.length ){
		chr = ref.value.charAt ( j );
		if (!(chr != "/"&& chr != "-"))
			separador++;
		j++;
	}
	
	if (separador == 0 )
		ref.value = (meterSeparador(ref.value));
	if ( ref.value.length == 8 ){
		for (var i =0; i < ref.value.length; i++){
			chr = ref.value.charAt ( i );
			if ( i != 2 && i != 5){
				if ( chr < "0" || chr > "9")
					return false
			}
			else{
				if (chr != "/"&& chr != "-")
					return false;
			}
		}
		/*dia = parseInt ( ref.value.substring ( 0, 2), 10);
		mes = parseInt ( ref.value.substring ( 3, 5), 10);
		anho = parseInt ( "20"+ref.value.substring ( 6, 8), 10);*/
		dia = ref.value.substring ( 0, 2);
		mes = ref.value.substring ( 3, 5);
		anho = "19"+ref.value.substring ( 6, 8)
		ref.value = dia+"/"+mes+"/"+anho;
		dia = parseInt(dia);
		mes = parseInt (mes);
		anho = parseInt (anho);
	}
	else if ( ref.value.length == 10 ){
		for (var i =0; i < ref.value.length; i++){
			chr = ref.value.charAt ( i );
			if ( i != 2 && i != 5){
				if ( chr < "0" || chr > "9")
					return false
			}
			else{
				if (chr != "/" && chr != "-")
					return false;
			}
		}

		dia =ref.value.substring ( 0, 2);
		mes =ref.value.substring ( 3, 5);
		anho =  ref.value.substring ( 6, 10);
		
		ref.value = dia+"/"+mes+"/"+anho;
		if (dia.substring(0,1)=='0'){
			dia = dia.substring(1,2);
			}
		dia = parseInt(dia);
		if (mes.substring(0,1)=='0'){
			mes = mes.substring(1,2);
			}
		
		mes = parseInt (mes);
		anho = parseInt (anho);
	}
	else
		return false;
	
	
	
	//alert("dia: "+dia+" mes: "+mes+" año:");
	
	if ( 1>dia || dia >31)
		return false;
	if ( 1>mes || mes >12)
		return false;
	if (1 > anho)
		return false;
	if ((mes ==4 || mes == 6 || mes == 9 || mes == 11) && dia == 31)
		return false;
	if ( mes == "2"){
		mod = anho%4;
		if ( mod == 0){
			mod = anho%100
				if ( mod == 0){
					var mod2 = anho%400;
					if ( mod2 == 0 && dia >29)
						return false;
				}
				else if ( dia > 29)
					return false;
		}
		else if (dia > 28 )
			return false;
	}
	return true;
}

function validaFecha (obj){
	if ( ! fechaValida (obj.referencia)){
		alert ( "El Campo "+obj.descrip+" tiene un formato de fecha No Valida");
		//obj.referencia.focus ( );
		return false;
	}
	return true;
}

/////////////////////////////////////////////////////////
//FUNCION A LA QUE SE LLAMA CUANDO ENVIAMOS EL FORMULARIO
/////////////////////////////////////////////////////////
function validarCampos (  ){
	for ( var i = 0; i < campos.length; i++){
		var obj = campos [i];
		if ( obj.obligatorio == "S" ){
			if ( ! validaObligatorio ( obj.referencia ) ){
				alert ( " El Campo "+obj.descrip+" es obligatorio" )
				obj.referencia.focus ( );
				return false;
			}
		}
		if ( obj.tipo == "TN" ){
			if ( ! validaNumerico ( obj ) ){
				return false;
			}
		}
		if ( obj.tipo == "TR" ){
			if ( ! validaReal ( obj ) ){
				return false;
			}
		}
		if ( obj.tipo == "TF" ){
			if ( ! validaFecha ( obj ) ){
				return false;
			}
		}
		if ( obj.tipo == "TD" ){
			if ( ! validaDatos ( obj ) ){
				return false;
			}
		}
		
	}

	return true;
}

function esFechaMayor( pDia, pMes, pAnio, sDia, sMes, sAnio )
{
	var prim;
	var seg;
	
	prim = pAnio.value+""+pMes.value+""+pDia.value;
	seg =  sAnio.value+""+sMes.value+""+sDia.value;
	
	return ( prim < seg );
}


// Decimales: true / false
function formatea( Obj, dec )
{
	var decimales;
	var pospunto;

	//if (dec=="") dec = (moneda=="E");

	Obj.value = Obj.value.replace(',','.');
	pospunto = Obj.value.indexOf('.');
	decimales = Obj.value.substring( pospunto+1, Obj.value.length);

	if (dec)
	{
		if (pospunto>0)
		{
			if (decimales>0)
			{
				if (Obj.value.charAt( pospunto+3 ) >'4') Obj.value = (Obj.value*1) + 0.01;
				Obj.value = Obj.value.substring( 0, pospunto+3 );
			}
			else
				Obj.value = Obj.value.substring( 0, pospunto);
		}	
	}
	else
	{
		if (pospunto>0)
			Obj.value = Obj.value.substring( 0, pospunto );	
	}
}

function isEmail (s)
{
    var sLength = s.length;

	var pos_at = s.indexOf("@");
	if (( pos_at > 0) && (s.lastIndexOf("@") == pos_at))
	{
		var pos_pt = s.lastIndexOf(".");
		if ((pos_pt > (pos_at+1)) && (pos_pt < sLength-1))
			return true;
		else
			return false;
	}
	else
		return false;
}

