
// Funciones de control de BD para cliente
	 DEBUG=0;
	 appwin= null;
	
// Esta funcion solo va en Netscape
/*
function fetchWebpage(url) {
    //java.lang.System.out.println( "url:" + url );
    //netscape.security.PrivilegeManager.enablePrivilege("UniversalConnect");
    var dest = new java.net.URL(url);
    var dis = new java.io.DataInputStream(dest.openStream());
    var xpage = new String();
    i=0;
	while ((line = dis.readLine()) != null) {
    		  xpage  = xpage + line + "\n";
			alert(i++ + ". "+line+" /"+line.length());
    }
    dis.close();
         return xpage.substring(1)+".old";

}
*/ 


// Esta version de la funcion va en ambos navegadores y utiliza 
// el applet fwp
function fetchWebpage(url) {

	return(""+window.document.applets["fwp"].fetchWebPage(url));
}

//-----------------------------------
// Obtiene el nombre y puerto del servidor actual
function GetServer() {

	ret =  document.location.host;

/*
	if ( navigator.appName.indexOf('Netscape')!=-1 ) {
		var s = document.domain.split('/',3);
		var ret = s;
	}
	else {
		var s = document.URL.split('/',3);
		var ret = s[2];
	}
*/	
	return ret;
	
}

//****************************************
// Funcion para debuguear

function debugalert(str) {

	var fun= new Array(2);
	fun = debugalert.caller.toString();
	fun = fun.split("{",1);
	if (DEBUG) alert(fun + "\n" + str);
}



//****************************************


//-----------------------------------
function getCookieVal (offset,docum) {
  var endstr = docum.cookie.indexOf (";", offset);
  if (endstr == -1)
    endstr = docum.cookie.length;
  return unescape(docum.cookie.substring(offset, endstr));
}


//-----------------------------------
function GetCookie (name, doc) {

  if (typeof doc=='undefined') var docum=window.document;
  	else var docum=doc;

  var arg = name + "=";
  var alen = arg.length;
  var clen = docum.cookie.length;
  var i = 0;
 
 
 while (i < clen) {
    var j = i + alen;
	   if (docum.cookie.substring(i, j) == arg)
     return getCookieVal (j,docum);
    i = docum.cookie.indexOf(" ", i) + 1;
    if (i == 0) break; 
  }
  return null;
}


//-----------------------------------
function SetCookie (nombre,value,expires,path,domain,secure){
	var exp1=new Date();
	document.cookie = nombre + "=" + escape (value) +((expires) ? "; expires=" + exp1.getTime() : "") +
	((path) ? "; path=" + path : "") +((domain) ? "; domain=" + domain : "") +    ((secure) ? "; secure" : "");
}

//-----------------------------------
function appalert(mode, str) {

	var left=parseInt(self.screenX) + parseInt(self.outerWidth/2);
	var top=parseInt(self.screenY) + parseInt(self.outerHeight/2);
	
	if (typeof(appwin)!='undefined' && appwin!=null && !appwin.closed) appwin.close();
	
	// lanza un titulo según el tipo de aviso
	switch( mode ) {
		case 'oraerr':
			appwin=window.open("/formacion/blanco.html","error", "left=" + parseInt(left-150) + ",top=" + parseInt(top-75) +  ",width=500,height=300,dependent=no,resizable=yes");
			appwin.document.open();
			appwin.document.write("<h2><font color=red><center>Error de base de datos</center></font></h2>" + str );
		break;
		
		case 'KO':
			appwin=window.open("/formacion/blanco.html","error", "left=" + parseInt(left-150) + ",top=" + parseInt(top-75) + ",width=300,height=150,dependent=no,resizable=yes");
			appwin.document.open();
 			appwin.document.write("<h2><font color=red><center>Error</font></h2>" + getMsg(str) );
		break;

		case 'reseval':
  			var resul=str.split(':');
   			var msg= '<br><b>En su evaluación ha conseguido <font size=+1 color=' + (resul[1]>=10? 'green' : 'red') +  
					 '>' + parseInt(resul[1]) + (resul[1]==1?' respuesta':' respuestas') +
   			 		 ' </font>correctas.</b><br> Este es su intento número ' + parseInt(resul[2])  + ' en esta evaluación.'+
   					 ' <p>Recuerde que lo puede seguir intentando tantas veces como desee.';
					 
			 		 //'<br><br>Con hoy lleva '+ resul[0] + (resul[0]==1?' día':' días') + ' de curso.';
					 
			appwin=window.open("/formacion/blanco.html","alert", "left=" + parseInt(left-200) + ",top=" + parseInt(top-125) +  ",width=400,height=250");
			appwin.document.open('text/html');
			appwin.document.write('<FONT FACE="arial,helvetica" SIZE=+2 COLOR="#990000">Resultado de la evaluación</FONT><BR>' + msg);
		break;

		case 'reseval2':
  			var resul=str.split(':');
   			var msg= '<br><b>En su evaluación ha conseguido <font size=+1 color=' + (resul[1]>=5? 'green' : 'red') +  
					 '>' + parseInt(resul[1]) + (resul[1]==1?' respuesta':' respuestas') +
   			 		 ' </font>correctas.</b><br> Este es su intento número ' + parseInt(resul[2])  + ' en esta evaluación.'+
   					 ' <p>Recuerde que lo puede seguir intentando tantas veces como desee.';
					 
			 		 //'<br><br>Con hoy lleva '+ resul[0] + (resul[0]==1?' día':' días') + ' de curso.';
					 
			appwin=window.open("/formacion/blanco.html","alert", "left=" + parseInt(left-200) + ",top=" + parseInt(top-125) +  ",width=400,height=250");
			appwin.document.open('text/html');
			appwin.document.write('<FONT FACE="arial,helvetica" SIZE=+2 COLOR="#990000">Resultado de la evaluación</FONT><BR>' + msg);
		break;

		case 'logrep':
			appwin=window.open("/formacion/blanco.html","alert",  "left=" + parseInt(left-200) + ",top=" + parseInt(top-125) +  ",width=400,height=250");
			appwin.document.open('text/html');
			appwin.document.write("<body bgcolor=#F8F8FF><h2><font color=red ><center>Atención<br>Identificativo repetido</font></h2></body>" );
			appwin.document.write("Puede optar por estas otras posibilidades: <br>" + str );
		break;
	}
	
			appwin.document.write('<center><FORM><INPUT TYPE=BUTTON NAME=bEval VALUE="Cerrar" onClick="javascript:window.close();"></FORM>');

	appwin.document.close();





}

//-----------------------------------
function isOK(result, mode){ 

	if ( result.substring(0,2)=='KO' && mode!='NOMESSAGE') appalert('KO', result );
	if ( result.indexOf("[SERVERERROR]")!=-1 ) {appalert('oraerr',result); return 1==0; }
	
	return result.substring(0,2)!='KO';
}

//-----------------------------------
function getMsg(result) { return result.substring(3); }


//-----------------------------------

function SelAlumnos(buildwhere)	{
	
	var tipo=GetCookie('TIPO');
	var login=GetCookie('LOGIN');
	var pass=GetCookie('PASS');
	
	if (tipo==null) return(isOK('KO=Falta identificacion'));
	
	if (buildwhere=='') buildwhere='1=1';
	
	var ret=fetchWebpage( "http://" + GetServer() + "/dbman_sv/dispatch.html?tipo="+tipo+"&login="+login+"&pass="+pass+
							"&mode=selalumnos&buildwhere="+escape(buildwhere));


	debugalert(ret);

	if (isOK(ret)) {
		eval (ret);
		ret='OK';
		}
	
	return(ret);

}




//-----------------------------------

function SelCurso(codcur)	{
	
	var tipo=GetCookie('TIPO');
	var login=GetCookie('LOGIN');
	var pass=GetCookie('PASS');
	
	if (tipo==null) return(isOK('KO=Falta identificacion'));
	
	if (codcur=='' || typeof(codcur)=='undefined' ) codcur='0';
	
	var ret=fetchWebpage( "http://" + GetServer() + "/dbman_sv/dispatch.html?tipo="+tipo+"&login="+login+"&pass="+pass+
							"&mode=selcurso&codcur=" + codcur);

	if (ret.substr(0,2)!='KO') {
		eval (ret);
		ret='OK';
		}
	
	return(ret);

}



//-----------------------------------

function InsAlumnos(alum){
	

	var ret=fetchWebpage("http://" + GetServer() + "/dbman_sv/dispatch.html?mode=insalumnos&"+
		"codalum="+alum.codalum+"&"+
		"email="+ escape(alum.email) +"&"+
		"nombre=" + escape(alum.nombre)+"&"+
		"apellidos="+ escape(alum.apellidos) +"&"+
		"direccion="+ escape(alum.direccion) +"&"+
		"cp="+alum.cp+"&"+
		"ciudad="+ escape(alum.ciudad) +"&"+
		"provincia="+ escape(alum.provincia ) +"&"+
		"pais="+ escape(alum.pais) +"&"+
		"telefono="+ escape(alum.telefono) +"&"+
		"observ="+ escape(alum.observ) );
	

	return(ret);

}


//-----------------------------------

function InsMatriculas(alum, matr){
	

	var ret=fetchWebpage("http://" + GetServer() + "/dbman_sv/dispatch.html?mode=insmatriculas&"+
		"codmat="+matr.codmat+"&"+
		"codalum="+matr.codalum+"&"+
		"login="+matr.login+"&"+
		"codcur="+matr.codcur+"&"+
		"metpago="+matr.metpago+"&"+
		"email="+ escape(alum.email) );			// este ultimo dato hay que inlcuirlo para poder enviar el mail al alumno
	

	return(ret);

}




//-----------------------------------
/*** OBSOLETO

function NuevaAlta(alta) {

	
  //Mensaje de espera --->
	var left=parseInt(self.screenX + self.outerWidth/2);  
	var top=parseInt(self.screenY + self.outerHeight/2);  
	
	// abre el mensaje de espera										
	var	win=window.open("","alert", "left=" + parseInt(left-160) + ",top=" + parseInt(top-65) + ",width=320,height=130");
		win.document.open();
		win.document.write('<HTML>\n<HEAD>\n<TITLE>Conectando...</TITLE>\n\n</HEAD>\n\n<BODY>\n<TABLE WIDTH=300 border=2 BGCOLOR="#FFC000"><tr><td ALIGN=center> <font size=3><br> <b>Conectando con la Base de Datos</font>\n<br><img src="/formacion/banners/Spin2.gif" ><br>Un momento por favor...\n</td></TR></TABLE>\n\n</BODY>\n\n\n\n</HTML>\n\n');
		win.document.close();
	
	win.focus();
	


	// Comprueba el login
	var ret=fetchWebpage("http://" + GetServer() + "/dbman_sv/dispatch.html?mode=checklogin&"+
		"login="+alta.login);

	if ( ret.indexOf('Login repetido')!=-1 ) {			//aqui no se puede poner isOK porque no
														//interesa que salga el ERROR
			win.close();
			appalert ('logrep',LoginHints(alta));
			return ( getMsg(ret) );
	}

	// El login no se repite. Se intenta insertar datos del alumno
	var alum={
			codalum:'',
			email:alta.email,
			nombre:alta.nombre,
			apellidos:alta.apellidos,
			direccion:alta.direccion,
			cp:alta.cp,
			ciudad:alta.ciudad,
			provincia:alta.provincia,
			pais:alta.pais,
			telefono:alta.telefono,
			observ:alta.observ};
	
	ret=InsAlumnos(alum);
	

	if (!isOK(ret)) {
		win.close();
		return (getMsg(ret));
	}


	// Los datos del alumno se insertaron. Se insertan los de Matricula
	var codigo=parseInt(ret.substring(3));
	
	

	var matr={
			codmat:'',
			codalum:codigo,
			login:alta.login,
			codcur:alta.codcur,
			metpago:alta.metpago};
			
	ret=InsMatriculas(alum, matr);
	
	if (!isOK(ret)) {
		win.close();
		return (getMsg(ret));
	}

	
	win.close();

	if (alta.metpago==1) {
		// si todo fue bien salta a pagar
		window.status="Conectando con Banesto ...";
		var s=ret.substring(3).split(':');
		window.top.location.href="http://" + GetServer() + s[3].substring(0,s[3].length-1) +"&mode=" + alta.nombre;
	}
	
	if (alta.metpago==2) {
		//Llama al mensaje de pago por fax
		window.top.location.href="http://" + GetServer() + "/dbman_sv/vuelta_sv.html?mode=fax&referencia=" + escape(alta.login) + "&email=" + escape(alta.email);
		
	}
	

	if (alta.metpago==10) {
		//Llama al mensaje de pago por fax
		window.top.location.href="http://" + GetServer() + "/dbman_sv/vuelta_sv.html?mode=transbanc&referencia=" + escape(alta.login) + "&email=" + escape(alta.email);
		
	}

	return (ret);

}


**/


//************************************************************************************************
//-----------------------------------

function NuevaAlta(alta,waitmsg,waittarget) {

	
var win = null;

	if ( typeof waitmsg=='undefined' || waitmsg=='')
		waitmsg= '<HTML>\n<HEAD>\n<TITLE>Conectando...</TITLE>\n\n</HEAD>\n\n<BODY>\n<TABLE WIDTH=300 border=2 BGCOLOR="#FFC000"><tr><td ALIGN=center> <font size=3><br> <b>Conectando con la Base de Datos</font>\n<br><img src="/formacion/banners/Spin2.gif" ><br>Un momento por favor...\n</td></TR></TABLE>\n\n</BODY>\n\n\n\n</HTML>\n\n';
	if ( typeof waittarget=='undefined' )
		waittarget='_new';
	
  //Mensaje de espera --->
	var left=parseInt(self.screenX + self.outerWidth/2);  
	var top=parseInt(self.screenY + self.outerHeight/2);  
	
	// abre el mensaje de espera										
	switch (waittarget)
	{
	
		 //se abre en una nueva ventana
		 case '_new'  :
			win=window.open("","alert", "left=" + parseInt(left-160) + ",top=" + parseInt(top-65) + ",width=320,height=130");
			win.document.open();
			win.document.write(waitmsg);
			win.document.close();
			win.focus();
			break;
			
		 //no hay mensaje 
		 case '_nomessage'  :
			break;
			
			
		 //se abre en un layer que tiene ese nombre en la ventana actual
		 default :
			CBM_setLabel(waittarget,waitmsg,0,0);
			CBM_showLabel(waittarget);
			break;
	
	
	
	}
	
	
	


	// Comprueba el login
	var ret=fetchWebpage("http://" + GetServer() + "/dbman_sv/dispatch.html?mode=checklogin&"+
		"login="+alta.login);

	if ( ret.indexOf('Login repetido')!=-1 ) {			//aqui no se puede poner isOK porque no
														//interesa que salga el ERROR
			if (win!=null ) win.close();
			appalert ('logrep',LoginHints(alta));
			return ( getMsg(ret) );
	}

	// El login no se repite. Se intenta insertar datos del alumno


	window.location = ("http://" + GetServer() + "/matmach/matriculaform.html?"+
		"nombre="  +  escape(alta.nombre) + "&" + 
		"apellidos=" +  escape(alta.apellidos)  + "&" + 
		"direccion=" +  escape(alta.direccion)  + "&" + 
		"email=" +  escape(alta.email)  + "&" + 
		"cp=" + alta.cp + "&" + 
		"ciudad=" +  escape(alta.ciudad)  + "&" + 
		"provincia=" +  escape(alta.provincia )  + "&" + 
		"pais=" +  escape(alta.pais)  + "&" + 
		"telefono=" +  escape(alta.telefono)  + "&" + 
		"observ=" +  escape(alta.observ)  + "&" + 
		"login=" + alta.login + "&" + 
		"codcur=" + alta.codcur + "&" + 
		"metpago=" + alta.metpago + "&" + 
		"statpago=1"  + "&" + 
		"urlback=web_back.html"  + "&" + 
		"acceso=" + escape(GetCookie('AF_REG')) +"&" + 
		"codlortad=" + alta.codlortad + "");			

	if (win!=null ) win.close();


	if (!isOK(ret)) 
		return (getMsg(ret));
	




	return (ret);

}



//******************************************************************************************



















//-----------------------------------

function LoginHints(alta) {

	// Genera las sugerencias 

	// consonante+vocal+con+snumero+vocal+cons+vocal+numero
	var cons="bcdfghjklmnpqrstvwxyz";
	var voc="aeiou";
	var num="123456789";
	var h1="";

	h1+= cons.charAt(Math.random()*cons.length) + voc.charAt(Math.random()*voc.length) + cons.charAt(Math.random()*cons.length) + num.charAt(Math.random()*num.length);
	h1+= voc.charAt(Math.random()*voc.length) + cons.charAt(Math.random()*cons.length) + voc.charAt(Math.random()*voc.length) + num.charAt(Math.random()*num.length)

	//nombre+letras hasta 6+numero+numero
	var h2=alta.nombre.substring(0,6)
	for (var i=0; i<8-h2.length; i++)
		h2+=cons.charAt(Math.random()*cons.length);
		h2+=String(Math.random()).substring(5,7);

	//mail+numeros hasta 10
	var min=Math.min(alta.email.indexOf("@"),alta.email.indexOf("."));
		min=(min==-1)?10:min;
	var h3=alta.email.substring(0,min);
	if (h3.length>10) h3=h3.substring(0,10);
	for (var i=0; i<10-h3.length; i++)
		h3+=String(Math.random()).substring(5,6);

	// Quita acentos 
	var st="á|à|ä|âè|é|ë|êì|í|ï|îó|ò|ö|ôú|ù|ü|û";
	var rp="aeiou";
	
	var re;
	for (i=0; i<st.length; i+=7) {
		re=new RegExp(st.substring(i,i+7),"g");
		h2=h2.replace( re , rp[i/7]);
		}
	return (h1.toLowerCase() + "<br>" + h2.toLowerCase() + "<br>" + h3.toLowerCase());
}







//-----------------------------------

function PutEval(codmat, dato) {

	var tipo=GetCookie('TIPO');
	var login=GetCookie('LOGIN');
	var pass=GetCookie('PASS');
	
	     
	
	if (tipo==null) return(isOK('KO=Falta identificacion'));

	var ret=fetchWebpage ("http://" + GetServer() + "/dbman_sv/dispatch.html?tipo="+tipo+"&login="+login+"&pass="+pass+
								"&mode=puteval&codmat=" + codmat + "&ntema="+dato.ntema+"&ans="+dato.ans);

	return ret;
}


//-----------------------------------

function GetEval(codmat) {


	var tipo=GetCookie('TIPO');
	var login=GetCookie('LOGIN');
	var pass=GetCookie('PASS');
	
	
	
	if (tipo==null) return(isOK('KO=Falta identificacion'));
	
	var ret=fetchWebpage ("http://" + GetServer() + "/dbman_sv/dispatch.html?tipo="+tipo+"&login="+login+"&pass="+pass+
							"&mode=geteval&codmat="+codmat);
	
	if (isOK(ret)) {
		eval (ret);
		ret='OK';
		}
	
	return(ret);
}



//-----------------------------------

function PutEjer(codmat, dato) {

	var tipo=GetCookie('TIPO');
	var login=GetCookie('LOGIN');
	var pass=GetCookie('PASS');
	
	     
	
	if (tipo==null) return(isOK('KO=Falta identificacion'));

	var ret=fetchWebpage ("http://" + GetServer() + "/dbman_sv/dispatch.html?tipo="+tipo+"&login="+login+"&pass="+pass+
								"&mode=putejer&codmat="+codmat+"&ans="+dato.ans);

	return ret;
}


//-----------------------------------

function GetEjer(codmat) {


	var tipo=GetCookie('TIPO');
	var login=GetCookie('LOGIN');
	var pass=GetCookie('PASS');
	
	
	
	if (tipo==null) return(isOK('KO=Falta identificacion'));
	
	var ret=fetchWebpage ("http://" + GetServer() + "/dbman_sv/dispatch.html?tipo="+tipo+"&login="+login+"&pass="+pass+
							"&mode=getejer&codmat="+codmat);
debugalert (ret);

	if (isOK(ret)) {
		eval (ret);
		ret='OK';
		}
	return(ret);




}



//-----------------------------------

function PutOpcion(codmat, dato) {

	var tipo=GetCookie('TIPO');
	var login=GetCookie('LOGIN');
	var pass=GetCookie('PASS');
	
	     
	
	if (tipo==null) return(isOK('KO=Falta identificacion'));

	var ret=fetchWebpage ("http://" + GetServer() + "/dbman_sv/dispatch.html?tipo="+tipo+"&login="+login+"&pass="+pass+
								"&mode=putopcion&codmat="+codmat+"&ans="+dato.ans);

	return ret;
}


//-----------------------------------

function GetOpcion(codmat) {


	var tipo=GetCookie('TIPO');
	var login=GetCookie('LOGIN');
	var pass=GetCookie('PASS');
	
	
	
	if (tipo==null) return(isOK('KO=Falta identificacion'));
	
	var ret=fetchWebpage ("http://" + GetServer() + "/dbman_sv/dispatch.html?tipo="+tipo+"&login="+login+"&pass="+pass+
							"&mode=getopcion&codmat="+codmat);

	if (isOK(ret)) {
		eval (ret);
		ret='OK';
		}
	return(ret);




}




//-----------------------------------
// Chequea contra la base de datos si el login y password son validos
function CheckSecurity() {


	var tipo=GetCookie('TIPO');
	var login=GetCookie('LOGIN');
	var pass=GetCookie('PASS');
	
	if (tipo==null)  return('KO=Falta identificacion'); 
	
	var ret=fetchWebpage ("http://" + GetServer() + "/dbman_sv/dispatch.html?tipo="+tipo+"&login="+login+"&pass="+pass+
							"&mode=checksecurity");
	
	return(ret);

}




//-----------------------------------
// Realiza el proceso de entrada para cursos simples
//-----------------------------------
function GoIn() {

	
	var tipo=GetCookie('TIPO');
	var login=GetCookie('LOGIN');
	var pass=GetCookie('PASS');
	
	if (tipo==null)  return('KO=Falta identificacion'); 
	var ret=fetchWebpage ("http://" + GetServer() + "/dbman_sv/dispatch.html?tipo="+ escape(tipo) + "&login=" + escape(login) + "&pass=" + escape(pass) + "&mode=goin");




	return (ret);

}






//-----------------------------------
// Realiza procesos de seguimiento cada vez que sale un usuario
function GoOut() {

	
	var tipo=GetCookie('TIPO');
	var login=GetCookie('LOGIN');
	var pass=GetCookie('PASS');
	
	if (tipo==null)  return('KO=Falta identificacion'); 
	
	
	var ret=fetchWebpage ("http://" + GetServer() + "/dbman_sv/dispatch.html?tipo="+tipo+"&login="+login+"&pass="+pass+
							"&mode=goout");

    return (ret);


}


//-----------------------------------

function GetTutorMail() {

/*
	var ret=SelAlumnos('');
	if ( !isOK(ret) ) return ( getMsg(ret) );
	return(alum.tutemail);
*/

	var tutemail=GetCookie('TUTEMAIL');

	if (tutemail==null) tutemail='admincursos@anaya.es';
	
	return (tutemail);


}


//-------------- PARA QUE LANCE LA SESIÓN PRESENCIAL



function lanza_banner()  {

/*
//-------------- Entrada a la sesión presencial
window.open ('/formacion2/presencial', 'AnayaDirecto',    'scrollbars=no,status=yes,width=800,height=600,resizable')


//-------------- Aviso de la sesión presencial
window.open ('../banner.html', 'newWin',    'scrollbars=no,status=yes,width=400,height=400')


*/

} 