$(document).ready(function() {
    $('a[rel=external]').attr('target', '_blank');
	$('a[href=#]').click(function(){return false;});
	$('.submitForm').click(function(){$(this).parents('form').eq(0).submit();});
	$('.maskTel').mask('(99) 9999 9999');
	$('.maskCpf').mask('999.999.999-99');
	$('.maskCep').mask('99.999-999');
	$('.maskDate').mask('99/99/9999');
	$('.maskYear').mask('9999');
	
	/*
	 * Clear on Click
	 * Quando clica no campo o valor inicial é escondido para que o usuário possa digitar
	 */
	clearOnClick.init();
	
	/*
	 * HOME
	 * 
	 * Carousel de Clientes
	 */
	$('.clientsCarousel').jCarouselLite({
        btnNext: ".bt_parceiros_baixo",
        btnPrev: ".bt_parceiros_cima",
		vertical:true,
		visible: 2
    });
	
	/*
	 * SWFs
	 */
	var params = {wmode: "transparent"};
	swfobject.embedSWF("/swf/banner-inflor-pt.swf", "destaques_pt-br", "950", "270", "9.0.0", null, null, params);
	swfobject.embedSWF("/swf/banner-inflor-en.swf", "destaques_en-us", "950", "270", "9.0.0", null, null, params);
	swfobject.embedSWF("/swf/mapa_pt-br.swf", "mapa_pt-br", "700", "500", "9.0.0");
	swfobject.embedSWF("/swf/mapa_en-us.swf", "mapa_en-us", "700", "500", "9.0.0");
	
	/*
	 * Form Newsletter
	 */
	$('input[id=MailListRegister]').click(function(){
		$.fancybox({
			height: 100,
			type: 'iframe',
			href:'/mail_lists/register/email:' + $("input[id='MailListEmail']").val()
		});
		return false;
	});
	$('input[id=MailListEmail]').keyup(function(e){
		if(e.keyCode == 13){
			$('input[id=MailListRegister]').trigger('click');
		}
	});
	
	/*
	 * Busca no site
	 */
	$('input[id=SearchSubmit]').click(function(){
		self.location.href = '/'+ $('input[type=hidden][id=SearchSlug]').val() +'/?q=' + $('input[id=SearchQ]').val();
		return false;
	});
	$('input[id=SearchQ]').keyup(function(e){
		if(e.keyCode == 13){
			$('input[id=SearchSubmit]').trigger('click');
		}
	});
	
	
	
	
	
	/*
	 * PORTFOLIO / SAP ERP
	 * /pages/portfolio/sap_erp
	 * 
	 * Ao clicar em um item fecha os outros e abre o que foi clicado
	 */
	$('a.sapLink').click(function(){
		var thisDiv = $(this).parents('div.solubox_accordion').eq(0).find('div.sapDiv');
		if($(thisDiv).is(':visible')){
			$(thisDiv).slideUp(800);
			return false;
		}
		
		if($('div.sapDiv:visible').size()){
			$('div.sapDiv:visible').slideUp(800, function(){
				$(thisDiv).slideDown(800);
			});
		}else{
			$(thisDiv).slideDown(800);
		}
	});
	
	
		
	/*
	 * EMPRESA / HUMAN DEVELOPMENT
	 * 
	 * Carousel de Fotos
	 */
	$('.HDCarousel').jCarouselLite({
        btnNext: ".btHDright",
        btnPrev: ".btHDleft",
		vertical:false,
		visible: 7, 
		scroll: 2, 
		circular: false
    });

	
	
	
	
	/*
	 * CONTATO
	 * 
	 * Ativando o select box
	 */
	$(".styleCombobox select").styleCombobox({classFocus:"comboboxFocus"});
	
	
	
	
	
	
	/*
	 * VALIDAÇÃO DE FORMS
	 * 
	 * Valida todos inputs de um form.validateFields com a classe "mandatory"
	 */
	Validate.init();
	
	
	
	
	
	/*
	 * TRABALHE CONOSCO
	 * alterRedirect
	 * 
	 * Ao clicar em um link/botão com a classe alterRedirect, o form do trabalhe conosco tem seu campo redirect alterado e é
	 * submetido. Em caso de falha (por validação), exibe uma mensagem ao usuário de que os dados serão descartados.
	 */
	$('.alterRedirect').click(function(){
		var objForm = $('form.validateFields');
		objForm.unbind('submit');

		/*
		 * Pega a url de redirecionamento de acordo com o elemento
		 */
		var strRedirect = null;
		switch(this.nodeName){
			case 'A':
				strRedirect = $(this).attr('href');
				break;
			default:
				strRedirect = $(this).attr('id');
				break;
			
		}
		
		if(!$(objForm).size()){
			self.location.href = strRedirect;
		}
		
		var intErrors = Validate.runValidate(objForm);
		var intFields = $(objForm).find('.mandatory').size();
		
		// Se houverem erros e a qtd de erros for menor que a qtd de campos (alguns campos foram preenchidos)
		if(intErrors){
			if(intErrors < intFields){
				if(confirm('O formulário não foi validado e os dados informados não serão salvos.\nDeseja continuar?')){
					self.location.href = strRedirect;
				}
			}else{
				self.location.href = strRedirect;
				return false;
			}
		}else{
			$(objForm).find('input#PageRedirect').val(strRedirect);
			$(objForm).submit();
		}
		
		return false;
	});
	
	
	/*
	 * TRABALHE CONOSCO
	 * languages
	 * 
	 * Selecionando o idioma como "outro" abre a caixa para informar o outro idioma.
	 */
	$('.selectLang').bind('change', Validate.langChange);
	
});

var Validate = {
	init:function(){
		$('form.validateFields').submit(function(){
			var intErr = Validate.runValidate(this);
			return (intErr) ? false : true;
		});
	},
	runValidate:function(elem){
		var intErrors = 0;
		var intBlockErrors;
		
		/*
		 * Se houver uma div#elements, a validação é feita em blocos (por div#elements).
		 * Caso contrário, a validação é feita pelos campos individualmente.
		 * 
		 * No caso da validação em bloco, se um conjunto inteiro de inputs está vazio, ele é ignorado e removido do código.
		 */
		if($(elem).find('div#elements').size()){
			
			/*
			 * VALIDAÇÃO EM BLOCOS
			 */
			$(elem).find('div#elements').find("div[id^='element_']").each(function(){

				intBlockErrors = 0;
				
				$(this).find('.mandatory').each(function(){

					if(!Validate.validateField(this)){
						Validate.addError(this);
						intBlockErrors++;
					}else{
						Validate.remError(this);
					}

				});
				
				/*
				 * Se a quantidade de erros for igual ao numero de inputs.mandatory do bloco,
				 * este é ignorado (nenhum campo foi preeenchido)
				 */
//				alert(intBlockErrors + ' - ' + $(this).find('.mandatory').size());
				if(intBlockErrors == $(this).find('.mandatory').size()){
					/*
					 * Se for o primeiro elemento, não o remove
					 */
					if(!$(this).index()){
						$(this).find('div.required').removeClass('required');
					}else{
						$(this).remove();
					}
				}else{
					intErrors += intBlockErrors;
				}
				
			});
			
		}else{
			
			/*
			 * VALIDAÇÃO INDIVIDUAL
			 */
			$(elem).find('.mandatory').each(function(){

				if(!Validate.validateField(this)){
					Validate.addError(this);
					intErrors++;
				}else{
					Validate.remError(this);
				}

			});
			
		}
		

		return intErrors;
	},
	validateField:function(elem){
		switch($(elem).attr('type')){
			case 'radio':
				if(!$('input[type=radio][name="'+ $(elem).attr('name') +'"]:checked').size()){
					return false;
				}
				break;

			case 'text':
			case 'select':
			// Selects
			// Textareas
			default:
				if(!$(elem).val()){
					return false;
				}
				break;
		}
		return true;
	},
	addError:function(elem){
		$(elem).parents('div').eq(0).addClass('required');
	},
	remError:function(elem){
		$(elem).parents('div').eq(0).removeClass('required');
	},
	
	langChange:function(){
		var objDiv = $(this).parents('div.element').eq(0).find('div.otherLang');

		if($(this).val() == 'other'){
			$(objDiv).removeClass('hide');
			$(objDiv).find('input').removeAttr('disabled');
		}else{
			$(objDiv).addClass('hide');
			$(objDiv).find('input').attr('disabled', 'disabled');
		}
	}
}

var clearOnClick = {
	init:function(){
		$('input.clearOnClick').each(function(){
			$(this)
			.focus(function(){
				if($(this).val() == $(this).attr('title')){
					clearOnClick.clickOn(this);
				}
			})
			.blur(function(){
				if($(this).val() == ''){
					clearOnClick.clickOff(this);
				}
			});
			
			if($(this).val() == '' && $(this).attr('title') != ''){
				$(this).trigger('blur');
			}
		});
	},
	clickOff:function(elem){
		$(elem).addClass('clearOnClickActive').val($(elem).attr('title'));
	},
	clickOn:function(elem){
		$(elem).removeClass('clearOnClickActive').val('');
	}
}
