// Menu variables and images

var onbutton;

nav_divider = new Image();
nav_divider.src = "images/nav_divider.gif"
nav_divider_on = new Image();
nav_divider_on.src = "images/nav_divider_on.gif"
nav_home = new Image();
nav_home.src = "images/nav_home.gif"
nav_home_on = new Image();
nav_home_on.src = "images/nav_home_on.gif"
nav_home_on_b = new Image();
nav_home_on_b.src = "images/nav_home_on_b.gif"
nav_introduction = new Image();
nav_introduction.src = "images/nav_introduction.gif"
nav_introduction_on = new Image();
nav_introduction_on.src = "images/nav_introduction_on.gif"
nav_downloads = new Image();
nav_downloads.src = "images/nav_downloads.gif"
nav_downloads_on = new Image();
nav_downloads_on.src = "images/nav_downloads_on.gif"
nav_study_resources = new Image();
nav_study_resources.src = "images/nav_study_resources.gif"
nav_study_resources_on = new Image();
nav_study_resources_on.src = "images/nav_study_resources_on.gif"
nav_industry_resources = new Image();
nav_industry_resources.src = "images/nav_industry_resources.gif"
nav_industry_resources_on = new Image();
nav_industry_resources_on.src = "images/nav_industry_resources_on.gif"
nav_contact_us = new Image();
nav_contact_us.src = "images/nav_contact_us.gif"
nav_contact_us_on = new Image();
nav_contact_us_on.src = "images/nav_contact_us_on.gif"
nav_welcome = new Image();
nav_welcome.src = "images/nav_welcome.gif"
nav_welcome_on = new Image();
nav_welcome_on.src = "images/nav_welcome_on.gif"
nav_welcome_on_b = new Image();
nav_welcome_on_b.src = "images/nav_welcome_on_b.gif"
nav_instructions = new Image();
nav_instructions.src = "images/nav_instructions.gif"
nav_instructions_on = new Image();
nav_instructions_on.src = "images/nav_instructions_on.gif"
nav_instructions_on2 = new Image();
nav_instructions_on2.src = "images/nav_instructions_on2.gif"
nav_announcements = new Image();
nav_announcements.src = "images/nav_announcements.gif"
nav_announcements_on = new Image();
nav_announcements_on.src = "images/nav_announcements_on.gif"
nav_faq = new Image();
nav_faq.src = "images/nav_faq.gif"
nav_faq_on = new Image();
nav_faq_on.src = "images/nav_faq_on.gif"
nav_summary_of_findings = new Image();
nav_summary_of_findings.src = "images/nav_summary_of_findings.gif"
nav_summary_of_findings_on = new Image();
nav_summary_of_findings_on.src = "images/nav_summary_of_findings_on.gif"
nav_query = new Image();
nav_query.src = "images/nav_query.gif"
nav_query_on = new Image();
nav_query_on.src = "images/nav_query_on.gif"
nav_print_responses = new Image();
nav_print_responses.src = "images/nav_print_responses.gif"
nav_print_responses_on = new Image();
nav_print_responses_on.src = "images/nav_print_responses_on.gif"
nav_print_query = new Image();
nav_print_query.src = "images/nav_print_query.gif"
nav_print_query_on = new Image();
nav_print_query_on.src = "images/nav_print_query_on.gif"
nav_setup = new Image();
nav_setup.src = "images/nav_setup.gif"
nav_setup_on = new Image();
nav_setup_on.src = "images/nav_setup_on.gif"
nav_progress = new Image();
nav_progress.src = "images/nav_progress.gif"
nav_progress_on = new Image();
nav_progress_on.src = "images/nav_progress_on.gif"
nav_contact_us_bp = new Image();
nav_contact_us_bp.src = "images/nav_contact_us_bp.gif"
nav_contact_us_bp_on = new Image();
nav_contact_us_bp_on.src = "images/nav_contact_us_bp_on.gif"
nav_logout = new Image();
nav_logout.src = "images/nav_logout.gif"
nav_logout_on = new Image();
nav_logout_on.src = "images/nav_logout_on.gif"
nav_logout_on2 = new Image();
nav_logout_on2.src = "images/nav_logout_on2.gif"
nav_studies = new Image();
nav_studies.src = "images/nav_studies.gif"
nav_studies_on = new Image();
nav_studies_on.src = "images/nav_studies_on.gif"
nav_status = new Image();
nav_status.src = "images/nav_status.gif"
nav_status_on = new Image();
nav_status_on.src = "images/nav_status_on.gif"
nav_select_study = new Image();
nav_select_study.src = "images/nav_select_study.gif"
nav_select_study_on = new Image();
nav_select_study_on.src = "images/nav_select_study_on.gif"
nav_select_study2 = new Image();
nav_select_study2.src = "images/nav_select_study.gif"
nav_select_study2_on = new Image();
nav_select_study2_on.src = "images/nav_select_study2_on.gif"
view_sample = new Image();
view_sample.src = "images/view_sample.gif"
view_sample_on = new Image();
view_sample_on.src = "images/view_sample_on.gif"

// function to open a window with variable features
function openWindow(URL,Name,features)
{
  window.open(URL,Name,features);
}

// function to print the current page
function printWindow()
{
  input_box=confirm("If this page does not print correctly\r\n\r\n  1. Select File-Page Setup in your browser,\r\n  2. Reset the left and right margins to 0.25,\r\n  3. Reset the top and bottom margins to 0.75,       \r\n  4. Ensure the printer is set to Portrait.\r\n\r\nClick Cancel to change the print options,\r\nor click OK to print with your current settings.\r\n  ")
  bV = parseInt(navigator.appVersion);
  if (bV >= 4)
  	if (input_box==true) window.print();
  	else return;
  else
  	alert ("This operation is not supported by your browser.\r\nSelect File-Print to print the page.")
}

// Function to open a new window for the forum
function forum(url,name) 
{
  window.open(url,name,"resizable=yes,menubar=no,toolbar=no,location=no,directories=no,scrollbars=1,width=800,height=550");
}

// Function to change the menu images onmousover
function changeImages() {
  if (document.images) {
    for (var i=0; i<changeImages.arguments.length; i+=2) {
	if(changeImages.arguments[i] != onbutton) {
      document[changeImages.arguments[i]].src = eval(changeImages.arguments[i+1] + ".src"); 

//alert(eval(changeImages.arguments[i+1] + ".src"))
}
    }
  }
}

function IsInt(field)
{
	if (field.value == '')
		return true;
	
	var strString = field.value;
	var strValidChars = "0123456789";
	var strChar;
	var blnResult = true;
	
	if (strString.length == 0) return false;

	//  test strString consists of valid characters listed above
	for (i = 0; i < strString.length && blnResult == true; i++)
	{
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
			blnResult = false;
	}
		
	if (blnResult)
		return true;
	else
		return false;

}


function IsNumeric(field, intQuestion)
{

//	alert(field.value + " " + intQuestion)
//		return true;

	if (field.value == '')
		return true;

	var strString = field.value;
	var strValidChars = "0123456789.-(),";
	var strChar;
	var blnResult = true;
	var blnGotDecimal = false;
	
	if (strString.length == 0) return false;

	//  test strString consists of valid characters listed above
	for (i = 0; i < strString.length && blnResult == true; i++)
	{
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
			blnResult = false;
		
		if (strChar == "." && !blnGotDecimal)
			blnGotDecimal = true;
		else if (strChar == "." && blnGotDecimal)
			blnResult = false;
		
		if ((strChar == '-' && i != 0 && i != strString.length - 1) || (strChar == '(' && i != 0) || (strChar == ')' && i != strString.length -1))
			blnResult = false;
	}
	
	if (strString.charAt(0) == '(' && strString.charAt(strString.length - 1) != ')')
		blnResult = false;
	
	if (strString.charAt(strString.length -	1) == ')' && strString.charAt(0) != '(')
		blnResult = false;
	
	if (strString.charAt(0) == '-' && strString.charAt(strString.length - 1) == '-')
		blnResult = false;
	
	if (strString.charAt(strString.length -	3) == ',')
		blnResult = false;
	
	if (blnResult)
		return true;
	else
	{
//		alert('Please enter a numerical value for question ' + intQuestion + '.'); 
//		field.select(); 
		return false;
	}			
}

function percent(field, intQuestion)
{
	if (!IsNumeric(field,intQuestion))
		return false;

	if (parseFloat(field.value) > 100.0 || parseFloat(field.value) < -100.0)
	{
		alert('The value you entered: [' + field.value + '] is not valid for Question ' + intQuestion +
			'.\n\rThis value must be a valid percent.');
		field.select();
		return false;
	}
	return true;
}

function IsValidPercent(field, intQuestion)
{

	var strString = field.value;
	var strValidChars = "0123456789.-()";
	var strChar;
	var blnResult = true;
	var blnGotDecimal = false;
	
	//  test strString consists of valid characters listed above
	for (i = 0; i < strString.length && blnResult == true; i++)
	{
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
			blnResult = false;
		
//		if (strChar == "." && !blnGotDecimal)
//			blnGotDecimal = true;
//		else if (strChar == "." && blnGotDecimal)
//			blnResult = false;
		
		if ((strChar == '-' && i != 0 && i != strString.length - 1) || (strChar == '(' && i != 0) || (strChar == ')' && i != strString.length -1))
			blnResult = false;
	}

	if (blnResult)
		return true;
	else
	{
//		alert('The value you entered: [' + field.value + '] is not valid for Question ' + intQuestion +
//			'.\n\rThis value must be a valid percent according to US designation (ex - 12.5).');
//		field.select();
		return false;
	}
}

function IsYear(field, intQuestion)
{
	var blnResult = true;
	
	var dateNow = new Date(Date());
	
	if (!IsInt(field))
		blnResult = false;
	if (parseInt(field.value) < 1800)
		blnResult = false;
	if (parseInt(field.value) > parseInt(dateNow.getYear()) + 1)
		blnResult = false;
	
	
	if (blnResult)
		return true;
	else
	{
		alert('Please enter a valid year for Question ' + intQuestion + ' .');
		field.select();
		return false
	}
}

function isDate(dtStr, intQuestion){
	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 for Question ' + intQuestion + ' .')
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert('Please enter a valid month for Question ' + intQuestion + ' .')
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert('Please enter a valid day for Question ' + intQuestion + ' .')
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert('Please enter a valid 4 digit year between '+minYear+' and '+maxYear+ ' for Question ' + intQuestion + ' .')
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert('Please enter a valid date for Question ' + intQuestion + ' .')
		return false
	}
return true
}

function ValidDate(field, intQuestion){

	if (field.value == "") {
		return true
	}

	if (isDate(field.value, intQuestion)==false){
		field.select()
		return false
	}
    return true
 }

function pageUnload(bln, form)
{

	toggleDiv('PleaseWait',1);
	if (!bln)
		if (confirm('You are about to navigate away from this page.\nWould you like to save your data entered?\n\r\n\rClick OK to save.\n\rClick CANCEL to disregard any changes.'))
			form.submit();
}

function toggleDiv(id,flagit) {

if (flagit=="1"){
if (document.layers) document.layers[''+id+''].visibility = "show"
else if (document.all) document.all[''+id+''].style.visibility = "visible"
else if (document.getElementById) document.getElementById(''+id+'').style.visibility = "visible"
}
else
if (flagit=="0"){
if (document.layers) document.layers[''+id+''].visibility = "hide"
else if (document.all) document.all[''+id+''].style.visibility = "hidden"
else if (document.getElementById) document.getElementById(''+id+'').style.visibility = "hidden"
}
}


function multiDimensionalArray(name_str, n0, n1, n2, n3)
{
	var numDimens = multiDimensionalArray.arguments.length - 1;
	var code = name_str + " = new Array();";
	eval (code);

	for (var i = 0; i < n0; i++) // first index is 0
	{
		var newName = name_str + "[" + i + "]";      
		if (numDimens > 1)
		{
			code = "multiDimensionalArray ('" + newName + "'";
			for (var j = 2; j <= numDimens; j++)
			code += ", " + multiDimensionalArray.arguments[j];
			code += ");";
			eval (code);
		}
	}  
}

function setDataType(cValue)
  {
    // THIS FUNCTION CONVERTS DATES AND NUMBERS FOR PROPER ARRAY
    // SORTING WHEN IN THE SORT FUNCTION
    var isDate = new Date(cValue);
    if (isDate == "NaN")
      {
        if (isNaN(cValue))
          {
            // THE VALUE IS A STRING, MAKE ALL CHARACTERS IN
            // STRING UPPER CASE TO ASSURE PROPER A-Z SORT
            cValue = cValue.toUpperCase();
            return cValue;
          }
        else
          {
            // VALUE IS A NUMBER, TO PREVENT STRING SORTING OF A NUMBER
            // ADD AN ADDITIONAL DIGIT THAT IS THE + TO THE LENGTH OF
            // THE NUMBER WHEN IT IS A STRING
            var myNum;
            myNum = String.fromCharCode(48 + cValue.length) + cValue;
            return myNum;
          }
        }
  else
      {
        // VALUE TO SORT IS A DATE, REMOVE ALL OF THE PUNCTUATION AND
        // AND RETURN THE STRING NUMBER
        //BUG - STRING AND NOT NUMERICAL SORT .....
        // ( 1 - 10 - 11 - 2 - 3 - 4 - 41 - 5  etc.)
        var myDate = new String();
        myDate = isDate.getFullYear() + " " ;
        myDate = myDate + isDate.getMonth() + " ";
        myDate = myDate + isDate.getDate(); + " ";
        myDate = myDate + isDate.getHours(); + " ";
        myDate = myDate + isDate.getMinutes(); + " ";
        myDate = myDate + isDate.getSeconds();
        //myDate = String.fromCharCode(48 + myDate.length) + myDate;
        return myDate ;
      }
  }
function sortTable(col, tableToSort)
  {
    var iCurCell = col + tableToSort.cols;
    var totalRows = tableToSort.rows.length;
    var bSort = 0;
    var colArray = new Array();
    var oldIndex = new Array();
    var indexArray = new Array();
    var bArray = new Array();
    var newRow;
    var newCell;
    var i;
    var c;
    var j;
    // ** POPULATE THE ARRAY colArray WITH CONTENTS OF THE COLUMN SELECTED
    for (i=1; i < tableToSort.rows.length; i++)
      {
        colArray[i - 1] = setDataType(tableToSort.cells(iCurCell).innerText);
        iCurCell = iCurCell + tableToSort.cols;
      }
    // ** COPY ARRAY FOR COMPARISON AFTER SORT
    for (i=0; i < colArray.length; i++)
      {
        bArray[i] = colArray[i];
      }
    // ** SORT THE COLUMN ITEMS
    //alert ( colArray );
    colArray.sort();
    //alert ( colArray );
    for (i=0; i < colArray.length; i++)
      { // LOOP THROUGH THE NEW SORTED ARRAY
        indexArray[i] = (i+1);
        for(j=0; j < bArray.length; j++)
          { // LOOP THROUGH THE OLD ARRAY
            if (colArray[i] == bArray[j])
              {  // WHEN THE ITEM IN THE OLD AND NEW MATCH, PLACE THE
                // CURRENT ROW NUMBER IN THE PROPER POSITION IN THE
                // NEW ORDER ARRAY SO ROWS CAN BE MOVED ....
                // MAKE SURE CURRENT ROW NUMBER IS NOT ALREADY IN THE
                // NEW ORDER ARRAY
                for (c=0; c<i; c++)
                  {
                    if ( oldIndex[c] == (j+1) )
                    {
                      bSort = 1;
                    }
                      }
                      if (bSort == 0)
                        {
                          oldIndex[i] = (j+1);
                        }
                          bSort = 0;
                        }
          }
    }
  // ** SORTING COMPLETE, ADD NEW ROWS TO BASE OF TABLE ....
  for (i=0; i<oldIndex.length; i++)
    {
      newRow = tableToSort.insertRow();
      for (c=0; c<tableToSort.cols; c++)
        {
          newCell = newRow.insertCell();
          newCell.innerHTML = tableToSort.rows(oldIndex[i]).cells(c).innerHTML;
        }
      }
  //MOVE NEW ROWS TO TOP OF TABLE ....
  for (i=1; i<totalRows; i++)
    {
      tableToSort.moveRow((tableToSort.rows.length -1),1);
    }
  //DELETE THE OLD ROWS FROM THE BOTTOM OF THE TABLE ....
  for (i=1; i<totalRows; i++)
    {
      tableToSort.deleteRow();
    }
  }
