﻿// JScript File
//Global
    var TimeMorn,TimeNoon,TimeEvening;
    var rdoWeek,rdoSat,rdoSun;
    var rdoYes,rdoNo;
    var HowGymboree ;
    var FirstName,LastName,Address1,Address2,Mobile,chkMail,ddlTitle,STDCode,Phone,Email;
    var FirstChiName,FirstChiDOBDay,FirstChiDOBMonth,FirstChiDOBYear,FirstChiGen;
    var ThirdChiName,ThirdChiDOBDay,ThirdChiDOBMonth,ThirdChiDOBYear,ThirdChiGen;
    var SecondChiName,SecondChiDOBDay,SecondChiDOBMonth,SecondChiDOBYear,SecondChiGen;
    var FlagAllEmpty = 1;
    var glbElement;
    var  ErrorMessage;

function ClearAll()
{
Initialize();
    FirstChiName.value = ""
    FirstChiDOBDay.value = "" 
    FirstChiDOBMonth.value = ""
    FirstChiDOBYear.value = ""
    FirstChiGen.value='Male'
    
    SecondChiName.value = "" 
    SecondChiDOBDay.value = "" 
    SecondChiDOBMonth.value = "" 
    SecondChiDOBYear.value = "" 
    SecondChiGen.value='Male'
    
    ThirdChiName.value = ""
    ThirdChiDOBDay.value = ""
    ThirdChiDOBMonth.value = ""
    ThirdChiDOBYear.value = "" 
    ThirdChiGen.value='Male'
    
    FirstName.value = "" 
    LastName.value = ""
    Address1.value = "" 
    Address2.value = "" 
    STDCode.value = "" 
    Phone.value = "" 
    Email.value = "" 
    Mobile.value = ""
    chkMail.checked=false;
    ddlTitle.value='Mr.';

    TimeMorn.value = ""
    TimeNoon.value = "" 
    TimeEvening.value = "" 

    rdoWeek.checked=false; 
    rdoSat.checked=false;  
    rdoSun.checked=false;  

    rdoYes.checked=false;  
    rdoNo.checked=false;  

    HowGymboree.value = "" 
}
function Initialize()
{
    ErrorMessage= document.getElementById('lblError')  
    ErrorMessage.innerHTML =  ""
    FirstChiName = document.getElementById('txtFirstChildrenName');
    FirstChiDOBDay = document.getElementById('ddlFirstChildrenDOBDay');
    FirstChiDOBMonth = document.getElementById('ddlFirstChildrenDOBMonth');
    FirstChiDOBYear = document.getElementById('ddlFirstChildrenDOBYear');
    FirstChiGen = document.getElementById('ddlFirstChildrenGender');
    
    SecondChiName = document.getElementById('txtSecondChildrenName');
    SecondChiDOBDay = document.getElementById('ddlSecondChildrenDOBDay');
    SecondChiDOBMonth = document.getElementById('ddlSecondChildrenDOBMonth');
    SecondChiDOBYear = document.getElementById('ddlSecondChildrenDOBYear');
    SecondChiGen = document.getElementById('ddlSecondChildrenGender');
    
    ThirdChiName = document.getElementById('txtThirdChildrenName');
    ThirdChiDOBDay = document.getElementById('ddlThirdChildrenDOBDay');
    ThirdChiDOBMonth = document.getElementById('ddlThirdChildrenDOBMonth');
    ThirdChiDOBYear = document.getElementById('ddlThirdChildrenDOBYear');
    ThirdChiGen = document.getElementById('ddlThirdChildrenGender');
    
    FirstName = document.getElementById('txtFirstName');
    LastName=document.getElementById('txtSecondName');
    Address1 = document.getElementById('txtAddress1');
    Address2 = document.getElementById('txtAddress2');
    STDCode = document.getElementById('txtSTDCode');
    Phone = document.getElementById('txtPhone');
    Email = document.getElementById('txtEmail');
    Mobile=document.getElementById('txtMobile');
    chkMail=document.getElementById('chkEmailFlag');
    ddlTitle=document.getElementById('ddlTitle');

    TimeMorn = document.getElementById('ddlMorning');
    TimeNoon = document.getElementById('ddlNoon');
    TimeEvening = document.getElementById('ddlEvening');

    rdoWeek = document.getElementById('rdoWeek');
    rdoSat = document.getElementById('rdoSat');
    rdoSun = document.getElementById('rdoSun');

    rdoYes  = document.getElementById('rdoYes');
    rdoNo = document.getElementById('rdoNo');

    HowGymboree = document.getElementById('txtHow');
}
   
//EndGlobal
function validate()
{
document.getElementById('lblError').innerHTML = ''
validateFields();
if (document.getElementById('lblError').innerHTML != '')
{
document.getElementById('lblError').innerHTML = " <b>Error message : </b> Please provide following  information - "  + document.getElementById('lblError').innerHTML.substring(1) + "."
document.getElementById('ancTop').focus();
return false;
}
}

function validateFields()
{
Initialize();
if (! Validator('Required','First Name',Trim(FirstName.value),FirstName))
{
//return false;
}
if (! Validator('Required','Address',Trim(Address1.value),Address1))
{
//return false;
}
//Phone
if (! Validator('Required','STDCode',Trim(STDCode.value),STDCode))
{
//return false;
}
else
{
if (! Validator('Required','Phone',Trim(Phone.value),Phone))
{
//return false;
}
else
{
if  (! Validator('AtLeastLength',10,Trim(STDCode.value) + Trim(Phone.value),STDCode))
{
//return false;
}
}
}

//EndPhone
if (! Validator('Required','Email',Trim(Email.value),Email))
{
//return false;
}
else
{
    if (! Validator('Email','Email',Trim(Email.value),Email))
        {
        //return false;
        }
}
//Children
if (! ValidateChildren())
{
    // return false;
}
//EndChildren
if (! Validator('Required','Choice for 9am - 12 noon',Trim(TimeMorn.value),TimeMorn))
{
//return false;
}
if (! Validator('Required','Choice for 12noon - 3 pm',Trim(TimeNoon.value),TimeNoon))
{
//return false;
}
if (! Validator('Required','Choice for 3pm - 6 pm',Trim(TimeEvening.value),TimeEvening))
{
//return false;
}

if ((TimeMorn.value ==TimeNoon.value) || (TimeEvening.value == TimeNoon.value) || (TimeEvening.value == TimeMorn.value))
{
 ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " +  "Different choices for prefered class timings"
}


if (!(rdoWeek.checked  == true || rdoSat.checked  == true || rdoSun.checked  == true ))
{
//alert("Please Enter Prefered Class Timings");
//return false;
 ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " +  "Prefered class day "
}


/*if (!(rdoYes.checked  == true || rdoNo.checked  == true  ))
{
alert("Please Enter whether you are interested in celebrating your child’s Birthday at Gymboree");
return false;
}

if (! Validator('Required','How did you hear about Gymboree classes',Trim(HowGymboree.value),HowGymboree))
{
return false;
}
*/
}
function Validator(ValidatorType, ValidatorSpecifics, ValidatorValue, theElement,ExtraString)
{
	var RegEx;
	var RegEx2;
	var myreturnvar;
	switch(ValidatorType){
		case "Required":
			if(parseInt(ValidatorValue.length) == 0){
				//alert("Please Enter " + ValidatorSpecifics);
				  ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " +   ValidatorSpecifics;
				//theElement.style.backgroundColor = "red";
				//setFocus(theElement);
				myreturnvar = false;
			}
			else {
				myreturnvar = true;
			}
		break;
		case "ExactLength":
			if(parseInt(ValidatorValue.length) !== parseInt(ValidatorSpecifics)){
				//alert("This field must be exactly " + ValidatorSpecifics + " characters long");
				  ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " + "This field must be exactly " + ValidatorSpecifics + " characters long"
				setFocus(theElement);
				myreturnvar = false;
			}
			else{
				myreturnvar = true;
			}
		break;
		case "AtLeastLength":
			if(parseInt(ValidatorValue.length) < parseInt(ValidatorSpecifics)){
				//alert("This phone number must be at least " + ValidatorSpecifics + " characters long");
				//setFocus(theElement);
					  ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " + "Phone number must be at least " + ValidatorSpecifics + " characters long"
				myreturnvar = false;
			}
			else{
				myreturnvar = true;
			}
		break;
	    case "Phone":
			if(!ValidatorValue){
				// Allow blank
				myreturnvar = true;
			}
			else{
                  if(checkPhone(ValidatorValue))
                  {
				    myreturnvar = true;
			      }
			      else
			      {
			  	    theElement.className = "keydown";
				    //alert("You have not entered a valid telephone number. Please enter a telephone number, area code first.");
				    //setFocus(theElement);		
				    		  ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " + "You have not entered a valid telephone number. Please enter a telephone number, area code first."
				    myreturnvar = false;
			      }
			}
		break;
	
		case "Email":
			var strMail = ValidatorValue;
			if(!strMail){
				// Allow blank
				myreturnvar = true;
			}
			else{
			    if(checkEmail(strMail)){
					//alert("valid address");
					myreturnvar = true;
				}
				else{
					//alert("You have not entered a valid e-mail address.");
					//setFocus(theElement);
						  ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " + "Valid e-mail address."
					myreturnvar = false;
			}
			}
		break;
		
		case "Date":
	
			// Some ideas for date validation script borrowed from Sandeep V. Tamhankar (stamhankar@hotmail.com)
			// see http://www.jsmadeeasy.com/javascripts/Forms/Date%20Validation/template.htm
			if(ValidatorValue != ""){
			    var errMsg;
			    if(ValidatorSpecifics == 'DateTime'){
			      RegEx = /^(\d{1,2})(\/)(\d{1,2})(\/)(\d{2}|\d{4})(\s(\d{1,2}):(\d{2})\s(AM|PM|am|pm))?$/;
			      errMsg = "Invalid date. Please enter a date in the format ''MM/DD/YYYY''\n" +
			        "or with time, such as ''MM/DD/YYYY 12:00 AM''";
			    }
			    else{
				  RegEx = /^(\d{1,2})(\/)(\d{1,2})(\/)(\d{2}|\d{4})$/;
				  errMsg = "Valid date of birth for " + ValidatorSpecifics;
				}
				var strDate = ValidatorValue;
				var arrDate = strDate.match(RegEx);
				if(arrDate == null){
				  	//alert(errMsg);
					//setFocus(theElement);		
						  ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " + errMsg	;
					myreturnvar = false;
				}
				else {
					var month = arrDate[1];
					var day = arrDate[3];
					var year = arrDate[5];
					var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
					if (month < 1 || month > 12) { // check month range
						//alert("Month must be between 1 and 12.");
						//setFocus(theElement);		
							  ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " + "Month must be between 1 and 12."		
						myreturnvar = false;
					}
					else if (day < 1 || day > 31) {
						//alert("Day must be between 1 and 31.");
							  ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " + "Day must be between 1 and 31."
						//setFocus(theElement);				
						myreturnvar = false;
					}	
					else if ((month==4 || month==6 || month==9 || month==11) && day==31) {
						var strMonth;
						
						switch(month){
							case "04":
								strMonth = "April";
							break;
							case "06":
								strMonth = "June";
							break;
							case "09":
								strMonth = "September";
							break;
							case "11":
								strMonth = "November";
							break;
						}
						//alert("There are not 31 days in the month of " + strMonth + "!");
						//setFocus(theElement);	
							  ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " + "There are not 31 days in the month of " + strMonth + ""			
						myreturnvar = false;
					}
					else if (month == 2 && (day > 29 || (day == 29 && !isleap))) { // check for february 29th
						//alert("February " + year + " doesn't have " + day + " days!");
							  ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " + "February " + year + " doesn't have " + day + " days"
						//setFocus(theElement);					
						myreturnvar = false;
					}
					else {
						//alert('valid date!')
						myreturnvar = true;
					}					
					if((ExtraString == "Future" || ExtraString == "Today or Later" ) && myreturnvar != false){
	
						/* Take apart the input date, to make sure the year is in the same format as the one
							 we're comparing it to */
						var vvDate = new Date(ValidatorValue);
						var eday = vvDate.getDate();
						var emonth = vvDate.getMonth() + 1;
						//var eyy = vvDate.getYear();  // returns 106 in Firefox
						var eyy = parseInt(year);
						//alert(eyy);
						var eyear = (eyy < 1000) ? eyy + 2000 : eyy;
						var theInputDate = emonth + "/" + eday + "/" + eyear;

						var sDate = new Date();
						var eDate = new Date(theInputDate);
						//alert("today's date: " + sDate);
						//alert("date you want: " + eDate);

						var dateDiff = eDate - sDate
						//alert(dateDiff);
						var daysApart = Math.round(dateDiff/86400000);
						//alert(daysApart);

						if(daysApart >= 0 && ExtraString == "Future"){
							//alert("Date must be in the future!");
								  ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " + "Date must not  be  future date or today date"
							//setFocus(theElement);
							myreturnvar = false;
						}
						else if(daysApart < -1 && ExtraString == 'Today or Later'){
							// the rounding breaks it if it's after noon, so need to allow for daysApart of -1.
							//alert("Date must be today or later!");
							//setFocus(theElement);
								  ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " + "Date must be today or later!"
							myreturnvar = false;
						}
						else{
							myreturnvar = true;
						}
					}
				}
			}
			else {
				//alert("empty, ok");
				myreturnvar = true;
			}
			//alert(myreturnvar);	//debugging
		break;
		default:
			//alert("error");
				  ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " + "error"
	}
	return myreturnvar;
}


/* Set delay in focus to compensate for IE bug which prevents focus in onChange event.
	see: http://www.xs4all.nl/~sbpoley/webmatters/formval.js */
function setFocusDelayed(){
	glbElement.className="keydown";
	glbElement.focus();
}

function setFocus(theElement){
	/* First check jscript to see if IE.
		if so, save element in global variable so value retained when routine exits */
	/*@cc_on @*/
	/*@if (@_jscript_version >= 4)
		glbElement = theElement;
		setTimeout( 'setFocusDelayed()', 100 );
	@else @*/
		//Not IE, don't need delay...
		theElement.className="keydown";
		theElement.focus();
	/*@end @*/
}

function IsNumeric(sText){
  sText = trim(sText);
  var ValidChars = "0123456789";
  var IsNumber=true;
  var Char;

  for(i=0; i < sText.length && IsNumber == true; i++){
    Char = sText.charAt(i);
	if(ValidChars.indexOf(Char) == -1){
      IsNumber = false;
	}
  }
  return IsNumber;
}
function calonKey_Int(event)
 {
            if(navigator.appName=="Microsoft Internet Explorer")
            {
               if (!((window.event.keyCode >= 48) && (window.event.keyCode <= 57)))
               {
                   window.event.keyCode = null;
               }
            }
            else
            {
               if (!((event.which >= 48) && (event.which <= 57) || (event.which == 8) ||(event.keyCode == 46) || (event.which == 37) || (event.keyCode == 9)))
               {
                  event.preventDefault();
               }
            }
 }
 
function Trim(s)
 {
            while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r'))
            {
                s = s.substring(1,s.length);
            }
            while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r'))
            {
                s = s.substring(0,s.length-1);
            }
            return s;
        }


function checkEmail(strMail)
{
  var RegEx = /^[a-zA-Z0-9][\w\._\-]*[a-zA-Z0-9]\@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
  if(strMail.match(RegEx)){
    return true;
  }
  else{
    return false;
  }
}

function ValidateChildren()
 {

    
   if (!(Trim(FirstChiName.value) == '' && Trim(FirstChiDOBDay.value) == '' && Trim(FirstChiDOBMonth.value) == '' &&  Trim(FirstChiDOBYear.value) == '' ))
   {
    FlagAllEmpty =0;
        if (Trim(FirstChiName.value) == '')
        {//FirstChiName.focus();
           // alert("Please enter First child name");
           	  ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " + "First child name"
            return false;
        }//    var FirstChiName,FirstChiDOBDay,FirstChiDOBMonth,FirstChiDOBYear;
        if (!(Validator("Date", 'first child', FirstChiDOBMonth.value + '/' + FirstChiDOBDay.value + '/' + FirstChiDOBYear.value , FirstChiDOBDay,'Future')))
        { 
         
          return false;
        }
    }
   if (!(Trim(SecondChiName.value) == '' && Trim(SecondChiDOBDay.value) == '' && Trim(SecondChiDOBMonth.value) == '' &&  Trim(SecondChiDOBYear.value) == '' ))
   {
    FlagAllEmpty =0;
        if (Trim(SecondChiName.value) == '')
        {
           // alert("Please enter Second child name");
            	  ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " + "Second child name"
            //SecondChiName.focus();
            return false;
        }//    var SecondChiName,SecondChiDOBDay,SecondChiDOBMonth,SecondChiDOBYear;
        if (!(Validator("Date", 'second child', SecondChiDOBMonth.value + '/' + SecondChiDOBDay.value + '/' + SecondChiDOBYear.value , SecondChiDOBDay,'Future')))
        { 
         
          return false;
        }
    }
   if (!(Trim(ThirdChiName.value) == '' && Trim(ThirdChiDOBDay.value) == '' && Trim(ThirdChiDOBMonth.value) == '' &&  Trim(ThirdChiDOBYear.value) == '' ))
   {
    FlagAllEmpty =0;
        if (Trim(ThirdChiName.value) == '')
        { // ThirdChiName.focus();
           // alert("Please enter Third child name");
           	  ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " + "Third child name"
            return false;
        }//    var ThirdChiName,ThirdChiDOBDay,ThirdChiDOBMonth,ThirdChiDOBYear;
        if (!(Validator("Date", 'third child', ThirdChiDOBMonth.value + '/'+ ThirdChiDOBDay.value + '/' + ThirdChiDOBYear.value , ThirdChiDOBDay,'Future')))
        { 
        
          return false;
        }
    }

  
    if (FlagAllEmpty == 1)
    {
    //alert("Please enter atleast one child information ");
    	  ErrorMessage.innerHTML = ErrorMessage.innerHTML + ", " + "Atleast one child information "
    return false;
    }
    return true;
 }

// end validation scripts
