//Tipos mensajes------------------------------------------------------------------------------------------------
// 0 => error
// 1 => bien
// 2 => espera
// 3 => ninguno
//--------------------------------------------------------------------------------------------------------------
//Clase Mensaje
function Mensaje(){
 this.idCapaMensaje="capa_mensaje";
 this.idCapaCierre="capa_cierre_men";
 this.idCapaIcono="capa_icono_men";
 this.idPContenido="p_contenido";
 this.tipoMensaje=0;
 //métodos
 this.mostrar=mostrarM;
 this.cerrar=cerrarM;
//----------------------------------------------
 var objCapaMensaje=Builder.node('div',{id:this.idCapaMensaje});
 var objCapaCierre=Builder.node('div',{id:this.idCapaCierre});
 objCapaCierre.onclick=function(){Effect.Fade(this.parentNode);};
 objCapaMensaje.appendChild(objCapaCierre);
 objCapaMensaje.appendChild(Builder.node('div',{id:this.idCapaIcono}));
 objCapaMensaje.appendChild(Builder.node('p',{id:this.idPContenido}));
 d.body.appendChild(objCapaMensaje);
 new Effect.Fade(this.idCapaMensaje);
 new Draggable(this.idCapaMensaje);
}

//Métodos-------------------------------------------------------------------------------------------------------
//mostrar('mensaje', 'tipo de mensaje'['error' por defecto])
function mostrarM(){
 Element.update(this.idPContenido,arguments[0]);
 if(arguments.length==2) this.tipoMensaje=arguments[1];
 else this.tipoMensaje=0;
 switch(this.tipoMensaje){
  case 0:
	 $(this.idCapaIcono).className='fnderror';
   break;
	case 1:
	 $(this.idCapaIcono).className='fndbien';
   break;
	case 2:
	 $(this.idCapaIcono).className='fndespera';
   break; 
 }
 centrarCapa(this.idCapaMensaje);
 new Effect.Appear(this.idCapaMensaje);
}

function cerrarM(){new Effect.Fade(this.idCapaMensaje);}

//Fin Métodos---------------------------------------------------------------------------------------------------

//Clase Nota
function Nota(){
 this.idCapaNota="capa_nota";
 this.idPContenido="p_cont_nota";
 //métodos
 this.mostrar=mostrarN;
 this.cerrar=cerrarN;
//----------------------------------------------
 var objCapaNota=Builder.node('div',{id:this.idCapaNota});
 var objPContenido=Builder.node('p',{id:this.idPContenido});
 objCapaNota.appendChild(objPContenido);
 d.body.appendChild(objCapaNota);
 Element.hide(this.idCapaNota);
}

//Métodos-------------------------------------------------------------------------------------------------------
//mostrar(elemento del cual mostramos una nota, 'mensaje', desplazamiento x, desplazamiento y)
function mostrarN(elem, mensaje){
 elem.onmouseout=function(){nota.cerrar();};
 var desplaX=-100,desplaY=-60;
 if(arguments.length==4){
  desplaX+=arguments[2];
	desplaY+=arguments[3];
 }
 Element.update(this.idPContenido,mensaje);
 var pos=Position.cumulativeOffset(elem);
 $(this.idCapaNota).setStyle({left:(pos[0]+desplaX)+"px", top:(pos[1]+desplaY)+"px"});
 Element.show(this.idCapaNota);
 new Effect.Opacity(this.idCapaNota, {duration:0.2, from:1.0, to:0.9});
}

function cerrarN(){Element.hide(this.idCapaNota);}

//Fin Métodos---------------------------------------------------------------------------------------------------

//--------------------------------------------------------------------------------------------------------------
//Clase Ventana
function Ventana(){
 this.idCapaVentana="capa_ventana";
 this.idCapaCierre="capa_cierre_ven";
 this.idCapaIcono="capa_icono_ven";
 this.idDivContenido="capa_cont_ven";
 this.tipoMensaje=0;
 //métodos
 this.mostrar=mostrarV;
 this.cerrar=cerrarV;
//----------------------------------------------
 var objCapaVentana=Builder.node('div',{id:this.idCapaVentana});
 var objCapaCierre=Builder.node('div',{id:this.idCapaCierre});
 objCapaCierre.onclick=function(){Effect.Fade(this.parentNode);};
 objCapaVentana.appendChild(objCapaCierre);
 objCapaVentana.appendChild(Builder.node('div',{id:this.idCapaIcono}));
 objCapaVentana.appendChild(Builder.node('div',{id:this.idDivContenido}));
 d.body.appendChild(objCapaVentana);
 new Effect.Fade(this.idCapaVentana);
 new Draggable(this.idCapaVentana);
}

//Métodos-------------------------------------------------------------------------------------------------------
//mostrar('contenido', 'tipo de mensaje'['error' por defecto])
function mostrarV(){
 Element.update(this.idDivContenido,arguments[0]);
 if(arguments.length==2) this.tipoMensaje=arguments[1];
 else this.tipoMensaje=0; 
 switch(this.tipoMensaje){
  case 0:
	 $(this.idCapaIcono).className='fnderror';
   break;
	case 1:
	 $(this.idCapaIcono).className='fndbien';
   break;
	case 2:
	 $(this.idCapaIcono).className='fndespera';
   break;
	case 3:
	 $(this.idCapaIcono).className='fndninguno';
	 break;
 }
 centrarCapa(this.idCapaVentana);
 new Effect.Appear(this.idCapaVentana);
}

function cerrarV(){new Effect.Fade(this.idCapaVentana);}

//Fin Métodos---------------------------------------------------------------------------------------------------
var mensaje=null, nota=null, ventana=null;

Event.observe(window,'load', function(){mensaje=new Mensaje(); nota=new Nota(); ventana=new Ventana();});

