// JavaScript Document
var Presupuesto = function(msj){
	
	var componerPregunta = function(idPregunta){
		var partHidden = $('hidden'+idPregunta).value.split('|');
		var obj = new Object();
		obj.id = idPregunta;
		obj.tipo = partHidden[0];
		obj.error = $('errorPregunta'+idPregunta);
		
		if(partHidden[0] == 'textarea' || partHidden[0] == 'text'){
			obj.campo = $(partHidden[0]+idPregunta);
			asignarError(obj.campo,ER_STR);
		}
		else if(partHidden[0] == 'radio' || partHidden[0] == 'checkbox'){
			obj.items = new Array();
			obj.itemsEsp = new Array();
			if(partHidden[0] == 'checkbox')obj.valores = new Array();
			for(i=0;i<partHidden[2];i++){
				obj.items[i] = $(partHidden[0]+idPregunta+'-'+i);
				obj.items[i].identificador = i;
				obj.items[i].idPregunta = idPregunta;
				funcionItem(idPregunta,obj.items[i],i);
			}
			//OTROS
			if(partHidden[3]){
				var partOtro = partHidden[3].split(',');
				for(j=0;j<partOtro.length;j++){
					var part = partOtro[j].split('_');
					obj.items[part[0]].cont = $('contOtro'+idPregunta+'-'+part[0]);
					obj.items[part[0]].campo = $(part[1]+idPregunta+'-'+part[0]);					
					asignarError(obj.items[part[0]].campo,ER_STR);
					obj.itemsEsp[part[0]] = obj.items[part[0]];
				}
			}
		}
		return obj;
	}
	var funcionItem = function(idPregunta,itemPregunta,idItem){
		AddEvent(itemPregunta,'click',function(){
	   		clickItem(idPregunta,idItem);
	   });
	}
	var clickItem = function(idPregunta,itemPregunta){
		var preg = arreglo[idPregunta];
		if(preg.tipo == 'radio'){
			preg.valores = itemPregunta;
			for(i=0;i<preg.itemsEsp.length;i++){
				if(preg.itemsEsp[i].checked){
					preg.itemsEsp[i].cont.style.display = 'block';
				}
				else preg.itemsEsp[i].cont.style.display = 'none';
			}
		}
		else{
			if(preg.items[itemPregunta].checked)preg.valores[itemPregunta] = true;
			else{
				delete(preg.valores[itemPregunta]);
			}
			if(preg.itemsEsp[itemPregunta]){
				if(preg.itemsEsp[itemPregunta].checked)preg.itemsEsp[itemPregunta].cont.style.display = 'block';
				else preg.itemsEsp[itemPregunta].cont.style.display = 'none';
			}
		}
	}
	this.enviar = function(e){
		var valores = '';
		var errores = 0;
		var idsPreguntas = '';
		
		FireEvent(nombre,'blur');
		FireEvent(apellido,'blur');
		FireEvent(empresa,'blur');
		FireEvent(email,'blur');
		
		errorDatos.innerHTML = '';
		errorDatos.style.display = 'none';
		if(nombre.conError)errorDatos.innerHTML += '<p>'+oMsj.nombre+'</p>';
		if(apellido.conError)errorDatos.innerHTML += '<p>'+oMsj.apellido+'</p>';
		if(empresa.conError)errorDatos.innerHTML += '<p>'+oMsj.empresa+'</p>';
		if(email.conError)errorDatos.innerHTML += '<p>'+oMsj.email+'</p>';
		if(errorDatos.innerHTML != ''){
			errores++;
			errorDatos.style.display = 'block';
		}
		 
		
		for(i in arreglo){
			var preg = arreglo[i];
			preg.error.innerHTML = '';
			preg.error.style.display = 'none';
			idsPreguntas += preg.id+',';
			valores += 'pregunta'+preg.id+'Tipo' + SEP_IGUAL + preg.tipo + SEP_AND;
			if(preg.tipo == 'text' || preg.tipo == 'textarea'){
				FireEvent(preg.campo,'blur');
				if(!preg.campo.conError){
					valores += 'pregunta'+preg.id+SEP_IGUAL+preg.campo.value+SEP_AND;
					preg.campo.className = '';
					preg.error.style.display = 'none';					
				}
				else{
					preg.error.innerHTML += oMsj.pregunta+'<br />';
					preg.error.style.display = 'block';
					errores++;
				}
			}
			else{
				if(preg.tipo == 'radio'){
					//if(!preg.valores && preg.valores != 0)errores += 'Debe seleccionar una opción en la pregunta numero '+i+'<br />';
					var mostErr = false;
					if(!preg.valores && preg.valores != 0){
						preg.error.innerHTML += '<p>'+oMsj.preguntaRadio+'</p>';
						mostErr = true;
						errores++;
					}
					else{
						if(preg.itemsEsp[preg.valores]){
							FireEvent(preg.itemsEsp[preg.valores].campo,'blur');
							if(!preg.itemsEsp[preg.valores].campo.conError)valores += 'preguntaEspecial'+preg.id+'-'+preg.valores+SEP_IGUAL+preg.itemsEsp[preg.valores].campo.value+SEP_AND;
							//else errores += 'Debe completar el campo de la opcion numero '+preg.valores+' de la pregunta '+i+'<br />';
							else{
								mostErr = true;
								errores++;
								preg.error.innerHTML += '<p>'+oMsj.preguntaOpcion+'</p>';
							}
						}
						valores += 'pregunta'+preg.id+SEP_IGUAL+preg.valores+','+SEP_AND;
					}
					if(mostErr)preg.error.style.display = 'block';
					else preg.error.style.display = 'none';
				}
				else{
					
					valores += 'pregunta'+preg.id+SEP_IGUAL;
					var valoresEspeciales = '';
					var entre = false;
					var errMost = false;
					for(j in preg.valores){
						entre = true;
						if(preg.itemsEsp[j]){
							FireEvent(preg.itemsEsp[j].campo,'blur');
							if(!preg.itemsEsp[j].campo.conError)valoresEspeciales += 'preguntaEspecial'+preg.id+'-'+j+SEP_IGUAL+preg.itemsEsp[j].campo.value+SEP_AND;
							//else errores += 'Debe completar el campo de la opcion numero '+(parseInt(j)+1)+' de la pregunta '+i+'<br />';
							else{
								errores++;
								errMost = true;
								preg.error.innerHTML += '<p>'+oMsj.preguntaOpcion+'</p>';
							}
						}
						valores += j+',';
					}
					valores += SEP_AND+valoresEspeciales;
					//if(!entre)errores += 'Debe seleccionar al menos una opcion en la pregunta numero '+i+'<br />'
					if(!entre){
						errores++;
						preg.error.innerHTML += '<p>'+oMsj.preguntaCheckbox+'</p>';
						errMost = true;
					}
					if(errMost)preg.error.style.display = 'block';
					else preg.error.style.display = 'none';
					
				}
			}
		}
		if(errores == 0){
			errorCont.style.display = 'none';
			valores += 'nombre' + SEP_IGUAL + trim(nombre.value) + SEP_AND + 'apellido' + SEP_IGUAL + trim(apellido.value) + SEP_AND + 'empresa' + SEP_IGUAL + trim(empresa.value) + SEP_AND + 'telefono' + SEP_IGUAL + trim(telefono.value) + SEP_AND;
			valores += 'direccion' + SEP_IGUAL + trim(direccion.value) + SEP_AND + 'pais' + SEP_IGUAL + trim(pais.value) + SEP_AND + 'provincia' + SEP_IGUAL + trim(provincia.value) + SEP_AND + 'ciudad' + SEP_IGUAL + trim(ciudad.value) + SEP_AND;
			valores += 'email' + SEP_IGUAL + trim(email.value) + SEP_AND + 'idsPreguntas' + SEP_IGUAL + idsPreguntas + SEP_AND;
			
			block(true);
			req.pedir(DIR_ROOT + 'requests/presupuesto.php', valores);			
		}
		if(e)StopEvent(e);
	}	
	var asignarError = function(campo,expresion){
		AddEvent(campo,'blur',function(){
		 	if(trim(campo.value).search(expresion) >= 0){
				campo.conError = false;
				campo.className = '';
			}
			else{
				campo.conError = true;
				campo.className = 'inputError';
			}
	   })
	}
	var listener = function(){
		var d = req.respuestaXML;
		block(false);
		
		if(!d){ alert(req.respuestaHTML); }
		else{
			block(true);
			Exito.onAccept = onAccept;
			Exito.show(oMsj.mensajeExito);
		}
	}.closure(this);	
	var onAccept = function(){
		clean();
		block(false);
	}.closure(this);
	var clean = function(){
		/*iniciarCampo(nombre);
		iniciarCampo(apellido);
		iniciarCampo(empresa);
		iniciarCampo(telefono);
		iniciarCampo(email);*/
		
		
		for(i in arreglo){
			var preg = arreglo[i];
			preg.error.innerHTML = '';
			preg.error.style.display = 'none';
			if(preg.tipo == 'text' || preg.tipo == 'textarea')iniciarCampo(preg.campo);
			else{
				for(j in preg.items){
					if(preg.items[j].checked){
						preg.items[j].checked = false;
						clickItem(preg.items[j].idPregunta,preg.items[j].identificador);
					}
					if(preg.items[j].campo)iniciarCampo(preg.items[j].campo);
				}
				if(preg.tipo == 'radio')preg.valores = null;
				else preg.valores = new Array();
			}	
		}
		
	}
	var iniciarCampo = function(campo){
		campo.value = campo.className =  '';
	};

	var block = function(b){
		enviando = b;
		nombre.disabled = b;
		apellido.disabled = b;
		empresa.disabled = b;
		telefono.disabled = b;
		email.disabled = b;
		direccion.disabled = b;		
		pais.disabled = b;
		provincia.disabled = b;
		ciudad.disabled = b;		

	}	
	
	if(true){
		
		var nombre = $('nombre');
		var apellido = $('apellido');
		var empresa = $('empresa');
		var telefono = $('telefono');
		var direccion = $('direccion');
		var pais = $('pais');
		var provincia = $('provincia');
		var ciudad = $('ciudad');		
		
		var email = $('email');
		var errorDatos = $('errorDatos');
		var req = new Request(listener);
		var enviando = false;
		var oMsj = msj;
		
		asignarError(nombre,ER_STR);
		asignarError(apellido,ER_STR);
		asignarError(empresa,ER_STR);
		asignarError(pais,ER_STR);
		asignarError(provincia,ER_STR);
		asignarError(ciudad,ER_STR);		
		asignarError(email,ER_EMAIL);
		
		
		
		var arreglo = new Array();
		var pregs = $('idsPreguntas').value.split(',');
		for(p in pregs){
			arreglo[pregs[p]] = componerPregunta(pregs[p]);
		}
		var errorCont = $('errorPresupuesto');
		
	}
}