// #PRIMERO=1
// #REQUERIDO=1
// #TIPO=DUAL
// #DESC=Script base. Necesario para que funcione todo el tinglado

if (!eval("NEWLIB"))
   {
    var inServer=false;try{var d=window.title}catch(er){inServer=true}
    var DOC=eval((inServer) ? "Response" : "document");

    if (!inServer) {function Session(x) {return ""}}


    var debug=0
    var NEWLIB=1
    
       // Mejoras sobre objetos
    Number.prototype.round=function(d)
	   { 
	     if (!d) var d=2;
	     var m = Math.pow(10,d); 
	     return (Math.round(this * m) / m) ; 
       } 

    String.prototype.Replace=function(que,conque){return this.replace(new RegExp(que,"g"),conque)}
    String.prototype.contiene=function(x){return this.toLowerCase().indexOf((""+x).toLowerCase())>=0}
    String.prototype.ltrim =  function() {return this.replace(/^\s+/,'');};
    String.prototype.rtrim =  function() {return this.replace(/\s+/,'');};
    String.prototype.trim  =  function() {return this.replace(/^\s+/,'').replace(/\s+$/,'');};
    String.prototype.mid   =  function (start, len)
        {
                var iLen = this.length;
                if (!start) start=0;
                if (!len) len=iLen-start;
                if (start < 0 || len < 0 ) return "";
                if (start == 0 && len >= iLen ) return this;
                var iEnd;
                if (start + len > iLen)
                        iEnd = iLen;
                else
                        iEnd = start + len;
                return this.substring(start,iEnd);
        }

    // Funciones

    function quitaUndef(x)
	  {
	  if (!x) return "";
	  if (x==undefined) return "";
	  return x;
	  }

    function HOST()  {if (inServer) return String(Request.ServerVariables('HTTP_HOST')); else return eval("location.href");}
    function write(x) {
    	var x=quitaUndef(x)
    	DOC.write(x)
    	}
    function writeln(x){write  (quitaUndef(x) + '\n')}
    function writeIS(x){if (inServer) write  (quitaUndef(x))}
    function writeEval(x){if (inServer) {write(quitaUndef(x));return} eval(quitaUndef(x))}
    function writebr(x){writeln(quitaUndef(x) + '<br>')}
    function writedeb(x){if (debug) writebr(quitaUndef(x))}
    function Def(x)
      {
      	try{r=eval(x) && true}catch(er){r=false}
      	return r
      }
    function props(x){for(var p in eval(x)) writebr(p + "=" + eval("x." + p));}

    if (inServer) // Solo server
       {
         function terminate() {eval("Response.end()")}
         function createObject(x) 
            {
             try {
                  //return new ActiveXObject(x)
                  return Server.createObject(x)
                 }
             catch(er) {writebr("No Puedo cargar " + x);terminate()}     
            }
         function create(x) 
            {
             try {
                  //return new ActiveXObject(x)
                  return Server.createObject(x)
                 }
             catch(er) {writebr("No Puedo cargar " + x);terminate()}     
            }
         function readFrom(fichero,doEscape)
            {
             if (String(fichero).contiene("http://"))
                var fContents=readFromURL(fichero)
               else 
                 {
                  var fichero=server.mapPath(fichero);
                  var fContents;var fso = create("Scripting.FileSystemObject");
                  var f = fso.OpenTextFile(fichero, 1); fContents = f.ReadAll();
                  f.Close(); f=null; fso=null;
                 }
             if (doEscape) fContents=escape(fContents);
             return String(fContents);
            }

         function writeTo(fichero,texto)
            {
             var fichero=server.mapPath(fichero);
             var fso = create("Scripting.FileSystemObject");
             var f=fso.CreateTextFile(fichero)
             f.Write(texto)
             f.Close(); 
             f=null; 
             fso=null;
            }

         function readScript(fichero)
            {
             var fichero=Server.mapPath(fichero)
             write('<scri');writeln('pt>');
             writeln(readFrom(fichero));
             write('</scri');writeln('pt>');
            }
         
         function move(origen,destino)
            {
             var origen=server.mapPath(origen);
             var destino=server.mapPath(destino);
             var fso = create("Scripting.FileSystemObject");
             try {
             	  if (!fso.FileExists(origen)) return;
             	  if (fso.FileExists(destino)) fso.DeleteFile(destino);
             	 } catch(er) {}
             var f=fso.GetFile(origen)
             f.move (destino)
             f=null; 
             fso=null;
            }

         function kill(origen)
            {
             var origen=server.mapPath(origen);
             var fso = create("Scripting.FileSystemObject");
             try {
             	  if (fso.FileExists(origen)) fso.DeleteFile(origen);
             	 } catch(er) {}
             fso=null;
            }

         function existe(origen)
            {
             var origen=server.mapPath(origen);
             var fso = create("Scripting.FileSystemObject");
             try {
             	  return fso.FileExists(origen)
             	 } catch(er) {}
            }
		function gifOjpg(lnk)
		   { 
		   	if (existe(lnk + '.jpg')) return lnk + '.jpg';
		   	if (existe(lnk + '.gif')) return lnk + '.gif';
		    return ''
		  }
		  
		function alert(txt)
		   {
		   	write('<scri');write('pt>');
		   	write('alert("');
		   	write(String(txt).Replace('"','\\"'));
		   	write('")');
		   	write('</scri');write('pt>');
		   }
       }  
       else
       {

       }	
       
       
    // Funciones generales
         function loadModule(xURL)
            {
            var x=String(xURL).toLowerCase()
            var externo=(x.substring(0,7)=="http://")
            if (externo) 
               {
               	 externo=(x.substring(0,servidor.length)!=servidor)
               	 if (!externo) xURL=String(xURL).mid(servidor.length);
               }
               else if (x.substring(0,1)!="/") xURL="/" + xURL
            
            if (externo) write(readFromURL(xURL));
            else 
              {
               //trabajo duro
               // ahora tengo q convertir el querystring en session
               var u=xURL.split("?")
               var a=0
               if (u.length>1)
                  {
                  xURL=u[0];
                  u=u[1].split("&")
                  for(a=0;a<u.length;a++) 
                     {
                  	  var itm=u[a].split("=")
                  	  try {
                  	       writedeb("Session('" + itm[0] + "')='" + escape(itm[1]) + "'")
                  	       set_session(itm[0],escape(itm[1]))
                  	       writedeb("...OK")
                  	      } catch (er) {write("Fallo al asignar session")}
                  	 }
                  }
               try {
                   Server.execute (xURL);
                   }
               catch(er) {writebr("No puedo cargar el Modulo: " + xURL);terminate()}    
               
               
              } 
			
            }
         
         
         function readFromURL(xURL)
            {    
			var xmlhttp
			  try {xmlhttp=create("Msxml2.XMLHTTP")} 
			  catch (e) {
  				try {xmlhttp=create("Microsoft.XMLHTTP")}
  				catch (E) {xmlhttp=false}
              }
			if (!xmlhttp) try { xmlhttp = new XMLHttpRequest();} catch (e) {xmlhttp=false}
            if (!xmlhttp) return "";
            try {
                xmlhttp.open("GET",xURL,false);
                xmlhttp.setRequestHeader("Content-Type", "text/xml")
                xmlhttp.send()
                return String(xmlhttp.responseText)
            	} catch(er) {return "No puedo cargar: " + xURL}
        }

    function strFlash(nombre,fichero,ancho,alto,scripting)
       {
         var st
         st = "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0' width='"
         st+= ancho + "' height='" + alto + "' id='" + nombre + "' nombre='" + nombre + "'>" 
         st+="<param name=movie value='" + fichero + "'><param name=quality value=high><param name=wmode value=transparent><param name='scale' value='noscale'><embed src='" + fichero + "' quality=high pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash' type='application/x-shockwave-flash' width='" + ancho + "' height='" + alto + "' name='" + nombre + "' scale='noscale'>" 
         st+="</embed></object>"
         return st
       }

    function IIF(condicion,valortrue,valorfalse) {return condicion ? valortrue : valorfalse;}
    function plantilla(valores)
    	{
		var argv=arguments;
		var argc=argv.length;
		if (argc==0) return "";
		if (argc==1) return valores;
		var a=0;
		var destino=String(argv[0])
		for (a=1;a<argc;a++)
			{
			 var p=(argc-a)
			 destino=destino.Replace("%" + p,argv[p]);
			}
    	return destino;
    	}
    function Cbool2(variable){if (!variable) return false; return true;}
    function loadFlash(nombre,fichero,ancho,alto,scripting) {write (strFlash(nombre, fichero, ancho, alto, scripting))}
	function preload()
		{
		var argv=arguments;
		var argc=argv.length;
		var img=new Image();
		for(a=0;a<argc;a++) img.src=argv[a];
		}



    // variables generales
    var servidor=HOST()
        if (servidor.contiene("http://")) servidor=servidor.mid(7);
        if (servidor.indexOf('/')>0) servidor=servidor.mid(0,servidor.indexOf('/'));
        servidor=  "http://" + servidor.toLowerCase();

    var agent=''
        if (inServer) agent=String(Request.ServerVariables("HTTP_USER_AGENT")); 
        else agent=String(eval("navigator.userAgent"));
    
    if (inServer) var estaPagina= Request.ServerVariables("script_name");
    else 
    {
    estaPagina= eval('location.href')
    estaPagina=estaPagina.mid(servidor.length);
    if (estaPagina.contiene("?")) estaPagina=estaPagina.split("?")[0];
    }
    
    writedeb("Cargando NewLib versión " + (inServer ? 'Server' : 'Client') )
   } else writedeb("Ya cargada NewLib versión " + (inServer ? 'Server' : 'Client') )
