package mss.pune.jainthoughts;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.support.v13.app.FragmentStatePagerAdapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.NavUtils;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.MenuItem;


public class ScreenSlideActivity extends android.support.v4.app.FragmentActivity {
	
	 private int NUM_PAGES;
	 private ViewPager mPager;
	 private EnumJainThoughts thoughtsPosition;
	 private Handler handler = new Handler();        
	 private Runnable changeView;
	 private PagerAdapter mPagerAdapter;
	 private boolean AutiSlide = false;
	 private int AutiSlideTimeSpan = 0;
	
	private class ScreenSlidePagerAdapter extends android.support.v13.app.FragmentStatePagerAdapter {
	        public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fm) {
	            super(fm);	          
	        }

	        @Override
	        public android.support.v4.app.Fragment getItem(int position) {
	            return ScreenSlidePageFragment.create(position,thoughtsPosition);
	        }

	        @Override
	        public int getCount() {
	            return NUM_PAGES;
	        }
	    }
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_screen_slide);
        

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext());
        AutiSlide = prefs.getBoolean("checkBox", false); 
        AutiSlideTimeSpan =  Integer.parseInt(prefs.getString("timespan", "0")) * 1000;

        thoughtsPosition = (EnumJainThoughts) getIntent().getSerializableExtra("POSITION");
        this.setTitle(thoughtsPosition.toString());  
        
        MessageHelper messageHelper = new MessageHelper();
        NUM_PAGES = messageHelper.GetEnglishMessageLength(thoughtsPosition);  
        
        mPager = (android.support.v4.app.ViewPager) findViewById(R.id.pager);
        mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
        mPager.setAdapter(mPagerAdapter);
        mPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                // When changing pages, reset the action bar actions since they are dependent
                // on which page is currently active. An alternative approach is to have each
                // fragment expose actions itself (rather than the activity exposing actions),
                // but for simplicity, the activity provides the actions in this sample.
                invalidateOptionsMenu();
            }
        });
        
        if(AutiSlide){
	        changeView = new Runnable() {
	            public void run() {
	            	autiSlideCallBack();
	            	if((mPager.getCurrentItem() + 1) < NUM_PAGES && AutiSlide) {
	            		handler.postDelayed(this, AutiSlideTimeSpan);
	        		}
	            	else {
	            		handler.removeCallbacks(changeView);            		 
	            	}
	            }
	        };
	        handler.postDelayed(changeView, AutiSlideTimeSpan);
        }        
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.activity_screen_slide, menu);

        menu.findItem(R.id.action_previous).setEnabled(mPager.getCurrentItem() > 0);
        if(AutiSlide){
        	MenuItem item = menu.add(Menu.NONE, R.id.action_stop, Menu.NONE, R.string.action_stop);
        	item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);        
        	menu.findItem(R.id.action_stop).setEnabled(mPager.getCurrentItem() > 0);
        }
        // Add either a "next" or "finish" button to the action bar, depending on which page
        // is currently selected.
        MenuItem item = menu.add(Menu.NONE, R.id.action_next, Menu.NONE,
                (mPager.getCurrentItem() == mPagerAdapter.getCount() - 1)
                        ? R.string.action_finish
                        : R.string.action_next);
        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);        
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                 NavUtils.navigateUpTo(this, new Intent(this, MainActivity.class));
                return true;                
            case R.id.action_previous:
                  mPager.setCurrentItem(mPager.getCurrentItem() - 1);
                return true;
            case R.id.action_next:            	 
                 mPager.setCurrentItem(mPager.getCurrentItem() + 1);
                return true;
            case R.id.action_stop:  
            	AutiSlide= false;
               return true;
        }
        return super.onOptionsItemSelected(item);
    }
    
    public void autiSlideCallBack() {    	 
    	mPager.setCurrentItem(mPager.getCurrentItem() + 1,false);      		   		
     }    	
}
