jQuery(document).ready(function($) {	
	// Back to top
	$('.panel-backtotop a').click(function() {
		$('html,body').animate({ scrollTop: 0 }, 1000);
		
		return false;
	});
	
	
	// Searchbar input
	$('.input-searchdata').focus(function() {
		if ($(this).val() == 'search') $(this).val('');
	}).blur(function() {
		if ($(this).val() == '') $(this).val('search');
	});
	
	
	// Subscribe input
	$('#subscribe-email').focus(function() {
		if ($(this).val() == 'e-mail') $(this).val('');
	}).blur(function() {
		if ($(this).val() == '') $(this).val('e-mail');
	});
	
	$('#subscribe-name').focus(function() {
		if ($(this).val() == 'name') $(this).val('');
	}).blur(function() {
		if ($(this).val() == '') $(this).val('name');
	});
	
	$('#email').focus(function() {
		if ($(this).val() == 'enter email address') $(this).val('');
	}).blur(function() {
		if ($(this).val() == '') $(this).val('enter email address');
	});
	
	$('#name').focus(function() {
		if ($(this).val() == 'enter your name') $(this).val('');
	}).blur(function() {
		if ($(this).val() == '') $(this).val('enter your name');
	});
	
	// Headline
	var headlineTimer = null;
	
	$('.layer-showcase a[href$=#next]').click(function() {
		clearInterval(headlineTimer);
		
		if ($('.layer-showcase li:visible').is(':last-child')) 
			$('.layer-showcase li:visible').fadeOut('fast', function() {
				$('.layer-showcase li:first-child').fadeIn('fast');
			});
		else
			$('.layer-showcase li:visible').fadeOut('fast', function() {
				$(this).next().fadeIn('fast');
			});
			
		headlineTimer = setInterval(function() {
			$('.layer-showcase a[href$=#next]').trigger('click');
		}, 6000);
		
		return false;
	});
	
	headlineTimer = setInterval(function() {
		$('.layer-showcase a[href$=#next]').trigger('click');
	}, 6000);
	
	$('.listing-relatedvideosprevious').click(function() {
		if ($('.listing-relatedposts:visible').prev().is('ul')) $('.listing-relatedposts:visible').fadeOut('fast', function() {
			$(this).prev().fadeIn('fast');
		});
	}).css('cursor', 'pointer');
	
	$('.listing-relatedvideosnext').click(function() {
		if ($('.listing-relatedposts:visible').next().is('ul')) $('.listing-relatedposts:visible').fadeOut('fast', function() {
			$(this).next().fadeIn('fast');
		});
	}).css('cursor', 'pointer');
});

function isNumeric(input){
	var RE = /^-{0,1}\d*\.{0,1}\d+$/;
	return (RE.test(input));
}

function calWeightGain() {
	oForm = document.getElementById('form-weightgaincalculator');
	var weight = parseInt(oForm.weight.value*1);
	var age = parseInt(oForm.age.value*1);
	var feet = parseInt(oForm.feet.value*1);
	var inches = parseInt(oForm.inches.value*1);
	var optObject = oForm.optMeals;
	var mealsPerDay=0;
	var calTotal=0.0;
	var i =0;

	while (i<optObject.length) {
		if (optObject[i].checked) mealsPerDay = optObject[i].value;
		i++;
	}

	if (!isNumeric(age,"Age:","age")) return false;
	else if ( (age <= 12) || (age > 80)) {
		alert ("Age must be between 13 and 80");
		return false;
	}

	if (!isNumeric(weight,"Weight:","weight")) return false;
	else if ( (weight <= 40) || (weight > 500) ) {
		alert ("Please enter a valid weight");
		return false;
	}
	
	if (!isNumeric(feet,"Feet:","feet")) return false;
	else if ( (feet < 4) || (feet > 7) ) {
		alert ("Height must be between 4 and 7 feet");
		return false;
	}

	if (!isNumeric(inches,"Inches:","inches")) return false;

	if (oForm.weighttype[0].checked) weight = weight/2.2;
	
	height = ((feet*12) + inches) * 2.54;

	if (oForm.sex[0].checked) {
		result = 66.5 + (13.75 * weight) + (5.003 * height) - (6.775 * age);
	} else {
		result = 655.1 + (9.563 * weight) + (1.850 * height) - (4.676 * age);
	}

	//Main Calculation
	result = result * 1.375; // Accounts for physical expenditure

	if (oForm.chkBoost.checked) {
		result = result + (result * 0.40) // Extra calories to gain weight.
	} else {
		result = result + (result * 0.20) // Extra calories to gain weight.
	}

	weight = weight * 2.2; //back to Pounds

	calsPerDay = Math.round(result);
	document.getElementById("answer").innerHTML = "<p>Daily Calorie Intake: <strong>" + calsPerDay + "</strong></p>";

	//Nutrient Ratios
	grams = parseInt(weight * 1.1);
	calTotal = grams * 4;
	document.getElementById("daypro").innerHTML = grams + "g";
	grams = Math.round((grams)  / mealsPerDay *10);
	document.getElementById("mealpro").innerHTML = grams/10 + "g";

	grams = parseInt((calsPerDay * 0.30) / 9.0);
	calTotal = calTotal + (calsPerDay * 0.30);
	document.getElementById("dayfat").innerHTML = grams + "g";
	grams = Math.round((grams)  / mealsPerDay *10);
	document.getElementById("mealfat").innerHTML = grams/10 + "g";

	calTotal = calsPerDay - calTotal;
	grams = parseInt(calTotal / 4.0);
	document.getElementById("daycarb").innerHTML = grams + "g";
	grams = Math.round((grams)  / mealsPerDay *10);
	document.getElementById("mealcarb").innerHTML = grams/10 + "g";

	return true;
}

Date.prototype.format=function(format){var returnStr='';var replace=Date.replaceChars;for(var i=0;i<format.length;i++){var curChar=format.charAt(i);if(i-1>=0&&format.charAt(i-1)=="\\"){returnStr+=curChar;}else if(replace[curChar]){returnStr+=replace[curChar].call(this);}else if(curChar!="\\"){returnStr+=curChar;}}return returnStr;};Date.replaceChars={shortMonths:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],longMonths:['January','February','March','April','May','June','July','August','September','October','November','December'],shortDays:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],longDays:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],d:function(){return(this.getDate()<10?'0':'')+this.getDate();},D:function(){return Date.replaceChars.shortDays[this.getDay()];},j:function(){return this.getDate();},l:function(){return Date.replaceChars.longDays[this.getDay()];},N:function(){return this.getDay()+1;},S:function(){return(this.getDate()%10==1&&this.getDate()!=11?'st':(this.getDate()%10==2&&this.getDate()!=12?'nd':(this.getDate()%10==3&&this.getDate()!=13?'rd':'th')));},w:function(){return this.getDay();},z:function(){var d=new Date(this.getFullYear(),0,1);return Math.ceil((this-d)/86400000);},W:function(){var d=new Date(this.getFullYear(),0,1);return Math.ceil((((this-d)/86400000)+d.getDay()+1)/7);},F:function(){return Date.replaceChars.longMonths[this.getMonth()];},m:function(){return(this.getMonth()<9?'0':'')+(this.getMonth()+1);},M:function(){return Date.replaceChars.shortMonths[this.getMonth()];},n:function(){return this.getMonth()+1;},t:function(){var d=new Date();return new Date(d.getFullYear(),d.getMonth(),0).getDate()},L:function(){var year=this.getFullYear();return(year%400==0||(year%100!=0&&year%4==0));},o:function(){var d=new Date(this.valueOf());d.setDate(d.getDate()-((this.getDay()+6)%7)+3);return d.getFullYear();},Y:function(){return this.getFullYear();},y:function(){return(''+this.getFullYear()).substr(2);},a:function(){return this.getHours()<12?'am':'pm';},A:function(){return this.getHours()<12?'AM':'PM';},B:function(){return Math.floor((((this.getUTCHours()+1)%24)+this.getUTCMinutes()/60+this.getUTCSeconds()/3600)*1000/24);},g:function(){return this.getHours()%12||12;},G:function(){return this.getHours();},h:function(){return((this.getHours()%12||12)<10?'0':'')+(this.getHours()%12||12);},H:function(){return(this.getHours()<10?'0':'')+this.getHours();},i:function(){return(this.getMinutes()<10?'0':'')+this.getMinutes();},s:function(){return(this.getSeconds()<10?'0':'')+this.getSeconds();},u:function(){var m=this.getMilliseconds();return(m<10?'00':(m<100?'0':''))+m;},e:function(){return"Not Yet Supported";},I:function(){return"Not Yet Supported";},O:function(){return(-this.getTimezoneOffset()<0?'-':'+')+(Math.abs(this.getTimezoneOffset()/60)<10?'0':'')+(Math.abs(this.getTimezoneOffset()/60))+'00';},P:function(){return(-this.getTimezoneOffset()<0?'-':'+')+(Math.abs(this.getTimezoneOffset()/60)<10?'0':'')+(Math.abs(this.getTimezoneOffset()/60))+':00';},T:function(){var m=this.getMonth();this.setMonth(0);var result=this.toTimeString().replace(/^.+ \(?([^\)]+)\)?$/,'$1');this.setMonth(m);return result;},Z:function(){return-this.getTimezoneOffset()*60;},c:function(){return this.format("Y-m-d\\TH:i:sP");},r:function(){return this.toString();},U:function(){return this.getTime()/1000;}};

function calWeightLoss() {
	var weight = parseInt(jQuery('#txtWeight').val()*1);
	var goal = parseInt(jQuery('#txtLose').val()*1);
	var calDef = parseInt(jQuery('#txtDeficit').val()*1);
	var sResults = "";
	var toLose = weight - goal;
	var lbsToLose = toLose;
	
	if (!jQuery('#weighttype1').attr('checked')) {
		weight = weight * 2.2;
		lbsToLose = toLose * 2.2;
		goal = goal * 2.2;
	}	

	if  (goal < 90) {
		alert ("Goal Weight is too low");
		return false;
	}

	//Only if deficit entered
	if (calDef > 0) {
		var days = (lbsToLose * 3500) / calDef;
		var myDate=new Date()
		myDate.setDate(myDate.getDate()+days)
		var units =  jQuery('#weighttype1').attr('checked') ? " pounds" : " kilograms";

		var weekAmount = toLose / (days / 7);
		weekAmount = Math.round(weekAmount*100)/100;

		sResults = "You are aiming to lose <b>" + toLose + units + ".</b> <br />";
		sResults += "Based on an average weight loss of <b>" + weekAmount + units + " per week</b>, you will reach your goal weight on: <b>" + myDate.format('M jS, Y') + "</b>";
	}
	
	if (!jQuery('#output').length) jQuery('#form-calculateweightloss h3').after('<p id="output">'+sResults+'</p>');
	else jQuery('#output').html(sResults);

	return true;
}

function calcIt() {
	var outTable = document.getElementById("tblOutput");
	var age = document.getElementById("txtAge").value;
	var maxRate = 0;

	if (!isNumeric(age,"Age:","txtAge")) return false;

	//Calc Heart Rates
	document.getElementById("rateMax").innerHTML = maxRate = Math.round(208 - (0.7 * age));
	document.getElementById("rate90").innerHTML = Math.round(maxRate * 0.9);
	document.getElementById("rate80").innerHTML = Math.round(maxRate * 0.8);
	document.getElementById("rate70").innerHTML = Math.round(maxRate * 0.7);
	document.getElementById("rate60").innerHTML = Math.round(maxRate * 0.6);

	return true;
}

function calNutrition() {
	var thisform = document.getElementById('form-nutritioncalculator');
	var outTable = document.getElementById("tblOutput");
	var calsPerDay = parseInt(thisform["txtCals"].value*1);
	if (!isNumeric(calsPerDay,"Calories:"))	return false;
	
	var iCommonDietRatios = jQuery('#selPreset').val();
	
	jQuery('#txtRatio_0').val(iCommonDietRatios.substr(0,2));
	jQuery('#txtRatio_1').val(iCommonDietRatios.substr(2,2));
	jQuery('#txtRatio_2').val(iCommonDietRatios.substr(4,2));

	var optObject = thisform["optMeals"];
	var mealsPerDay=0;
	var carbPart=0.0;
	var proPart=0.0;
	var fatPart=0.0;
	var carbs=0.0;
	var pro=0.0;
	var fat=0.0;
	var i =0;
	var OUNCE_CONVERT = 0.0352739619;	

	while (i<optObject.length) {
		if (optObject[i].checked) mealsPerDay = optObject[i].value;
		i++;
	}

	//Extract ratios
	carbPart = parseFloat(document.getElementById("txtRatio_0").value/100);
	if (!isNumeric(carbPart,"Carbohydrate:","txtRatio_0")) return false;
	proPart = parseFloat(document.getElementById("txtRatio_1").value/100);
	if (!isNumeric(proPart,"Protein:","txtRatio_1")) return false;
	fatPart = parseFloat(document.getElementById("txtRatio_2").value/100);
	if (!isNumeric(fatPart,"Fat:","txtRatio_2")) return false;

	//Check percentages
	var total = carbPart + proPart + fatPart;
	if (total.toFixed(2) != 1.0) {
		alert ("Carb, Protein, Fat percentages must add up to 100");
		return false;
	}

	//Calculate Results
	var grams = parseInt((calsPerDay * carbPart) / 4 );
	document.getElementById("daycarb").innerHTML = grams + "g";
	grams = Math.round((grams) / mealsPerDay *10);
	document.getElementById("mealcarb").innerHTML = grams/10 + "g";

	carbs = Math.round((calsPerDay * carbPart) );
	document.getElementById("calcarb").innerHTML = carbs + " cals";
	grams = Math.round((carbs) / mealsPerDay *10);
	document.getElementById("calcarbmeal").innerHTML = grams/10 + " cals";

	grams = parseInt((calsPerDay * proPart) / 4);
	document.getElementById("daypro").innerHTML = grams + "g";
	grams = Math.round((grams)  / mealsPerDay *10);
	document.getElementById("mealpro").innerHTML = grams/10 + "g";

	pro = Math.round((calsPerDay * proPart) );
	document.getElementById("calpro").innerHTML = pro + " cals";
	grams = Math.round((pro) / mealsPerDay *10);
	document.getElementById("calpromeal").innerHTML = grams/10 + " cals";

	grams = parseInt((calsPerDay * fatPart) / 9 );
	document.getElementById("dayfat").innerHTML = grams + "g";
	grams = Math.round(((grams) / mealsPerDay) *10);
	document.getElementById("mealfat").innerHTML = grams/10 + "g";

	fat = Math.round((calsPerDay * fatPart) );
	document.getElementById("calfat").innerHTML = fat + " cals";
	grams = Math.round((fat) / mealsPerDay *10);
	document.getElementById("calfatmeal").innerHTML = grams/10 + " cals";

	//A crude rounding error fixer
	if ((carbs+pro+fat) != calsPerDay) {
		carbs = (carbs - ((carbs+pro+fat)-calsPerDay));
		document.getElementById("calcarb").innerHTML =  carbs + " cals";
		grams = Math.round((carbs) / mealsPerDay *10);
		document.getElementById("calcarbmeal").innerHTML = grams/10 + " cals";
	}

	return true;
}

function calBodyFat() {
	var wa = document.getElementById('input-waist').value;
	var ne = document.getElementById('input-neck').value;
	var he = document.getElementById('input-height').value;
	var hi = document.getElementById('input-hips').value;

	var unit = document.getElementById('input-unitmeasure')[document.getElementById('input-unitmeasure').selectedIndex].value;	

	if (unit == 'Inches') {
		var waist = (wa * 2.54);
		var neck = (ne * 2.54);
		var height = (he * 2.54);
		var hips = (hi * 2.54);
	} else if (unit == 'Centimeters') {
		var waist = wa;
		var neck = ne;
		var height = he;
		var hips = hi;
	}	

	var waistNeck = (waist - neck);
	var waistHipsNeck = (parseInt(waistNeck) + parseInt(hips));	

	var logWaistNeck = Math.log(waistNeck) / Math.log(10);
	var logHeight = Math.log(height) / Math.log(10);
	var logWaistHipsNeck = Math.log(waistHipsNeck) / Math.log(10);

	var selObj = document.getElementById('input-gender');
	var selIndex = selObj.selectedIndex;
	var resultValue = selObj.options[selIndex].value;

	var inputBF = document.getElementById('input-bodyfatpercentage');	

	if (resultValue == 'Male') {
		var maleWaistNeck = (0.19077 * logWaistNeck);
		var maleHeight = (0.15456 * logHeight);
		var bfpercentage = (86.010 * logWaistNeck) - (70.041 * logHeight) + 30.30;
		inputBF.value = (Math.round(bfpercentage)) + '%';
	} else if (resultValue == 'Female') {
		var femaleWaistHipsNeck = (0.35004 * logWaistHipsNeck);
		var femaleHeight = (0.22100 * logHeight);
		var bfpercentage = (495 / (1.29579 - femaleWaistHipsNeck + femaleHeight)) - 450;
		inputBF.value = (Math.round(bfpercentage)) + '%';
	}
}


function calCalories(){
	var weight = document.getElementById('input-bodyweight').value;
	var fat = parseInt(document.getElementById('input-bodyfat').value);
	var alevel = document.getElementById('input-activity')[document.getElementById('input-activity').selectedIndex].value;

	var mass = (('100' - fat) / '100') * weight;
	var base = (mass * alevel);	

	var onepound = (base - '500');
	var onehalfpound = (base - '750');
	var twopound = (base - '1000');	

	document.getElementById('input-bodyfat').value = (fat) + '%';
	document.getElementById('input-bodymass').value = mass;
	document.getElementById('input-baseline').value = base;

	if (onepound < '1200') onepound = '1200';
	if (onehalfpound < '1200') onehalfpound = '1200';
	if (twopound < '1200') twopound = '1200';	

	document.getElementById('input-onepound').value = onepound;
	document.getElementById('input-onehalf').value = onehalfpound;
	document.getElementById('input-twopound').value = twopound;
}
	

