///// Switch Stylesheets ////////
///// From http://www.spoono.com/javascript/tutorials/tutorial.php?id=18 ////////

function setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) a.disabled = false;
    }
  }
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

window.onload = function(e) {
  var cookie = readCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
  setActiveStyleSheet(title);
}

window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 365);
}

var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);




///// Savings Calculator ////////

/* formatNumber: PARAMETERS...
num: the decimal number to convert (must be numeric)
dec: number of resulting decimal places to keep
thou: the character to use for thousands separator
pnt: the character to use for decimal point
curr1: Preceding Currency Symbol
curr2: Trailing Currency symbol
n1: Preceding Negative character
n2: Trailing Negative character
*/
function formatNumber(num, dec, thou, pnt, curr1, curr2, n1, n2) {
	var x = Math.round(num * Math.pow(10,dec));
	if (x >= 0) n1 = n2 = '';
	var y = (''+ Math.abs(x)).split('');
	var z = y.length - dec;
	if (z<0) z--;
	for (var i = z; i < 0; i++) y.unshift('0');
	if (z<0) z = 1;
	y.splice(z, 0, pnt);
	if (y[0] == pnt) y.unshift('0');
	while (z > 3) { z-=3; y.splice(z,0,thou); }
	var r = curr1 + n1 + y.join('') + n2 + curr2;
	return r;
}  

function formatCurrency(num) {
  return formatNumber(num, 2, ',', '.', '', '', '-', '');
}

var formCalculate;

function loadCalculations(type){
	if(type == "beef"){
		var heifersA1 = parseInt(document.getElementById("heifersA1").value);
		var cowsA2 = parseInt(document.getElementById("cowsA2").value);
		var cowHeard = heifersA1 + cowsA2;
		var treatedB = parseInt(document.getElementById("treatedB").value);
		var treatmentC = parseInt(document.getElementById("treatmentC").value);
		var CostofScoursD = Math.round((treatedB*treatmentC)*Math.pow(10,2))/Math.pow(10,2);
		var WeanedWeightLossE = parseInt(document.getElementById("WeanedWeightLossE").value);
		var LossFromScoursF = ((treatedB*WeanedWeightLossE)*Math.pow(10,2))/Math.pow(10,2);
		var ValueWeanedCalfG = document.getElementById("ValueWeanedCalfG").value;
		var PriceLossH = ((LossFromScoursF*ValueWeanedCalfG)*Math.pow(10,2))/Math.pow(10,2);
		var ScoursDeathI = parseInt(document.getElementById("ScoursDeathI").value);
		var HealthyWeanedCalvesJ = parseInt(document.getElementById("HealthyWeanedCalvesJ").value);
		var DeathLossK = ((ScoursDeathI*HealthyWeanedCalvesJ)*Math.pow(10,2))/Math.pow(10,2);
		var TreatmentSaleDHK =  ((CostofScoursD+PriceLossH+DeathLossK)*Math.pow(10,2))/Math.pow(10,2);
		var CostPerDoseM = document.getElementById("CostPerDoseM").value;
		var DosesUsedN = Math.round((heifersA1*2) + cowsA2);
		var CostInvestingO = ((CostPerDoseM*DosesUsedN)*Math.pow(10,2))/Math.pow(10,2);
		//var ReturnOnInvestment = ((TreatmentSaleDHK/CostInvestingO)*Math.pow(10,4))/Math.pow(10,4); OLD CALCULATION
		//var ReturnOnInvestment = ((CostInvestingO/DosesUsedN)*Math.pow(10,4))/Math.pow(10,4);
        var ReturnOnInvestment = TreatmentSaleDHK-CostInvestingO;
        var PotentialReturnOnInvestment = TreatmentSaleDHK/CostInvestingO;
		
		var elementD = document.getElementById("CostofScoursD");
		var elementF = document.getElementById("LossFromScoursF");
		var elementH = document.getElementById("PriceLossH");
		var elementK = document.getElementById("DeathLossK");
		var elementL = document.getElementById("AnnualCostL");
		var elementN = document.getElementById("DosesUsedN");
		var elementO = document.getElementById("CostInvestingO");
		var elementROI = document.getElementById("ReturnOnInvestment");
        var elementPotentialROI = document.getElementById("PotentialReturnOnInvestment");
		
		elementD.innerHTML = '<strong>$' + formatCurrency(CostofScoursD) + '</strong>'; 
		elementF.innerHTML = '<strong>' + formatCurrency(LossFromScoursF) + ' lbs</strong>'; 
		elementH.innerHTML = '<strong>$' + formatCurrency(PriceLossH) + '</strong>'; 
		elementK.innerHTML = '<strong>$' + formatCurrency(DeathLossK) + '</strong>';
		elementL.innerHTML = '<strong>$' + formatCurrency(TreatmentSaleDHK) + '</strong>';
		elementN.innerHTML = '<strong>' + DosesUsedN + '</strong>';
		elementO.innerHTML = '<strong>$' + formatCurrency(CostInvestingO) + '</strong>'; 
		elementROI.innerHTML = '<strong>$' + formatCurrency(ReturnOnInvestment) + '</strong>';
        elementPotentialROI.innerHTML = '<strong>$' + formatCurrency(PotentialReturnOnInvestment) + '</strong>';
		
	}else if(type == "dairy"){
		
		var HeifersA = parseInt(document.getElementById("HeifersA").value);
		var CowsAA2 = parseInt(document.getElementById("CowsAA2").value);
		var CalvesBornB1 = parseInt(document.getElementById("CalvesBornB1").value);
		var CalvesBornB2 = document.getElementById("CalvesBornB2").value;
		var TreatmentCC = document.getElementById("TreatmentCC").value;
		var CostScoursD = CalvesBornB2*TreatmentCC;
		var ScoursDeathE = parseInt(document.getElementById("ScoursDeathE").value);
		var ValueNewbornF = parseInt(document.getElementById("ValueNewbornF").value);
		var DeathLossG = ScoursDeathE*ValueNewbornF;
		var AnnualCostH = CostScoursD+DeathLossG;
		var CostPerDoseI = document.getElementById("CostPerDoseI").value;
		var DosesUsedJ = Math.round((HeifersA*2) + CowsAA2);
		var CostInvestingK = CostPerDoseI*DosesUsedJ;
		//var ReturnInvestment = AnnualCostH/CostInvestingK; OLD CALCULATION
		//var ReturnInvestment = CostInvestingK/DosesUsedJ;
        var ReturnOnInvestment = AnnualCostH-CostInvestingK;
        var PotentialReturnOnInvestment = AnnualCostH/CostInvestingK;
		
		var elementD = document.getElementById("CostScoursD");
		var elementG = document.getElementById("DeathLossG");
		var elementH = document.getElementById("AnnualCostH");
		var elementJ = document.getElementById("DosesUsedJ");
		var elementK = document.getElementById("CostInvestingK");
		var elementROI = document.getElementById("ReturnInvestment");
        var elementPotentialROI = document.getElementById("PotentialROIDairy");
		
		elementD.innerHTML = '<strong>$' + formatCurrency(CostScoursD) + '</strong>'; 
		elementG.innerHTML = '<strong>$' + formatCurrency(DeathLossG) + '</strong>'; 
		elementH.innerHTML = '<strong>$' + formatCurrency(AnnualCostH) + '</strong>'; 
		elementJ.innerHTML = '<strong>' + DosesUsedJ + '</strong>';
		elementK.innerHTML = '<strong>$' + formatCurrency(CostInvestingK) + '</strong>';
		elementROI.innerHTML = '<strong>$' + formatCurrency(ReturnOnInvestment) + '</strong>';
        elementPotentialROI.innerHTML = '<strong>$' + formatCurrency(PotentialReturnOnInvestment) + '</strong>';
	}
	 
}

function displayForm(formType){
	
	if(formType == "Beef"){
		document.getElementById("BeefInfo").style.display ='block';
		document.getElementById("DairyInfo").style.display = 'none';
		formCalculate = "beef";
	}
	if(formType == "Dairy"){
		document.getElementById("BeefInfo").style.display ='none';
		document.getElementById("DairyInfo").style.display = 'block';
		formCalculate = "dairy";
	}
}

function calculateWhat(){
	if(formCalculate == "beef"){
		//alert(formCalculate);
		loadCalculations("beef");
	}else if(formCalculate == "dairy"){
		
		loadCalculations("dairy");
	}
}


// form validation function //
function validate(savingsCalculator) {
  // Beef variables
  var heifersA1 = savingsCalculator.heifersA1.value;
  var cowsA2 = savingsCalculator.cowsA2.value;
  var treatedB = savingsCalculator.treatedB.value;
  var treatmentC = savingsCalculator.treatmentC.value;
  var WeanedWeightLossE = savingsCalculator.WeanedWeightLossE.value;
  var ValueWeanedCalfG = savingsCalculator.ValueWeanedCalfG.value;
  var ScoursDeathI = savingsCalculator.ScoursDeathI.value;
  var HealthyWeanedCalvesJ = savingsCalculator.HealthyWeanedCalvesJ.value;
  var CostPerDoseM = savingsCalculator.CostPerDoseM.value;
  
  // Dairy variables
   var HeifersA = savingsCalculator.HeifersA.value;
   var CowsAA2 = savingsCalculator.CowsAA2.value;
   var CalvesBornB1 = savingsCalculator.CalvesBornB1.value;
   var CalvesBornB2 = savingsCalculator.CalvesBornB2.value;
   var TreatmentCC = savingsCalculator.TreatmentCC.value;
   var ScoursDeathE = savingsCalculator.ScoursDeathE.value;
   var ValueNewbornF = savingsCalculator.ValueNewbornF.value;
   var CostPerDoseI = savingsCalculator.CostPerDoseI.value;
	
  if(formCalculate == "beef"){
  if(heifersA1 == "") {
    inlineMsg('heifersA1','You must enter your heifer herd size.',2);
    return false;
  }
  /*if(!heifersA1.match(messageRegex)) {
    inlineMsg('heifersA1','You have entered an invalid name.',2);
    return false;
  }*/
  if(cowsA2 == "") {
    inlineMsg('cowsA2','You must enter your cow herd size.',2);
    return false;
  }
  /*if(!cowsA2.match(messageRegex)) {
    inlineMsg('cowsA2','<strong>Error</strong><br />You have entered an invalid email.',2);
    return false;
  }*/
  if(treatedB == "") {
    inlineMsg('treatedB','You must enter your number of calves treated.',2);
    return false;
  }
  /*if(treatedB.match(messageRegex)) {
    inlineMsg('treatmentC','You have entered an invalid message.');
    return false;
  }*/
  if(treatmentC == "") {
    inlineMsg('treatmentC','You must enter your treatment cost.');
    return false;
  }
  /*if(treatmentC.match(messageRegex)) {
    inlineMsg('treatmentC','You have entered an invalid message.');
    return false;
  }*/
  if(WeanedWeightLossE == "") {
    inlineMsg('WeanedWeightLossE','You must enter your weaning weight loss.');
    return false;
  }
  /*if(WeanedWeightLossE.match(messageRegex)) {
    inlineMsg('WeanedWeightLossE','You have entered an invalid message.');
    return false;
  }*/
  if(ValueWeanedCalfG == "") {
    inlineMsg('ValueWeanedCalfG','You must enter average value of weaned calf.');
    return false;
  }
  /*if(ValueWeanedCalfG.match(messageRegex)) {
    inlineMsg('ValueWeanedCalfG','You have entered an invalid message.');
    return false;
  }*/
  if(ScoursDeathI == "") {
    inlineMsg('ScoursDeathI','You must enter a scours death loss.');
    return false;
  }
  /*if(ScoursDeathI.match(messageRegex)) {
    inlineMsg('ScoursDeathI','You have entered an invalid message.');
    return false;
  }*/
  if(HealthyWeanedCalvesJ == "") {
    inlineMsg('HealthyWeanedCalvesJ','You must enter an average value of healthy weaned calves.');
    return false;
  }
  /*if(HealthyWeanedCalvesJ.match(messageRegex)) {
    inlineMsg('HealthyWeanedCalvesJ','You have entered an invalid message.');
    return false;
  }*/
  if(CostPerDoseM == "") {
    inlineMsg('CostPerDoseM','What is your cost per dose.');
    return false;
  }
  }else if(formCalculate == "dairy"){
	 if(HeifersA == "") {
	    inlineMsg('HeifersA','You must enter your heifer herd size.',2);
	    return false;
	  }
	if(CowsAA2 == "") {
	    inlineMsg('CowsAA2','You must enter your cow herd size.',2);
	    return false;
	  }
	if(CalvesBornB1 == "") {
	    inlineMsg('CalvesBornB1','You must enter heifer calves born.',2);
	    return false;
	  }
	if(CalvesBornB2 == "") {
	    inlineMsg('CalvesBornB2','You must enter heifer calves treated.',2);
	    return false;
	  }
	if(TreatmentCC == "") {
	    inlineMsg('TreatmentCC','You must enter your treatment cost.',2);
	    return false;
	  }
	if(ScoursDeathE == "") {
	    inlineMsg('ScoursDeathE','You must enter your scours death loss.',2);
	    return false;
	  }
	if(ValueNewbornF == "") {
	    inlineMsg('ValueNewbornF','You must enter an average loss value.',2);
	    return false;
	  }
	if(CostPerDoseI == "") {
	    inlineMsg('CostPerDoseI','You must enter your cost per dose.',2);
	    return false;
	  }
}
  
  return true;
}

// START OF MESSAGE SCRIPT //

var MSGTIMER = 20;
var MSGSPEED = 5;
var MSGOFFSET = 3;
var MSGHIDE = 4;

// build out the divs, set attributes and call the fade function //
function inlineMsg(target,string,autohide) {
  var msg;
  var msgcontent;
  if(!document.getElementById('msg')) {
    msg = document.createElement('div');
    msg.id = 'msg';
    msgcontent = document.createElement('div');
    msgcontent.id = 'msgcontent';
    document.body.appendChild(msg);
    msg.appendChild(msgcontent);
    msg.style.filter = 'alpha(opacity=0)';
    msg.style.opacity = 0;
    msg.alpha = 0;
  } else {
    msg = document.getElementById('msg');
    msgcontent = document.getElementById('msgcontent');
  }
  msgcontent.innerHTML = string;
  msg.style.display = 'block';
  var msgheight = msg.offsetHeight;
  var targetdiv = document.getElementById(target);
  targetdiv.focus();
  var targetheight = targetdiv.offsetHeight;
  var targetwidth = targetdiv.offsetWidth;
  var topposition = topPosition(targetdiv) - ((msgheight - targetheight) / 2);
  var leftposition = leftPosition(targetdiv) + targetwidth + MSGOFFSET;
  window.scroll(0,topposition - 40);
  msg.style.top = topposition + 'px';
  msg.style.left = leftposition + 'px';
  clearInterval(msg.timer);
  msg.timer = setInterval("fadeMsg(1)", MSGTIMER);
  if(!autohide) {
    autohide = MSGHIDE;  
  }
  window.setTimeout("hideMsg()", (autohide * 1000));
}

// hide the form alert //
function hideMsg(msg) {
  var msg = document.getElementById('msg');
  if(!msg.timer) {
    msg.timer = setInterval("fadeMsg(0)", MSGTIMER);
  }
}

// face the message box //
function fadeMsg(flag) {
  if(flag == null) {
    flag = 1;
  }
  var msg = document.getElementById('msg');
  var value;
  if(flag == 1) {
    value = msg.alpha + MSGSPEED;
  } else {
    value = msg.alpha - MSGSPEED;
  }
  msg.alpha = value;
  msg.style.opacity = (value / 100);
  msg.style.filter = 'alpha(opacity=' + value + ')';
  if(value >= 99) {
    clearInterval(msg.timer);
    msg.timer = null;
  } else if(value <= 1) {
    msg.style.display = "none";
    clearInterval(msg.timer);
  }
}

// calculate the position of the element in relation to the left of the browser //
function leftPosition(target) {
  var left = 0;
  if(target.offsetParent) {
    while(1) {
      left += target.offsetLeft;
      if(!target.offsetParent) {
        break;
      }
      target = target.offsetParent;
    }
  } else if(target.x) {
    left += target.x;
  }
  return left;
}

// calculate the position of the element in relation to the top of the browser window //
function topPosition(target) {
  var top = 0;
  if(target.offsetParent) {
    while(1) {
      top += target.offsetTop;
      if(!target.offsetParent) {
        break;
      }
      target = target.offsetParent;
    }
  } else if(target.y) {
    top += target.y;
  }
  return top;
}

// preload the arrow //
if(document.images) {
  arrow = new Image(7,80); 
  arrow.src = "../_images/msg_arrow.gif"; 
}
