﻿var TB_REQUIRED = "tbRequired";
var DDL_REQUIRED = "ddlRequired";
var OR_REQUIRED = "orRequired";
var TB_REQUIRED_HINTS = "tbRequiredHints";
var DDL_REQUIRED_HINTS = "ddlRequiredHints";
var OR_REQUIRED_HINTS = "orRequiredHints";

var IBTN_NEXT_LIST = "ibtnNextList";
var IBTN_JOIN_ID = "ibtnJoinID";
var IBTN_JOIN_UNIQUE_ID = "ibtnJoinUniqueID";
var IBTN_IMGRELOAD_UNIQUE_ID = "ibtnImgReloadUniqueID";
var DDL_QUESTION1_UNIQUE_ID = "ddlQuestion1UniqueID";
var DDL_QUESTION2_UNIQUE_ID = "ddlQuestion2UniqueID";
var DDL_COUNTRY_ID = "ddlCountryID";
var IBTN_SEARCH_EMAIL_UNIQUE = "ibtnsearch"; 
var LBL_EMAIL_ADDRESS = "emailaddress";

var TB_FOCUS_LIST = "tbFocusList";
var REGISTER_RESPONSE = "RegisterResponse";
var GUID = "Guid";
var ibtnJoinEnabled = false;

var REDIRECT_MEMBERSHIP = "redirectMembership";
var REDIRECT_PUBLIC_HOME = "redirectPublicHome";

function SelectTabIndex(index)
{
    var tabStrip = GetTabStrip();
    var allTabs = tabStrip.GetAllTabs();
    if(allTabs[index].Enabled)
    {
        allTabs[index].Select();
        SetTabFocus(index);
    }
}

function ClientTabSelected(sender, eventArgs)
{
    SetTabFocus(eventArgs.Tab.Index);
}

function SetTabFocus(index)
{
    var tbIDString = document.getElementById(TB_FOCUS_LIST).value;
    var tbIDs = tbIDString.split(","); 
    
    
    switch(index)
    {
        case 0:
            if(document.getElementById(tbIDs[0])!=null)
                document.getElementById(tbIDs[0]).focus();                            
            break;
        case 1:
            if(document.getElementById(tbIDs[1])!=null)
                document.getElementById(tbIDs[1]).focus();
            break;
        case 2:
            if(document.getElementById(tbIDs[2])!=null)
                document.getElementById(tbIDs[2]).focus();
            break;
        case 3:
            if(document.getElementById(tbIDs[3])!=null)
                document.getElementById(tbIDs[3]).focus();
            break;
        default:
            break;        
    }
}

function MemberRegRequestStart(sender, eventArgs)
{
    if(eventArgs.EventTarget != document.getElementById(IBTN_JOIN_UNIQUE_ID).value)
    {
        if(eventArgs.EventTarget == document.getElementById(IBTN_IMGRELOAD_UNIQUE_ID).value)
            return true;
        else if(eventArgs.EventTarget == document.getElementById(DDL_QUESTION1_UNIQUE_ID).value)
        {
            return true;
        }
        else if(eventArgs.EventTarget == document.getElementById(DDL_QUESTION2_UNIQUE_ID).value)
        {
            return true;
        }
        else if(eventArgs.EventTarget == document.getElementById(IBTN_SEARCH_EMAIL_UNIQUE).value)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else if(!ibtnJoinEnabled)
        return false;
    else
    {
        ibtnJoinEnabled = false;
        Common_DisableButton(document.getElementById(document.getElementById(IBTN_JOIN_ID).value));
    }
}

function MemberRegResponseEnd(sender, eventArgs)
{ 
    
    //alert("Email address is visible " + document.getElementById(document.getElementById(LBL_EMAIL_ADDRESS).value));
    if(document.getElementById(document.getElementById(LBL_EMAIL_ADDRESS).value)!=null)
    {          
        ValidateWizard(0);  
    }
    if(eventArgs.EventTarget == document.getElementById(IBTN_JOIN_UNIQUE_ID).value)
    {
        if(document.getElementById(REGISTER_RESPONSE) != null)
        {
            var response = document.getElementById(REGISTER_RESPONSE).value;
            if(response == "Success")
            {
                setTimeout("ThreadedRadAlertSuccess()", 0);                               
                setTimeout("SuccessfullRedirect()", 7000);
            }
            else
            {
                setTimeout("ThreadedRadAlertFailure()", 0);                                
                setTimeout("FailureRedirect()", 7000);
            }
        }
        else // validation failed on server (didn't attempt save yet)
            ValidateWizard(3);
    }    
    
}
function ThreadedRadAlertSuccess()
{
    window.radalert(GetSuccessText(), 330,150,"Registration Successful!");
}
function ThreadedRadAlertFailure()
{
    window.radalert(GetFailureText(), 330,300,"Registration Failed!"); 
}

function ValidateWizard(tabIndex)
{ 
    var isPopulated = ValidateTBTab(tabIndex);
    isPopulated &= ValidateDDLTab(tabIndex);
    isPopulated &= ValidateOrTab(tabIndex);
    
    if(isPopulated && (tabIndex<3))
    {
        EnableTab(tabIndex+1);
        ValidateWizard(tabIndex+1);
    }
    else if(tabIndex==3)
    {
        var joinButton = document.getElementById(document.getElementById(IBTN_JOIN_ID).value);
        if(isPopulated)
        {
            Common_EnableButton(joinButton, 'btn_join_', 'Join Now!');
            ibtnJoinEnabled = true;
        }
        else
        {
            Common_DisableButton(joinButton);
            ibtnJoinEnabled = false;
        }
    }
    else
    {
        for(var i=tabIndex+1; i<4; i++)
            DisableTab(i);
    }
}

function ValidateTBTab(tabIndex)
{
    var tbIDString = document.getElementById(TB_REQUIRED + tabIndex).value;
    var tbIDs = tbIDString.split(",");
    var lblIDString = document.getElementById(TB_REQUIRED_HINTS + tabIndex).value;
    var lblIDs = lblIDString.split(",");
    var isValid = true;
    

    for (var i = 0; i<tbIDs.length; i++)
    {
        if(document.getElementById(tbIDs[i])!=null && document.getElementById(tbIDs[i]).value.length==0)
        {
            Common_SetRequiredFieldHint(lblIDs[i], false);
            isValid = false;
        }
        else
            Common_SetRequiredFieldHint(lblIDs[i], true);
    }
    return isValid;
}

function ValidateDDLTab(tabIndex)
{
    var ddlIDString = document.getElementById(DDL_REQUIRED + tabIndex).value;
    var ddlIDs = ddlIDString.split(",");
    var lblIDString = document.getElementById(DDL_REQUIRED_HINTS + tabIndex).value;
    var lblIDs = lblIDString.split(",");
    var isValid = true;
    
    for (var i = 0; i<ddlIDs.length; i++)
    {
        if(document.getElementById(ddlIDs[i])!=null && (document.getElementById(ddlIDs[i]).selectedIndex == 0))
        {
            Common_SetRequiredFieldHint(lblIDs[i], false);
            isValid = false;
        }
        else
            Common_SetRequiredFieldHint(lblIDs[i], true);
    }
    return isValid;
}

function ValidateOrTab(tabIndex)
{
    if(tabIndex!=1) // currently only needed for Address tab
        return true;
    
    var orIDString = document.getElementById(OR_REQUIRED + tabIndex).value;
    var orIDs = orIDString.split(",");
    var lblIDString = document.getElementById(OR_REQUIRED_HINTS + tabIndex).value;
    var lblIDs = lblIDString.split(",");
    var ddlCountryID = document.getElementById(DDL_COUNTRY_ID).value;
    var ddlCountry = document.getElementById(ddlCountryID);
    var isValid = true;
    
    switch(tabIndex)
    {
        case 1:
            isValid = Common_ValidateOr(orIDs, lblIDs, ddlCountry);
            break;
        default:
            return isValid;
    }
    return isValid;
}

function EnableTab(tabIndex)
{
    var tabStrip = GetTabStrip();
    var allTabs = tabStrip.GetAllTabs();
    allTabs[tabIndex].Enable();
    EnableNextButton(tabIndex-1);
    
    //handles newer browsers(FF, Chrome) loading email addresses into postal code box
    if (tabIndex==1)
    {
        var tbRequired = (document.getElementById('tbRequired1').value).split(",")
        if (CheckValidEmailAddress(document.getElementById(tbRequired[2]).value))
            document.getElementById(tbRequired[2]).value = "";        
    }
}

function DisableTab(tabIndex)
{
    var tabStrip = GetTabStrip();
    var allTabs = tabStrip.GetAllTabs();
    allTabs[tabIndex].Disable();
    if(tabIndex<3)
        DisableNextButton(tabIndex-1);
}

function GetNextButtonIDs()
{
    var ibtnIDString = document.getElementById(IBTN_NEXT_LIST).value;
    return ibtnIDString.split(",");
}

function GetNextButton(index)
{
    var ibtnIDs = GetNextButtonIDs();
    return document.getElementById(ibtnIDs[index]);
}

function EnableNextButton(buttonIndex)
{  
    var button = GetNextButton(buttonIndex);
    Common_EnableButton(button, 'btn_next_', 'Next');
}

function DisableNextButton(buttonIndex)
{    
    var button = GetNextButton(buttonIndex);
    Common_DisableButton(button);   
}

function GetSuccessText()
{
    return "<b>You have successfully registered as a member!</b><BR/><BR/>" + 
            "Soon, you should receive a welcome email which<BR/>" +
            "contains your registration details.";
}

function GetFailureText()
{
    return "<b>Member registration was unable to complete.</b><BR/><BR/>" + 
            "Please try again or contact customer support<BR/>" +
            "to complete your registration.";
}

function SuccessfullRedirect()
{
    var guid = "";
    if(document.getElementById(GUID)!=null)
    {
        guid += "&_id=";
        guid += document.getElementById(GUID).value;
    }
    var url = document.getElementById(REDIRECT_MEMBERSHIP).value;
    window.location = url + guid;
}

function FailureRedirect()
{
    var url = document.getElementById(REDIRECT_PUBLIC_HOME).value;
    window.location = url;
}

function EmailRequiredValidation(tb, lbl)
{
    
    var charLength = document.getElementById(tb).value.length; 
    //alert("Length: " + charLength);
    if (charLength == 0)
    {
        Common_SetRequiredFieldHint(lbl, false);
    }
    else 
    {        
        Common_SetRequiredFieldHint(lbl, true);
    }
}

function CheckValidEmailAddress(email)
{
    //make sure that the email address is valid, otherwise
    //display the message letting user know it failed
    var validEmail = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
    var result = validEmail.test(email);
    
    //alert("Validated the address");
    
    
    return result;   
}

function CheckEmailMatch(emailRetype, email)
{
   
    //just make sure the addresses match.
    if (emailRetype == email)
    {         
        return true;
    }
    else
    {        
        return false;
    }
}

function CheckEmailSection(emailID, emailRetypeID, searchBtnID, emailErrorID, emailRetypeErrorID)
{
    var email, emailretype, searchbtn, emailerror, emailretype;
    var validateResult, matchResult;
    
    validateResult = CheckValidEmailAddress(document.getElementById(emailID).value); 
    matchResult =  CheckEmailMatch(document.getElementById(emailRetypeID).value, document.getElementById(emailID).value);
    
    if(validateResult==false)
    {
        document.getElementById(searchBtnID).disabled = true;
        if(Common_IsIE())
            document.getElementById(emailErrorID).innerText = "invalid email address";
        else
            document.getElementById(emailErrorID).textContent = "invalid email address";
        return 0;   
    }
    else if (validateResult==true)
    {
        document.getElementById(searchBtnID).disabled = true;
        if(Common_IsIE())
            document.getElementById(emailErrorID).innerText = "";
        else
            document.getElementById(emailErrorID).textContent = "";
        
    }
    
    if (matchResult==false)
    {
        document.getElementById(searchBtnID).disabled = true;
        if(Common_IsIE())
            document.getElementById(emailRetypeErrorID).innerText = "Email addresses do not match ";
        else
            document.getElementById(emailRetypeErrorID).textContent = "Email addresses do not match "; 
        return 0;  
    }
    else if (matchResult==true)
    {
        if(Common_IsIE())
            document.getElementById(emailRetypeErrorID).innerText = "";
        else
            document.getElementById(emailRetypeErrorID).textContent = "";
    }    
     
    document.getElementById(searchBtnID).disabled = false;   
    return 1;     
    
}
