// JavaScript Document
 oRegistro = new function(){

		var erEmail = RegExp('^[a-z0-9_\.\-]+@[a-z0-9_\-]+(\.[a-z0-9_\-]{2,5})*\.[a-z]{2,4}$');
		var erNumero = RegExp('^[0-9]+$');
		var erFecha = RegExp('^(0[1-9]|[1-2][0-9]|3[0-1])/(0[1-9]|1[0-2])/[1-2][0-9]{3}$');
		var erSiNo = RegExp('^[01]$');
		var errorClass = 'fieldsetError';
		var cargandoForm = false;
		
		
		//A
		this.analizarTecla = function(e){
			if(e.keyCode == 13)FireEvent($('enviarRegistro'),'click');
		}
		
		//E
		this.enviarRegistro = function(evt){
			var error = false, t = '';
			
			if(evt){ StopEvent(evt); }
			if(wait){ return false; }
			
			empresaR.onblur();
			if(empresaR.parentNode.className == errorClass){ error = true; }
			
			nombreR.onblur();
			if(nombreR.parentNode.className == errorClass){ error = true; }
			
			apellidoR.onblur();
			if(apellidoR.parentNode.className == errorClass){ error = true; }
			
			emailR.onblur();
			if(emailR.parentNode.className == errorClass){ error = true; }
			
			provinciaR.onblur();
			if(provinciaR.parentNode.className == errorClass){ error = true; }
			
			ciudadR.onblur();
			if(ciudadR.parentNode.className == errorClass){ error = true; }
			
			var i,idsMercados = '';
			if(!this.logueado){
				contrasenaR.onblur();
				if(contrasenaR.parentNode.className == errorClass){ error = true; }
				
				confirmarContrasenaR.onblur();
				if(confirmarContrasenaR.parentNode.className == errorClass){ error = true; }
				
				for(i in MERCADOS){
					if(MERCADOS[i].checked)idsMercados += i + ',';
				}
				
				if(idsMercados == ''){
					$('contMercados').className = errorClass;
					error = true;
				}
				else{
					$('contMercados').className = '';
				}
			}
			else{
				contrasenaActualR.onblur();
				if(contrasenaActualR.parentNode.className == errorClass){ error = true; }
			}
			
			if(error){
				errorR.style.display = 'block';
				return false;
			}
			else{
				errorR.style.display = 'none';
			}
			
			wait = true;
			reqType = 'registrar';
			
			t += getDatosPersonales();
			t += 'idsMercados' + SEP_IGUAL + idsMercados + SEP_AND;
			t += 'usuario' + SEP_IGUAL + usuarioR.value + SEP_AND;
			t += 'contrasena' + SEP_IGUAL + contrasenaR.value + SEP_AND;
			t += 'contrasenaActual' + SEP_IGUAL + contrasenaActualR.value + SEP_AND;			
			
			Loader.show();
			Blocker.show();
			req.pedir(DIR_SERVER_ROOT + 'requests/registro.php', t);
		}	
		this.enviarModificarContrasenia = function(evt){
			var error = false, t = '';
			
			if(evt){ StopEvent(evt); }
			if(wait){ return false; }
			
			nuevaContrasenaR.onblur();
			if(nuevaContrasenaR.parentNode.className == errorClass){ error = true; }
			
			confirmarNuevaContrasenaR.onblur();
			if(confirmarNuevaContrasenaR.parentNode.className == errorClass){ error = true; }
			
			nuevaContrasenaActualR.onblur();
			if(nuevaContrasenaActualR.parentNode.className == errorClass){ error = true; }
			
			if(error){
				$('errorModificarContrasena').style.display = 'block';
				return false;
			}
			
			wait = true;
			reqType = 'nuevaContrasena';
			
			t += getDatosPersonales();
			t += 'contrasenaActual' + SEP_IGUAL + nuevaContrasenaActualR.value + SEP_AND;
			t += 'nuevaContrasena' + SEP_IGUAL + nuevaContrasenaR.value + SEP_AND;
			
			Loader.show();
			Blocker.show();
			req.pedir(DIR_SERVER_ROOT + 'requests/modificarContrasena.php', t);
		}	
		
		//G
		var getDatosPersonales = function(){
			datosPersonales = '';
			datosPersonales += 'empresa' + SEP_IGUAL + trim(empresaR.value) + SEP_AND;
			datosPersonales += 'nombre' + SEP_IGUAL + trim(nombreR.value) + SEP_AND;
			datosPersonales += 'apellido' + SEP_IGUAL + trim(apellidoR.value) + SEP_AND;
			datosPersonales += 'email' + SEP_IGUAL + trim(emailR.value) + SEP_AND;
			datosPersonales += 'idPais' + SEP_IGUAL + trim(paisR.value) + SEP_AND;
			datosPersonales += 'idProvincia' + SEP_IGUAL + trim(provinciaR.value) + SEP_AND;
			datosPersonales += 'idCiudad' + SEP_IGUAL + trim(ciudadR.value) + SEP_AND;
			datosPersonales += 'nombreProvincia' + SEP_IGUAL + trim(provinciaNR.value) + SEP_AND;
			datosPersonales += 'nombreCiudad' + SEP_IGUAL + trim(ciudadNR.value) + SEP_AND;
			datosPersonales += 'direccion' + SEP_IGUAL + trim(direccionR.value) + SEP_AND;
			datosPersonales += 'cp' + SEP_IGUAL + trim(cpR.value) + SEP_AND;
			datosPersonales += 'telefono' + SEP_IGUAL + trim(telefonoR.value) + SEP_AND;
			
			oCookie.set('datosPersonales', datosPersonales);
			return datosPersonales;
		}	
		
		// I
		this.inicializarRegistro = function(){
			
			empresaR = $('empresaRegistro');
			if(!empresaR.onblur){
				empresaR.onblur = function(){
					var v = trim(this.value);
					if(v == '' || v.length < 3){ this.parentNode.className = errorClass; }
					else{ this.parentNode.className = ''; }
				}.closure(empresaR);
			}
			
			nombreR = $('nombreRegistro');
			if(!nombreR.onblur){
				nombreR.onblur = function(){
					var v = trim(this.value);
					if(v == '' || v.length < 3){ this.parentNode.className = errorClass; }
					else{ this.parentNode.className = ''; }
				}.closure(nombreR);
			}
			
			apellidoR = $('apellidoRegistro');
			if(!apellidoR.onblur){
				apellidoR.onblur = function(){
					var v = trim(this.value);
					if(v == '' || v.length < 3){ this.parentNode.className = errorClass; }
					else{ this.parentNode.className = ''; }
				}.closure(apellidoR);
			}
			
			emailR = $('emailRegistro');
			if(!emailR.onblur){
				emailR.onblur = function(){
					var v = trim(this.value);
					usuarioR.value = v;
					if(v == '' || !erEmail.test(v)){ this.parentNode.className = errorClass; }
					else{ this.parentNode.className = ''; }
				}.closure(emailR);
			}
			
			paisR = $('paisRegistro');
			if(!paisR.onchange){
				paisR.onchange = function(){
					provinciaR.disabled = ciudadR.disabled = true;
					
					provinciaNR.style.display = ciudadNR.style.display = 'none';
					
					reqType = 'provincias';
					
					var v = 'tipo' + SEP_IGUAL + reqType + SEP_AND;
					v += 'idPais' + SEP_IGUAL + paisR.value + SEP_AND;
					
					req.pedir(DIR_SERVER_ROOT + 'requests/zonas_geograficas.php', v);
				};
			}
			
			provinciaR = $('provinciaRegistro');
			if(!provinciaR.onchange){
				provinciaR.onchange = function(){
					
					var v = trim(provinciaR.value);
					
					ciudadR.disabled = true;
					provinciaNR.style.display = (v == '0')? '' : 'none';
					ciudadNR.style.display = 'none';
					
					if(erNumero.test(v) && v != ''){
						
						reqType = 'ciudades';
						
						var v = 'tipo' + SEP_IGUAL + reqType + SEP_AND;
						v += 'idProvincia' + SEP_IGUAL + provinciaR.value + SEP_AND;
						
						req.pedir(DIR_SERVER_ROOT + 'requests/zonas_geograficas.php', v);
					}
				};
			}
			if(!provinciaR.onblur){
				provinciaR.onblur = function(){
					var v = trim(this.value);
					if(v == '' || !erNumero.test(v)){ this.parentNode.className = errorClass; }
					else{ provinciaNR.onblur(); }
				}.closure(provinciaR);
			}
			
			provinciaNR = $('provinciaNombreRegistro');
			if(!provinciaNR.onblur){
				provinciaNR.onblur = function(){
					var v = trim(this.value);
					if(provinciaR.value == '0' && (v == '' || v.length < 3)){ this.parentNode.className = errorClass; }
					else{ this.parentNode.className = ''; }
				}.closure(provinciaNR);
			}
			
			ciudadR = $('ciudadRegistro');
			if(!ciudadR.onchange){
				ciudadR.onchange = function(){
					var v = trim(ciudadR.value);
					ciudadNR.style.display = (v == '0')? '' : 'none';
				};
			}
			if(!ciudadR.onblur){
				ciudadR.onblur = function(){
					var v = trim(this.value);
					if(v == '' || !erNumero.test(v)){ this.parentNode.className = errorClass; }
					else{ ciudadNR.onblur(); }
				}.closure(ciudadR);
			}
			
			ciudadNR = $('ciudadNombreRegistro');
			if(!ciudadNR.onblur){
				ciudadNR.onblur = function(){
					var v = trim(this.value);
					if(ciudadR.value == '0' && (v == '' || v.length < 3)){ this.parentNode.className = errorClass; }
					else{ this.parentNode.className = ''; }
				}.closure(ciudadNR);
			}
			
			
			direccionR = $('direccionRegistro');
			cpR = $('cpRegistro');
			telefonoR = $('telefonoRegistro');
			
			usuarioR = $('usuarioRegistro');
			/*if(!usuarioR.onblur){
				usuarioR.onblur = function(){
					var v = trim(this.value);
					if(v == '' || v.length < 3){ this.parentNode.className = errorClass; }
					else{ this.parentNode.className = ''; }
				}.closure(usuarioR);
			}*/
			
			contrasenaR = $('contrasenaRegistro');
			if(!contrasenaR.onblur){
				contrasenaR.onblur = function(){
					var v = trim(this.value);
					if(v == '' || v.length < 3|| confirmarContrasenaR.value != contrasenaR.value){ this.parentNode.className = errorClass; }
					else{ 
						this.parentNode.className = '';
						confirmarContrasenaR.parentNode.className = '';
					}
				}.closure(contrasenaR);
			}
			
			confirmarContrasenaR = $('confirmarContrasenaRegistro');
			if(!confirmarContrasenaR.onblur){
				confirmarContrasenaR.onblur = function(){
					var v = trim(this.value);
					if(v == '' || confirmarContrasenaR.value != contrasenaR.value){ this.parentNode.className = errorClass; }
					else{ 
						this.parentNode.className = '';
						contrasenaR.parentNode.className = '';
					}

				}.closure(confirmarContrasenaR);
			}
			
			contrasenaActualR = $('contrasenaActualRegistro');
			if(!contrasenaActualR.onblur){
				contrasenaActualR.onblur = function(){
					var v = trim(this.value);
					if(v == ''){ this.parentNode.className = errorClass; }
					else{ 
						this.parentNode.className = '';
					}
				}.closure(contrasenaActualR);
			}
			
			nuevaContrasenaR = $('contrasenaNuevaRegistro');
			if(nuevaContrasenaR){
				if(!nuevaContrasenaR.onblur){
					nuevaContrasenaR.onblur = function(){
						var v = trim(this.value);
						if(v == '' || v.length < 3|| confirmarNuevaContrasenaR.value != nuevaContrasenaR.value){ this.parentNode.className = errorClass; }
						else{ 
							this.parentNode.className = '';
							confirmarNuevaContrasenaR.parentNode.className = '';
						}
					}.closure(nuevaContrasenaR);
				}
				confirmarNuevaContrasenaR = $('confirmarNuevaContrasenaRegistro');
				if(!confirmarNuevaContrasenaR.onblur){
					confirmarNuevaContrasenaR.onblur = function(){
						var v = trim(this.value);
						if(v == '' || confirmarNuevaContrasenaR.value != nuevaContrasenaR.value){ this.parentNode.className = errorClass; }
						else{ 
							this.parentNode.className = '';
							nuevaContrasenaR.parentNode.className = '';
						}
	
					}.closure(confirmarNuevaContrasenaR);
				}
				
				nuevaContrasenaActualR = $('contrasenaNuevaActualRegistro');				
				if(!nuevaContrasenaActualR.onblur){
					nuevaContrasenaActualR.onblur = function(){
						var v = trim(this.value);
						if(v == ''){ this.parentNode.className = errorClass; }
						else{ 
							this.parentNode.className = '';
						}
					}.closure(nuevaContrasenaActualR);
				}

			}
			
			var partMerc = $('mercados').value.split(',');
			for(var i = 0; i < partMerc.length; i++) { MERCADOS[partMerc[i]] = $('mercado' + partMerc[i]); }
			
			
			errorR = $('errorRegistro');
			iniciado = true;
		}		
		
		//L
		var listener = function(){
			var d = req.respuestaXML;
			wait = false;
			//
			if(!d){
				alert(req.respuestaHTML);
				Blocker.hide();
				Loader.hide();
				return false;
			}
			//
			else if(reqType == 'registrar'){
				if(d.getAttribute('exito') != 'si'){
					Error.onAccept = Error.onCancel = function(){
						Error.hide();
						Blocker.hide();
					}
					Error.show(d.firstChild.data);
					Loader.hide();
				}
				else{
					contrasenaActualR.value = '';
					if(!this.logueado){
						nombreR.value = '';
						apellidoR.value = '';
						emailR.value = '';
						direccionR.value = '';
						cpR.value = '';
						telefonoR.value = '';
						usuarioR.value = '';
						contrasenaR.value = '';
						confirmarContrasenaR.value = '';
						cpR.value = '';
						telefonoR.value = '';
						for(i in MERCADOS){
							MERCADOS[i].checked = false;
						}
					}
					Exito.onAccept = function(){
						Blocker.hide();
					};
					Exito.show(d.firstChild.data);
					Loader.hide();
				}
			}
			//
			else if(reqType == 'nuevaContrasena'){
				if(d.getAttribute('exito') != 'si'){
					Error.onAccept = Error.onCancel = function(){
						Error.hide();
						Blocker.hide();
					}
					Error.show(d.firstChild.data);
					Loader.hide();
				}
				else{
					Exito.onAccept = function(){
						nuevaContrasenaR.value = '';
						nuevaContrasenaActualR.value = '';
						confirmarNuevaContrasenaR.value = '';
						Blocker.hide();
					};
					Exito.show(d.firstChild.data);
					Loader.hide();
				}
			}
			//
			else if(reqType == 'provincias'){
				while(provinciaR.hasChildNodes()){ provinciaR.removeChild(provinciaR.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;
					
					provinciaR.appendChild(opt);
				}
				provinciaR.disabled = false;
			}
			//
			else if(reqType == 'ciudades'){
				
				while(ciudadR.hasChildNodes()){ ciudadR.removeChild(ciudadR.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;
					
					ciudadR.appendChild(opt);
				}
				ciudadR.disabled = false;
			}
			//
		}.closure(this);
		
		
		// Envio de Consulta del Clasificado
		var datosPersonales = (oCookie.get('datosPersonales') == '')? '' : oCookie.get('datosPersonales');
		var empresaR, nombreR, apellidoR, emailR,  paisR, provinciaR, provinciaNR, 
		ciudadR, ciudadNR, direccionR, cpR, telefonoR, errorR, cargandoR, exitoR,contrasenaR,usuarioR,confirmarContrasenaR,
		nuevaContrasenaR,confirmarNuevaContrasenaR,contrasenaActualR;
		
		var clasInfo;
		var wait = false, reqType;
		var req = new Request(listener);
		var iniciado = false;
		var MERCADOS = {};
		
	}

