﻿
//------   REGEX OBJECT -------
var rgxObj={};
rgxObj.phonePrefix=/^[0-9]{1,4}$/;
rgxObj.phoneNumber=/^[0-9]{6,8}$/;
rgxObj.digit=/[^0-9]/;
//rgxObj.name=/^[a-zא-תA-Z''-'\s]{1,20}$/;
rgxObj.name=/^.{1,20}$/;
//rgxObj.userName=/[_a-zA-Z0-9-]{6,10}$/;
//rgxObj.password=/(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,10})$/;
rgxObj.captcha=/^[a-zA-Z]{5,5}$/;
rgxObj.email=/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;

//------   CSS OBJECT -------
var cssObj={}; //new object
cssObj.tbNoError="rfTextBox";
cssObj.tbError="rfTextBoxError";
cssObj.ddlNoError="rfTextBox";
cssObj.ddlError="rfDDLError";
cssObj.chkNoError="rfTNCBox";
cssObj.chkError="rfTNCError";



//------------  Update Country Code ---------
function updateCountryCode(){
    val=docObj.country.value;
    val=val.split("@")[1];
    docObj.phoneIDs[0].value=val;
    docObj.cellIDs[0].value=val;
}

//-------------------------------------------
//              phones validation
//-------------------------------------------

function chkPhoneInput(arr){
    var pRgx1=rgxObj.phonePrefix;
    var pRgx2=rgxObj.phoneNumber;
    if (
            (pRgx1.test(arr[0].value) && arr[0].value!="") && 
            (pRgx1.test(arr[1].value) && arr[1].value!="") && 
            (pRgx2.test(arr[2].value) && arr[2].value!="")
       )    
    {
        return true;
    }else{
        return false;
    }
}

function verifyPhones(){
    var pFlag = false;
    
    for(var i=0;i<docObj.phoneIDs.length;i++){

        docObj.phoneIDs[i].value = rgxReplace(docObj.phoneIDs[i].value, rgxObj.digit, "");
        
        docObj.cellIDs[i].value=rgxReplace(docObj.cellIDs[i].value,rgxObj.digit,"");

    }
    
    if (chkPhoneInput(docObj.phoneIDs))
    {
        pFlag = true;
     }
    
    return pFlag;
} 

//--------------------------------------------
//--------------------------------------------

var submitClicked=false;
var isValidated=false;

function validate(str,rgx){
    if (str=="" || !rgx.test(str)){
        return false;
    }else{
        return true;
    }
}

function rgxReplace(str,rgx,rep){
    var rs="";
    for(var i=0;i<str.length;i++){
        rs+=(str.charAt(i)).replace(rgx,rep);
    }
    return rs;
}

function setTBErrorCSS(obj,isError){
    if(isError){
        obj.className=cssObj.tbError;
    }else{
        obj.className=cssObj.tbNoError
    }
}

function setDDLErrorCSS(obj,isError){
    if(isError){
        obj.className=cssObj.ddlError;
    }else{
        obj.className=cssObj.ddlNoError
    }
}

function setCHKErrorCSS(obj,isError){
    if(isError){
        obj.className=cssObj.chkError;
    }else{
        obj.className=cssObj.chkNoError;
    }
}

function setPhonesErrorCSS(isError){
    pArr=docObj.phoneIDs;
    cArr=docObj.cellIDs
    if(isError){
        for(var i=0;i<pArr.length;i++){
            pArr[i].className=cssObj.tbError;
        }
        for(var i=0;i<cArr.length;i++){
            cArr[i].className=cssObj.tbError;
        }
    }else{
        for(var i=0;i<pArr.length;i++){
            pArr[i].className=cssObj.tbNoError;
        }
        for(var i=0;i<cArr.length;i++){
            cArr[i].className=cssObj.tbNoError;
        }
    }
}

function verifyTNCCaptcha(){
    if(!submitClicked){
        
        return;
    }
    
    var flag=true;
    if(!docObj.chkTNC.checked){
        setCHKErrorCSS(docObj.divTNC,true);
        flag=false;
    }else{
        setCHKErrorCSS(docObj.divTNC,false);
    }
    if(!validate(docObj.captchaText.value,rgxObj.captcha)){
        setTBErrorCSS(docObj.captchaText,true);
        flag=false;
    }else{
        setTBErrorCSS(docObj.captchaText,false);
    }
    return flag
}
function fromVerifyTNCCaptcha(){
    
    submitClicked=true;
    
    if(verifyTNCCaptcha()){
        if(isValidated){
            return false;
        }else{
            isValidated=true;
        } 
        docObj.tblTNCConfirm.style.cursor="wait";
        document.body.style.cursor="wait";
        docObj.btnTNCConfirm.click();
        
    }else{
        return false;
    }
    
}
function verifySendLead(){
    if(!submitClicked){
        return;
    }
    var flag=true;
    if(!validate(docObj.firstName.value,rgxObj.name)){
        setTBErrorCSS(docObj.firstName,true);
        flag=false;
    }else{
        setTBErrorCSS(docObj.firstName,false);
    }
    if(!validate(docObj.lastName.value,rgxObj.name)){
        setTBErrorCSS(docObj.lastName,true);
        flag=false;
    }else{
        setTBErrorCSS(docObj.lastName,false);
    }
    if(!validate(docObj.email.value,rgxObj.email)){
        setTBErrorCSS(docObj.email,true);
        flag=false;
    }else{
        setTBErrorCSS(docObj.email,false);
    }
    if(!verifyPhones()){
        setPhonesErrorCSS(true);
        flag=false;
    }else{
        setPhonesErrorCSS(false);
    }
    if(docObj.country.value==""){
        setDDLErrorCSS(docObj.country,true);
        flag=false;
    }else{
        setDDLErrorCSS(docObj.country,false);
    }
    /*if(!docObj.chkTNC.checked){
        setCHKErrorCSS(docObj.divTNC,true);
        flag=false;
    }else{
        setCHKErrorCSS(docObj.divTNC,false);
    }*/
    if(flag){
        docObj.errorMessage.style.visibility="hidden";
    }else{
        docObj.errorMessage.style.visibility="visible";
    }
    return flag;
}



function formVerifySendLead(){
    submitClicked=true;
    
    if(verifySendLead())
    {  
        if(isValidated){
            return false;
        }else{
            isValidated=true;
        } 
        docObj.tblSubmit.style.cursor="wait";
        document.body.style.cursor="wait";
        docObj.btnSubmit.click();
    }else{
        return false;
    }
}

//blur focus to next field
function switchPhoneFocus(){
    docObj.phoneIDs[1].focus();
}

//this prevents enter key submissions... currentPanel comes from RegisterClientScriptBlock in regForm C#

function chkEnter(evt){
debugger;
    if (evt.keyCode == 13)  {
        return false;
    } 
}


// ------------------------------
//      GET COUNTRY BY IP
// ------------------------------

function assignCountry(value){
    var selObj=docObj.country;
    var str="";
    for(var i=0;i<selObj.options.length;i++){
        str=selObj.options[i].value;
        str=str.split("@")[0];
        if(str==value){
            try{
                selObj.options[i].selected=true;
                updateCountryCode();
            }catch(ex){}
            break;
        }
    }
}

var countryByIPURL="http://services.startforex.com/JSServices/IP2CountryService.aspx";
var cbIP2CountyFunc="?funcName=assignCountry";
try{
    callScript(countryByIPURL+cbIP2CountyFunc,"scrCountryByIP"); //refer to: /Scripts/Utils.js
}catch(ex){}
