// JavaScript Document
var numstu=1;
function updateRegFee(adj)
{
	numstu=numstu+adj;
	var fee="35.00";
	if ( numstu >1 ) fee="50.00";
	if( document.getElementById('fee') != null)
	{
		document.getElementById('fee').innerHTML=fee;
	}

}
function showGuardians( obj)
{

 if ( obj != null && !checkDate(obj))
 {
	 alert("Invalid DOB - Required Format: MM/DD/YYYY");
	 return;
 }

	  var formobj=document.frmNewApp;
	  var yb=1900;
	  var subDate=new Date();
	  var cy=subDate.getFullYear();
	  var allst_d=formobj.elements['st_d[]'];
	  if ( allst_d.length >0 )
	  {
		  for (var i=0; i<allst_d.length; i++)
		  {
				
			  var y1=parseInt(allst_d[i].value.substr(6,4));
			  if ( y1 > yb) yb=y1;
			
		  }
	  }
	  else
	  {
		  yb=  parseInt(allst_d.value.substr(6,4));
	  }
	  
	  if ( (cy -yb) < 19)
		 {// Guardians required
		   document.getElementById('guardians').style.display="block";
		 }
	 else
		   {
			document.getElementById('guardians').style.display="none";
		   }
		  
 
}
function rnd_str(){ return String((new Date()).getTime()).replace(/\D/gi,'') }
function removeStudent(rid){
var ns=document.getElementById(rid);
document.getElementById("students").removeChild(ns);
showGuardians(null);
updateRegFee(-1);
}
function addStudent()
{
 var ns=document.getElementById("student_").cloneNode(true);
 var mid="student_"+rnd_str();
 ns.setAttribute('id',mid);
 var ra=ns.getElementsByTagName("span");
 ra[0].style.display="inline";
 var rb=ns.getElementsByTagName("a");
 rb[0].setAttribute('onclick','removeStudent("' + mid+'")');
 var ri=ns.getElementsByTagName("input");
 for( var i=0; i<ri.length;i++)
 {
  ri[i].value="";
 }
 document.getElementById("students").appendChild(ns);
 updateRegFee(1);
}

function normalizeTel( fld_tel, flag )
{
		   var normTel="(AAA)AAA-AAAA";
		   var x;
		   var y ="";
		   var j=0;
		   var i;

		   
		   y=fld_tel.value;
		   
		   for (i=0; i< y.length; i++)
		   {
			 x=y.charCodeAt(i);
			 if ( x > 47 && x < 58)
			 {
			    
			    normTel= normTel.replace(/A/, y.substr(i, 1));
			    
				j=j+1;
		
			 }

           }

            if (j != 10) 
		    {
			    fld_tel.style.background="yellow";
		        if (flag) 
				{
		            alert("Wrong Telephone Number!");
		            fld_tel.focus();
		        }
				
		        return false; 
		     }
		      
		     fld_tel.value = normTel;
		     fld_tel.style.background="#FFFFF0"; 
		     return true; 
}
function ValidateEmail(fld_email, flag)
{
  var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
  var t=filter.test(fld_email.value);
  if (!t)
  {
    fld_email.style.background="yellow";
	if (flag)
    { fld_email.focus;
	 alert('Please provide a valid email address');
	 return false;
	 }
  }
  else
  {
  fld_email.style.background="#FFFFF0";
  return true;
  }
}
	
 function checkSlots(formobj)
    {   
        var daysarr=new Array(7);
        daysarr[0]="Monday";
        daysarr[1]="Tuesday";
        daysarr[2]="Wednesday";
        daysarr[3]="Thursday";
        daysarr[4]="Friday";
        daysarr[5]="Saturday";
        daysarr[6]="Sunday";
        var num_periods=2;
		
        var slot="";
        var to="";
        var from="";
        var dif=0;
        
		var allslots=formobj.elements['slot[]'];
		
        for(i=0;i<allslots.length;i+=2)
        {
             from = allslots[i];
             to = allslots[i+1];
             dif=to.selectedIndex-from.selectedIndex;
             if ( dif < 0  || 
                  (dif > 0 && from.selectedIndex == 0 ) ||
                  (dif == 0 && from.selectedIndex != 0 && to.selectedIndex != 0)
                )
             {
               day = Math.floor(i / (2*num_periods));
               slot = Math.floor((i - day * 2* num_periods) / 2) + 1;
               alert("Invalid "+slot+" From-To Period for "+ daysarr[day]);
               return false;
             }
          
        }
        return true;
    }
function checkEmpty(obj)
{
  if ( obj == null || obj.value == '' || obj.value == 'Empty')
  {
    obj.style.background="yellow";
    return false;
  }
  
  	obj.style.background="#FFFFF0";
	return true;
}	

// check date JavaScript function
// if date is valid then function returns true, otherwise returns false
function isDate(txtDate){
  var objDate;  // date object initialized from the txtDate string
  var mSeconds; // milliseconds from txtDate

	// date length should be 10 characters - no more, no less
  if (txtDate.length != 10) return false;

	// extract day, month and year from the txtDate string
	// expected format is mm/dd/yyyy
	// subtraction will cast variables to integer implicitly
  var day   = txtDate.substring(3,5)  - 0;
  var month = txtDate.substring(0,2)  - 1; // because months in JS start with 0
  var year  = txtDate.substring(6,10) - 0;

	// third and sixth character should be /
	if (txtDate.substring(2,3) != '/') return false;
	if (txtDate.substring(5,6) != '/') return false;

  // test year range
  if (year < 999 || year > 3000) return false;

  // convert txtDate to the milliseconds
  mSeconds = (new Date(year, month, day)).getTime();

  // initialize Date() object from calculated milliseconds
  objDate = new Date();
  objDate.setTime(mSeconds);

  // compare input parameter date and created Date() object
  // if difference exists then date isn't valid
  if (objDate.getFullYear() != year)  return false;
  if (objDate.getMonth()    != month) return false;
  if (objDate.getDate()     != day)   return false;

	// otherwise return true
  return true;
}

function checkDate(obj)
{
 var txtDate=obj.value;
 if (   isDate(txtDate) )
    {
   	obj.style.background="#FFFFF0";
	return true;
    }
	else
	{
   	obj.style.background="Yellow";
	return false;
    }
}
function ValidateForm( formobj)
{
  var str = '';
  var y = 1900;
  
  if (!checkSlots(formobj))
           return false;

  // check students
  var allst_f=formobj.elements['st_f[]'];
  var allst_l=formobj.elements['st_l[]'];
  var allst_d=formobj.elements['st_d[]'];
  var allst_i1=formobj.elements['st_i1[]'];
  var allst_l1=formobj.elements['st_l1[]'];
  if ( allst_f.length > 0)
  {
	  for (var i=0; i<allst_f.length; i++)
	  {
		if (!checkEmpty(allst_f[i])) {str=str+'Student: '+(i+1)+'-First Name Required\r\n';} 
		if (!checkEmpty(allst_l[i])) {str=str+'Student: '+(i+1)+'-Last Name Required\r\n';}
		if (!checkEmpty(allst_d[i])) {str=str+'Student: '+(i+1)+'-DOB Required\r\n';}
		    else if (!checkDate(allst_d[i])) {str=str+'Student: '+(i+1)+'-DOB format MM/DD/YYYY\r\n';}
			else {
		         var y1=allst_d[i].value.substr(6,4);
			     if ( y1 > y) y=y1;
		         }
		if (!checkEmpty(allst_i1[i])) {str=str+'Student: '+(i+1)+'-Program Name Required\r\n';}
		if (!checkEmpty(allst_l1[i])) {str=str+'Student: '+(i+1)+'-Lesson Length Required\r\n';}
		
	  }
  } 
  else
  {
        if (!checkEmpty(allst_f)) {str=str+'Student: '+'-First Name Required\r\n';} 
		if (!checkEmpty(allst_l)) {str=str+'Student: '+'-Last Name Required\r\n';}
		if (!checkEmpty(allst_d)) {str=str+'Student: '+'-DOB Required\r\n';}
		    else if (!checkDate(allst_d)) {str=str+'Student: '+'-DOB format MM/DD/YYYY\r\n';}
			else {
		         var y1=allst_d.value.substr(6,4);
			     if ( y1 > y) y=y1;
		         }
		if (!checkEmpty(allst_i1)) {str=str+'Student: '+'-Program Name Required\r\n';}
		if (!checkEmpty(allst_l1)) {str=str+'Student: '+'-Lesson Length Required\r\n';}
		
  }
  
  	
//check address
      var res= checkEmpty(formobj.elements['street'])* checkEmpty(formobj.elements['town'])*checkEmpty(formobj.elements['zip']);
	  if ( !res) {str=str+'-Full Address Required\r\n';}
	  
//check emergency
    var th=checkEmpty(formobj.elements['htel']);
	var td=checkEmpty(formobj.elements['ctel']);
	if ( !th && !td)
	    {
		str=str+'-At least one Emrgency Contact Phone Required\r\n';
		}
	else
	   {
	     if ( th && !normalizeTel(formobj.elements['htel'], false)){ str=str+'-Invalid Home Phone\r\n';}
		 if ( td && !normalizeTel(formobj.elements['ctel'], false)){ str=str+'-Invalid Cell Phone\r\n';}
	   }
	   
   		
	th=checkEmpty(formobj.elements['hemail']);
	td=checkEmpty(formobj.elements['demail']);
	if ( !th && !td)
	    {
		 str=str+'-At least one Emrgency Email Required\r\n';
		}
	else
	   {
	     if ( th && !ValidateEmail(formobj.elements['hemail'], false)){ str=str+'-Invalid Home Email\r\n';}
		 if ( td && !ValidateEmail(formobj.elements['demail'], false)){ str=str+'-Invalid Day Email\r\n';}
	   }
	
	
	//check Guardians

	 var subDate=new Date();  
     if ((subDate.getFullYear() - y) < 19)
	 {// Guardians required
	   
	   if ( !(checkEmpty(formobj.elements['lg1']) && checkEmpty(formobj.elements['lg1_tel']) || 
	          checkEmpty(formobj.elements['lg2']) && checkEmpty(formobj.elements['lg2_tel'])) )
			  {
			    str=str+'-At least one Legal Guardian Contact Info Required\r\n';
				document.getElementById('guardians').style.display="block"; 
			  }
     }	
	 
	 //signature
	 if ( !checkEmpty(formobj.elements['signature']))
	     {
			    str=str+'-Name of the person submitting an application- Required\r\n';
         }
			 
	if ( !checkEmpty(formobj.elements['source']))
	     {
			    str=str+'-How did you find about us- Required\r\n';
         }	
		 
	   // check policies
	if ( !formobj.elements['policies'].checked ) 
	{
		str=str+'-Please check acceptance of SMA Policies - Required\r\n';
		formobj.elements['policies'].style.background="yellow";
       
    }
    else
	{
  	  formobj.elements['policies'].style.background="#FFFFF0";
	}
	
	if (str != '') 
	  {
	  alert(str); 
	  return false;
	  }	
	  		  
 
return true;
}
function ValidateFormRe( formobj)
{
  var str = '';
  var y = 1900;
  
  if (!checkSlots(formobj))
           return false;

  // check students
  var allst_f=formobj.elements['st_f[]'];
  var allst_l=formobj.elements['st_l[]'];
  var allst_d=formobj.elements['st_d[]'];
  var allst_i1=formobj.elements['st_i1[]'];
  var allst_l1=formobj.elements['st_l1[]'];
  if ( allst_f.length > 0)
  {
	  for (var i=0; i<allst_f.length; i++)
	  {
		if (!checkEmpty(allst_f[i])) {str=str+'Student: '+(i+1)+'-First Name Required\r\n';} 
		if (!checkEmpty(allst_l[i])) {str=str+'Student: '+(i+1)+'-Last Name Required\r\n';}
		if (!checkEmpty(allst_d[i])) {str=str+'Student: '+(i+1)+'-DOB Required\r\n';}
		    else if (!checkDate(allst_d[i])) {str=str+'Student: '+(i+1)+'-DOB format MM/DD/YYYY\r\n';}
			else {
		         var y1=allst_d[i].value.substr(6,4);
			     if ( y1 > y) y=y1;
		         }
		if (!checkEmpty(allst_i1[i])) {str=str+'Student: '+(i+1)+'-Program Name Required\r\n';}
		if (!checkEmpty(allst_l1[i])) {str=str+'Student: '+(i+1)+'-Lesson Length Required\r\n';}
		
	  }
  } 
  else
  {
        if (!checkEmpty(allst_f)) {str=str+'Student: '+'-First Name Required\r\n';} 
		if (!checkEmpty(allst_l)) {str=str+'Student: '+'-Last Name Required\r\n';}
		if (!checkEmpty(allst_d)) {str=str+'Student: '+'-DOB Required\r\n';}
		    else if (!checkDate(allst_d)) {str=str+'Student: '+'-DOB format MM/DD/YYYY\r\n';}
			else {
		         var y1=allst_d.value.substr(6,4);
			     if ( y1 > y) y=y1;
		         }
		if (!checkEmpty(allst_i1)) {str=str+'Student: '+'-Program Name Required\r\n';}
		if (!checkEmpty(allst_l1)) {str=str+'Student: '+'-Lesson Length Required\r\n';}
		
  }
  
   if( document.getElementById('contactinfo').style.display == 'block')
   {
//check address
      var res= checkEmpty(formobj.elements['street'])* checkEmpty(formobj.elements['town'])*checkEmpty(formobj.elements['zip']);
	  if ( !res) {str=str+'-Full Address Required\r\n';}
	  
//check emergency
    var th=checkEmpty(formobj.elements['htel']);
	var td=checkEmpty(formobj.elements['ctel']);
	if ( !th && !td)
	    {
		str=str+'-At least one Emrgency Contact Phone Required\r\n';
		}
	else
	   {
	     if ( th && !normalizeTel(formobj.elements['htel'], false)){ str=str+'-Invalid Home Phone\r\n';}
		 if ( td && !normalizeTel(formobj.elements['ctel'], false)){ str=str+'-Invalid Cell Phone\r\n';}
	   }
	   
   		
	th=checkEmpty(formobj.elements['hemail']);
	td=checkEmpty(formobj.elements['demail']);
	if ( !th && !td)
	    {
		 str=str+'-At least one Emrgency Email Required\r\n';
		}
	else
	   {
	     if ( th && !ValidateEmail(formobj.elements['hemail'], false)){ str=str+'-Invalid Home Email\r\n';}
		 if ( td && !ValidateEmail(formobj.elements['demail'], false)){ str=str+'-Invalid Day Email\r\n';}
	   }
	   
	   // check source for summer
	   
	   if ( formobj.elements['source'] != null && !checkEmpty(formobj.elements['source']))
	     {
			    str=str+'-How did you find about us- Required\r\n';
         }		  
   }//end contact info
	
	//check Guardians

	 //var subDate=new Date();  
     //if ((subDate.getFullYear() - y) < 19)
	  if( document.getElementById('guardians').style.display == 'block')
     {// Guardians required
	 
	   if ( !(checkEmpty(formobj.elements['lg1']) && checkEmpty(formobj.elements['lg1_tel']) || 
	          checkEmpty(formobj.elements['lg2']) && checkEmpty(formobj.elements['lg2_tel'])) )
			  {
			    str=str+'-At least one Legal Guardian Contact Info Required\r\n';
			  }
     }	
	 
	 //signature
	 if ( !checkEmpty(formobj.elements['signature']))
	     {
			    str=str+'-Name of the person submitting an application- Required\r\n';
         }
	var ff= document.getElementById('fallfee');		 
	if ( (ff != null) && 
		 (ff.style.display == 'block') && !checkEmpty(formobj.elements['checknum']))
	     {
			    str=str+'-Check Number- Required\r\n';
         }
		 
	// check weeks in the summer
	var weeks=formobj.elements['weeks[]'];	
	if ( weeks != null)
	{
		var isch=0;
		for (var i=0; i<weeks.length; i++)
	  {
		  if ( weeks[i].checked) isch++;
	  }
	  if (isch == 0) str=str+'-Availability Week(s) - Required\r\n';
	}
	
	if (str != '') 
	  {
	  alert(str); 
	  return false;
	  }	
	  		
			
	 
	if (!checkSlots(formobj))
           return false;	   

return true;
}
