﻿// AddressVerification.js

var verifyOfficeFlag = false;
var verifyPreferredFlag = false;
var isIE = (navigator.appName == "Microsoft Internet Explorer");

setTimeout(addressVerificationSetup, 0);

function addressVerificationSetup() {
    $addHandler($$(containerName('office') + ' .address1')[0], "change", officeAddressFieldChanged);
    $addHandler($$(containerName('office') + ' .address2')[0], "change", officeAddressFieldChanged);
    $addHandler($$(containerName('office') + ' .city')[0], "change", officeAddressFieldChanged);
    $addHandler($$(containerName('office') + ' .zip')[0], "change", officeAddressFieldChanged);
    $addHandler($$(containerName('preferred') + ' .address1')[0], "change", preferredAddressFieldChanged);
    $addHandler($$(containerName('preferred') + ' .address2')[0], "change", preferredAddressFieldChanged);
    $addHandler($$(containerName('preferred') + ' .city')[0], "change", preferredAddressFieldChanged);
    $addHandler($$(containerName('preferred') + ' .zip')[0], "change", preferredAddressFieldChanged);
}

function officeAddressFieldChanged() {
    verifyOfficeFlag = true;
}

function preferredAddressFieldChanged() {
    verifyPreferredFlag = true;
}

function verifyAddress() {
    if (!VAM_ValidateGroup('MainAccountInfo', true)) {
        return false;
    }
    if (verifyOfficeFlag == false && verifyPreferredFlag == false) {
        return true;
    }
    clearVerifiedAddressFields();
    if ($$(containerName('office') + ' .country')[0].selectedIndex == 1 ||
        $$(containerName('office') + ' .country')[0].selectedIndex == 2) 
    {
        verifyOfficeAddress();
        return false;
    }
    else if (($$('#sendMailToAddress input')[0].checked == false) &&  
        ($$(containerName('preferred') + ' .country')[0].selectedIndex == 1 ||
         $$(containerName('preferred') + ' .country')[0].selectedIndex == 2)) 
    {
        verifyPreferredAddress(); 
        return false;
    }
    else 
    {
        return true;
    }
}

function verifyOfficeAddress() 
{
    var lastname = $$('#ContactInformationContainer .lastname')[0].value;
    var company = $$(containerName('office') + ' .company')[0].value;
    var address1 = $$(containerName('office') + ' .address1')[0].value;
    var address2 = $$(containerName('office') + ' .address2')[0].value;
    var city = $$(containerName('office') + ' .city')[0].value;
    var state = $$(containerName('office') + ' .state')[0].options[$$(containerName('office') + ' .state')[0].selectedIndex].text;
    var zip = $$(containerName('office') + ' .zip')[0].value;
    PageMethods.verifyAddress(company, lastname, address1, address2, city, state, zip, verifyOfficeAddressSuccess, verifyAddressFail);
}

function verifyPreferredAddress() 
{
    var lastname = $$('#ContactInformationContainer .lastname')[0].value;
    var company = $$(containerName('office') + ' .company')[0].value;
    var address1 = $$(containerName('preferred') + ' .address1')[0].value;
    var address2 = $$(containerName('preferred') + ' .address2')[0].value;
    var city = $$(containerName('preferred') + ' .city')[0].value;
    var state = $$(containerName('preferred') + ' .state')[0].options[$$(containerName('preferred') + ' .state')[0].selectedIndex].text;
    var zip = $$(containerName('preferred') + ' .zip')[0].value;
    PageMethods.verifyAddress(company, lastname, address1, address2, city, state, zip, verifyPreferredAddressSuccess, verifyAddressFail);
}

function verifyOfficeAddressSuccess(result) {

    
    if (result.Success) 
    {
        result.Address1 = result.Address1.replace(/^\s+|\s+$/g, "");
        result.Address2 = result.Address2.replace(/^\s+|\s+$/g, "");
        result.City = result.City.replace(/^\s+|\s+$/g, "");
        result.Zip = result.Zip.replace(/^\s+|\s+$/g, "");
        if ($$(containerName('office') + ' .zip')[0].value.substring(0, 5) == result.Zip.substring(0, 5) &&
            $$(containerName('office') + ' .zip')[0].value != result.Zip) 
        {
            $$(containerName('office') + ' .zip')[0].value = result.Zip;
        }
        if ($$(containerName('office') + ' .address1')[0].value != result.Address1
        || (result.Address2 != '' && $$(containerName('office') + ' .address2')[0].value != result.Address2)
        || $$(containerName('office') + ' .city')[0].value != result.City
        || $$(containerName('office') + ' .zip')[0].value != result.Zip) {
            showVerifiedAddressFieldIfDifferent('office', 'address1', result.Address1);
            showVerifiedAddressFieldIfDifferent('office', 'address2', result.Address2);
            showVerifiedAddressFieldIfDifferent('office', 'city', result.City);
            showVerifiedAddressFieldIfDifferent('office', 'zip', result.Zip);
        }
    }
    else 
    {
        showAddressWarning('office');
    }

    if (($$('#sendMailToAddress input')[0].checked == false) &&
                ($$(containerName('preferred') + ' .country')[0].selectedIndex == 1 ||
                $$(containerName('preferred') + ' .country')[0].selectedIndex == 2)) 
    {
        verifyPreferredAddress();
    }
    else if (thereAreSuggestions()) 
    {
        $find('ModalPopup').show();
    }
    else
    {
        btnSubmitClick();
    }    
}

function verifyPreferredAddressSuccess(result) {
    if (result.Success) {
        result.Address1 = result.Address1.replace(/^\s+|\s+$/g, "");
        result.Address2 = result.Address2.replace(/^\s+|\s+$/g, "");
        result.City = result.City.replace(/^\s+|\s+$/g, "");
        result.Zip = result.Zip.replace(/^\s+|\s+$/g, "");
        if ($$(containerName('preferred') + ' .zip')[0].value.substring(0, 5) == result.Zip.substring(0, 5) &&
            $$(containerName('preferred') + ' .zip')[0].value != result.Zip) {
            $$(containerName('preferred') + ' .zip')[0].value = result.Zip;
        }
        if ($$(containerName('preferred') + ' .address1')[0].value != result.Address1
        || (result.Address2 != '' && $$(containerName('preferred') + ' .address2')[0].value != result.Address2)
        || $$(containerName('preferred') + ' .city')[0].value != result.City
        || $$(containerName('preferred') + ' .zip')[0].value != result.Zip) {
            showVerifiedAddressFieldIfDifferent('preferred', 'address1', result.Address1);
            showVerifiedAddressFieldIfDifferent('preferred', 'address2', result.Address2);
            showVerifiedAddressFieldIfDifferent('preferred', 'city', result.City);
            showVerifiedAddressFieldIfDifferent('preferred', 'zip', result.Zip);
        }
    }
    else 
    {
        showAddressWarning('preferred');
    }

    if (thereAreSuggestions()) 
    {
        $find('ModalPopup').show();
    }
    else 
    {
        btnSubmitClick();
    }
}

function verifyAddressFail() {
    btnSubmitClick();
}

function btnSubmitClick() {
    $E('.btnAccountInfoSubmit').click();
}

function updateVerifiedAddressFields() {
    updateAddressFieldIfChecked('office', 'address1');
    updateAddressFieldIfChecked('office', 'address2');
    updateAddressFieldIfChecked('office', 'city');
    updateAddressFieldIfChecked('office', 'zip');
    updateAddressFieldIfChecked('preferred', 'address1');
    updateAddressFieldIfChecked('preferred', 'address2');
    updateAddressFieldIfChecked('preferred', 'city');
    updateAddressFieldIfChecked('preferred', 'zip');
    clearVerifiedAddressFields();
}

function clearVerifiedAddressFields() {
    hideObject('officeTable');
    hideObject('officeWarningRow');
    hideObject('officeHeaderRow');
    clearVerifiedAddressField('office', 'address1');
    clearVerifiedAddressField('office', 'address2');
    clearVerifiedAddressField('office', 'city');
    clearVerifiedAddressField('office', 'zip');
    hideObject('preferredTable');
    hideObject('preferredWarningRow');
    hideObject('preferredHeaderRow');
    clearVerifiedAddressField('preferred', 'address1');
    clearVerifiedAddressField('preferred', 'address2');
    clearVerifiedAddressField('preferred', 'city');
    clearVerifiedAddressField('preferred', 'zip');
    verifyOfficeFlag = false;
    verifyPreferredFlag = false;
}

function showVerifiedAddressFieldIfDifferent(addressName, fieldName, fieldResult) {
    if (fieldResult != '' && $$(containerName(addressName) + ' .' + fieldName)[0].value != fieldResult) {
        $get(addressName + fieldName + 'Checkbox').checked = true;
        $get(addressName + fieldName + 'Entered').innerHTML = $$(containerName(addressName) + ' .' + fieldName)[0].value;
        $get(addressName + fieldName + 'Returned').innerHTML = fieldResult;
        showObject(addressName + fieldName + 'Row');
        showObject(addressName + 'HeaderRow');
        showObject(addressName + 'Table');
    } else {
    hideObject(addressName + fieldName + 'Row');
    }
}

function showAddressWarning(addressName) 
{
    showObject(addressName + 'WarningRow');
    showObject(addressName + 'Table');
}

function containerName(addressName) {
    if (addressName == 'preferred') {
        return '#preferredAddressInformationContainer';
    } else {
        return '#officeAddressInformationContainer';
    }
}

function thereAreSuggestions()
{
    return (objectIsShown('officeTable') || 
            objectIsShown('preferredTable'));
}

function thereAreNoWarnings() 
{
    return ($$(containerName('office') + ' #addressVerificationWarning')[0].innerHTML == '' &&
            $$(containerName('preferred') + ' #addressVerificationWarning')[0].innerHTML == '');
    
    
}

function updateAddressFieldIfChecked(addressName, fieldName) {
    if ($get(addressName + fieldName + 'Checkbox').checked) {
        $$(containerName(addressName) + ' .' + fieldName)[0].value = $get(addressName + fieldName + 'Returned').innerHTML;
    }
}

function clearVerifiedAddressField(addressName, fieldName) {
    $get(addressName + fieldName + 'Checkbox').checked = false;
    $get(addressName + fieldName + 'Entered').innerHTML = "";
    $get(addressName + fieldName + 'Returned').innerHTML = "";
    hideObject(addressName + fieldName + 'Row');
}

function showObject(objectName){
    if (isIE){
        $get(objectName).style.display = "block";
    } else {
        $get(objectName).style.visibility = "visible"; 
    }
}

function hideObject(objectName){
    if (isIE){
        $get(objectName).style.display = "none";
    } else {
        $get(objectName).style.visibility = "collapse"; 
    }
}

function objectIsShown(objectName){
    if (isIE){
        return ($get(objectName).style.display == "block")
    } else {
        return ($get(objectName).style.visibility == "visible")
    }
}