Função Wesley Safadão :p

by Bruno Augusto

HTML

<select id="days"></select>
<select id="months"></select>
<select id="years"></select>
<button>
Calcular
</button>
<div class="hidden" id="results">

<h2>Você é...</h2>

  <span id="angel">
  
    <img...

CSS

@import url('https://fonts.googleapis.com/css?family=Roboto');

body {
  font-family: 'Roboto';  
}

span {
  font-size: .9em;
}

#angel img, #naughty img {
  margin: -4px 0 0 5px;
  vertical-align: middle;
}

#angel img {
  width: 1.4em;
}

#naughty img {
  width: 1.2em;
}

.hidden {
  display: none;
}

JavaScript

function addDays() {

  var $days = $( '#days' );
  
  $days.empty();

  for( var i = 0; i < 31; i++ ) {
  
    $( '<option />' ).text( i + 1 ).val( i + 1 ).appendTo( $days );
  }
}

function addMonths() {

  var months = [
    'Janeiro','Fevereiro','Março','Abril','Maio','Junho',
    'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'
  ];
  
  for( var i = 0; i < 12; i++ ) {
    $( '<option />' ).text( months[ i ] ).val( i + 1 ).appendTo( $( '#months' ) );
  }
}

function addYears() {

	var currYear = new Date().getUTCFullYear();
  
  for( var i = currYear; i >= ( currYear - 100 ); i-- ) {
    $("<option />").text( i ).val( i ).appendTo( $( '#years' ) );
  }
}

function wesley_safadao( day, month, year ) {

	var safadeza;
  
  /**
   * Modificado ligeiramente da função "somatorio" original
   * pois o resultado computado de um número fatorial pode
   * ser bem grande e estragar a brincadeira ^_^
   */
  safadeza = parseInt( factorial( month ).toString().substr( 0, 2 ) ) + 
  					 ( ( ( year % 100 ) / 100 ) * ( 50 - day ) );
  
  if( safadeza > 100 ) {
    safadeza -= ( safadeza - 100 ) * 2;
  }
  
  $( '#angel' ).prepend( ( 100 - safadeza ) + '%' );
  $( '#naughty' ).prepend( safadeza + '%' )
  
  $( '#results' ).removeClass( 'hidden' );
}

function factorial( num ) {

  var rval = 1;
  
  for( var i = 2; i <= num; i++ ) rval = rval * i;
  
  return rval;
}

addDays();
addMonths();
addYears();

$( 'button' ).on( 'click', function() {

	$( '#angel img' ).clone().appendTo( $( '#angel' ).empty() );
  $( '#naughty img' ).clone().appendTo( $( '#naughty' ).empty() );
  
	wesley_safadao(
  	$( '#days' ).val(), $( '#months' ).val(), $( '#years' ).val()
  );
})

$( 'select' ).on( 'change', function() {
  $( '#results' ).addClass( 'hidden' );
})