		var timerId, timeout;
		var bIsKO = false;

		function initilizePort(isKO) {
			try {							
				if (isKO=='true') bIsKO = true;
				//Modalbox.show('<div>Cargando su perfil...</div>', {title: 'Espere unos segundos...', overlayClose: false, height: 200,inactiveFade:false }); 
				
				//Modalbox.deactivate();
				if(CojerCookie('PORT') != null) {  
					var ckPort;
					ckPort = CojerCookie('PORT');
					//alert(ckPort);
					loadScript("http://localhost:"+ckPort+"/planetasaber",ckPort);
					loadScript("http://127.0.0.1:"+ckPort+"/planetasaber",ckPort);
					
				}else{				
					getServerPort();
				}
				timeout = 5;
				timerId = null;				
				loadWait();
				
				
				
//Effect.Fade('notification',{duration: 0.25, queue: 'end'});								
			}
			catch (e) { alert("Dynamic Javascript load failed. Error name: " + e.name + ". Error message: " + e.message);}
		}
	
		function loadScript(url,id) {
			if ( !(document.createElement) ) {			
				alert( 'El navegador no soporta carga dinámica de scripts' );
				return;
			}
			//document.getElementById('progress').innerHTML = 'Loading';
			if (!bIsKO){
				var myAjax = new Ajax.Updater('logintop', '/web/incs/login.asp?ld=' + Math.floor(Math.random()*1000), { method: 'get' });
			}
			var jsMyNode = document.createElement('script');
			jsMyNode.type = 'text/javascript';
			jsMyNode.src = url;
			jsMyNode.id = 'jsMyScript' +id;			
			document.body.appendChild(jsMyNode);
			return;
		}
		
		function loadWait() {		
			// Dynamically loaded code is not in our namespace until the entire page is loaded,
			// <body onload="xxx();"> -> xxx() would not see the loaded coded necessarily, so we wait..
			
			if ( !!( timerId ) ) {
			
				if (timeout == 0){//no se ha encontrado el puerto --> timeout
					var myAjax = new Ajax.Updater('logintop', '/web/incs/login.asp', { method: 'get' });
					try	{					
					
					if (bVerAulaSaber=='OK') {
						//alert((typeof(bVerAsignaturas) == "undefined"));						
						var bIsUndefined = (typeof(bVerAsignaturas) == "undefined");
						if (bIsUndefined){
							verfichabyid(idFicha);
						}else{
							if (bVerAsignaturas == 'OK'){
								verAsignaturas(mat, curso)
							}
						}

					}					
					

					}catch(e){} 					
					return;
				}
				if ( !!( this.myObj ) ) {				
					start(); // Ok to launch the actual program
					return;				
				}
				timeout -= 1;
			}
			
			//document.getElementById('progress').innerHTML += '.';
			timerId = setTimeout( "loadWait()", 1000); // You can set this to 100 if you do not print d
			//var myAjax = new Ajax.Updater('logintop', '/web/incs/login.asp', { method: 'get' });
			
			
			return;
		}

		function start(){		
		//alert(port);
			
			if ( !( this.myObj ) ) {
				alert ( 'Llamada demasido temprana, no existe this.myObj!' );
				return;
			}
			
			var url = '/web/incs/validate_user.asp'				
			var randomnumber=Math.floor(Math.random()*1000);
			//alert(url);
												

			var pars = 'random='+randomnumber+'&msg='+urlencode(msg);

			var myAjax = new Ajax.Request(url, 
			{
					method: 'get', 
					parameters: pars, 
					onSuccess: Respuesta,                      
					onException: function(request, exception){ alert(exception.message)}
			});


			return;
		}
		
		
	function urlencode(str) {
	str = escape(str);
	str = str.replace('+', '%2B');
	str = str.replace('%20', '+');
	str = str.replace('*', '%2A');
	str = str.replace('/', '%2F');
	str = str.replace('@', '%40');
	return str;
	}


    function Respuesta (transport)
    {           
        if (transport.responseText!=''){                     
				//Effect.Fade('notification',{duration: 0.25, queue: 'end'});	
				//Modalbox.hide();
				if (transport.responseText!='OK')
					alert(transport.responseText.replace(/\\n/g,'\n'));
					//alert(transport.responseText);
				//window.location.replace(document.location.href);
				IntroducirCookie(port);
				var myAjax = new Ajax.Updater('logintop', '/web/incs/login.asp?st=1&ch=' + Math.floor(Math.random()*1000), { method: 'get',evalScripts: 'true' });
								
				try	{
					
					if (bVerAulaSaber=='OK') {
						//alert((typeof(bVerAsignaturas) == "undefined"));						
						var bIsUndefined = (typeof(bVerAsignaturas) == "undefined");
						if (bIsUndefined){
							var myAjax = new Ajax.Updater('idencrypt', '/web/incs/getIdEncrypt.asp', { method: 'get',onComplete : function(transport) {/*alert(document.getElementById("idencrypt").innerText);*/verfichabyid(idFicha);}  });							
						}else{
							if (bVerAsignaturas == 'OK'){							
							var myAjax = new Ajax.Updater('idencrypt', '/web/incs/getIdEncrypt.asp', { method: 'get',onComplete : function(transport) {verAsignaturas(mat, curso);}  });
							}
						}						
					}
					
				}catch(e){
					var myAjax = new Ajax.Updater('idencrypt', '/web/incs/getIdEncrypt.asp', { method: 'get' });
				} 
				
				
				//var myAjax = new Ajax.Request('/web/incs/getIdEncrypt.asp', {method: 'get'});
				
				//$('idencrypt').update('<p>Kiwi, banana <em>and</em> apple.</p>');
				//$('idencrypt').innerHTML;

				//var myAjax = new Ajax.Updater('DivContenedor', '/default.asp', { method: 'get', evalScripts: true  });								
				var sUrlGo = "";				
				sUrlGo = querySt("urlgo");
				
				if (sUrlGo!=undefined){				
					redirecturl();
					//alert(sUrlGo);
				}else{									
					if (document.location.href.indexOf("stop.asp")>0){
						//alert(document.getElementById('logurl').value);
						redirecturl();
					}
				
				}
				

        } 

    }

function querySt(ji) {	
	hu = window.location.search.substring(1);
	gy = hu.split("&");
	for (i=0;i<gy.length;i++) {
		ft = gy[i].split("=");
		if (ft[0] == ji) {
			return ft[1];
		}
	}
}     		
	
	function getServerPort()
	{
		var i;
		//loadScript("http://localhost:22219/planetasaber",22219);
		
		for (i=22217;i<=22227;i++) {		
			loadScript("http://localhost:"+i+"/planetasaber",i);
			loadScript("http://127.0.0.1:"+i+"/planetasaber",i);
		} 

	}
//gestion cookies
 function IntroducirCookie(nombre) {  

     var _31dias = Caduca(31)                
     if (nombre != "")   
         GuardarCookie('PORT', nombre, _31dias)  
 }

 function GuardarCookie (nombre, valor, caducidad) {  
     if(!caducidad)  
         caducidad = Caduca(0)  
   
     //crea la cookie: incluye el nombre, la caducidad y la ruta donde esta guardada  
     //cada valor esta separado por ; y un espacio  
     document.cookie = nombre + "=" + escape(valor) + "; expires=" + caducidad + "; path=/"  
 }  
 function Caduca(dias) {  
     var hoy = new Date()                    //coge la fecha actual  
     var msEnXDias = eval(dias) * 24 * 60 * 60 * 1000    //pasa los dias a mseg.  
   
     hoy.setTime(hoy.getTime() + msEnXDias)          //fecha de caducidad: actual + caducidad  
     return (hoy.toGMTString())  
 } 
 
 function CojerCookie(nombre) {  
 
     var galleta = document.cookie  

     var arg = nombre + "="  
         var alen = arg.length           //longitud del nombre del valor  
     var glen = galleta.length       //longitud de la cookie  
   
     var i = 0  
     while (i < glen) {  
         var j = i + alen            //posiciona j al final del nombre del valor  
         if (galleta.substring(i, j) == arg) //si en la cookie estamo ya en nombre del valor       
             return CojerValorCookie(j)  //devuleve el valor, que esta a partir de j  
   
         i = galleta.indexOf(" ", i) + 1     //pasa al siguiente  
         if (i == 0)  
             break               //fin de la cookie  
     }  
     return null                 //no se encuentra el nombre del valor  
 }  
 function CojerValorCookie(indice) {  
     //indice indica el comienzo del valor  
     var galleta = document.cookie  
     //busca el final del valor, dado por ;, a partir de indice  
     var finDeCadena = galleta.indexOf(";", indice)  
     //si no existe el ;, el final del valor lo marca la longitud total de la cookie  
     if (finDeCadena == -1)  
         finDeCadena = galleta.length  
   
     return unescape(galleta.substring(indice, finDeCadena))  
 }
function BorrarCookie(nombre) {
//para borrar la cookie, se le pone una fecha del pasado mediante Caduca(-1)
document.cookie = nombre + "=; expires=" + Caduca(-1) + "; path=/"
}   

