var input_site = '';
var to_hide;

function generate_image(){
    $('#errors').hide();
    var num_hands = $('#num_hands').val();
    var num_runs = $('#num_runs').val();
    if (num_runs>100){$('#max_min').attr('checked',true);}
    var win_rate = $('#winrate').val();
    var sigma = $('#sigma').val();
    var max_min = $('#max_min').is(':checked');
    $('#variance_image').html('<img src="/site_media/images/spin.gif"/>');
    $(to_hide).show();  
    $.ajax({
	type: "POST",
	url: "/poker_tools/simulate/",
	data: ({num_hands:num_hands,
	
		num_runs:num_runs,
		win_rate:win_rate,
		sigma:sigma,
		max_min:max_min
    		}),

       success: function(msg){
	    
		if (msg.substr(0,5)== "Error"){
	    	    $('#variance_image').html('');
		    $('#errors').slideDown();
		    $('#errors').html(msg+'<br/>Click anywhere on this box to dismiss.');
		    $('#downswing_image, #variance_image, #winrate_image').html('');
		    $(to_hide).hide();
		
		}else{
		    var results = eval('('+msg+')');
		    
		    var link = results['link']+'.png';
		    var wr_link = results['link']+'_winrates.png';	   
		    var ds_link = results['link']+'_downswings.png';	   	   
		    var be_link = results['link']+'_breakeven.png';	   	   
		    var max_ds = results['downswing'];
		    //	    $('#max_ds').val(max_ds);
		    
		    $('#variance_image').html('<a title="Click to view larger image" href="'+link+'"><img class="variance_plot" src="'+link+'" alt="Click to view larger image"/></a>');
		    $('#downswing_image').html('<a title="Click to view larger image" href="'+ds_link+'"><img class="variance_plot" src="'+ds_link+'" alt="Click to view larger image"/></a>');	  
		    $('#breakeven_image').html('<a title="Click to view larger image" href="'+be_link+'"><img class="variance_plot" src="'+be_link+'" alt="Click to view larger image"/></a>');	  
		    $('#winrate_image').html('<a title="Click to view larger image" href="'+wr_link+'"><img class="variance_plot" src="'+wr_link+'" alt="Click to view larger image"/></a>');	  
		    
		    $('#variance_link input').val('http://www.evplusplus.com'+link);
		    $('#downswing_link input').val('http://www.evplusplus.com'+ds_link);
		    $('#breakeven_link input').val('http://www.evplusplus.com'+be_link);
		    $('#winrate_link input ').val('http://www.evplusplus.com'+wr_link);
		    
		}
		$('#wait').hide();       
       },
       error: function(request,status,error){
           $('#wait').hide();
	   $(to_hide).hide();
	  $('#errors').slideDown();	   
	  err = 'Sorry but we were unable to run this simulation.\n';
	  err+= 'The simulation parameters been sent to the administrator so we can figure out what went wrong and fix it!';
	  err+= '<br/><i>Click anywhere on this box to dismiss.</i>'
	  $('#errors').html(err);
       }
      });

};

  $(document).ready(function(){
    $('#wait').hide();	
    
    to_hide = '.variance_results';
    $(to_hide).hide();
    $('#submit').click(generate_image);
    $('#errors').hide();
    $('#errors').click(function(){$(this).slideUp()});   
    
    var limits = {
	'num_runs':{max:10000,min:1,def:10,type:'i'},
	'num_hands':{max:10000000,min:100,def:100000,type:'i'},	
	'winrate':{max:1000,min:-1000,def:8.,type:'f'},
	'winrate_ror':{max:1000,min:-1000,def:8.,type:'f'},	
	'sigma':{max:10000,min:0,def:80.,type:'f'},
	'sigma_ror':{max:10000,min:0,def:80.,type:'f'},	
	'bankroll':{max:10000000.,min:1.,def:5000.,type:'f'},

	'confidence':{max:99.9999,min:0.1,def:0.95,type:'f'}
	}
	
    $('#num_runs, #num_hands, #winrate, #sigma, #bankroll,#winrate_ror, #sigma_ror, #sigma_ror2, #bankroll2, #winrate_ror2, #confidence').change(function(){
	var id = $(this).attr('id');

	var type = limits[id].type;	
	if (type == 'f'){
	    val = parseFloat($(this).val());
	}else{
	    val = parseInt($(this).val());
	}

	if ((limits[id].max < val) || (val < limits[id].min)){
	    $(this).val(limits[id].def);
	}
	
    });
      
    
    calc_ror(); calc_br();
    $('#sigma_ror, #bankroll, #winrate_ror').keyup(function(){calc_ror();});
    $('#sigma_ror2, #riskofruin2, #winrate_ror2').keyup(function(){calc_br();});    

});

    function calc_ror(){
    /*r = exp(-2uB/sigma^2)*/    
    /*RoR = exp((-2*ROI*BR)/SD^2)    */
	var s = parseFloat($('#sigma_ror').val());
	var wr = parseFloat($('#winrate_ror').val());	
	var br = parseFloat($('#bankroll').val())*100;
	var ror = Math.exp(-2.*wr*br/(s*s))*100;
	$('#riskofruin').val(ror.toPrecision(3));
    }
    
    function calc_br(){
    /*    B = -(sigma^2/2u)ln(r) */
	var s = parseFloat($('#sigma_ror2').val());
	var wr = parseFloat($('#winrate_ror2').val());	
	var ror = parseFloat($('#riskofruin2').val())/100.;

	var br = -1.*(s*s)/(2*wr)*Math.log(ror);
	$('#bankroll2').val(br.toFixed(0)/100.);
    }




