﻿function gravToString(grav) {
   var gravString = (Math.round(grav * 1000) / 1000).toString();
   
   if (gravString.length == 1) {
      gravString = gravString + ".000";
   }
   else if (gravString.length == 3) {
      gravString = gravString + "00";
   }
   else if (gravString.length == 4) {
      gravString = gravString + "0";
   }
   
   return gravString;
}

function volToString(vol) {
   var volString = Math.round(vol * 10) / 10;
   
   return volString;
}

function brixToString(brix) {
   var brixString = (Math.round(brix * 10) / 10).toString();
   
   if (brixString.indexOf(".") == -1) {
      brixString = brixString + ".0";
   }
   
   return brixString;
}

function brixCorrectionToString(brix) {
   var brixString = (Math.round(brix * 100) / 100).toString();
   
   if (brixString.indexOf(".") == -1) {
      brixString = brixString + ".00";
   }
   
   return brixString;
}

function lbsToString(lbs) {
   var lbsString = (Math.round(lbs * 100) / 100).toString();
   
   if (lbsString.indexOf(".") == -1) {
      lbsString = lbsString + ".00";
   }
   
   return lbsString;
}

function calcInitGrav(initVol, finGrav, finVol) {
   var finGravPts = (finGrav - 1) * 1000;
   
   return 1 + (Math.round((finGravPts * finVol) / initVol) / 1000);
}

function calcInitVol(initGrav, finGrav, finVol) {
   var initGravPts = (initGrav - 1) * 1000;
   var finGravPts = (finGrav - 1) * 1000;

   return (finGravPts * finVol) / initGravPts;
}

function calcFinGrav(initGrav, initVol, finVol) {
   var initGravPts = (initGrav - 1) * 1000;
   
   return 1 + (Math.round((initGravPts * initVol) / finVol) / 1000);
}

function calcFinVol(initGrav, initVol, finGrav) {
   var initGravPts = (initGrav - 1) * 1000;
   var finGravPts = (finGrav - 1) * 1000;
   
   return (initGravPts * initVol) / finGravPts;
}

// brixToSG from http://byo.com/mrwizard/730.html
function brixToSG(brix, brixCorrection) {
   var correctedBrix = brix / brixCorrection;
   
   var sg = 1 + (correctedBrix / (258.6- ((correctedBrix / 258.2) * 227.1)));
    
   return sg;
}

// brixToSGWithAlcohol from http://www.nicebrew.com/archives/beer-brewing/beer-brewing-p-7340.htm
function brixToSGWithAlcohol(brix, brixCorrection, originalPlato) {
   var correctedBrix = brix / brixCorrection;
   
   return 1.001843 - (0.002318474 * originalPlato) - (0.000007775 * originalPlato * originalPlato) - (0.000000034 * originalPlato * originalPlato * originalPlato) + (0.00574 * correctedBrix) + (0.00003344 * correctedBrix * correctedBrix) + (0.000000086 * correctedBrix * correctedBrix * correctedBrix);
}

// Cookie Manipulation Functions Based on code from www.w3schools.com
function setCookie(cookieName, value, expiredays) {
   var exdate = new Date()
   
   exdate.setDate(exdate.getDate() + expiredays);
   document.cookie = cookieName + "=" + escape(value) +
      ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
}

function getCookie(cookieName) {
   if (document.cookie.length > 0) {
      var cookieStart = document.cookie.indexOf(cookieName + "=");
      
      if (cookieStart != -1) {
         cookieStart = cookieStart + cookieName.length + 1;
         var cookieEnd = document.cookie.indexOf(";", cookieStart);
         
         if (cookieEnd == -1) {
            cookieEnd = document.cookie.length;
         }
         
         return unescape(document.cookie.substring(cookieStart, cookieEnd));
      }
   }

   return ""
}

function getCookieWithDefault(cookieName, defaultValue) {
   var value = getCookie(cookieName);
   
   return value == "" || value == null ? defaultValue : value;
}