﻿// JScript File

var qbLoginServerUrl = 'https://login.quickbooks.com/j/qbn/sdkapp/';
var qbAppId = '108912029';

var qbDECustImporterWithoutCodebaseInit = false;
var qbDECustImportedWithCodebaseInit = false;

var prevImportSourceSelectionValue = '';

if (document.addEventListener) {
	document.addEventListener('DOMContentLoaded', init, false);
}

(function() {
	/*@cc_on
	try
	{
		document.body.doScroll('up');
		return init();
	} catch(e) {}
	/*@if (false) @*/
	if (/loaded|complete/.test(document.readyState)) return init();
	/*@end @*/
	if (!init.done) setTimeout(arguments.callee, 30);
})();

if (window.addEventListener) {
	window.addEventListener('load', init, false);
} else if (window.attachEvent) {
	window.attachEvent('onload', init);
}

function init() {
	if (arguments.callee.done) return;
	arguments.callee.done = true;
	
	var msieBrowser = /MSIE \d+\.\d+;/.test(navigator.userAgent);
	if (!msieBrowser)
		SetVisible('ImportQBDataTable', false);
}


function OnClickImportSource()
{
    var ImportSourceSelection_Value = GetRadioButtonValue('ImportQBData');
    if (prevImportSourceSelectionValue == ImportSourceSelection_Value)
        return;

    switch(ImportSourceSelection_Value)
    {
        case 'No' :
            SetVisible('QBImport_InstallActiveX', false);
            SetVisible('QBImport_Section_DE', false);
            SetVisible('QBImport_Controls', false);
            break;
        case 'Yes' :
            SetVisible('QBImport_InstallActiveX', true);
            
            //changed here by PPM from false to true on 5.23.2007
            SetVisible('QBImport_Section_DE', false); // changed back
            SetVisible('QBImport_Controls', false); // changed back
            
            
            ResetImportedData();            
            
            ResetRadioButtonValue('QBDEImportType');
            SetupQBDECustImporterWithoutCodebase();
            CheckForQBDECustImporter();
            
            //changed here by PPM from false to true on 5.23.2007
            SetVisible('QBImport_Controls', false); 
            
            SetDisabled('QBImportDataButton', false);
            ResetQbDataImportStatus();
            
            // Added below (two lines) by PPM on 05.23.2007
            document.all('QBImport_DE_Running').checked = 'checked';
            OnClickQBDEImportTypeRadio();
            
            //Commented Out by PPM on 05.23.2007
            //SetFocus('InstallCustImpActiveXButton');
            break;
        default :
            alert('Not known selection value: "' + ImportSourceSelection_Value + '"');
            break;
    } 

    prevImportSourceSelectionValue = ImportSourceSelection_Value;
}

function SetupQBDECustImporterWithoutCodebase()
{
    if (qbDECustImporterWithoutCodebaseInit)
        return;
    
    try
    {
        var activeX_HTML = '<object style="position:absolute; top:0; left:0; visibility:hidden" id="QBDECustImporter" classid="CLSID:C16F17CB-4F18-45B6-B5E0-0C48E5B061D0"></object>';
        SetInnerHTML('QBDECustImporter_Placeholder', activeX_HTML);
        qbDECustImporterWithoutCodebaseInit = true;
    }
    catch (ex)
    {
        ShowException(ex);
    }
}

function SetupQBDECustImporterWithCodebase()
{
    if (qbDECustImportedWithCodebaseInit)
        return;
    
    try
    {
        var activeX_HTML = '<object style="position:absolute; top:0; left:0; visibility:hidden" id="QBDECustImporter" classid="CLSID:C16F17CB-4F18-45B6-B5E0-0C48E5B061D0" codebase="ActiveX\QBDatImp.cab#version=1,0,0,1"></object>';
        SetInnerHTML('QBDECustImporter_Placeholder', activeX_HTML);
        qbDECustImportedWithCodebaseInit = true;
    }
    catch (ex)
    {
        ShowException(ex);
    }
}

function CheckForQBDECustImporter()
{
    try
    {
        if (QBDECustImporter.object)
        {
            SetWeHaveQBDECustImporter();
            return true;
        }
    }
    catch (ex)
    {
        ShowException(ex);
    }
    
    return false;
}

function SetWeHaveQBDECustImporter()
{
    SetVisible('QBImport_InstallActiveX', false);
    SetVisible('CustImpAxtiveXInstalled', true);
    SetVisible('WaitingForCustImpActiveX', false);
    SetDisabled('InstallCustImpActiveXButton', true);
    
    if (!QBDECustImporter.IsInitialized)
    {
        SetInnerHTML('QBImport_Instantiation_Error',
            '<br />&nbsp;' + QBDECustImporter.ErrorMessage + '<br /><br />');
        SetVisible('QBImport_Section_Error', true);
    }
    else
    {
        QBDECustImporter.ClearErrorInfo();
        SetVisible('QBImport_Section_Error', false);
        SetVisible('QBDE_SelectCompanyFileName_Instructions', false);
        
        //Changed here by PPM from false to true on 5.23.2007
        SetVisible('QBDERunning_Import_Instructions', true);
        //Changed here by PPM from false to true on 5.23.2007
        SetVisible('QBImport_Controls', true);
        
        ResetQBDESelectedCompanyFileName();
        SetVisible('QBImport_Section_DE', true);
        SetVisible('QBImport_Controls', true);
    }
}

function InstallQBDECustImporter()
{
    if (CheckForQBDECustImporter())
        return;

    SetVisible('CustImpAxtiveXInstalled', false);
    SetVisible('WaitingForCustImpActiveX', true);
    
    if (((window.navigator.userAgent.indexOf("SV1") > -1) || (window.navigator.userAgent.indexOf("MSIE 7") > -1)) &&
        (window.navigator.userAgent.indexOf("AOL") < 0))
    {
        var leftPos = (screen.width - 450) / 2;
        var topPos = (screen.height - 250) / 2;
        
        try
        {
            try
            {
                popup = window.open('InstallQBDECustImporter.aspx', 'InstallQBDECustImporter',
                    'resizable, left=' + leftPos + ', top=' + topPos + ', height=250, width=450');
                popup.opener = document.getElementById('QBDECustImporter_Placeholder');
            }
            catch (ex)
            {
                alert('You may have a pop-up blocker enabled. Please disable it to allow the ActiveX installation window to open.');
            }
        }
        catch (ex)
        {
            ShowException(ex);
        }
    }
    else
        SetupQBDECustImporterWithCodebase();
        
    window.setTimeout('VerifyIfQBDECustImporterIsInstalled()', 100);
}

function VerifyIfQBDECustImporterIsInstalled()
{
    if (CheckForQBDECustImporter())
        return;
        
    window.setTimeout('VerifyIfQBDECustImporterIsInstalled()', 100);
}

function InstallQbDataImportActiveX()
{        
    InstallQBDECustImporter();
    var button = document.getElementById('InstallCustImpActiveXButton');
    button.style.display = 'none';
}

function OnClickQBDEImportTypeRadio()
{
    var QBDEImportType_Value = GetRadioButtonValue('QBDEImportType');
    if ('QBDERunning' == QBDEImportType_Value)
    {
        SetVisible('QBDE_SelectCompanyFileName_Instructions', false);
        SetVisible('QBDERunning_Import_Instructions', true);
        // Changed by Peter Machac 03.13.2007 was true now false
        if(document.getElementById('QBImport_Section_DE').style.display != "none") SetVisible('QBImport_Controls', true);
        ResetQBDESelectedCompanyFileName();
        SetFocus('QBImportDataButton');
    }
    else if ('QBDESelectFileName' == QBDEImportType_Value)
    {
        SetVisible('QBDERunning_Import_Instructions', false);
        SetVisible('QBDE_SelectCompanyFileName_Instructions', true);
        SetVisible('QBImport_Controls', true);
        ResetQBDESelectedCompanyFileName();
        SetFocus('QBImportDataButton');
    }
    else
        alert('Not known selection value: "' + QBDEImportType_Value + '"');
}

function SetDataImportErrorMessage(errorMessage)
{
    SetStyleColor('QBImportStatus', 'white');
    SetStyleBackColor('QBImportStatus', 'red');
    SetInnerHTML('QBImportStatus', 'Error: ' + errorMessage);
}

function ResetQbDataImportStatus()
{
    SetStyleColor('QBImportStatus', 'green');
    SetStyleBackColor('QBImportStatus', 'white');
    SetInnerHTML('QBImportStatus', 'No data imported');
}

function QBDEImportData(companyFileName)
{
    SetDisabled('QBImportDataButton', true);
    
    SetStyleColor('QBImportStatus', 'green');
    SetStyleBackColor('QBImportStatus', 'white');
    
    try
    {
        SetInnerHTML('QBImportStatus', 'Connecting to QuickBooks desktop edition...');
        QBDECustImporter.OpenConnection(companyFileName);
        
        SetQBDESelectedCompanyFileName(QBDECustImporter.CurrentCompanyFileName);
        
        SetInnerHTML('QBImportStatus', 'Importing data from QuickBooks desktop edition...');
        QBDECustImporter.Import();
        
        SetValue('QBCompressedData', QBDECustImporter.CustomerData);
        SetInnerHTML('QBImportStatus', 'QuickBooks data was successfully imported');
    }
    catch (ex)
    {
        if (0 != QBDECustImporter.ErrorMessage.length)
            SetDataImportErrorMessage(QBDECustImporter.ErrorMessage);
    }
    
    try
    {
        QBDECustImporter.ClearCustomerData();
        QBDECustImporter.CloseConnection();
    }
    catch (ex)
    {
        if (0 != QBDECustImporter.ErrorMessage.length)
            SetDataImportErrorMessage(QBDECustImporter.ErrorMessage);
    }
    
    SetDisabled('QBImportDataButton', false);
}


function ResetImportedData()
{
    SetValue('QBCompressedData', '');
    SetValue('QBDESelectedCompanyFileName', '');
}

function SetQBDESelectedCompanyFileName(fileName)
{
    SetValue('QBDESelectedCompanyFileName', fileName);
    SetInnerHTML('QBDECompanyFileName', fileName);
    //Commented out by PPM on 05242007
    //SetVisible('QBDECompanyFileNameInfo', true);
}

function ResetQBDESelectedCompanyFileName()
{
    SetValue('QBDESelectedCompanyFileName', '');
    SetInnerHTML('QBDECompanyFileName', '');
    SetVisible('QBDECompanyFileNameInfo', false);
}

function StartQbDataImport()
{
    StartQBDEDataImport();    
}

function StartQBDEDataImport()
{
    var QBDEImportType_Value = GetRadioButtonValue('QBDEImportType');
    if ('QBDERunning' == QBDEImportType_Value)
        window.setTimeout('QBDEImportData()', 10);
    else if ('QBDESelectFileName' == QBDEImportType_Value)
    {
        var selectedCompanyFileName = GetValue('QBDESelectedCompanyFileName');
        if (!selectedCompanyFileName || (0 == selectedCompanyFileName.length))
        {
            alert('Please select the QuickBooks company file name before importing data.');
            return;
        }
        
        var escapedPath = EscapePath(selectedCompanyFileName);
        window.setTimeout("QBDEImportData('" + EscapePath(selectedCompanyFileName) + "')", 10);
    }
    else
        alert('Not known selection value: "' + QBDEImportType_Value + '"');
}

function BrowseForQBDECompanyFileName()
{
    var obj = new ActiveXObject('QBFBr.FileBrowser');
    if (!obj)
    {
        alert("Can't instantiate the QBFBr.FileBrowser class used for file browsing.");
        return;
    }
    
    obj.Title = 'Select a QuickBooks Company';
    obj.OpenFileDialog = true;
    obj.Filter = 'QuickBooks Files (*.QBW, *.QBA)|*.QBW;*.QBA|All Files (*.*)|*.*||';
    
    var quickBooksMruFilePath = QBDECustImporter.QuickBooksMruFilePath;
    if (0 < quickBooksMruFilePath.length)
        obj.InitialDirectory = quickBooksMruFilePath;
    
    var result = obj.ShowModal();
    if (result)
        SetQBDESelectedCompanyFileName(obj.FileName);
}

function LaunchConnectionTicketWizard()
{
    window.open(qbLoginServerUrl + 'confirm?serviceid=2004&appid=' + qbAppId);
}

function LaunchSessionTicketWizard()
{
    window.open(qbLoginServerUrl + 'sessionauth2?serviceid=2004&appid=' + qbAppId);
}

function IsActiveXObjectInstalled(objectId)
{
    obj = new ActiveXObject(objectId);
    
    return obj ? true : false;
}
