// JavaScript Document
	var Exito = new function(){
		//
		this.show = function(msj){
			$('msjExito').innerHTML = msj;
			
			var l = $('capaExito');
			l.style.top = (((HScreen() - l.offsetHeight) / 2) + YPos()) + 'px';
			l.style.left = (((WScreen() - l.offsetWidth) / 2) + XPos()) + 'px';
			l.style.visibility = 'visible';
			
			try{ $('aceptarExito').focus(); }catch(e){ ; }
			AddEvent(document, 'keypress', escape);
			AddEvent($('aceptarExito'), 'click', accept);
			AddEvent($('cerrarExito'), 'click', accept);
		}
		
		this.hide = function(){
			RemEvent(document, 'keypress', escape);
			RemEvent($('aceptarExito'), 'click', accept);
			RemEvent($('cerrarExito'), 'click', accept);
			var l = $('capaExito');
			l.style.visibility = 'hidden';
			l.style.top = '-1000px';
		}
		
		this.onAccept = null;
		
		var accept = function(e){
			if(!!e){ StopEvent(e); }
			this.hide();
			if(!!this.onAccept){ this.onAccept(); }
		}.closure(this);
		
		var escape = function(event){
			if(event.keyCode == 27){ accept(); }
		}.closure(this);
		
		//
	}
// JavaScript Document
	var Error = new function(){
		//
		this.show = function(msj){
			$('msjError').innerHTML = msj;
			
			var l = $('capaError');
			l.style.top = (((HScreen() - l.offsetHeight) / 2) + YPos()) + 'px';
			l.style.left = (((WScreen() - l.offsetWidth) / 2) + XPos()) + 'px';
			l.style.visibility = 'visible';
			
			try{ $('aceptarError').focus(); }catch(e){ ; }
			AddEvent(document, 'keypress', escape);
			AddEvent($('aceptarError'), 'click', accept);
			AddEvent($('cerrarError'), 'click', accept);
		}
		
		this.hide = function(){
			RemEvent(document, 'keypress', escape);
			RemEvent($('aceptarError'), 'click', accept);
			RemEvent($('cerrarError'), 'click', accept);
			var l = $('capaError');
			l.style.visibility = 'hidden';
			l.style.top = '-1000px';
		}
		
		this.onAccept = null;
		
		var accept = function(e){
			if(!!e){ StopEvent(e); }
			this.hide();
			if(!!this.onAccept){ this.onAccept(); }
		}.closure(this);
		var escape = function(event){
			if(event.keyCode == 27){ accept(); }
		}.closure(this);
		
		//
	}
// JavaScript Document
function form(nombre, archivo){
	
	var error = $('error' + nombre);
	var loader = $('loader' + nombre);
	
	var enviando = false;
	var errores = 0;
	var aCampos = new Array();
	var aValidar = new Array();
	var aLimpiar = new Array();
	var req = new Request();
	var elemento = false;
	this.moreInfo = '';
	//
	this.onSuccess = null;
	this.onError = null;
	this.onSend = null;
	
	//
	req.listener = function(){

		var d = req.respuestaXML;
		block(false);
		if(!!loader){ loader.style.display = 'none'; }
		if(!d){ alert(req.respuestaHTML); }
		else if(d.getAttribute('exito') == 'si'){
			if(!this.onSuccess){
				block(true);
				Exito.onAccept = onAccept;
				Exito.show(d.firstChild.data);
			}
			else{ this.onSuccess(d); }

		}
		else{
			if(!this.onError){
				block(true);
				Error.onAccept = onAccept;
				Error.show(d.firstChild.data);
			}
			else{ this.onError(d); }
		}

	}.closure(this);
	
	this.pedirExterno = function(archivo,valor){
		req.pedir(archivo,valor);	
	}
	
	this.onAccept = function(){
		onAccept();	
	}
	
	var onAccept = function(){
		clean();
		block(false);
	}.closure(this);
	
	this.addField = function(campo, nombre, expresion, clear){
		var o = {'c':campo, 'n':nombre};
		//
		aCampos.push(o);
		if(expresion){
			campo.expresion = expresion;
			campo.inputError = inputError;

			if(campo.tagName.toLowerCase() != 'select')campo.onblur = funcVal.closure(campo);
			else campo.onchange = funcVal.closure(campo);
			//
			aValidar.push(aCampos.length - 1);
		}
		if(clear){ aLimpiar.push(aCampos.length - 1); }
		return aCampos.length-1;
	}
	
	var clean = function(){
		var i = null;
		//
		for(i in aLimpiar){ aCampos[aLimpiar[i]]['c'].value = ''; }
		for(i in aCampos){ inputError(aCampos[i]['c'], false); }
		errores = 0;
		showError();
	}
	
	this.enter = function(event){
		if(event.keyCode == 13){ this.send(); }
	}.closure(this);
	
	this.send = function(event,sinBlock){
		var v = '', i = null;
		if(!!event){ StopEvent(event); }
		if(!!this.onSend){ this.onSend(); }
		//

		
	
		if(enviando){ return false; }
		else if(validate()){ return false; }
				//
		block(true);
		if(!!loader){ loader.style.display = 'block'; }
		//

		for(i in aCampos){
			v += aCampos[i]['n'] + SEP_IGUAL + trim(aCampos[i]['c'].value) + SEP_AND;
		}
		if(this.moreInfo != ''){ v += this.moreInfo; }
			//
		req.pedir(DIR_ROOT + 'requests/' + archivo + '.php', v);
		return true;
	}.closure(this);
	
	var inputError = function(c, b){
		errores += (b)? 1:0;
		c.className = (b)? 'inputError':'';
	}.closure(this);
	
	var showError = function(){
		error.style.display = (errores > 0)? 'block':'none';
	}
	
	var funcVal = function(){
		this.value = trim(this.value);
		if(this.value.search(this.expresion) == 0 && !this.errorDesactivado){ this.inputError(this, false); }
		else{ this.inputError(this, true); }
	}
	
	var validate = function(){
		var i = null, c;
		//
		errores = 0;
		for(i in aValidar){
			c = aCampos[aValidar[i]]['c'];
			if(!c.disabled){ 
				if(c.tagName.toLowerCase() != 'select')c.onblur();
				else c.onchange();
				
			}
		}
		
		showError();
		return (errores > 0);
	}
	
	this.unblock = function(){
		var i = null;		
		enviando = false;
		for(i in aCampos){ aCampos[i]['c'].disabled = false; }
		
	}
	
	var block = function(b){
		var i = null;
		//
		enviando = b;
		for(i in aCampos){ aCampos[i]['c'].disabled = b; }
	}

}
	
	var ARREGLO_NOTAS = new Array();
	var NOTAS_INICIADAS = false;
	var POSICION_ACTUAL = 0;
	var ESPACIO_INTERVALO = 10000;
	var INTERVALO_TRANSICION = 0;
	var INTERVALO_OPACITY = 0;
	var ESPACIO_OPACITY = 10;	
	var DESCONTAR_OPACITY = 2;
	var OPACITY = 100;
	var asignarMosueOverHome = function(posicion){
		AddEvent(ARREGLO_NOTAS[posicion].categoria,'mouseover',function(){mostrarCatHome(posicion)});
	}

	var setearNotas = function(){
		var i;
		for(i=0;i<3;i++){
			if($('notaHome' + i)){
				ARREGLO_NOTAS[i] = new Object();
				ARREGLO_NOTAS[i].cuadro = $('notaHome' + i);
				ARREGLO_NOTAS[i].categoria = $('categoriaHome' + i);
				asignarMosueOverHome(i);
			}
			else break;
		}
		$('categoriaHome' + POSICION_ACTUAL).className += ' on';		
		if(ARREGLO_NOTAS.length > 0){
			INTERVALO_TRANSICION = setTimeout(function(){mostrarCatHome(((POSICION_ACTUAL+1)%3))},ESPACIO_INTERVALO);
		}
	}
	var mostrarCatHome = function(posicion){
		clearInterval(INTERVALO_TRANSICION);
		if(posicion != POSICION_ACTUAL){
			clearInterval(INTERVALO_OPACITY);
			OPACITY = 100;
			mostrarBlocker();
			ARREGLO_NOTAS[POSICION_ACTUAL].cuadro.style.display = 'none';
			$('categoriaHome' + POSICION_ACTUAL).className = $('categoriaHome' + POSICION_ACTUAL).className.replace(' on','');
			POSICION_ACTUAL = posicion;
			if(!ARREGLO_NOTAS[POSICION_ACTUAL])POSICION_ACTUAL = 0;
			ARREGLO_NOTAS[POSICION_ACTUAL].cuadro.style.display = 'block';			
			if($('categoriaHome' + POSICION_ACTUAL).className.substr($('categoriaHome' + POSICION_ACTUAL).className.length-3) != ' on')$('categoriaHome' + POSICION_ACTUAL).className += ' on';

		}
		INTERVALO_TRANSICION = setTimeout(function(){mostrarCatHome(((POSICION_ACTUAL+1)%3))},ESPACIO_INTERVALO);		
	}
	var mostrarBlocker = function(){
		$('blockerTopHome').style.display = 'block';
		OPACITY = OPACITY - DESCONTAR_OPACITY;
		setOpacity(OPACITY,$('blockerTopHome'));
		if(OPACITY > 0){
			INTERVALO_OPACITY = setTimeout(function(){mostrarBlocker()},ESPACIO_OPACITY);
		}
		else $('blockerTopHome').style.display = 'none';
	}
	AddEvent(window,'load',setearNotas);
	
