// JavaScript Document
//jQuery
$(document).ready(function(){
	
	//Check if fields are valid and add valid or invalid class (call functions)
	$('#projecto').bind('click focus blur keypress', function() {
		var projecto = $(this).attr('value');
		switch(projecto)
		{
		case "Moradia":
			enableFields();
			$('#moradia').removeClass();
			$('#moradia select').attr('disabled', false);
			$('#qualidade').attr('disabled', false);
			$('#tipologia').attr('disabled', false);
			break;
		case "Edifício":
			enableFields();
			$('#edificio').removeClass();
			$('#edificio select').attr('disabled', false);
			$('#qualidade').attr('disabled', false);
			$('#tipologia').attr('disabled', false);
			$('#pisos').attr('disabled', false);
			break;
		case "Urbanismo":
			enableFields();
			$('#urbanismo').removeClass();
			$('#urbanismo select').attr('disabled', false);
			break;
		case "Comércio":
			enableFields();
			$('#comercio').removeClass();
			$('#comercio select').attr('disabled', false);
			$('#qualidade').attr('disabled', false);
			break;
		case "Apartamento":
			enableFields();
			$('#apartamento').removeClass();
			$('#apartamento select').attr('disabled', false);
			$('#qualidade').attr('disabled', false);
			$('#tipologia').attr('disabled', false);
			break;
		}
	});
	
	function enableFields(){
		$('#caracterizacao-e-intervencao > div').addClass('hide');
		$('#caracterizacao-e-intervencao select').attr('disabled', true);
		$('#localizacao').attr('disabled', false);
		$('#area').attr('disabled', false);
		$('#qualidade').attr('disabled', true);
		$('#tipologia').attr('disabled', true);
		$('#pisos').attr('disabled', true);
	};
	
	$('#caracterizacao-e').bind('click focus blur keypress', function() {
		if ($(this).attr('value') == "Escritórios" || $(this).attr('value') == "Industrial" )	$('#tipologia').attr('disabled', true); else $('#tipologia').attr('disabled', false);
		if ($(this).attr('value') == "Industrial")	$('#pisos').attr('disabled', true); else $('#pisos').attr('disabled', false);
	});
	
	/*
	$('input[type=text]').bind('click focus keypress', function() {
		if ($(this).attr('value').toLowerCase() == $(this).attr('name')) $(this).attr('value', '');
		if ($(this).attr('value') == "Área Total M²" || $(this).attr('value') == "Número de pisos" ) $(this).attr('value', '');
	});
	
	$('input[name=telefone]').bind('click focus keypress', function() {
		if ($(this).attr('value') == 'Telefone') $(this).attr('value', '');
		checkPhone($(this));
	});	
	
	$('input[name=email]').bind('click focus keypress', function() {
		if ($(this).attr('value') == 'Email') $(this).attr('value', '');
		checkEmail($(this));
	});
	
	*/

	$('#budget-button').bind('click', function() {
	
		var errors = new Array();
		
		errors[0] = checkSelect( $('select[id=projecto]') );
		errors[1] = checkSelect( $('select[id=localizacao]') );
		
		//
		if ($('select[id=caracterizacao-m]').attr('disabled') == false){
			errors[2] = checkSelect( $('select[id=caracterizacao-m]') );
			errors[3] = checkSelect( $('select[id=intervencao-m]') );
		}
		if ($('select[id=caracterizacao-e]').attr('disabled') == false){
			errors[4] = checkSelect( $('select[id=caracterizacao-e]') );
			errors[5] = checkSelect( $('select[id=intervencao-e]') );
		}
		if ($('select[id=caracterizacao-u]').attr('disabled') == false){
			errors[6] = checkSelect( $('select[id=caracterizacao-u]') );
		}
		if ($('select[id=caracterizacao-c]').attr('disabled') == false){
			errors[7] = checkSelect( $('select[id=caracterizacao-c]') );
			errors[8] = checkSelect( $('select[id=intervencao-c]') );
		}
		if ($('select[id=caracterizacao-a]').attr('disabled') == false){
			errors[9] = checkSelect( $('select[id=caracterizacao-a]') );
			errors[10] = checkSelect( $('select[id=intervencao-a]') );
		}
		
		//
		errors[11] = checkSpecial( $('input[id=area]') );
		
		if ($('select[id=qualidade]').attr('disabled') == false){
			errors[12] = checkSelect( $('select[id=qualidade]') );
		}
		
		if ($('select[id=tipologia]').attr('disabled') == false){
			errors[13] = checkSelect( $('select[id=tipologia]') );
		}
		
		if ($('input[id=pisos]').attr('disabled') == false){
			errors[14] = checkSpecial( $('input[id=pisos]') );
		}
		
		//
		var invalid = jQuery.inArray(true, errors);
		
		if (invalid != -1 && invalid != undefined ) {
			//error
			alert("Por favor preencha todos os dados correctamente.");
		} else {
			//success
			$('#budget-data').addClass('hide');
			$('#user-data').removeClass('hide');
		}
		
	});	
	
	function validForm(){
		var errors = new Array();
		errors[0] = checkBasic( $('input[id=nome]') );
		errors[1] = checkEmail( $('input[id=email]') );
		errors[2] = checkPhone( $('input[id=telefone]') );
		
		//errors[3] = checkSpecial( $('input[id=area]') );
		//errors[4] = checkSpecial( $('input[id=pisos]') );
		
		var invalid = jQuery.inArray(true, errors);
		if (invalid != -1 && invalid != undefined ) {
			//alert(errors);
			console.log(errors);
			return true;
		}
	}

	//Submit Button actions
	
	$('#budget-submit').click(function() {
		//check if form is valid
		if ( !validForm() ){
			//disable button to avoid double submit
			//$('#budget-submit').attr('disabled', 'disabled');
			var form = $('#budget-form');
			$.post(
				'http://www.bilearquitectos.com/wp-content/themes/bile/scripts/php/calc_budget.php',	//wp-content/themes/bile/scripts/php/calc_budget.php //url	A string containing the URL to which the request is sent
				form.serialize(),					//data	A map or string that is sent to the server with the request.
				//success	A callback function that is executed if the request succeeds
				function(response, status, request){
					// do something with response
					alert('Obrigado! Por favor feche esta caixa para ver os resultados da estimativa.');
					outputMessage(response);
				}
				//dataType	The type of data expected from the server (text, xml, json)
			);
		} else {
			//Show invalid message
			alert('Por favor preencha correctamente todos os campos e tente novamente.');
		}
		return false;
	});
	
	
	//Function that outputs the string given by the post result

	function outputMessage(data){
		$('#final-data').append(data);
	    $('#user-data').addClass('hide');
		$('#budget-data').addClass('hide');
		$('#final-data').removeClass('hide');
	}
	
	//Validation functions
	function checkBasic(field){
		if (field.attr('value').length != '0' && field.attr('name') != field.attr('value').toLowerCase() ){
			return false;			
		}
		else {
			return true;
		}
	}
	
	function checkPhone(field){
		if (phoneValidation(field.attr('value'))){
			return false;			
		}
		else {
			return true;
		}
	}
	
	function checkEmail(field){
		if (emailValidation(field.attr('value'))){
			return false;			
		}
		else {
			return true;
		}
	}
	
	function checkSelect( field ){ 
		if ( field.attr('selectedIndex') != 0 ){
			return false;
		}
		else {
			return true;
		}
	}
	
	function checkSpecial(field){
		if (numberValidation(field.attr('value'))){
			return false;			
		}
		else {
			return true;
		}
	}
	
	//Aditional functions to validate specific fields

	function emailValidation (email){
		var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
		return pattern.test(email);
	}
	
	function phoneValidation(phone){
		var pattern = /^[0-9 +() + -]+$/;
		return pattern.test(phone);
	}
	
	function numberValidation (number){
		var pattern = new RegExp(/^ *[0-9]+ *$/);
		return pattern.test(number);
	}


});
