﻿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" );
dojo.require( "dijit.InlineEditBox" );

function doNewsErrorView()
{
    var dvStatusDetails = dojo.byId( "dvNewsStatusDetails" );
    showDiv( dvStatusDetails );
}

function doNewsErrorReport()
{

}

function doNewsErrorIgnore()
{
    var dvStatusMessage = dojo.byId( "dvNewsStatusMessage" );
    dvStatusMessage.innerHTML = "";
    hideDiv( dvStatusMessage );
        
    var dvStatusDetails = dojo.byId( "dvNewsStatusDetails" );
    dvStatusDetails.innerHTML = "";
    hideDiv( dvStatusDetails );
    
    var dvStatusReporting = dojo.byId( "dvNewsStatusReporting" );
    hideDiv( dvStatusReporting );
}

function doArticlePublishReset()
{
    var txtArticleHeadlineVar = dijit.byId( "txtNewArticleHeadline" );
    var txtArticleHeadlineImageVar = dijit.byId( "txtNewArticleHeadlineImage" );
    var txtArticleCategoryVar = dijit.byId( "txtNewArticleCategory" );
    var txtArticleBodyVar = dijit.byId( "txtNewArticleBody" );

    txtArticleHeadlineVar.attr( 'value', "" );
    txtArticleHeadlineImageVar.attr( 'value', "" );
    txtArticleCategoryVar.attr( 'value', "" );
    txtArticleBodyVar.attr( 'value', "" );
    
    // Reset status area
    doNewsErrorIgnore();
}

function doArticlePublishSubmit()
{
    // Make sure everything is valid and then package things up
    var txtArticleHeadlineVar = dijit.byId( "txtNewArticleHeadline" );
    var txtArticleHeadlineImageVar = dijit.byId( "txtNewArticleHeadlineImage" );
    var txtArticleCategoryVar = dijit.byId( "txtNewArticleCategory" );
    var txtArticleBodyVar = dijit.byId( "txtNewArticleBody" );
    
    // Do validation
    if( !txtArticleHeadlineVar.isValid() )
    {
        txtArticleHeadlineVar.focus();
        return false;
    }
    
    if( !txtArticleHeadlineImageVar.isValid() )
    {
        txtArticleHeadlineImageVar.focus();
        return false;
    }
    
    if( !txtArticleCategoryVar.isValid() )
    {
        txtArticleCategoryVar.focus();
        return false;
    }
    
    if( txtArticleBodyVar.attr( 'value' ) == "" )
    {
        txtArticleBodyVar.attr( 'displayedValue', 'Please enter some valid text' );
        return false;
    }
    
    // Get the values from these widgets and strip out (literally interpret) any markup the user may have entered
    var headline = stripMarkup( txtArticleHeadlineVar.attr( 'value' ) );
    var headlineImage = stripMarkup( txtArticleHeadlineImageVar.attr( 'value' ) );
    var category = stripMarkup( txtArticleCategoryVar.attr( 'value' ) );
    var body = stripMarkup( txtArticleBodyVar.attr( 'value' ) );

    var newArticleData = {
        "newsHeadlineVal" : headline,
        "newsHeadlineImageVal" : headlineImage,
        "newsCategoryVal" : category,
        "newsBodyVal" : body
    }

    showDivByName( "dvNewsStatus" );
    showDivByName( "dvNewsStatusMessage" );
    dojo.byId( "dvNewsStatusMessage" ).innerHTML = "Submitting data...";
    
    // Disable submit and cancel buttons for a bit
    dijit.byId( "btnNewArticleSubmit" ).attr( "disabled", true );
    dijit.byId( "btnNewArticleCancel" ).attr( "disabled", true );
        
    // Do ajax request
    dojo.xhrPost({
            url : "NewsAPI.aspx",
            content : newArticleData,
            handleAs : "text",
            timeout : 90000,
            load : function( response, ioArgs )
                   {
                        console.log( "successful xhrPost", response, ioArgs );
                        // alert( "It worked!" );
                        // If everything worked then use the response to set the status div content
                        showDivByName( "dvNewsStatus" ); 
                        var dvStatusMessage = dojo.byId( "dvNewsStatusMessage" );
                        dvStatusMessage.innerHTML = response;
                        showDiv(dvStatusMessage);
                        doArticlePublishReset();
                                                
                        return response;
                   },
            error : function( response, ioArgs )
                    {
                        console.log( "failed xhrPost", response, ioArgs );
                        // alert( "Something broke!" );
                        
                        showDivByName( "dvNewsStatus" ); 
                        var dvStatusMessage = dojo.byId( "dvNewsStatusMessage" );
                        dvStatusMessage.innerHTML = response.message;
                        showDiv(dvStatusMessage);
                        
                        var dvStatusDetails = dojo.byId( "dvNewsStatusDetails" );
                        hideDiv( dvStatusDetails );
                        dvStatusDetails.innerHTML = response.responseText;
                                                                        
                        var dvStatusReporting = dojo.byId( "dvNewsStatusReporting" );
                        showDiv(dvStatusReporting);
                                                                                                
                        return response;
                    },
            handle : function( response, ioArgs )
                     {
                        // Re-enable submit and cancel buttons
                        dijit.byId( "btnNewArticleSubmit" ).attr( "disabled", false );
                        dijit.byId( "btnNewArticleCancel" ).attr( "disabled", false );
                        return response;
                     }
        });
        
    return true;
}

