

// 6842775

var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger2(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag2(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
//		alert("The date format should be : mm/dd/yyyy")
		return false;
	}
	if (strMonth.length<1 || month<1 || month>12){
//		alert("Please enter a valid month")
		return false;
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
//		alert("Please enter a valid day")
		return false;
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
//		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false;
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger2(stripCharsInBag2(dtStr, dtCh))==false){
//		alert("Please enter a valid date")
		return false;
	}
return true;
}

var Url = {  
     encode : function (string) {  
         return escape(this._utf8_encode(string));  
     },  
     decode : function (string) {  
         return this._utf8_decode(unescape(string));  
     },  
     _utf8_encode : function (string) {  
         string = string.replace(/\r\n/g,"\n");  
         var utftext = "";  
   
         for (var n = 0; n < string.length; n++) {  
   
             var c = string.charCodeAt(n);  
   
             if (c < 128) {  
                 utftext += String.fromCharCode(c);  
             }  
             else if((c > 127) && (c < 2048)) {  
                 utftext += String.fromCharCode((c >> 6) | 192);  
                 utftext += String.fromCharCode((c & 63) | 128);  
             }  
             else {  
                 utftext += String.fromCharCode((c >> 12) | 224);  
                 utftext += String.fromCharCode(((c >> 6) & 63) | 128);  
                 utftext += String.fromCharCode((c & 63) | 128);  
             }  
         }  
         return utftext;  
     },  
     _utf8_decode : function (utftext) {  
         var string = "";  
         var i = 0;  
         var c = c1 = c2 = 0;  
         while ( i < utftext.length ) {  
             c = utftext.charCodeAt(i);  
             if (c < 128) {  
                 string += String.fromCharCode(c);  
                 i++;  
             }  
             else if((c > 191) && (c < 224)) {  
                 c2 = utftext.charCodeAt(i+1);  
                 string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));  
                 i += 2;  
             }  
             else {  
                 c2 = utftext.charCodeAt(i+1);  
                 c3 = utftext.charCodeAt(i+2);  
                 string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));  
                 i += 3;  
             }  
         }  
         return string;  
     }  
 };

function emailCheck(emailaddr) {
var s=/^(.+)@(.+)\.(.+)$/;
  if (emailaddr.match(s)==null) {       
	return false;       
  }
return true;
}

function checkPhone (strng) {

var stripped = strng.replace(/[\(\)\.\-\ ]/g, ''); //strip out acceptable non-numeric characters
	if (isNaN(parseInt(stripped))) {
	   return false; 
	}
	if (!(stripped.length == 10)) {
		return false; 
	} 		
return true;
}	
var whitespace = " \t\n\r";
var validUSPhoneChars = digits + phoneNumberDelimiters;
var digits = "0123456789";
var phoneNumberDelimiters = "()- ";
var validUSPhoneChars = digits + phoneNumberDelimiters;
var digitsInUSPhoneNumber = 10;
var ZIPCodeDelimiters = "-";
var ZIPCodeDelimeters = "-";
var validZIPCodeChars = digits + ZIPCodeDelimiters;
var digitsInZIPCode1 = 5;
var digitsInZIPCode2 = 9;

var Validate = Class.create(); 
Validate.prototype = {
  initialize: function() {},
  isValidCreditCardNumber: function(cardNumber, cardType)
  {
	  var isValid = false;
	  var ccCheckRegExp = /[^\d ]/;
	  isValid = !ccCheckRegExp.test(cardNumber);

	  if (isValid)
	  {
		var cardNumbersOnly = cardNumber.replace(/ /g,"");
		var cardNumberLength = cardNumbersOnly.length;
		var lengthIsValid = false;
		var prefixIsValid = false;
		var prefixRegExp;

		switch(cardType)
		{
		  case "mastercard":
			lengthIsValid = (cardNumberLength == 16);
			prefixRegExp = /^5[1-5]/;
			break;

		  case "visa":
			lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
			prefixRegExp = /^4/;
			break;

		  case "amex":
			lengthIsValid = (cardNumberLength == 15);
			prefixRegExp = /^3(4|7)/;
			break;

		  case "discover":
			lengthIsValid = (cardNumberLength == 16);
			prefixRegExp = /^6011/;
			break;

		  default:
			prefixRegExp = /^$/; 
			return false; 
		}

		prefixIsValid = prefixRegExp.test(cardNumbersOnly);
		isValid = prefixIsValid && lengthIsValid;
	  }

	  if (isValid)
	  {
		var numberProduct;
		var numberProductDigitIndex;
		var checkSumTotal = 0;

		for (digitCounter = cardNumberLength - 1; 
		  digitCounter >= 0; 
		  digitCounter--)
		{
		  checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
		  digitCounter--;
		  numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
		  for (var productDigitCounter = 0;
			productDigitCounter < numberProduct.length; 
			productDigitCounter++)
		  {
			checkSumTotal += 
			  parseInt(numberProduct.charAt(productDigitCounter));
		  }
		}

		isValid = (checkSumTotal % 10 == 0);
	  }

	  return isValid;
	},
    alphanumeric: function(alphane)
    {
	  var numaric = alphane;
	  for(var j=0; j<numaric.length; j++)
	  {
		  var alphaa = numaric.charAt(j);
		  var hh = alphaa.charCodeAt(0);
		  if((hh > 47 && hh<58) || (hh > 64 && hh<91) || (hh > 96 && hh<123) || (hh == 32))
		  {
		  }
		else	
		{
		  return false;
		}
	  }
       return true;
    },
	isWhitespace: function  (s)
    {   
      var i;
      if (this.isEmpty(s)) return true;
      for (i = 0; i < s.length; i++)
      {   
        var c = s.charAt(i);
        if (whitespace.indexOf(c) == -1) return false;
      }
      return true;
    },
    hasWhitespace: function  (s)  {   
      var i;
      for (i = 0; i < s.length; i++)
      {   
        var c = s.charAt(i);
        if (whitespace.indexOf(c) != -1) return true;
      }
      return false;
    },
    isEmpty: function (s)
    {   
      return ((s == null) || (s.length == 0))
    },
    isEmail: function (s)
    {   
      if (this.isEmpty(s)) 
      {
        return false;
      }
      if (this.isWhitespace(s)) return false;
      var i = 1;
      var sLength = s.length;
      while ((i < sLength) && (s.charAt(i) != "@"))
      { i++
      }
      if ((i >= sLength) || (s.charAt(i) != "@")) return false;
      else i += 2;
      while ((i < sLength) && (s.charAt(i) != "."))
      { i++
      }
      if ((i >= sLength - 1) || (s.charAt(i) != ".")) 
  	  {
        return false;
      }
      else
	  {
	    return true;
	  }
    },
    reformat: function (s)
    { var arg;
      var sPos = 0;
      var resultString = "";
      for (var i = 1; i < this.reformat.arguments.length; i++) 
	  {
        arg = this.reformat.arguments[i];
         if (i % 2 == 1) resultString += arg;
         else 
		 {
           resultString += s.substring(sPos, sPos + arg);
           sPos += arg;
         }
      }
      return resultString;
    },
    isDigit: function (c)
    {   
	  return ((c >= "0") && (c <= "9"));
    },
    isInteger: function (s)
    { 
	  var i;
      if (this.isEmpty(s)) 
      {
        return false;
	  }
      for (i = 0; i < s.length; i++)
      {   
        var c = s.charAt(i);
        if (!this.isDigit(c)) return false;
      }
      return true;
    },
    stripCharsInBag: function (s, bag)
    {   
	  var i;
      var returnString = "";
      for (i = 0; i < s.length; i++)
      {   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
      }
      return returnString;
    },
    reformatUSPhone: function (USPhone)
    {
       return (this.reformat (USPhone, "(", 3, ") ", 3, "-", 4));
    },
    isUSPhoneNumber: function  (s)
    {   
	  if (this.isEmpty(s))
      {
       return false;
      }
	  return (this.isInteger(s) && s.length == digitsInUSPhoneNumber);
    },
    checkUSPhone: function  (theField)
    { 
      var normalizedPhone = this.stripCharsInBag(theField, phoneNumberDelimiters);
      if(normalizedPhone.charAt(0) == '1') 
	  {
       normalizedPhone = normalizedPhone.substring(1);
      }
	  if (!this.isUSPhoneNumber(normalizedPhone)) 
	  {
        return false;
	  }
      else 
      {  
         theField = this.reformatUSPhone(normalizedPhone);
         return true;
      }
    },
    isZIPCode: function  (s)
    {  
      var t = this.stripCharsInBag(s, ZIPCodeDelimiters);
      if (this.isEmpty(t)) 
      {
        return false;
	  }
      return (this.isInteger(t) && ((t.length == digitsInZIPCode1) || (t.length == digitsInZIPCode2)));
    }
};

function getRadioValue(idOrName) {
        var value = null;
        var element = document.getElementById(idOrName);
        var radioGroupName = null;  
        
        // if null, then the id must be the radio group name
        if (element == null) {
                radioGroupName = idOrName;
        } else {
                radioGroupName = element.name;     
        }
        if (radioGroupName == null) {
                return null;
        }
        var radios = document.getElementsByTagName('input');
        for (var i=0; i<radios.length; i++) {
                var input = radios[ i ];    
				if (input.type == 'radio' && input.name == radioGroupName && input.checked) {                          
						value = input.value;
                        break;
                }
        }
        return value;
}

function validateProJoin(form) {
  var Obj = {}; 
  Obj.error = false; 
  var valid = new Validate(); 
  Obj.email = document.forms[form].email.value; 
  Obj.name = document.forms[form].name.value; 
  Obj.type = $('procat').getValue(); 
  $('bn').hide();
  $('be').hide();
  $('bt').hide();
  if(Obj.type == '-1') {
    $('bt').show();
	$('bt').innerHTML = "required";
    Obj.error = true;
  }
  if(valid.isEmpty(Obj.name)) {
    $('bn').show();
	$('bn').innerHTML = "required";
    Obj.error = true;
  }
  if(!valid.isEmail(Obj.email)) {
    $('be').show();
	$('be').innerHTML = "required";
    Obj.error = true;
  }
  if(!Obj.error) {
    Obj.name = Url.encode(Obj.name);
    var rand=Math.random()*5;
    rand=Math.floor(rand);
	Obj.u = new Ajax.Request('/ajax/dupemail.php',
    {
            asynchronous : false,
	        method:'get',
            parameters: {rand:rand,email:Obj.email},
	        onSuccess: function(transport)
			{
	          var res = transport.responseText || "638"; 
			  if (res == 'NODUP') 
              {
                window.location.href = '/process/processProSignup.php?n='+Obj.name+'&e='+Obj.email+'&t='+Obj.type;
                //window.location.href = '/process/signup.php?n='+Obj.name+'&e='+Obj.email+'&t='+Obj.type;
			  }
              else
			  {
                Obj.dup = true;
			  }
			},
	        onFailure: function(){ Obj.error = true; }
	});
  }
  if(Obj.dup) {
    $('be').show();
	$('be').innerHTML = "duplicate email";
	return false;
  }
}

function validateJoin(form,emphasis) {
  alert('Trisystem.com will launch in late December 2009. See you then.');
  return false;
  var Obj = {};
  Obj.error = false;
  var valid = new Validate();
  Obj.email = document.forms[form].email.value; 
  Obj.name = document.forms[form].name.value; 
  $('bn').hide();
  $('be').hide();
  if(valid.isEmpty(Obj.name)) {
    $('bn').show();
	$('bn').innerHTML = "required";
    Obj.error = true;
  }
  if(!valid.isEmail(Obj.email)) {
    $('be').show();
	$('be').innerHTML = "email validity";
    Obj.error = true;
  }
  if(!Obj.error) {
    Obj.name = Url.encode(Obj.name);
    var rand=Math.random()*5;
    rand=Math.floor(rand);
	Obj.u = new Ajax.Request('/ajax/dupemail.php',
    {
	        method:'get',
            asynchronous: false,
            parameters: {rand:rand,email:Obj.email},
	        onSuccess: function(transport)
			{
	          var res = transport.responseText || "638"; 
			  if (res == 'NODUP') 
              {
                //window.location.href = '/process/processSignup.php?em='+emphasis+'&n='+Obj.name+'&e='+Obj.email;
		window.location.href = '/process/signup.php?n='+Obj.name+'&e='+Obj.email+'&t='+Obj.type;	  }
              else
			  {
                Obj.dup = true;
			  }
			},
	        onFailure: function(){ Obj.error = true; }
	});
  }
  if(Obj.dup) {
    $('be').show();
	$('be').innerHTML = "duplicate email";
	return false;
  }
}

function activateWeb()
{
  $('bv').hide();
  var Obj = {};
  Obj.error = false;
  var valid = new Validate();
  Obj.verify = $('myaccount').getValue(); 
  if(valid.isEmpty(Obj.verify)) {
    $('bv').show();
	$('bv').innerHTML = "<span style='color:#ff6666;'>Please enter the verification number above.</span>";
    return false;    
  }
  else 
  {
    var rand=Math.random()*5;
    rand=Math.floor(rand);
	Obj.u = new Ajax.Request('/ajax/verify.php',
    {
	        method:'get',
            parameters: {rand:rand,verify:Obj.verify},
	    onSuccess: function(transport)
	    {
	          var res = transport.responseText || "638"; 

		  if (res == 'OK') 
                  {
                    $('confirmed').show();
		  }
		  else if (res == 'GOLOGIN') 
                  {
                    window.location.href = '/memberprofile';
		  }
                  else
		  {
                    $('bv').show();
	            $('bv').innerHTML = "<span style='color:#ff6666;'>The numbers do not match, re-enter.</span>";
		  }
	    },
	        onFailure: function(){ Obj.error = true; }
	});
  }
}

function trylogin() {
  $('error').hide();
  $('bun').hide();
  $('bpw').hide();

  var valid = new Validate();
  var Obj = {};
  Obj.error = false;
  Obj.un = $('un').getValue(); 
  Obj.pw = $('pass').getValue(); 
  if(valid.isEmpty(Obj.un) || !valid.isEmail(Obj.un)) {
    $('bun').show();
	$('bun').innerHTML = "<span style='color:#ff6666;'>email missing or invalid.</span>";
    Obj.error = true;
  }
  if(valid.isEmpty(Obj.pw)) {
    $('bpw').show();
	$('bpw').innerHTML = "<span style='color:#ff6666;'>password required.</span>";
    Obj.error = true;
  }
  if(Obj.error)
  {
    return false;
  }
  else 
  {
    var rand=Math.random()*5;
    rand=Math.floor(rand);
	Obj.u = new Ajax.Request('/ajax/login.php',
    {
	        method:'get',
            parameters: {rand:rand,un:Obj.un,pw:Obj.pw},
	        onSuccess: function(transport)
			{
	          var res = transport.responseText || "638"; 
			  if (res == 'OK') 
              {
                window.location.href = '/memberprofile';
			  }
			  else if (res == 'MISSED') 
              {
                $('error').show();
			  }
			  else if (res == 'NEEDS') 
              {
                window.location.href = '/activatenow';
			  }
			},
	        onFailure: function(){ Obj.error = true; }
	});
  }
}
 
function trylogintwo() {
  $('error').hide();
  $('bun').hide();
  $('bpw').hide();

  var valid = new Validate();
  var Obj = {};
  Obj.error = false;
  Obj.un = $('un').getValue();
  Obj.pw = $('pass').getValue();
  if(valid.isEmpty(Obj.un) || !valid.isEmail(Obj.un)) {
    $('bun').show();
	$('bun').innerHTML = "<span style='color:#ff6666;'>email missing or invalid.</span>";
    Obj.error = true;
  }
  if(valid.isEmpty(Obj.pw)) {
    $('bpw').show();
	$('bpw').innerHTML = "<span style='color:#ff6666;'>password required.</span>";
    Obj.error = true;
  }
  if(Obj.error)
  {
    return false;
  }
  else
  {
    var rand=Math.random()*5;
    rand=Math.floor(rand);
    Obj.u = new Ajax.Request('/ajax/login2.php',
    {
        method:'get',
        parameters: {rand:rand,un:Obj.un,pw:Obj.pw},
        onSuccess: function(transport)
        {
          var res = transport.responseText.split('~') || "638";
          if (res[0] == 'OK')
          {
            window.location.href = 'https://web.trisystem.com/process/login.php?login=' + res[1];
          }
          else if (res[0] == 'NEEDS')
          {
            window.location.href = 'http://trisystem.com/thankyou';
          }
          else if (res[0] == 'MISSED')
          {
            $('error').show();
          }
        },
        onFailure: function(){ Obj.error = true; }
    });
  }
}

function forgotpassword()
{
  $('error').hide();
  $('bun').hide();
  $('bpw').hide();
  $('msgfp').hide();

  var valid = new Validate();
  var Obj = {};
  Obj.error = false;
  Obj.un = $('un').getValue(); 
  if(valid.isEmpty(Obj.un) || !valid.isEmail(Obj.un)) {
    $('bun').show();
	$('bun').innerHTML = "<span style='color:#ff6666;'>email missing or invalid.</span>";
    Obj.error = true;
  }
  if(Obj.error)
  {
    return false;
  }
  else 
  {
    var rand=Math.random()*5;
    rand=Math.floor(rand);
	Obj.u = new Ajax.Request('/ajax/forgotpassword.php',
    {
	        method:'get',
            asynchronous : false,
            parameters: {rand:rand,un:Obj.un},
	        onSuccess: function(transport)
			{
			  var res = transport.responseText || "638"; 
              if(res == 'OK')
			  {	
                $('msgfp').innerHTML = "Password sent to " + Obj.un; 
                $('msgfp').show(); 
              }
              else
			  {	   
                $('msgfp').innerHTML = "Email not found"; 
                $('msgfp').show(); 
              }
			},
	        onFailure: function(){ Obj.error = true; }
	});
  }
}
// xxxxxxxxxxxxxxx top xxxxxxxxxxxxxxxxxxxxxxxxxxxx

/*
function getElement(name)
{
 	if ( document.getElementById )
 	{
		return document.getElementById(name);
	}
	else if ( document.all )
	{
		return document.all[name];
	}
	else if ( document.layers )
	{
		return document[name];
	}
}
*/

function check_form() {
$('basic_body_comp').observe('submit', function(e) {
  e.stop();
    if('err1') { $('err1').hide(); }
    if('err2') { $('err2').hide(); }
    if('err3') { $('err3').hide(); }
    if('err4') { $('err4').hide(); }
    if('err5') { $('err5').hide(); }
    if('err6') { $('err6').hide(); }
    if('err7') { $('err7').hide(); }
    if('err8') { $('err8').hide(); }
    if('err9') { $('err9').hide(); }
    if('err10') { $('err10').hide(); }
    if('err11') { $('err11').hide(); }

    var error = 0;
    var formHandle = $('basic_body_comp');
    var weight    = formHandle.weight.value;
    var age       = formHandle.form_age.value;
    var ethnicity = formHandle.form_ethnicity.value;
    var gender    = formHandle.form_sex.value;
    var tape_neck    = formHandle.tape_neck.value;
    var tape_chest   = formHandle.tape_chest.value;
    var tape_arm     = formHandle.tape_arm.value;
    var tape_forearm = formHandle.tape_forearm.value;
    var tape_wrist   = formHandle.tape_wrist.value;
    var tape_waist   = formHandle.tape_waist.value;
    var tape_navel   = formHandle.tape_navel.value;
    var tape_hip     = formHandle.tape_hip.value;
    var tape_thigh   = formHandle.tape_thigh.value;
    var tape_calf    = formHandle.tape_calf.value;

        if ( weight == '' || weight.length < 2 || !isNumeric(weight) || findSpaces(weight) == true )
        {
            Element.insert($('weight'), { after: '<span id="err1" style="color: #ff6666">weight min. 2 numbers</span>' }); 
            error = 1;
        }
        if ( tape_neck == '' || tape_neck.length < 1 || !isNumeric(tape_neck) || findSpaces(tape_neck) == true )
        {
            Element.insert($('tape_neck'), { after: '<span id="err2" style="color: #ff6666">neck min. 1 number.</span>' }); 
            error = 1;
        }

        if ( tape_chest == '' || tape_chest.length < 1 || !isNumeric(tape_chest) || findSpaces(tape_chest) == true )
        {
            Element.insert($('tape_chest'), { after: '<span id="err3" style="color: #ff6666">chest min. 2 numbers.</span>' }); 
            error = 1;
        }
        if ( tape_arm == '' || tape_arm.length < 1 || !isNumeric(tape_arm) || findSpaces(tape_arm) == true )
        {
            Element.insert($('tape_arm'), { after: '<span id="err4" style="color: #ff6666">bicep min. 1 number.</span>' }); 
            error = 1;
        }
        if ( tape_forearm == '' || tape_forearm.length < 1 || !isNumeric(tape_forearm) || findSpaces(tape_forearm) == true )
        {
            Element.insert($('tape_forearm'), { after: '<span id="err5" style="color: #ff6666">forearm min. 1 number.</span>' }); 
            error = 1;
        }
        if ( tape_wrist == '' || tape_wrist.length < 1 || !isNumeric(tape_wrist) || findSpaces(tape_wrist) == true )
        {
            Element.insert($('tape_wrist'), { after: '<span id="err6" style="color: #ff6666">wrist min. 1 number.</span>' }); 
            error = 1;
        }
        if ( tape_waist == '' || tape_waist.length < 1 || !isNumeric(tape_waist) || findSpaces(tape_waist) == true )
        {
            Element.insert($('tape_waist'), { after: '<span id="err7" style="color: #ff6666">waist min. 1 number.</span>' }); 
            error = 1;
        }
        if ( tape_navel == '' || tape_navel.length < 1 || !isNumeric(tape_navel) || findSpaces(tape_navel) == true )
        {
            Element.insert($('tape_navel'), { after: '<span id="err8" style="color: #ff6666">navel min. 1 number.</span>' }); 
            error = 1;
        }
        if ( tape_hip == '' || tape_hip.length < 1 || !isNumeric(tape_hip) || findSpaces(tape_hip) == true )
        {
            Element.insert($('tape_hip'), { after: '<span id="err9" style="color: #ff6666">hip min. 1 number.</span>' }); 
            error = 1;
        }
        if ( tape_thigh.length == '' || tape_thigh.length < 1 || !isNumeric(tape_thigh) || findSpaces(tape_thigh) == true )
        {
            Element.insert($('tape_thigh'), { after: '<span id="err10" style="color: #ff6666">thigh min. 1 number.</span>' }); 
            error = 1;
        }
        if ( tape_calf.length == '' || tape_calf.length < 1 || !isNumeric(tape_calf) || findSpaces(tape_calf) == true )
        {
            Element.insert($('tape_calf'), { after: '<span id="err11" style="color: #ff6666">calf min. 1 number.</span>' }); 
            error = 1;
        }
    if ( error == 1 )
    {
        return false;
    }
    else
    {
      calcresults();
      document.basic_body_comp.submit();
    }
 });
}

function valid_check_form() {
    if('err1') { $('err1').hide(); }
    if('err2') { $('err2').hide(); }
    if('err3') { $('err3').hide(); }
    if('err4') { $('err4').hide(); }
    if('err5') { $('err5').hide(); }
    if('err6') { $('err6').hide(); }
    if('err7') { $('err7').hide(); }
    if('err8') { $('err8').hide(); }
    if('err9') { $('err9').hide(); }
    if('err10') { $('err10').hide(); }
    if('err11') { $('err11').hide(); }

    var error = 0;
    var formHandle = $('basic_body_comp');
    var weight    = formHandle.weight.value;
    var age       = formHandle.form_age.value;
    var ethnicity = formHandle.form_ethnicity.value;
    var gender    = formHandle.form_sex.value;
    var tape_neck    = formHandle.tape_neck.value;
    var tape_chest   = formHandle.tape_chest.value;
    var tape_arm     = formHandle.tape_arm.value;
    var tape_forearm = formHandle.tape_forearm.value;
    var tape_wrist   = formHandle.tape_wrist.value;
    var tape_waist   = formHandle.tape_waist.value;
    var tape_navel   = formHandle.tape_navel.value;
    var tape_hip     = formHandle.tape_hip.value;
    var tape_thigh   = formHandle.tape_thigh.value;
    var tape_calf    = formHandle.tape_calf.value;

        if ( weight == '' || weight.length < 2 || !isNumeric(weight) || findSpaces(weight) == true )
        {
            Element.insert($('weight'), { after: '<span id="err1" style="color: #ff6666">weight min. 2 numbers</span>' }); 
            error = 1;
        }
        if ( tape_neck == '' || tape_neck.length < 1 || !isNumeric(tape_neck) || findSpaces(tape_neck) == true )
        {
            Element.insert($('tape_neck'), { after: '<span id="err2" style="color: #ff6666">neck min. 1 number.</span>' }); 
            error = 1;
        }

        if ( tape_chest == '' || tape_chest.length < 1 || !isNumeric(tape_chest) || findSpaces(tape_chest) == true )
        {
            Element.insert($('tape_chest'), { after: '<span id="err3" style="color: #ff6666">chest min. 2 numbers.</span>' }); 
            error = 1;
        }
        if ( tape_arm == '' || tape_arm.length < 1 || !isNumeric(tape_arm) || findSpaces(tape_arm) == true )
        {
            Element.insert($('tape_arm'), { after: '<span id="err4" style="color: #ff6666">bicep min. 1 number.</span>' }); 
            error = 1;
        }
        if ( tape_forearm == '' || tape_forearm.length < 1 || !isNumeric(tape_forearm) || findSpaces(tape_forearm) == true )
        {
            Element.insert($('tape_forearm'), { after: '<span id="err5" style="color: #ff6666">forearm min. 1 number.</span>' }); 
            error = 1;
        }
        if ( tape_wrist == '' || tape_wrist.length < 1 || !isNumeric(tape_wrist) || findSpaces(tape_wrist) == true )
        {
            Element.insert($('tape_wrist'), { after: '<span id="err6" style="color: #ff6666">wrist min. 1 number.</span>' }); 
            error = 1;
        }
        if ( tape_waist == '' || tape_waist.length < 1 || !isNumeric(tape_waist) || findSpaces(tape_waist) == true )
        {
            Element.insert($('tape_waist'), { after: '<span id="err7" style="color: #ff6666">waist min. 1 number.</span>' }); 
            error = 1;
        }
        if ( tape_navel == '' || tape_navel.length < 1 || !isNumeric(tape_navel) || findSpaces(tape_navel) == true )
        {
            Element.insert($('tape_navel'), { after: '<span id="err8" style="color: #ff6666">navel min. 1 number.</span>' }); 
            error = 1;
        }
        if ( tape_hip == '' || tape_hip.length < 1 || !isNumeric(tape_hip) || findSpaces(tape_hip) == true )
        {
            Element.insert($('tape_hip'), { after: '<span id="err9" style="color: #ff6666">hip min. 1 number.</span>' }); 
            error = 1;
        }
        if ( tape_thigh.length == '' || tape_thigh.length < 1 || !isNumeric(tape_thigh) || findSpaces(tape_thigh) == true )
        {
            Element.insert($('tape_thigh'), { after: '<span id="err10" style="color: #ff6666">thigh min. 1 number.</span>' }); 
            error = 1;
        }
        if ( tape_calf.length == '' || tape_calf.length < 1 || !isNumeric(tape_calf) || findSpaces(tape_calf) == true )
        {
            Element.insert($('tape_calf'), { after: '<span id="err11" style="color: #ff6666">calf min. 1 number.</span>' }); 
            error = 1;
        }
    if ( error == 1 )
    {
        return false;
    }
    else
    {
      return true;
    }
}


function calcresults()
{
    var ok = valid_check_form();
    if(ok)
    {
		var formHandle = $('basic_body_comp');
		var ethnicity = Number(formHandle.form_ethnicity.value);
		var age       = Number(formHandle.form_age.value);
		var height    = Number(formHandle.height.value);
		var weight    = Number(formHandle.weight.value);
		var sex       = String(formHandle.form_sex.value);

		var neck      = Number(formHandle.tape_neck.value);
		var chest     = Number(formHandle.tape_chest.value);
		var arm       = Number(formHandle.tape_arm.value);
		var forearm   = Number(formHandle.tape_forearm.value);
		var wrist     = Number(formHandle.tape_wrist.value);
		var waist     = Number(formHandle.tape_waist.value);
		var navel     = Number(formHandle.tape_navel.value);
		var hip       = Number(formHandle.tape_hip.value);
		var thigh     = Number(formHandle.tape_thigh.value);
		var calf      = Number(formHandle.tape_calf.value);

		switch ( sex )
		{
			case 'm':
				var lbm = roundFloat( ((weight * 1.082) + 94.420) - (navel * 4.150), 2 );
				var fm  = roundFloat(weight - lbm, 2);
				var bf  = roundFloat( (fm * 100) / weight, 2 );
				break;
			case 'f':
				var lbm = roundFloat( (((((weight * .732) + 8.987) + (wrist / 3.140)) - (navel * .157)) - (hip * .249)) + (forearm * .434), 2 );
				var fm  = roundFloat(weight - lbm, 2);
				var bf  = roundFloat( (fm * 100) / weight, 2 );
				break;
		}

		formHandle.calc_fat_percent.value = bf;
		formHandle.calc_lbm.value = lbm;
		formHandle.calc_fm.value = fm;
    }
}



function roundFloat(num,decimalPlaces) {
   //convert num to decimalPlaces desired
   if (isNaN(num)) {
       num = parseFloat(num);
   }

   //multiply num by 10 to the x power
   var temp = num * Math.pow(10, decimalPlaces);

   //now round to an integer to get rid of exzcess digits
   temp = Math.round(temp);

   //convert to string
   temp = temp.toString();

   //pad numbers that are shorter than the number of decimal points desired with leading zeros
   while (temp.length <= decimalPlaces) {
          temp = "0" + temp;
   }

   //determine the index number where the decimal point needs to be inserted and insert it
   var decNdx = temp.length - decimalPlaces;
   temp = temp.substring(0, decNdx) + "." + temp.substring(decNdx);

   return temp;

}

function isNumeric(str)
{
  return inValidCharSet(str, ".0123456789");
}

function inValidCharSet(str, charset)
{
	var result = true;
    var i;
	for ( i = 0; i < str.length; i++ )
		if ( charset.indexOf(str.substr(i,1)) < 0 )
		{
			result = false;
			break;
		}

	return result;
}

function trim(s)
{
    if( s.length <= 0 )
    {
        return "";
    }

    var str = s;
    var startIndex = 0;
    var endIndex = 0;

    //find index of starting character
    for( i = 0; i < str.length; i++ )
    {
        if( str.charAt(i) != " " )
        {
            startIndex = i;
            break;
        }
    }

    //find index of ending character
    for(i = str.length - 1; ; i--)
    {
        if(str.charAt(i) != " ")
        {
            endIndex = i + 1;
            break;
        }
    }

    //return str.substring(startIndex, endIndex);
    return trimSpaces(str.substring(startIndex, endIndex));
}

function trimSpaces(s)
{
    var str = s;
    return str.replace(/\s/g, '');
}

function findSpaces(s)
{
    var myRegExp = /\s/g;
    return myRegExp.test(s);
    //return s.search(/\s/g);
}

function updateTotals()
{
  var weekday = 0;
  var weekend = 0;
  weekday = weekday + parseInt($('sleepWD').getValue());   
  weekday = weekday + parseInt($('restWD').getValue());   
  weekday = weekday + parseInt($('vLightWD').getValue());   
  weekday = weekday + parseInt($('lightWD').getValue());   
  weekday = weekday + parseInt($('moderateWD').getValue());   
  weekday = weekday + parseInt($('heavyWD').getValue());   

  weekend = weekend + parseInt($('sleepWE').getValue());   
  weekend = weekend + parseInt($('restWE').getValue());   
  weekend = weekend + parseInt($('vLightWE').getValue());   
  weekend = weekend + parseInt($('lightWE').getValue());   
  weekend = weekend + parseInt($('moderateWE').getValue());   
  weekend = weekend + parseInt($('heavyWE').getValue());   

  $('totalWD').value = weekday; 
  $('totalWE').value = weekend; 

}

