
/*
|---------------------------------------------------------------------------------------------------------------------------------------|
| Descricao: Permite somente a digitacao de numeros.																					|
| Criado: ??/??/???? | Por: ???																											|
| Modificado: __/__/____ | Por:																											|
|---------------------------------------------------------------------------------------------------------------------------------------|
*/
function OnlyNumbers(oEvent){
    var oRegExp = /[0-9]/;
    var tecla_codigo;
    var tecla_char;

    if (oEvent.keyCode)
        tecla_codigo = oEvent.keyCode;
    else if (oEvent.which)
        tecla_codigo = oEvent.which;

    tecla_char = String.fromCharCode(tecla_codigo);

    if (tecla_codigo == 8 || tecla_codigo == 9 || (tecla_codigo == 39 && tecla_char != "'") || (tecla_codigo == 46 && tecla_char != '.'))
        return true;
    else if (!oRegExp.test(tecla_char))
        return false;
    else
        return true;
}

/*
|---------------------------------------------------------------------------------------------------------------------------------------|
| Descricao: Valida, na digitacao, o valor do campo colocando mascara de data.															|
| Criado: 16/09/2009 | Por: Rafael F. Silva																								|
| Modificado: __/__/____ | Por:																											|
|---------------------------------------------------------------------------------------------------------------------------------------|
*/
function fct_valData(e){
	var evt = window.event || e;
    var whichCode = evt.keyCode ? evt.keyCode : evt.which;

	if(whichCode != 8 && whichCode != 46)
	{
		if ($(this).val().length == 2) $(this).val($(this).val() + '/');
		if ($(this).val().length == 5) $(this).val($(this).val() + '/');
	}
}


/*
|---------------------------------------------------------------------------------------------------------------------------------------|
| Descricao: Valida, na digitacao, o valor do campo colocando mascara de telefone.														|
| Criado: 16/09/2009 | Por: Rafael F. Silva																								|
| Modificado: __/__/____ | Por:																											|
|---------------------------------------------------------------------------------------------------------------------------------------|
*/
function fct_valTelefone(e){
	var evt = window.event || e;
    var whichCode = evt.keyCode ? evt.keyCode : evt.which;

	if(whichCode != 8 && whichCode != 46)
	{
		if($(this).val().length == 1 && $(this).val().indexOf('(') == -1) $(this).val('(' + $(this).val());
		if($(this).val().length == 3) $(this).val($(this).val() + ') ');
		if($(this).val().length == 9) $(this).val($(this).val() + '-');
	}
}

/*
|---------------------------------------------------------------------------------------------------------------------------------------|
| Descricao: Valida, na digitacao, a limitacao de caracteres num textarea.																|
| Criado: 16/09/2009 | Por: Rafael F. Silva																								|
| Modificado: __/__/____ | Por:																											|
|---------------------------------------------------------------------------------------------------------------------------------------|
*/
function fct_valCarac()
{
	var _maxLength = parseInt($(this).next().find('var').html()); if(isNaN(_maxLength)) _maxLength = 256;
	var caracRest = _maxLength - $(this).val().length;
	if(caracRest < 0) caracRest = 0;

	$(this).next().find('span').html(caracRest.toString());

	if(document.selection == undefined)
		$(this).val($(this).val().substring(0, _maxLength-1));
	else
	{
		var selectedText = document.selection.createRange();
		if($(this).val().length != selectedText.text.length)
			$(this).val($(this).val().substring(0, _maxLength-1));
	}

	$(this).get(0).scrollTop = $(this).height(); //HACK: FF scroll to bottom
}

/*
|---------------------------------------------------------------------------------------------------------------------------------------|
| DescriÃ§Ã£o: Permite somente a digitaÃ§Ã£o de valores monetÃ¡rios.																			|
| Criado: 17/09/2009 | Por: Rafael F. Silva																								|
| Modificado: __/__/____ | Por:																											|
|---------------------------------------------------------------------------------------------------------------------------------------|
*/
function OnlyMoney(oEvent){
    var oRegExp = /[0-9]/;
    var tecla_codigo;
    var tecla_char;

    if (oEvent.keyCode)
        tecla_codigo = oEvent.keyCode;
    else if (oEvent.which)
        tecla_codigo = oEvent.which;

    tecla_char = String.fromCharCode(tecla_codigo);

    if (tecla_codigo == 8 || tecla_codigo == 9 || (tecla_codigo >= 37 && tecla_codigo <= 40) || tecla_char == ",")
        return true;
    else if (!oRegExp.test(tecla_char))
        return false;
    else
        return true;
}

/*
|---------------------------------------------------------------------------------------------------------------------------------------|
| Descrição: Faz configuracoes de validacao da parte de Dados Pessoais do formulario de Trabalhe Conosco.								|
| Criado: ??/08/2009 | Por: Rafael F. Silva																								|
| Modificado: __/__/____ | Por:																											|
|---------------------------------------------------------------------------------------------------------------------------------------|
*/
function valCurriculo1(){
	var msgData1 = 'A data de nascimento inserida é inválida.';
	var msgData2 = 'A data de nascimento inserida é inválida. Formato: dd/mm/aaaa';

	$('#frmCurriculo').validateForm({
		container: '.area_erro',
		errorClass: 'error_input',
		fields: {
			nome : {
				id: '#id_nome',
				required: true
			},
			datanasc : {
				id: '#id_nascimento',
				required: function(param){
					if(param == '' ? true : checkDate(param))
					{
						var curDate = new Date();
						var curYear = parseInt(curDate.getFullYear());
						var chkYear = parseInt(param.substr(6));

						if(chkYear > curYear)
						{
							this.msg = msgData1;
							return false;
						}
						else if(chkYear == curYear)
						{
							var curMonth = parseInt(curDate.getMonth()+1);
							var chkMonth = parseInt(param.substr(3, 2));

							if(chkMonth > curMonth)
							{
								this.msg = msgData1;
								return false;
							}
							else if(chkMonth == curMonth)
							{
								var curDay = parseInt(curDate.getDate());
								var chkDay = parseInt(param.substr(0, 2));

								if(chkDay > curDay)
								{
									this.msg = msgData1;
									return false;
								}
							}
						}

						return true;
					}
					else
					{
						this.msg = msgData2;
						return false;
					}
				},
				msg: 'A data de nascimento inserida á inválida.',
				blankToo: true
			},
			endereco : {
				id: '#id_endereco',
				required: true
			},
			telefone : {
				id: '#id_telefone',
				required: function(param){
					return param == '' ? true : param.length == 14;
				},
				notrequired: true,
				msg: 'Telefone inválido.'
			},
			email : {
				id: '#id_email',
				required: function(param) {
					return param == '' ? true : checkMail(param);
				},
				notrequired: true,
				msg: 'E-mail inválido.'
			}
		},
		onSubmit: function() {
			if(valCurriculo1_aux())
				tabs_Move('next');
			//else
				//calcDirMidAreaErro();
		},
		onError: function() {
			valCurriculo1_aux();
			//calcDirMidAreaErro();
		}
	});
}


/*
|---------------------------------------------------------------------------------------------------------------------------------------|
| DescriÃ§Ã£o: Faz as validaÃ§Ãµes passadas por parÃ¢metro de um formulÃ¡rio.																	|
| Criado: ??/08/2009 | Por: Rafael F. Silva																								|
| Modificado: __/__/____ | Por:																											|
|---------------------------------------------------------------------------------------------------------------------------------------|
*/
jQuery.fn.validateForm = function(oValidate){
	var bOk = true;

	$(oValidate.container).html('<ul class="f_l w_100"></ul>');
	$.each(oValidate.fields, function(i){
		if($(this.id).is(':visible'))
		{
			var tagName = $(this.id).get(0).tagName;

			if(
				(typeof this.required == "boolean" || this.blankToo)
				&&
				(
					(
						$(this.id).val() == ''
						&& (tagName == "INPUT" || tagName == "TEXTAREA")
					)
					||
					(
						($(this.id+' option:selected').length == 0 || $(this.id+' option:selected').attr('value') == 0)
						&& tagName == "SELECT"
					)
				)
			)
			{
				if(this.notrequired == undefined || this.notrequired == false)
				{
					$(this.id).addClass(oValidate.errorClass);
					$(this.id).focus(function (){ $(this).removeClass('error_input'); });
					bOk = false;
				}

				/*if(tagName == "SELECT")
					$(oValidate.container+' ul').append('<li>'+this.msg+'</li>');*/
			}
			else if(typeof this.required == "function")
			{
				var bTest = this.required($(this.id).val());
				if(bTest == undefined || bTest == false)
				{
					if(this.msg != undefined)
						$(oValidate.container+' ul').append('<li>'+this.msg+'</li>');

					$(this.id).addClass(oValidate.errorClass);
					$(this.id).focus(function (){ $(this).removeClass('error_input'); });
					bOk = false;
				}
			}
			else
			{
				$(this.id).removeClass(oValidate.errorClass);
			}
		}
		else
		{
			bOk = false;
		}
	});

	if(bOk)
	{
		$(oValidate.container).hide();
		if(oValidate.form != undefined && oValidate.form != '')
			$(oValidate.form).submit();

		if(oValidate.onSubmit != undefined && typeof oValidate.onSubmit == "function")
			oValidate.onSubmit();
	}
	else
	{
		$(oValidate.container+' ul').prepend('<li>Preencha os campos e os requisitos em destaque.</li>');
		$(oValidate.container).show();
		window.scrollTo(0, $(oValidate.container).offset().top - 25);

		if(oValidate.onError != undefined && typeof oValidate.onError == "function")
			oValidate.onError();
	}
}


/*
|---------------------------------------------------------------------------------------------------------------------------------------|
| Descrição: 	|
| Criado: 16/09/2009 | Por: Rafael F. Silva																								|
| Modificado: __/__/____ | Por:																											|
|---------------------------------------------------------------------------------------------------------------------------------------|
*/
function valCurriculo1_aux(){
	var bOk = true;

	$('.area_curriculo #dados-pessoais .f_inicio').each(function (i){
		$(this)
			.find('#id_curso-'+i+'-inicio_month, #id_curso-'+i+'-inicio_year')
			.removeClass('error_input');
		$(this)
			.next()
			.find('#id_curso-'+i+'-termino_month, #id_curso-'+i+'-termino_year')
			.removeClass('error_input');
		var iniMes, iniAno, terMes, terAno;

		iniMes = parseInt($(this).find('#id_curso-'+i+'-inicio_month').val());
		iniAno = parseInt($(this).find('#id_curso-'+i+'-inicio_year').val());
		terMes = parseInt($(this).next().find('#id_curso-'+i+'-termino_month').val());
		terAno = parseInt($(this).next().find('#id_curso-'+i+'-termino_year').val());

		if(iniAno >= terAno)
		{
			if(iniAno == terAno)
			{
				if(iniMes > terMes)
				{
					bOk = false;
					var formacao;
					switch(i)
					{
						case 0: formacao = 'Segundo Grau / Grau Técnico'; break;
						case 1: formacao = 'Graduação'; break;
						case 2: formacao = 'Pós-Graduação'; break;
						default: formacao = 'Outro-Curso'; break;
					}

					if($('.area_erro').is(':visible') == false)
					{
						$('.area_erro ul').prepend('<li>Preencha os campos e os requisitos em destaque.</li>');
						$('.area_erro').show();
					}

					$('.area_erro ul').append('<li>A data de início de '+formacao+' precisa ser menor que a data de término.</li>');
					$(this)
						.find('#id_curso-'+i+'-inicio_month, #id_curso-'+i+'-inicio_year')
						.addClass('error_input')
						.focus(function (){ $(this).removeClass('error_input'); })
						.andSelf()
						.next()
						.find('#id_curso-'+i+'-termino_month, #id_curso-'+i+'-termino_year')
						.addClass('error_input')
						.focus(function (){ $(this).removeClass('error_input'); });
				}
				/*else
					bOk = true;*/
			}
			else
			{
				bOk = false;
				var formacao;
				switch(i)
				{
					case 0: formacao = 'Segundo Grau / Grau Técnico'; break;
					case 1: formacao = 'Graduação'; break;
					case 2: formacao = 'Pós-Graduação'; break;
					default: formacao = 'Outro-Curso'; break;
				}

				if($('.area_erro').is(':visible') == false)
				{
					$('.area_erro ul').prepend('<li>Preencha os campos e os requisitos em destaque.</li>');
					$('.area_erro').show();
				}

				$('.area_erro ul').append('<li>A data de início de '+formacao+' precisa ser menor que a data de término.</li>');
				$(this)
					.find('#id_curso-'+i+'-inicio_month, #id_curso-'+i+'-inicio_year')
					.addClass('error_input')
					.focus(function (){ $(this).removeClass('error_input'); })
					.andSelf()
					.next()
					.find('#id_curso-'+i+'-termino_month, #id_curso-'+i+'-termino_year')
					.addClass('error_input')
					.focus(function (){ $(this).removeClass('error_input'); });
			}
		}
		/*else
			bOk = true;*/
	});

	return bOk;
}

/*
|---------------------------------------------------------------------------------------------------------------------------------------|
| Descrição: Faz configurações de validação da parte de Atuação do formulário de Trabalhe Conosco.										|
| Criado: ??/08/2009 | Por: Rafael F. Silva																								|
| Modificado: __/__/____ | Por:																											|
|---------------------------------------------------------------------------------------------------------------------------------------|
*/
function valCurriculo2(){
	$('#frmCurriculo').validateForm({
		container: '.area_erro',
		errorClass: 'error_input',
		fields: {
			cargopretendido : {
				id: '#id_cargoPretendido',
				required: true,
				msg: 'Selecione um cargo pretendido.'
			}
		},
		onSubmit: function() {
			if(valCurriculo2_aux())
				tabs_Move('next');
			//else
				//calcDirMidAreaErro();
		},
		onError: function() {
			valCurriculo2_aux();
			//calcDirMidAreaErro();
		}
	});
}

/*
|---------------------------------------------------------------------------------------------------------------------------------------|
| Descrição: Faz configurações de validação da parte de Atuação do formulário de Trabalhe Conosco.										|
| Criado: ??/08/2009 | Por: Rafael F. Silva																								|
| Modificado: __/__/____ | Por:																											|
|---------------------------------------------------------------------------------------------------------------------------------------|
*/
function valCurriculo2_aux(){
	var bOk = true;
	$('.area_curriculo #atuacao .f_inicio').each(function (i){
		$(this).find('#id_empresa-'+i+'-inicio_month').removeClass('error_input');
		$(this).find('#id_empresa-'+i+'-inicio_year').removeClass('error_input');
		var iniMes, iniAno, terMes, terAno;

		iniMes = parseInt($(this).find('#id_empresa-'+i+'-inicio_month').val());
		iniAno = parseInt($(this).find('#id_empresa-'+i+'-inicio_year').val());
		terMes = parseInt($(this).next().find('#id_empresa-'+i+'-termino_month').val());
		terAno = parseInt($(this).next().find('#id_empresa-'+i+'-termino_year').val());

		if(iniAno >= terAno)
		{
			if(iniAno == terAno)
			{
				if(iniMes > terMes)
				{
					bOk = false;
					var formacao;
					switch(i)
					{
						case 0: formacao = 'Empresa Atual / Última Empresa'; break;
						case 1: formacao = 'Empresa Anterior'; break;
						default: formacao = 'Empresa'; break;
					}

					if($('.area_erro').is(':visible') == false)
					{
						$('.area_erro ul').prepend('<li>Preencha os campos e os requisitos em destaque.</li>');
						$('.area_erro').show();
						//calcDirMidAreaErro();
					}

					$('.area_erro ul').append('<li>A data de início de '+formacao+' precisa ser menor que a data de término.</li>');
					$(this)
						.find('#id_empresa-'+i+'-inicio_month, #id_empresa-'+i+'-inicio_year')
						.addClass('error_input')
						.focus(function (){ $(this).removeClass('error_input'); })
						.andSelf()
						.next()
						.find('#id_empresa-'+i+'-termino_month, #id_empresa-'+i+'-termino_year')
						.addClass('error_input')
						.focus(function (){ $(this).removeClass('error_input'); });
				}
			}
			else
			{
				bOk = false;
				var formacao;
				switch(i)
				{
					case 0: formacao = 'Empresa Atual / Última Empresa'; break;
					case 1: formacao = 'Empresa Anterior'; break;
					default: formacao = 'Empresa'; break;
				}

				if($('.area_erro').is(':visible') == false)
				{
					$('.area_erro ul').prepend('<li>Preencha os campos e os requisitos em destaque.</li>');
					$('.area_erro').show();
					//calcDirMidAreaErro();
				}

				$('.area_erro ul').append('<li>A data de início de '+formacao+' precisa ser menor que a data de término.</li>');
				$(this)
					.find('#id_empresa-'+i+'-inicio_month, #id_empresa-'+i+'-inicio_year')
					.addClass('error_input')
					.focus(function (){ $(this).removeClass('error_input'); })
					.andSelf()
					.next()
					.find('#id_empresa-'+i+'-termino_month, #id_empresa-'+i+'-termino_year')
					.addClass('error_input')
					.focus(function (){ $(this).removeClass('error_input'); });
			}
		}
	});

	var nomeCampo = 'id_areasDeInteresse';
	nomeCampo += $('#id_interesse_check_0').is(':checked') ? 'Adm' : 'Tec';

	if($('#'+nomeCampo).val() == null)
	{
		bOk = false;
		if($('.area_erro').is(':visible') == false)
		{
			$('.area_erro ul').prepend('<li>Preencha os campos e os requisitos em destaque.</li>');
			$('.area_erro').show();
			//calcDirMidAreaErro();
		}

		$('#'+nomeCampo).addClass('error_input');
		$('#'+nomeCampo).focus(function (){ $(this).removeClass('error_input'); });
	}

	return bOk;
}

/*
|---------------------------------------------------------------------------------------------------------------------------------------|
| Descrição: Faz a validação da parte de Conhecimentos do formulário de Trabalhe Conosco.												|
| Criado: 17/09/2009 | Por: Rafael F. Silva																								|
| Modificado: __/__/____ | Por:																											|
|---------------------------------------------------------------------------------------------------------------------------------------|
*/
function valCurriculo3(){
	var bOk = true;

	$('.area_curriculo fieldset > .idiomas > li > input').each(function(){
		if($(this).is(':checked') && $(this).nextAll().find('ul li label input:checked').length <= 0)
		{
			$(this)
				.click(function(){ $(this).nextAll().find('ul').removeClass('error_input'); })
				.nextAll()
				.find('ul')
				.addClass('error_input')
				.click(function(){ $(this).removeClass('error_input'); });

			bOk = false;
		}
	});

	if(bOk)
		tabs_Move('next');
	//else
		//calcDirMidAreaErro();
}

/*
|---------------------------------------------------------------------------------------------------------------------------------------|
| Descrição: Faz configurações de validação da parte de Disponibilidade e Pretensão do formulário de Trabalhe Conosco.					|
| Criado: 17/09/2009 | Por: Rafael F. Silva																								|
| Modificado: __/__/____ | Por:																											|
|---------------------------------------------------------------------------------------------------------------------------------------|
*/
function valCurriculo4(){
	$('#frmCurriculo').validateForm({
		container: '.area_erro',
		errorClass: 'error_input',
		fields: {
			horainicio: {
				id: '#id_horaInicio_hour',
				required: function(param) {
					return !(param == '');
				}
			},
			minutoinicio : {
				id: '#id_horaInicio_minute',
				required: function(param) {
					return !(param == '');
				}
			},
			horatermino : {
				id: '#id_horaTermino_hour',
				required: function(param) {
					return !(param == '');
				}
			},
			minutotermino : {
				id: '#id_horaTermino_minute',
				required: function(param) {
					return !(param == '');
				}
			},
			localinteresse : {
				id: '#id_locais',
				required: true
			}
		},
		onSubmit: function() {
			//if(valCurriculo4_aux())
				tabs_Move('next');
			//else
				//calcDirMidAreaErro();
		},
		onError: function() {
			//valCurriculo4_aux();
			//calcDirMidAreaErro();
		}
	});
}

/*
|---------------------------------------------------------------------------------------------------------------------------------------|
| DescriÃ§Ã£o: Checa a data por meio de expressÃ£o regular.																				|
| Criado: 17/09/2009 | Por: Rafael F. Silva	(ref. http://www.mhavila.com.br/topicos/web/valform.html)									|
| Modificado: __/__/____ | Por:																											|
|---------------------------------------------------------------------------------------------------------------------------------------|
*/
function checkDate(date){
	var er = new RegExp(/^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$/);
	if(typeof(date) == "string"){
		if(er.test(date)){ return true; }
	}
	else if(typeof(date) == "object"){
		if(er.test(date.value)){ return true; }
	}
	else{ return false; }
}


/*
|---------------------------------------------------------------------------------------------------------------------------------------|
| DescriÃ§Ã£o: 	|
| Criado: 18/09/2009 | Por: Rafael F. Silva																								|
| Modificado: __/__/____ | Por:																											|
|---------------------------------------------------------------------------------------------------------------------------------------|
*/
function tabs_Move(dir)
{
	if(dir == 'next') dir = true; else if(dir == 'prev') dir = false; else return false; //EXCEPTION
	var abas = new Array('0','0','0','0','0');
	var abaPos = parseInt($('#tabs').tabs('option', 'selected'));
	abaPos = dir ? abaPos+1 : abaPos-1;
	abas[abaPos] = '-27px';

	$('.area_curriculo .ui-tabs a.tab_d_pes').css('background-position','0 '+abas[0]);
	$('.area_curriculo .ui-tabs a.tab_atu').css('background-position','-101px '+abas[1]);
	$('.area_curriculo .ui-tabs a.tab_con').css('background-position','-169px '+abas[2]);
	$('.area_curriculo .ui-tabs a.tab_disp').css('background-position','-262px '+abas[3]);
	$('.area_curriculo .ui-tabs a.tab_a_curr').css('background-position','-361px '+abas[4]);

	$('.area_curriculo .ui-tabs ul li a').css('cursor','default');
	if(abaPos==0)
		$('.area_curriculo .ui-tabs a.tab_d_pes').css('cursor','pointer');
	else if(abaPos==1)
		$('.area_curriculo .ui-tabs a.tab_atu').css('cursor','pointer');
	else if(abaPos==2)
		$('.area_curriculo .ui-tabs a.tab_con').css('cursor','pointer');
	else if(abaPos==3)
		$('.area_curriculo .ui-tabs a.tab_disp').css('cursor','pointer');
	else if(abaPos==4)
		$('.area_curriculo .ui-tabs a.tab_a_curr').css('cursor','pointer');

	$('#tabs').tabs('select', abaPos);
}

/*
|---------------------------------------------------------------------------------------------------------------------------------------|
| Descrição: Checa o e-mail por meio de expressão regular.																				|
| Criado: ??/??/2009 | Por: ???																											|
| Modificado: __/__/____ | Por:																											|
|---------------------------------------------------------------------------------------------------------------------------------------|
*/
function checkMail(mail){	
	var er = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);	
	if(typeof(mail) == "string"){
		if(er.test(mail)){ return true; }
	}
	else if(typeof(mail) == "object"){
		if(er.test(mail.value)){ return true; }
	}	
	return false;
}
