﻿
$("#txtFullName").focus();
var commonbool = 0;
var finalRes = false;
var UnameAvail = false;
var initialMessage = '';
var q1 = '';
var q2 = '';
var q3 = '';

function chkLength(ctrl,length)
{
var prmVal=$(ctrl).val();
var result=MatchLength(prmVal,length);
return result;
}
/*
Method Name:- WhiteSpace_LengthValidate
Functionality:- checks length of content and occurrance of white space in userinput
Params:-  event (Required for checking key code)
ctrl:-    Html Element on which validation is to be applied
length:-  Length of content against which validation is to be applied eg. if specified '30' as param, it means not more than 30 character
ctrlTxt:- name of control for which white space validation is applied . eg. password, username etc. if '{noNeed}' specified it means space is allowed
*/
function WhiteSpace_LengthValidate(event,ctrl,length,ctrlTxt)
{
var allow=isWhiteSpace(event,ctrlTxt);
if(allow=='backspace')
{
return true; 
}
if(!allow)
{return false;
}else{
return chkLength(ctrl,length);
}

}

function getoriginal1() {
    var ctrl = $('#password1').get();
    var ctrlMask = $('#pass_temp1').get();
    BlurText(ctrlMask, 'Retype Password');

}
function changeBox1() {
    document.getElementById('TempPassdiv1').style.display = 'none';
    document.getElementById('Passdiv1').style.display = 'block';
    document.getElementById('password1').focus();
    document.getElementById('password1').value = '';
}
function restoreBox1() {
    if (document.getElementById('password1').value == '') {
        document.getElementById('TempPassdiv1').style.display = 'block';
        document.getElementById('Passdiv1').style.display = 'none';
    }
}
function focusText1(ctrl, testString) {
    var initialText = $(ctrl).val();
    if (initialText == testString) {
        $(ctrl).val('');
    }
}













function getoriginal() {
    var ctrl = $('#password').get();
    var ctrlMask = $('#pass_temp').get();
    BlurText(ctrlMask, 'Create a password');
    
}
function changeBox() {
    document.getElementById('TempPassdiv').style.display = 'none';
    document.getElementById('Passdiv').style.display = 'block';
    document.getElementById('password').focus();
    document.getElementById('password').value = '';
}
function restoreBox() {
    if (document.getElementById('password').value == '') {
        document.getElementById('TempPassdiv').style.display = 'block';
        document.getElementById('Passdiv').style.display = 'none';
    }
}
function focusText(ctrl, testString) {  
        var initialText = $(ctrl).val();
        if (initialText == testString) {
            $(ctrl).val('');
        }
}
function BlurText(ctrl, originalString) {
        var initialText = $(ctrl).val();       
        if (initialText == '') {
            $(ctrl).val(originalString);
        }
    }



    function NameValidation(ctrl1) {
        var resultName = false;
        var crtlval=alltrim( $(ctrl1).val());
        if (crtlval == 'Enter your name'||crtlval=='') {
            var ErrorCtrl = $('#lblFullNameMessage').get();
            SetInstructionMsg(ErrorCtrl, 'Please enter name.');
            resultName = false;
        }
        else {
            resultName = CallBlur(ctrl1, '#lblFullNameMessage', 'Alphanumeric & Special Characters are not allowed.', '^[\\sa-zA-Z]+[a-zA-Z]+[\\sa-zA-Z0-9]*$');
        }
        
        return resultName;
    }
    
    function CheckEmail(email)
    {
           var e_array=email.split("@");                      
           echo= e_array[1];
           echo=echo.toLowerCase();
           if(echo == 'filestacker.com')
           {
              return false;
           }
           else
           {
              return true;
           }
    }
    function EmailValidation(emailValue) 
    {               
           var status=  echeck(emailValue);
           var resultEmail=false;                       
           if (!status)
           {
               SetInstructionMsg('#lblEmailMessage', 'Please enter valid e-mail address(eg. abc@xyz.com).');
               return resultEmail;
           }
           else 
           {
               $('#lblEmailMessage').html('');
               resultEmail=true;
           }
                      
           if (resultEmail) 
           {
               CheckAvailibility(emailValue, '#lblEmailMessage');
               resultEmail = finalRes;
               if (!resultEmail) 
               {
                   SetErrorClass('#lblEmailMessage');
                   SetInstructionMsg('#lblEmailMessage', 'E-mail address has already been taken');
                   resultEmail=false;
               }
               else 
               {
                   resultEmail=true;
                   $('#lblEmailMessage').html('');
               }
               resultEmail=CheckEmail(emailValue);
               if(resultEmail)
               {
                  $('#lblEmailMessage').html('');
               }
               else
               {
                  SetInstructionMsg('#lblEmailMessage', 'Use other email address except FileStacker.');
               }                              
           }
       return resultEmail;       
    }

     function PasswordValidation(password) {
       var  resultPassword = validatePassword(password, {
             length: [6, 16],
             lower: 0,
             upper: 0,
             numeric: 0,
             special: 0,
             /*badSequenceLength: 4*/
             badSequenceLength: 0
         });

         if (!resultPassword) {
             SetInstructionMsg('#lblPasswordMessage', 'Password must be 6-16 characters.');
            
             return resultPassword;
         }
         else {
             $('#lblPasswordMessage').html('');
            
              return resultPassword;
         }

     
     
     
     }


     function MatchPassword(password, repassword) {
         
         var resultRetypePass = false;
         if (password != repassword) {
             
             SetInstructionMsg('#lblRetypePasswordMessage', 'Password`s do not match');
             resultRetypePass = false;

         }
         else {
            
             $('#lblRetypePasswordMessage').html('');
             resultRetypePass = true;
         }
         return resultRetypePass;
     }





function Validate() {
$('#ctl00_ContentPlaceHolder1_successful').html('');
var ctrl1=$("#txtFullName").get();
var ctrl2=$("#txtEmail").get();
var ctrl3 = $("#password").get();
var retypePassCtrl = $("#password1").get();
var ctrlUname=$("#txtUsername").get();
var ctrlAns1 =$("#txtAns1").get();
var ctrlAns2 =$("#txtAns2").get();
var ctrlAns3 = $("#txtAns3").get();



var ErrorCtrl = $('#lblErrorUserName').get();
var ErrorCtrlAns1 = $('#lblErrorAns1').get();
var ErrorCtrlAns2 = $('#lblErrorAns2').get();
var ErrorCtrlAns3 = $('#lblErrorAns3').get();



var EmailVal = alltrim($(ctrl2).val());
var password = $(ctrl3).val();
var retypePassVal = $(retypePassCtrl).val();

commonbool = 1;
var resultName = false;
var resultEmail = false;
var resultPassword = false;
var resultRetypePass = false;

var AllowUserNameChecked = $('#hdnAllowUserName').val();
resultName=NameValidation(ctrl1);
//resultEmail = EmailValidation(EmailVal);
if (AllowUserNameChecked=="true")
{      resultEmail = true;  }
else { resultEmail = EmailValidation(EmailVal); }
resultPassword = PasswordValidation(password);
//resultRetypePass = MatchPassword(password, retypePassVal);
if (AllowUserNameChecked == "true")
{ resultRetypePass = MatchPassword(password, retypePassVal); }
else { resultRetypePass = true; }

var resultUname = false;
var resultAns1 = false;
var resultAns2 = false;
var resultAns3 = false;

var UnameValue = alltrim($(ctrlUname).val());

var ans1 = alltrim($(ctrlAns1).val());
var ans2 = alltrim($(ctrlAns2).val());
var ans3 = alltrim($(ctrlAns3).val());
if (AllowUserNameChecked) {
    if (UnameValue == 'Create a username' || UnameValue=='') {
        SetInstructionMsg(ErrorCtrl, 'Please enter username.');
        resultUname = false;
    }
    else {
       
            CheckAvailibilityUserName(UnameValue, ErrorCtrl);
            resultUname = UnameAvail;

            if (resultUname) {
               
                $(ErrorCtrl).html('');
            }
            else {
               
                SetInstructionMsg(ErrorCtrl, 'Username already exist');
                resultUname = false;
            }
    }

    if (ans1 == q1 || ans1=='') {
        SetInstructionMsg(ErrorCtrlAns1, 'Please enter ans.');
        resultAns1 = false;
    }

    else {
        resultAns1 = true;
        $(ErrorCtrlAns1).html('');
    }
    if (ans2 == q2 || ans2 =='') {
        SetInstructionMsg(ErrorCtrlAns2, 'Please enter ans2.');
        resultAns2 = false;
    }

    else {
        resultAns2 = true;
        $(ErrorCtrlAns2).html('');

    }
    if (ans3 == q3 || ans3=='') {
        SetInstructionMsg(ErrorCtrlAns3, 'Please enter ans3.');
        resultAns3 = false;
    }
    else {
        resultAns3 = true;
        $(ErrorCtrlAns3).html('');
    }

}

if (AllowUserNameChecked=="true") {
   
}
else {
    
    
    resultAns1 = true;
    resultAns2 = true;
    resultAns3 = true;
}


if (resultName && resultEmail && resultPassword && resultRetypePass && resultAns1 && resultAns2 && resultAns3 && resultUname) {
    
    return true;
  }
  else {
     
    return false;
     }
}

function IntializeControl(ErrorCtrl) {
    $(ErrorCtrl).removeClass("info");
    $(ErrorCtrl).removeClass("error");
    $(ErrorCtrl).removeClass("ok");
    $(ErrorCtrl).addClass("info");
}

function SetOkClass(ErrorCtrl) {
    $(ErrorCtrl).removeClass("info");
    $(ErrorCtrl).removeClass("error");
    $(ErrorCtrl).addClass("ok");
}

function SetErrorClass(ErrorCtrl) {
//    $(ErrorCtrl).removeClass("ok");
//    $(ErrorCtrl).removeClass("info");
    //    $(ErrorCtrl).addClass("error");

    $(ErrorCtrl).removeClass("info");
    $(ErrorCtrl).removeClass("error");
    $(ErrorCtrl).removeClass("ok");
    $(ErrorCtrl).addClass("info");

}

function CallFocus(ctrl, ErrorCtrl, infoMsg, masktext) {
    initialMessage = $(ctrl).val();
    if (masktext=='' || (masktext == initialMessage)) {
        $(ctrl).val('');
    }
     var Inst = infoMsg;
     IntializeControl(ErrorCtrl);
     SetInstructionMsg(ErrorCtrl, Inst);
   }


   function CallBlur(ctrl, ErrorCtrl, ErrorMsg,  expression) {       
    $(ErrorCtrl).attr('style', 'display:none;');   
    if (CheckVal($(ctrl).val(), "Blank")) {
        if (commonbool > 0) {
            SetInstructionMsg(ErrorCtrl, ErrorMsg);
            SetErrorClass(ErrorCtrl);
            return false;
        }
        else {
            $(ctrl).val(initialMessage);
            initialMessage = '';
        }
    }
    else {
        initialMessage = '';
        if (CheckVal($(ctrl).val(), expression)) {
            // SetInstructionMsg(ErrorCtrl, "ok");           
            commonbool = 1;
           // SetOkClass(ErrorCtrl);
            return true;
        }
        else {
            SetInstructionMsg(ErrorCtrl, ErrorMsg);
            SetErrorClass(ErrorCtrl);
            return false;
        }   
    }
             
}


function SetInstructionMsg(ctrl, Inst) {
    $(ctrl).attr('style', 'display:block;');
    // $(ctrl).html(Inst);
    $(ctrl).html('<a onMouseover=\"ddrivetip(\'' + Inst + '\')\" onMouseout=\"hideddrivetip()\"><img src=\'fsimages/info.jpeg\' /></a>');
}







function CheckVal(val, type) { 
    var prmType=type;
    var result = false;
    if (prmType == "Blank") {
        if (val.length > 0) {                     return result;                          }
        else {            result = true;            return result;        }
    }
   
    else {
        var regexp = new RegExp(prmType);        
       if(regexp.test(val)){
      result = true;
      }
      else{result=false;}
      return result;
  }
    



}


function CheckAvailibility(val, ctrl) {
    $(ctrl).html('<img src="Fsimages/ajax-loader.gif"></img>');
    var datac = "";
    var options = "";

    datac = "{ 'prmVal': '" + val + " ' }";
    options = {
        type: "POST",
        url: "WebServices/WebService.asmx/GetCountEmail",
        async: false,
        data: datac,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            var result = response.d;
            if (result == 0) {
                // SetInstructionMsg(ctrl, "Email ID Available.");
                //SetOkClass(ctrl);                
                finalRes = true;
                return;
            }
            else {                
                //SetInstructionMsg(ctrl, "Email ID has already been taken.");
                // SetErrorClass(ctrl);
                finalRes = false;
            }
        }
    };
    $.ajax(options);


}


function CheckAvailibilityUserName(val, ctrl) {
    
    $(ctrl).html('<img src="Fsimages/ajax-loader.gif"></img>');
    var datac = "";
    var options = "";

    datac = "{ 'prmUser': '" + val + " ' }";
    options = {
        type: "POST",
        url: "WebServices/WebService.asmx/GetByUserName",
        async: false,
        data: datac,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {

        var result = response.d;

        
            if (result == 0) {
                
                UnameAvail = true;
                return;
            }
            else {
                UnameAvail = false;
                
                //finalRes = false;
            }
        }
    };
    $.ajax(options);


}















function ClearErrorinLoginDiv() {  
    $('#divPopUPLogin span').css("visibility", "hidden");
    var ctrllist = $('#divPopUPLogin Input[type="Text"]');
    for (var i = 0; i < ctrllist.length; ++i) {
        $(ctrllist[i]).val('');
    }
    var div = $('div.LoginErrorBox div');
    $(div).html(''); 
    $('LoginErrorBox').css("visibility", "hidden");
}



function SetErrorDivs() {
    $('#divPopUPLogin span').css("visibility", "visible");
}

function hide() {
    var triggersCFolder = $('#cc');
    $('#divPopUPLogin').jqm({
        trigger: triggersCFolder,
        ajax: '',
        target: '#closeFilePopup a',
        overlay: 0
    });
    $('#divPopUPLogin').jqmShow();
     }

//$(document).ready(function() {
//var triggersCFolder = $('#cc');
//$('#divPopUPLogin').jqm({
//        trigger: triggersCFolder,
//        ajax: '',
//        target: '#closeFilePopup a',
//        overlay: 0
//    });
//});



//function PopControlup(ctrl) {
//    var triggersCFolder = $('#ctlForgetPasswordTag');
//    $('#' + ctrl).jqm({
//        trigger: triggersCFolder,
//        ajax: '',
//        target: '#Fp_btnClose a',
//        overlay: 0
//    });  
//    $('#' + ctrl).jqmShow();
//}



   



     function validatePassword(pw, options) {
         // default options (allows any password)
         var o = {
             lower: 0,
             upper: 0,
             alpha: 0, /* lower + upper */
             numeric: 0,
             special: 0,
             length: [0, Infinity],
             custom: [ /* regexes and/or functions */],
             badWords: [],
             badSequenceLength: 0,
             noQwertySequences: false,
             noSequential: false
         };

         for (var property in options)
             o[property] = options[property];

         var re = {
             lower: /[a-z]/g,
             upper: /[A-Z]/g,
             alpha: /[A-Z]/gi,
             numeric: /[0-9]/g,
             special: /[\W_]/g
         },
		rule, i;

         // enforce min/max length
         if (pw.length < o.length[0] || pw.length > o.length[1])
             return false;

         // enforce lower/upper/alpha/numeric/special rules
         for (rule in re) {
             if ((pw.match(re[rule]) || []).length < o[rule])
                 return false;
         }

         // enforce word ban (case insensitive)
//         for (i = 0; i < o.badWords.length; i++) {
//             if (pw.toLowerCase().indexOf(o.badWords[i].toLowerCase()) > -1)
//                 return false;
//         }

         // enforce the no sequential, identical characters rule
         if (o.noSequential && /([\S\s])\1/.test(pw))
             return false;

         // enforce alphanumeric/qwerty sequence ban rules
         if (o.badSequenceLength) {
             var lower = "abcdefghijklmnopqrstuvwxyz",
			upper = lower.toUpperCase(),
			numbers = "0123456789",
			qwerty = "qwertyuiopasdfghjklzxcvbnm",
			start = o.badSequenceLength - 1,
			seq = "_" + pw.slice(0, start);
             for (i = start; i < pw.length; i++) {
                 seq = seq.slice(1) + pw.charAt(i);
                 if (
				lower.indexOf(seq) > -1 ||
				upper.indexOf(seq) > -1 ||
				numbers.indexOf(seq) > -1 ||
				(o.noQwertySequences && qwerty.indexOf(seq) > -1)
			) {
                     return false;
                 }
             }
         }

         // enforce custom regex/function rules
         for (i = 0; i < o.custom.length; i++) {
             rule = o.custom[i];
             if (rule instanceof RegExp) {
                 if (!rule.test(pw))
                     return false;
             } else if (rule instanceof Function) {
                 if (!rule(pw))
                     return false;
             }
         }

         // great success!
         return true;
     }






     var bugchars = '!#$^&*()+|}{[]?><~%:;/,=`"\'';
     function CharsInBag(s) {
         var i;
         var lchar = "";
         // Search through string's characters one by one.
         // If character is not in bag.
         for (i = 0; i < s.length; i++) {
             // Check that current character isn't whitespace.
             var c = s.charAt(i);
             if (i > 0) lchar = s.charAt(i - 1)
             if (bugchars.indexOf(c) != -1 || (lchar == "." && c == ".")) return false;
         }
         return true;
     }
     function isInteger(s) {
         var i;
         for (i = 0; i < s.length; i++) {
             // Check that current character is not a number.
             var c = s.charAt(i);
             if ((c >= "0") && (c <= "9") && (c != ".")) return false;
         }
         // All characters are numbers.
         return true;
     }
     function echeck(str) {
         var at = "@";
         var dot = ".";
         var lat = str.indexOf(at);
         var lstr = str.length;
         var ldot = str.indexOf(dot);
         var lastdot = str.lastIndexOf(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 || str.substring(lastdot + 1) == "") {
             
             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;
         }
         if (CharsInBag(str) == false) {
             
             return false;
         }
         var arrEmail = str.split("@")
         var ldot = arrEmail[1].indexOf(".")
         if (isInteger(arrEmail[1].substring(ldot + 1)) == false) {
          
             return false;
         }
         return true
     }




//     function ltrim(str) {
//         var y = new RegExp('^\\s+');
//         return str.replace(y, '');
//     }


  





    

     function AllowUserName(ctrl) {
        
         $('#hdnAllowUserName').val(ctrl.checked);

         if (ctrl.checked) {
             $('#divUserNameOptions').show('slow');
             $('#divEmail').hide('slow');
             $('#lblEmailMessage').html('');
             $('#retyprdiv').show('slow');            
             
         }
         else {
             $('#divUserNameOptions').hide('slow');
             $('#divEmail').show('slow');
             $('#retyprdiv').hide('slow');
$('lblRetypePasswordMessage').html('');
             
         }
     }

     $(document).ready(function() {
         $('#signup_container').attr('style', 'display:Block');
         //$('#EnableJscriptDiv').attr('style', 'display:none');
         $('#ctl00_ContentPlaceHolder1_ctlImgBtnSubmit').attr('style', 'display:Block');

         var val = '';

         //         var str11 = "Need tip's? Visit W3Schools!";
         //         var str_esc = escape(str11);
         //         alert(str_esc);
         //         alert(unescape(str_esc));



         datac = "{ 'prmUser': '" + val + " ' }";
         options = {
             type: "POST",
             url: "WebServices/WebService.asmx/GetQuestions",
             async: false,
             data: datac,
             contentType: "application/json; charset=utf-8",
             dataType: "json",
             success: function(response) {
                 var oResultData = eval('(' + response.d + ')');
                 q1 = unescape(oResultData.bind[0].questions1);
                 q2 = unescape(oResultData.bind[0].questions2);
                 q3 = unescape(oResultData.bind[0].questions3);
                 //var result = response.d;
                 $('#txtAns1').val(q1);
                 $('#txtAns2').val(q2);
                 $('#txtAns3').val(q3);

                 $('input#txtAns1').focus(function() {
                     focusText(this, q1);
                 });
                 $('input#txtAns1').blur(function() {
                     BlurText(this, q1);
                 });
                 $('input#txtAns2').focus(function() {
                     focusText(this, q2);
                 });
                 $('input#txtAns2').blur(function() {
                     BlurText(this, q2);
                 });
                 $('input#txtAns3').focus(function() {
                     focusText(this, q3);
                 });
                 $('input#txtAns3').blur(function() {
                     BlurText(this, q3);
                 });
             }
         };
         $.ajax(options);









     });
     
     
     
     function ClearSignUpFields()
     {  
     
        $('#txtFullName').val('Enter your name');
        $('#txtEmail').val('Enter your e-mail address');
        $('#password').val('Create a password');
        $('#password1').val('Retype Password');
        $('#txtUsername').val('Create a username');
        $('#txtAns1').val('What is first name of your first love?');
        $('#txtAns2').val('What was/is your worst subject in school?');
        $('#txtAns3').val('My first job was?');
     }
