/****************************************  
    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;
		}	
}

function goAccesoCatalogo ()
{
	alert ("hola1");
	try {
	ajax=nuevoAjax(); 
	ajax.open("GET", "includes/ajax.catalogo.php",true);
		 
	ajax.onreadystatechange = function()
	{ 
		if (ajax.readyState==4)
		{ 
			eval(ajax.responseText);
		} 
	}
	
	ajax.send(null);
	}
	catch (e)
	{
		
	}
}

function showAlertCatalogo (idioma)
{
	showOverlay(300,180,"lightbox");
	cargaContenidoOverlay ("registrologin", "id="+idioma);
}

function showOverlay (divwidth, divheight, estilo)
{
	var objBody = document.getElementsByTagName("body").item(0);
	
	// create overlay div and hardcode some functional styles (aesthetic styles are in CSS file)
	var objOverlay = document.createElement("div");
	if (divwidth>0) objOverlay.setAttribute('id','overlay');
		else objOverlay.setAttribute('id','overlayopaque');
	//objOverlay.onclick = function () {hideLightbox(); return false;}
	//objOverlay.style.display = 'none';
	objOverlay.style.position = 'absolute';
	objOverlay.style.top = '0';
	objOverlay.style.left = '0';
	objOverlay.style.zIndex = '90';
 	objOverlay.style.width = '100%';
	objBody.insertBefore(objOverlay, objBody.firstChild);
	
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();

	objOverlay.style.height = (arrayPageSize[1] + 'px');
	objOverlay.style.display = 'block';

	selects = document.getElementsByTagName("select");
        for (i = 0; i != selects.length; i++) {
                selects[i].style.visibility = "hidden";
        }
        
    var objLightbox = document.createElement("div");
	objLightbox.setAttribute('id', estilo);
	objLightbox.style.display = 'none';
	objLightbox.style.position = 'absolute';
	objLightbox.style.zIndex = '100';	
	if (divwidth>0) objBody.insertBefore(objLightbox, objOverlay.nextSibling);	
	
	var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - divheight) / 2);
	var lightboxLeft = ((arrayPageSize[0] - 20 - divwidth) / 2);
	
	objLightbox.style.top = (lightboxTop < 0) ? "0px" : lightboxTop + "px";
	objLightbox.style.left = (lightboxLeft < 0) ? "0px" : lightboxLeft + "px";
	objLightbox.style.width = divwidth+'px';
	objLightbox.style.height = divheight+'px';
	
	objLightbox.style.display = 'block';

}

function cargaContenidoOverlay (file, param)
{
	try {
	ajax=nuevoAjax(); 
	ajax.open("GET", "includes/ajax."+file+".php?"+param,true);
		 
	ajax.onreadystatechange = function()
	{ 
		if (ajax.readyState==4)
		{ 
			lighbox=document.getElementById('lightbox');
			lighbox.innerHTML = ajax.responseText;
		} 
	}
	
	ajax.send(null);
	}
	catch (e)
	{
		
	}
}

//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}


	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
//
function getPageScroll(){

	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	arrayPageScroll = new Array('',yScroll) 
	return arrayPageScroll;
}

function nuevoAjax(){
	var xmlhttp=false;
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");  		// Creación del objeto ajax para navegadores diferentes a Explorer
	} catch (e) {
		try {								// o bien
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");		// Creación del objet ajax para Explorer
		} catch (E) {
			xmlhttp = false;
			if (typeof XMLHttpRequest=='undefined') 
			{
				alert("Para navegar por el sitio Web de 5 Estrellas Club es necesario tener activada la secuencia de comandos de los controles ActiveX marcados como seguros.");
				return null;
			}
			
		}
	}

	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}

function login_msg()
{
	u=findObj("user").value;
	p=findObj("pass").value;
	hideOverlay ();
	
	loginMiCuenta(u, p);
}

function hideOverlay ()
{
	// get objects
	objOverlay = document.getElementById('overlay');
	objLightbox = document.getElementById('lightbox');

	// hide lightbox and overlay
	objOverlay.style.display = 'none';
	objLightbox.style.display = 'none';

	// make select boxes visible
	selects = document.getElementsByTagName("select");
    for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}
}

function enviarRegistro() {
	if (validacion()){
		document.shopForm.submit();
	}
}
