
	/*
	 * global boolean
	 * indica se o menú está recollido ou non
	 */
	var recollido = false;
	
	/*
	 * global boolean
	 * indica se o menú está en movemento
	 */
	var movendose = true;
	
	
	
	window.onload=inicializar;
	
	
	/*
	 * Inicializa o menú e o carro da compra se é necesario
	 * @return void
	 */
	function inicializar(){
		
		/*
		 * Inicializamos o menú
		 */
		/*new Effect.Scale( 'nav' ,20 );
		setTimeout("movendose = false;", 1000);
		setTimeout("recollido = true;", 1000);
		
		$('nav').onmouseover=MostrarMenu;
		$('nav').onmouseout=OcultarMenu;
		
		/*
		/*
		 * Se está visible o carro da compra inicializámolo
		 */
		 if($('carrito')) {
		 	
			/*
			 * especificamos a capa do carro da compra como zona 
			 * sobre a que soltar os productos
			 */
			
		 }
	}
	


	/*
	 * redimensiona horizontalmente o menú
	 * @return void
	 */
	function MostrarMenu(){
		if( recollido && !movendose) {
			movendose = true;
			recollido = false;
			new Effect.Scale('nav',500 );
			setTimeout("movendose = false ;", 2000);
		}
	}
	
	
	/*
	 * redimensiona horizontalmente o menú
	 * @return void
	 */
	function OcultarMenu(){
		if( !recollido && !movendose) {
			movendose = true;
			recollido = true ;
			new Effect.Scale('nav', 20);
			setTimeout("movendose = false ;", 1000);
		}
	}
	
	
	
	
	
/*************************************************************
 *  Funciós para efectos e transicións no cambio de imaxes
 *************************************************************/
	
	/*
	 * Carga unha imaxen na capa "imaxen_detalle" con unhas transicións
	 * @param url URL da imaxen
	 * @return void
	 */
	var duracion=1; //2 seg
	function cargarImg(url) {
		Effect.Fade('imagen_detalle', {from:1, to:0.1, duration:duracion  });
		window.setTimeout("$('imaxen').src='"+url+"';", duracion*1000);
		$('imaxen').onload=AnimarCargaImg;
		
	}
	
	function AnimarCargaImg(){
		Effect.Appear('imagen_detalle',{ from:0.1, to:1,  duration:duracion });		
	}
	/*
	 * elimina unha imaxen do apartado "empresa", utilizando AJAX
	 * @param id int clave da imaxen
	 * @return void
	 */
	function EliminarImg(id){
		var respuesta = window.confirm('¿Realmente desea ELIMINAR esta IMAGEN?');
		if(respuesta) {
			new Ajax.Request('/imaxen/del/'+id+'/', {asynchronous:true, method: 'get'});
			
			window.setTimeout("window.location.reload();",500);
		}
	}
	
	/*
	 * Abre un PopUp sin barras de menú nin de estado
	 * @param url String URL a abrir
	 * @param ancho Integer ancho do popup
	 * @param alto Integer alto do popup
	 * @return void
	 */
	function PopUp( url, ancho, alto ){
		var derecha=(screen.width-ancho)/2;
		var arriba=(screen.height-alto)/2;
	   	string="toolbar=0,scrollbars=YES,location=0,statusbar=0,menubar=0,resizable=1,width="+ancho+",height="+alto+",left="+derecha+",top="+arriba+"";
	   	fin=window.open(url,"",string);
	}
	
	
	
/*************************************************************
 *  Funciós para eliminar e modificar o contido do carrito
 *************************************************************/
 
 
 
 function PreparaIE(){
		if (browser == 'Internet Explorer'){
			if (self.pageYOffset) {
				this.yPos = self.pageYOffset;
			} else if (document.documentElement && document.documentElement.scrollTop){
				this.yPos = document.documentElement.scrollTop; 
			} else if (document.body) {
				this.yPos = document.body.scrollTop;
			}
			bod = document.getElementsByTagName('body')[0];
			bod.style.height = "100%";
			bod.style.overflow = "hidden";
			htm = document.getElementsByTagName('html')[0];
			htm.style.height = "100%";
			htm.style.overflow = "hidden";
			window.scrollTo(0, 0); 
			selects = document.getElementsByTagName('select');
			for(i = 0; i < selects.length; i++) {
				selects[i].style.visibility = 'hidden';
			}
		}
 }
 
 /*
  * Quita un elemento do carrito
  * @param ref String referencia do elemento a eliminar ("perfil/color")
  * @return void
  */
	function quitarCarrito(ref){
		PreparaIE();
		$('overlay').style.display = "block";
		$('lightbox2').className='formulario_ajax';
		$('lightbox2').innerHTML='<h3>Desea realmente ELIMINAR el artículo con referencia: '+ref+
								' del carrito? </h3> '+
								'<input type="button" onclick="EnviarQuitarCarrito(\''+ref+'\' )" value="Aceptar" class="boton"/>'+
								'<input type="button" onclick="CerrarLB()" value="Cancelar" class="boton"/>'+
								'<p id="info_msg" class="error"></p>';
		
		
		$('lightbox2').style.display = "block";
	}
	
	function EnviarQuitarCarrito(ref) {
		new Ajax.Updater('carrito', '/catalogo/carrito/del/'+ref+'/', 
				{
					onLoading:function(request){Element.show('indicador');CerrarLB()}, 
					onComplete:function(request){Element.hide('indicador')}, 
					evalScripts:true, 
					asynchronous:true
				}
		)
	}
	
	
	/**
	 * Modifica a cantidade dun elemento no carrito 
	 * @param ref String referencia do elemento a eliminar ("perfil/color")
	 * @param cantidad Integer cantidade de unidades do artículo no carrito
  	 * @return void
  	 */
	function cantidadCarrito(ref,cantidad,embalaje){
		PreparaIE();
		$('overlay').style.display = 'block';
		$('lightbox2').className='formulario_ajax';
		$('lightbox2').innerHTML='<h3>Desea realmente modificar la cantidad del artículo con referencia: '+ref+
								'</h3> <br /><br /><input type="text" value="'+cantidad+'" format="N" id="cantidad_articulo_input"/>'+
								'<input type="button" onclick="EnviarCantidadCarrito(\''+ref+'\', '+cantidad+','+embalaje+' )" value="Actualizar" class="boton"/>'+
								'<input type="button" onclick="CerrarLB()" value="Cancelar" class="boton"/>'+
								'<p id="info_msg" class="error"></p>';
		
		
		$('lightbox2').style.display = 'block';
	}
	
	function EnviarCantidadCarrito(ref,cantidad, embalaje){
		respuesta=$('cantidad_articulo_input').value;
		if (isNaN(respuesta)) {
			$('info_msg').innerHTML="El numero introducido no es valido";
		} else {
			if ( respuesta%embalaje == 0 ){
                new Ajax.Updater('carrito', '/catalogo/carrito/mod/'+ref+'/'+respuesta+'/', 
                        {
                            onLoading:function(request){Element.show('indicador');CerrarLB()}, 
                            onComplete:function(request){Element.hide('indicador')}, 
                            evalScripts:true, 
                            asynchronous:true
                        }
                    )
				
			} else {
				$('info_msg').innerHTML="Debe introducir un múltiplo de "+embalaje+", que es la cantidad de metros por embalaje."+
				                        "Por ejemplo puede introducir "+(Math.ceil(respuesta/embalaje)*embalaje)+" o "+(Math.floor(respuesta/embalaje)*embalaje) ;
			}
		}
	}
	
	
	function CerrarLB(){
		$('lightbox2').style.display = 'none';
		$('overlay').style.display = 'none';
	}
	
/*************************************************************
 *  popup similar a lightbox
 *************************************************************/

/**
 * crea unha capa 
 *	@param padre String id do elemento pai
 * @param id String id que asignaremos a capa
 * @param clase String clase q asignaremos a capa
 * @param contido String contido inicial da capa
 * @return DOM elemento creado 
 */
function creaElemento(padre,id,clase,contido){
   	var div = document.createElement('div');
   	div.id=id;
   	div.className=clase;
   	$(padre).appendChild(div);
   	div.innerHTML=contido;
   	return div;
}


/**
 * global boolean
 * verdadeira se estamos arrastrando algún elemento
 */
var arrastrando=false;
var top0=-250;
var left0=-250;
var maximizadosArray= new Array();
var minimizadosArray = new Array();
var maximizados = 0;
var zindex=100;


/**
 * elimina un elemento lightBox
 * @param refer String referencia do elemento a eliminar 
 * @return void 
 */		
function eliminarElemento(refer) {
	var elemId='imgContainerLightbox'+refer;
	el=$(elemId);
	el.parentNode.removeChild(el);
	
	var indiceMax=estaMaximizado(refer);
	if(indiceMax){
		// e se está no array de maximizados quitamolo
		delete maximizadosArray[indiceMax];
	}
}

/**
 * Oculta un "lightBox" e engadeo a lista de favoritos
 * @param id String identificador do elemento
 * @param refer String referencia do producto
 * @return void 
 */
function minimizarElemento( refer) {
	if($('MimgContainerLightbox'+refer)) {
		//Se xa está minimizado, ocultamos o elemento 
		Element.hide('imgContainerLightbox'+refer);
	} else {
		//Se non estaba minimizado actualizamos as variables de sesión 
		new Ajax.Updater('minimizados', '/catalogo/favoritos/add/'+refer+'/', 
				{
					onLoading:function(request){Element.show('indicador2')}, 
					onComplete:function(request){ window.setTimeout("Element.hide('indicador2')",1000) }, 
					evalScripts:true, 
					asynchronous:true
				}
		)
		// .. e ocultamola ventana
		Element.hide('imgContainerLightbox'+refer);
	}
	// en todo caso ( por si las moscas) actulizamos os arrays de minimizados e maximizados
	var indiceMax=estaMaximizado(refer);
	if(indiceMax){
		// e se está no array de maximizados quitamolo
		delete maximizadosArray[indiceMax];
	}
	var indiceMin=estaMinimizado(refer);
	if(!indiceMin){
		// se non está no array de minimizados engadímolo
		minimizadosArray[minimizadosArray.length+1]=refer
	}
}

/**
 * Mostra un "lightBox" minimizado na lista de favoritos. Se non existe creao
 * @param id String identificador do elemento
 * @param refer String referencia do producto
 * @return void 
 */
function desminimizar(refer, img){
	if($('imgContainerLightbox'+refer)) {
		//si existe a ventana pero está oculta mostramola
		Element.show('imgContainerLightbox'+refer);
	} else {
		// se non creamola
		lightBox(img,refer);
	}
	if($('MimgContainerLightbox'+refer)) {
		// si existe o elemento na lista de miniaturas ( cousa rara o contrario ) eliminamola das variables de sesión
		new Ajax.Updater('minimizados', '/catalogo/favoritos/del/'+refer+'/', 
				{
					onLoading:function(request){Element.show('indicador2')}, 
					onComplete:function(request){ window.setTimeout("Element.hide('indicador2')",1000) }, 
					evalScripts:true, 
					asynchronous:true
				}
		)
	} else {
		alert("Error: está intentando maximizar una ventana que no estaba previamente minimizada");
	}
	// en todo caso ( por si las moscas) actulizamos os arrays de minimizados e maximizados
	var indiceMax=estaMaximizado(refer);
	if(!indiceMax){
		// e non está no array de maximizados engadimolo
		maximizadosArray[maximizadosArray.length+1]=refer;
	}
	var indiceMin=estaMinimizado(refer);
	if(indiceMin){
		// se  está no array de minimizados quitamolo
		delete minimizadosArray[indiceMin];
	} 
	//mostramolo en primeiro plano se non se está mostrando xa
	if($('imgContainerLightbox'+refer).style.zIndex!=zindex ) {
		zindex+=5;
		$('imgContainerLightbox'+refer).style.zIndex=zindex;
	}
	
}

/**
 * Crea unha capa q mostra a imaxen a detalle dun elemento
 * @param url String url da imaxen a cargar
 * @param key Integer clave primaria do elemento a mostrar
 * @param refer String referencia do elemento 
 * @return mixed Scriptaculous Draggable
 */
function lightBox(url, pvp, refer){
	var minimizadoIndex=estaMinimizado(refer);
	var maximizadoIndex=estaMaximizado(refer);
	if(!arrastrando) {
			if(minimizadoIndex) {	
				//esta minimizado
				desminimizar(refer,url)
			} else {
					if(maximizadoIndex) {
						//Xa está maximizado, mostramolo en primeiro plano se non se está mostrando xa
						if($('imgContainerLightbox'+refer).style.zIndex!=zindex ) {
							zindex+=5;
							$('imgContainerLightbox'+refer).style.zIndex=zindex;
						}
					} else {
							//Non está nin minimizado nin maximizado
							var elemId='imgContainerLightbox'+refer;
							var contido='<div class="barraVentana"><img src="/media/img/close.png" onclick="eliminarElemento(\''+refer+'\');" title="Cerrar"/> <img src="/media/img/mini.png" onclick="minimizarElemento( \''+refer+'\' );" title="Minimizar" />'+refer+' </div><img src="'+url+'" class="principal" /><h2 style="float:right;">'+pvp+' €/m&nbsp;&nbsp;&nbsp;</h2>';
							
							var imgContainer = creaElemento(document.body,elemId,'imgContainerlightbox', contido);
							imgContainer.style.marginTop=top0+'px';
							imgContainer.style.marginLeft=left0+'px';
							if(top0!=0) {
								top0+=25;
								left0+=25;
							} 
							if(maximizados>8){
								top0=-150;
								left0=-150;
								maximizados=0;
							}
							//engadimo-la referencia o array de maximizados
							maximizadosArray[maximizadosArray.length+1]=refer;
							zindex+=5;
							imgContainer.style.zIndex=zindex;
							new Draggable(elemId);
							//engadimos unha fcion para traelo o frente cando o seleccionemos
							imgContainer.onclick=raise;
					}
			}
			
	} else {
		return false;
	}
}

function raise(evt) {
	zindex+=5; 
	if ( browser != 'Internet Explorer'){
		evt.target.parentNode.style.zIndex=zindex;
	}
}

/**
 * 
 */
function estaMinimizado(refer) {
	var retorno = false;
	for(var i=0;i<minimizadosArray.length;i++) {
		if(minimizadosArray[i]===refer){
			retorno=i;
		}
	}
	return retorno;
}

/**
 * 
 */
function estaMaximizado(refer){
	var retorno = false;
	for(var i=0;i<maximizadosArray.length;i++) {
		if(maximizadosArray[i]===refer){
			retorno=i;
		}
	}
	return retorno;
}






/********************************************************************
 *  Funcions para manexar os frames e a zona de pedidos e usuarios
 ********************************************************************/
 
 
 function cargarFrame( url ) {
 	top.frames['iframeizda'].location=url
 }


