// JavaScript Document
var oPresupuesto = new function(){
	

	//A
	this.analizarTecla = function(e){
		if(e.keyCode == 13)this.guardarConfiguracion();
	}
	var analizarErroresSeleccionados = function(){
		var errores = false;
		var arrTemp = devolverArregloCookie();
		if(arrTemp['cantidad'] == 0){

			$('errorSinProductos').style.display = 'block';
			errores = true;
		}
		else{
			$('errorSinProductos').style.display = 'none';
			
			if(existenCantidadesErroneas()){
				$('errorCantidades').style.display = 'block';
				errores = true;
			}
			else $('errorCantidades').style.display = 'none';
			
		}
		return errores;
	}

	//C
	this.cambiarPaso = function(paso,e){
		this.iniciar();
		if(paso == 1){
			contPaso2.style.display = 'none';
			contPaso1.style.display = 'block';
			btnPaso1.style.display = 'none';
			btnPaso2.style.display = 'block';			
		}
		else{
			if(!analizarErroresSeleccionados()){
				contPaso1.style.display = 'none';
				contPaso2.style.display = 'block';
				btnPaso1.style.display = 'block';
				btnPaso2.style.display = 'none';			
				
			}
		}
		if(e)StopEvent(e);
	}	
	this.agregarProducto = function(idProducto,nombreProducto,e){
		this.iniciar();
		if(!cantidadPresupuesto){
			iniciado = false;
			return false;
		}
		mostrarBlockeador(true);
		cantidadPresupuesto.className = '';
		errorConfPresupuesto.style.display = 'none';		
		accion = 'cargarConfiguracion';
		idProductoActual = idProducto;
		MostrarContenido(CuadPres);
		nombreProductoPresupuesto.innerHTML = nombreProducto;
		cantidadPresupuesto.value = 1;
		if(e)StopEvent(e);
	}
	this.confirmarQuitarProducto = function(idProducto,e){
		if(!iniciado)this.iniciar();
		mostrarBlockeador(true);
		Confirmer.message = '¿Está seguro que desea quitar este producto de los seleccionados?';	
		Confirmer.onAcept = function(){
			quitarProducto(idProducto);
			Confirmer.hide();
		};
		Confirmer.onCancel = function(){mostrarBlockeador()};
		Confirmer.show();
		if(e)StopEvent(e);
	}
	this.confirmarQuitarProductoTodo = function(e){
		if(!iniciado)this.iniciar();
		mostrarBlockeador(true);
		Confirmer.message = '¿Está seguro que desea quitar todos los productos seleccionados?';	
		Confirmer.onAcept = function(){
			quitarProductos();
			Confirmer.hide();
		};
		Confirmer.onCancel = function(){mostrarBlockeador()};
		Confirmer.show();	
		if(e)StopEvent(e);
	}	
	var cerrarConfiguracion = function(){
		mostrarBlockeador();
		OcultarContenido(CuadPres);
	}
	var cerrarVistaPrevia = function(){
		mostrarBlockeador();
		OcultarContenido(cuadroPrevia);
	}	
	var crearCuadro = function(idProducto,nombre){
		var presupuestoSelec = cTag('div','presupuestoSelec');
		presupuestoSelec.id = 'cuadroSeleccionado'+idProducto;
		var label = cTag('label');
		label.innerHTML = 'Cantidad';
		presupuestoSelec.appendChild(label);
		var input = cTag('input');
		input.id = 'cantidadProducto'+idProducto;
		input.type = 'text';
		input.value = 1;
		presupuestoSelec.appendChild(input);
		var nom = cTag('span');
		nom.innerHTML = nombre;
		presupuestoSelec.appendChild(nom);
		var floatFix = cTag('div','floatFix');
		presupuestoSelec.appendChild(floatFix);
		
		var a = cTag('a','presupuestoBtnEliminar');
		a.href = '#';
		var span = cTag('span');
		span.innerHTML = 'Eliminar';
		a.appendChild(span);
		presupuestoSelec.appendChild(a);
		contSeleccionados.appendChild(presupuestoSelec);
		
		AddEvent(input,'blur',function(){evaluarCantidad(input)});
		if(Nav.esIE)AddEvent(a,'click',function(){this.confirmarQuitarProducto(idProducto,event)}.closure(this));
		else AddEvent(a,'click',function(){this.confirmarQuitarProducto(idProducto)}.closure(this));
		FireEvent(input,'blur');
	
	}.closure(this);
	var cargarConfiguracion = function(idProducto,cantidad,desdeCuadro){
		var valCook = oCookie.get('presupuesto');
		if(valCook == ''){
			var ArrTemp = new Array();
			ArrTemp['cantidad'] = 0;
			ArrTemp['productos'] = new Array();
			valCook = serialize(ArrTemp);
		}
		else{
			var ArrTemp = unserialize(valCook);
		}
		var sum = 0;
		var restar = 0;
		if(ArrTemp['productos'][idProducto]){
			sum = ArrTemp['productos'][idProducto];
		}
		if(!desdeCuadro){
			ArrTemp['productos'][idProducto] = parseInt(cantidad) + parseInt(sum);
			ArrTemp['cantidad']	= ArrTemp['cantidad'] + parseInt(cantidad);
		}
		else{
			ArrTemp['productos'][idProducto] = cantidad;
			ArrTemp['cantidad']	= ArrTemp['cantidad'] + (cantidad - sum);
		}

		oCookie.set('presupuesto',serialize(ArrTemp));
		actualizarCantidades();		
	}
	var crearError = function(campo,mensaje,expresion){
		campo.expresion = expresion;
		campo.onblur = function(){
			campo.value = trim(campo.value);
			if(!campo.expresion.test(campo.value.toLowerCase()))mostrarError(campo);
			else ocultarError(campo);
		}
	}
	var mostrarError = function(campo){
		totalErrores++;
		campo.className = "errorInput";
		
	}
	var ocultarError = function(campo){
		campo.className = '';
	}

	//D
	var devolverArregloCookie = function(){
		var valCook = oCookie.get('presupuesto');
		if(valCook == ''){
			var ArrTemp = new Array();
			ArrTemp['cantidad'] = 0;
			ArrTemp['productos'] = new Array();
			valCook = serialize(ArrTemp);
		}
		else{
			var ArrTemp = unserialize(valCook);
		}
		return ArrTemp;			
	}

	//E
	this.evaluarCantidad = function(campoCantidad){
		evaluarCantidad(campoCantidad);
	}
	this.enviarPresupuesto = function(e){
		totalErrores = 0;
		$('divError').style.display = 'none';
		FireEvent(nombre,'blur');
		FireEvent(apellido,'blur');
		FireEvent(email,'blur');
		FireEvent(mensaje,'blur');		
		if((analizarErroresSeleccionados()) || totalErrores > 0){
			if(totalErrores > 0)$('divError').style.display = 'block';			
		}
		else{
			
			mostrarBlockeador(true);
			Loader.show();
			accion = 'pedirPresupuesto'
			var v = 'nombre' + SEP_IGUAL + trim(nombre.value) + SEP_AND + 'apellido' + SEP_IGUAL + trim(apellido.value) + SEP_AND + 'direccion' + SEP_IGUAL + trim(direccion.value) + SEP_AND + 'provincia' + SEP_IGUAL + trim(provincia.value) + SEP_AND;
			v += 'ciudad' + SEP_IGUAL + trim(ciudad.value) + SEP_AND + 'telefono' + SEP_IGUAL + trim(telefono.value) + SEP_AND + 'email' + SEP_IGUAL + trim(email.value) + SEP_AND + 'mensaje' + SEP_IGUAL + trim(mensaje.value) + SEP_AND;
			v += 'accion' + SEP_IGUAL + accion + SEP_AND + 'pais' + SEP_IGUAL + trim(pais.value) + SEP_AND;
			req.pedir(archivo,v);
		}
		if(e)StopEvent(e);
	}
	var existenCantidadesErroneas = function(){
		var ret = false;
		var i;
		var arrTemp = devolverArregloCookie();
		for(i in arrTemp['productos']){
			if($('cantidadProducto'+i) && $('cantidadProducto'+i).className == 'errorInput'){
				ret = true;
				break;
			}
		}
		return ret;
	}
	var evaluarCantidad = function(campoCantidad){
		if(!ER_NATURAL_NOCERO.test(campoCantidad.value)){
			campoCantidad.className = 'errorInput';
		}
		else{
			campoCantidad.className = '';
			cargarConfiguracion(campoCantidad.id.replace('cantidadProducto',''),campoCantidad.value,true);			
		}
	}

	//F
	this.filtrarCategoria = function(idCategoria,pagina,e){
		this.iniciar();

		if(iniciado){
			mostrarLoaderCategoria(true);
			accion = 'filtrarCategoria';
			var page = 0;			
			if(pagina)page = pagina;
			req.pedir(archivo,'idCategoria' + SEP_IGUAL + idCategoria + SEP_AND + 'accion' + SEP_IGUAL + accion + SEP_AND + 'pagina' + SEP_IGUAL + page + SEP_AND);
		}
		if(e)StopEvent(e);			
	}
	var estaSeleccionado = function(idProducto){
		var ret = false;
		var valCook = oCookie.get('presupuesto');
		if(valCook != ''){
			var ArrTemp = unserialize(valCook);
			if(ArrTemp['productos'] && ArrTemp['productos'][idProducto])ret = true;
		}
		return ret;
	}
	
	//G
	this.guardarConfiguracion = function(e){
		if(!ER_NATURAL_NOCERO.test(cantidadPresupuesto.value)){
			cantidadPresupuesto.className = 'errorInput';
			errorConfPresupuesto.style.display = 'block';
		}
		else{
			cargarConfiguracion(idProductoActual,cantidadPresupuesto.value);
			OcultarContenido(CuadPres);
			Exito.message = $('exitoConfPresupuesto').innerHTML;
			Exito.onAcept = Exito.onCancel = function(){
				Exito.hide();
				mostrarBlockeador();
			}
			Exito.show();
			
		}
		if(e)StopEvent(e);
	}
	
	//I
	this.iniciar = function(){
		if(!iniciado){
			nombreProductoPresupuesto = $('nombreProductoPresupuesto');
			if(nombreProductoPresupuesto){
				loaderCat = $('loaderCat');
				if(loaderCat){
					izquierda = $('izquierda');
					blockerCat = $('blockerCat');
					contFiltrados = $('contFiltrados');
					contSeleccionados = $('contSeleccionados');
					errorSinProductos = $('errorSinProductos');
					errorCantidades = $('errorCantidades');
					setOpacity(75,blockerCat);
					contPaso1 = $('contPaso1');
					contPaso2 = $('contPaso2');
					nombre = $('nombre');
					apellido = $('apellido');
					direccion = $('direccion');
					pais = $('pais');
					provincia = $('provincia');
					ciudad = $('ciudad');
					telefono = $('telefono');
					email = $('email');
					mensaje = $('mensaje');
					btnPaso1 = $('btnPaso1');
					btnPaso2 = $('btnPaso2');
					cuadroPrevia = $('contVistaPrevia');
					contPrevia = $('contPrevia');
					loaderPrevia = $('loaderPrevia');					
					
					
					crearError(nombre,'',ER_STR);
					crearError(apellido,'',ER_STR);
					crearError(pais,'',ER_STR);
					crearError(provincia,'',ER_STR);
					crearError(ciudad,'',ER_STR);					
					crearError(email,'',ER_EMAIL);					
					crearError(mensaje,'',ER_STR);		
					AddEvent($('cerrarVistaPrevia'),'click',cerrarVistaPrevia);
			
				}
				msgPresupuestoTop = $('msgPresupuestoTop');
				contMsgPresupuestoTop = $('contMsgPresupuestoTop');
				CuadPres = $('contConfPresupuesto');
				cantidadPresupuesto = $('cantidadPresupuesto');
				errorConfPresupuesto = $('errorConfPresupuesto');
				presupuestoMenuCat = $('presupuestoMenuCat');
				AddEvent($('cerrarConfPresupuesto'),'click',cerrarConfiguracion)

				iniciado = true;				
			}
		}
	}
	var buscarHTML = function(cuadro,clase){
		var i,ret;
		for(i=0;i<cuadro.childNodes.length;i++){
			if(cuadro.childNodes[i].className && cuadro.childNodes[i].className.toLowerCase() == clase.toLowerCase()){
				ret = cuadro.childNodes[i];
				break;
			}
		}
		return ret;
	}
	
	//M
	var mostrarLoaderCategoria = function(mostrar){
		if(mostrar){		
			blockerCat.style.width = izquierda.offsetWidth+'px';
			blockerCat.style.height = izquierda.offsetHeight+'px';
			loaderCat.style.marginTop = Math.round((izquierda.offsetHeight-30)/2)+'px';
			loaderCat.style.marginLeft = Math.round((izquierda.offsetWidth-80)/2)+'px';			
			loaderCat.style.display = 'block';
			blockerCat.style.display = 'block';			
		}
		else{
			loaderCat.style.display = 'none';
			blockerCat.style.display = 'none';
		}
	}

	//O
	var obtenerCantidad = function(idProducto){
		var ret = 1;
		var valCook = oCookie.get('presupuesto');
		if(valCook != ''){
			var ArrTemp = unserialize(valCook);
			if(ArrTemp['productos'] && ArrTemp['productos'][idProducto])ret = ArrTemp['productos'][idProducto];
		}
		return ret;
	}
	
	//L
	var listener = function(){
		var d = req.respuestaXML;	
		if(d){
			if(accion == 'filtrarCategoria'){
				presupuestoMenuCat.innerHTML = d.firstChild.firstChild.data;
				contFiltrados.innerHTML = d.childNodes[1].firstChild.data;
				mostrarLoaderCategoria();
			}
			else if(accion == 'pedirPresupuesto'){
				if(d.firstChild.getAttribute('exito') == 1){
					Exito.message = d.firstChild.firstChild.data;
					Exito.onAcept = Exito.onCancel = function(){
						Exito.hide();
						limpiarCampos();
						mostrarBlockeador();
					}
					Exito.show();
				}
				else{
					Error.message = d.firstChild.firstChild.data;
					Error.onAcept = Error.onCancel = function(){
						Error.hide();
						mostrarBlockeador();
					}
					Error.show();
				}
				Loader.hide();
			}
			else if(accion == 'vistaPrevia'){
				loaderPrevia.style.display = 'none';

				if(Nav.esIE)contPrevia.innerHTML = d.firstChild.data;
				else contPrevia.innerHTML = d.childNodes[1].data;
				if($('contBotonesFicha'))$('contBotonesFicha').style.display = 'none';
				if($('contProductoTools'))$('contProductoTools').style.display = 'none';
				
			}
		}
		else{

				mostrarBlockeador();
				Loader.hide();
		}
	}
	var limpiarCampos = function(){
		var i;
		mensaje.value = '';
		var ArrTemp = devolverArregloCookie();
		if(ArrTemp['productos']){
			for(i in ArrTemp['productos']){
				quitarProducto(i);	
			}
		}
		this.cambiarPaso(1);
	}.closure(this);

	//P
	this.previsualizar = function(idProducto,e){
		this.iniciar();
		contPrevia.innerHTML = '';
		loaderPrevia.style.display = 'block';
		MostrarContenido(cuadroPrevia);
		mostrarBlockeador(true);
		accion = 'vistaPrevia';
		req.pedir(URL_ROOT + 'requests/vistaPrevia.php','idProducto' + SEP_IGUAL + idProducto + SEP_AND);
		if(e)StopEvent(e);
		
	}

	//Q
	var quitarProducto = function(idProducto){
		if($('cuadroSeleccionado'+idProducto))$('cuadroSeleccionado'+idProducto).parentNode.removeChild($('cuadroSeleccionado'+idProducto));
		if($('btnAgregar'+idProducto)){
			$('btnAgregar'+idProducto).style.visibility = 'visible';
			$('btnAgregar'+idProducto).parentNode.parentNode.className = '';
		}
		var ArrTemp = devolverArregloCookie();
		ArrTemp['cantidad'] = ArrTemp['cantidad'] - ArrTemp['productos'][idProducto];		
		delete(ArrTemp['productos'][idProducto]);
		if(contSeleccionados.innerHTML == '')ArrTemp['cantidad'] = 0;
		setearArregloCookie(ArrTemp);
		actualizarCantidades();
		mostrarBlockeador();
	}	
	var quitarProductos = function(){
		var ArrTemp = devolverArregloCookie();
		if(ArrTemp['productos']){
			for(i in ArrTemp['productos']){
				quitarProducto(i);	
			}
		}
	}

	var actualizarCantidades = function(){
		this.iniciar();
		var ArrTemp = devolverArregloCookie();
		var msj = '';
		if(ArrTemp['cantidad'] && ArrTemp['cantidad'] > 0){
			if(ArrTemp['cantidad'] != 1)msj = ArrTemp['cantidad']+' productos';
			else msj = '1 producto seleccionado';
			contMsgPresupuestoTop.style.display = 'block';
			if($('botonEliminarTodo'))$('botonEliminarTodo').style.display = 'block';
		}
		else{
			msj = 'No existen productos seleccionados';	
			contMsgPresupuestoTop.style.display = 'none';
			if($('botonEliminarTodo'))$('botonEliminarTodo').style.display = 'none';
		}
		msgPresupuestoTop.innerHTML = msj;
		if($('cantidadSelPresupuesto')){
			$('cantidadSelPresupuesto').innerHTML = msj;
		}
	}.closure(this);
	//S
	this.seleccionarProducto = function(idProducto,linea,e){
		if(!estaSeleccionado(idProducto)){

			if(Nav.esIE)crearCuadro(idProducto,linea.childNodes[1].innerHTML);
			else crearCuadro(idProducto,linea.childNodes[3].innerHTML);
			linea.className = 'selec';
			if($('btnAgregar'+idProducto))$('btnAgregar'+idProducto).style.visibility = 'hidden';
			actualizarCantidades();

		}

		if(e)StopEvent(e);		
	}
	var setearArregloCookie = function(Arreglo){
		oCookie.set('presupuesto',serialize(Arreglo));
	}

	//VARIABLES
	var iniciado = false;
	var archivo = URL_ROOT + 'requests/presupuesto.php';
	var loaderCat = null;
	var blockerCat = null;
	var contFiltrados = null;
	var contSeleccionados = null;
	var nombreProductoPresupuesto = null;
	var presupuestoMenuCat = null;
	var cantidadPresupuesto = null;
	var errorConfPresupuesto = null;
	var izquierda = null;
	var CuadPres = null;
	var contPaso1 = null;
	var contPaso2 = null;
	var errorSinProductos = null;
	var errorCantidades = null;
	var nombre = null;
	var apellido = null;
	var pais = null;
	var direccion = null;
	var provincia = null;
	var ciudad = null;
	var telefono = null;
	var email = null;
	var mensaje = null;
	var contMsgPresupuestoTop = null;
	var msgPresupuestoTop = null;
	var totalErrores = 0;
	var idProductoActual = 0;
	var btnPaso1 = null;
	var btnPaso2 = null;
	var cuadroPrevia = null;
	var contPrevia = null;
	var loaderPrevia = null;
	var accion = '';
	var req = new Request(listener);
}