package sun.bob.mcalendarview.utils;

import android.util.Log;

import java.text.DateFormatSymbols;
import java.util.Calendar;

import sun.bob.mcalendarview.CellConfig;
import sun.bob.mcalendarview.vo.DateData;

/**
 * Created by Bigflower on 2015/12/8.
 */
public class ExpCalendarUtil {

    /** ExpCalendarUtil.java
     * The number to Week
     * @param number - Number day of Week (on the code Sunday is equal 7)
     * @return [String] - abbreviated name of the days of the week
     */
    public static String number2Week(int number) {
        if (number < 1 || number > 7) return null; //Day of Week 1-7
        if (number == 7) {
            number = 1;
        } else {
            number = number + 1;
        }
        final DateFormatSymbols symbols = new DateFormatSymbols(); //use user locale
        final String nameDayOfWeek = symbols.getShortWeekdays()[number]; //Short name or getWeekdays for complete name
        return nameDayOfWeek.toUpperCase(); //name to uppercase
    }

    public static DateData position2Month(int absPos) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(CellConfig.m2wPointDate.getYear(), CellConfig.m2wPointDate.getMonth() - 1, CellConfig.m2wPointDate.getDay());
        int distance = absPos - CellConfig.Week2MonthPos;
        calendar.add(Calendar.MONTH, distance);
        Log.i("ExpDateData month", CellConfig.m2wPointDate.toString()+" distance :"+distance);
        Log.i("ExpDateData month", calendar.get(Calendar.YEAR)+"年"+calendar.get(Calendar.MONTH));
        return new DateData(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1, 1);
    }

    public static DateData position2Week(int absPos) {
        Log.i("ExpDateData", CellConfig.w2mPointDate.toString());
        Calendar calendar = Calendar.getInstance();
        calendar.set(CellConfig.w2mPointDate.getYear(), CellConfig.w2mPointDate.getMonth() - 1, CellConfig.w2mPointDate.getDay());
        int distance = absPos - CellConfig.Month2WeekPos;
        calendar.add(Calendar.DATE, distance * 7);

        return new DateData(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1, 1);
    }


    public static int getMonthDayNumber(int offset) {
        Calendar calendar = Calendar.getInstance();
        if (offset != 0)
            calendar.add(Calendar.MONTH, offset);
        return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    }
}