﻿function SbcFld(
    sId,
    sLabel,
    status,
    sText,
    bChecked,
    btn_state,
    sMsg
    )
{
    this.sId = sId;
    this.sLabel = sLabel;
    this.status = status;
    this.sText = sText;
    this.bChecked = bChecked;
    this.btn_state = btn_state;
    this.sMsg = sMsg;
    this.bChanged = false;
}

function SbcFldStatus(
    sId,
    sIcoCssClass,
    sMsgCssClass,
    sMsg
)
{
    this.sId = sId;
    this.sStatusCssClass = sStatusCssClass;
    this.sMsg = sMsg;
}

var aSbcStatus = new Array();

var sbc_fld_id = '';
var sbc_blur_id;
var sbc_blur_datetime = null;
var sbc_focus_id;
var sbc_focus_datetime = null;

function sbc_blur( fld_id, html_fld )
{
    sbc_blur_datetime = new Date();
    
    var fld;
    var aBT = fld_id.split('_');
    var base_id = aBT[0];
    var fld_type = aBT[1];
    fld = aSbcFld[base_id];
    
    sbc_fld_id = fld_id;
    sbc_blur_id = fld_id;
    switch( fld_type )
    {
        case 'txt':
            fld.sText = html_fld.value;
            sbc_validate_txt(fld); 
            break;
    }
    
//    diag('sbc_blur( ' + fld_id + ' )  value=<b>' + html_fld.value + '</b>' );
//    diag_log( 'sbc_blur( ' + sbc_blur_id + ' ) @ ' + sDiagDate(sbc_blur_datetime) +
//    '<br>fld_id: ' + fld_id + ' value:<b>' + html_fld.value + '</b>' );
}

function sbc_focus( fld_id )
{
    sbc_focus_datetime = new Date();
    sbc_focus_id = fld_id;
    diag('sbc_focus( ' + fld_id + ' )' );
    // diag_log( 'sbc_focus( ' + sbc_focus_id + ' ) @ ' + sDiagDate(sbc_focus_datetime) );
}

function sbc_chk_onclick( fld_id, html_fld )
{
    var fld;
    var aBT = fld_id.split('_');
    var base_id = aBT[0];
    var fld_type = aBT[1];
    fld = aSbcFld[base_id];
    sbc_fld_id = fld_id;
    
    fld.bChecked = html_fld.checked;
    sbc_fld_id = base_id + '_txt';
    diag( 'sbc_chk_onclick( ' + fld_id + ' )  value=<b>' + html_fld.checked + '</b>' );
    sbc_update_business_card();
//    diag_log( 'sbc_chk_onclick( ' + fld_id + ' ) @ ' + sDiagDate(new Date()) );
}

function sbc_validate_txt( fld )
{
    fld.sMsg = '';
    var sMessageClassName = "sbc_status_blank";
//  alert( 'sbc_validate_txt  fld.sId=' + fld.sId + "\nfld.sText=" + fld.sText );
    switch( fld.sId )
    {
        case 'UserName':
            sMessageClassName = sbc_valid_txt_len( fld, 3 );
            if( sMessageClassName == 'sbc_status_validated' )
            {
                sMessageClassName = sbc_val_user_name( fld );
            }
            break;
        case 'Password':
            sMessageClassName = sbc_valid_txt_len( fld, 3 );
            break;
        case 'Email':
        case 'ReenterEmail':
            sMessageClassName = sbc_valid_txt_len( fld, 3 );
            if( fld.sMsg == '' )
            {
                sMessageClassName = sbc_val_email_address( fld );
            }
            break;
        case 'FirstName':
            sMessageClassName = sbc_valid_txt_len( fld, 1 );
            break;
        case 'LastName':
            sMessageClassName = sbc_valid_txt_len( fld, 1 );
            break;
    }
    sbc_display_msg( fld, sMessageClassName );
    sbc_update_business_card();
}

function sbc_display_msg( fld, msg_class_name )
{
    var divMsg = document.getElementById( fld.sId + '_msg' );
    var divIco = document.getElementById( fld.sId + '_ico' );
    if( fld.sMsg != '' )
    {
        divMsg.className = "sbc_field_message";
        divMsg.innerHTML = fld.sMsg;
        divIco.className = "sbc_status_error";
        bSbcFormValid = false;
    }
    else
    {
        divMsg.className = "sbc_hidden";
        divIco.className = msg_class_name;        
    }
    diag('');
}

function sbc_valid_txt_len( fld, min_len )
{
    var txtLen = fld.sText.length;
    if( txtLen < min_len )
    {
        if( txtLen == 0 )
        {
            fld.sMsg = fld.sLabel + ' is required';
        }
        else
        {
            fld.sMsg = fld.sLabel + ' must be at least ' + min_len + ' characters long';
        }
    }
    return "sbc_status_validated";
}

var aSbcAjax = new Array()

function sbc_form_data()
{
    var sData = '';
    var ixFld;
    var fld;
    var sRowDelim = '~*';
    var sColDelim = '|';
    var row_count = 0;
    var divText;
    var divChk;
    for( ixFld in aSbcFld )
    {
        if( row_count != 0 )
        {
            sData += sRowDelim;
        }
        fld = aSbcFld[ixFld];
        divText = document.getElementById( fld.sId + '_txt' );
        divChk = document.getElementById( fld.sId + '_chk' );
        fld.sText = divText.value;
        fld.bChecked = divChk.checked;
        
        sData += fld.sId + sColDelim + fld.sText.replace(/&/g,"}}") + sColDelim + fld.bChecked;
        row_count++;
    }
    document.getElementById(txtProfileData_id).value = sData;
    return sData;
}

var bAjaxValEnabled = false;
function sbc_ajax_validate( val_op )
{
    if( !bAjaxValEnabled )
    {
        return;
    }
    var sParams = "op=" + val_op + "&data=" + sbc_form_data();
    sbtvAjax.Post( "/Membership/EditProfileAjax.aspx", sParams, sbc_handle_val_response );
}

function sbc_val_form()
{
    sbc_ajax_validate('vf');
}

function sbc_val_user_name( fld )
{
    sbc_ajax_validate( 'vun' );
    return "sbc_status_loading";
}

function sbc_val_email_address( fld )
{
    var pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
    if(!pattern.test(fld.sText))
    {
        fld.sMsg = 'Email address must be in the form: <b><i>username@domain.com</i></b>';
        return "sbc_status_error";
    }
    
    sbc_ajax_validate( 'vea' );

    return "sbc_status_loading";
}

function sbc_handle_val_response( sResponse )
{
    var sContent = sResponse.split(sSbcAjaxContentMarker)[1];
    var aRow = sContent.split(sSbcAjaxRowDelimiter);
    var ixRow;
    var aCol;
    
    var divIco;
    var divMsg;
    
    var invalid_count = 0;
    aSbcStatus.length = 0;
    for( ixRow in aRow )
    {
        aCol = aRow[ixRow].split(sSbcAjaxColDelimiter);
        if( aCol[1] != '' )
        {
            divIco = document.getElementById( aCol[0] + '_ico' );
            divIco.className = aCol[1];
        }
        if( aCol[2] != '' )
        {
            divMsg = document.getElementById( aCol[0] + '_msg' );
            divMsg.className = aCol[2];
            divMsg.innerHTML = aCol[3];
        }
        if( aCol[3] != '' )
        {
            invalid_count++;
        }
    }
    
    bSbcFormValid = (invalid_count == 0)?true:false;
    if(( bSbcFormValid == true ) && ( bSubmitOnValidForm == true ))
    {
        document.getElementById( btnSaveChanges_id ).click();
    }
    else
    {
    /*
        alert( 'Please correct the indicated errors and press "' +
            document.getElementById('sbcJsSubmit').value +
            '" again to resubmit the form'
            );
    */
    }
    bSubmitOnValidForm = false;
}


function sbc_validate_chk( fld )
{
    switch( fld.sId )
    {
    }
}

function sbc_ddl_update_txt( txt_fld_id, select_fld )
{
    var divIco = document.getElementById( txt_fld_id.split('_')[0]+'_ico');
    var fldText = document.getElementById(txt_fld_id);
    var base_id = txt_fld_id.split('_')[0];
    fldText.value = select_fld.options[select_fld.selectedIndex].value;
    if( divIco.className == 'sbc_status_required' )
    {
        divIco.className = 'sbc_status_validated';
    }
    fld = aSbcFld[base_id];
    fld.bChanged = true;
    fld.sText = fldText.value;
    sbc_fld_id = txt_fld_id;
    
    sbc_update_business_card();
    
    diag( 'sbc_ddl_update_txt( ' + txt_fld_id + ' )  value=<b>' + fldText.value + '</b>' );
}

function sbc_submit_form()
{
    bSubmitOnValidForm = true;
    sbc_val_form();
}


var aDiagLog = new Array();

function diag_log( new_entry )
{
    aDiagLog.push( new_entry + '<br>' );
    diag('');
}

function diag( diag_msg )
{
    var sLogHtml = '';
    for( ixLog in aDiagLog )
    {
        sLogHtml += aDiagLog[ixLog] + '<br>';
    }

    var sFldArray = '<table>';
    var fld;
    sbc_form_data();
    for( ixFld in aSbcFld )
    {
        fld = aSbcFld[ixFld];
        sFldArray += '<tr>' +
            '<td>' + fld.sId +'</td>' +
            '<td class="sbc_diag_value' + (((fld.sId+'_txt')==sbc_fld_id)?'_current':'') + '">' + fld.sText +'</td>' +
            '<td class="sbc_diag_value' + (((fld.sId+'_txt')==sbc_fld_id)?'_current':'') + '">' + fld.bChecked +'</td>' +
            '</tr>';
    }
    sFldArray += '</table>';
    
    document.getElementById( 'diag_td_div' ).innerHTML = 
        'bSbcFormValid=' + bSbcFormValid + '<br>' +
        diag_msg + 
            '<hr>' +
            'blur_id:' + sbc_blur_id + '<br>@ ' + sDiagDate(sbc_blur_datetime) +
            '<br><br>focus_id:' + sbc_focus_id + '<br>@ ' + sDiagDate(sbc_focus_datetime) +
            '<hr>' +
            sLogHtml +
        sFldArray;
}

function sDiagDate( dt )
{
    if( dt == null )
    {
        return '(null)';
    }
    return dt.getHours() + ':' + dt.getMinutes() + ':' + dt.getSeconds() + '  ' + dt.getMilliseconds();
}



/// the following functions
/// were originally written
/// to support the use of .NET asynch postback
function sbcButtonDivPair
(
    base_id,
    button_open_className,
    button_close_className
)
{
    this.base_id = base_id;
    this.button_open_className = button_open_className;
    this.button_close_className = button_close_className;
}


function update_pwd()
{
    var divPwd = document.getElementById( asp_pwd_id );
    var divVisPwd = document.getElementById( 'html_pwd' );
    divPwd.value = divVisPwd.value;
}
    
var aInputChanged = new Array();
var aDisplayDiv = new Array();

function postback_response_loaded()
{
    var ixDisplayDiv;
    var buttonDivPair;
    var base_id;
    var btn_id;
    for( ixDisplayDiv in aDisplayDiv )
    {
        buttonDivPair = aDisplayDiv[ixDisplayDiv];
        base_id = buttonDivPair.base_id;
        btn_id = 'btn'+base_id;
        document.getElementById(base_id).style.display = 'block';
        document.getElementById(btn_id).className = buttonDivPair.button_close_className;
        /*
        alert( 'base_id >' + base_id + '<' + "\n" +
            'btn_id >' + btn_id + '<' + "\n" +
            'buttonDivPair.button_close_className >' + buttonDivPair.button_close_className + '<'
            );
        */
    }
    
    document.getElementById('html_pwd').value=document.getElementById(asp_pwd_id).value;
    aInputChanged.length = 0;
}

function sbc_input_changed(ico_id)
{
   aInputChanged.push(ico_id);
}

function sbc_button_toggle_div(base_id, open_className, close_className)
{
    var divObj = document.getElementById(base_id);
    if( divObj.style.display == 'none' )
    {
        sbc_button_show_div( base_id, open_className, close_className, true );
    }
    else
    {
        sbc_button_show_div( base_id, open_className, close_className, false );
    }
    
}

function sbc_button_show_div( base_id, open_className, close_className, bShow )
{
    var ixRemove = null;
    var ixTmp;
    var div = document.getElementById(base_id);
    var divButton = document.getElementById(base_id+'_btn');

    if( bShow == true )
    {
        aDisplayDiv.push(
            new sbcButtonDivPair( base_id, 
                open_className,
                close_className
                )
            );
        div.style.display = 'block';
        divButton.className = close_className;
    }
    else
    {
        for( ixTmp in aDisplayDiv)
        {
            if( aDisplayDiv[ixTmp].base_id == base_id )
            {
                ixRemove = ixTmp;
            }
        }
        if( ixRemove != null )
        {
            aDisplayDiv.splice(ixRemove,1);
            div.style.display = 'none';
            divButton.className = open_className;
        }
    }
}

function sbc_show_loading()
{
    var ixInputChanged;
    var icoId;
    for( ixInputChanged in aInputChanged )
    {
     icoId = aInputChanged[ixInputChanged];
       document.getElementById(icoId).className='sbc_status_loading';
    }
}

function toggle_adv_card_controls()
{
    var divBtn = document.getElementById('sbc_card_controls');
    if( divBtn.className == 'sbc_card_controls_show' )
    {
        divBtn.className = 'sbc_card_controls_hide';
        show_adv_card_controls( true );
    }
    else
    {
        divBtn.className = 'sbc_card_controls_show';
        show_adv_card_controls( false );
    }
}

function show_adv_card_controls( bShow )
{
    var ixControl;
    var fld;
    var divChk;
    for( ixControl in aSbcFld )
    {
        fld = aSbcFld[ixControl];
        divChk = document.getElementById( fld.sId + '_chk' );
        switch( divChk.className )
        {
            case 'sbc_checkbox':
                if( bShow == false )
                {
                    divChk.className = 'sbc_checkbox_hide';
                }                
                break;
            case 'sbc_checkbox_hide':
                if( bShow == true )
                {
                    divChk.className = 'sbc_checkbox';
                }
                break;
            case 'sbc_checkbox_off':
                break;
        }
    }
}

function toggle_image_upload_panel()
{
    var divUploadPanel = document.getElementById('divMemberImageUpload');
    var divInstructions = document.getElementById('member_image_instr');
    if( divInstructions.className == 'sbc_image_upload_instr' )
    {
        divInstructions.className = 'sbc_image_upload_instr_clicked';
        divUploadPanel.style.display = 'block';
    }
    else
    {
        divInstructions.className = 'sbc_image_upload_instr';
        divUploadPanel.style.display = 'none';
    }
}

function sbc_update_business_card()
{
    var divCard = document.getElementById( 'sbc_business_card' );
    if( divCard  == null )
    {
        return;
    }
    var sHtml = '';
    var sBusinessName = sbc_card_row_text( 'BusinessName' );    
    if( sBusinessName != '' )
    {
        sHtml += sbc_card_row_div( '<b>' + sBusinessName + '</b>' );
    }    
    var sNameRow = sbc_card_row_text( 'FirstName' ) + ' ' + sbc_card_row_text( 'LastName' );
    if( sNameRow != ' ' )
    {
        sHtml += sbc_card_row_div( sNameRow );
    }
    sHtml += sbc_card_row_div( sbc_card_row_text( 'Address1' ));
    sHtml += sbc_card_row_div( sbc_card_row_text( 'Address2' ));
    
    var sCity = sbc_card_row_text( 'City' );
    var sProvince = sbc_card_row_text( 'Province' );
    var sCityPostDelim = ((sCity != '') && (sProvince != '')) ? ", " : "";
    var sPostalCode = sbc_card_row_text( 'PostalCode' );
    var sPostalCodePreDelim = ((sProvince!='')&&(sPostalCode!=''))?"   ":"";
    if( (sPostalCode !='' ) && (sCityPostDelim ==''))
    {
        sPostalCodePreDelim = '   ';
    }
    
    var sCszRow = sCity + sCityPostDelim + sProvince + sPostalCodePreDelim + sPostalCode; 
    
    if( sCszRow != '' )
    {
        sHtml += sbc_card_row_div( sCszRow );
    }
    
    var sTimeZone = sbc_card_row_text( 'TimeZone' );
    if( sTimeZone != '' )
    {
        switch( sTimeZone )
        {
            case '0':
                sTimeZone = '<div class="sbc_tz_abbrev">GMT</div>';
                break;
            default:
                var zone_offset = parseInt( sTimeZone );
                if( zone_offset > 0 )
                {
                    sTimeZone = '+' + sTimeZone;
                }
                sTimeZone = '<div class="sbc_tz_abbrev">GMT&nbsp;' + sTimeZone + '</div>';
                break;
        }
    }
    
    var sPhoneRow = sbc_card_row_text( 'Phone' ) + sTimeZone;
    
    if( sPhoneRow != '' )
    {
        sHtml += sbc_card_row_div( sPhoneRow );
    }
    
    var sEmail = sbc_card_row_text( 'Email' );
    if( sEmail != '' )
    {
        sHtml += sbc_card_row_div( 'Email:&nbsp;<a href="mailto:' + sEmail + '">' + sEmail + '</a>' );
    }

    var sWebsite = sbc_card_row_text('Website');
    if (sWebsite.toLowerCase().indexOf('http://') != -1) {
        sWebsite = sWebsite.replace(/http:\/\//i, '');
    }
    if( sWebsite != '' )
    {
        sHtml += sbc_card_row_div( 'Website:&nbsp;<a href="http://' + sWebsite + '" target="_blank">' + sWebsite + '</a>' );
    }
    
    if( sHtml != '' )
    {
        sHtml = '<div class="sbc_card_top"></div>' + sHtml + '<div class="sbc_card_bottom"></div>';
    }
    
    divCard.innerHTML = sHtml;
}

function sbc_card_row_text( base_id )
{
    var fld = aSbcFld[base_id];
    var sHtml = '';
    if( fld.bChecked )
    {
        sHtml = fld.sText;
    }
    return sHtml;
}

function sbc_card_row_div( sText )
{
    var sHtml = '';
    if( sText != '' )
    {
        sHtml = '<div class="sbc_card_row">' + sText + '</div>';
    }
    return sHtml;
}