/**
 * BAC Calculator Front-end
 * @author pjkix
 * @version $Id: bac-calc.js 685 2010-01-02 22:43:03Z pjkix $
 */

/* -*- mode: c; tab-width: 0; c-basic-offset: 2; comment-column: 0 -*- */

/**
 * BAC Object
 */
var BAC = {
	version: '2.0.2a',
	_counter: 0,
	browser: {},
	foo: [],

	init: function () {
		if (console.log) {
			console.log('Init: it works!');
		}

		if ( !document.getElementById ) {return;}
		var bw = document.getElementById('bac-wrapper');
		bw.className = 'bac-form';
	},
	
	ddd: function (obj) {
		if (!console.log) {return;}
		console.log(obj);
	},

	// get the amount of pure alcohol
	subtotalAlc: function (numDrinks, ozDrinks, percentAlc) {
		var pureAlc = ((numDrinks * ozDrinks) * (percentAlc / 100));
		return pureAlc ;
	},

	// multiply percent by two to get proof
	percentToProof: function (percent) {
		var proof = (percentAlc * 2);
		return proof ;
	},

	// Divide proof by two to get percent alcohol. For instance, 80 proof is 40%
	proofToPercent: function (proof) {
		var percent = (proof / 2);
		return percent ;
	},

	// figure out the number of drinks
	getNumDrinks: function (pureAlc, percentAlc, ozDrinks) {
		var numDrinks = ((pureAlc /(percentAlc / 100))/ozDrinks);
		return Math.round(numDrinks) ;
	},

	computeBAC: function (sex, weight, time, pureAlc) {
		// standard input
		var bodyWeight = document.getElementById('weight'); // body weight of person
		var hours = document.getElementById('hours').value; // amount of time since first drink
		// check gender of person to determinen widmarkR
		sex = -1;
		for (i=0; i < form.sex.length; i++) {
			if (form.sex[i].checked) {
				sex = i;
			}
		}
		if (sex == -1) {
			alert("You must choose a sex");
			return false;
		}

		//  Reduced body mass. Widmark r: Men: 0.50 to 0.90, average 0.68. Women: 0.45 to 0.63, average 0.55.
		if (sex == "0") { // male
			var widmarkR = 0.68 ;
		} else { // female
			var widmarkR = 0.55 ;
		}

		// constants
		var widmarkB = 0.017 ; // burn off rate of alcohol absorbtion. Widmark ß: 0.010%/hr to 0.024%/hr, average 0.17%/hr.
		var bloodWeight = 1.055 ; // gravity of blood 1.055 g/ml
		var pureAlcWeight = 0.0514 ; // weight of pure alcohol 0.0514 lbs/oz


		// define vars
		//var pureAlcOz = ((numDrinks * ozDrink) * (percentAlc / 100)); // total amount of EtOH or pure alcohol drank
		var burnOff = (hours * widmarkB) ; // burn off rate of alcohol absorbtion
		var reducedBodyMass = (bodyWeight * widmarkR) ;
		var peakBAC = ((totalPureAlcOz * pureAlcWeight * 100 * bloodWeight) / reducedBodyMass); // calculate peak BAC level without burn off


		// Widmark Formula for BAC
		// Used to determine BAC taking into account metabolism time, sex, and blood weight
		// [(pureAlcOz * .0514 * 100% * 1.055) / (bodyWeight * widmarkR)] - (hours * widmarkB) = BAC%
		//var bac = ((pureAlcOz * pureAlcWeight * 100 * bloodWeight) / (bodyWeight * widmarkR)) - (hours * widmarkB) ;
		var bac = peakBAC - burnOff ; // simplified version

		// Widmark 8/10 Method (simplified Widmark formula - less accurate)
		// Used to determine BAC taking into account metabolism time, sex, and blood weight
		// Male = 8 Female = 10
		// ([pureAlcOz * ( 8 or 10 )] / bodyWeight) - (hours * widmarkB) = BAC%
		//if (sex == "male") { var sexNum = 8 } if (sex == "female") { var sexNum = 10 } ;
		//var bac = ((pureAlcOz * sexNum / bodyWeight) - (bours * widmarkB)) ;
	}

};//();


// set up event listeners and stuff here ...


// window.onload=BAC.init;


// save settings in cookie ... save drinks in local db?

// save last drink timestamp ... + this drink timestamp + add total drinking time

