if(nu === undefined){
	var nu = {};
}

if (nu.form === undefined){
	nu.form = {};
}

//Converts an array into a hash for rapid "in" testing
//Assumes array contains unique elements
nu.form.o = function(arr){
	var obj = {};
	for(var it in arr){
		obj[arr[it]] = true;
	}
	return obj;
};

//Checks if a Javascript object is empty
nu.form.isEmpty = function(o){
	for(var p in o){
		if(o.hasOwnProperty(p)){
			return false;	
		}
	}
	return true;
};

nu.form.isInputEmpty = function(input_value){
	return (input_value == "" || 
		 			input_value == null || 
		 			input_value == undefined);
};

//Validates a form based on a given criteria
nu.form.validate = function(id, specs){
	
	$(id).submit(function(){

		var results = {};
		results.missing = {};
		var required = nu.form.o(specs.required); 	
		var tel = false;

		//Check input text, TODO filter attribute text
		$(id+' input').each(function(){
			var input_id = $(this).attr("id");
			var input_value = $(this).val();
			if(required[input_id]){
				if(input_value == "" || 
					 input_value == null || 
					 input_value == undefined){
					results.missing[input_id] = true;
				}
			}else{ //Validar campos especiales
				if(input_id == 'telefono' || input_id == 'celular'){
					tel = tel || !nu.form.isInputEmpty(input_value);
				}	
			}
		});

		//Conditional fields telephone and cellphone
		if(!tel){
			results.missing['telefono'] = true;	
		}

		//Check select tags
		$(id+' select').each(function(){
			var select_id = $(this).attr("id");
			if(required[select_id]){
				var option_value = $(this).children(':selected').val();
				if(option_value == "default"){
					results.missing[select_id] = true;
				}
			}
		});

		if(nu.form.isEmpty(results.missing)){
			var pvars = {};

			pvars['nombre'] = $('#nombre').val();
			pvars['empresa'] = $('#empresa').val();
			pvars['area'] = $('#area').val();
			pvars['ciudad'] = $('#ciudad').val();
			pvars['estado'] = $('#estado').val();
			pvars['telefono'] = $('#telefono').val();
			pvars['celular'] = $('#celular').val();
			pvars['email'] = $('#email').val();
			pvars['entero'] = $('#entero').val();
			pvars['proceso'] = $('#proceso').val();
			pvars['producto'] = $('#producto').val();
			pvars['servicio'] = $('#servicio').val();
			pvars['comentarios'] = $('#comentarios').val();
			
			$.post('enviar.php', pvars, function()
			{
				var message = "<p class=\"centrado\">Tu mensaje ha sido enviado</p>"+
										"<p class=\"centrado\">¡Gracias por contactarnos!</p>\n"
				$.prompt(message, {prefix: 'cleanblue'});
			});

			
		}else
		{
			var message = "<p>Por favor, ayúdenos a complementar la información para darle un mejor servicio:</p>\n"
			message += "<ul id=\"error_list\">\n";
			for(var error in results.missing){
				message += "<li>"+specs.error_messages[error]+"</li>\n";
			}
			message += "</ul>\n"
			//$(specs.error_container).html(message);
			$.prompt(message, {prefix: 'cleanblue'});
			//$(specs.error_container).slideDown('slow').delay(2000).slideUp('slow');
		}

		return false;
	});	
};



