﻿dojo.require( "dijit.layout.ContentPane" );
dojo.require( "dijit.layout.TabContainer" );
dojo.require( "dijit.Tooltip" );
dojo.require( "dijit.layout.AccordionContainer" );
dojo.require( "dijit.form.CheckBox" );
dojo.require( "dijit.form.Button" );
dojo.require( "dijit.form.ComboBox" );
dojo.require( "dijit.form.FilteringSelect" );
dojo.require("dojo.data.ItemFileWriteStore");
dojo.require( "dijit.Tree" );
dojo.require( "dijit.form.TextBox" );
dojo.require( "dijit.form.ValidationTextBox" );

// Stores
var individualTypesStore = new dojo.data.ItemFileWriteStore({
    data: 
    {
        identifier: "id", label : "name", items : 
        [
            {name : "Broker", id : "Broker"},
            {name : "Dealer", id : "Dealer"},
            {name : "Investment Adviser", id : "InvestmentAdviser"},
            {name : "Trader", id : "Trader"},
            {name : "Underwriter", id : "Underwriter"}    
        ]
    }
});

var companyTypesStore = new dojo.data.ItemFileWriteStore({
    data: 
    {
        identifier: "id", label : "name", items : 
        [
            {name : "Broker", id : "Broker"},
            {name : "Dealer", id : "Dealer"},
            {name : "Investment Adviser", id : "InvestmentAdviser"},
            {name : "Mutual Fund - General", id : "MutualFund"},
            {name : "Mutual Fund - Exempt", id : "MutualFundExempt"},
            {name : "Mutual Fund - Limited Investors", id : "MutualFundLimitedInvestors"},
            {name : "Mutual Fund Administrator - General", id : "MutualFundAdministrator"},
            {name : "Mutual Fund Administrator - Restricted", id : "MutualFundAdministratorRestricted"},
            {name : "Reporting Issuer", id : "ReportingIssuer"},
            {name : "Securities Company", id : "SecuritiesCompany"},
            {name : "Self Regulatory Organisation", id : "SelfRegulatoryOrganisation"},
            {name : "Trader", id : "Trader"},
            {name : "Underwriter", id : "Underwriter"}
        ]
    }
});

function loadRegTypesIndividual()
{
    var ddlRegTypeList = dijit.byId( "ddlRegistrantType" );
    ddlRegTypeList.store = individualTypesStore;
    ddlRegTypeList.attr( "value", "Broker" );
    ddlRegTypeList.attr( "displayedValue", "Broker" );
}

function loadRegTypesCompany()
{
    var ddlRegTypeList = dijit.byId( "ddlRegistrantType" );
    ddlRegTypeList.store = companyTypesStore; 
    ddlRegTypeList.attr( "value", "Broker" );
    ddlRegTypeList.attr( "displayedValue", "Broker" );
}

function doRegistrantSubmit()
{
    // Make sure everything is valid and then package things up
    var ddlRegTypeListVar = dijit.byId( "ddlRegistrantType" );
    var txtRegistrantNameVar = dijit.byId( "txtRegistrantName" );
    var txtRegistrationNumberVar = dijit.byId( "txtRegistrationNumber" );
    var chkAddToRegister = dijit.byId( "chkAddToRegister" );
    var txtRegisterYear = dijit.byId( "txtRegisterYear" );
    
    // Do validation
    if( !txtRegistrantNameVar.isValid() )
    {
        //txtRegistrantNameVar.validate();
        txtRegistrantNameVar.focus();
        return false;
    }
    if( !txtRegistrationNumberVar.isValid() )
    {
        //txtRegistrationNumberVar.validate();
        txtRegistrationNumberVar.focus();
        return false;
    }
    
    if( chkAddToRegister.attr( "checked" ) )
    {
        if( !txtRegisterYear.isValid() )
        {
            txtRegisterYear.focus();
            return false;
        }
    }
    
    // Find the registration class (company or individual)
    var coyReg = dijit.byId( "optCompany" );
    var indivReg = dijit.byId( "optIndividual" );
    var regClass = null;
    
    if( coyReg.attr( "checked" ) )
    {
        regClass = coyReg.attr( "value" );
    }
    else
    {
        regClass = indivReg.attr( "value" );
    }                   
    
    var regType = ddlRegTypeListVar.attr( "value" );
    var regName = txtRegistrantNameVar.attr( "value" );
    var regNumber = txtRegistrationNumberVar.attr( "value" );
    var addToReg = chkAddToRegister.attr( "checked" );
    var regYear = txtRegisterYear.attr( 'value' );
    
    var newRegData = {
        "regClassVal" : regClass,
        "regTypeVal" : regType,
        "regNameVal" : regName,
        "regNumberVal" : regNumber,
        "regAddToRegisterVal" : addToReg,
        "regYearVal" : regYear
    }
    
    showDivByName( "dvRegistrantStatus" );
    showDivByName( "dvRegistrantStatusMessage" );
    dojo.byId( "dvRegistrantStatusMessage" ).innerHTML = "Submitting data...";
    
    dijit.byId( "btnNewRegistrantCreate" ).attr( "disabled", true );
    dijit.byId( "btnNewRegistrantCancel" ).attr( "disabled", true );
                                            
    // Do ajax request
    dojo.xhrPost({
            url : "RegistrantAPI.aspx",
            content : newRegData,
            handleAs : "text",
            timeout : 90000,
            load : function( response, ioArgs )
                   {
                        console.log( "successful xhrPost", response, ioArgs );
                        //alert( "It worked!" );
                        showDivByName( "dvRegistrantStatus" ); 
                        var dvStatusMessage = dojo.byId( "dvRegistrantStatusMessage" );
                        dvStatusMessage.innerHTML = response;
                        showDiv(dvStatusMessage);
                        
                        return response;
                   },
            error : function( response, ioArgs )
                    {
                        console.log( "failed xhrPost", response, ioArgs );
                        
                        showDivByName( "dvRegistrantStatus" ); 
                        var dvStatusMessage = dojo.byId( "dvRegistrantStatusMessage" );
                        dvStatusMessage.innerHTML = response.message;
                        showDiv(dvStatusMessage);
                        
                        var dvStatusDetails = dojo.byId( "dvRegistrantStatusDetails" );
                        hideDiv( dvStatusDetails );
                        dvStatusDetails.innerHTML = response.responseText;
                                                                        
                        var dvStatusReporting = dojo.byId( "dvRegistrantStatusReporting" );
                        showDiv(dvStatusReporting);
                        
                        return response;
                    },
            handle : function( response, ioArgs )
                     {
                        // Re-enable submit and cancel buttons
                        dijit.byId( "btnNewRegistrantCreate" ).attr( "disabled", false );
                        dijit.byId( "btnNewRegistrantCancel" ).attr( "disabled", false );
                        
                        return response;
                     }
        });
        
    return true;
}

function doRegistrantCancel()
{
    clearInput();
}

function clearInput()
{
    // Find text boxes
    var txtRegistrantNameVar = dijit.byId( "txtRegistrantName" );
    txtRegistrantNameVar.attr( "value", "" );
    txtRegistrantNameVar.attr( "displayedValue", "" );
    var txtRegistrationNumberVar = dijit.byId( "txtRegistrationNumber" );
    txtRegistrationNumberVar.attr( "value", "" );
    txtRegistrationNumberVar.attr( "displayedValue", "" );
}

function doRegistrantErrorReport()
{
    var dvStatusDetails = dojo.byId( "dvStatusDetails" );
    showDiv(dvStatusDetails);
}

function doRegistrantErrorIgnore()
{
    dojo.byId( "dvStatusMessage" ).innerHTML = "";
    var dvStatusDetails = dojo.byId( "dvStatusDetails" );
    hideDiv(dvStatusDetails);
    var dvStatusReporting = dojo.byId( "dvStatusReporting" );
    hideDiv(dvStatusReporting);
}

function doRegistrantErrorShowDetails()
{
    var dvStatusDetails = dojo.byId( "dvStatusDetails" );
    showDiv(dvStatusDetails);
}

function doPopulateTreeView( tvw )
{

}

function doGetRegistrantByID( regID )
{
    var regQueryData = {
        "regQueryType" : "ByID",
        "regIDVal" : regID
    }
    
    var regQueryResult;
    
    
    
    return regQueryResult;
}

function doGetRegistrants( regType, isCompany, managedBy )
{
    var regQueryData = {
        "regQueryType" : "ByTypeIsCompanyManagedBy",
        "regTypeVal" : regType,
        "regIsCompanyVal" : isCompany,
        "regManagedByVal" : managedBy
    }
    
    var regQueryResult;
    
    // Do ajax request
    dojo.xhrGet({
            url : "RegistrantAPI.aspx",
            content : regQueryData,
            handleAs : "json",
            timeout : 90000,
            load : function( response, ioArgs )
                   {
                        console.log( "successful xhrPost", response, ioArgs );
                        
                        
                        return response;
                   },
            error : function( response, ioArgs )
                    {
                        console.log( "failed xhrPost", response, ioArgs );
                        
                        return response;
                    },
            handle : function( response, ioArgs )
                     {
                     
                        return response;
                     }                   
    });    
    
    return regQueryResult;
}
