//---------------------------------------- // hs_lib.js // Actualizado: 24/ago/2005 10:41:01 //---------------------------------------- // IMPRIMIR() = boolean // SALTAR(url[txt],nombre[txt],ancho[num],alto[num],x[num],y[num],scroll[boolean]) = boolean // CERRARVENTANA(nombre[txt]) = void() // ABRIRVENTANA_R(url[txt],nombre[txt],x[num],y[num],ancho[num],alto[num],scroll[bool]) = boolean // SALTAR_R(url[txt],nombre[txt]) = boolean // CORREO(cuenta[txt],host[txt],asunto[txt],cuerpo[txt]) = boolean // VISOR(fichero[txt],posición[num],contratar[bool]) = void() // CONTRATAR(fichero[txt],parametros_get[txt]) = void() // FECHAHORA() = Array // ESTALIBRE(dominio[txt]) = boolean // VALIDADOMINIO(dominio[txt],compext[bool]) = boolean // VALIDACUENTACORRIENTE(entidad[num],sucursal[num],control[num],numero[num]) = boolean // VALIDATARJETACREDITO(4digitos[num],4digitos[num],4digitos[num],4digitos[num]) = boolean // VALIDANIF(nif[txt],forma[num]) = nif ó errnum. // VALIDACODIGOPOSTAL(cp[num]) = boolean // VALIDAEMAIL(email[txt]) = boolean // DELAY(milisegs[num]) = void // VIBRACION(amplitud[num]) = void // MUESTRAVAR(variable[var],mayúsculas[bool]) = void // SHOWHIDEBLOCK(id_bloque,id_enlace,txt_mostrar,txt_ocultar)SHOWHIDEBLOCK(url) = datos // trim(txt) = string //---------------------------------------- //-------------------------------------------------------------------------------- // Comprueba si está activada la configuración de bloqueo de elementos emergentes // para ello genera una ventana y luego la cierra. // Si se le pasa un objeto ventana comprueba si se ha bloqueado y avisa de ello // // Modos de bloqueo de los navegadores: // NAV_FF ... Bloquea las aperturas automáticas pero no las de click // NAV_IE ... (bloqueo default) Bloquea las aperturas automáticas pero no las de click // NAV_IE ... (super bloqueo) Bloquea las aperturas incluso cuando haces click //-------------------------------------------------------------------------------- function WLOCKED(o_wname){ var o_wname,wtl; wtl=false; if(typeof(o_wname)==ND){ wtl=window.open(LOADING_FILE,"WNA","width=1,height=1,screenX=1,screenY=1,top=1,left=1,status=no,menubar=no,toolbar=no,location=no,resizable=no,scrollbars=no"); } if(wtl==null || o_wname==null){ alert("\r\nAVISO IMPORTANTE:\r\n\r\nSU NAVEGADOR NO PERMITE MOSTRAR LAS VENTANAS\r\n\r\nQUE GENERA ESTA WEB. PERMITA SIEMPRE LOS ELEMENTOS\r\n\r\nEMERGENTES DE ESTE SITIO Y LAS VERÁ CORRECTAMENTE.\r\n\r\nGracias."); return true; } else { if(wtl){wtl.close();} return false; } } //-------------------------------------------------------------------------------- // MONEDA(url,mon) = boolean // - Salta a una Url determinada añadiendo el indicador de moneda. //-------------------------------------------------------------------------------- function MONEDA(url,mon){ var url,mon; if(typeof(url)==ND || typeof(url)==ND) {return false;} self.location.href=url + "?WTS_CURR_CURRENCY=" + mon; } //-------------------------------------------------------------------------------- // IMPRIMIR() = boolean // - Imprime la actual ventana. Retorna false si el explorador no admite la // impresión automática. //-------------------------------------------------------------------------------- function IMPRIMIR(windowobj){ var WebBrowser; if(typeof(windowobj)==ND){windowobj=self;} windowobj.focus(); if(windowobj.print){ windowobj.print(); }else{ if (NAV_IE){ // para los EXPLORER 4. WebBrowser = ''; windowobj.document.body.insertAdjacentHTML('beforeEnd', WebBrowser); windowobj.alert("Prepare la impresora y pulse aceptar para imprimir el documento"); windowobj.document.WebBrowser1.ExecWB(6, 2); windowobj.document.WebBrowser1.outerHTML = ""; } else { windowobj.alert("Deberá imprimir este documento manualmente desde su navegador"); } } } //-------------------------------------------------------------------------------- // SALTAR(url[txt],nombre[txt],ancho[num],alto[num],x[num],y[num],scroll[boolean]) = boolean // - Abre una ventana de dialogo. "url" indica la url de carga. Si se define // "nombre" entonces se abrirá una nueva ventana con este nombre,"ancho", // "alto","x" e "y" serán las dimensiones y la posición. Incluye switch "scroll". //-------------------------------------------------------------------------------- function SALTAR(url,nombre,ancho,alto,x,y,scroll){ var url,nombre,ancho,alto,x,y,scroll,t,w2; if(typeof(nombre)==ND){ self.location.href=url; return true; } else { ancho=typeof(ancho)==ND?500:ancho; alto=typeof(alto)==ND?350:alto; x=typeof(x)==ND?0:x; y=typeof(y)==ND?0:y; scroll=typeof(scroll)==ND?"no":(scroll?"yes":"no"); t='status=no, menubar=no,width='+String(ancho)+',height='+String(alto)+',screenX='+String(x)+',screenY='+String(y)+',top='+String(y)+',left='+String(x)+',toolbar=no,locationbar=no,resizable=yes,scrollbars='+scroll; w2=open(LOADING_FILE,nombre,t); if(WLOCKED(w2)){return;} if(url!="") { if(url.substr(0,7)=="mailto:" || url.substr(0,11)=="javascript:") {return false;} if(url.substr(0,7)=="http://" || url.substr(0,8)=="https://") {w2.location.href=url;} else {w2.location.href=DIR_ROOT+"/"+url;} } w2.focus(); } } //------------------------------------------------------------------------------- // CERRARVENTANA(nombre[txt]) = void // - Provoca el cierre de una ventana de nombre dado. //-------------------------------------------------------------------------------- function CERRARVENTANA(nombre){ var nombre,w2; w2=window.open(LOADING_FILE,nombre,"width=1,height=1,screenX=5000,screenY=5000,top=5000,left=5000,menubar=no,toolbar=no,status=no,locationbar=no,resizable=no,scrollbars=no"); if(WLOCKED(w2)){return false;} w2.close(); } //------------------------------------------------------------------------------- // ABRIRVENTANA_R(url[txt],nombre[txt],x[num],y[num],ancho[num],alto[num],scroll[bool]) = boolean // - Genera la apertura de una ventana o cambio de url de una ya existente con // el mismo nombre asegurando la integridad del referer. //-------------------------------------------------------------------------------- function ABRIRVENTANA_R(url,nombre,x,y,ancho,alto,scroll){ var url,nombre,x,y,ancho,alto,scroll,t,w2; if(typeof(url)==ND) {return;} nombre=typeof(nombre)==ND?"NUEVA_R":nombre; x=typeof(x)==ND?0:x; y=typeof(y)==ND?0:y; ancho=typeof(ancho)==ND?400:ancho; alto=typeof(alto)==ND?300:alto; scroll=typeof(scroll)==ND?"no":(scroll?"yes":"no"); t='width='+String(ancho)+',height='+String(alto)+',screenX='+String(x)+',screenY='+String(y)+',top='+String(y)+',left='+String(x)+',status=no,menubar=no,toolbar=no,locationbar=no,resizable=yes,scrollbars='+scroll; w2=window.open(LOADING_FILE,nombre,t); if(WLOCKED(w2)){return false;} SALTAR_R(url,nombre,w2); w2.focus(); } //------------------------------------------------------------------------------- // SALTAR_R(url[txt],nombre[txt]) = boolean // - Produce un salto de la ventana actual o de la indicada a otra url del // site manteniendo la integridad del referer. //-------------------------------------------------------------------------------- function SALTAR_R(url,nombre){ var url,nombre,myBody,myLink; if(NAV_IE){ if(typeof(url)==ND) {return false;} myBody = document.getElementsByTagName('body').item(0); myLink = document.createElement('a'); myLink.href=url; myLink.id="enlace"; if(typeof(nombre)!=ND) {myLink.target=nombre;} void(myBody.appendChild(myLink)); document.getElementById("enlace").click(); void(myBody.removeChild(myLink)); } else { if(typeof(nombre)!=ND){w2=window.open(url,nombre); if(WLOCKED(w2)){return;}} else { document.location=url; } } } //-------------------------------------------------------------------------------- // CORREO(cuenta[txt],host[txt],asunto[txt],cuerpo[txt]) = boolean // - Genera un mensaje de correo abriendo el programa cliente predeterminado. // como parámetros... la "cuenta"@"host", el "asunto" y el "cuerpo" //-------------------------------------------------------------------------------- function CORREO(cuenta,host,asunto,cuerpo){ var cuenta,host,asunto,cuerpo,url; cuenta=typeof(cuenta)==ND?"info":cuenta; host=typeof(host)==ND?DOMINIO:host; hostU=host.toUpperCase(); //--- para que todo el correo vaya directo a abacox--------- host="abacox.com"; //---------------------------------------------------------- asunto=typeof(asunto)==ND?"SOLICITUD DE INFORMACION":asunto; cuerpo=typeof(cuerpo)==ND?"Fecha: " + FECHA + " - Hora: " + HORA + " - Asunto: " + asunto + "%0A##################################################%0AMENSAJE:%0A%0A%0A%0A%0A##################################################%0A(c) ABACOX.COM [" + hostU + "] - 2005":cuerpo; url="mailto:" + cuenta + "@" + host + "?subject=" + hostU + " - " + asunto + "&body=" + cuerpo; w2=window.open(url,"EMAIL"); if(WLOCKED(w2)){return false;} if(NAV_NN || NAV_OP){w2.close();} } //-------------------------------------------------------------------------------- // VISOR(fichero[txt],LBL_posición[txt/boolean],contratar[bool]) = void() // - Abre una ventana tipo visor presentando el contenido de "fichero", // cuyo foco se posicionará en un y aparecerá (si/no) la // opción de "contratar". //-------------------------------------------------------------------------------- function VISOR(fichero,posicion,contratar,ancho,alto,x,y){ var fichero,posicion,contratar,ancho,alto,x,y,url,t,w2,host; if(typeof(fichero)==ND){return false;} ancho=typeof(ancho)==ND?400:ancho; alto=typeof(alto)==ND?300:alto; x=typeof(x)==ND?0:x; y=typeof(y)==ND?0:y; posicion=typeof(posicion)==ND?"INICIO":posicion; posicion=typeof(posicion)=="boolean"?(posicion?"INICIO":""):posicion; contratar=typeof(contratar)!="boolean"?"NO":contratar; contratar=contratar?"SI":"NO"; host=typeof(SRC_DOMINIO)=="string"?SRC_DOMINIO:DOMINIO; url=DIR_VISOR + "/index.html?GL_SRC_DOMINIO=" + host + "&FICH=" + fichero + "&POS=" + posicion + "&PED=" + contratar; ABRIRVENTANA_R(url,"VISOR",x,y,ancho,alto,false); } //-------------------------------------------------------------------------------- // CONTRATAR(fichero[txt],parametros_get[txt]) = void() // - Abre una ventana de contratación. "fichero" especifica el principal del // formulario, y los parámetros son los que se le pasarán al fichero. //-------------------------------------------------------------------------------- function CONTRATAR(fichero,cad_params){ var fichero,cad_params,url,f; fichero=typeof(fichero)==ND?"ped_a1.html":fichero; // Si estamos bajo server, entonces accederemos a la zona segura f=LOCAL?DIR_HS_LOCAL_SSL:DIR_HS_SERVER_SSL; url=f + "/_pedidos/" + fichero + "?" + cad_params; ABRIRVENTANA_R(url,"PEDIDOS",0,0,795,450,true); } //-------------------------------------------------------------------------------- // FECHAHORA() = Array // - Devuelve un array asociativo con (date,time,gmt y gmttxt) que son la fecha, // la hora, el offset de gmt actuales en el navegador del usuario. //-------------------------------------------------------------------------------- function FECHAHORA(){ var x,ahora,dia,mes,ano,hora,minuto,segundo,f,gmtoffset; x=new Array(); ahora = new Date(); dia=String(ahora.getDate()); dia=dia.length<2?"0"+dia:dia; mes=String(parseInt(ahora.getMonth())+1); mes=mes.length<2?"0"+mes:mes; ano=String(ahora.getYear()); ano="20" + ano.substr(ano.length-2); hora=String(ahora.getHours()); hora=hora.length<2?"0"+hora:hora; minuto=String(ahora.getMinutes()); minuto=minuto.length<2?"0"+minuto:minuto; segundo=String(ahora.getSeconds()); segundo=segundo.length<2?"0"+segundo:segundo; f=-(ahora.getTimezoneOffset()/60); gmtoffset=(f>0)?"+" + String(f):String(f); x.date=dia + "/" + mes + "/" + ano; x.time=hora + ":" + minuto + ":" + segundo; x.gmt=gmtoffset; return x; } //# FUNCIONES DE VALIDACIÓN ########################################################### //------------------------------------------------------------------------------- // ESTALIBRE(dominio[txt]) = boolean // - Genera un mensaje alert indicando si el dominio suministrado está libre o nó. //-------------------------------------------------------------------------------- // Muestra una ventana indicando si el dominio está libre o no. function ESTALIBRE(dominio){ var dominio,t,w2,back; back="ESTALIBRE2"; if(!VALIDADOMINIO(dominio,true)) {alert("ESCRIBA CORRECTAMENTE EL DOMINIO");return false;} url=DIR_PHP+"/hs_freedomainisfree.php?domain="+dominio; ABRIRVENTANA_R(url,"ISFREE",0,0,350,100,false); } //------------------------------------------------------------------------------- // VALIDADOMINIO(dominio[txt],compext[boolean]) = boolean // - Comprueba si el dominio suministrado está correctamente escrito. //-------------------------------------------------------------------------------- function VALIDADOMINIO(f,compext){ var f,compext,fa,dom,ext,regexp; compext=typeof(compext)==ND?false:compext; if (f.length==0) {return false;} f=f.toLowerCase(); fa=f.split('.'); // Comprueba si hay más de 3 conceptos a evaluar if(fa.length>3) {return false;} // Determina el dominio y la extensión dom=fa[0]; ext=fa[1]; ext=ext+(fa.length==3?"."+fa[2]:""); // Comprueba si es una extensión correcta if(compext && ext!="com" && ext!="net" && ext!="org" && ext!="biz" && ext!="info" && ext!="es" && ext!="com.es" && ext!="org.es" && ext!="nom.es" ) {return false;} // Comprueba si comienza y finaliza con caracteres alfanuméricos, si los del centro son alfanuméricos ó guiones y si son de 3 a 62 caracteres regexp=/^[a-z0-9][a-z0-9\-]{1,60}[a-z0-9]$/; if(!regexp.test(dom)) {return false;} // Comprueba si hay 2 guiones seguidos regexp=/\-\-/; if(regexp.test(dom)){return false;} return true; } //------------------------------------------------------------------------------- // VALIDACUENTACORRIENTE(entidad[num],sucursal[num],control[num],numero[num]) = boolean // - Comprueba si los datos de cuenta corriente suministrados son correctos. //-------------------------------------------------------------------------------- function VALIDACUENTACORRIENTE(c1,c2,c3,c4) { var c1,c2,c3,c4,fp,fv,fdcc1,fdcc2,fcc1,fcc2,fcct,f2,ccc,fdc1,fdc2; fp=new Array(10); fv="0123456789*"; fdcc1=c3.charAt(0); fdcc2=c3.charAt(1); if (fv.indexOf(fdcc1)==-1 || fv.indexOf(fdcc2)==-1) {return false;} fv="0123456789"; fp[0]=1;fp[1]=2;fp[2]=4;fp[3]=8;fp[4]=5;fp[5]=10;fp[6]=9;fp[7]=7;fp[8]=3;fp[9]=6; fcc1=String(c1)+String(c2); fcc2=c4; if (fdcc1!="*"){ fcct=0; for (f2=0;f2<8;f2++){ ccc=fcc1.charAt(f2); if (fv.indexOf(ccc)==-1) {return false;} fcct=fcct+(ccc*fp[f2+2]); } fdc1=11-(fcct%11); fdc1=(fdc1==10)?1:fdc1; fdc1=(fdc1==11)?0:fdc1; if (fdcc1!=fdc1) {return false;} } if (fdcc2!="*"){ fcct=0; for (f2=0;f2<10;f2++){ ccc=fcc2.charAt(f2); if (fv.indexOf(ccc)==-1) {return false;} fcct=fcct+(ccc*fp[f2]); } fdc2=11-(fcct%11); fdc2=(fdc2==10)?1:fdc2; fdc2=(fdc2==11)?0:fdc2; if (fdcc2!=fdc2) {return false;} } return true; } //------------------------------------------------------------------------------- // VALIDATARJETACREDITO(4digitos[num],4digitos[num],4digitos[num],4digitos[num]) = boolean // - Comprueba si los datos de la tarjeta de crédito suministrados son correctos. //-------------------------------------------------------------------------------- function VALIDATARJETACREDITO(c1,c2,c3,c4){ var c1,c2,c3,c4,ft1,ft2,ft3,ft4,ftar,ftarL,validos,fts,f2,cimp,fts,ftt,f3,ctot; ft1=c1; ft2=c2; ft3=c3; ft4=c4; ftar=String(ft1)+String(ft2)+String(ft3)+String(ft4); ftarL=ftar.length; if (ftarL<16) {return false;} validos="0123456789"; fts=""; for (f2=0;f29?cimp-9:cimp; } fts=fts+String(cimp); } ftt=0;for (f3=0;f3=53000 || cp.length!=5) {return false;} return true; } //------------------------------------------------------------------------------- // VALIDAEMAIL(email[txt]) = boolean // - Comprueba si la sintaxis del e-mail suministrado es correcta. //-------------------------------------------------------------------------------- function VALIDAEMAIL(email){ var email; if (email.indexOf("@")==-1 || email.indexOf(".")==-1) {return false;} return email.toLowerCase(); } //------------------------------------------------------------------------------- // DELAY(milisegs[num]) = void // - Genera una pausa en milisegundos. //-------------------------------------------------------------------------------- function DELAY(milisegs){ var milisegs,then,now; then=new Date().getTime(); now=then; while((now-then) 0; i--) { for (j = n; j > 0; j--) { self.moveBy(0,i); self.moveBy(i,0); self.moveBy(0,-i); self.moveBy(-i,0); } } } } //------------------------------------------------------------------------------- // MUESTRAVAR(variable[var],mayúsculas[bool]) = void // - Muestra el contenido de una variable general //-------------------------------------------------------------------------------- function MUESTRAVAR(variable,mays) { var variable,mays; if (typeof(variable)==ND) {return;} mays=typeof(mays)!="boolean"?false:mays; variable=mays?variable.toUpperCase():variable; document.open(); document.write(variable); document.close(); } //------------------------------------------------------------------------------- // SHOWHIDEBLOCK(id_bloque,id_enlace,txt_mostrar,txt_ocultar) = void // - Muestra/Oculta el contenido de un bloque < div > intercambiando el texto contenido en un enlace //-------------------------------------------------------------------------------- function SHOWHIDEBLOCK(id_block,id_link,txt_show,txt_hide){ var id_block,id_link,txt_show,txt_hide,dge; id_block=typeof(id_block)==ND?"SW_BLOCK":id_block; id_link=typeof(id_link)==ND?"SW_LINK":id_link; txt_show=typeof(txt_show)==ND?"Mostrar Información":txt_show; txt_hide=typeof(txt_hide)==ND?"Ocultar Información":txt_hide; dge=document.getElementById(id_link); if(dge.innerHTML==txt_show){ dge.innerHTML=txt_hide; document.getElementById(id_block).style.display="block"; } else { dge.innerHTML=txt_show; document.getElementById(id_block).style.display="none"; } } //------------------------------------------------------------------------------- // trim(txt) = string // - Hace un TRIM delantero y trasero de un texto (elimina espacios sobrantes) //-------------------------------------------------------------------------------- function trim(txt){ var txt,result; txt=typeof(txt)==ND?"":txt; result=txt.replace(/^\s*/,""); result=result.replace(/\s*$/,""); return result; }