package com.sharefaith.thesharefaithapp.ui;

import android.animation.ObjectAnimator;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.TextView;

import com.sharefaith.thesharefaithapp.R;
import com.sharefaith.thesharefaithapp.SFMainActivity;
import com.sharefaith.thesharefaithapp.base.SFAppData;
import com.sharefaith.thesharefaithapp.base.SFApplication;
import com.sharefaith.thesharefaithapp.base.SFBackgroundSync;
import com.sharefaith.thesharefaithapp.base.SFConfig;
import com.sharefaith.thesharefaithapp.base.SFUtil;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.HashMap;

/**
 * Created by Anthony on 2/1/16.
 * Methods that are shared by different Activities
 */
public class SFSharedUIMethods
{
    static SFApplication mApplication = SFApplication.getInstance();
    private Handler mHandler = new Handler();

    /**
     * Lauch map in browser
     */
    public static void launchMap(int position)
    {
        SFAppData appData = new SFAppData();
        Activity currentActivity = mApplication.getCurrentActivity();
        SFUtil.logSiteEvent( "Launch map" );

        String keys[] = {"address","city","state"};
        HashMap<String, String> locationMeta = appData.getMetaData(position,keys);
        if( locationMeta == null )
        {
            return;
        }

        String address = locationMeta.get( "address" );
        String city = locationMeta.get( "city" );
        String state = locationMeta.get( "state" );

        try
        {
            address = URLEncoder.encode( address, "UTF-8" );
            city = URLEncoder.encode( city, "UTF-8" );
            state = URLEncoder.encode( state, "UTF-8" );
        }
        catch( Exception e )
        {
            Log.d( "Activity", "URL encoder caught: " + e.getLocalizedMessage() );
        }

        String mapAddress = "http://maps.google.com/maps?q=";
        if( address.length() > 0 )
        {
            mapAddress  = mapAddress + address + ",+";
        }
        if( city.length() > 0 )
        {
            mapAddress  = mapAddress + city + "+";
        }
        if( state.length() > 0 )
        {
            mapAddress  = mapAddress +  state;
        }

        try
        {
            //log Analytics
            mApplication.logEvent( "leave_app","location" );
            Intent i = new Intent( Intent.ACTION_VIEW, Uri.parse( mapAddress ) );
            currentActivity.startActivity( i );
        }
        catch( Exception e )
        {
            Log.d( "MAP", "Exception: " + e.getLocalizedMessage() );
        }
    }

    /**
     * Opens set link in browser
     */
    public static void launchDonate(int position)
    {
        SFAppData appData = new SFAppData();
        Activity currentActivity = mApplication.getCurrentActivity();
        SFUtil.logSiteEvent( "Launch donate" );

        mApplication.currentLink = appData.getLinkURL( position );

        if( mApplication.currentLink != null)
        {
            closeMenu();
            Intent browser = new Intent( Intent.ACTION_VIEW, Uri.parse( mApplication.currentLink ) );
            mApplication.logEvent( "leave_app","link" );
            currentActivity.startActivity( browser );
        }

    }

    /**
     * Opens set link in browser
     */
    public static void launchDonate(String url)
    {
        Activity currentActivity = mApplication.getCurrentActivity();
        SFUtil.logSiteEvent( "Launch donate" );

        mApplication.currentLink = url;

        if( mApplication.currentLink != null)
        {
            closeMenu();
            Intent browser = new Intent( Intent.ACTION_VIEW, Uri.parse( url ) );
            mApplication.logEvent( "leave_app","link" );
            currentActivity.startActivity(browser);
        }

    }

    /**
     * swaps to a new instance of the tagged activity
     * @param viewTag
     */
    public static void swapToViewWithTag( String viewTag, int position )
    {
        Activity currentActivity = mApplication.getCurrentActivity();
        SFUtil.logSiteEvent( viewTag );

        if( viewTag.equals( "newsletter" ) || viewTag.equals( "posts" ) )
        {
            closeMenu();
            mApplication.currentPostPosition = mApplication.currentSectionPosition;
            Intent intent = new Intent(currentActivity, SFBlogBaseActivity.class );
            if(mApplication.currentViewTag.equals( "main" ))
            {
                intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
            }
            currentActivity.startActivity( intent );
            currentActivity.overridePendingTransition( R.anim.sf_activity_slidein_right, R.anim.sf_activity_slideout_left );
        }

        else if( viewTag.equals( "sermons" ) )
        {
            closeMenu();
            mApplication.currentPlaylistPosition = mApplication.currentSectionPosition;
            //Log.d( "mTag","CurrentSermonLayout now: " + mApplication.currentSermonsLayout );
            Intent intent = new Intent( currentActivity, SFPlaylistBaseActivity.class );
            if(mApplication.currentViewTag.equals( "main" ) || mApplication.currentViewTag.equals( "churchChooser" ))
            {
                intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
            }
            currentActivity.startActivity( intent );
            currentActivity.overridePendingTransition( R.anim.sf_activity_slidein_right, R.anim.sf_activity_slideout_left );
        }

        else if( viewTag.equals( "contact" ))
        {
            closeMenu();
            mApplication.currentConnectPosition = mApplication.currentSectionPosition;
            if(mApplication.currentViewTag.equals( "contact" ))
            {
                currentActivity.recreate();
                currentActivity.overridePendingTransition( R.anim.sf_activity_slidein_right, R.anim.sf_activity_slideout_left );
            }
            else
            {
                Intent intent = new Intent( currentActivity, SFContactActivity.class );
                if (mApplication.currentViewTag.equals( "main" ) || mApplication.currentViewTag.equals( "churchChooser" ))
                {
                    intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK );
                }
                currentActivity.startActivity( intent );
                currentActivity.overridePendingTransition( R.anim.sf_activity_slidein_right, R.anim.sf_activity_slideout_left );
            }
        }

        else if(viewTag.equals( "postdetail" ))
        {
            closeMenu();
            Intent intent = new Intent( currentActivity, SFBlogActivity.class );
            if(mApplication.currentViewTag.equals( "main" ) || mApplication.currentViewTag.equals( "churchChooser" ))
            {
                intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
            }
            currentActivity.startActivity( intent );
            currentActivity.overridePendingTransition( R.anim.sf_activity_slidein_right, R.anim.sf_activity_slideout_left );
        }

        else if( viewTag.equals( "sermondetail" ))
        {
            closeMenu();
            Intent intent = new Intent( currentActivity, SFPlaylistActivity.class );
            if(mApplication.currentViewTag.equals( "main" ) || mApplication.currentViewTag.equals( "churchChooser" ))
            {
                intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
            }
            currentActivity.startActivity( intent );
            currentActivity.overridePendingTransition( R.anim.sf_activity_slidein_right, R.anim.sf_activity_slideout_left );
        }
        else if( viewTag.equals( "downloads" ))
        {
            closeMenu();
            Intent intent = new Intent( currentActivity, SFDownloadsActivity.class );
            if(mApplication.currentViewTag.equals( "main" ) || mApplication.currentViewTag.equals( "churchChooser" ))
            {
                intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
            }
            currentActivity.startActivity( intent );
            currentActivity.overridePendingTransition( R.anim.sf_activity_slidein_right, R.anim.sf_activity_slideout_left );
        }
        else if( viewTag.equals( "inbox" ) )
        {
            closeMenu();
            mApplication.currentInboxPosition = mApplication.currentSectionPosition;
            Intent intent = new Intent( currentActivity, SFInboxActivity.class );
            if(mApplication.currentViewTag.equals( "main" ) || mApplication.currentViewTag.equals( "churchChooser" ))
            {
                intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
            }
            currentActivity.startActivity( intent );
            currentActivity.overridePendingTransition( R.anim.sf_activity_slidein_right, R.anim.sf_activity_slideout_left );
        }
        else if(viewTag.equals( "more" ))
        {
            closeMenu();
            mApplication.currentMorePosition = mApplication.currentSectionPosition;
            Intent intent = new Intent( currentActivity, SFMoreActivity.class );
            if(mApplication.currentViewTag.equals( "main" ) || mApplication.currentViewTag.equals( "churchChooser" ))
            {
                intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
            }
            currentActivity.startActivity( intent );
            currentActivity.overridePendingTransition( R.anim.sf_activity_slidein_right, R.anim.sf_activity_slideout_left );
        }
        else if( viewTag.equals( "bible" ))
        {
            closeMenu();
            mApplication.currentBiblePosition = mApplication.currentSectionPosition;
            Intent intent = new Intent( currentActivity, SFBibleActivity.class );
            if(mApplication.currentViewTag.equals( "main" ) || mApplication.currentViewTag.equals( "churchChooser" ))
            {
                intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
            }
            currentActivity.startActivity( intent );
            currentActivity.overridePendingTransition( R.anim.sf_activity_slidein_right, R.anim.sf_activity_slideout_left );
        }
        else if( viewTag.equals( "calendar" ))
        {
            closeMenu();
            mApplication.currentCalendarPosition = mApplication.currentSectionPosition;
            Intent intent = new Intent( currentActivity, SFCalendarActivity.class );
            if(mApplication.currentViewTag.equals( "main" ) || mApplication.currentViewTag.equals( "churchChooser" ))
            {
                intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
            }
            currentActivity.startActivity( intent );
            currentActivity.overridePendingTransition( R.anim.sf_activity_slidein_right, R.anim.sf_activity_slideout_left );
        }
        else if( viewTag.equals( "stream" ))
        {
            closeMenu();
            mApplication.currentVideoStreamPosition = mApplication.currentSectionPosition;
            Intent intent = new Intent( currentActivity, SFVideoStreamActivity.class );
            if(mApplication.currentViewTag.equals( "main" ) || mApplication.currentViewTag.equals( "churchChooser" ))
            {
                intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
            }
            currentActivity.startActivity( intent );
            currentActivity.overridePendingTransition( R.anim.sf_activity_slidein_right, R.anim.sf_activity_slideout_left );
        }

    }

    /**
     * restart the App and reset section states
     */
    public static void restartApp()
    {
        mApplication.currentConnectPosition = -2;
        mApplication.currentBiblePosition = -2;
        mApplication.currentPostPosition = -2;
        mApplication.currentInboxPosition = -2;
        mApplication.currentMorePosition = -2;
        mApplication.currentPlaylistPosition = -2;
        mApplication.currentCalendarPosition = -2;
        mApplication.currentVideoStreamPosition = -2;

        //nullify to force reload of menu items
        mApplication.nullifyNavMenuAdapter();

        //prevent the looping sync and loading first screen over and over
        mApplication.isAppRestarting = true;

        Activity currentActivity = mApplication.getCurrentActivity();
        Intent intent = new Intent( currentActivity, SFMainActivity.class );
        currentActivity.startActivity( intent );
        currentActivity.overridePendingTransition( R.anim.sf_activity_slidein_right, R.anim.sf_activity_slideout_right );
    }

    /**
     * Opens the navigation menu
     */
    public static void openMenu()
    {
        Activity currentActivity = mApplication.getCurrentActivity();

        if( !mApplication.isNavOpen )
        {
            ObjectAnimator oa;
            oa = ObjectAnimator.ofFloat( currentActivity.findViewById( R.id.slide_right ), "TranslationX", mApplication.getResources().getDimension( R.dimen.left_open_position ) );
            oa.setInterpolator( new AccelerateDecelerateInterpolator() );
            oa.setDuration( 250 );
            oa.start();
            if(!mApplication.currentViewTag.equals( "downloads" ) && !mApplication.currentViewTag.equals( "bible" ))
            {
                oa = ObjectAnimator.ofFloat( currentActivity.findViewById( R.id.audio_control_footer ), "TranslationX", mApplication.getResources().getDimension( R.dimen.left_open_position ) );
                oa.setInterpolator( new AccelerateDecelerateInterpolator() );
                oa.setDuration( 250 );
                oa.start();
            }
            mApplication.isNavOpen = true;
        }
    }

    /**
     * Closes the navigation menu
     */
    public static void closeMenu()
    {
        Activity currentActivity = mApplication.getCurrentActivity();

        if( mApplication.isNavOpen )
        {
            ObjectAnimator oa = ObjectAnimator.ofFloat( currentActivity.findViewById( R.id.slide_right ), "TranslationX", 0 );
            oa.setDuration( 250 );
            oa.start();
            if(!mApplication.currentViewTag.equals( "downloads" ) && !mApplication.currentViewTag.equals( "bible" ))
            {
                oa = ObjectAnimator.ofFloat( currentActivity.findViewById( R.id.audio_control_footer ), "TranslationX", 0 );
                oa.setDuration( 250 );
                oa.start();
            }
            mApplication.isNavOpen = false;
        }
    }

    /**
     * sets the passed Activity's contentView based on the layout chosen by the user
     * @param activity
     */
    public static void setBaseView(Activity activity, int layout)
    {
        //Log.d( "mTag","Hit setBaseView with current view tag = " + mApplication.currentViewTag );
        //String view = null;
        int layoutType = layout;
        //Log.d( "mTag","layoutType = " + layoutType );

        if( layoutType == 0 )
        {
            mApplication.logEvent( "layout","gamut" );
            activity.setContentView( R.layout.sf_gamut_base );
        }

        else if( layoutType == 1 )
        {
            mApplication.logEvent( "layout","nook" );
            //Log.d( "mTag","Setting content view to gamut base" );
            activity.setContentView( R.layout.sf_nook_base );
        }

        else if( layoutType == 2 )
        {
            mApplication.logEvent( "layout","reveal" );
            activity.setContentView( R.layout.sf_reveal_base );
        }
    }

    /**
     * sets the audio controls
     */
    public static void setAudioControls()
    {
        Activity activity = mApplication.getCurrentActivity();
        int audioHeight = (int)mApplication.getResources().getDimension( R.dimen.sf_audio_footer_height );
        RelativeLayout audioControls = (RelativeLayout) activity.findViewById( R.id.audio_control_footer );
        if(mApplication.isSermonPlaying)
        {
            SFSharedUIMethods.setFooterAudioControlsSermon();

            ViewGroup.LayoutParams list = audioControls.getLayoutParams();
            list.height = audioHeight;
            audioControls.setLayoutParams( list );
            mApplication.isMediaControlsFooterOpen = true;
        }
        else if(mApplication.isBiblePlaying)
        {
            SFSharedUIMethods.setFooterAudioControlsBible();

            ViewGroup.LayoutParams list = audioControls.getLayoutParams();
            list.height = audioHeight;
            audioControls.setLayoutParams( list );
            mApplication.isMediaControlsFooterOpen = true;
        }
        else if (mApplication.isMediaControlsFooterOpen)
        {
            ViewGroup.LayoutParams list = audioControls.getLayoutParams();
            list.height = 0;
            audioControls.setLayoutParams( list );
            mApplication.isMediaControlsFooterOpen = false;
        }
        audioControls.setOnClickListener( switchToDownloadsListener() );
    }

    /**
     * Listener for downloads buttons
     * @return
     */
    private static View.OnClickListener switchToDownloadsListener()
    {
        return
                new View.OnClickListener()
                {
                    public void onClick( View v )
                    {
                        swapToViewWithTag( "downloads", -1 );
                    }
                };
    }

    /**
     * set footer audio controls for Bible
     */
    public static void setFooterAudioControlsBible()
    {
        Activity currentActivity = mApplication.getCurrentActivity();
        ImageView playButton = (ImageView) currentActivity.findViewById( R.id.playcontrol_play_button );
        TextView titleView = (TextView) currentActivity.findViewById( R.id.playcontrol_title_textView );
        TextView contentView = (TextView) currentActivity.findViewById( R.id.playcontrol_content_textView );
        TextView elapseTime = (TextView) currentActivity.findViewById( R.id.elapse_textView );

        if(mApplication.isBibleAudioPaused)
        {
            playButton.setImageResource( R.drawable.audio_play );
        }
        else
        {
            playButton.setImageResource( R.drawable.audio_pause );
            if(!mApplication.isElapseTimerRunning)
            {
                startElapseTimer();
            }
        }
        titleView.setText( mApplication.getCurrentBook().mFullname + " " + (mApplication.chapterIndex+1) );
        titleView.setPadding( 0, mApplication.getDP( 6 ), 0, 0 );
        contentView.setVisibility( View.GONE );
        elapseTime.setText( mApplication.secondsToElapseString( mApplication.getSfMediaPlayer().getCurrentPosition()/1000 ) );

    }

    /**
     * Set footer audio controls for sermon
     */
    public static void setFooterAudioControlsSermon()
    {

        if(!mApplication.currentViewTag.equals( "downloads" ) && !mApplication.currentViewTag.equals( "bible" ))
        {
            Activity currentActivity = mApplication.getCurrentActivity();
            ImageView playButton = (ImageView) currentActivity.findViewById( R.id.playcontrol_play_button );
            TextView titleView = (TextView) currentActivity.findViewById( R.id.playcontrol_title_textView );
            TextView contentView = (TextView) currentActivity.findViewById( R.id.playcontrol_content_textView );
            TextView elapseTime = (TextView) currentActivity.findViewById( R.id.elapse_textView );

            if (mApplication.isSermonPlaying && !mApplication.isSermonPaused)
            {
                playButton.setImageResource( R.drawable.audio_pause );
                if (!mApplication.isElapseTimerRunning)
                {
                    startElapseTimer();
                }
            } else
            {
                playButton.setImageResource( R.drawable.audio_play );
            }
            try
            {
                titleView.setText( URLDecoder.decode( mApplication.getNowPlayingSermon().mTitle , "UTF-8") );
                contentView.setText( "Series: " + SFUtil.stripHtml( mApplication.getNowPlayingSermon().mSeriesTitle ) );
            } catch (UnsupportedEncodingException e)
            {
                e.printStackTrace();
            }
            titleView.setPadding( 0, 0, 0, 0 );
            contentView.setVisibility( View.VISIBLE );

            elapseTime.setText( mApplication.secondsToElapseString( mApplication.getSfMediaPlayer().getCurrentPosition() / 1000 ) );
        }
    }

    /**
     * do a full refresh of the app data
     */
    public static void fullrefresh()
    {
        mApplication.logEvent( "app_action","full_sync" );
        if(!mApplication.isDoingFullSync)
        {
            mApplication.isDoingFullSync = true;
            syncingOverlay();
            SFAppData data = new SFAppData();
            SFConfig config = new SFConfig();
            data.deleteAllDatabaseData();
            mApplication.deleteFilesFromDir( new File( config.mCustomAssetPath ) );
            mApplication.nullifyNavMenuAdapter();
            SFAppData.saveSyncTime( 0 );
            mApplication.isSyncing = false;
            SFSharedUIMethods.refresh();

        }
    }

    /**
     * Set overlay for when doing a full resync
     */
    public static void syncingOverlay()
    {

        Dialog dialog = mApplication.getSfDialog();
        dialog.requestWindowFeature( Window.FEATURE_NO_TITLE);
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
        dialog.setContentView(R.layout.sf_sync_notification);
        dialog.setCanceledOnTouchOutside(false);
        dialog.show();
    }

    /**
     * dismiss the full sync overlay
     */
    public static void dismissSyncingOverlay()
    {
        Dialog dialog = mApplication.getSfDialog();
        dialog.dismiss();
        mApplication.releaseSfDialog();
    }

    /**
     * starts a background sync
     */
    public static void refresh()
    {
        //we have already logged event for full sync
        if(!mApplication.isDoingFullSync)
        {
            mApplication.logEvent( "app_action", "manual_sync" );
        }

        if(!mApplication.isSyncing )
        {
            mApplication.isSyncing = true;
            Thread t = new Thread(
                    new Runnable()
                    {
                        public void run()
                        {
                            SFBackgroundSync sync = new SFBackgroundSync( mApplication );
                            sync.doSync();
                        }
                    }
            );
            t.start();
            animateRefresh();
        }
    }

    /**
     * animate the refresh arrows
     */
    public static void animateRefresh()
    {
        //Log.d( "mTag","hit UIShared animate refresh" );
        Activity activity = mApplication.getCurrentActivity();
        ImageView imageView = (ImageView) activity.findViewById( R.id.refreshArrows );
        if( imageView != null )
        {
            //Log.d( "mTag","Do animation" );
            Animation animationSyncing = AnimationUtils.loadAnimation( mApplication, R.anim.sf_clockwise_spin );
            imageView.startAnimation( animationSyncing );
        }
    }

    /**
     * stop the refresh arrows animation
     */
    public static void stopAnimateRefresh()
    {
        //Log.d( "mTag","hit UIShared stop animate refresh" );
        Activity activity = mApplication.getCurrentActivity();
        ImageView imageView = (ImageView) activity.findViewById( R.id.refreshArrows );
        if( imageView != null )
        {
            imageView.clearAnimation();
        }
    }

    /**
     * show a message overlay
     * @param message
     * @param link
     */
    public static void notificationOverlay( String message,final String link )
    {
        final AlertDialog.Builder builder = new AlertDialog.Builder( mApplication.getCurrentActivity() );

        if( link.equals( "" ) )
        {
            builder.setMessage( message );
            builder.setPositiveButton( mApplication.getString( R.string.alert_close ), null );
            builder.show();
        }
        else
        {
            builder.setMessage( message );
            builder.setNegativeButton( mApplication.getString( R.string.alert_close ), null );
            builder.setPositiveButton( mApplication.getString( R.string.alert_go ), new DialogInterface.OnClickListener()
            {
                public void onClick( DialogInterface dialog, int id )
                {
                    try
                    {
                        String final_link =  link;
                        if(link.indexOf( "http" ) !=0)
                        {
                            final_link = "http://" + final_link;
                        }
                        Intent browser = new Intent( Intent.ACTION_VIEW, Uri.parse( final_link ) );
                        mApplication.getCurrentActivity().startActivity( browser );
                    }
                    catch( Exception e )
                    {
                        Log.d( "URI", "Exception: " + e.getLocalizedMessage() );
                    }
                }
            });
            builder.show();
        }
    }

    /**
     * start the elapse timer for audio
     */
    public static void startElapseTimer()
    {
        if( !mApplication.getSfMediaPlayer().isPlaying() )
        {
            return;
        }
        //mApplication.isElapseTimerRunning = true;
        Handler handler = new Handler();
        handler.postDelayed( mUpdateElapse, 500 );
    }

    /**
     * updates the elapse timer for audio playing
     */
    public static Runnable mUpdateElapse = new Runnable()
    {
        public void run()
        {
            int currentDuration = mApplication.getSfMediaPlayer().getCurrentPosition();
            int currentSeconds = currentDuration/1000;
            if(!mApplication.currentViewTag.equals( "bible" )&& !mApplication.currentViewTag.equals( "main" ))
            {
                TextView elapseTimer = (TextView) mApplication.getCurrentActivity().findViewById( R.id.elapse_textView );
                elapseTimer.setText( mApplication.secondsToElapseString( currentSeconds ) );
                if(mApplication.isSermonPlaying)
                {
                    mApplication.getNowPlayingSermon().saveAudioPlayProgress( currentSeconds );
                }
                startElapseTimer();
            }
            if(mApplication.currentViewTag.equals( "downloads" ))
            {
                SeekBar seekBar = (SeekBar) mApplication.getCurrentActivity().findViewById( R.id.seekBar );
                seekBar.setProgress( currentSeconds );
            }
        }
    };
}
