var regProgData = "";
var regUsername = "";
var regPassword = "";
var passmode = "";
var regProfileId = "";
var regDsc= "";
var redirectLoginPage ="";
//Dynamic names from Epsilon
var dynfieldFName= "";
var dynfieldLName= "";
var dynaddress1 ="";
var dynaddress2 ="";
var dyncity ="";
var dynstate ="";
var dynzip ="";
var dyngender ="";
var bdateValPage2 = "";
var genderValPage2 = "";
var eProfileIdPage2 = "";
var usrNamePage2 = "";
var usrPwdPage2 = "";
var glbProgramSubscriptionIds = "";
//Arrays holds the fields name
var dynamicFieldNameArray = new Array();
//Arrays holds the following values in the pattern of
//Field_Label,Req_Field,Spl_Field,Min_Len,Max_Len
var dynamicLRSMMArrayPtrn = new Array();
var populatedValues =  new Array();
var pGender ="";
var pDOB ="";
var pState ="";
var pPhone1 ="";
var pPhone2 ="";
var dynamicProgramSubIds = new Array();
var programSubscriptionVal = new Array();
var rmLength ="0";
var userToken ="";
var domainName ="";
var regData = "";
var minimumAge = "";
var tmpUsrName = ""; 
/**
 * Array.prototype.[method name] allows you to define/overwrite an objects method
 * needle is the item you are searching for
 * this is a special variable that refers to "this" instance of an Array.
 * returns true if needle is in the array, and false otherwise
 */
Array.prototype.contains = function ( obj ) {
   for (i in this) {
       if (this[i] == obj) return true;
   }
   return false;
}

String.prototype.startsWith = function(prefix) {
    return this.indexOf(prefix) === 0;
}
String.prototype.endsWith = function(suffix) {
       return this.match(suffix + "$") == suffix;
}

function StringBuffer() {
   this.buffer = [];
 }

 StringBuffer.prototype.append = function append(string) {
   this.buffer.push(string);
   return this;
 }; 

 StringBuffer.prototype.toString = function toString() {
   return this.buffer.join("");
 };
String.prototype.equalsIgnoreCase=myEqualsIgnoreCase;
String.prototype.equals=myEquals;

function myEquals(arg){
   return (this.toString()==arg.toString());
}

function myEqualsIgnoreCase(arg)
{               
   return (new String(this.toLowerCase())==(new
   String(arg)).toLowerCase());
}


function validateemail(str) {
    var at="@";
    var dot=".";
    var lat=str.indexOf(at);
    var lstr=str.length;
    var ldot=str.indexOf(dot);
    if (str.indexOf(at)==-1){
       return false;
    }
    if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
       return false;
    }if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
        return false;
    }if (str.indexOf(at,(lat+1))!=-1){
        return false;
     }if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
        return false;
     }if (str.indexOf(dot,(lat+2))==-1){
        return false;
     }if (str.indexOf(" ")!=-1){
        return false;
     }
     return true;              
}

function validateZIPCode(zipVal){
    var blnResult=false;
    var regPattern="^\\d{5}(-\\d{4})?$";
    if(zipVal.match(regPattern)){
        blnResult=true;
    }
    return blnResult;
}

function IsNumeric(strString){
   //  check for valid numeric strings  
   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;
         }
    }   
   return blnResult;
   }

function validateLeapYearDate(m,d,y){
  var month = m;
  var day = d;
  var year = y;
  var date = new Date(month+"/"+day+"/"+year);

  if(day == "29" && month == "02") {
  if(year % 4 == 0 && ( year % 100 != 0 || year % 400 == 0)) {
  return true;
  } else { return false; }
  } else if(month == (date.getMonth()+1) && day == date.getDate() && year == date.getFullYear()) {
  return true;
  } else { return false; }


}

 function IsValidDate(Mn,Day,Yr){
    var DateVal = Mn + "/" + Day + "/" + Yr;
    var dt = new Date(DateVal);

    if(dt.getDate()!=Day){
        return false;
        }
    else if(dt.getMonth()!=Mn-1){
    //this is for the purpose JavaScript starts the month from 0
        return false;
        }
    else if(dt.getFullYear()!=Yr){
        return false;
        }
        
    return true;
 }
function showError(msg, id) {
    var errorElem = document.getElementById(id + "_error");
    if (!errorElem) {
        alert(msg);
    } else {
        errorElem.style.display="block";
        errorElem.innerHTML = msg;
    }
}

function clearError(id) {
    var errorElem = document.getElementById(id + "_error");
    errorElem.style.display="none";
    errorElem.innerHTML = "";
}

function loginPage(pagePath) { 
var pageUrl = pagePath+".loginPage.html";
$.ajax({ url: pageUrl,
    success: function(msg){
    $('#loginmoduleform').html(msg);
      }});

}

function resetPasswordPage(pagePath) { 
var pageUrl = pagePath+".resetPasswordPage.html";
$.ajax({ url: pageUrl,
    success: function(msg){
    $('#loginmoduleform').html(msg);
    $('#emailId').focus();
      }});

}

function resetPasswordTyPage(pagePath) { 
var pageUrl = pagePath+".resetPasswordPage.html?fpPage=thankyou";
$.ajax({ url: pageUrl,
    success: function(msg){
    $('#loginmoduleform').html(msg);
    $('#emailId').focus();
      }});

}

function registrationPage(pagePath) {   
var pageUrl = pagePath+".registrationPage.html";
//assign DSC value to global variable 
regDsc = (document.getElementById("dsc")!=undefined)?document.getElementById("dsc").value:"";
$.ajax({ url: pageUrl,
    success: function(msg){
    $('#loginmoduleform').html(msg);
    // Get related subscriptions for page since registration first page currentPage=1
    getRegPageSubscriptions(1);
        
    $("[name$='klogid']").blur(function(){
       var email= $("[name$='klogid']").val();
        if(email != ""){   
        $("#email-confirm-value").html($('#klogid').val());
        $("p#email-confirm").show();
          setTimeout(function(){$("#email-confirm-button").focus();},0);
           $("#email-confirm-button").click(function(){
                 var email= $("[name$='password']").focus();
                $("p#email-confirm").hide();                        
           });
           $("#email-confirm-edit").click(function(){
                 var email= $("[name$='klogid']").focus();
                $("p#email-confirm").hide();                        
           });
       }
   });
    $("[name$='man']")
    $('#klogid').focus();
    }});

}


/** Login Form JS - Start */
function submitThankyou(redirectUrl,tempUsername,tempPassword,pwdMode){ 
eraseCookie("thankyoupage"); 

var pageUrl = "/registration/processlogin";
$.ajax({ url: pageUrl,
    type: 'post',
    data: {"screen":"login",
            "loginklogid":tempUsername,
            "passwordklogid":tempPassword,
            "passmode":pwdMode},
    beforeSend: function() {
         $('#ajaxLoading').show();
    },
    error: function(request,error) {
        showError('Internal Error Occurred', 'loginklogid');
    },
    success: function(msg){
        tmpUsrName=tempUsername;
        processThankyouLogin(msg,redirectUrl);
    },
    complete: function() {
        $('#ajaxLoading').hide();
    }});
}

function processThankyouLogin(jsonData,redirectUrl){
    var pmsg = jsonData;
    if(jsonData){
        var jsonObj = jQuery.parseJSON(jsonData);
        if(jsonObj.status == 'SUCCESS'){
            if(jsonObj.userinfo.length > 0){
                domainName = (undefined!=jsonObj.domain)?jsonObj.domain:"";
                createCookie("username",jsonObj.userinfo[0].username,0,domainName);
                createCookie("lastname",jsonObj.userinfo[0].lastname,0,domainName);
                createCookie("emailId",encodeURI(tmpUsrName),0,domainName);
                createCookie("profileId",jsonObj.userinfo[0].profileId,0,domainName); 
                createCookie("key",jsonObj.userinfo[0].key,0,domainName);
                createCookie("userId",jsonObj.userinfo[0].userId,0);
                createCookie("currentUserToken", jsonObj.userRememberMeInfo[0].usertoken,0);
                location.href=redirectUrl;
            }
        }else if(jsonObj.statusCode == 'E005'){
            showError('Back-end system seems to be down at the moment. Please try again later.', 'thankyou');
        }else if(jsonObj.statusCode == 'E004'){
        	showError('System Error. Please try again later.', 'thankyou');
        }else if(jsonObj.status == 'FAILURE'){
            showError('Your e-mail was not found or password is not correct. Please try again.', 'thankyou');
        }else if(jsonObj.status == 'ERROR'){
            showError('Internal Error Occurred', 'thankyou');
        }
    }else{
        showError('Internal Error Occurred', 'thankyou');
    }
}

function loginPageDisplay(pagePath){
    
    var pageUrl = "/registration/processlogin";
    
    $.ajax({ url: pageUrl,
        type: 'post',
        data: {"screen":"login",
               "loginklogid":"", 
               "passwordklogid":""
              },
          error: function(request,error) {
             alert(" Internal error ");
          },
        success: function(loginjson){
          window.location = pagePath;
          if(loginjson!=null && loginjson!= undefined){
              var jsonObj = jQuery.parseJSON(loginjson);
              if(jsonObj.userRememberMeInfo!=null && jsonObj.userRememberMeInfo!=undefined && jsonObj.userRememberMeInfo.length > 0){
                 var rememberData = jsonObj.userRememberMeInfo[0];                                             
                 rmLength = rememberData.rmLength;
                 createCookie("rmLength",rmLength,0);    
              }
          }
          isRMCompRequired();

        }
     })
}

function submitLoginForm(pagePath, redirectUrl) { 
    
      
    //As confirmed with Mike Lenz during Kashi development and changes.
    //profanity filter is not required on MSF login page
    
   /* Profanity Integration
    if(check("loginklogid,loginpassword")==false)
   {
      return false;
    } */
   
var userid = document.getElementById("loginklogid").value;
var password = document.getElementById("loginpassword").value;
var dsc = document.getElementById("dsc").value;
    
clearError('loginklogid');
clearError('loginpassword');
if(validateLogin(userid, password)){

var pageUrl = "/registration/processlogin";
$.ajax({ url: pageUrl,
    type: 'post',
    data: {"screen":"login",
           "loginklogid":userid, 
           "passwordklogid":password,
           "dsc":dsc},
    beforeSend: function() {
         $('#ajaxLoading').show();
    },
    error: function(request,error) {
        showError('Internal Error Occurred', 'loginklogid');
    },
    success: function(msg){
        processLogin(msg,userid,password,pagePath,redirectUrl);
        
        if(msg!=null && msg!=undefined ){
              var jsonObj = jQuery.parseJSON(msg);
              if(jsonObj.status == 'SUCCESS'){
                   userToken = (jsonObj.userRememberMeInfo[0]!=null && jsonObj.userRememberMeInfo[0]!=undefined )?jsonObj.userRememberMeInfo[0].usertoken:"";
                   rmLength  = (jsonObj.userRememberMeInfo[0]!=null && jsonObj.userRememberMeInfo[0]!=undefined )?jsonObj.userRememberMeInfo[0].rmLength:"";
                 //alert(" EXP Days :: "+rmLength);
                  document.getElementById("expiryDays").value ="10";
                  document.getElementById("userToken").value = userToken;
                  rememeberMe();
              }
        }
    },
    complete: function() {
        $('#ajaxLoading').hide();
    }});
}

$('#loginklogid').focus();
 if($('#loginklogid_error').text() != ""){
        $('#loginklogid').focus();
    }else if($('#loginpassword_error').text() != ""){
       $('#loginpassword').focus(); 
   }
}




function processLogin(jsonData,userid,password,pagePath,redirectUrl){
    var pmsg = jsonData;
    var jsonObj = jQuery.parseJSON(jsonData);
    redirectLoginPage =pagePath;
    if(jsonObj.status == 'SUCCESS'){
        
       
        if(jsonObj.nextPage=='REG_SEC_PAGE_PRE_POP'){
            //pre-populating the values in 2nd registration page
            populatedValues[0] = (jsonObj.userinfo[0]!=undefined && jsonObj.userinfo[0].username!=undefined)?jsonObj.userinfo[0].username:"";
            populatedValues[1] = (jsonObj.userinfo[0]!=undefined && jsonObj.userinfo[0].lastname!=undefined)?jsonObj.userinfo[0].lastname:"";
            populatedValues[2] = (jsonObj.userinfo[0]!=undefined && jsonObj.userinfo[0].address1!=undefined)?jsonObj.userinfo[0].address1:"";
            populatedValues[3] = (jsonObj.userinfo[0]!=undefined && jsonObj.userinfo[0].address2!=undefined)?jsonObj.userinfo[0].address2:"";
            populatedValues[4] = (jsonObj.userinfo[0]!=undefined && jsonObj.userinfo[0].city!=undefined)?jsonObj.userinfo[0].city:"";
            populatedValues[5] = (jsonObj.userinfo[0]!=undefined && jsonObj.userinfo[0].zip!=undefined)?jsonObj.userinfo[0].zip:"";
           
            pGender = (jsonObj.userinfo[0]!=undefined && jsonObj.userinfo[0].gender!=undefined)?jsonObj.userinfo[0].gender:"";
            pDOB =(jsonObj.userinfo[0]!=undefined && jsonObj.userinfo[0].dob!=undefined)?jsonObj.userinfo[0].dob:"";
            pState =(jsonObj.userinfo[0]!=undefined && jsonObj.userinfo[0].state!=undefined)?jsonObj.userinfo[0].state:"";
            pPhone1 = (jsonObj.userinfo[0]!=undefined && jsonObj.userinfo[0].primaryphone!=undefined)?jsonObj.userinfo[0].primaryphone:"";
            pPhone2 =(jsonObj.userinfo[0]!=undefined && jsonObj.userinfo[0].mobilephone!=undefined)?jsonObj.userinfo[0].mobilephone:"";
            //Need for User credential to get the second page of registration
            regUsername = userid;
            regPassword = ( jsonObj.userRememberMeInfo!=undefined && jsonObj.userRememberMeInfo[0].usertoken != undefined)? jsonObj.userRememberMeInfo[0].usertoken :password;
            passmode = (jsonObj.userRememberMeInfo!=undefined && jsonObj.userRememberMeInfo[0].usertoken != undefined)?"T":"P";
            registrationPage2(pagePath);
          
        }else if( jsonObj.nextPage=='UNDER_AGE_PAGE'){
            //dispalyUnderAgeInfo(jsonObj);
            //Need for User credential to get the second page of registration
            regUsername = userid;
            regPassword = password;
            var isPage2=false;
            u18RegistrationPageDisplay(pagePath,jsonObj,isPage2);
       
        }else if(jsonObj.nextPage=='HOME_PAGE'){
            
            domainName = (undefined!=jsonObj.domain)?jsonObj.domain:"";
           
            createCookie("username",jsonObj.userinfo[0].username,0,domainName);
            createCookie("lastname",jsonObj.userinfo[0].lastname,0,domainName);
            createCookie("profileId",jsonObj.userinfo[0].profileId,0,domainName);
            createCookie("emailId",encodeURI(userid),0,domainName);
            createCookie("userId",jsonObj.userinfo[0].userId,0,domainName);
            createCookie("currentUserToken", jsonObj.userRememberMeInfo[0].usertoken,0,domainName);
            createCookie("key",jsonObj.userinfo[0].key,0,domainName);           
            location.href=redirectUrl;            
           
        }else if(jsonObj.nextPage=='ERROR_PAGE'){
             showError('Your e-mail was not found or password is not correct. Please try again.', 'loginklogid'); 
        }
    }else if(jsonObj.statusCode == 'E005'){
        showError('Back-end system seems to be down at the moment. Please try again later.', 'loginklogid');
    }else if(jsonObj.statusCode == 'E004'){
    	showError('System Error. Please try again later.', 'loginklogid');
    }else if(jsonObj.status == 'FAILURE'){
        showError('Your e-mail was not found or password is not correct. Please try again.', 'loginklogid');
    }else if(jsonObj.status == 'ERROR'){
        showError('Internal Error Occurred', 'loginklogid');
    }

}

function validateLogin(userid, password){
var errorFlag = false;
if(userid.length < 1) {
    showError('Please type your Email Address.', 'loginklogid');
    errorFlag = true;
}

if(password.length < 1) {
    showError('Please type a password.', 'loginpassword');
    errorFlag = true;
}

if(password.indexOf(' ') != -1) {
    showError('Please type a password that is at least 6 characters long and does not contain spaces.', 'loginpassword');
    errorFlag = true;
}

return !errorFlag;
}

/** Login Form JS - End */

/** Registration Form1 JS - Start */

function commonProgramDisplayPage(jsonData , pageNumber){

    var infohtml ="";
    if(jsonData!=null && jsonData!=undefined && jsonData.programinfo!=undefined ){
      infohtml = new StringBuffer();    
      var fIndex =0;
        for(var i=0; i <  jsonData.programinfo.length; i++){
            var regField = jsonData.programinfo[i];
            if(regField.order!=undefined && regField.order <="90" && regField.pageField!=undefined && regField.pageField ==pageNumber ){
                
            //If filed type is Free Text and display format is text 
            if(regField.fieldtype=="F" && regField.fieldformat == 'T' ){
                
                dynamicFieldNameArray[fIndex] = regField.fieldname;
                dynamicLRSMMArrayPtrn[fIndex] =regField.fieldlabel+","+regField.required+","+regField.specialChar+","+regField.minlength+","+regField.maxlength+","+regField.order+","+regField.pageField;
                var populatedVal ="";
                if(fIndex<populatedValues.length){
                    populatedVal = populatedValues[fIndex];
                }
                infohtml.append('<p class="input">');
                infohtml.append('<span class="error"  id="'+regField.fieldname+'_error" ></span>');
                infohtml.append('<label for="'+regField.fieldname+ '">'+ regField.fieldlabel +'</label>');
                infohtml.append('<input type="text" class="text jumbo required tabme" maxlength="'+regField.maxlength+'" value="'+populatedVal+'"  id="'+regField.fieldname+'" name="'+regField.fieldname+'"/>');
                infohtml.append('<br class="clear"></p>');
                fIndex = fIndex+1;
            }else{
         
                   if(regField.fieldname == 'State' && regField.fieldformat == 'T'){
                        
                        //Get the Field name
                        dynstate  = (regField!=null && regField.fieldname!=undefined)?regField.fieldname:"state";
                        
                        infohtml.append('<p class="input">');
                        infohtml.append('<span class="error" id="'+dynstate+'_error" ></span>');
                        infohtml.append('<label for="state">'+ regField.fieldlabel +'</label>');
                        infohtml.append('<select class="required tabme" id="'+dynstate+'" name="'+dynstate+'">');
                        infohtml.append('<option value="" selected="selected">- select state -</option>');
                        var stateOptArr = regField.AllowedFields;
                        for(var j=0; j < stateOptArr.length; j++){
                            infohtml.append('<option value="'+stateOptArr[j].value+'">'+stateOptArr[j].label+'</option>');
                        }
                        infohtml.append('</select>');                                
                        infohtml.append('<br class="clear"></p>');
                       
                    }else if(regField.fieldname == 'PhoneNumber1' && regField.fieldformat == 'N') {
                        infohtml.append('<p class="input">');
                        infohtml.append('<span class="error" id="phone_error" ></span>');
                        infohtml.append('<label class="nlabel" for="phone">'+ regField.fieldlabel +'<br><span class="sample">(optional)</span></label>');
                        infohtml.append('<input name="phoneField1" maxlength="3" id="cell1" class="fl text tiny html:optional tabme" type="text"/><span class="flabel">-</span>');
                        infohtml.append('<input name="phoneField2" maxlength="3" id="cell2" class="fl text tiny html:optional tabme" type="text"/><span class="flabel">-</span>');
                        infohtml.append('<input name="phoneField3" maxlength="4" id="cell3" class="fl text tinyFour html:optional tabme" type="text"/>');
                        infohtml.append('<br class="clear"></p>');
                    }else if(regField.fieldname == 'PhoneNumber2' && regField.fieldformat == 'N') {
                        infohtml.append('<p class="input">');
                        infohtml.append('<span class="error" id="cell_error" ></span>');
                        infohtml.append('<label class="nlabel" for="cell">'+ regField.fieldlabel +'<br><span class="sample">(optional)</span></label>');
                        infohtml.append('<input name="cellField1" maxlength="3" id="cell4" class="fl text tiny html:optional tabme" type="text"/><span class="flabel">-</span>');
                        infohtml.append('<input name="cellField2" maxlength="3" id="cell5" class="fl text tiny html:optional tabme" type="text"/><span class="flabel">-</span>');
                        infohtml.append('<input name="cellField3" maxlength="4" id="cell6" class="fl text tinyFour html:optional tabme" type="text"/>');
                        infohtml.append('<br class="clear"></p>');
                    }else if(regField.fieldname == 'MobileDisclaimer' && regField.fieldtype == 'D') {
                        infohtml.append('<p class="input">');
                        infohtml.append('<span class="pdisclaimer">'+regField.fieldlabel+'</span>');
                        infohtml.append('<br class="clear"></p>');
                    }else if(regField.fieldname == 'BirthDate' && regField.fieldformat == 'D') {
                    
                        infohtml.append('<p class="input">');
                        infohtml.append('<span class="error" id="birthdate_error" ></span>');
                        infohtml.append('<label for="bmonth">'+ regField.fieldlabel +'</label>');
                        infohtml.append('<select class="required tabme" id="bmonth" name="bmonth">');
                        infohtml.append('<option value="" selected="selected">- month -</option>');
                        infohtml.append('<option value="1">January</option>');
                        infohtml.append('<option value="2">February</option>');
                        infohtml.append('<option value="3">March</option>');
                        infohtml.append('<option value="4">April</option>');
                        infohtml.append('<option value="5">May</option>');
                        infohtml.append('<option value="6">June</option>');
                        infohtml.append('<option value="7">July</option>');
                        infohtml.append('<option value="8">August</option>');
                        infohtml.append('<option value="9">September</option>');
                        infohtml.append('<option value="10">October</option>');
                        infohtml.append('<option value="11">November</option>');
                        infohtml.append('<option value="12">December</option>');
                        infohtml.append('</select>');
                        infohtml.append('<select class="required tabme" id="bday" name="bday">');
                        infohtml.append('<option value="" selected="selected">- day -</option>');
                        for(var k=1; k <=31; k++){
                            infohtml.append('<option value="'+k+'">'+k+'</option>');
                        }
                        infohtml.append('</select>');
                        infohtml.append('<select class="required tabme" id="byear" name="byear">');
                        infohtml.append('<option value="" selected="selected">- year -</option>');
                        var date = new Date();
                        var currentYear = date.getFullYear();
                        for(var l=currentYear; l >= 1904; l--){
                            infohtml.append('<option value="'+l+'">'+l+'</option>');
                        }
                        infohtml.append('</select>');
                        infohtml.append('<br class="clear"></p>');
                    }else if(regField.fieldname == 'Gender' && regField.fieldformat == 'T') {
                        
                        //Get the Field name
                        dyngender   = (regField!=null && regField.fieldname!=undefined)?regField.fieldname:"gender";
                        
                        infohtml.append('<p class="input">');
                        infohtml.append('<span class="error" id="'+dyngender+'_error" ></span>');
                        infohtml.append('<label for="gender">'+ regField.fieldlabel +'</label>');
                        var genderOptArr = regField.AllowedFields;
                        for(var m=0; m < genderOptArr.length; m++){
                            infohtml.append('<input type="radio" class="radio required tabme" value="'+genderOptArr[m].value+'" id="gender_'+genderOptArr[m].label+'" name="'+dyngender+'"/>');
                            infohtml.append('<label class="after2" for="gender_'+genderOptArr[m].label+'">'+genderOptArr[m].label+'</label>');
                        }
                        infohtml.append('<br class="clear"></p>');
                        
                        
                    }
               }
          }//main condn ENDS
        }//FOR LOOP ENDS
    }
    return infohtml;
}

function registrationPage2(pagePath) { 

var pageUrl = pagePath+".registrationPage.html?regPage=form2";
$.ajax({ url: pageUrl,
         beforeSend: function() {
         },
         error: function(request,error) {
                showError('Internal Error Occurred', 'contactinfo');
         },
        success: function(msg){
            $('#loginmoduleform').html(msg);
            $.ajax({ url: "/registration/processlogin",
                type: 'post',
                data: {"screen":"login",
                       "loginklogid":regUsername, 
                       "passwordklogid":regPassword,
                       "dsc":regDsc,
                       "passmode":passmode},
                beforeSend: function() {
                $('#ajaxLoading').show();
                },
                error: function(request,error) {
                    showError('Internal Error Occurred', 'contactinfo');
                },
                success: function(progfields){
                    var jsonData = jQuery.parseJSON(progfields); //regForm2;//
                    if(jsonData.status == 'TOKEN_ERROR'){
                        window.location =pagePath+".html";
                    }
                    else if(jsonData.status == 'SUCCESS' && jsonData.programinfo.length > 0){
                        regProgData = jsonData.programinfo;
                        regData = jsonData;
                        minimumAge = regData.minimumAge;
                        var pageNumber ="2";
                        var infohtml = commonProgramDisplayPage(jsonData ,pageNumber);
                        if(infohtml!=""){
                            createCookie("thankyoupage","/RegSuccessful",0);
                            //regProgData = jsonData.programinfo[0];
                              if(jsonData.userinfo!=undefined && jsonData.userinfo.length>0){
                              infohtml.append('<input type="hidden" name="eProfileId" id="eProfileId" value="'+jsonData.userinfo[0].profileId+'"');
                              }
                              // Subscription UI
                              var currentPage = 2; // variable to get subscriptions
                              renderSubscriptions(jsonData, infohtml, currentPage);
                            $('#regform').html(infohtml.toString());
                        }
                      //Re-initialize the  fields
                        if(dynamicFieldNameArray.length>5){
                            dynfieldFName= (dynamicFieldNameArray.length>0)?dynamicFieldNameArray[0]:"fname";
                            dynfieldLName= (dynamicFieldNameArray.length>1)?dynamicFieldNameArray[1]:"lname";
                            dynaddress1 =(dynamicFieldNameArray.length>2)?dynamicFieldNameArray[2]:"address1";
                            dynaddress2 =(dynamicFieldNameArray.length>3)?dynamicFieldNameArray[3]:"address2";
                            dyncity =(dynamicFieldNameArray.length>4)?dynamicFieldNameArray[4]:"city";
                            dynzip =(dynamicFieldNameArray.length>5)?dynamicFieldNameArray[5]:"zip";
                        }
                        
                        if( pState!="" &&  pState!=undefined){
                            $('#'+dynstate +' option[value='+pState+']').attr("selected", "selected");
                        }
                        if( pPhone1!="" &&  pPhone1!=undefined){
                            var num1 = pPhone1.substring(0,3);
                            var num2 = pPhone1.substring(3,6);
                            var num3 = pPhone1.substring(6);
                            $('#cell4').val(num1);
                            $('#cell5').val(num2);
                            $('#cell6').val(num3);
                        }
                        if( pPhone2!="" &&  pPhone2!=undefined){
                            var num1 = pPhone2.substring(0,3);
                            var num2 = pPhone2.substring(3,6);
                            var num3 = pPhone2.substring(6);
                            $('#cell1').val(num1);
                            $('#cell2').val(num2);
                            $('#cell3').val(num3);
                        }
                        if( pState!="" &&  pState!=undefined){
                            $('#'+dynstate +' option[value='+pState+']').attr("selected", "selected");
                        }
                        if( pGender!="" &&  pGender!=undefined){                       
                           $("[name=Gender]").filter("[value="+pGender+"]").attr("checked",true);
                        }
                        if(pDOB!=""&& pDOB!=undefined){
                            var doBArray = pDOB.split("-");
                            var day ="";
                            var month ="";
                            if(doBArray.length >= 2){
                               day = doBArray[2];
                               day = (day!=null && day.indexOf("0")==0 )?day.substring(1,day.length):day;
                                $('#bday option[value='+day+' ]').attr("selected", "selected");
                            }
                            if(doBArray.length>1){
                                month = doBArray[1];
                                month = (month!=null && month.indexOf("0")==0 )?month.substring(1,month.length):month;
                                $('#bmonth option[value='+month+' ]').attr("selected", "selected");
                            }
                            if(doBArray.length>0){
                                $('#byear option[value='+doBArray[0]+' ]').attr("selected", "selected");
                            }
                        }
                        
                       
                       
                       /* if(regProgData.MobileDisclaimer != null){
                         if(regProgData.MobileDisclaimer.fieldtype == 'D'){
                           var disclaimer = '<span class="info">';
                           disclaimer = disclaimer + regProgData.MobileDisclaimer.fieldlabel;
                           disclaimer = disclaimer + '</span>';
                           $('#disclaimer').html(disclaimer);
                         }
                        }
                        var stateoptions = new StringBuffer();
                        stateoptions.append('<option value="" selected="selected">- select state -</option>');
                        var stateOptArr = regProgData.State.AllowedFields;
                        for(var i=0; i < stateOptArr.length; i++){
                            stateoptions.append('<option value="'+stateOptArr[i].value+'">'+stateOptArr[i].label+'</option>');
                        }
                        //alert(stateoptions.toString());
                        $('#state').html(stateoptions.toString());*/
                    }
                    else {
                        showError('Internal Error Occurred', dynfieldFName);
                    }
                },
                complete: function() {
                    $('#ajaxLoading').hide();
                    $('#cell1').keyup(function(){
                     if($('#cell1').val().length >= 3)
                     {
                        $('#cell2').focus();
                        $('#cell2').select();
                     }
                    });
                     $('#cell2').keyup(function(){
                         if($('#cell2').val().length >= 3)
                             {
                                $('#cell3').focus();
                                $('#cell3').select();
                             }
                     });
                     $('#cell4').keyup(function(){
                     if($('#cell4').val().length >= 3)
                     {
                        $('#cell5').focus();
                        $('#cell5').select();
                     }
                    });
                     $('#cell5').keyup(function(){
                         if($('#cell5').val().length >= 3)
                             {
                                $('#cell6').focus();
                                $('#cell6').select();
                             }
                     });
                }});
            
             $('.tooltip5').mouseover(function(){
                $('#data_tooltip_5').show();
             });
             $('.tooltip5').mouseout(function(){
                $('#data_tooltip_5').hide();
             });
        }
      });
}

function getSelectedSubscriptions(){
    
    //Get Subscriptions
    var programSubscriptionIds;    
    for(var i=0;i<dynamicProgramSubIds.length;i++){
        if($('input[id='+dynamicProgramSubIds[i]+']:checked').val() == undefined){
            if(programSubscriptionIds==undefined){
                programSubscriptionIds = dynamicProgramSubIds[i]+"_N";
            }else{
                programSubscriptionIds += ":"+dynamicProgramSubIds[i]+"_N"; 
            }       
        }else{
            if(programSubscriptionIds==undefined){
                programSubscriptionIds = $('input[id='+dynamicProgramSubIds[i]+']:checked').val()+"_Y";
            }else{
                programSubscriptionIds += ":"+$('input[id='+dynamicProgramSubIds[i]+']:checked').val()+"_Y";
            }
        }           
    }    
    return programSubscriptionIds;
}

function renderSubscriptions(jsonData, infohtml, currentPage){
    //infohtml.append("<label>Subscriptions</label>");  
    if(jsonData.programSubscriptionInfo!=undefined){        
        for(var i=0; i <  jsonData.programSubscriptionInfo.length; i++){
            var subField = jsonData.programSubscriptionInfo[i];     
            var stepPage = subField.StepPage;
            var subId = subField.subscriptionId;
            var subName = subField.subscriptionName;
            var isImplied = subField.implied;
            var isRequired = subField.isRequired;

            
            // revert back      
            if(stepPage == currentPage){            

                if(currentPage == 3){
                    if(isImplied == 'Y'){   // refer B.R.D sections #1.10.3
                        infohtml.append("<input type='checkbox' name='subscriptions' id='"+subId+"' value='"+subId+"' checked='true' style='display:none;' /><br />");
                    }
                }else{
                    //if(stepPage == 2){
                    var defaultCheckVal = "";
                    infohtml.append('<span class="error" id="'+subId+'_error" ></span>');
        
                    // condition needs to be changed i.e., isImplied == 'N'
                    if(isImplied == 'N'){
                        // check whether subscription is set by default                             
                        if(subField.optIn == 'Y'){
                            defaultCheckVal = "checked='true'";
                        }                               
                        infohtml.append("<span style='margin-left: 129px; display: block;'><input type='checkbox' "+defaultCheckVal+" name='subscriptions' id='"+subId+"' value='"+subId+"'>"+ subName +"</input> </span> <br />");
                        // update variable for validation
                        programSubscriptionVal[i] = subName+':'+isRequired+':'+subId;
                    }else if(isImplied == 'Y'){                             
                        //infohtml.append("<input type='hidden' name='"+subId+"' id='"+subId+"' value='"+subId+"' /><br />");
                        // hide and set checked attribute of following checkboxes 
                        defaultCheckVal = "checked='true'";
                        infohtml.append("<input type='checkbox' name='subscriptions' id='"+subId+"' value='"+subId+"' "+defaultCheckVal+" style='display:none;' /><br />");                             
                    }                                   
                }
                dynamicProgramSubIds[i] = subId;
            }           
        }
    }
}
function submitPartialRegForm(currentPagePath) { 
    
    // Profanity Integration
   /* if(check("klogid,password,password2")==false)
    {
        return false;
    }*/ 
var klogid = $('#klogid').val();
var password = $('#password').val();
var password2 = $('#password2').val(); 
var iAccept = $('.radio')[0].checked;

clearError('klogid');
clearError('password');
clearError('password2');
clearError('iAccept');

//regDsc Global variable value is null,reassign it and the default value kept as null
//to take DSC value as MORNINGSTARFARMS
if(regDsc==""){
    regDsc = (document.getElementById("pdsc")!=undefined&&document.getElementById("pdsc").value!=null)?document.getElementById("pdsc").value:"";
}

if(validateFormValues(klogid,password,password2,iAccept)){

//Get Subscriptions
var programSubscriptionIds = getSelectedSubscriptions();
var pageUrl = "/registration/processlogin";
$.ajax({ url: pageUrl,
    type: 'post',
    data: {"screen":"partialRegistration",
           "loginklogid":klogid, 
           "passwordklogid":password,
           "dsc":regDsc,
           "programSubscriptionList":programSubscriptionIds},
     beforeSend: function() {
          $('#ajaxLoading').show();
    },
    error: function(request,error) {
        $('#klogid').html("Internal Error Occurred");
    },
    success: function(msg){
    processRegForm1(msg,currentPagePath,klogid);
//     $('#'+dynfieldFName+'').focus(); IE 8 Issue
    },
    complete: function() {
        $('#ajaxLoading').hide();
    }});      
}
//$('#klogid').focus();
 if($('#klogid_error').text() != ""){
        $('#klogid').focus();
    }else if($('#password_error').text() != ""){
       $('#password').focus(); 
   }else if($('#password2_error').text() != ""){
       $('#password2').focus(); 
   }
}

function processRegForm1(jsonData,currentPagePath,username){
    var pmsg = jsonData;
    var jsonObj = jQuery.parseJSON(jsonData);
    if(jsonObj.status == 'SUCCESS'){
        regUsername = jsonObj.userinfo[0].username;
        regPassword = (jsonObj.userinfo[0].usertoken != undefined)? jsonObj.userinfo[0].usertoken:jsonObj.userinfo[0].password;
        passmode = (jsonObj.userinfo[0].usertoken != undefined)?"T":"P";
        registrationPage2(currentPagePath);
    }else if(jsonObj.statusCode == 'E005'){
        showError('Back-end system seems to be down at the moment. Please try again later.', 'klogid');
    }else if(jsonObj.statusCode == 'E004'){
    	showError('System Error. Please try again later.', 'klogid');
    }else if(jsonObj.status == 'FAILURE'){
        showError('An account already exists for '+username+'. Please try to log in.', 'klogid');
    }else if(jsonObj.status == 'ERROR'){
        showError('Back-end system seems to be down at the moment. Please try again later.', 'klogid');
    }else{
        showError('Internal Error Occurred.', 'klogid');
    }  
}

function validateFormValues(klogid,password,password2,iAccept){
//return true;
var errorFlag = false;
if(klogid.length < 1 || !validateemail(klogid)) {
    showError('Please type a valid email address.', 'klogid');
    errorFlag = true;
}
if(password.indexOf(' ') != -1) {
    showError('Please type a password that is at least 6 characters long and does not contain spaces.', 'password');
    errorFlag = true;
}else if(password.length < 6 ) {
    showError('Please type a password that is at least 6 characters long and does not contain spaces.', 'password');
    errorFlag = true;
}
if(password2.length < 1) {
    showError('Please retype your password to confirm.', 'password2');
    errorFlag = true;
}else if(password != password2) {
    showError('The password and confirmation password do not match. Please type the same password in both boxes.', 'password2');
    errorFlag = true;
}
if(!iAccept) {
    showError('You must agree to the terms and conditions to continue.', 'iAccept');
    errorFlag = true;
}

if($('#email-confirm').is(":visible"))
{
    errorFlag = true;
}
return !errorFlag;
}

/** Registration Form 1 JS - End */

/** Registration Form2 JS - Start */
function  displaySurveyData(surveyData){
var surveyhtml = new StringBuffer();
     surveyhtml.append('<ul id="preferences">');
     surveyhtml.append("<input type='hidden' name = 'screen' value='updateProfileSurvey'/>");
     surveyhtml.append("<input type='hidden' name = 'loginklogid' value='"+regUsername+"'/>");
     surveyhtml.append("<input type='hidden' name = 'passwordklogid' value='"+regPassword+"'/>");
     surveyhtml.append("<input type='hidden' name = 'profileId' value='"+regProfileId+"'/>");
     surveyhtml.append("<input type='hidden' name = 'passmode' value='"+passmode+"'/>");
      for (var i = 0; i < surveyData.surveyquestions.length; i++) {
        var name = "question"+(i+1);
        var question = surveyData.surveyquestions[i];
      
            if(question.questiontype.equalsIgnoreCase("TEXT")){
                
                if(question.questionDisplayType.equalsIgnoreCase("T")){ // if display type is T
                    surveyhtml.append("<br/>");
                    surveyhtml.append("<p class=\"question\">");
                    surveyhtml.append("<b>");
                    surveyhtml.append(question.questiontext);
                    surveyhtml.append("</b>");
                    surveyhtml.append("</p>");
                }
            }
            else if(question.questiontype.equalsIgnoreCase("MULTIPLE")){        
                if(question.questionDisplayType.equalsIgnoreCase("C")){ // if display type is C
                    surveyhtml.append("<p class=\"question\">");
                    surveyhtml.append("<b>");
                    surveyhtml.append(question.questiontext);
                    surveyhtml.append("</b>");
                    surveyhtml.append("</p>");
                    surveyhtml.append('<ul class=\"answers twocolumn\">');
                    
                    for (var anscount = 0; anscount < question.answer.length; anscount++) {
                         var answerbean = question.answer[anscount];
                         var answer = answerbean.anstext;
                         
                         if(answerbean.anstype.equals("Y")){
                             if(answerbean.status.equals("A")){
                                surveyhtml.append("<li>");
                                surveyhtml.append("<input type='checkbox' name='"+name+"' checked='true' class=\"radio tabme\" value='"+answerbean.profileresponseid+"' id=\""+answerbean.profileresponseid+"\">");
                                surveyhtml.append("<label class=\"after\" for=\""+answerbean.profileresponseid+"\">"+answer+"</label>");
                                surveyhtml.append("<input type='textarea' style='display:block' maxlength='50' name='"+answerbean.profileresponseid+"text' value='"+answerbean.surveyTextResponse+"' class=\""+answerbean.profileresponseid+"\">");
                                surveyhtml.append("</li>");
                            }else{
                                surveyhtml.append("<li>");
                                surveyhtml.append("<input type='checkbox' name='"+name+"' class=\"radio tabme\" value='"+answerbean.profileresponseid+"'  id=\""+answerbean.profileresponseid+"\">");
                                surveyhtml.append("<label class=\"after\" for=\""+answerbean.profileresponseid+"\" >"+answer+"</label>");
                                surveyhtml.append("<input type='textarea' style='display:none' maxlength='50' name='"+answerbean.profileresponseid+"text' class=\""+answerbean.profileresponseid+"\">");
                                surveyhtml.append("</li>");
                            }
                            
                        }
                        else{
                            if(answerbean.status.equals("A")){
                                surveyhtml.append("<li>");
                                surveyhtml.append("<input type='checkbox' name='"+name+"' class=\"radio tabme\" id=\""+answerbean.profileresponseid+"\"  value='"+answerbean.profileresponseid+"' checked>");
                                surveyhtml.append("<label class=\"after\" for=\""+answerbean.profileresponseid+"\">"+answer+"</label>");
                                surveyhtml.append("</li>");
                            }else{
                                surveyhtml.append("<li>");
                                surveyhtml.append("<input type='checkbox' name='"+name+"'  class=\"radio tabme\" id=\""+answerbean.profileresponseid+"\"  value='"+answerbean.profileresponseid+"'>");
                                surveyhtml.append("<label class=\"after\" for=\""+answerbean.profileresponseid+"\">"+answer+"</label>");
                                surveyhtml.append("</li>");
                            }
                        }
                    }
                    surveyhtml.append("</ul>");
                    surveyhtml.append("</ul>");
                    surveyhtml.append("<div style='clear:both'></div>");
                    surveyhtml.append("<br/>");
                    }else if(question.questionDisplayType.equalsIgnoreCase("T")){ // if display type is T
                        
                        surveyhtml.append("<br/>");
                        surveyhtml.append("<br/>");
                        surveyhtml.append("<p class=\"question\">");
                        surveyhtml.append("<b>");
                        surveyhtml.append(question.questiontext);
                        surveyhtml.append("</b>");
                        surveyhtml.append("</p>");
                        for (var anscount = 0; anscount < question.answer.length; anscount++) {                         
                            var answerbean = question.answer[anscount];
                            var answer = answerbean.anstext;                                                        
                            if(answerbean.status.equals("A"))
                            {
                                surveyhtml.append(answer);
                                if(answerbean.anstype.equals("Y")){
                                    surveyhtml.append("<input type='textarea' maxlength='50' name='"+name+"' value='"+answerbean.surveyTextResponse+"'>");
                                }
                                surveyhtml.append("<br/>");
                                surveyhtml.append("<br/>");
                            }else{
                                surveyhtml.append(answer);
                                if(answerbean.anstype.equals("Y")){
                                    surveyhtml.append("<input type='textarea' maxlength='50' name='"+name+"'>");
                                }
                                surveyhtml.append("<br/>");
                                surveyhtml.append("<br/>");
                            }
                    }
                }                    
                //surveyhtml.append("<br/>");
                //surveyhtml.append("<br/>");
            } // end - if multiple
            else if(question.questiontype.equalsIgnoreCase("SINGLE")){
                
                var answerbean = question.answer[anscount];
                surveyhtml.append("<p class=\"question\">");
                surveyhtml.append("<b>");
                surveyhtml.append(question.questiontext);
                surveyhtml.append("</b>");
                surveyhtml.append("</p>");
                if(question.questionDisplayType.equalsIgnoreCase("D")){ // if display type is D
                 surveyhtml.append("<ul class=\"answers\">");
                 var select="Select any One";
                 surveyhtml.append("<select name='"+name+"'>");
                 surveyhtml.append("<option name='"+name+"' value='-1'>"+select+"</option>");
                 for (var anscount = 0; anscount < question.answer.length; anscount++) {
                        var answerbean = question.answer[anscount];
                        var answer = answerbean.anstext;
                            if(answerbean.anstype.equals("Y")){
                            if(answerbean.status.equals("A")){
                                surveyhtml.append("<option value='"+answerbean.profileresponseid+"' id=\""+answerbean.profileresponseid+"\" SELECTED>"+answerbean.anstext+"</option>");
                                surveyhtml.append("<input type='textarea'  style='display:none' maxlength='50' name='"+answerbean.profileresponseid+"text' value='"+answerbean.surveyTextResponse+"' class=\""+answerbean.profileresponseid+" toggle\">");
                            }else{
                                surveyhtml.append("<option value='"+answerbean.profileresponseid+"' id=\""+answerbean.profileresponseid+"\">"+answerbean.anstext+"</option>");
                                surveyhtml.append("<input type='textarea'  style='display:none' maxlength='50' name='"+answerbean.profileresponseid+"text' class=\""+answerbean.profileresponseid+" toggle\">");
                            }                       
                         }else{
                             if(answerbean.status.equals("A")){
                                surveyhtml.append("<option value='"+answerbean.profileresponseid+"' id=\""+answerbean.profileresponseid+"\" SELECTED>"+answerbean.anstext+"</option>");
                            }else{
                                surveyhtml.append("<option value='"+answerbean.profileresponseid+"' id=\""+answerbean.profileresponseid+"\">"+answerbean.anstext+"</option>");
                            }
                        }
                }
            
                surveyhtml.append("</select>");
                surveyhtml.append("</ul>");
                surveyhtml.append("<br/>");
                surveyhtml.append("<br/>");
                }else if(question.questionDisplayType.equalsIgnoreCase("R")){ // if display type is R

                    surveyhtml.append("<ul class=\"answers\">");
                    for (var anscount = 0; anscount < question.answer.length; anscount++) {
                        var answerbean = question.answer[anscount];
                        var answer = answerbean.anstext;                            
                        if(answerbean.status.equals("A")){
                            surveyhtml.append("<li>");
                            surveyhtml.append(answer);
                            surveyhtml.append("<input type='radio' name='"+name+"' class=\"radio tabme\" value='"+answerbean.profileresponseid+"' checked>");
                            surveyhtml.append("</li>");
                        }else{
                            surveyhtml.append("<li>");
                            surveyhtml.append(answer);
                            surveyhtml.append("<input type='radio' name='"+name+"' class=\"radio tabme\" value='"+answerbean.profileresponseid+"'>");
                            surveyhtml.append("</li>");
                        }
                        
                    }
                    surveyhtml.append("</ul>");
                }else if(question.questionDisplayType.equalsIgnoreCase("T")){ // if display type is T
                                        
                    for (var anscount = 0; anscount < question.answer.length; anscount++) {
                        var answerbean = question.answer[anscount];
                        var answer = answerbean.anstext;                            
                        if(answerbean.status.equals("A")){
                            surveyhtml.append(answer);
                            if(answerbean.anstype.equals("Y")){
                                surveyhtml.append("<input type='textarea' maxlength='50' name='"+name+"' value='"+answerbean.surveyTextResponse+"'>");
                            }
                            surveyhtml.append("<br/>");
                            surveyhtml.append("<br/>");
                        }else{
                            surveyhtml.append(answer);
                            if(answerbean.anstype.equals("Y")){
                                surveyhtml.append("<input type='textarea' maxlength='50' name='"+name+"'>");
                            }
                            surveyhtml.append("<br/>");
                            surveyhtml.append("<br/>");
                        }
                    }
                }
                surveyhtml.append("</ul>");
                
      }// end - if single
      //alert(surveyhtml.toString());
     $('#dynamicdata').html(surveyhtml.toString());

}
}       

function registrationPage3(pagePath) { 
var pageUrl = pagePath+".registrationPage.html?regPage=form3";
$.ajax({ url: pageUrl,
         beforeSend: function() {
         },
         error: function(request,error) {
                showError('Internal Error Occurred', 'preference');
         },
        success: function(msg){
            $('#loginmoduleform').html(msg);
            $.ajax({ url: "/registration/processlogin",
                type: 'post',
                data: {"screen":"getProfilesurvey",
                       "profileId":regProfileId,
                       "loginklogid":regUsername, 
                       "passwordklogid":regPassword,
                       "dsc":regDsc,
                       "passmode":passmode},
                beforeSend: function() {
                $('#ajaxLoading').show();
                },
                error: function(request,error) {
                    showError('Internal Error Occoured', 'preference');
                },
                success: function(surveymsg){
                    var jsonObj = jQuery.parseJSON(surveymsg);
                    var currentPage = 3; // variable to get subscriptions
                    if(jsonObj.status == 'SUCCESS'){        
                        displaySurveyData(jsonObj);
                        // Display subscriptions since it is a registration page 3, currentPage=3
                        getRegPageSubscriptions(currentPage);
                    }else {
                        showError('Internal Error Occurred', 'preference');
                    }
                },
                complete: function() {
                   $(':checkbox').click(function(){            
                        var tid= $(this).attr("id");
                        $('.' + tid).toggle();
                   });
                   $('#ajaxLoading').hide();
                }});
        }
      });
      
}

function getRegPageSubscriptions(currentPage){  
    // Get related subscriptions
    $.ajax({ url: "/registration/processlogin",
        type: 'post',
        data: {"screen":"login",
               "loginklogid":"", 
               "passwordklogid":""},
        beforeSend: function() {
        $('#ajaxLoading').show();
        },
        error: function(request,error) {
            showError('Internal Error Occurred', 'contactinfo');
        },
        success: function(progfields){          
            var jsonData = jQuery.parseJSON(progfields); //regForm2;//   
            if(jsonData.status == 'SUCCESS' && jsonData.programinfo.length > 0){  
                var infohtml = new StringBuffer();
                //var currentPage = 1; // variable to get subscriptions
                renderSubscriptions(jsonData, infohtml, currentPage);
                document.getElementById('subscriptions').innerHTML = infohtml; 
            }
        }});        
}
function submitRegForm2(currentPagePath) { 
    var profanityString = "";
  
    
    var fname = $('#'+dynfieldFName+'').val();
    var lname = $('#'+dynfieldLName+'').val();
    var address1 = $('#'+dynaddress1+'').val(); 
    var address2 = $('#'+dynaddress2+'').val(); 
    var city = $('#'+dyncity+'').val(); 
    var state = $('#'+dynstate+'').val(); 
    var zip = $('#'+dynzip +'').val(); 
    var cell1 = $('#cell1').val(); 
    var cell2 = $('#cell2').val(); 
    var cell3 = $('#cell3').val(); 
    var cell4 = $('#cell4').val(); 
    var cell5 = $('#cell5').val(); 
    var cell6 = $('#cell6').val(); 
    var bmonth = $('#bmonth').val(); 
    var bday = $('#bday').val(); 
    var byear = $('#byear').val(); 
    var bdate = byear+"-"+bmonth+"-"+bday;
    var gender = $('input[name='+dyngender+']:checked').val();
    var eProfileId = $('#eProfileId').val();
    eProfileIdPage2 = eProfileId;
    //Get Subscriptions
    glbProgramSubscriptionIds = getSelectedSubscriptions();
    minimumAge = regData.minimumAge; 
    var isRegisteredAdult = regData.isRegisteredAdult;
    //Clearing the error 
    for(var z=0; z < regProgData.length; z++){
  
        if(regProgData[z].fieldname == dynstate){
           clearError(dynstate);
        }
        if(regProgData[z].fieldname == 'PhoneNumber1'){
        clearError('phone');
        }
        if(regProgData[z].fieldname == 'PhoneNumber2'){
        clearError('cell');
        }
        if(regProgData[z].fieldname == 'BirthDate'){
        clearError('birthdate');
        }
        if(regProgData[z].fieldname == dyngender){
         clearError(dyngender);
        }
     }
    //Clearing the error
    var applyProfanityCount='1';
    var iteratorCount='0';      
    //For Each removed normal for loop for IE 7 issue. 
    for(var i=0;i<dynamicFieldNameArray.length;i++){
       
        if(0<applyProfanityCount){
           profanityString = profanityString + dynamicFieldNameArray[i]+",";
           applyProfanityCount = applyProfanityCount -1;
        }
         
        if(iteratorCount<dynamicFieldNameArray.length){                     
           clearError(dynamicFieldNameArray[i]);
           iteratorCount++;            
        }    
    }
    
    if(profanityString.length>1){
        profanityString = profanityString.substring(0,profanityString.length-1);
    }    
    var pageNumber ="2";    
    if(commonProgramInfoValidation(currentPagePath,profanityString,pageNumber)){
        regFirstName = fname;
        regLastName = lname;
        regAddress1 = address1;
        regAddress2 = address2;
        regCity = city;
        regState = state;
        regZipcode = zip;
        regPhone = cell1+cell2+cell3;
        regMobile = cell4+cell5+cell6;
        regBirthdate = bdate;
        regGender = gender;
        var pageUrl = "/registration/processlogin";
        $.ajax({ url: pageUrl,
            type: 'post',
            data: {"screen":"fullregistration",
                   "loginklogid":regUsername, 
                   "passwordklogid":regPassword, 
                   "passmode":passmode,
                   "regFirstName":fname, 
                   "regLastName":lname, 
                   "regAddress1":address1, 
                   "regAddress2":address2, 
                   "regCity":city, 
                   "regState":state, 
                   "regZipcode":zip, 
                   "regPhone":cell4+cell5+cell6, 
                   "regMobile":cell1+cell2+cell3, 
                   "regBirthdate":bdate, 
                   "regGender":gender,
                   "programSubscriptionList":glbProgramSubscriptionIds,
                   "eProfileId":eProfileId,  
                   "minimumAge":minimumAge,
                   "isRegisteredAdult":isRegisteredAdult,
                   "dsc":regDsc
                   },
              beforeSend: function() {
                    $('#ajaxLoading').show();
              },
              error: function(request,error) {
              showError('Internal Error Occurred.', dynfieldFName);
              },
              success: function(msg){
               processRegForm2(msg,currentPagePath);
              },
              complete: function() {
                $('#ajaxLoading').hide();
             }});       
        }
   /* $('#fname').focus();
    if($('#fname_error').text() != ""){
        $('#fname').focus();
    }else if($('#lname_error').text() != ""){
       $('#lname').focus(); 
    }else if($('#address1_error').text() != ""){
       $('#address1').focus(); 
    }else if($('#city_error').text() != ""){
       $('#city').focus(); 
    }else if($('#state_error').text() != ""){
       $('#state').focus(); 
    }else if($('#zip_error').text() != ""){
       $('#zip').focus(); 
    }else if($('#cell_error').text() != ""){
       $('#cell1').focus(); 
    }*/
}
function processRegForm2(jsonData,currentPagePath){

    var pmsg = jsonData;
    var jsonObj = jQuery.parseJSON(jsonData);
    if(jsonObj.status == 'SUCCESS'){
        regProfileId = jsonObj.userinfo[0].profileId;
      //  regPassword = (jsonObj.userRememberMeInfo[0].usertoken != undefined)? jsonObj.userRememberMeInfo[0].usertoken:password;
       // passmode = (jsonObj.userRememberMeInfo[0].usertoken != undefined)?"T":"P";       
        registrationPage3(currentPagePath);
    }else if(jsonObj.statusCode == 'E005'){
        showError('Back-end system seems to be down at the moment. Please try again later.', dynfieldFName);
    }else if(jsonObj.statusCode == 'E004'){
    	showError('System Error. Please try again later.', dynfieldFName);
    }else if(jsonObj.status == 'FAILURE'){
        showError('Invalid password. Please try again.', dynfieldFName);
    }else if(jsonObj.status == 'ERROR'){
        if(jsonObj.statusCode == 'E112' && jsonObj.statusMessage != ""){
         showError(jsonObj.statusMessage, dynfieldFName);
        }else{
        showError('Back-end system seems to be down at the moment. Please try again later.', dynfieldFName);
        }
    }else{
        showError('Internal Error Occurred', dynfieldFName);
    }
}


function commonProgramInfoValidation(currentPagePath,profanityString ,pageNumber){

    //return true;
    var errorFlag = false;
     
   // Profanity Integration
    if(check(profanityString)==false)
    {
        errorFlag = true;
        // if profanity server is down then do not show error msg
        //errorFlag = false;
    } 
    
    //Text Fields validations
    for(var index=0;index<dynamicFieldNameArray.length-1;index++){
        
        var fieldName  =dynamicFieldNameArray[index];
        var fieldArray =dynamicLRSMMArrayPtrn[index].split(",");
        
        var fieldlabel = fieldArray[0];
        var fieldReq = fieldArray[1];
        var fieldSplChar = fieldArray[2];
        var fieldMinVal = fieldArray[3];
        var fieldMaxVal = fieldArray[4];
        var filedOrder  = fieldArray[5];
        var filedPageField  = fieldArray[6];
        
        var fieldValue = $('#'+fieldName+'').val();

     if(filedOrder <="80" && filedPageField =="2"){
        
        if(fieldReq!= 'N' && fieldValue.length < 1){
         showError('Please type your '+fieldlabel+'.',fieldName);
         errorFlag = true;
        }else if( fieldSplChar != 'N'&& isSpecialChar(fieldValue) ){
              showError('Please do not type any special charater in '+fieldlabel+'.', fieldName);
              errorFlag = true;
         }else{
                
              if(fieldValue.length > fieldMaxVal){
                      showError(fieldlabel+' can not be more than '+fieldMaxVal+' characters.', fieldName);
                      errorFlag = true;
                  }else if(fieldValue.length < fieldMinVal){
                      showError( fieldlabel+' can not be less than '+fieldMinVal+' characters.', fieldName);
                      errorFlag = true;
               }
                
              }
        }
       
      }
    var isUnderAge = false;
     for(var z=0; z < regProgData.length; z++){
           //  alert(regProgData[z].fieldname);
    if(regProgData[z].order <= "90" && regProgData[z].pageField =="2"){
             if(regProgData[z].fieldname == dynzip){
                    var zip = $('#'+dynzip+'').val(); 
                        if(regProgData[z].required != 'N' && zip.length < 1 ) {
                            showError('Please type a valid U.S. ZIP code.', dynzip);
                            errorFlag = true;
                        }else if(regProgData[z].specialChar != 'N' && isSpecialChar(zip)){
                            showError('Please do not type any special charater in ZIP code.', dynzip);
                            errorFlag = true;
                        }else {
                            var minlen = regProgData[z].minlength;
                            var maxlen = regProgData[z].maxlength;
                            if(zip.length > maxlen || zip.length < minlen || !validateZIPCode(zip)){
                                //showError('Please type a valid 5-digit U.S. ZIP code', dynzip);
                                showError('Please type a valid U.S. ZIP code.', dynzip);
                                errorFlag = true;
                            }
                        }
                    }
             
            if(regProgData[z].fieldname == 'State'){
            var state = $('#'+dynstate+'').val(); 
                if(regProgData[z].required != 'N' && state.length < 1) {
                    showError('Please select a state.', dynstate);
                    errorFlag = true;
                }
            }
           
            if(regProgData[z].fieldname == 'PhoneNumber1'){
            var cell1 = $('#cell1').val(); 
            var cell2 = $('#cell2').val(); 
            var cell3 = $('#cell3').val();
                var phonelength = cell1.length + cell2.length + cell3.length;
                if(regProgData[z].required != 'N' && phonelength < 1 ) {
                    showError('Please type a valid 10-digit cell Primary phone number.', 'cell');
                    errorFlag = true;
                }else if(phonelength > 0 && (phonelength < 10 || !IsNumeric(cell1) || !IsNumeric(cell2) || !IsNumeric(cell3))) {
                    showError('Please type a valid 10-digit Primary phone number.', 'phone');
                    errorFlag = true;
                }
            }
            if(regProgData[z].fieldname == 'PhoneNumber2'){
                    
                var cell4 = $('#cell4').val(); 
                var cell5 = $('#cell5').val(); 
                var cell6 = $('#cell6').val(); 
        
                var mobilelength = cell4.length + cell5.length + cell6.length;
                if(regProgData[z].required != 'N' && mobilelength < 1 ) {
                    showError('Please type a valid 10-digit cell mobile number.', 'cell');
                    errorFlag = true;
                }else if(mobilelength > 0 && (mobilelength < 10 || !IsNumeric(cell4) || !IsNumeric(cell5) || !IsNumeric(cell6))) {
                    showError('Please type a valid 10-digit cell mobile number.', 'cell');
                    errorFlag = true;
                }
            }
            if(regProgData[z].fieldname == 'BirthDate'){
                var bmonth = $('#bmonth').val(); 
                var bday = $('#bday').val(); 
                var byear = $('#byear').val(); 
                var bdate = byear+"-"+bmonth+"-"+bday;
                bdateValPage2 = bdate; // set global variable for page2 under age reg
                genderValPage2 = $('input[name='+dyngender+']:checked').val();
                if(regProgData[z].required != 'N' && (bmonth.length < 1 || bday.length < 1 || byear.length < 1 )) {
                    showError('Please select your Birth Date.', 'birthdate');
                    errorFlag = true;
                }else if(!IsValidDate(bmonth, bday, byear) && !validateLeapYearDate(bmonth, bday, byear)){
                    showError('Please select valid Birth Date.', 'birthdate');
                    errorFlag = true;
                }else{
                    if((regData.isRegisteredAdult!=undefined && regData.isRegisteredAdult =='Y')){
                        //Adult User by pass to survey page for existing user sign on
                        errorFlag =false;
                    }else{
                        var leapYear = validateLeapYearDate(bmonth, bday, byear);
                        var min_age = minimumAge;                       
                        var myDate=new Date(parseInt(byear)+parseInt(min_age),parseInt(bmonth)-1,bday);                                                 
                        var today = new Date();                        
                        //Get 1 day in milliseconds
                        var one_day = 0;
                        if(leapYear){
                            one_day = 1000*60*60*24*366;
                        }else{
                            one_day = 1000*60*60*24*365;
                        }                         
                        var age = ((today.getTime()-myDate.getTime())/(one_day));                        
                        if(age < 0){                              
                             //u18RegistrationPage(currentPagePath);
                        	isUnderAge = true;
                             //errorFlag = true;
                        }                      
                    }
                }
            }
            if(regProgData[z].fieldname == 'Gender'){
            var gender = $('input[name='+dyngender+']:checked').val();
                if(regProgData[z].required != 'N' && !gender) {
                    showError('Please select a gender.', dyngender);
                    errorFlag = true;
                }
            }            
      }
     }
     if((errorFlag == false)&&(isUnderAge == true)){
    	 var isPage2 = true;
    	 u18RegistrationPageDisplay(currentPagePath,regData,isPage2);
		 errorFlag = true;
     }
   return !errorFlag;
}
function validateSubscriptions(){
    // validate user subscriptions
    var errorFlag = false;
    if(programSubscriptionVal.length >= 0){
        for(var subCount=0; subCount<programSubscriptionVal.length; subCount++){
            var programSubscription = programSubscriptionVal[subCount].split(':');
            var subDescription = programSubscription[0];
            var subIsRequired = programSubscription[1];
            var subId = programSubscription[2];
            if((subIsRequired == 'Y') && (document.getElementById(subId).checked == false)){
                showError('Please subscribe to: '+subDescription, subId);               
                errorFlag = true;
            }else {
                clearError(subId);              
            }
        }       
    }
    return errorFlag;
}

/*function u18RegistrationPage(pagePath) { 
    var pageUrl = pagePath+".registrationPage.html?regPage=under18";
    $.ajax({ url: pageUrl,
        success: function(msg){
        $('#loginmoduleform').html(msg);
          }});
    }*/


function u18RegistrationPageDisplay(pagePath,jsonData,isPage2) { 
    var pageUrl = pagePath+".registrationPage.html?regPage=under18";
    $.ajax({ url: pageUrl,
        success: function(msg){
            $('#loginmoduleform').html(msg);
            dispalyUnderAgeInfo(jsonData);
            if(isPage2 == true){
                submitUnderAgeInfo(jsonData);
            }
        }});
    }
function dispalyUnderAgeInfo(jsonData){
    
    if(jsonData!=null && jsonData!="" && jsonData.userUnderAgeInfo.length > 0){
        
        var userAgeInfo =jsonData.userUnderAgeInfo[0];
        
        var userAgeInfohtml = new StringBuffer();
        
        userAgeInfohtml.append("<br/>");
        userAgeInfohtml.append("<h1>");
        userAgeInfohtml.append(userAgeInfo.AgeCopy);
        userAgeInfohtml.append("</h1>");
        userAgeInfohtml.append("<br>");     
        //userAgeInfohtml.append("<a href=\""+userAgeInfo.AgeUrl+"\" >");
        //userAgeInfohtml.append(userAgeInfo.AgeLink);
        //userAgeInfohtml.append("</a>");

        $('#underageInfo').html(userAgeInfohtml.toString());
    
    }
}

function submitUnderAgeInfo(jsonData){
    
    if(jsonData !=undefined && jsonData.userinfo!=undefined && jsonData.userinfo.length > 0){
        var pageUrl = "/registration/processlogin";
        var minimumAge = regData.minimumAge;
        var isRegisteredAdult = regData.isRegisteredAdult;
        var eProfileId = eProfileIdPage2;
        var bdate = bdateValPage2; // jsonData.userinfo[0].dob;
        var gender =  genderValPage2; //(jsonData.userinfo[0].gender!=undefined)?jsonData.userinfo[0].gender:"";        
         $.ajax({ url: pageUrl,
             type: 'post',
             data: {"screen":"fullregistration",
                    "loginklogid":regUsername, 
                    "passwordklogid":regPassword, 
                    "regBirthdate":bdate, 
                    "regGender":gender,
                    "minimumAge":minimumAge,
                    "isRegisteredAdult":isRegisteredAdult,
                    "eProfileId":eProfileId,
                    "passmode":passmode,
                    "programSubscriptionList":glbProgramSubscriptionIds,
                    "dsc":regDsc},
               beforeSend: function() {
                     $('#ajaxLoading').show();
               },
               error: function(request,error) {
                 alert('Internal Error Occurred.');
               },
               success: function(msg){
                 //alert('Successfully sent at back end');
               }
         });
         
    }
}
/** Registration Form3 JS - End */

/** Registration Form3 JS - Start */

function tyRegistrationPage(pagePath) { 
var pageUrl = pagePath+".registrationPage.html?regPage=thankyou";
$.ajax({ url: pageUrl,
    success: function(msg){
    $('#loginmoduleform').html(msg);
      }});
}
function submitRegForm3(currentPagePath) { 
//Get Subscriptions
var programSubscriptionIds = getSelectedSubscriptions();
$.ajax({ url: "/registration/processlogin",
         type: 'post',
         data: $("#surveyForm").serializeArray(),
              beforeSend: function() {
                    $('#ajaxLoading').show();
              },
              error: function(request,error) {
                  showError('Internal Error Occurred', 'preference');  
              },
              success: function(msg){
               processRegForm3(msg,currentPagePath);
              },
              complete: function() {
                $('#ajaxLoading').hide();
             }});
}

function processRegForm3(jsonData,currentPagePath){
    var jsonObj = jQuery.parseJSON(jsonData);
    if(jsonObj.status == 'SUCCESS'){
        var nexturl = readCookie("thankyoupage");
        eraseCookie("thankyoupage"); 
        createCookie("tyUsername",regUsername,0);
        createCookie("tyPassword",regPassword,0);
        createCookie("pwdMode",passmode,0);
        location.href = nexturl;
        //tyRegistrationPage(currentPagePath);
    }else if(jsonObj.statusCode == 'E005'){
        showError('Back-end system seems to be down at the moment. Please try again later.', 'preference');
    }else if(jsonObj.statusCode == 'E004'){
    	showError('System Error. Please try again later.', 'preference');
    }else if(jsonObj.status == 'FAILURE'){
        showError('Internal Error Occurred. Please try again.', 'preference');
    }else if(jsonObj.status == 'ERROR'){
        showError('Back-end system seems to be down at the moment. Please try again later.', 'preference');
    }else{
        showError('Internal Error Occurred.', 'preference');
    }
}
/** Registration Form3 JS - End */



/** Forgot Password JS - Start */
function submitRPForm(currentPagePath) { 
var userid = document.getElementById("emailId").value;
clearError('emailId');

if(validateEmailId(userid)){

var pageUrl = "/registration/processlogin";
$.ajax({ url: pageUrl,
    type: 'post',
    data: {"screen":"forgotpassword",
           "loginklogid":userid},
    beforeSend: function() {
         $('#ajaxLoading').show();
    },
    success: function(msg){
    processForgotPwd(msg, currentPagePath);
      //$('#leftColumContent').html(msg);
      },
    complete: function() {
        $('#ajaxLoading').hide();
    }});
}
$('#emailId').focus();
}
function processForgotPwd(jsonData, pagePath){
    var jsonObj = jQuery.parseJSON(jsonData);
    if(jsonObj.status == 'SUCCESS'){
       resetPasswordTyPage(pagePath);
    }else if(jsonObj.statusCode == 'E005'){
        showError('Back-end system seems to be down at the moment. Please try again later.', 'emailId');
    }else if(jsonObj.statusCode == 'E004'){
    	showError('System Error. Please try again later.', 'emailId');
    }else if(jsonObj.status == 'FAILURE'){
        if(jsonObj.statusCode == 'E109'){
         showError('Email not sent.', 'emailId');
        }else{
        showError('Your e-mail was not found. Please try again.', 'emailId');
        }
    }else if(jsonObj.status == 'ERROR'){
        showError('System Error Occurred.', 'emailId');
    }
}

function validateEmailId(userid){
var errorFlag = false;
if(userid.length < 1) {
    showError('Please type your E-mail Address.', 'emailId');
    errorFlag = true;
}else if(!validateSpecialAll(userid)){
    showError('Special characters are not allowed.', 'emailId');
    errorFlag = true;
}

return !errorFlag;
}

function validateSpecialAll(data){
 var illegalChars = "\'\%;()&+\"<>";
     for (var i = 0; i < data.length; i++)
     {
         if (illegalChars.indexOf(data.charAt(i)) != -1){
          return false;
         }
     }
 return true;
} 
function isSpecialChar(data){
  var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";

  for (var i = 0; i < data.length; i++) {
    if (iChars.indexOf(data.charAt(i)) != -1) {
    return true;
    }
  }
   return false;
}

function registrationform() { 
    if(((location.href).indexOf("http://")) >= 0)
    {
        var pageUrl = "http://";
    }
    else
    {
        var pageUrl = "https://";
    }
    var pageUrl = pageUrl + location.hostname + ":" + location.port + "/bin/urlExists.json?testURL=http://www.google-analytics.com/__utm.gif?utmwv=5.1.5&utms=1&utmn="+Math.floor(Math.random()*2147483647)+"&utmhn="+window.location.hostname+"&utmcs=utf-8&utmsr=1280x1024&utmsc=32-bit&utmul=en-us&utmje=1&utmfl=10.2%20r152&utmdt=Welcome%20to%20Morningstar%20Farms%C2%AE%20Registration%20First%20Page%20&utmhid=1019994575&utmr=-&utmp=%2Fcommunitylogin.html&utmac=UA-5624474-1&utmcc=__utma%3D192044854.86585640.1299587021.1313605395.1313694237.59%3B%2B__utmz%3D192044854.1313694237.59.20.utmcsr%3Dstage.morningstarfarms.com%7Cutmccn%3D(referral)%7Cutmcmd%3Dreferral%7Cutmcct%3D%2Fcommunitylogin.html%3B&utmu=D~";
    $.ajax({ url: pageUrl,
        success: function(msg){
        }});
    }
 
function registrationform2() { 
    if(((location.href).indexOf("http://")) >= 0)
    {
        var pageUrl = "http://";
    }
    else
    {
        var pageUrl = "https://";
    }
    var pageUrl = pageUrl + location.hostname + ":" + location.port + "/bin/urlExists.json?testURL=http://www.google-analytics.com/__utm.gif?utmwv=5.1.5&utms=2&utmn="+Math.floor(Math.random()*2147483647)+"&utmhn="+window.location.hostname+"&utmcs=utf-8&utmsr=1280x1024&utmsc=32-bit&utmul=en-us&utmje=1&utmfl=10.2%20r152&utmdt=Welcome%20to%20Morningstar%20Farms%C2%AE%20Registration%20Contact%20Page%20&utmhid=1019994575&utmr=-&utmp=%2Fcommunitylogin.html&utmac=UA-5624474-1&utmcc=__utma%3D192044854.86585640.1299587021.1313605395.1313694237.59%3B%2B__utmz%3D192044854.1313694237.59.20.utmcsr%3Dstage.morningstarfarms.com%7Cutmccn%3D(referral)%7Cutmcmd%3Dreferral%7Cutmcct%3D%2Fcommunitylogin.html%3B&utmu=D~";
    $.ajax({ url: pageUrl,
        success: function(msg){
        }});
    }
 
function registrationform3() { 
    if(((location.href).indexOf("http://")) >= 0)
    {
        var pageUrl = "http://";
    }
    else
    {
        var pageUrl = "https://";
    }
    var pageUrl = pageUrl + location.hostname + ":" + location.port + "/bin/urlExists.json?testURL=http://www.google-analytics.com/__utm.gif?utmwv=5.1.5&utms=3&utmn="+Math.floor(Math.random()*2147483647)+"&utmhn="+window.location.hostname+"&utmcs=utf-8&utmsr=1280x1024&utmsc=32-bit&utmul=en-us&utmje=1&utmfl=10.2%20r152&utmdt=Welcome%20to%20Morningstar%20Farms%C2%AE%20Registration%20Survey%20Page%20&utmhid=1019994575&utmr=-&utmp=%2Fcommunitylogin.html&utmac=UA-5624474-1&utmcc=__utma%3D192044854.86585640.1299587021.1313605395.1313694237.59%3B%2B__utmz%3D192044854.1313694237.59.20.utmcsr%3Dstage.morningstarfarms.com%7Cutmccn%3D(referral)%7Cutmcmd%3Dreferral%7Cutmcct%3D%2Fcommunitylogin.html%3B&utmu=D~";
    $.ajax({ url: pageUrl,
        success: function(msg){
        }});
    }
/** Forgot Password JS - End */


