 
 
var Basic = {
	
	/**
	 * Funcion que permite centrar un elemento (element), 
	 * dentro de su elemento contenedor (parent).
	 *
	 * @param element Id del elemento a centrar
	 * @param parent Id del elemento base para centrar, si no existe se tomara como base la ventana
	 * @return
	 */
	showCenter: function(element, parent){
		e = $(element);
		p = $(parent);
		if(!p){
			x = (document.viewport.getWidth() / 2) - (e.getWidth() / 2) + 'px';
			y = (document.viewport.getHeight() / 2) - (e.getHeight() / 2) + 'px';
			e.setStyle({
				left: x,
				top: y
			});
		} else {
			y = p.cumulativeOffset().top + (p.getHeight() / 2) - (e.getHeight() / 2) + 'px';
			x = p.cumulativeOffset().left + (p.getWidth() / 2) - (e.getWidth() / 2) + 'px';
			e.setStyle({
				left: x, 
				top: y
			});
		}
	},
	
	/**
	 * Funcion que retorna verdadero, si un evento 'click',
	 * sucedio dentro de un elemento, de lo contrario falso
	 *
	 * @param element Elemento a validar
	 * @param event Evento click
	 * @return bool 
	 */
	inRect: function(element, event){
		e = $(element);
		ev = event;
		rec = $H({x1: e.cumulativeOffset().left,
				  y1: e.cumulativeOffset().top,
				  x2: e.cumulativeOffset().left + e.getWidth(),
				  y2: e.cumulativeOffset().top + e.getHeight()});
		if($R(rec.get('x1'),rec.get('x2')).include(ev.pointerX())&&
		   $R(rec.get('y1'),rec.get('y2')).include(ev.pointerY())){
			return true;   
		} else {
			return false;
		}
	}	
}

var Detalle = {
	/**
	 * Falta ver si se puede sacar todas las detalles en una sola variable. 
	 */
	Unique: function(row,fields){
		error = 0;
		for(i=1;i<=totfilas;i++){
			fields.each(function(field){
				if($F($$("#contenido"+row+" td *")[field])==$F($$("#contenido"+i+" td *")[field])&&row!=i) error++;
			});
			if(error==fields.length) break;
			else error = 0;
		}
		if(error==fields.length){
			campos = "";
			$$("#contenido"+row+" td *")[fields[0]].value = "";
			if(fields.length>1){
				i=0;
				fields.each(function(field){
					campos+=$$('#titulos th')[fields[i++]].innerHTML+", ";
				});
				campos = "Los campos "+campos+" deben ser unicos";
			} else {
				campos = "El campo "+$$('#titulos th')[fields[0]].innerHTML+" debe ser unico" ;
			}
			alert(campos);
		}
	}
		
}


var Menu = {

	p_verMenu: true,
	p_verOpciones: true,

	ver: function(){
		x = $('header').positionedOffset().left + 900 - 400 + 'px';
		$('menu').setStyle({
			left: x
		});
		if(!this.p_verMenu) return;
		if(!$('menu').visible()){
			this.p_verMenu = false;
			$("boton_menu").setStyle({
				backgroundColor: '#FFFFFF'
			});
			new Effect.Appear('menu', {
				duration: 0.2,
				afterFinish: function(){
					Menu.p_verMenu = true;
				}
			});
		}
	},
	
	verOpcion: function(number){
		if(!this.p_verOpciones) return;
		this.p_verOpciones = false;
		if(!$('tr'+number).visible()){
			$('tr'+number).show();
			new Effect.BlindDown('texto'+number, {
				duration: 0.2,
				afterFinish: function(){
					Menu.p_verOpciones = true;
				}
			});
		} else {
			new Effect.BlindUp('texto'+number, {
				duration: 0.2,
				afterFinish: function(){
					$('tr'+number).hide();
					Menu.p_verOpciones = true;
				}
			});
		}
	},
	
	hideMenu: function(event){
		if($('menu').visible()){
			if(Object.isUndefined(event)){
				new Effect.Fade('menu', {
					duration: 0.2,
					afterFinish: function(){
						menuVisible = true;
						$("boton_menu").setStyle({
							backgroundColor: 'transparent'
						});
					}
				});
			} else {
				if(!Basic.inRect('menu',event)){
					new Effect.Fade('menu', {
						duration: 0.2,
						afterFinish: function(){
							menuVisible = true;
							$("boton_menu").setStyle({
								backgroundColor: 'transparent'
							});
						}
					});
				}
			}
		}
	}

}
