/**
	 * This method makes the login time visible to user.
	 */
	public void displayLoginTimer() {
		mPresenter.displayLoginTimer(mTimeTrackerTextView);
		if(headerTimeCounter == null) {
			headerTimeCounter = TimerUtility.getTimerUtilityInstance().getTimerObjectFromContainer(IAppConstants.TimerManagerConstants.TIMER_UTILITY_HEADER_TIMER_OBJECT);
		}
		headerTimeCounter.registerTimeCounterCallback(this);
	}
	public void startMealBreakTimer() {
		mPresenter.startMealBreakTimer();
		if(mealBreakTimeCounter == null) {
			mealBreakTimeCounter = TimerUtility.getTimerUtilityInstance().getTimerObjectFromContainer(IAppConstants.TimerManagerConstants.TIMER_UTILITY_MEALBREAK_TIME);
		}
		mealBreakTimeCounter.registerMealBreakCounterCallback(this);
	}
	@Override
	protected void onStop() {
		//toggleSliderMenu(true);
		if(menu != null) {
			menuOut = mPresenter.toggleSliderMenu(true, menu, menuOut);
		}
		super.onStop();
	}
	protected void setListAdapter() {
		// TODO Auto-generated method stub

		
		ListView listView = (ListView) leftSideListView.findViewById(R.id.list);
		listView.setAdapter(new NavigationDrawerListAdapter(this,  Typeface.createFromAsset(getAssets(), IAppConstants.CommonConstants.FONT_PATH_PREFIX + IAppConstants.ROBOTO_MEDIUM_FONTS), mPresenter.getScreenIcons()));
		mClickListener =  mPresenter.getListItemClickListenerInstance(mSliderView, leftSideListView, menuOut);
		listView.setOnItemClickListener(mClickListener);
	}
	@Override
	public void onBackPressed() {
		if(menuOut){ //If menu out, close.
			menuOut = mPresenter.toggleSliderMenu(true, menu, menuOut);
		} else if(isKeyBoardVisible()){
			hideKeyBoard();
		} else {
			super.onBackPressed();
		}
	}
	public void setDrawerContentView(int layout_id) {
		
		LayoutInflater inflater = LayoutInflater.from(this);
		rightSideAppScreenView = inflater.inflate(layout_id, null);
		mAttachedViewID = rightSideAppScreenView.getId();
		
		mHeaderRelativeLayout = (RelativeLayout)rightSideAppScreenView.findViewById(R.id.navigation_header);
		
		mTitleTextView = (TextView)mHeaderRelativeLayout.findViewById(R.id.tv_header_title);
		mSubtitleTextView = (TextView)mHeaderRelativeLayout.findViewById(R.id.tv_header_subtitle);
		mHeaderImageView = (ImageView)mHeaderRelativeLayout.findViewById(R.id.iv_header_icon);
		
		mTimeTrackerTextView = (TextView) mHeaderRelativeLayout.findViewById(R.id.menu_header_time_tracker);
		mTimerLayout = (LinearLayout)mHeaderRelativeLayout.findViewById(R.id.timer_layout);
		
		mSubtitleTextView.setOnClickListener(this);
		mTimeTrackerTextView.setOnClickListener(this);
		mTimerLayout.setOnClickListener(this);

		ViewGroup tabBar = (ViewGroup) rightSideAppScreenView.findViewById(mAttachedViewID);

		btnSlide = (ImageButton) tabBar.findViewById(R.id.bt_slider);
		btnSlide.setVisibility(View.VISIBLE);

		mSliderClickListener = new ClickListenerForScrolling(mSliderView, leftSideListView, menuOut);
		btnSlide.setOnClickListener(mSliderClickListener);
		
		mHomeBtnLayout = (LinearLayout)mHeaderRelativeLayout.findViewById(R.id.home_layout);
		if(mHomeBtnLayout!= null)
		{
			mHomeBtnLayout.setOnClickListener(mSliderClickListener);
		}

		View[] children = new View[] { leftSideListView, rightSideAppScreenView };

		int scrollToViewIdx = 1;

		mSliderView.initViews(children, scrollToViewIdx, new SizeCallbackForMenu(btnSlide));
		
		setSubTitle(AppConfig.getAppConfigInstance(this).getUserName());
	     setTitle(getResources().getString(R.string.app_title));
		
		displayHeaderMenuBar();
		//If learn mode is active, the titlebar color must be changed.
		if (AppConfig.getAppConfigInstance(this).getDeviceSynched())
			mPresenter.checkLearnMode(this, rightSideAppScreenView,
					mSubtitleTextView);
	}
	public void ShowLookupScreen() {
		mPresenter.ShowLookupScreen();
	}
	/**
	 * Decide the next action on selection of any menu item.
	 * 
	 * @param menuItem
	 *            selected menu item.
	 */
	public void OnClickSelectedItem(String menuItem) {
		if (menuItem.toString().equalsIgnoreCase(IAppConstants.StoreVisitConstantsStrings.BACK_ORDERS1)) {
			mPresenter.ShowBackorderScreen();
		}else if (menuItem.toString().equalsIgnoreCase(
				IAppConstants.StoreVisitConstantsStrings.EVERYDAY_CREDIT_TALLY1)) {
			mPresenter.ShowEveryDayCreditScreen();
		}else if (menuItem.toString().equalsIgnoreCase(IAppConstants.StoreVisitConstantsStrings.INSTALLATIONS1)) {
			mPresenter.ShowInstallationsScreen();
		}else if (menuItem.toString().equalsIgnoreCase(IAppConstants.StoreVisitConstantsStrings.POSR_AUDIT1)) {
			mPresenter.ShowPOSRAuditScreen();
		}else if (menuItem.toString().equalsIgnoreCase(IAppConstants.StoreVisitConstantsStrings.SBT_DISCARD1)) {
			mPresenter.ShowSBTDiscardScreen();
		}else if (menuItem.toString()
				.equalsIgnoreCase(IAppConstants.StoreVisitConstantsStrings.SBT_TRANSFER_IN1)) {
			mPresenter.ShowTransferScreen();
		}else if (menuItem.toString().equalsIgnoreCase(IAppConstants.StoreVisitConstantsStrings.SHIPMENTS1)) {
			mPresenter.ShowShipmentScreen();
		}else if (menuItem.toString().equalsIgnoreCase(IAppConstants.StoreVisitConstantsStrings.STORE_DETAILS1)) {
			mPresenter.ShowStoreDetailsScreen();
		}else if (menuItem.toString().equalsIgnoreCase(IAppConstants.StoreVisitConstantsStrings.POSR_AUDIT_SCAN)) {
			mPresenter.ShowPOSRAuditScannerScreen();
		} else if(menuItem.toString().equalsIgnoreCase(IAppConstants.StoreVisitConstantsStrings.LOOKUP1)){
			mPresenter.ShowLookupScreen();
		} else if(menuItem.toString().equalsIgnoreCase(IAppConstants.StoreVisitConstantsStrings.STORE_SUMMARY)) {
			mPresenter.ShowStoreVisitSummaryScreen();
		} else if(menuItem.toString().equalsIgnoreCase(IAppConstants.StoreVisitConstantsStrings.SEASON_CREDIT_TALLY1)) {
			mPresenter.showSeasonalCreditScreen();
		}
	}
	/**
	 * Stops system time for specific service
	 * @param key
	 */
	public void stopMealBreakTimer(String key) {
		mPresenter.stopMealBreakTimer(key);
	}
	/**
	 * Stops system time for specific service
	 * @param key
	 */
	public void stopSystemTimer(String key) {
		mPresenter.stopSystemTimer(key);
	}
	/**
	 * Reset system time for specific service
	 * @param key
	 */
	public void resetSystemTimer(String key) {
		mPresenter.resetSystemTimer(key);
	}
	public void startMAAServiceTimer() {
		mPresenter.startMAAServiceTimer();
	}
	public void startGlobalTimer() {
		mPresenter.startGlobalTimer();
	}
	public void startServiceTimer(String key) {
		mPresenter.startServiceTimer(key);
	}
	public void addMultipleItemsToMenuList(ArrayList<String> items) {
		if (menuItems == null) {
			menuItems = new ArrayList<String>();
		}
		mPresenter.addMultipleItemsToMenuList(items, menuItems);
	}
	public void addItemToMenuList(String item) {
		mPresenter.addItemToMenuList(item, menuItems);
	}
	public void ShowStoreVisitSummaryScreen() {
		mPresenter.ShowStoreVisitSummaryScreen();
	}
	/**
	 * Pause timer for specific service
	 * @param key specific service name (ex : global, rmservice etc).
	 */
	public void pauseSystemTimer(String key) {
		mPresenter.pauseSystemTimer(key);
	}
	/**
	 * Hides system keyboard for the given EditText.
	 * @param field
	 */
	protected void hideSystemKeyBoard(EditText field){
		mPresenter.hideSystemKeyBoard(field);
	}
	/**
	 * This method makes header menu bar visible to user.
	 */
	public void displayHeaderMenuBar() {
		button = mHeaderRelativeLayout.findViewById(R.id.bt_header_dropdown_menu_icon);
		mHeaderRelativeLayout = (RelativeLayout) mHeaderRelativeLayout.findViewById(R.id.ll_header_clickable_menubar);
		mHeaderRelativeLayout.setOnClickListener(this);
		mPresenter.displayHeaderMenuBar(button);
	}