var loggedIn = '';

function ckform(formObj){
   if(formObj.birthYear.value == 0){
      alert('Please select a birth year.');
      return false;
   }

   var genderSelected = false;
   for (var i = 0; i < 2; i++) {
      if(formObj.sex[i].checked){ 
         genderSelected = true;
         break;
      }
   }
   if(! genderSelected){
      alert('Please select a gender.');
      return false;
   }

   if(formObj.race.value == 0){
      alert('Please specify ethnicity.');
      return false;
   }

   if(formObj.height_ft.value == 0 && formObj.height_in.value == 0){
      alert('Please specify your height.');
      return false;
   }

   if(formObj.weight.value <= 1 || formObj.weight.value >= 1000){
      alert('Please enter a valid weight.');
      return false;
   }

   zipPattern = new RegExp(/(^\d{5}$)|(^\d{5}-\d{4}$)/);
   if (!zipPattern.test(formObj.zipcode.value)){
      alert('Please enter a valid zipcode.');
      return false;
   }

   return true;
}

// instant feedback funtion
function refresh(input, value)
{
	return false; // ??? disabled
	parent.score.location.href = 'score.php?input=' + input + '&value=' + value;
	parent.systems.location.href = 'systems.php';
	parent.risks.location.href = 'risks.php';
}

// popup promt description function
function setVisible(objName, bVisible)
{
	if (objName == null || objName == '') return;
	if (document.getElementById && document.getElementById(objName) != null)
	{
		visible = "hidden";
		if (bVisible) visible = "visible";
		document.getElementById(objName).style.visibility = visible;
	}
}

// mutex popup function
lastVisibleOne = '';
function setVisibleOne(objName)
{
	blockClick = false;
	if (lastVisibleOne != '') setVisible(lastVisibleOne, false);
	setVisible(objName, true);
	lastVisibleOne = objName;
}

function setInvisibleOne(objName)
{
	setVisible(objName, false);
	
	if (document.getElementById)
	{
		obj = document.getElementById(objName);
		if (obj != null)
		{
			if (getScrollXY()[1] > obj.offsetTop)
			{
				window.scrollTo(getScrollXY()[0], obj.offsetTop - 20);
			}
		}
	}
}


clicks = 1;

function click2Stay(objName, userAct){

   switch(userAct){

      case('mover'):       // user action: onMouseover
      setVisible(objName, true);
      break;

      case('mout'):        // user action: onMouseout
      if(clicks % 2 != 0) setVisible(objName, false);
      break;

      case('hlinkClick'):  // user action: hyperlink click

      if(++clicks % 2 == 0){
         setVisible(objName, true);
      }
      else{
         setVisible(objName, false);
      }

      break;
   }

}

function getScrollXY()
{
  var scrOfX = 0, scrOfY = 0;
  if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) )
  {
    // DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  }
  else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
  {
    // IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [scrOfX, scrOfY];
}

// move obj1 to the location of obj2
function setLocation(objName1, objName2)
{
	if (document.getElementById)
	{
		obj1 = document.getElementById(objName1);
		obj2 = document.getElementById(objName2);
		if (obj1 != null && obj2 != null)
		{
			obj1.style.top = obj2.offsetTop + "px";
			obj1.style.left = obj2.offsetLeft + "px";
		}
	}
}

function setLocationOver(objName1, offset)
{
	if (document.getElementById)
	{
		obj1 = document.getElementById(objName1);
		if (obj1 != null)
		{
			obj1.style.top = (obj1.offsetTop - obj1.offsetHeight - offset) + "px";
		}
	}
}

function setLocationUnder(objName1, offset)
{
	if (document.getElementById)
	{
		obj1 = document.getElementById(objName1);
		if (obj1 != null)
		{
			obj1.style.top = (obj1.offsetTop + offset) + "px";
		}
	}
}

// systems form based update functions
sex = 'f-';
function setModelSex(index)
{
	if (index == 2) sex = 'f-';
	if (index == 3) sex = 'm-';
	setModelImage();
}

race = 'white';
function setModelRace(index)
{
	if (index == 1) race = 'asian';
	if (index == 2) race = 'black';
	if (index == 3) race = 'hispanic';
	if (index == 4) race = 'nativeamerican';
	if (index == 5) race = 'white';
	setModelImage();
}

function setModelImage()
{
	frames.systems.document.getElementById('systemsImage').src = 'http://www.drpizzorno.net/images/body/' + sex + race + '.gif';
}

function makeWindow(url, x, y)
{
	window.open(url, "details", "height=600,width=600,screenX="+x+",left="+x+",screenY="+y+",top="+y+",directories=0,fullscreen=0,location=1,menubar=0,scrollbars=1,resizable=1,status=0,toolbar=1").focus();
	
}

// form validation functions
function prepPerson(formInputs)
{
	// login information
	// if (formInputs.email) formInputs.email.value = prepEmail(formInputs.email.value);
	if (formInputs.profileID) formInputs.profileID.value = prepNumber(formInputs.profileID.value);
	
	// name
	if (formInputs.name) formInputs.name.value = prepValue(formInputs.name.value);
	
	// location information
	if (formInputs.address) formInputs.address.value = prepValue(formInputs.address.value);
	if (formInputs.city) formInputs.city.value = prepValue(formInputs.city.value);
	if (formInputs.state) formInputs.state.value = prepPureText(formInputs.state.value);	
	if (formInputs.zipCode) formInputs.zipCode.value = prepNumber(formInputs.zipCode.value);
		
	// body information
	if (formInputs.birthYear) formInputs.birthYear.value = prepNumber(formInputs.birthYear.value);
	if (formInputs.weight) formInputs.weight.value = prepNumber(formInputs.weight.value);
}

var loginPressed = false;
function validatePerson(formInputs)
{
	prepPerson(formInputs);
	
	// login information
	if (!validateEmail(formInputs.email.value))
	{
		document.getElementById('email').style.color = 'DD0001';
		formInputs.email.focus();
		return false;
	}
	else
	{
		document.getElementById('email').style.color = '000000';
	}
	
	if (loginPressed)
	{
		loginPressed = false;
		
		if (formInputs.profileID.value == "")
		{
			alert("Please enter your Profile ID to login.");
			document.getElementById('profileID').style.color = 'DD0001';
			formInputs.profileID.focus();
			return false;
		}
		else
		{
			document.getElementById('profileID').style.color = '000000';
		}
		
		return true;
	}
	else
	{
		document.getElementById('profileID').style.color = '000000';
	}
		
	if (loggedIn == '1')
	{
		// name
		if (formInputs.name.value == "")
		{
			alert("Please enter your Full Name.");
			document.getElementById('fullName').style.color = 'DD0001';
			formInputs.name.focus(); 
			return false;
		}
		else
		{
			document.getElementById('fullName').style.color = '000000';
		}
		
		// location information
		if (formInputs.address.value == "" || formInputs.address.value.length < 3)
		{	
			alert("Please enter your complete Address.");
			document.getElementById('address').style.color = 'DD0001';
			formInputs.address.focus();
			return false;
		}
		else
		{
			document.getElementById('address').style.color = '000000';
		}
		
		if (formInputs.city.value == "" || formInputs.city.value.length < 2)
		{
			alert("Please enter your City.");
			document.getElementById('city').style.color = 'DD0001';
			formInputs.city.focus();
			return false;
		}
		else
		{
			document.getElementById('city').style.color = '000000';
		}
		
		if (formInputs.state.value == "" || formInputs.state.value.length != 2)
		{
			alert("Please enter your State.");
			document.getElementById('state').style.color = 'DD0001';
			formInputs.state.focus();
			return false;
		}
		else
		{
			document.getElementById('state').style.color = '000000';
		}
		
		if (formInputs.zipCode.value == "" || formInputs.zipCode.value.length < 5)
		{
			alert("Please enter your ZIP Code.");
			document.getElementById('zipCode').style.color = 'DD0001';
			formInputs.zipCode.focus();
			return false;
		}
		else
		{
			document.getElementById('zipCode').style.color = '000000';
		}
	}
	
	// body information
	thisYear = new Date().getFullYear();
	if (formInputs.birthYear.value == "" || formInputs.birthYear.value > thisYear || formInputs.birthYear.value < thisYear - 120)
	{
		alert("Please enter your Year of Birth.");
		document.getElementById('birthDate').style.color = 'DD0001';
		formInputs.birthYear.focus();
		return false;
	}
	else
	{
		document.getElementById('birthDate').style.color = '000000';
	}
	
	if (formInputs.race.selectedIndex == '0' && formInputs.race.selectedIndex == '0')
	{
		alert("Please enter your Ethnicity.");
		document.getElementById('race').style.color = 'DD0001';
		formInputs.race.focus();
		return false;
	}
	else
	{
		document.getElementById('race').style.color = '000000';
	}
	
	if (formInputs.heightFeet.selectedIndex == '0' && formInputs.heightInches.selectedIndex == '0')
	{
		alert("Please enter your Height.");
		document.getElementById('height').style.color = 'DD0001';
		formInputs.heightFeet.focus();
		return false;
	}
	else
	{
		document.getElementById('height').style.color = '000000';
	}
	
	if (formInputs.weight.value == "" || formInputs.weight.value == '0')
	{
		alert("Please enter your Weight.");
		document.getElementById('weight').style.color = 'DD0001';
		formInputs.weight.focus();
		return false;
	}
	else
	{
		document.getElementById('weight').style.color = '000000';
	}
	
	return true;
}

function validatePayment(formInputs)
{
	// card numbers
	formInputs.creditCard.value = prepCreditCardNumber(formInputs.creditCard.value);
	if (formInputs.creditCard.value == "" || formInputs.creditCard.value.length < 13)
	{
		alert("Please enter your Credit Card Number.");
		document.getElementById('creditCard').style.color = 'DD0001';
		formInputs.creditCard.focus();
		return false;
	}
	else
	{
		document.getElementById('creditCard').style.color = '000000';
	}
	
	formInputs.securityCode.value = prepCreditCardNumber(formInputs.securityCode.value);
	if (formInputs.securityCode.value == "" || formInputs.securityCode.value.length < 3)
	{
		alert("Please enter your Credit Card Security Code.");
		document.getElementById('securityCode').style.color = 'DD0001';
		formInputs.securityCode.focus();
		return false;
	}
	else
	{
		document.getElementById('securityCode').style.color = '000000';
	}

	return true;
}

function prepValue(value)
{
	if (value != null && value.length > 0)
	{
		value = value.replace(new RegExp("[^A-Za-z0-9\\-_.,\\'&nbsp;]", "g"), "");
	}
	
	return value;
}

function prepPureText(value)
{
	if (value != null && value.length > 0)
	{
		value = value.replace(new RegExp("[^A-Za-z]", "g"), "");
	}
	
	return value;
}

function prepNumber(value)
{
	if (value != null && value.length > 0)
	{
		value = value.replace(new RegExp("[^0-9\\(\\)\\-&nbsp;]", "g"), "");
	}
	
	return value;
}

function prepCreditCardNumber(value)
{
	if (value != null && value.length > 0)
	{
		if (value.indexOf("gamehouse") == 0) return value;
		value = value.replace(new RegExp("[^0-9\\-&nbsp;]", "g"), "");
	}
	
	return value;
}

function prepEmail(emailValue)
{
	if (emailValue != null && emailValue.length > 0)
	{
		emailValue = emailValue.replace(/ /g, "");
		emailValue = emailValue.replace(/,/g, ".");
		emailValue = emailValue.replace(/@@/g, "@");
		while (emailValue.indexOf("..") != -1) emailValue = emailValue.replace(/\.\./g, ".");
		while (emailValue.charAt(emailValue.length - 1) == ".") emailValue = emailValue.slice(0, -1);
		if (emailValue.indexOf("www.") == 0) emailValue = emailValue.slice(4);
		emailValue = emailValue.replace(new RegExp("[^A-Za-z0-9!@\\$%\\-_.\\']", "g"), "");
	}
}

function validateEmail(emailValue)
{
	// definitions
	var invalidChars = "\\(\\)\*<>@,;:\\\\\\\"\\.\\[\\]";
	var validChars = "\[^\\s" + invalidChars + "\]";
	var quotedUser = "(\"[^\"]*\")";
	var atom = validChars + '+';
	var word = "(" + atom + "|" + quotedUser + ")";
	
	// patterns
	var emailPat = /^(.+)@(.+)$/;
	var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat = new RegExp("^" + atom + "(\\." + atom +")*$");
	var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	
	// test user@domain pattern
	var matchArray = emailValue.match(emailPat);
	if (matchArray == null)
	{
		alert("Please enter your correct Email Address.");
		return false;
	}
	var user = matchArray[1];
	var domain = matchArray[2];

	// test user pattern
	if (user.match(userPat) == null)
	{
		// user is not valid
		alert("Please enter your correct Email Address.");
		return false;
	}
	
	// test ip domiain pattern
	var IPArray = domain.match(ipDomainPat);
	if (IPArray != null)
	{
		for (var i = 1; i <= 4; i++)
		{
			if (IPArray[i] > 255)
			{
				alert("Please enter your correct Email Address IP domain.");
				return false;
			}
		}
	}
	else
	{
		// test symbolic domiain pattern
		var domainArray = domain.match(domainPat);
		if (domainArray == null)
		{
			alert("Please enter your correct Email Address domain.");
			return false;
		}
		
		// test end of symbolic domiain
		var atomPat = new RegExp(atom, "g");
		var domArr = domain.match(atomPat);
		var len = domArr.length;
		if (domArr[domArr.length-1].length < 2 || domArr[domArr.length-1].length > 4)
		{
			alert("Please enter your correct Email Address domain.");
			return false;
		}
	
		// test for host name preceding the domain
		if (len < 2)
		{
			alert("Please enter your correct Email Address domain.");
			return false;
		}
	}

	// valid email address
	return true;
}


// drill-down Window
function ddWindow(dbid){

   randWindowNm = "window" + Math.round(Math.random()*1000);

   // document.forms[0].action = "drilld/systemstatus2.php?dbid=" + dbid;
   document.forms[0].action = "drilld/systemstatusService.php?dbid=" + dbid;

   windowParams = 'top=10,left=10,height=630,width=550,location=1,' +
                  'resizable=1,scrollbars=1,status=1,addressbar=0,toolbar=1';

   window.open('', randWindowNm, windowParams);
   document.forms[0].target = randWindowNm;
   document.forms[0].submit();

}


// moving meter marks
var pauses = new Array(2000,4000,6000,8000,10000,12000);
var pauseFactor = 6;
var directions = new Array(0,0,0,0,0,0);

function adjustRiskValue(currentValue, markIndex)
{
	pauses[markIndex] = 100;
	
	// remove "px"
	currentValue = parseInt(currentValue.substr(0, currentValue.length - 2));
	
	pMark = parseInt(pMarks[markIndex]);
	paMark = parseInt(paMarks[markIndex]);
	
	if (pMark == paMark)
	{
		directions[markIndex] = 0;
	}
	else if (pMark > paMark)
	{
		if (currentValue <= paMark)
		{
			directions[markIndex] = 1;
		}
		else if (currentValue >= pMark)
		{
			currentValue = paMark; // or to slide back: direction = -1;
			return currentValue;
		}
	}
	else if (pMark < paMark)
	{
		if (currentValue <= pMark)
		{
			currentValue = paMark; // or to slide back: direction = 1;
			return currentValue;
		}
		else if (currentValue >= paMark)
		{
			directions[markIndex] = -1;
		}
	}
	
	currentValue = currentValue + directions[markIndex];
	if (currentValue == pMark) pauses[markIndex] = 2000 * pauseFactor++;
	return currentValue;
}

// from footer
var rotateList = ''.split(',');
var iRotate = -1;
var rotatePause = 3000;
var rotating = true;
function rotateVisibleOne()
{
	if (rotating)
	{
		if (iRotate > -1)
		{
			setVisible(rotateList[iRotate] + "Text", false);
			setVisible(rotateList[iRotate] + "Image", false);
		}
		
		iRotate++;
		if (iRotate == rotateList.length) iRotate = 0;
		
		setVisible(rotateList[iRotate] + "Text", true);
		setVisible(rotateList[iRotate] + "Image", true);
	}
	
	setTimeout('rotateVisibleOne()', rotatePause);
}
rotateVisibleOne();
