var dsplit = $( ‘#divvy-split’ );
var dflexbtn = $( ‘#divvy .flexbtn’ );
var amt = $( ‘#tamount’ );
var contribution = 0;
var rawcontribution = ‘0’;
function validamount( a )
{
if ( typeof( a ) == ‘number’ ) return true;
a = a.replace( ‘R$’, ‘’ );
return /^\d+[.;]$/.test( a ) || /^\d+$/.test( a ) || /^\d*[.,]\d+$/.test( a ) || /^\d*[.,]\d+$/.test( a ) || /^(\d[.,]|\d\d[.,])?(\d\d\d[.,])*\d\d\d([.,]\d+)?$/.test( a );
}
function cleanamount( a )
{
if ( typeof( a ) == ‘number’ ) return a;
a = a.replace( ‘R$’, ‘’ );
a = a.replace( ‘,’, ‘.’ );
a = parseFloat( a );
return a;
}
function keychange()
{
var a = amt.val();
contribution = validamount( a ) ? cleanamount( a ) : 0;
rawcontribution = a;
if( $( ‘.slider-container’ ).length > 0 )
{
updatesliders();
}
}
function setcontribution( c )
{
contribution = validamount( c ) ? cleanamount( c ) : 0;
rawcontribution = c;
if( $( '.slider-container' ).length > 0 )
{
updatesliders();
}
}
amt.change( keychange ).keydown( keychange ).keyup( keychange );
var splits = {
‘default’: {
‘africa’: 0.50,
‘asia’: 0.50
}
};
var sliders = [ {
name: ‘africa’,
percent: $( ‘.porcento-africa’ ),
amount: $( ‘#quantia-africa’ ),
slider: $( ‘.slider-africa’ )
},
{
name: ‘asia’,
percent: $( ‘.porcento-asia’ ),
amount: $( ‘#quantia-asia’ ),
slider: $( ‘.slider-asia’ )
},
];
var max = 2500;
var slidernum = sliders.length;
var time = 0;
var timeout = -100;
function moveothersliders( index, val )
{
var sum = 0;
for( var i = 0; i < slidernum; i++ )
{
if( i == index ) continue;
sum += sliders[ i ].slider.slider( ‘value’ );
}
var mult = ( max - ( val ? val : sliders[ index ].slider.slider( ‘value’ ) ) ) / sum;
for( var i = 0; i < slidernum; i++ )
{
if( i == index ) continue;
sliders[ i ].slider.slider( ‘value’, sliders[ i ].slider.slider( ‘value’ ) * mult );
}
updatesliders();
}
var slideslide = function( e, ui, index )
{
if( time + 20 > e.timeStamp ) return;
clearTimeout( timeout );
timeout = setTimeout( function() {moveothersliders( index );}, 20 );
time = e.timeStamp;
moveothersliders( index, ui.value );
};
for( var i = 0; i < slidernum; i++ )
{
( function( i )
{
sliders[ i ].slider.slider( {
min: 1, max: max, value: max/slidernum,
start:function( e, ui )
{
dflexbtn.removeClass( ‘active’ );
dsplit.val( ‘custom’ );
$( ‘#div-custom’ ).addClass( ‘active’ );
},
slide:function( e, ui ) {return slideslide( e, ui, i );}
} );
} )( i );
}
setsliders( ‘default’ );
var mostdifferent = function()
{
var largest;
for( var i = 0; i < slidernum; i++ )
{
if( !largest || sliders[ i ].difference > largest.difference )
largest = sliders[ i ];
}
return largest;
}
function updatesliders()
{
var total = 0;
for( var i = 0; i < slidernum; i++ )
{
var v = sliders[ i ].slider.slider( ‘value’ );
if( v < 10 ) v = 0;
total += v;
}
for( var i = 0; i < slidernum; i++ )
{
var v = sliders[ i ].slider.slider( 'value' );
if( v < 10 ) v = 0;
var p = v / total;
var d = Math.floor( 1000000 * p ) / 10000;
var da = Math.floor( contribution * p * 100 );
sliders[ i ].percent.val( d );
sliders[ i ].discreteamount = da;
sliders[ i ].difference = ( p * contribution * 100 ) - da;
}
sum = 0;
for( var i = 0; i < slidernum; i++ )
{
sum += sliders[ i ].discreteamount;
}
difference = Math.round( contribution * 100 - sum );
for( var i = difference; i >= 1; i -= 1 )
{
var md = mostdifferent();
md.difference -= 1;
md.discreteamount += 1;
}
for( var i = 0; i < slidernum; i++ )
{
sliders[ i ].amount.text( 'R$ ' + prettymoney( sliders[ i ].discreteamount / 100 ) );
}
}
function prettymoney( c )
{
c = ‘’ + c;
c = c.split( ‘.’ );
c.push( ‘00’ );
if( c[ 1 ].length == 1 ) c[ 1 ] += ‘0’;
return c[ 0 ] + ‘,’ + c[ 1 ];
}
function setsliders( newsplit, animate )
{
newsplit = splits[ newsplit ];
if( !newsplit ) return;
if( animate === undefined ) animate = true;
for( var i = 0; i < slidernum; i++ )
{
if( animate ) sliders[ i ].slider.slider( ‘option’, ‘animate’, ‘slow’ );
sliders[ i ].slider.slider( ‘value’, max * newsplit[ sliders[ i ].name ] );
sliders[ i ].slider.slider( ‘option’, ‘animate’, true );
}
updatesliders();
}
function setupPaymentField()
{
$( ‘#outroValor’ ).focus( function() {
$( ‘#Transacoes_valorDoacao_4’ ).attr( ‘checked’, true );
} );
$( '#Transacoes_valorDoacao_4' ).on( 'click', function() {
var ca = $( '#outroValor' );
if( ca.css( 'display' ) == 'none' )
ca.css( 'display', 'inline' ).hide().fadeIn();
ca.focus();
} );
$( 'input[name="Transacoes[valorDoacao]"]' ).change( function() {
setcontribution( $( this ).val() );
} );
setcontribution( $( 'input[name="Transacoes[valorDoacao]"]:checked' ).val() );
}
setupPaymentField();