/*** COPYRIGHT 2010  BY FDM4 INTERNATIONAL INC. - ALL RIGHTS RESERVED ********/
/*** login.js -- Login JavaScript Functionality                            ***/ 
/*****************************************************************************/
/* 010003 01/31/10 JB - Passed mode to registerRequest - validate only.      */
/* 010002 01/31/10 JB - Added register functions, changed loginRequest.      */
/* 010001 01/19/10 APY- Add overlay during ajax calls.                       */
/* 010000 01/13/10 JB - New script.                                          */
/*****************************************************************************/
  var vCookieName="saveLogin"+fdmCookie+fdmSponsor;
  var vCookieValue= getCookie(vCookieName);

  function updateLogin(vChecked)
 {
     if(vChecked)
    {
      var expirydate = new Date();
      expirydate.setTime( expirydate.getTime() + (3650 * 24 * 60 * 60 * 1000) );
      if(vCookieValue!="")
     { deleteCookie(vCookieName, "/", document.domain.substring(document.domain.lastIndexOf(".",document.domain.lastIndexOf(".") - 1), document.domain.length), null); }
      setCookie(vCookieName, document.login.strUserId.value + "|" + document.login.strPassword.value, expirydate, "/", document.domain.substring(document.domain.lastIndexOf(".",document.domain.lastIndexOf(".") - 1), document.domain.length), null);
     }
     else
    {
      deleteCookie(vCookieName, "/", document.domain.substring(document.domain.lastIndexOf(".",document.domain.lastIndexOf(".") - 1), document.domain.length), null);
    }
  }
 function getSavedLogin() 
 {

   if(vCookieValue!=""&&vCookieValue!=null&&vCookieValue!=";")
  {
    var login_password=vCookieValue.split("|");
    document.login.strUserId.value=login_password[0];
    document.login.strPassword.value=login_password[1];
    document.login.savelogin.checked=true;
   }
  }
function loginRequest(action,user,pass,loc)                        /* 010002 */
{
 if(checkBlank(user)) {
  setMessage("Please enter a user name or email address");
  user.focus();
  return;
 }
 if(checkBlank(pass)==true&&action=="login") {
    setMessage("Please enter a password");
    pass.focus();
    return;
 }
 addOverlay(); /* 010001 */

 $.ajax(
 {  
  type: "GET", url: appPath +"/xml/login-request.w?action=login&sponsor="+fdmSponsor+"&userid="+user.value+"&password="+pass.value+"&location="+escape(loc), dataType : "xml", complete:  /* 010003 */
   function (data) 
   {
    var vLoginObj=$.xmlToJSON(data.responseXML);
    var vResponse="";
    var vValid=vLoginObj.loginRequest[0].valid!="no";
 
     if(!vValid)vResponse=vLoginObj.loginRequest[0].response[0].code;

     if(!vValid&&!(vResponse=="password"&&action=="hint")) 
     {
      setMessage(vLoginObj.loginRequest[0].response[0].Text);
      return;
     }
     if(action=="hint") {
      setMessage("Password Hint: "+vLoginObj.loginRequest[0].hint[0].Text);
      return;
     }
     if(vValid)
     {
      var vDomain=document.domain.substring(document.domain.lastIndexOf(".",document.domain.lastIndexOf(".") - 1), document.domain.length);
      var vIPCheck=vDomain.split(".");
      if(!isNaN(vIPCheck[1])) vDomain=null;
      
      var vCookieExp=vLoginObj.loginRequest[0].cookiedate[0].Text;
      var vCookieDate=new Date(vCookieExp);
      var vDateToday=new Date();
      
      if((vCookieExp<=vDateToday)||(navigator.userAgent.indexOf("Mac") != -1))
        vCookieDate=null;

      var vFirstName=vLoginObj.loginRequest[0].firstname[0].Text;
      var vLastName=vLoginObj.loginRequest[0].lastname[0].Text;
      var vCookieValue=vLoginObj.loginRequest[0].cookievalue[0].Text;
      var vRedirect=vLoginObj.loginRequest[0].redirect[0].Text;
      
      deleteCookie(fdmCookie,"/",vDomain,null);
      deleteCookie(fdmCookie+fdmSponsor,"/",vDomain,null);

      setCookie(fdmCookie+fdmSponsor,vCookieValue,vCookieDate,"/",vDomain,null);
      setCookie("loggedIn"+fdmCookie,vFirstName+" "+vLastName,vCookieDate,"/",null,null);

      if(document.getElementById('savelogin')!=null)   
       updateLogin(document.login.savelogin.checked);                
      document.location.href=vRedirect+"&target=main&sponsor="+fdmSponsor; 
      //removeOverlay(); /* 010001 */
     }
    }
 });
}
function setMessage(pMsg)
{
 if (document.getElementById("loginMessageArea")!=null) {
  document.getElementById("loginMessageArea").innerHTML=pMsg; }
 else alert(pMsg);
 removeOverlay(); /* 010001 */
}
function registerRequest()
{
 var custnum=document.login.cust_number;
 var rphone=document.login.contact_phone;
 var rpcode=document.login.contact_pcode;

 if(checkBlank(custnum)) {
   setMessage("Please enter a valid account number");
   custnum.focus();
   return;
 }

 var vValidPhone=validPhoneNumber(rphone);
 if(!vValidPhone) { setRegMessage("Please enter a valid phone number - digits only please"); return; }

 if(checkBlank(rpcode)) {
   setMessage("Please enter a postal/zip code");
   rpcode.focus();
   return;
  }
 addOverlay(); /* 010001 */
 $.ajax(
 {  
  type: "GET", url: appPath +"/xml/register-request.w?mode=validate&sponsor="+fdmSponsor+"&cust_number="+custnum.value+"&contact_phone="+rphone.value+"&contact_pcode="+rpcode.value, dataType : "xml", complete:   /* 010003 */
   function (data) 
   {
    var vRegObj=$.xmlToJSON(data.responseXML);
    var vResponse="";
    var vValid=vRegObj.registerRequest[0].valid!="no";
 
     if(!vValid)vResponse=vRegObj.registerRequest[0].response[0].code;

     if(!vValid) 
     {
      setRegMessage(vRegObj.registerRequest[0].response[0].Text);
      return; 
     }
     if(vValid)
     {
      var vPcode=vRegObj.registerRequest[0].contactpcode[0].Text;
      var vAction=hostDomain+appPath+"/site.w?target=main&continued=false&frames=no&sponsor="+fdmSponsor;  
      document.login.contact_pcode.value=vPcode;  // make sure zip format matches what was previously validated
      document.login.location.value="registration_form.w";
      document.login.action=vAction;
      document.login.method="POST";
      document.login.submit();
     }
    }
 });
}

function setRegMessage(pMsg)
{
 if (document.getElementById("registerMessageArea")!=null) {
  document.getElementById("registerMessageArea").innerHTML=pMsg; }
 else alert(pMsg);
 removeOverlay(); /* 010001 */
}

$(document).ready(function() {
  if(document.getElementById('strUserId')!=null)
   document.getElementById('strUserId').focus();
  if(document.getElementById('savelogin')!=null)
    getSavedLogin();
});

function validPhoneNumber(thisNumber)
{
 var number = "";
 for (i=0; i < thisNumber.value.length; i++) 
 {  
  if ( !isNaN(Number(thisNumber.value.substring(i,i + 1)))&&(thisNumber.value.substring(i,i + 1)!=" ")) 
  {
   number = number + thisNumber.value.substring(i,i + 1);
  }
 }
 if(number.length!=10)
 {
  thisNumber.focus(); 
  thisNumber.select(); 
  return false;
 }
 thisNumber.value = number;
 return true;
}
/******vv 010001 vv******/
addOverlay = function(){
  $(".overlay").height($("body").outerHeight())
               .width($("body").outerWidth())
               .css("opacity",0.5)
               .show();
}

removeOverlay = function(){
  $(".overlay").hide();
}
 /******^^ 010001 ^^******/

/********************v 010002 v********************/

validate_account = function()
{
 var formObj = document.register;                                            
 var return_val = true;
          // retrieve login name and current password
   var password = new String(formObj.web_user_password.value);
   var username = new String(formObj.web_user_email.value);

   if(checkBlank(formObj.contact_first_name))
   {
    self.scroll(0,0);
    alert("You must enter a first name.");
    formObj.contact_first_name.focus();
    return false;
   }
   if(checkBlank(formObj.contact_last_name))
   {
    self.scroll(0,0);
    alert("You must enter a last name.");
    formObj.contact_last_name.focus();
    return false;
   }
   if(checkBlank(formObj.contact_email))
   {

    self.scroll(0,0);
    alert("You must enter a direct email address.");
    formObj.contact_email.focus();
    return false;
   }
   if (checkBlank(formObj.web_user_email))
   {
      self.scroll(0,0);
      alert("You must enter an email address.");
      formObj.web_user_email.focus();
      return false;
   }
   if (checkBlank(formObj.web_user_password))
   {
      self.scroll(0,0);
      alert("You must enter a password");
      formObj.web_user_password.focus();
      return false;
   }
    if (password.length < 8)
   {
      self.scroll(0,0);
      alert("Your password must be at least 8 characters in length.");
      formObj.web_user_password.focus();
      return false;
   }
          if ((password.charAt(0) == password.charAt(1)) && (password.charAt(1) == password.charAt(2)))
   {
      self.scroll(0,0);
      alert("Your password's first 3 characters may not be the same.");
      formObj.web_user_password.focus();
      return false;
   }
          var subpass;
   var endstr = password.length-2;
   for (i=0;i<endstr;i++)
   {
      subpass = password.substring(i,i+3);
      if (username.indexOf(subpass,0) >= 0)
      {
         self.scroll(0,0);
         alert("Your password may not contain any 3 continuous characters in your username.");
         formObj.web_user_password.focus();
         return false;
      }
   }
   if ((return_val == true) && (formObj.web_user_password.value.indexOf(formObj.web_user_email.value, 0) > -1))
   {
      self.scroll(0,0);
      alert("Your password can not equal or contain your username.");
      formObj.web_user_password.focus();
      return false;
   }
   if (password.indexOf("_") >= 0 || password.indexOf(" ") >= 0)
   {
       alert("No underscores or spaces may be used as part of your password.");
       formObj.web_user_password.focus();
       return false;
   }
   if (formObj.web_user_confirm_password.value == "")
   {
      self.scroll(0,0);
      alert("You must confirm your password");
      formObj.web_user_confirm_password.focus();
      return false;
   }
   if ((return_val == true) && (formObj.web_user_confirm_password.value != formObj.web_user_password.value))
   {
      self.scroll(0,0);
      alert("Your password confirmation does not match your password");
      formObj.web_user_confirm_password.focus();
     return false;
   }
 if (formObj.web_user_answer.value == "")
 {
       alert("You must enter a security answer in order to continue.");
       formObj.web_user_answer.focus();
       return false;
 }
   if(formObj.sec_questions.selectedIndex == 0)
  {
      alert("Please choose a security question in order to continue.");
      formObj.sec_questions.focus();
      return false;
  }
   if (formObj.sec_questions.value==password)
  {
    alert("Your password hint must be different than your password.");
    formObj.sec_questions.focus();
    return false;
   }
   return true;
}

registerSubmit = function()
{
  $.ajax(
 {  
  type: "POST", data : $("form").serialize(), url: hostDomain+appPath +"/xml/register-request.w?mode=singleuser&sponsor="+fdmSponsor, dataType : "xml", complete: 
   function (data) 
   {
    var vRegObj=$.xmlToJSON(data.responseXML);
    var vResponse="";
    var vValid=vRegObj.registerRequest[0].valid!="no";
 
     if(!vValid)vResponse=vRegObj.registerRequest[0].response[0].code;

     if(!vValid) 
     {
      setRegMessage(vRegObj.registerRequest[0].response[0].Text);
      return; 
     }
     if(vValid)
     {
       loginRequest("login",document.register.web_user_email,document.register.web_user_password,"site.w?location=olc/orders.w");
     }
    }
 });
}
/********************^ 010002 ^********************/

