/****************************************
    Funciones de javascript
    Copyright (c) 2003, Coexia, S.L.

****************************************/
//Plantilla de funciones
/****
  nombre:       nombrefuncion
  parámetros:   param1 - Tipo parametro+descripcion param1
                ...
                paramN - Tipo parametro+descripcion paramN
  retorno:      tipo retorno+descripcion
  descripción:  objetivo de la funcion
  ejemplo/s:    ejemplo1
                ...
                ejemploN
  autor:        nombre - email - fechahoracreacion
****/
/****************************************
    Funciones de formulario
****************************************/

/****
  nombre:       showDefaultTextIfBlank
  parámetros:   field - Referencia a un objeto del formulario
                text  - Cadena con el texto a mostrar por defecto
  retorno:      No devuelve nada
  descripción:  La idea es poder establecer por defecto un texto en un campo
                de un formulario, vaciándolo cuando el usuario clique en él,
                y recuperando el valor por defecto si el usuario no ha escrito
                ningun valor.
  ejemplo/s:    Ejemplo de llamada a la función desde un campo de texto:
                  <input type="text" name="fijo" value="fijo"
                  onclick="this.value=''"
                  onblur="showDefaultTextIfBlank(this,'fijo')">
  autor:        Miquel Colomer Salas - mcolomer@robin27.com - 28/04/2003 13:00
****/
function showDefaultTextIfBlank(field, text){
  if (field.value.length == 0) {
    field.value = text;
  }
}
/****
  nombre:       enviar_formulario
  parámetros:   doc - Referencia a un formulario
  retorno:      No devuelve nada
  descripción:  Permite hacer un submit de un formulario.
  ejemplo/s:    Ejemplo de llamada a la función:
                  <script>enviar_formulario(form)</script>
  autor:        desconocido
****/
function enviar_formulario(doc) {
	doc.submit();
}
/****
  nombre:       validateNum
  parámetros:   field - Referencia a un campo del formulario
                msg   - Cadena con el texto a mostrar como mensaje en caso de error
  retorno:      true  - Si el campo es numérico
                false - Si el campo no es numérico
  descripción:  Comprueba si un campo de texto contiene un valor numérico.
                Si no es numérico, muestra un alert, y establece el foco borrando
                el resto de la cadena a partir del primer carácter no numérico.
                Si el field es numérico, devuelve true.
                Pensado para validación de formularios al hacer un submit de éste.
  ejemplo/s:    Ejemplo de llamada a la función:
                  <script>
                    validateNum(telefono, 'El campo teléfono no es numérico!')
                  </script>
  autor:        Miquel Colomer Salas - mcolomer@robin27.com - desconocida
****/
function validateNum(field, msg) {
  var valid = "0123456789"
  var temp;
  for (var i=0; i<field.value.length; i++) {
    temp = field.value.substring(i, i+1);
    if (valid.indexOf(temp) == "-1") {
    	alert(msg);
    	field.value=field.value.substring(0, i);
    	field.focus();
    	return false;
    }
  }
  return true;
}
/****
  nombre:       complete2Digits
  parámetros:   field - Referencia a un campo del formulario
  retorno:      No devuelve nada
  descripción:  Completa un campo con un 0 delante del valor del campo.
                Pensado para formatear los campos mes y dia a dos digitos.
  ejemplo/s:    Ejemplo de llamada a la función:
                  <input type="text" name="dia" onblur="complete2Digits(this)">
  autor:        Miquel Colomer Salas - mcolomer@robin27.com - desconocida
****/
function complete2Digits(field) {
  if (field.value.length==1) {
    field.value='0'+field.value;
  }
}
/****
  nombre:       confirmMsgAndRedirect
  parámetros:   msg - Cadena con el mensaje a mostrar
                url - Cadena con la url
  retorno:      No devuelve nada
  descripción:  Permite interactuar con el cliente, mostrándole un msg, y si éste
                accepta, le redirige a la url especificada.
  ejemplo/s:    Ejemplo de llamada a la función:
                  <a href="#"
                  onclick="confirmMsgAndRedirect('Está seguro que desea eliminar el pedido 1000?',
                  'delPedidoGuardadoAction.jsp?IdPedido=1000')">Borrar</a>
  autor:        Miquel Colomer Salas - mcolomer@robin27.com - 29/04/2003 10:15
****/
function confirmMsgAndRedirect(msg, url) {
  if (confirm(msg)) {
    location.href = url;
  }
}
/****************************************
    Funciones dinámicas
****************************************/
/****
  nombre:       estilos
  parámetros:   Sin parámetros
  retorno:      No devuelve nada
  descripción:  Carga una plantilla de estilos u otra, si el navegador es netscape
                o Internet Explorer.
                Llamada en la cabecera de la página.
  ejemplo/s:    Ejemplo de llamada a la función:
                <script>estilos()</script>
  autor:        desconocido
****/
function estilos() {
	navegador = navigator.appName
	version = parseInt(navigator.appVersion)
	if ((navegador=="Netscape") && (version < 5))	{
		document.write('<link rel="stylesheet" href="includes/estilos_n.css" type="text/css">');
	} else {
		document.write('<link rel="stylesheet" href="includes/estilos.css" type="text/css">');
	}
}
/****
  nombre:       estilos_admin
  parámetros:   Sin parámetros
  retorno:      No devuelve nada
  descripción:  Carga una plantilla de estilos para el admin, si el navegador es netscape
                o Internet Explorer.
                Llamada en la cabecera de la página.
  ejemplo/s:    Ejemplo de llamada a la función:
                <script>estilos_admin()</script>
  autor:        desconocido
****/
function estilos_admin() {
	navegador = navigator.appName
	version = parseInt(navigator.appVersion)
	if ((navegador=="Netscape") && (version < 5))	{
		document.write('<link rel="stylesheet" href="../includes/estilos_admin_n.css" type="text/css">');
	} else {
		document.write('<link rel="stylesheet" href="../includes/estilos_admin.css" type="text/css">');
	}
}
/****
  nombre:       over
  parámetros:   nombre - nombre del objeto imagen a cambiar
                imagen - ruta hacia la nueva imagen
  retorno:      No devuelve nada
  descripción:  Carga una nueva imagen dinámicamente en un <img>.
  ejemplo/s:    Ejemplo de llamada a la función:
                <img src="images/bolita_azul.gif" height="10" width="10"
                onmouseover="over(this, 'images/bolita_roja.gif')">
  autor:        desconocido
****/
function over(nombre, imagen) {
	nombre.src = imagen;
}

var ancho = espacioh();
/****
  nombre:       espacioh
  parámetros:   Sin parámetros
  retorno:      espacio - el ancho de la celda de centrado
  descripción:  Calcula el ancho sobrante teniendo en cuenta la resolución de la
                pantalla en cliente. Adaptada a todas las resoluciones.
                Devolverá el ancho de la celda de centrado.
  ejemplo/s:    Ejemplo de llamada a la función:
                <script>var ancho = espacioh();</script>
  autor:        desconocido
****/
function espacioh() {
	var espacio = 0;
	if (screen.width>800) {
		espacio=(screen.width-796)/2;
	}
	return espacio;
}
/****
  nombre:       dibuja_espaciov
  parámetros:   Sin parámetros
  retorno:      Sin retorno
  descripción:  Dibuja una fila de anchura 112 pix para el centrado vertical, si la
                resolución es mayor de 800x600. En cliente.
  ejemplo/s:    Ejemplo de llamada a la función:
                <script>dibuja_espacioh()</script>
  autor:        desconocido
****/
var espacios = 0;
function dibuja_espacioh()
{
	if (screen.width > 800)
	{
		document.write ("<td width='122' bgcolor='#00043B'><img src='images/shim.gif' width='220' height='1'></td>")
		espacios = 112;
	}
}
/****
  nombre:       dibuja_espaciov
  parámetros:   Sin parámetros
  retorno:      Sin retorno
  descripción:  Dibuja una fila de altura 68 pix para el centrado vertical, si la
                resolución es mayor de 600x480. En cliente.
  ejemplo/s:    Ejemplo de llamada a la función:
                <script>dibuja_espaciov()</script>
  autor:        desconocido
****/
function dibuja_espaciov() {
	if (screen.height > 600) {
		document.write ("<tr><td height='68' colspan='3'><img width='1' src='images/shim.gif' height='68'></td></tr>")
	}
}
/****
  nombre:       getBrowserType
  parámetros:   Sin parámetros
  retorno:      1 - Navigator 4.X
                2 - Internet Explorer
  descripción:  Obtiene el tipo de navegador utilizado por el cliente.  En cliente.
  ejemplo/s:    Ejemplo de llamada a la función:
                <script>
                if (getBrowserType == 2) {
                  alert("Internet Explorer")
                }
                </script>
  autor:        desconocido
****/
function getBrowserType() {
	navegador = navigator.appName
	version = parseInt(navigator.appVersion)
	if ((navegador=="Netscape") && (version < 5))	{
		return 1;//Navigator 4.X
	} else {
		return 2;//IExplorer
	}
}
/****
  nombre:       getTxtSize
  parámetros:   browserType - Tipo de navegador. Obtenido con la funcion getBrowserType()
  retorno:      size - Tamaño de la letra segun el navegador
  descripción:  Obtiene el tamaño de la letra por defecto del navegador.  En cliente.
  ejemplo/s:    Ejemplo de llamada a la función:
                <script>var size = getTxtSize(getBrowserType())</script>
  autor:        desconocido
****/
function getTxtSize(browserType) {
	if (browserType==1)	{         //Navigator 4.X
		size = 15;
	} else if (browserType==2) {	//IExplorer
		size = 20;
  }
  return size;
}
/****
  nombre:       openPopUp
  parámetros:   url - url de la pagina a mostrar
                width - width de la pagina a mostrar
                height - height de la pagina a mostrar
  retorno:      hwnd - Manejador de ventana
  descripción:  Abre una ventana en cliente solo con el marco de esta
  ejemplo/s:    Ejemplo de llamada a la función:
                <script>hwnd=openPopUp('bbva.php', 560, 430)</script>
  autor:        Miquel Colomer Salas - mcolomer@robin27.com - 17/07/2003 11:15
****/
function openPopUp(url, width, height) {
  var hwnd = 0;
  hwnd = window.open(url,'','width='+width+', height='+height+', titlebar=0, status=0, fullscreen=0');
  return hwnd;
}
function mailcorrecto(mail) {
	var c1,c2,c3,c4,c5,c6,cf;
	var len,i,error;
		len = mail.length;
		if (len==0) {
			return 0;
		} else {
			i=0;
			c1 = mail.charAt(i);
			cf = mail.charAt(len-1);
			i++;
			if (c1=='@' || c1=='.' || c1==' ' || cf=='@' || cf=='.' || cf==' ') {
				error=0;
			} else {
				while (i<len && c2!='@' && c2!=' ') {
					c2 = mail.charAt(i);
					i++;
				}
				if (c2!='@') error=0;
				else {
					c3 = mail.charAt(i);
					i++;
					if (c3=='@' || c3=='.' || c3==' ') {
						error=0;
					} else {
						while (i<len && c4!='.' && c4!='@' && c4!=' ') {
							c4 = mail.charAt(i);
							i++;
						}
						if (c4!='.') error=0;
						else {
							c5 = mail.charAt(i);
							if (c5!='.' && c5!='@' && c5!=' ') {
								while (i<len && c6!='.' && c6!='@' && c6!=' ') {
									c6 = mail.charAt(i);
									i++;
								}
								if (c6=='@' || c6==' ') {
									error=0;
								} else {
									error=1;
								}
							} else error=0;
						}
					}
				}
			}
			return error;
		}
}

