// validate.js
// Created by A.Sherman
// Last Update  08-28-2001
// *************************************************************************************

//var pastLocation=1;

//this function is called from  regMenu.jsp on click on the link

function openWindow(number, currentForm)
{ 
var form = document.forms[0];
	  
	//  if('<MM:BeginLock translatorClass="MM_JSPSCRIPT" type="DynamicVariables" depFiles="" orig="%3C%25= session.getValue(%22CaseCode%22)%25%3E" ><MM_DYNAMIC_CONTENT SOURCE=session BINDING="CaseCode" DYNAMICDATA=1></MM_DYNAMIC_CONTENT><MM:EndLock>'!= "") 
	 // {
     //   window.parent.Help.document.location= "Help2.jsp"; 
	 // }
	  
   form.whereTo.value=number;

   if(number == 1)
   {
     

       if(form.pastLoc.value == 1)
        {
          if(validateFormPatient())
          {
           form.action="servlet/com.bio.jsite.Patient";
           // scrollTo(0,0);
           // pastLocation=1;
			form.submit();
         }
       }
	    if(form.pastLoc.value == 2)
        {
          if(validateFormDemographic())
          {
           form.action="servlet/com.bio.jsite.Demographic";
           // scrollTo(0,0);
           // pastLocation=1;
			form.submit();
         }
       }
       if(form.pastLoc.value == 3)
       {
         if(validateFormMedical())
         {
            form.action="servlet/com.bio.jsite.Medical";
		   //   scrollTo(0,0);
            //pastLocation=1;
			form.submit();
		 }
      }
	  
      if(form.pastLoc.value == 4) 
      {
         if(validateFormFamily())
         {
            form.action="servlet/com.bio.jsite.Family";
            //scrollTo(0,0);
            //pastLocation = 1;
			form.submit();
         }
      }
   }
   
   if(number == 2)
   {

      if(form.pastLoc.value == 1)
      {
      
         if(validateFormPatient())
  
         { 
            form.action="servlet/com.bio.jsite.Patient";
            //pastLocation=2;
			form.submit();
         }
      }
     if(form.pastLoc.value == 2)
        {
          if(validateFormDemographic())
          {
           form.action="servlet/com.bio.jsite.Demographic";
           // scrollTo(0,0);
           // pastLocation=1;
			form.submit();
         }
       }
	 
	  if(form.pastLoc.value == 3)
      {
         if(validateFormMedical())
         {
             form.action="servlet/com.bio.jsite.Medical";
            //scrollTo(0,0);
            //pastLocation=2;
			form.submit();
         }
      }
      if(form.pastLoc.value == 4) 
      {
         if(validateFormFamily())
         {
             form.action="servlet/com.bio.jsite.Family";
            //scrollTo(0,0);
           // pastLocation = 2;
			form.submit();
         }
      }
   }
   
   if(number == 3)
   {

 	    if(form.pastLoc.value == 1)
      {
         if(validateFormPatient())
	      {
           form.action="servlet/com.bio.jsite.Patient";
            //scrollTo(0,0);
            //pastLocation=3;
			form.submit();
         }
      }
      if(form.pastLoc.value == 2)
      {
         if(validateFormDemographic())
         {
            form.action="servlet/com.bio.jsite.Demographic";
            //scrollTo(0,0);
           // pastLocation=3;
			form.submit();
         }
      }
	  if(form.pastLoc.value == 3)
      {
         if(validateFormMedical())
         {
             form.action="servlet/com.bio.jsite.Medical";
            //scrollTo(0,0);
            //pastLocation=2;
			form.submit();
         }
      }
      if(form.pastLoc.value == 4) 
      {
	     if(validateFormFamily())
         {
		    form.action="servlet/com.bio.jsite.Family";
            //scrollTo(0,0);
            //pastLocation = 3;
			form.submit();
         }
      } 
   }
   
   if(number == 4)
   {
 
      if(form.pastLoc.value == 1)
      {
	      if(validateFormPatient())
	      {
             form.action="servlet/com.bio.jsite.Patient";
			//parent.Main.location.href="family.jsp";
            //scrollTo(0,0);
            //pastLocation=4;
			form.submit();
         }
      }
      if(form.pastLoc.value == 2)
      {

         if(validateFormDemographic() )
         {

             form.action="servlet/com.bio.jsite.Demographic";
	         //scrollTo(0,0);
            //pastLocation=4;
			form.submit();
         }
      }
      if(form.pastLoc.value == 3) 
	   {
         if(validateFormMedical())
         {
             form.action="servlet/com.bio.jsite.Medical";
            //scrollTo(0,0);
            //pastLocation = 4;
			form.submit();
         }
      }
	  if(form.pastLoc.value == 4) 
      {
	     if(validateFormFamily())
         {
		    form.action="servlet/com.bio.jsite.Family";
            //scrollTo(0,0);
            //pastLocation = 3;
			form.submit();
         }
      }  
   }
  if(number == 5)
  
{ 
//   window.parent.Main.document.title
//   window.parent.Main.document.onLoad
//   self.opener
    confirmForm(currentForm);
  }
}
 

/**********************************************************************************************/
var ch2="";
var count=0;

function showImage(imagename, imageurl, errors) 
{
   //alert("errors="+errors);
   //alert("i am in showImage");
   document.images[imagename].src = imageurl;
   if(errors) 
      haveerrors = errors;
	 //alert("haveerrors in showImage="+haveerrors); 
	  
}

//check if valid year
function isYear(strObj)
{
   var booleanValue=isNumber(strObj);
   var booleanValue2=isBlank(strObj);
   if(booleanValue || booleanValue2 || strObj.length!=4)
      return true;
   else 
     return false;
}

//check if field is empty
function isBlank(strObj)
{
   if (strObj=="")
      return true;
   else
      return false;
}	

//check if characters are not a-z, A-Z, or a space.   
function isLetter(strObj)
{
   for (var i = 0; i < strObj.length; i++)
   {      
      var ch = strObj.substring(i, i + 1);      
      if (((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch)) && ch != " ")
         break;
   }
   if (((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch)) && ch != " ")
      return true; 
   else 
      return false;
}    
 
//check if number
function isNumber(strObj)
{
   for (var i = 0; i < strObj.length; i++)
   {      
      var ch = strObj.substring(i, i + 1);      
      if ((ch < "0" || "9" < ch) && ch != '.')
         break;
   }  
   if ((ch < "0" || "9" < ch) && ch != '.')
      return true; 
   else 
      return false; 
}

//trim field value
function trim(strObj) 
{ 
   var hold="";
   var flag = true;
   for(var i = 0; i<strObj.length; i++)
   {
      hold = strObj.substring(i, i+1);
      if(hold !=  "")
      {
         flag = false;
         break;
      }
   }  
   if(flag == false)
   {
    // this will get rid of leading spaces 
      while (strObj.substring(0,1) == ' ') 
         strObj = strObj.substring(1, strObj.length);

 // this will get rid of trailing spaces 
      while (strObj.substring(strObj.length-1,strObj.length) == ' ')
         strObj = strObj.substring(0, strObj.length-1);
      return strObj;
   }
   else
   {
      strObj = "";
      return strObj;
   }
} 

//check valid Zip Code
function isZipCode(strObj)
{
   var booleanValue=isNumber(strObj);
   var booleanValue2=isBlank(strObj);
   if(booleanValue || booleanValue2 || strObj.length < 5)
      return true;
   else
      return false;
}

//check if valid month, day, year
function isDate(strObj,strObj2,strObj3)
{
   var booleanValue=false;
   var booleanValue2=false;
   date=new Array(strObj,strObj2,strObj3); 
   var i=0; 
   for(i=0; i<3; i++)
   {
      booleanValue=isNumber(date[i]);
      booleanValue2=isBlank(date[i]);
      if(booleanValue || booleanValue2)
         return true;
   }
   
   if(strObj>12 || strObj2>31)
      return true;
   if(strObj2.length!=2 || strObj.length!=2 || strObj3.length!=4)
      return true;
   else
      return false;
}

//check if valid SSN
function isSSN(strObj)
{
   var booleanValue=isNumber(strObj);
   if(isBlank(strObj))
      return true;
   else
   if(strObj.length ==9 &&  !booleanValue)
      return false;
   else
      if(strObj.length==11 && strObj.substring(3,4)=="-" && strObj.substring(6,7)=="-")
         return false;
      else
         return true;
}
  
//check if valid Phone Number
function isPhoneNumber(strObj)
{
  var valid2=false;
  var ch="";
  ch2="";
  var digits="";
  var valid=false;

   for(var i=0; i<strObj.length; i++) 
   {
      ch=strObj.substring(i,i+1);
      if(ch==")" || ch == "-")
      {
         digits=strObj.substring(1,i);
         if(!(isNumber(digits)))
            valid=true;//no mistake
         break;
      }  
   }
  
   for(var i=0; i<strObj.length; i++) 
   {
      ch=strObj.substring(i,i+1);
      if(ch=="(" || ch ==")" || ch=="-" || ch==" " || !(isNumber(ch)))
      {
         valid2=true;
      }
      else
      {
         valid2=false;
         break;
      }
   }
   
 // if(strObj.substring(0,1)=="(" && valid2 && valid && strObj.length >= 9)
   if(strObj.substring(0,1)!="-" && valid2 && valid && strObj.length >= 9)
   {
      ch2=strObj;
      if(strObj.substring(0,1) == "(")
      {
	      strObj=strObj.substring(1);
	      ch2=strObj;
	 	   for (var i=0; i<ch2.length; i++)
         {
            if(ch2.substring(i, i+1) == ')' ) 
            {
		//     ch2.substring(i, i+1,"-")
               ch2=ch2.substring(0,i)+"-"+ch2.substring(i+1);
	            i=0;
            }
         }
      }
      else
      {
         for (var p=0; p<ch2.length; p++)  
         {
            if(ch2.substring(p, p+1) == ')' ) 
            {
		//     ch2.substring(i, i+1,"-")
               ch2=ch2.substring(0,p)+"-"+ch2.substring(p+1);
               p=0;
    	       }
         }
      }
      return false;
   }
   else
   {
      ch2=strObj;
      return true;
   }
}

function getPhone()
{
   return ch2;
}

//check if valid User ID
function isUserID(strObj)
{
   if(isLetterNumber(strObj) || isBlank(strObj) || isLetter(strObj.substring(0,1)) || (strObj.length<6 || strObj.length>9 ))
      return true;
   else 
      return false;
}

//check if valid Password
function isUserPassword(strObj, strObj1)
{
   if(isLetterNumber(strObj) || !isLetter(strObj) || isBlank(strObj) || isIDPwd(strObj, strObj1) || (strObj.length<6 || strObj.length>9 ) )
      return true;
   else
      return false;
}

//check if conform password is the same as password
function isPwdConform(strObj, strObj1)
{
   if(!(strObj==strObj1))
      return true;
   else
      return false;
}

//check if User ID is the same as password
function isIDPwd(strObj, strObj1)
{
   if(!(strObj==strObj1))
      return false;
   else
      return true;
}

//check if letter and number only
function isLetterNumber(strObj)
{
   for (var i = 0; i < strObj.length; i++)
   {      
      var ch = strObj.substring(i, i + 1);      
      if (((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch)) && ch != " " && (ch < "0" || "9" < ch) && ch != '.') 
         break;
   }
   if (((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch)) && ch != " " && (ch < "0" || "9" < ch) && ch != '.') 
      return true; 
   else 
      return false;
}   

//check if valid email
function isEmail(strObj)
{
   var at=true;
   var period=true; 
   for (var i = 1; i < strObj.value.length-1; i++)
   {
      var ch = strObj.value.substring(i, i + 1);
      if(ch=="@")
         at=false;
      
      if(ch==".")
         period=false;
   }
   if(!at && !period)
      return false;
   else
      return true;
} 

function countSelected(array)
{
   var cnt = 0;
   for ( var i=0; i<array.length; i++ )
   {
      if ( array[i].selected )
         cnt++; 
   }
   return cnt;
}

function strTrim(strObj)
{ 
   var hold="";
   var flag = true;
    
   for(var i = 0; i<strObj.length; i++)
   {
      hold = strObj.substring(i, i+1);
      if(hold !="" )
      {
         flag = false;
         break
      }
   }  
   if(flag == false)
   {
    // this will get rid of leading spaces 
      while (strObj.substring(0,1) == ' ' || strObj.substring(0,1) == "'") 
         strObj = strObj.substring(1, strObj.length);

    // this will get rid of trailing spaces 
      while (strObj.substring(strObj.length-1,strObj.length) == ' ' || strObj.substring(strObj.length-1,strObj.length) == "'")
         strObj = strObj.substring(0, strObj.length-1);
      return strObj;
   }
   else
   {
      strObj = "";
      return strObj;
   }
} 

function checkStatus(number)
{
   var form = document.forms[0];
   if(number == 1 && validateFormPatient())
      checkStatus2(form.statusPatient[0], form.statusPatient[1]);
   else  
   if(number == 2 && validateFormDemographic())
      checkStatus2(form.statusDemographic[0],form.statusDemographic[1]);
   else 
   if(number == 3 && validateFormMedical())
      checkStatus2(form.statusMedical[0], form.statusMedical[1]); 
   else
   if(number == 4 && validateFormFamily())
      checkStatus2(form.statusFamily[0], form.statusFamily[1]);
}  
  
function checkStatus2(checkBox1, checkBox2)
{
   var patient ="";
   var demographic="";
   var family ="";
   var medical ="";
   var flag1 = false;
   var flag2 = false;
   var flag3 = false;
   var flag4 = false;
   var form = document.forms[0];
    
   if(form.statusPatient[0].checked)
   {
      patient = "Patient Identification\n";
      flag1=true;
   }
   else
   {
      patient = "";
      flag1=false;
   }
   if(form.statusDemographic[0].checked)
   {
      demographic = "Demographic & Lifestyle Data\n";
      flag2=true;
   }
   else
   {
      demographic = "";
      flag2=false;
   }
   if(form.statusFamily[0].checked)
   {
      family ="Family History\n";
      flag3=true;
   }
   else
   {
      family ="";
      flag3=false;
   }
   if(form.statusMedical[0].checked)
   {
      medical ="Medical Information\n";
      flag4=true;
   }
   else
   {
      medical="";
      flag4=false;
   }
   if(checkBox1.checked)
   { 
      if(confirm("You have chosen status IN PROCESS for the following forms: \n"+patient+demographic+family+medical+"You will have to return to this case later and change the statuses of all forms to COMPLETED in order for this case to be accessible to others. \nWould you like to submit this case anyway?"));
      else
      {  
         checkBox1.focus();
       }
   }
 
   if(checkBox2.checked && (flag1 == false && flag2 == false && flag3== false && flag4== false))
   {
      if(confirm("You have chosen the status COMPLETED for all of the forms. The case is ready to be included into the database.  Would you like to submit the case?"));
      else
      {  
         checkBox2.focus();
      }
   }
   else
   if(checkBox2.checked &&(flag1 == false || flag2 == false || flag3== false || flag4== false))
   {
      if(confirm("You have chosen the status COMPLETED for this form, but there is/are the following form(s) that need(s) to be completed:\n"+patient+demographic+family+medical+"You will have to return to this case later and change the statuses of all forms to COMPLETED in order for this case to be accessible to others. \nWould you like to submit this case anyway?" ));
      else
      {  
         checkBox2.focus();
       
      }
   }
}

function able(relative, age, death)
{
   if(relative.selected == false)
   {
      age.disabled = false;
	  death.disabled = false;
	}
	else
	{
	   age.disabled = true;
	   age.value = "";
	   death.disabled = true;
	   death.value = "";
	}
}

function confirmForm( currentForm )
{
   var form = document.forms[0];
   form.target="_top";
   if(currentForm == 1)
   {
      if(validateFormPatient())
	  {
	    form.action="servlet/com.bio.jsite.Patient"; 
        form.submit();
	  }
   }
   else
   if(currentForm == 2)
   {
      if(validateFormDemographic())
	  {
	    form.action="servlet/com.bio.jsite.Demographic"; 
        form.submit();
	  }
   }
   else
   if(currentForm == 3)
   {
      if(validateFormMedical())
	  {
	    form.action="servlet/com.bio.jsite.Medical"; 
        form.submit();
	  }
   }
   else
   
   if(currentForm == 4)
   {
      if(validateFormFamily())
	  {
	    form.action="servlet/com.bio.jsite.Family"; 
        form.submit();
	  }
   }
 }  
   
function checkSelect(name,pictureType)
{
   var form = document.forms[0];
   var result=false;
   if((eval("form."+name+"[0].selected")))
      result=true;
   display(name,result,pictureType);
   
}
  
function checkBlank(name,pictureType)
{   
 var form = document.forms[0];
 var result=false;
 var rvalue=false;
	if(isBlank(trim((eval("form."+name+".value"))))) 
	   result=true;
	   
	display(name,result,pictureType);
	return result;
}
	           
function checkPhone(name,pictureType)
{
   var form = document.forms[0];
   var result=false;
   if(isPhoneNumber((eval("form."+name+".value"))))
      result=true;
   display(name,result);
}

function checkNumber(name,pictureType)
{
   var form = document.forms[0];
   var result=false;
   if(isNumber((eval("form."+name+".value"))))
      result=true;
   display(name,result);
}


function checkEmail(name,pictureType)
{
   var form = document.forms[0];
   var result=false;
   
   if(isEmail((eval("form."+name))))
   {  
      result=true;
   }
   display(name,result,pictureType);

}

function checkDate(name,pictureType)
{

	var form = document.forms[0];
    var result=false;
	var holdString=eval("form."+name+".value");
	//alert(holdString.substring(0,2));
	//alert(holdString.substring(3,5));
	//alert(holdString.substring(6,10));
	//alert(holdString.substring(2,3));
	//alert(holdString.substring(5,6));
	if(holdString!="")
	{
		if(holdString.length!=10 || isNumber(holdString.substring(0,2)) || isNumber(holdString.substring(3,5)) || isNumber(holdString.substring(6,10)) || holdString.substring(2,3)!="/" || holdString.substring(5,6)!="/") 
		{
			result=true;
		}
		else
	 	  if((holdString.substring(0,2)>12 || holdString.substring(0,2)<0) || (holdString.substring(3,5)>31 || holdString.substring(3,5)<0) || (holdString.substring(6,10)>2100 || holdString.substring(6,10)<1950))
	 	  {
	 		result=true;	
	 	  }
   }
	display(name,result,pictureType);
}


function compareDates(date1,date2,errorName,pictureType)
{
   var form=document.forms[0];
   var result=false;
   var startDate=new Date();
   var endDate=new Date();
   alert("i am in compareDates");
   var holdDate1=eval("form."+date1+".value");
   var holdDate2=eval("form."+date2+".value");
   
   startDate.setMonth(parseInt(holdDate1.substring(0,2))-1);
   startDate.setDate(holdDate1.substring(3,5));
   startDate.setYear(holdDate1.substring(6,10));
   
   endDate.setMonth(parseInt(holdDate2.substring(0,2))-1);
   endDate.setDate(holdDate2.substring(3,5));
   endDate.setYear(holdDate2.substring(6,10));
   //alert("startDate="+startDate);
   //alert("endDate="+endDate);
   if(startDate>endDate)
   {
   		result=true;
   }
   
	display(errorName,result,pictureType);
}


function length(name,value)
{
   //alert(name);
   //alert(value.length);
   if(value.length != 10 && value.length!=0)
   {
   		
		display(name,true);
   }
	else
	    display(name,false);	
}

function display(name,result,pictureType)
{
  //alert("i ma in display");
  var form = document.forms[0];
  if(pictureType==null)
  {
  //alert("I ma in if");
  	pictureType="Invaliderror.gif";
  }
  
  if(result)
  {
	   showImage((name+"Error"), ("/MBC/"+pictureType), true);
	   eval("form."+name+".focus()");
   }
   
   else
   {
      //alert("else blank");
	   showImage((name+"Error"), "/MBC/Blankimage.gif", false); 
	}
	   
}
/*
function checkUserID(name,pictureTipe)
{
	var result="";
	result=isUserID(eval("form."+name));
	display(name,result);
}

*/



function forceAlphaNumeric(e,textObject) 
{
	if (navigator.appName == "Netscape")
	{ 
		document.captureEvents(Event.KEYPRESS);
		document.onkeypress = forceAlphaNumeric;
	}
			
	        var charCode = (navigator.appName == "Netscape")?e.which:e.keyCode;
	        var targetElement = (navigator.appName == "Netscape")?e.target:e.srcElement;
	        var aChar = String.fromCharCode(charCode);
	
	        var myCriteria = /[0-9]/gi;
	        var myMatch = aChar.match(myCriteria);
	        if (myMatch != null)
			{
				return charCode;
			}
	
	        var myCriteria = /[a-z]/gi; //-[a-z(),!#@$%&*+=<>?:;~ /]/gi; ()-!#@$%&*+=<>?:;~
	        var myMatch = aChar.match(myCriteria);
	        if (myMatch != null)
			{
				return charCode;
			}
			
			var myCriteria = /[() .@!$%&*+=<>?:#/-]/gi; //()!#@$%&*+=<>?:;~
	        var myMatch = aChar.match(myCriteria);
	        if (myMatch != null)
			{
				return charCode;
			}
			
	/*
	        if(charCode==8)
			{
				return charCode;
			}
	        if(charCode==9)
			{
				return charCode;
			}
	        if(charCode==13)
			{
	        	if (targetElement==document.forms[0].UserPassword)
				{
	        		document.forms[0].logon.click();
	        	}
	        	if (targetElement==document.forms[0].UserID)
				{
	        		document.forms[0].UserPassword.focus();
	        		return (false);
	        	}
	        }
			*/
	return false;
}

function forceAlpha(e,textObject) 
{
	if (navigator.appName == "Netscape")
	{ 
		document.captureEvents(Event.KEYPRESS);
		document.onkeypress = forceAlpha;
	}
			
	        var charCode = (navigator.appName == "Netscape")?e.which:e.keyCode;
	        var targetElement = (navigator.appName == "Netscape")?e.target:e.srcElement;
	        var aChar = String.fromCharCode(charCode);
	
	        
			//aChar=aChar.toUpperCase()
			//alert("aChar: "+aChar);
			// charCode = aChar.charCodeAt(0);
			// alert("charCode: "+charCode);
	        var myCriteria = /[A-Z]/gi; //-[a-z(),!#@$%&*+=<>?:;~ /]/gi; ()-!#@$%&*+=<>?:;~
	        var myMatch = aChar.match(myCriteria);
	        if (myMatch != null)
			{//alert("charCode);
				return charCode;
			}
			
						
	
	return false;
}

function forceNumeric(e,textObject) 
{
	if (navigator.appName == "Netscape")
	{ 
		document.captureEvents(Event.KEYPRESS);
		document.onkeypress = forceAlpha;
	}
			
	        var charCode = (navigator.appName == "Netscape")?e.which:e.keyCode;
	        var targetElement = (navigator.appName == "Netscape")?e.target:e.srcElement;
	        var aChar = String.fromCharCode(charCode);
	
	        var myCriteria = /[0-9]/gi;
	        var myMatch = aChar.match(myCriteria);
	        if (myMatch != null)
			{
				return charCode;
			}
			
						
	
	return false;
}
function changeCurser()
{
	document.body.className="curser";
	
}	