<!--
//validation patterns
var answerTextPattern = /^answerText_([0-9]{1}|[0-9]{2}|[0-9]{3})$/;
var answerScorePattern = /^answerScore_([0-9]{1}|[0-9]{2}|[0-9]{3})$/;
var criticalSectionPattern = /^criticalSectionItem_([0-9]{1}|[0-9]{2}|[0-9]{3})$/;
var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

function getObj(name)
{
  if (document.getElementById)
  {
  	obj = document.getElementById(name);
  }
  else if (document.all)
  {
	obj = document.all[name];
  }
  else if (document.layers)
  {
   	obj = document.layers[name];
  }

  return obj;
}

function imgMouse(name, state)
{
	var obj = getObj(name);
	var newPic = 'images/button' + state + '.gif';
	obj.src = newPic;
}

function genericImgMouse(name, gifName, state)
{
	var obj = getObj(name);
	var newPic = 'images/' + gifName + state + '.gif';
	obj.src = newPic;
}

function confirmDelete()
{
	return confirm("Are you sure you want to delete that record?");
}

function validateInput(objStr, errorStr)
{
	var Obj = getObj(objStr);
	
	if(Obj.type == 'text')
		if(Obj.value == '')
		{
			alert(errorStr + ' cannot be blank.');
			Obj.focus();
			return false;
		}
	if(Obj.type == 'hidden')
		if(Obj.value == '')
		{
			alert(errorStr + ' cannot be blank.');
			Obj.focus();
			return false;
		}
	if(Obj.type == 'select-one')
	{
		if(Obj.selectedIndex == -1)
		{
			alert(errorStr + ' cannot be blank.');
			Obj.focus();
			return false;
		}
	}
	return true;
}

function verifyPassword(firstPasswordObjName, secondPasswordObjName)
{
  var obj1, obj2;
  obj1 = getObj(firstPasswordObjName);
  obj2 = getObj(secondPasswordObjName);

  if(obj1.value==obj2.value)
  {
    return true;
  }
  else
  {
    alert('The passwords entered do not match.');
    obj2.focus();
    return false;
  }
}

function countEmptyInputPattern(pattern, formName)
{
  var inForm = getObj(formName);
  var elementCount = 0;
  var i=0;
  var patternVar = pattern;

  for(i=0;i<inForm.elements.length;i++)
  {
    formElement = inForm.elements[i];
    if(patternVar.test(formElement.name))
    {
      if(formElement.value=='')
      {
	elementCount++;
      }
    }
  }
}

function countNonEmptyInputPattern(pattern, formName)
{
  var inForm = getObj(formName);
  var elementCount = 0;
  var patternCount = 0;
  var i=0;
  var patternVar = pattern;

  for(i=0;i<inForm.elements.length;i++)
  {
    formElement = inForm.elements[i];
    if(patternVar.test(formElement.name))
    {
      patternCount++;

      if(formElement.value!='')
      {
	elementCount++;
      }
    }
  }

  //so if we actually have answer patterns on the page
  //we can return our results.  If we don't that means
  //most likely that we are dealing with an open ended
  //question page, so we need to let that one pass this
  //validation
  if(patternCount>0)
    return(elementCount);
  else
    return(-1);
}

function onDateChange(objName)
{
  var i;
	
  var endmonth = getObj(objName + 'months');
  var endyear = getObj(objName + 'years');
  var endday = getObj(objName + 'days');
	
  var year = endyear.options[endyear.selectedIndex].value;
  var month = endmonth.options[endmonth.selectedIndex].value;
		
  var days = getDaysInMonth(month, year);

  //clear then repopulate day select
	
  while(endday.options.length > 0)
  {
    endday.options[0] = null;
  }
	
  var j=1;
  for(i=0;i<days;i++,j++)
  {
    endday.options[i] = new Option(j,j);
  }
}

function countEmptyInputPatternImplied(pattern1, pattern2, formName)
{
  var inForm = getObj(formName);
  var i=0;
  var patternVar = pattern1;
  var tempName;
  var patternNameArray;
  var pattern2Name;

  for(i=0;i<inForm.elements.length;i++)
  {
    formElement = inForm.elements[i];
    if(patternVar.test(formElement.name))
    {
      //if the element is not empty we need to make sure that the second
      //pattern element is also not empty, having pattern1 implies pattern2
      //must exist also
      if(formElement.value!='')
      {	
	tempName = formElement.name;
	//split the formElemnt we're on and extract the key encoded in the string
	patternNameArray = tempName.split('_');

	//now patterNamArray[1] has the key number in it, now recreate the string from
	//pattern 2 with the key we've found and verify that it is in fact not empty
	pattern2Name = pattern2 + '_' + patternNameArray[1]; 

	pattern2Obj = getObj(pattern2Name);

	if(pattern2Obj.value == '')
	{
	  pattern2Obj.focus();
	  return(1);
	}
      }
    }
  }
  return(0);
}

function toggleCriticalChecks()
{
	var spanArray = getObj('criticalSection').getElementsByTagName('span');

	for(i=0;i<spanArray.length;i++)
	{
		if(criticalSectionPattern.test(spanArray[i].id))
		{
			if(spanArray[i].style.visibility == 'hidden')
			{
				spanArray[i].style.visibility = 'visible';
			}
			else
			{
				spanArray[i].style.visibility = 'hidden';
			}
		}
	}
}

function changeCriticalFlag(answer_no)
{
	var spanCriticalTag = getObj('criticalSectionSubItem_' + answer_no);

	if(spanCriticalTag.innerHTML == 'Pass')
	{
		spanCriticalTag.innerHTML = 'Fail&nbsp;&nbsp;';
	}
	else
	{
		spanCriticalTag.innerHTML = 'Pass';
	}
}

function popWin(url)
{
	window.open(url,"Preview","width=600, height=500, resizable=no, resizabel=0, menubar=0, status=0, scrollbars=yes, top=150, left=300");
}

function validateExtensions(strObj, extensions)
{
	if(extensions.length<1)
	{
		alert('Some File extensions need to be sent so the control can be validated.');
		return False;
	}
	
	var obj1 = getObj(strObj);

	if(obj1.type!='file')
	{
		alert('You are trying to validate a non file type input control.');
		return(false);
	}

	//we do have a file upload control here
	//lets make sure they are trying to upload the 
	//correct type of file
	for(i=0;i<extensions.length;i++)
	{
		extensionRegObj = new RegExp("\."+extensions[i]+"$","i");

		if(eval(extensionRegObj.test(obj1.value)))
		{
			return(true);
		}
	}
	return(false);
}

function showTimeLeft(seconds)
{
	var minutes;
	var seconds;
	var timeStr;
	var num;
	var minones;
	var mintens;
	var secones;
	var sectens;

	minutes = parseInt(seconds/60);
	seconds = seconds%60;

	if(document.images)
	{
		num = 0;
		num = minutes%10;
		num = parseInt(num);		
		document.images.minones.src=eval("digit"+num+".src");

		num = 0;
		num = minutes/10;
		num = parseInt(num);		
		document.images.mintens.src=eval("digit"+num+".src");

		num = 0;
		num = seconds%10;		
		num = parseInt(num);		
		document.images.secones.src=eval("digit"+num+".src");

		num = 0;
		num = seconds/10;
		num = parseInt(num);		
		document.images.sectens.src=eval("digit"+num+".src");

		document.images.colon.src=digitcolon.src;
	}
	else
	{
		if(seconds<10)
		  seconds = "0" + seconds;

		timeStr = minutes + ":" + seconds;
		return timeStr;
	}
}

function getDaysInMonth(month, year)
    {
        if (month < 1 || month > 12)
        {
            alert('Month is invalid');
        }
   
        d = daysInMonth[month - 1];
   
        if (month == 2)
        {
            // Check for leap year
            // Forget the 4000 rule, I doubt I'll be around then...
        
            if (year%4 == 0)
            {
                if (year%100 == 0)
                {
                    if (year%400 == 0)
                    {
                        d = 29;
                    }
                }
                else
                {
                    d = 29;
                }
            }
        }
    
        return d;
    }

-->
