var gUnits = 0;

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function numbersOnly(obj)
{
	var regex = /[^0-9\.]+/g;// /(\D|\.)+/g;
	var itemVal = obj.value;
	itemVal = itemVal.replace(regex, "");
	obj.value = itemVal;
}
function setSelectionOptionByValue(obj, val)
{
	//alert ("got here" + val);
	for (var i=0; i<obj.length; i++ ) {
		if ( obj.options[i].value == val ) {
			obj.options[i].selected = true;
			return;
		}
	}
}

function setRadioByValue(obj, val)
{
	var len = obj.length;
	for (var i=0; i<len; i++ ) {
		obj[i].checked = (obj[i].value == val );
	}
}

function radioGroupValue(radioGrp)
{
	
	for (var i = 0; i< radioGrp.length; i++) {
    	if (radioGrp[i].checked) {
      	  return radioGrp[i].value;
    	}
	} 
	return null;
}

function formattedHeight(hgtIn)
{
	var inches = hgtIn % 12;
	var ft = (hgtIn - inches) / 12;
	var str = "" + ft + "'" + inches + "\"";
	return str;
}

function getCookie(name) {
   name = cookiePrefix + name;
   var result = null; 
   var myCookie = " " + document.cookie + ";";
   var searchName = " " + name + "=";
   var startOfCookie = myCookie.indexOf(searchName); 
   var endOfCookie; 
   if (startOfCookie != -1) {
      startOfCookie += searchName.length; 
      endOfCookie = myCookie.indexOf(";", startOfCookie); 
      result = unescape(myCookie.substring(startOfCookie,
      endOfCookie)); 
   }
   return result; 
}

function setCookie(name, value, lifeSpan) {
   name = cookiePrefix + name;
  // alert("setting cookie: " + name + " to " + value);
   var dat = new Date();
   dat.setTime(dat.getTime() + lifeSpan*24*60*60*1000); 
   var expString = "; expires=" + dat.toGMTString();
   var pathStr = "; path=/";
   document.cookie = name + "=" + escape(value) + expString + pathStr; 
}
function setCookiePath(name, value, lifeSpan, path) {
   name = cookiePrefix + name;
  // alert("setting cookie: " + name + " to " + value);
   var dat = new Date();
   dat.setTime(dat.getTime() + lifeSpan*24*60*60*1000); 
   var expString = "; expires=" + dat.toGMTString();
   var pathStr = "; path=" + (path ? path : "/");
   document.cookie = name + "=" + escape(value) + expString + pathStr;
}



function setUnits(units)
{
	var usDiv = MM_findObj('us');
	var us_wgt = MM_findObj('us_wgt');
	var british_wgt = MM_findObj('british_wgt');
	var metricDiv = MM_findObj('metric');
	if ( units == 0 ) {
		usDiv.style.display = 'block';
		us_wgt.style.display = 'inline';
		british_wgt.style.display = 'none';
		metricDiv.style.display = 'none';
		
	}
	else if ( units == 1 )  {
		usDiv.style.display = 'block';
		us_wgt.style.display = 'none';
		british_wgt.style.display = 'inline';
		metricDiv.style.display = 'none';
	}
	else if ( units == 2 )  {
		usDiv.style.display = 'none';
		us_wgt.style.display = 'none';
		british_wgt.style.display = 'none';
		metricDiv.style.display = 'block';
	}
	gUnits = units;
	setCookie("units", units, 1000);
}

//Get stored items
function setUp() {
	var savedVals = getCookie('boardVals');
	var vals = ( savedVals ==  null ) ? Array() : savedVals.split('|');
	
	// 'saveVals | name | age | sex | units
	
	document.message.SaveCookie.checked = ((vals.length > 0) && (0 == vals[0])) ? false : true;
	
	if ( vals.length > 4 )
		gUnits = vals[4];
	setUnits(gUnits);
	
	var measureRadioGroup = MM_findObj('measure');
	setRadioByValue( measureRadioGroup, gUnits);
		
	document.message.name.value = ( vals.length > 1 ) ? vals[1] : "";

	document.message.age.value = ( vals.length > 2 ) ? vals[2] : "";
		
	setRadioByValue(document.message.sex, (( vals.length > 3 ) ? vals[3] : ""));
		
	if ( gUnits == 0 ) {
	// 'saveVals | name | age | sex | units | USHeight | USWeight | start_weight_us | goal_weight_us
	
		setUSWeight( (( vals.length > 6 ) ? vals[6] : "") );
		
		document.message.goal_weight_us.value = (( vals.length > 8 ) ? vals[8] : "");
	
		document.message.start_weight_us.value = (( vals.length > 7 ) ? vals[7] : "");
		
		setUSHeight( (( vals.length > 5 ) ? vals[5] : "")  );
	}		
	else if ( gUnits == 1 ) {
	// 'saveVals | name | age | sex | units | USHeight | USWeight | start_weight_brit_lb  | start_weight_brit_stone | goal_weight_brit_lb | goal_weight_brit_stone		
		
		setBritishWeight( (( vals.length > 6 ) ? vals[6] : "") );
		
		var britGoalLb = getCookie('goal_weight_brit_lb') || "";
		document.message.goal_weight_brit_lb.value = (( vals.length > 9 ) ? vals[9] : "");
	
		document.message.goal_weight_brit_stone.value = (( vals.length > 10 ) ? vals[10] : "");
	
		document.message.start_weight_brit_lb.value = (( vals.length > 7 ) ? vals[7] : "");
		
		var britStartStone = getCookie('start_weight_brit_stone') || "";
		document.message.start_weight_brit_stone.value = (( vals.length > 8 ) ? vals[8] : "");
		
		setUSHeight( (( vals.length > 5 ) ? vals[5] : "")  );
	}
	else {
	// 'saveVals | name | age | sex | units | MetricHeight | MetricWeight | start_weight_metric | goal_weight_metric
		
		setMetricWeight( (( vals.length > 6 ) ? vals[6] : "") );
		
		document.message.goal_weight_metric.value = (( vals.length > 8 ) ? vals[8] : "");
	
		document.message.start_weight_metric.value = (( vals.length > 7 ) ? vals[7] : "");
		
		setMetricHeight((( vals.length > 5 ) ? vals[5] : ""));		
	}
}

function checkClientTime(serverGMTTime)
{
	
}

function getUSHeight()
{
	if ( gUnits == 2 ) 
		return;
	
	var hgtIn = 0;

	if(document.message.feet.value != "e") 
		hgtIn += (parseInt(document.message.feet.value) * 12);
	if(document.message.inches.value != "e") 
		hgtIn += parseInt(document.message.inches.value);
	return hgtIn;
}

function setUSHeight(hgtIn)
{
	if ( gUnits == 2 ) 
		return;	
	
	var val = "e";
	if ( hgtIn == 0 )
		hgtIn = "e";
	else {
		var leftOver;
		if ( hgtIn >= 12 ) {
			leftOver = hgtIn % 12;
			val = (hgtIn - leftOver) / 12;
			hgtIn = leftOver;
		}
	}
	
	setSelectionOptionByValue(document.message.feet, val);
	setSelectionOptionByValue(document.message.inches, hgtIn);
}
function getMetricHeight()
{
	if (  gUnits != 2 ) 
		return;
	
	var hgtCm = 0;

	if(document.message.hundreds_cm.value != "e") 
		hgtCm += (parseInt(document.message.hundreds_cm.value) * 100);
	if(document.message.tens_cm.value != "e") 
		hgtCm += (parseInt(document.message.tens_cm.value) * 10);
	if(document.message.ones_cm.value != "e") 
		hgtCm += parseInt(document.message.ones_cm.value);
	return hgtCm;
}

function setMetricHeight(hgtCm)
{
	if (  gUnits != 2 ) 
		return;	
	
	var val = "e";
	var val10 = "e";
	var val100 = "e";
	
	if ( hgtCm > 0 ) {
		var leftOver;
		if ( hgtCm >= 100 ) {
			leftOver = hgtCm % 100;
			val100 = (hgtCm - leftOver) / 100;
			hgtCm = leftOver;
		}
		
		if ( hgtCm >= 10 ) {
			leftOver = hgtCm % 10;
			val10 = ( hgtCm - leftOver ) / 10;
			hgtCm = leftOver;
		}
		else
			val10 = 0;
			
		val = hgtCm;
	}
	setSelectionOptionByValue(document.message.hundreds_cm, val100);
	setSelectionOptionByValue(document.message.tens_cm, val10);
	setSelectionOptionByValue(document.message.ones_cm, val);

}


function getUSWeight()
{
	if (  gUnits != 0 ) 
		return 0;
	
	var wgt = 0;
	if(document.message.hundreds_lb.value != "e") 
		wgt += (parseInt(document.message.hundreds_lb.value) * 100);
	if(document.message.tens_lb.value != "e") 
		wgt += (parseInt(document.message.tens_lb.value) * 10);
	if(document.message.ones_lb.value != "e") 
		wgt += parseInt(document.message.ones_lb.value);
	
	return wgt;	
}
function getBritishWeight()
{
	if (  gUnits != 1 ) 
		return 0;
	
	var wgt = 0;
	
	if(document.message.tens_stone.value != "e") 
		wgt += (parseInt(document.message.tens_stone.value) * 140);
	if(document.message.ones_stone.value != "e") 
		wgt += (parseInt(document.message.ones_stone.value) * 14);
	if(document.message.british_lb.value != "e") 
		wgt += parseInt(document.message.british_lb.value);
	return wgt;	
}
function getMetricWeight()
{
	if (  gUnits != 2 ) 
		return 0;
	
	var wgt = 0;

	if(document.message.hundreds_kg.value != "e") 
		wgt += (parseInt(document.message.hundreds_kg.value) * 100);
	if(document.message.tens_kg.value != "e") 
		wgt += (parseInt(document.message.tens_kg.value) * 10);
	if(document.message.ones_kg.value != "e") 
		wgt += parseInt(document.message.ones_kg.value);
	return wgt;	
}
function setUSWeight( wgt )
{
	if ( gUnits != 0 ) 
		return;
	
	var val = "e";
	var val10 = "e";
	var val100 = "e";
	
	if ( wgt > 0 ) {
		var leftOver;
		if ( wgt >= 100 ) {
			leftOver = wgt % 100;
			val100 = (wgt - leftOver) / 100;
			wgt = leftOver;
		}
		
		if ( wgt >= 10 ) {
			leftOver = wgt % 10;
			val10 = ( wgt - leftOver ) / 10;
			wgt = leftOver;
		}
		else
			val10 = 0;
			
		val = wgt;
	}
	setSelectionOptionByValue(document.message.hundreds_lb, val100);
	setSelectionOptionByValue(document.message.tens_lb, val10);
	setSelectionOptionByValue(document.message.ones_lb, val);
}
function setBritishWeight( wgt )
{
	if ( gUnits != 1 ) 
		return;
	
	var stone10 = "e";
	var stone1 = "e";
	var val = "e";
	if ( wgt > 0 ) {
		var leftOver;
		if ( wgt >= 14 ) {
			leftOver = wgt % 14;
			var stones = ( wgt - leftOver ) / 14;
			if ( stones >= 10 ) {
				var stonesLeftOver = stones % 10;
				stone10 = ( stones - stonesLeftOver ) / 10;
				stones = stonesLeftOver;
			}
			stone1 = stones;
			wgt = leftOver;
		}
	
		val = wgt;
	}
	setSelectionOptionByValue(document.message.tens_stone, stone10);
	setSelectionOptionByValue(document.message.ones_stone, stone1);
	setSelectionOptionByValue(document.message.british_lb, val);
}
function setMetricWeight( wgt )
{
	if ( gUnits != 2 ) 
		return;
	
	var val = "e";
	var val10 = "e";
	var val100 = "e";
	
	if ( wgt > 0 ) {
		var leftOver;
		if ( wgt >= 100 ) {
			leftOver = wgt % 100;
			val100 = (wgt - leftOver) / 100;
			wgt = leftOver;
		}
		
		if ( wgt >= 10 ) {
			
			leftOver = wgt % 10;
			val10 = ( wgt - leftOver ) / 10;
			wgt = leftOver;
		}
		else
			val10 = 0;
			
		val = wgt;
	}
	setSelectionOptionByValue(document.message.hundreds_kg, val100);
	setSelectionOptionByValue(document.message.tens_kg, val10);
	setSelectionOptionByValue(document.message.ones_kg, val);
}

function getClientDate()
{
	var dat = new Date();
	var month = dat.getMonth() + 1;
	var year = dat.getYear();
	year = year + "";  // Convert to string.
	year = year.substring(year.length - 2, year.length)
	return "20" + year + '-' + month + '-' + dat.getDate(); 
}
function Validate() {
	
	numbersOnly(MM_findObj('age'));
	
	if(document.message.name.value == "") {
		window.alert("Please fill in your first name. Thanks.");
		return false;
	}
	
	var sex = radioGroupValue(document.message.sex);
	if ( ! ((sex == "m") || (sex == "f")) ) {
		window.alert("Please select your sex. Thanks.");
		return false;
	}
	
	if(document.message.age.value == "") {
		window.alert("Please fill in your age. Thanks.");
		return false;
	}
	var age = parseInt(document.message.age.value);
	if ( age < 5 ) {
		window.alert("Please correct your age. Thanks.");
		return false;
	}
	if ( gUnits == 2 ) {
		
		numbersOnly(MM_findObj('start_weight_metric'));
		numbersOnly(MM_findObj('goal_weight_metric'));

		if(document.message.tens_cm.value == "e") {
			window.alert("Please fill in your height. Thanks.");
			return false;
		}
		if(document.message.ones_cm.value == "e") {
			window.alert("Please fill in your height. Thanks.");
			return false;
		}
		if(document.message.tens_kg.value == "e") {
			window.alert("Please fill in your current weight. Thanks.");
			return false;
		}
		if(document.message.ones_kg.value == "e") {
			window.alert("Please fill in your current weight. Thanks.");
			return false;
		}
		var mWgt = getMetricWeight();
		if (( mWgt < 13 ) || ( mWgt > 317 )) {
			window.alert("Please correct your current weight. Thanks.");
			return false;
		}
		document.message.weight_lb.value = Math.round(mWgt * 2.2);
		
		
		var startWgt = document.message.start_weight_metric.value || "";
		if ( startWgt == "") {
			window.alert("Please fill in your starting weight. Thanks.");
			return false;
		}
		if ((startWgt < 13) || (startWgt > 317)) {
			window.alert("Please correct your starting weight. Thanks.");
			return false;
		}
		document.message.start_weight_lb.value = startWgt * 2.2;
		
		var goalWgt = document.message.goal_weight_metric.value || "";
		if ( goalWgt == "") {
			window.alert("Please fill in your goal weight. Thanks.");
			return false;
		}
		if ((goalWgt < 13) || (goalWgt > 317)) {
			window.alert("Please correct your goal weight. Thanks.");
			return false;
		}
		
		
		
		var mHgt = getMetricHeight();
		if ( ( mHgt < 61 ) || ( mHgt > 213 ) ) {
			window.alert("Please correct your height. Thanks.");
			return false;
		}
		document.message.height_in.value = Math.round(mHgt / 2.54);
		
	}
	else {
		if(document.message.feet.value == "e") {
			window.alert("Please fill in your height (feet). Thanks.");
			return false;
		}
		if(document.message.inches.value == "e") {
			window.alert("Please fill in your height (inches). Thanks.");
			return false;
		}
		if ( gUnits == 0 ) {
			numbersOnly(MM_findObj('start_weight_us'));
			numbersOnly(MM_findObj('goal_weight_us'));
			
			
			if(document.message.tens_lb.value == "e") {
				window.alert("Please fill in your current weight. Thanks.");
				return false;
			}
			if(document.message.ones_lb.value == "e") {
				window.alert("Please fill in your current weight. Thanks.");
				return false;
			}
			var usWgt = getUSWeight();
			if (( usWgt < 30 ) || ( usWgt > 700 ) ) {
				window.alert("Please correct your current weight. Thanks.");
				return false;
			}
			document.message.weight_lb.value = usWgt;
			
			var startWgt = document.message.start_weight_us.value || "";
			if ( startWgt == "") {
				window.alert("Please fill in your starting weight. Thanks.");
				return false;
			}
			if ((startWgt < 30) || (startWgt > 700)) {
				window.alert("Please correct your starting weight. Thanks.");
				return false;
			}
			document.message.start_weight_lb.value = startWgt;
			
			var goalWgt = document.message.goal_weight_us.value || "";
			if ( goalWgt == "") {
				window.alert("Please fill in your goal weight. Thanks.");
				return false;
			}
			if ((goalWgt < 30) || (goalWgt > 700)) {
				window.alert("Please correct your goal weight. Thanks.");
				return false;
			}
				
			
			
		}
		else {
		// british weight
			numbersOnly(MM_findObj('start_weight_brit_stone'));
			numbersOnly(MM_findObj('start_weight_brit_lb'));
			numbersOnly(MM_findObj('goal_weight_brit_stone'));
			numbersOnly(MM_findObj('goal_weight_brit_lb'));
						
			if(document.message.ones_stone.value == "e") {
				window.alert("Please fill in your current weight. Thanks.");
				return false;
			}
			if(document.message.british_lb.value == "e") {
				window.alert("Please fill in your current weight. Thanks.");
				return false;
			}
			var britWgt = getBritishWeight();
			
			if (( britWgt < 30 ) || ( britWgt > 700 ) ) {
				window.alert("Please correct your current weight. Thanks.");
				return false;
			}
			
			document.message.weight_lb.value = britWgt;
			
			var startStone = document.message.start_weight_brit_stone.value || "";
			var startLb = document.message.start_weight_brit_lb.value || "";
			if ((startLb == "") && (startLb == "")) {
				window.alert("Please fill in your starting weight. Thanks.");
				return false;
			}
			var lbs = parseInt(startStone) * 14;
			lbs += parseInt(startLb);
			if ((lbs < 30) || (lbs > 700)) {
				window.alert("Please correct your starting weight. Thanks.");
				return false;
			}
			document.message.start_weight_lb.value = lbs;
			
			var goalStone = document.message.goal_weight_brit_stone.value || "";
			var goalLb = document.message.goal_weight_brit_lb.value || "";
			if ((goalStone == "") && (goalLb == "")) {
				window.alert("Please fill in your goal weight. Thanks.");
				return false;
			}
			lbs = parseInt(goalStone) * 14;
			lbs += parseInt(goalLb);
			if ((lbs < 30) || (lbs > 700)) {
				window.alert("Please correct your goal weight. Thanks.");
				return false;
			}
			
			
		}
		var usHgt = getUSHeight();
		if (( usHgt < 24 ) || ( usHgt > 84 ) ) {
			window.alert("Please correct your height. Thanks.");
			return false;
		}
		document.message.height_in.value = usHgt;
	}
	
	
	var what = checkAge();
	if(what == false)
		return false;
	
	var story = document.message.story.value;
	if ( story.length < 2 ) {
		window.alert("Please type your story or thoughts. Thanks.");
		return false;
	}
	
	document.message.client_date.value = getClientDate(); 
	
	
	
	storeItems();
	return true;
 }
 
//Store name, age, height, and weight
function storeItems() {
	var storeTime = 720;	// about two years
	var expireTime = -100;
	if(document.message.SaveCookie.checked == true) {
		var sexRadioGroup = MM_findObj('sex');
		var sex = ( sexRadioGroup ) ? radioGroupValue( sexRadioGroup) : "m";

		var cookieVal = '1|' + document.message.name.value + '|' + document.message.age.value + '|' + sex + '|' + gUnits;
		if ( gUnits == 0 ) {
			cookieVal += '|' + getUSHeight();
			cookieVal += '|' + getUSWeight();
			cookieVal += '|' + document.message.start_weight_us.value;
			cookieVal += '|' + document.message.goal_weight_us.value;
		}
		else if ( gUnits == 1 ) {
			cookieVal += '|' + getUSHeight();
			cookieVal += '|' + getBritishWeight();
			cookieVal += '|' + document.message.start_weight_brit_lb.value;
			cookieVal += '|' + document.message.start_weight_brit_stone.value;
			cookieVal += '|' + document.message.goal_weight_brit_lb.value;
			cookieVal += '|' + document.message.goal_weight_brit_stone.value;
		}
		else {
			cookieVal += '|' + getMetricHeight();
			cookieVal += '|' + getMetricWeight();
			cookieVal += '|' + document.message.start_weight_metric.value;
			cookieVal += '|' + document.message.goal_weight_metric.value;
		}
		
		setCookiePath('boardVals', cookieVal, storeTime,'/board');
	} 
	else
		setCookiePath('boardVals', "0", storeTime,'/board');
	
	
	setCookiePath('height_cm', "", expireTime,'/board');
	setCookiePath('weight_kg', "", expireTime,'/board');
	setCookiePath('height_in', "", expireTime,'/board');
	setCookiePath('weight_lb', "", expireTime,'/board');
	setCookiePath('goal_weight_lb', "", expireTime,'/board');
	setCookiePath('start_weight_lb', "", expireTime,'/board');
	setCookiePath('start_weight_brit_lb', "", expireTime,'/board');
	setCookiePath('start_weight_brit_stone', "", expireTime,'/board');
	setCookiePath('goal_weight_brit_lb', "", expireTime,'/board');
	setCookiePath('goal_weight_brit_stone', "", expireTime,'/board');
	setCookiePath('start_weight_kg', "", expireTime,'/board');
	setCookiePath('goal_weight_kg', "", expireTime,'/board');
}
