/**************************************************************************
Project Name			:	GMMC
Module Name		:	Enrollment
Program Name		:	commonJs.js
Program Version		:	1.0.0
Program Description	:	Validates the enrollment form fields 
Called From		:	join_online.jsp
Calling			:	None
Modification History	:
---------------------------------------------------------------------------------------
Author   Date (MM/DD/CCYY)      Version     Modification Details   Change Request Reference
--------------------------------------------------------------------------------------

*********************************************************************************/

// Status bar messages

//SOC AGENCY ENROLLMENT CHANGES 
var varAgencyCodeMsg       		   	 		= "Please enter the Agency code";
var varAgentNameMsg       					="Please enter the Agent Name";
var varInsurancePolicyNumberMsg				="Please enter the Insurance Policy Number";
//EOC AGENCY ENROLLMENT CHANGES 

// GMMC Cluster 2007: following statement added:
var varMeemicInsurancePolicyNumberMsg		="Please enter the MEEMIC Insurance Policy Number";
var varPromotionCodeMsg 					="Please enter the Promotion Code";
var varFirstNameMsg 						= "Please enter the first name";
var varMiddleInitialMsg 					= "Please enter the middle initial";
var varLastNameMsg 							= "Please enter the last name";
var varAddressMsg 							= "Please enter the address";
var varCityMsg 								= "Please enter the city";
var varStateMsg 							= "Please enter the state";
var varZipCodeMsg 							= "Please enter the zip code";
var varDeliveryRouteMsg 					= "Please enter the Delivery Route";

var varDayPhoneMsg 							= "Please enter the day phone number";
var varEvePhoneMsg 							= "Please enter the evening phone number";
var varEmailMsg 							= "Please enter the email address";

var varAmtReceivedMsg 						= "Please enter the amount received";
var varNameOnCcMsg 							= "Please enter the name as it appears on the credit card";
var varCcTypeMsg 							= "Please select the credit card type";
var varCcNumberMsg 							= "Please enter the credit card number";
var varStartDateMsg 						= "Please enter the start date";
var varExpMonthMsg 							= "Please select an expiry month";
var varExpYearMsg 							= "Please select an expiry year";
var varCvv2Msg								="Please enter the card security code";
var varAutorenewCheckBoxMsg 				= "Please select the autorenew option";
var varSpouseFirstNameMsg 					= "Please enter the first name of spouse";
var varSpouseMiddleInitialMsg				= "Please enter the middle initial of spouse";
var varSpouseLastNameMsg 					= "Please enter the last name of spouse";
var varBirthDateMsg 						= "Please enter the birth date";

var varVinMsg 								= "Please enter the VIN";
var varYearMsg 								= "Please enter the year";
var varMakeMsg 								= "Please enter the make";
var varModelMsg 							= "Please enter the model";
var varMemberNumberMsg 						= "Please enter the membership number";	

var varOldPasswordMsg						="Please enter an old password";
var varNewPasswordMsg						="Please enter the new password";
var varNewConfirmPasswordMsg				="Please enter the confirm new password";
var varReminderQuestion						="Please enter the reminder question";
var varReminderAnwer						="Please enter the answer for reminder question";

var futurePolicyStartMonthMsg               ="Please enter the future policy start month";
var futurePolicyStartDayMsg              	="Please enter the future policy start day";
var futurePolicyStartYearMsg               	="Please enter the future policy start year";

var mapArea1Msg               			  	="Please enter the source city or state or zip";
var mapArea2Msg               			  	="Please enter the destination city or state or zip";
var descriptionMsg               		  	="Please enter the description";

var paymentPlanMsg 							= "Please select the payment plan";
var mapRegionMsg 							= "Please select the Map region";
  
  
var field_length=0;

function submitMe() {
	
	      document.forms[0].actionID.value = "retrieve";
	      document.forms[0].target="main";
	      document.forms[0].action="signup.jsp"
	      document.forms[0].submit();
	      //childform.close();
}

function isEmpty(formField){
	if(formField!=null && formField.value.length != 0){
        return false;
    }
    return true;
}

function validatePasswords(formName) {
	if(formName.fromPageHV.value=="Login") {
		if(validateNewPassword(formName.newPasswordTextField) && validateConfirmPassword(formName.confPasswordTextField) && comparePassword(formName.newPasswordTextField, formName.confPasswordTextField)) {	
			return true;
		}
	}
	else {
		if(validateOldPassword(formName.oldPasswordTextField) && validateNewPassword(formName.newPasswordTextField) && validateConfirmPassword(formName.confPasswordTextField) && comparePassword(formName.newPasswordTextField, formName.confPasswordTextField)) {
			return true;
		}
	}
	return false;
}

function changePassword(formName) {
	if(formName.fromPageHV.value=="Login") {		
		document.forms[0].actionID.value = "loginChangePassword";
		//document.forms[0].target = "main";
		document.forms[0].action = "memberservices";
		document.forms[0].submit();
		//childform.close();
	}
			
		
	else if (formName.fromPageHV.value=="Welcome"){
		document.forms[0].actionID.value = "welcomeChangePassword";	
		//document.forms[0].target = "main";
		document.forms[0].action = "memberservices";
		document.forms[0].submit();
		//childform.close();
	}
	else if(formName.fromPageHV.value=="AccountInfoPage") {
		document.forms[0].actionID.value = "accountInfoChangePassword";	
		//document.forms[0].target = "main";
		document.forms[0].action = "memberservices";
		document.forms[0].submit();
		//childform.close();
	}
	
}	

function validateEntries(formName) {
	
		if( validateDSUUserId(formName.userIdTextField) && validateDSUPassword(formName.passwordTextField)) {	
			return true;
		}
	
		return false;
		
}


function authenticateSupervisor(formName) {
	if(formName.fromPageHidden.value=="Cancel") {
		document.forms[0].actionID.value = "cancelPolicy";
		document.forms[0].target = "main";
		document.forms[0].action = "/com/mic/gmmc/controllers/dsuactionscontroller";
		document.forms[0].submit();
		childform.close();
	}
			
		
	else if (formName.fromPageHidden.value=="Edit"){
		document.forms[0].actionID.value = "editPolicyDetails";	
		document.forms[0].target = "main";
		document.forms[0].action = "/com/mic/gmmc/controllers/dsuactionscontroller";
		document.forms[0].submit();
		childform.close();
	}
	else if(formName.fromPageHidden.value=="Enroll") {
		document.forms[0].actionID.value = "enrollPolicy";	
		document.forms[0].target = "main";
		document.forms[0].action = "/com/mic/gmmc/controllers/dsuactionscontroller";
		document.forms[0].submit();
		childform.close();
	}
	else if(formName.fromPageHidden.value=="Enroll") {
		document.forms[0].actionID.value = "renewPolicy";	
		document.forms[0].target = "main";
		document.forms[0].action = "/com/mic/gmmc/controllers/dsuactionscontroller";
		document.forms[0].submit();
		childform.close();
	}
	else if(formName.fromPageHidden.value=="Enroll") {
		document.forms[0].actionID.value = "reinstatePolicy";	
		document.forms[0].target = "main";
		document.forms[0].action = "/com/mic/gmmc/controllers/dsuactionscontroller";
		document.forms[0].submit();
		childform.close();
	}
	
}	
/*

function authenticateSupervisor(formName) {
	
	alert("1" + formName);
	
	if (validateUserId(formName.userIdTextField) && validateSupervisorPassword(formName.passwordTextField)) {
		alert("2");
		formName.actionID.value = "super_authentication";
		alert("3");
		formName.action = "/com/mic/gmmc/controllers/dsuactionscontroller";
		alert("4");
		formName.submit();
		alert("5");
	}

}
*/

function submitMe1(){
	opener.submitMe2();
}	


function submitJsp(pageUrl) {
	document.forms[0].actionID.value='';
	document.forms[0].actionPage.value = pageUrl;
	document.forms[0].submit();
}

/*
  BOC-----added for the requirement R17& R22 by arijit 
*/
function blurField(fieldName){
	fieldName.blur();
}
function blurForYearField(fieldName){
	if(navigator.appName!="Microsoft Internet Explorer"){
		blurField(fieldName);
	}		
	else{
		fieldName.disabled=true;
	}
}
function blurForMakeField(fieldName){
	if(navigator.appName!="Microsoft Internet Explorer"){
		blurField(fieldName);
	}		
	else{
		fieldName.disabled=true;
	}
}
function blurForModelField(fieldName){
	if(navigator.appName!="Microsoft Internet Explorer"){
		blurField(fieldName);
	}		
	else{
		fieldName.disabled=true;
	}
}
/*
  EOC-------added for the requirement R17& R22 by arijit 
*/
var alphaNumericWithHiphen  = /[^A-Za-z0-9_ -]/;   
var alphaNumeric            = /[^A-Za-z0-9_]/;
var alphabetic              = /[^A-Za-z_]/;
var numeric                 = /[^0-9_]/;

var dummyHelp               = "";
var previousDateHelp        = "Click here for previous date.";
var nextDateHelp            = "Click here for next date.";
var calendarHelp            = "Click here to get the calendar.";
var lastField;

/*
* Returns true if the field value is alphabetic
*/
function isAlphabetic(formField){
    return ! alphabetic.test(formField.value);
}

/*
* Returns true if the field value is alpha numeric
*/
function isAlphaNumeric(formField){
    return ! alphaNumeric.test(formField.value);
}
/*
* Returns true if the field value is alpha numeric with hipen and space
*/
function isAlphaNumericWithHiphen(formField){
    return ! alphaNumericWithHiphen.test(formField.value);
}

/*
* Returns true if the field value is numeric
*/
function isNumeric(formField){
    return ! numeric.test(formField.value);
}

/*
* Displays a message in the status bar
*/
function showHelp(formField, message){
    window.status = message;
    lastField = formField;
    return true;
}

/*
* Alerts an error message and sets the focus to the field passed
* Do NOT use this method for listbox as select() method is invalid for listbox
*/
function showError(formField, message){
    alert(message);
    formField.focus();
    formField.select();
    return true;
}

/*
* Sets the focus on the element specified
*/
function setFocus(formName, elementName){
    if(elementName == "null"){
        return true;
    }

    formName.elements[elementName].focus();
    setDefaults(formName);

    return true;
}

/*
* Resets the form and sets the focus on the element specified
*/
function resetForm(formName, elementName){
    formName.reset();
    setFocus(formName, elementName);
    return false;
}

/*
* Prints the page
*/
function printPage(){
    self.print();
    return true;
}

/*
* Returns true id the field contains a valid integer
*/
function isInteger(formField){
    if(isEmpty(formField)){
        return false;
    }
    
    var temp = formField.value;
    if(temp != parseInt(temp, 10)){
        return false;
    }
    return true;
}

/*
* Returns true id the field contains a valid float number
*/
function isFloat(formField){
    if(isEmpty(formField)){
        return false;
    }

    var temp = formField.value;
    if(temp != parseFloat(temp)){
        return false;
    }
    return true;
}

/*
* Return true if the field value is a positive number
*/
function isPositive(formField){
    if(!isFloat(formField)){
        return false;
    }
    
    var temp = parseFloat(formField.value);
    if(temp < 0){
        return false;
    }
    return true;
}

/*
* Returns true if the field value is a positive integer
*/
function isPositiveInteger(formField){
    if(isInteger(formField) && isPositive(formField)){
        return true;
    }
    return false;
}

/*
* Returns true if the field value is a positive float
*/
function isPositiveFloat(formField){
    if(isFloat(formField) && isPositive(formField)){
        return true;
    }
    return false;
}

/*
* Returns true if the field value is within the lower and upper limits
*/
function inRange(formField, lowerLimit, upperLimit){
    var fieldValue = parseFloat(formField.value);
    var minValue   = parseFloat(lowerLimit); 
    var maxValue   = parseFloat(upperLimit);
        
    if(fieldValue < minValue || fieldValue > maxValue){
        return false;
    }
    return true;
}



/*
* Trims the leading and trailing spaces
*/
function trim(formField){
    fieldValue = formField.value;
    
    if(fieldValue == "" || fieldValue.indexOf(" ", 0) == -1){
        return true;
    }

    var max = fieldValue.length;
    var end = fieldValue.length;

    var temp;
    for(i=0;1<max;i++){
        temp = fieldValue.substring(0,1);
        if(temp == " "){
            fieldValue=fieldValue.substring(1,end);
            end = fieldValue.length;
        }
        else{
            break;
        }
    }

    end = fieldValue.length;
    for(var i=max; i>0; i--){
        temp = fieldValue.substring(end-1,end);
        if(temp == " "){                
            fieldValue=fieldValue.substring(0,end-1);
            end = fieldValue.length;
        }
        else{
            break;
        }
    }

    formField.value=fieldValue;
    return true;
}

/*
* Increments the date in the field by the amount specified
*/
function changeDate(formField,amount){
    var strday;
    var strmonth; 
            
    if ((formField.value=="") && (amount==0)){
     return false;
    }    
    
    if(formField.value){
        myDate=new Date(formField.value);
    }
    else{
        myDate=new Date();
    }
 
    m = myDate.getMonth();
    d = myDate.getDate();
    y = myDate.getFullYear();
    myDate1 = new Date(Date.parse((m+1)+"/"+(d+amount)+"/"+y));
    mm = myDate1.getMonth();
    dd = myDate1.getDate();
    var txtyy=formField.value.substring((formField.value.lastIndexOf('/')+1),formField.value.length);
    if(txtyy.length==2) {  
      yy = myDate1.getFullYear()+100;
    }
    else if(txtyy.length==1){
      yy = myDate1.getFullYear()+100;
    } 
    else if(txtyy.length==3){
      yy = (2000+parseInt(txtyy,10));
      
    } 
    else{
       yy=myDate1.getFullYear();
    }  
    
     mm=mm+1;
    if(mm  < 10){
            strmonth = "0"+mm;
        }else{
            strmonth = ""+mm;
        }
         if(dd < 10){
            strday = "0"+dd;
        }else{
            strday = ""+dd;
        }
    formField.value = strmonth+"/"+strday+"/"+yy;
    
}

/*
* Pads zero at the end of a float field
*/
function padZero(formField){
    var fieldValue =  formField.value;
    
    if(isEmpty(formField)){
        formField.value = "0.00";
        return true;
    }
        
    var temp = parseFloat(fieldValue);
    if(temp != fieldValue){
        return false;
    }
    
    temp = parseInt(fieldValue, 10);
    if(temp == fieldValue){
        formField.value = temp + ".00";
        return true;
    }
    
    var decimalPlace = fieldValue.indexOf('.');
    if(decimalPlace == -1){
        formField.value = temp + ".00";
        return true;
    }
    
    temp = fieldValue.substring(decimalPlace+1);
    if(temp.length == 1){
        formField.value = fieldValue + "0";
        return true;
    }
    return true;
}

/*
* Checks or Unchecks all the checkbox
*/
function checkAll(formName, fieldName, count, status){
    var temp = "";
    for(i=0;i<count;i++){
        temp = eval('formName.' + fieldName + i);
        if(temp != null){
            temp.checked = status;
        }
    }
}

/*
* Returns true if the Start date is before or same as End Date
*/
function isDatesValid(fromDate, toDate){
    var fromDateValue = fromDate.value;
    
    var fromMonth = fromDateValue.substring(0, fromDateValue.indexOf('/'));
    fromDateValue = fromDateValue.substring(fromDateValue.indexOf('/')+1);
    var fromDay = fromDateValue.substring(0, fromDateValue.indexOf('/'));
    fromDateValue = fromDateValue.substring(fromDateValue.indexOf('/')+1);
    var fromYear = fromDateValue;
    var fromDate = new Date(Date.parse((fromMonth)+"/"+(fromDay)+"/"+(fromYear)));

    var toDateValue = toDate.value;
    
    var toMonth = toDateValue.substring(0, toDateValue.indexOf('/'));
    toDateValue = toDateValue.substring(toDateValue.indexOf('/')+1); 
    var toDay = toDateValue.substring(0, toDateValue.indexOf('/'));
    toDateValue = toDateValue.substring(toDateValue.indexOf('/')+1);
    var toYear = toDateValue;
    var toDate = new Date(Date.parse((toMonth)+"/"+(toDay)+"/"+(toYear)));
    
    if(fromDate <= toDate){
        
        return true;
    }
    return false;
}

/*
* Positions the cursor in the next editable field. 
* - Next field if TAB key is pressed.
* - Previous field is SHIFT+TAB key is pressed.
*/
function reFocus(thisField, previousField, nextField){
    if(lastField == null){
        nextField.focus();
        return true;
    }
    
    if(lastField.name != nextField.name){
        nextField.focus();
        return true;
    }
    
    if(lastField.name != previousField.name){
        previousField.focus();
        return true;
    }

    return true;
}

/*
* Pads a leading zero to the time field
*/
function padLeadingZero(formField){
    var temp = parseInt(formField.value, 10);
    if(formField.value.length < 2 && temp <= 9){
        formField.value = "0" + formField.value;
    }
    return true;
}

/*
* Sets the action ID, validates the form and submits it.
*/
function submitForm(formName, actionID){
    formName.actionID.value = actionID;

    // Return true if the action was initiated from the Navigation Bar
    if(isEmpty(formName.screenID)){
        formName.submit();
    }
    
    if(validate(formName, actionID)){
        formName.submit();
    }
    return false;       
}

/*
* Sets the two date fields to the first and last day of the current month
*/
function setDates(fromDateField, toDateField){
    myDate=new Date();
    m=myDate.getMonth();
    d=1;
    y=myDate.getFullYear();
    startDate=m+1+"/"+d+"/"+y

    if(fromDateField != "null"){
        fromDateField.value = startDate;
    }

    myDate1=new Date(Date.parse((m+2)+"/"+(d-1)+"/"+y));
    mm=myDate1.getMonth();
    dd=myDate1.getDate();
    yy=myDate1.getFullYear();
    endDate=mm+1+"/"+dd+"/"+yy;

    if(fromDateField != "null"){
        toDateField.value = endDate;
    }
    
    return true;
}

/*
* Sets the current date in the date field
*/
function setCurrentDate(dateField){
    myDate=new Date();
    m=myDate.getMonth();
    d=myDate.getDate();
    y=myDate.getFullYear();
    today=m+1+"/"+d+"/"+y

    if(dateField != "null"){
        dateField.value = today;
    }
}

/*
* Sets the current functionality
*/
function submitNavigationLink(formName, parentFunction, childFunction, actionID){
    formName.screenID.value = '';
    formName.rootFunctionality.value = parentFunction;
    formName.functionality.value = childFunction;
    submitForm(formName, actionID);
}

/*
* Validates a date - assumes that a valid date will be in mm/dd/ccyy format
*/
function isDate(lcl_s_text,lcl_s_format,lcl_s_monthaschar){


var arr_formats=new Array(1);
arr_formats[0]="mdy";
var lcl_b_monthaschar=false;

if(lcl_s_format!=null)
    arr_formats[0]=lcl_s_format==""?"mdy":lcl_s_format.toLowerCase();//removed trim

if(lcl_s_monthaschar!=null)
    lcl_b_monthaschar=lcl_s_monthaschar==""||lcl_s_monthaschar.toLowerCase()!="true"?false:true; //removed trim
lcl_s_text=lcl_s_text;
var lcl_n_prevcentury=1900;
var lcl_n_nextcentury=2000;
var lcl_s_start_year=1900;
var lcl_s_end_year=2050;
var lcl_n_yeartrans=70;  

var lcl_s_separators=/\/|\\|\||-|`|~|_|\.|:|;| /;
var lcl_s_notallowed=/(\/|\\|\||-|`|~|_|\.|:|;| ){2,}/;
if(0<=lcl_s_text.search(lcl_s_notallowed)) return false;
var arr_months=["january","february","march","april","may","june","july","august","september","october","november","december"];

var lcl_b_yearin4digs=true;     

var lcl_s_alphanum=/[A-Za-z0-9]/;
var arr_date=new Array(3);
var lcl_n_index=lcl_s_text.search(lcl_s_separators);
var lcl_s_tempformat="error";
var j=0;
for(i=0;i<2;i++)
{
var lcl_n_indexsep=lcl_s_text.search(lcl_s_separators);

    if(!(lcl_n_indexsep<=0 || lcl_n_indexsep==lcl_s_text.length-1))   //starts with or ends with or does not contain separator
    {
    arr_date[i]=lcl_s_text.substring(0,lcl_n_indexsep);
    }
lcl_s_text=lcl_s_text.substring(lcl_n_indexsep,lcl_s_text.length);
var lcl_n_indexdig=lcl_s_text.search(lcl_s_alphanum);


    if(!(lcl_n_indexdig<0))   
    {
    lcl_s_text=lcl_s_text.substring(lcl_n_indexdig,lcl_s_text.length);
    }
}
arr_date[i]=lcl_s_text;
var lcl_b_onlynos=!isNaN(arr_date[0])&&!isNaN(arr_date[1])&&!isNaN(arr_date[2])?true:false;

if(arr_date[0]==null||arr_date[1]==null||arr_date[2]==null||arr_date.length!=3) return false;
else        //check if array holds valid dates
{
arr_date[0]=Math.abs(arr_date[0]);
arr_date[1]=Math.abs(arr_date[1]);
arr_date[2]=Math.abs(arr_date[2]);
    for(i=0;i<arr_formats.length;i++)
    {
    lcl_s_format=arr_formats[i];
    var lcl_s_minformat=lcl_s_format.indexOf("m");
    var lcl_s_dinformat=lcl_s_format.indexOf("d");
    var lcl_s_yinformat=lcl_s_format.indexOf("y");

        if(isNaN(arr_date[lcl_s_minformat])&&lcl_b_monthaschar)
        {

        var lcl_s_testmonth=arr_date[lcl_s_minformat].toLowerCase();

            if(isNaN(arr_date[lcl_s_dinformat])||isNaN(arr_date[lcl_s_yinformat])) return false;
        var lcl_n_monthindex=0;
            for(j=0;j<arr_months.length;j++)
            {
            var lcl_s_firstchars=arr_months[j].substring(0,lcl_s_testmonth.length);
            var lcl_s_validchars=new RegExp("^"+lcl_s_firstchars);

                if(lcl_s_validchars.test(lcl_s_testmonth)) 
                {
                lcl_n_monthindex=j+1
                arr_date[lcl_s_minformat]=lcl_n_monthindex;
                break;
                }
            }

        }
        else lcl_n_monthindex=lcl_b_onlynos?arr_date[lcl_s_minformat]:0;

    var lcl_n_year=parseInt(Math.abs(arr_date[lcl_s_yinformat]));
    var lcl_s_tempyear=""+lcl_n_year;

    if(lcl_b_yearin4digs&&lcl_s_tempyear.length!=4) return false;
    if(lcl_s_tempyear<lcl_s_start_year||lcl_s_end_year<lcl_s_tempyear) return false;

    if(!isNaN(lcl_n_year))
    {

        if(lcl_n_yeartrans<=lcl_n_year&&lcl_n_year<100) 
        lcl_n_year+=lcl_n_prevcentury;

        else if(lcl_n_year<lcl_n_yeartrans&&0<=lcl_n_year) lcl_n_year+=lcl_n_nextcentury;

             else if(lcl_s_tempyear.length!=4)return false;
    arr_date[lcl_s_yinformat]=lcl_n_year;
    }
    else continue;
    
    var lcl_n_day1=arr_date[lcl_s_dinformat];
    var lcl_n_month1=lcl_n_monthindex;
    var lcl_n_year1=arr_date[lcl_s_yinformat];
    var lcl_s_newdate1=lcl_n_month1+"/"+lcl_n_day1+"/"+lcl_n_year1;
    var lcl_s_newdate2=new Date(lcl_s_newdate1);
    //check if given date and output dates are same
    var lcl_n_day2=lcl_s_newdate2.getDate();
    var lcl_n_month2=lcl_s_newdate2.getMonth()+1;
    var lcl_n_year2=parseInt(Math.abs(lcl_s_newdate2.getYear()));

if(2000<=lcl_n_year2) lcl_n_year2-=1900;
    lcl_n_year2+=lcl_n_prevcentury;
        if(""+lcl_n_day1==""+lcl_n_day2&&""+lcl_n_month1==""+lcl_n_month2&&lcl_n_year1==lcl_n_year2) 
        {
        lcl_s_tempformat=arr_formats[j];
        return true
        }
    }
}
return false;
}

var reDate=/(^[0-9]+)\/+([0-9]+)\/+([0-9]+)$/

function isDateMDY(text)
 {

  var sun = text.value;
  var i;
  var a = new Array();
  var b,c;
  var x=0;

  if (reDate.test(text.value))                          // Check whether the value entered is
         { newstr = sun.split(reDate,"$1,$2,$3");       // in the format specified
           var mm_from1=RegExp.$1;                      // using Regular Expressions.
           var dd_from1=RegExp.$2;
           var yy_from1=RegExp.$3;
         }
   else
     { 
      text.focus(); return false; }     // Say Invalid date if not in the format
                                                        // specified.
  if(yy_from1  < 1900 )
     {// text.select();** select on fields removed
      text.focus(); return false; }

  if(!reDate.test(text.value))
     {// text.select();** select on fields removed
      text.focus(); return false; }
  else
    {
    for(i=0;i<text.value.length;i++)
    { 
      if (text.value.charAt(i) == " ")
      { 
       text.focus(); return false; }
      else
     {a[i] = text.value.charAt(i); if (a[i] == '/') {x++;} }
    }
    if (x > 2)                                          // Following piece of code is to pad '0's
      { //text.select();
         text.focus(); return false; }  // when single digit is entered for dd/mm
    else if (((a[1] == '/')  || (a[2] == '/')) && ((a[3] == '/')  || (a[4] == '/') || (a[5] == '/')))  
    {
   if ((a[1] == '/') && (a[3] == '/'))
    {
       if ((a[6] != null) && (a[7] != null))
      {text.value=("0"+a[0]+a[1]+"0"+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]);}
       else if (a[5] == null) { 
                                 text.focus(); return false; } 
       else if ((((a[6] == null) && (a[7] == null)) || ((a[6] == "") && (a[7] == ""))) && (a[4] < 4))
       {text.value=("0"+a[0]+a[1]+"0"+a[2]+a[3]+"20"+a[4]+a[5]);}
       else if ((((a[6] == null) && (a[7] == null)) || ((a[6] == "") && (a[7] == ""))) && (a[4] >= 4))
       {text.value=("0"+a[0]+a[1]+"0"+a[2]+a[3]+"19"+a[4]+a[5]);}      
       else
       { 
       text.focus(); return false; }
     }
     
  else if ((a[2] == '/') && (a[4] == '/'))
    {
       if ((a[7] != null) && (a[8] != null))
      {text.value=(a[0]+a[1]+a[2]+"0"+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]);}
       else if (a[6] == null) { 
        text.focus(); return false; }      
       else if ((((a[7] == null) && (a[8] == null)) || ((a[7] == "") && (a[8] == ""))) && (a[5] < 4))
       {text.value=(a[0]+a[1]+a[2]+"0"+a[3]+a[4]+"20"+a[5]+a[6]);}
       else if ((((a[7] == null) && (a[8] == null)) || ((a[7] == "") && (a[8] == ""))) && (a[5] >= 4))
      {text.value=(a[0]+a[1]+a[2]+"0"+a[3]+a[4]+"19"+a[5]+a[6]);}
       else
       { //text.select();   ** select on fields removed
        text.focus(); return false; }
     } 
  else if ((a[2] == '/') && (a[5] == '/'))
   {
       if ((a[8] != null) && (a[9] != null))
      {text.value=(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9]);}     
       else if (a[7] == null) {// text.select();** select on fields removed
                    text.focus(); return false; }      
       else if ((((a[8] == null) && (a[9] == null)) || ((a[8] == "") && (a[9] == ""))) && (a[6] < 4))
 {text.value=(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+"20"+a[6]+a[7]);}
       else if ((((a[8] == null) && (a[9] == null)) || ((a[8] == "") && (a[9] == ""))) && (a[6] >= 4))
       {text.value=(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+"19"+a[6]+a[7]);}
       else
       { 
       text.focus(); return false; }
   } 
 else if ((a[1] == '/') && (a[4] == '/'))
   {
       if ((a[7] != null) && (a[8] != null))
      {text.value=("0"+a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]);}
       else if (a[6] == null) {// text.select();** select on fields removed
        text.focus(); return false; }      
       else if ((((a[7] == null) && (a[8] == null)) || ((a[7] == null) && (a[8] == null))) && (a[5] < 4))
       {text.value=("0"+a[0]+a[1]+a[2]+a[3]+a[4]+"20"+a[5]+a[6]);}
       else if ((((a[7] == null) && (a[8] == null)) || ((a[7] == null) && (a[8] == null))) && (a[5] >= 4))
       {text.value=("0"+a[0]+a[1]+a[2]+a[3]+a[4]+"19"+a[5]+a[6]);}
       else
       {// text.select(); ** select on fields removed
       text.focus(); return false; }
    } 
  else { 
   text.focus(); return false; }    

  var mm = text.value.substring(0,2);
  var dd = text.value.substring(3,5);
  var yy = text.value.substring(6,10);

 if ((dd == "") || (dd == 0) || (dd > 31))
  { 
  text.focus(); return false; }
 else if((mm == "") || (mm == 0) || (mm > 12))
  { 
  text.focus(); return false; }
 else if (((yy % 100) == 0) && (mm == 2) && (dd == 29))         // Leap Year Check
           { if (((yy %400) == 0) && (mm == 2) && (dd == 29))
                return true; 
             else
             { 
             text.focus(); return false; } }
      else if (((yy % 4) == 0) && (mm == 2) && (dd == 29))
           return true;  
//  ((((yy % 4) == 0) || ((yy % 100) == 0) || ((yy %400) == 0)) && (mm == 2) && (dd == 29))
//   {return true;}
 else if (((mm == 4) || (mm == 6) || (mm == 9) || (mm == 11)) && (dd > 30)) 
  { 
   text.focus(); return false; }
 else if ((mm == 2) && (dd > 28)) 
  { 
  text.focus(); return false; }   
 else if ((mm == 2) && (dd > 29) && (((yy % 4) != 0) || ((yy % 100) != 0) || ((yy %400) != 0)))
  {// text.select();** select on fields removed
   text.focus(); return false; }
 else if (yy < 1900)
  { 
  text.focus(); return false; }
   
 }
 else
 {// text.select(); ** select on fields removed
 text.focus(); return false; }
}
return true;
}



/********************************************************************************************
* Validates the e-mail
*********************************************************************************************/
function isEmail(fieldObject){
    //lcl_s_spe_char1= /[^A-Za-z0-9_@\.]|(\.|_|@)$|[\._@][\._@]/;
    bool = true;
    if(! isEmpty(fieldObject)){
        lcl_s_a = fieldObject.value;
        lcl_s_spe_char1= /(\.|_|@)$|[\._@][\._@]|[~`!#$%^&*() +-,=:;?><\|\\\/}{\[\]\'\"]/;
        lcl_s_alpha=/[^A-Za-z]/;
        lcl_n_at_indfirst=lcl_s_a.indexOf("@");
        lcl_n_at_indlast=lcl_s_a.lastIndexOf("@");
        lcl_n_dot_indlast=lcl_s_a.lastIndexOf(".");
        lcl_s_inv_domain=lcl_s_a.substring(lcl_n_dot_indlast+1,lcl_s_a.length);
        bool = (lcl_s_spe_char1.test(lcl_s_a)||lcl_n_at_indfirst!=lcl_n_at_indlast||lcl_n_dot_indlast<lcl_n_at_indfirst||lcl_n_dot_indlast<0||lcl_n_at_indlast<0)?false:true;
    }
    return bool;
}

function openURL(url){
    window.open(url,"new1","toolbars=0,scrollbars=yes,menubars,width=700,height=520");
}

function benefits_sum(){	
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_benefits_sum.jsp';
	document.forms[0].submit();
}
function compare_maj(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_compare_maj.jsp';
	document.forms[0].submit();
}
function faqs(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_faqs.jsp';
	document.forms[0].submit();
}
function contact_us(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_contact_us.jsp';
	document.forms[0].submit();
}
function press_room(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_press_room.jsp';
	document.forms[0].submit();
}
function privacy_policy(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_privacy_policy.jsp';
	document.forms[0].submit();
}
function index_home(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/index_home.jsp';
	document.forms[0].submit();
}	
function benefits_ser(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_benefits_ser.jsp';
	document.forms[0].submit();
}	
function benefits_trip(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_benefits_trip.jsp';
	document.forms[0].submit();
}	
function partner(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_partner.jsp';
	document.forms[0].submit();
}	
function compare_fact(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_compare_fact.jsp';
	document.forms[0].submit();
}	
function press_room_rela(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_press_room_rela.jsp';
	document.forms[0].submit();
}	
function press_room_relb(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_press_room_relb.jsp';
	document.forms[0].submit();
}	
function benefits_discount(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_benefits_discount.jsp';
	document.forms[0].submit();
}	
function benefits_hotellisting(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_benefits_hotellisting.jsp';
	document.forms[0].submit();
}	
function benefits_hotelsaverules(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_benefits_hotelsaverules.jsp';
	document.forms[0].submit();
}
function your_account(){
	document.forms[0].actionPage.value = '/mic/gmmc/common/jsp/your_account.jsp';
	document.forms[0].submit();
}	
function benefits_rentalcars(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_benefits_rentalcars.jsp';
	document.forms[0].submit();
}
function benefits_travel(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_benefits_travel.jsp';
	document.forms[0].submit();
}
function benefits_autoservices(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_benefits_autoservices.jsp';
	document.forms[0].submit();
}
function join_online(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_join_online.jsp';
	document.forms[0].submit();
}	
function join_mail(){
	document.forms[0].actionPage.value = '/mic/gmmc/jsp/new_join_mail.jsp';
	document.forms[0].submit();
}	
function submitToRH(pageUrl){
	document.forms[0].actionID.value='';
	document.forms[0].action = '/com/mic/gmmc/controllers/enrollmentcontroller';
	document.forms[0].actionPage.value = pageUrl;
	document.forms[0].submit();
}	
/******* BOC for GMMC Site Redesign ******/

/* Commented out function for Memberservices URL request
function goToWelcome(){
	document.forms[0].action = 'enrollment';
	document.forms[0].actionPage.value = "/welcome.jsp";
	document.forms[0].submit();
}*/	

/* Modified function for Memberservices URL request */
function goToWelcome(){
	
	document.forms[0].action="memberzwebservice.do";
	document.forms[0].step.value="forwardToWelcome";
	document.forms[0].submit();
}	

/******* EOC for GMMC Site Redesign ******/
function setUpFromThankyou(){

	document.forms[0].action="accountsetup.do";
	document.forms[0].step.value="displayAccountSetup";
	document.forms[0].submit();
}

function Login(){
	document.forms[0].actionID.value="login";
	document.forms[0].submit();
}

function submitit1(varPageId,varLinkId){
	document.forms[0].actionID.value='';
	document.forms[0].actionPage.value='/mic/gmmc/common/jsp/join_online.jsp';
  	document.forms[0].tablePageId.value=varPageId;
  	document.forms[0].tableLinkId.value=varLinkId;
 	document.forms[0].submit();
}

function tabNext(obj,event,len,next_field) {
    if (event == "down") {        
            field_length=obj.value.length;           
	
    }
    else if (event == "up") {
        if (obj.value.length != field_length ) {
            field_length=obj.value.length;
            if (field_length == len ) {
	    next_field.focus();
		next_field.select();
            }
        }
    }
}

function signout(actionID){
	document.forms[0].action = 'memberzwebservice.do';
	document.forms[0].step.value="doSignOut";
    document.forms[0].submit();
}
