// JavaScript Document
var oCarroGeneral = new function(){
	
	//A
	this.analizarTeclaRegistro = function(e){
		if(e.keyCode == 13)this.enviarRegistro();
	}	
	this.analizarTeclaLogin = function(e){
		if(e.keyCode == 13)this.login();
	}	
	
	this.abrirPop = function(a,tipo,e){
		if(e)StopEvent(e);
		tipoApertura = tipo;		
		if(!popSeteado){
			if(!cargandoPop){
				aTemp = a;
				cargandoPop = true;
				Blocker.show();
				Loader.show();
				reqType = 'cargarPop';
				enviar(DIR_ROOT + 'requests/cargar.php','file' + SEP_IGUAL + '../includes/popCarroCompra.php' + SEP_AND);				
			}
		}
		else{
			aTemp = a;
			this.cambiarForma(tipo);
			oPop.open(a);
			
		}
	}	
	this.agregarProducto = function(idElemento,tipoElemento,titulo,e,continuar){
		$('contCantidadItemsTop').parentNode.style.display = 'block';				
		var cookProducto = oCookie.get('productosCarro');
		var clave = tipoElemento + '-' + idElemento;
		var ArrProducto = new Array();
		if(cookProducto){
			ArrProducto = unserialize(cookProducto);
		}
		if(!ArrProducto[clave]){
			ArrProducto[clave] = new Array();
			ArrProducto[clave]['cantidad'] = 0;
		}
		if(tipoElemento != 'producto')ArrProducto[clave]['cantidad'] = 0;
		clearInterval(intervaloMostrar);
		intervaloMostrar = 0;
		ArrProducto[clave]['cantidad']++;
		$('nombreProductoAdicionado').innerHTML = titulo;
		$('contNombreProductoAdicionado').style.display = 'block';
		setTimeout(function(){$('contNombreProductoAdicionado').style.display = 'none'},5000);
		var serCook = serialize(ArrProducto);
		oCookie.set('productosCarro', serCook);
		var cantidad = 0;
		var i;
		for(i in ArrProducto){
			cantidad++;
		}
		$('cantidadItemsTop').innerHTML = cantidad;		
		$('contCantidadItemsTop').style.display = 'block';

		var ArrProducto = new Array();
		
		if(!continuar)if(e)StopEvent(e);
	}
	
	//C
	this.comprarPista = function(idPista,linkPista,e){
		var cookPista = oCookie.get('pistasCarro');
		var ArrPista = new Array();
		if(!ArrPista[idPista]){
			ArrPista[idPista] = new Array();
			ArrPista[idPista]['cantidad'] = 1;
		}
		var serCook = serialize(ArrPista);
		oCookie.set('pistasCarro', serCook);
		document.location = linkPista;
		if(e)StopEvent(e);
	}
	this.cambiarForma = function(tipo,e){
		if(tipo == 'login'){
			$('layPopRegistroCarro').style.display = 'none';
			$('layPopCarro').style.display = 'block';			
			$('contLoginCarro').style.display = 'block';
			$('contRecuperarContrasena').style.display = 'none';
		}
		else if(tipo == 'recuperar'){
			$('layPopRegistroCarro').style.display = 'none';			
			$('layPopCarro').style.display = 'block';
			$('contLoginCarro').style.display = 'none';
			$('contRecuperarContrasena').style.display = 'block';
		}
		else if(tipo == 'registro'){
			$('layPopCarro').style.display = 'none';		
			$('layPopRegistroCarro').style.display = 'block';
			MostrarContenido($('layPopRegistroCarro'));
			$('contLoginCarro').style.display = 'none';
			$('contRecuperarContrasena').style.display = 'none';
		}
		if(e)StopEvent(e);
	}	

	//E
	
	this.enviarRegistro = function(evt){
		var error = false, t = '';
		$('errorYaRegistradoRegistroCarro').style.display = 'none';
		$('errorCamposRegistroCarro').style.display = 'none';
		if(evt){ StopEvent(evt); }
		if(!listo){ return false; }

		nombreRegistro.onblur();
		if(nombreRegistro.parentNode.className == errorClass){ error = true; }
		
		apellidoRegistro.onblur();
		if(apellidoRegistro.parentNode.className == errorClass){ error = true; }

		direccionRegistro.onblur();
		if(direccionRegistro.parentNode.className == errorClass){ error = true; }

		telefonoRegistro.onblur();
		if(telefonoRegistro.parentNode.className == errorClass){ error = true; }


		emailRegistro.onblur();
		if(emailRegistro.parentNode.className == errorClass){ error = true; }

		cpRegistro.onblur();
		if(cpRegistro.parentNode.className == errorClass){ error = true; }


		provinciaRegistro.onblur();
		if(provinciaRegistro.parentNode.className == errorClass){ error = true; }
		
		ciudadRegistro.onblur();
		if(ciudadRegistro.parentNode.className == errorClass){ error = true; }

		contrasenaRegistro.onblur();
		if(contrasenaRegistro.parentNode.className == errorClass){ error = true; }

		confirmarContrasenaRegistro.onblur();
		if(confirmarContrasenaRegistro.parentNode.className == errorClass){ error = true; }
		$('errorYaRegistradoRegistroCarro').style.display = 'none';
		
		if(trim(contrasenaRegistro.value) != trim(confirmarContrasenaRegistro.value)){
			$('errorContrasenaRegistroCarro').style.display = 'block';
		}
		else{
			$('errorContrasenaRegistroCarro').style.display = 'none';
		}
		
		
		if(error){
			$('errorCamposRegistroCarro').style.display = 'block';
			return false;
		}
		else{
			$('errorCamposRegistroCarro').style.display = 'none';
		}
		
		
		listo = false;
		reqType = 'registroPop';

		t += 'tipo' + SEP_IGUAL + reqType + SEP_AND;
		t += 'nombre' + SEP_IGUAL + trim(nombreRegistro.value) + SEP_AND;
		t += 'apellido' + SEP_IGUAL + trim(apellidoRegistro.value) + SEP_AND;
		t += 'email' + SEP_IGUAL + trim(emailRegistro.value) + SEP_AND;
		t += 'idPais' + SEP_IGUAL + trim(paisRegistro.value) + SEP_AND;
		t += 'idProvincia' + SEP_IGUAL + trim(provinciaRegistro.value) + SEP_AND;
		t += 'idCiudad' + SEP_IGUAL + trim(ciudadRegistro.value) + SEP_AND;
		t += 'nombreProvincia' + SEP_IGUAL + trim(provinciaRegistroNombre.value) + SEP_AND;
		t += 'nombreCiudad' + SEP_IGUAL + trim(ciudadRegistroNombre.value) + SEP_AND;
		t += 'direccion' + SEP_IGUAL + trim(direccionRegistro.value) + SEP_AND;
		t += 'cp' + SEP_IGUAL + trim(cpRegistro.value) + SEP_AND;
		t += 'telefono' + SEP_IGUAL + trim(telefonoRegistro.value) + SEP_AND;

		t += 'usuario' + SEP_IGUAL + trim(usuarioRegistro.value) + SEP_AND;
		t += 'contrasena' + SEP_IGUAL + trim(contrasenaRegistro.value) + SEP_AND;
		t += 'confirmarContrasena' + SEP_IGUAL + trim(confirmarContrasenaRegistro.value) + SEP_AND;			

		Loader.show();
		$('layPopCarro').style.visibility = 'hidden';

		enviar(DIR_ROOT + 'requests/carro.php', t);
	}			
	var enviar = function(archivo,v){
		if(!req)req = new Request(listener);
		req.pedir(archivo,v);
	}	

	//I
	var inicializarPop = function(){
		oPop = new layer('PopCarro','');	
		oPop.sinScroll = true;
		
		usuario = $('usuarioLoginCarro');
		contrasena = $('contrasenaLoginCarro');		
		
		
		
		nombreRegistro = $('nombreRegistroCarro');
		if(!nombreRegistro.onblur){
			nombreRegistro.onblur = function(){
				var v = trim(this.value);
				if(v == '' || v.length < 3){ this.parentNode.className = errorClass; }
				else{ this.parentNode.className = ''; }
			}.closure(nombreRegistro);
		}
		
		apellidoRegistro = $('apellidoRegistroCarro');
		if(!apellidoRegistro.onblur){
			apellidoRegistro.onblur = function(){
				var v = trim(this.value);
				if(v == '' || v.length < 3){ this.parentNode.className = errorClass; }
				else{ this.parentNode.className = ''; }
			}.closure(apellidoRegistro);
		}
		
		emailRegistro = $('emailRegistroCarro');
		usuarioRegistro = $('usuarioRegistroCarro');
		if(!emailRegistro.onblur){
			emailRegistro.onblur = function(){
				var v = trim(this.value);
				if(v == '' || v.length < 3){ this.parentNode.className = errorClass; }
				else{ this.parentNode.className = ''; }
				usuarioRegistro.value = trim(emailRegistro.value);
			}.closure(emailRegistro);
		}		
	
		direccionRegistro = $('direccionRegistroCarro');
		if(!direccionRegistro.onblur){
			direccionRegistro.onblur = function(){
				var v = trim(this.value);
				if(v == '' || v.length < 3){ this.parentNode.className = errorClass; }
				else{ this.parentNode.className = ''; }
			}.closure(direccionRegistro);
		}
		
		cpRegistro = $('cpRegistroCarro');
		if(!cpRegistro.onblur){
			cpRegistro.onblur = function(){
				var v = trim(this.value);
				if(v == '' || v.length < 3){ this.parentNode.className = errorClass; }
				else{ this.parentNode.className = ''; }
			}.closure(cpRegistro);
		}
		
		telefonoRegistro = $('telefonoRegistroCarro');
		if(!telefonoRegistro.onblur){
			telefonoRegistro.onblur = function(){
				var v = trim(this.value);
				if(v == '' || v.length < 3){ this.parentNode.className = errorClass; }
				else{ this.parentNode.className = ''; }
			}.closure(telefonoRegistro);
		}		
				
				
				
		paisRegistro = $('paisRegistroCarro');
		if(!paisRegistro.onchange){
			paisRegistro.onchange = function(){
				provinciaRegistro.disabled = ciudadRegistro.disabled = true;
				
				provinciaRegistroNombre.style.display = ciudadRegistroNombre.style.display = 'none';
				
				reqType = 'provincias';
				
				var v = 'tipo' + SEP_IGUAL + reqType + SEP_AND;
				v += 'idPais' + SEP_IGUAL + $('paisRegistroCarro').value + SEP_AND;
				
				enviar(DIR_ROOT + 'requests/zonas_geograficas.php', v);
			};
		}
		provinciaRegistro = $('provinciaRegistroCarro');
		provinciaRegistroNombre = $('provinciaNombreRegistroCarro');		
		if(!provinciaRegistro.onchange){
			provinciaRegistro.onchange = function(){
				
				var v = trim(provinciaRegistro.value);
				
				ciudadRegistro.disabled = true;
				provinciaRegistroNombre.style.display = (v == '0')? '' : 'none';
				ciudadRegistroNombre.style.display = 'none';
				
				if(erNumero.test(v) && v != ''){
					
					reqType = 'ciudades';
					
					var v = 'tipo' + SEP_IGUAL + reqType + SEP_AND;
					v += 'idProvincia' + SEP_IGUAL + provinciaRegistro.value + SEP_AND;
					
					enviar(DIR_ROOT + 'requests/zonas_geograficas.php', v);
				}
			};
		}
		if(!provinciaRegistro.onblur){
			provinciaRegistro.onblur = function(){
				var v = trim(this.value);
				if(v == '' || !erNumero.test(v)){ this.parentNode.className = errorClass; }
				else{ provinciaRegistroNombre.onblur(); }
			}.closure(provinciaRegistro);
		}
		if(!provinciaRegistroNombre.onblur){
			provinciaRegistroNombre.onblur = function(){
				var v = trim(this.value);
				if(provinciaRegistro.value == '0' && (v == '' || v.length < 3)){ this.parentNode.className = errorClass; }
				else{ this.parentNode.className = ''; }
			}.closure(provinciaRegistroNombre);
		}
		
		ciudadRegistro = $('ciudadRegistroCarro');
		ciudadRegistroNombre = $('ciudadNombreRegistroCarro');		
		
		
		if(!ciudadRegistro.onchange){
			ciudadRegistro.onchange = function(){
				var v = trim(ciudadRegistro.value);
				ciudadRegistroNombre.style.display = (v == '0')? '' : 'none';
			};
		}
		if(!ciudadRegistro.onblur){
			ciudadRegistro.onblur = function(){
				var v = trim(this.value);
				if(v == '' || !erNumero.test(v)){ this.parentNode.className = errorClass; }
				else{ ciudadRegistroNombre.onblur(); }
			}.closure(ciudadRegistro);
		}
		if(!ciudadRegistroNombre.onblur){
			ciudadRegistroNombre.onblur = function(){
				var v = trim(this.value);
				if(ciudadRegistro.value == '0' && (v == '' || v.length < 3)){ this.parentNode.className = errorClass; }
				else{ this.parentNode.className = ''; }
			}.closure(ciudadRegistroNombre);
		}
		
		contrasenaRegistro = $('contrasenaRegistroCarro');
		confirmarContrasenaRegistro = $('confirmarContrasenaRegistroCarro');
		errorContrasena = $('errorContrasenaRegistroCarro');
		if(!contrasenaRegistro.onblur){
			contrasenaRegistro.onblur = function(){
				var v = trim(this.value);
				if(v == '' || v.length < 3|| confirmarContrasenaRegistro.value != contrasenaRegistro.value){ 
					this.parentNode.className = errorClass; 
					if(trim(contrasenaRegistro.value) != trim(confirmarContrasenaRegistro.value)){
						errorContrasena.style.display = 'block';
					}
					else{
						errorContrasena.style.display = 'none';
					}
				}
				else{ 
					this.parentNode.className = '';
					confirmarContrasenaRegistro.parentNode.className = '';
					errorContrasena.style.display = 'none';
				}
			}.closure(contrasenaRegistro);
		}
		if(!confirmarContrasenaRegistro.onblur){
			confirmarContrasenaRegistro.onblur = function(){
				var v = trim(this.value);
				if(v == '' || confirmarContrasenaRegistro.value != contrasenaRegistro.value){ 
					this.parentNode.className = errorClass; 
					if(trim(contrasenaRegistro.value) != trim(confirmarContrasenaRegistro.value)){
						errorContrasena.style.display = 'block';
					}
					else{
						errorContrasena.style.display = 'none';
					}
					
				}
				else{ 
					this.parentNode.className = '';
					contrasenaRegistro.parentNode.className = '';
					errorContrasena.style.display = 'none';						
				}

			}.closure(confirmarContrasenaRegistro);
		}
	   	AddEvent($('cerrarPopCarro'), 'click', oPop.close);
		
		
	}

	//L

	this.login = function(e){
		var error = false;
		if(trim(usuario.value) == ''){
			$('errorUsuarioLogin').style.display = 'block';
			error = true;
		}
		else $('errorUsuarioLogin').style.display = 'none';

		if(trim(contrasena.value) == ''){
			$('errorContrasenaLogin').style.display = 'block';
			error = true;
		}
		else $('errorContrasenaLogin').style.display = 'none';
		
		if(!error){
			reqType = 'logueo';
			var v = 'tipo' + SEP_IGUAL + reqType + SEP_AND;
			v += 'usuario' + SEP_IGUAL + trim(usuario.value) + SEP_AND;
			v += 'contrasena' + SEP_IGUAL + trim(contrasena.value) + SEP_AND;			
			Loader.show();
			$('layPopCarro').style.visibility = 'hidden';
			enviar(DIR_ROOT + 'requests/carro.php', v);
		}

		if(e)StopEvent(e);
	}	
	this.logout = function(e){
		reqType = 'logout';
		var v = 'tipo' + SEP_IGUAL + reqType + SEP_AND;
		Loader.show();
		enviar(DIR_ROOT + 'requests/carro.php', v);
		if(e)StopEvent(e);
	}			
	var limpiarCamposRegistro = function(){
		nombreRegistro.value = '';
		apellidoRegistro.value = '';
		direccionRegistro.value = '';
		telefonoRegistro.value = '';
		emailRegistro.value = '';
		cpRegistro.value = '';		
		contrasenaRegistro.value = '';
		confirmarContrasenaRegistro.value = '';
	}	

	var listener = function(){
		var d = req.respuestaXML;
		listo = true;
		if(!d){ alert(req.respuestaHTML); }
		else if(reqType == 'cargarPop'){
			cargarHTMLRequest(d.firstChild.data);
			inicializarPop();
			popSeteado = true;		
			Blocker.hide();
			Loader.hide();
			this.abrirPop(aTemp,tipoApertura);
		}
		else if(reqType == 'logueo'){
			if(d.getAttribute('tipo') == 'exito'){
				if(!this.cuandoLogueo){
					location.reload();
					
				}
				else this.cuandoLogueo();
			}
			else{
				var i;
				var errores = d.getAttribute('errores').split(',');

				for(i=0;i<errores.length;i++){
					if($('error' + errores[i] + 'Login')){
						if(errores[i] == 'Inexistente')$('error' + errores[i] + 'Login').innerHTML = d.firstChild.data;							
						$('error' + errores[i] + 'Login').style.display = 'block';
					}
				}
				$('layPopCarro').style.visibility = 'visible';
			}
			
			Loader.hide();
		}	
		else if(reqType == 'registroPop'){
			if(d.getAttribute('tipo') == 'exito'){
				Exito.onAccept = function(){
					FireEvent($('cerrarPopCarro'), 'click');						
					limpiarCamposRegistro();
					Blocker.show();
					Loader.show();
					location.reload();					
					
				};
				Exito.show(d.firstChild.data);
				
			}
			else if(d.getAttribute('tipo') == 'error'){
				if(d.getAttribute('tipoError') == 'errorRegistro'){
					Error.onAccept = Error.onCancel = function(){
						Error.hide();
						Blocker.hide();
					}
					Error.show(d.firstChild.data);
				}
				else if(d.getAttribute('tipoError') == 'yaRegistrado'){
					$('errorYaRegistradoRegistroCarro').style.display = 'block';
				}
				else if(d.getAttribute('tipoError') == 'errorCampos'){
					var i;
					var partErr = d.getAttribute('errores').split(',');
					for(i in partErr){
						if($(partErr[i] + 'RegistroCarro'))$(partErr[i] + 'RegistroCarro').parentNode.className = errorClass;
					}
					$('errorCamposRegistroCarro').style.display = 'block';
				}
				Blocker.show();
			}
		}		
		else if(reqType == 'recuperarContrasenia'){
			if(d.getAttribute('tipo') == 'exito'){
				Exito.onAccept = function(){
					$('layPopCarro').style.visibility = 'visible';
					FireEvent($('cerrarPopCarro'), 'click');						
				};
				Exito.show(d.firstChild.data);
				
			}
			else{
				$('errorInexistenteRecuperar').innerHTML = d.firstChild.data;
				$('layPopCarro').style.visibility = 'visible';
			}
			Loader.hide();
		}				
		else if(reqType == 'consultar'){
		
			if(d.getAttribute('exito') != 'si'){
				
				errorC.innerHTML = d.firstChild.data;
				errorC.style.display = 'block';
				$('layConsultar').style.visibility = 'visible';					
			}
			else{
				Exito.onAccept = function(){
					$('layConsultar').style.visibility = 'visible';
					FireEvent($('cerrarConsultar'), 'click');						
					comentarioC.value = '';
				};
				Exito.show(d.firstChild.data);
				Loader.hide();
			}
		}
		else if(reqType == 'provincias'){
			
			while(provinciaC.hasChildNodes()){ provinciaC.removeChild(provinciaC.firstChild); }
			
			for(var i = 0, t = d.childNodes.length; i < t; i++){
				var opt = document.createElement('option');
				opt.value = d.childNodes[i].getAttribute('value');
				opt.innerHTML = d.childNodes[i].firstChild.data;
				
				provinciaC.appendChild(opt);
			}
			provinciaC.disabled = false;
		}
		else if(reqType == 'ciudades'){
			
			while(ciudadC.hasChildNodes()){ ciudadC.removeChild(ciudadC.firstChild); }
			
			for(var i = 0, t = d.childNodes.length; i < t; i++){
				var opt = document.createElement('option');
				opt.value = d.childNodes[i].getAttribute('value');
				opt.innerHTML = d.childNodes[i].firstChild.data;
				
				ciudadC.appendChild(opt);
			}
			ciudadC.disabled = false;
		}
		else if(reqType == 'logout'){
			location.reload();			
		}

	}.closure(this);





	//R
	this.recuperarContrasena = function(e){
		var error = false;
		if(trim($('emailRecuperarCarro').value) == ''){
			$('errorUsuarioRecuperar').style.display = 'block';
			error = true;
		}
		else $('errorUsuarioRecuperar').style.display = 'none';
		
		if(!error){
			$('errorUsuarioRecuperar').style.display = 'none';
			reqType = 'recuperarContrasenia';
			var v = 'tipo' + SEP_IGUAL + reqType + SEP_AND;
			v += 'usuario' + SEP_IGUAL + trim($('emailRecuperarCarro').value) + SEP_AND;
			Loader.show();
			$('layPopCarro').style.visibility = 'hidden';
			enviar(DIR_ROOT + 'requests/carro.php', v);
		}

		if(e)StopEvent(e);
	}		

	var intervaloMostrar = 0;
	var tipoApertura = '';
	var listo = true;
	var popSeteado = false;
	var cargandoPop = false;
	var aTemp = null;
	var reqType = 'datosPop';
	var req = null;
	var oPop = null;
	var usuario = null;
	var errorClass = 'fieldsetError';	
	var erEmail = RegExp('^[a-z0-9_\.\-]+@[a-z0-9_\-]+(\.[a-z0-9_\-]{2,5})*\.[a-z]{2,4}$');
	var erNumero = RegExp('^[0-9]+$');
	
	var contrasena = null;
	var nombreRegistro,apellidoRegistro,emailRegistro,usuarioRegistro,telefonoRegistro,direccionRegistro,cpRegistro,telefonoRegistro,paisRegistro,provinciaRegistro,provinciaRegistroNombre,ciudadRegistro,ciudadRegistroNombre;
	var contrasenaRegistro,confirmarContrasenaRegistro,errorContrasena,errorUsuario,contrasenaUsuario;
	
}