﻿//Hàm thư viện Ngày tháng CreateBy TuanN
AGFS.DateUtils = {
    MMMM: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
    MMM: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
    dddd: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
    ddd: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
    //2010-07-15T00:00:00+07:00
    convertDateToString: function (value, format) {
        var a = value.split('T');
        var b = a[0].split('-');
        var c = a[1].split('+');
        var e = c[0].split(':');
        var y = b[0];
        var M = b[1];
        var d = b[2];
        var H = e[0];
        var h = parseInt(H) % 12;
        if (h < 10)
            h = '0' + h;
        var m = e[1];
        var s = e[2];
        var t = '';
        if (H > 12)
            t = 'P.M';
        else
            t = 'A.M';
        var z = c[1];
        //String.Format("{0:y yy yyy yyyy}", dt);  // "8 08 008 2008"   year
        try {
            switch (format.match(new RegExp(/y/g)).length) {
                default:
                    break;
                case 1:
                    format = format.replace('y', y.substr(3, 1));
                    break;
                case 2:
                    format = format.replace('yy', y.substr(2, 2));
                    break;
                case 3:
                    format = format.replace('yyy', y.substr(1, 3));
                    break;
                case 4:
                    format = format.replace('yyyy', y);
                    break;
            }
        } catch (Error) { }
        //String.Format("{0:M MM MMM MMMM}", dt);  // "3 03 Mar March"  month
        try {
            switch (format.match(new RegExp(/M/g)).length) {
                default:
                    break;
                case 1:
                    format = format.replace('M', M.substr(1, 1));
                    break;
                case 2:
                    format = format.replace('MM', M);
                    break;
                case 3:
                    format = format.replace('MMM', this.MMM[(parseInt(M) - 1)]);
                    break;
                case 4:
                    format = format.replace('MMMM', this.MMMM[(parseInt(M) - 1)]);
                    break;
            }
        } catch (Error) { }
        //String.Format("{0:d dd}", dt);  // "9 09" day
        try {
            switch (format.match(new RegExp(/d/g)).length) {
                default:
                    break;
                case 1:
                    format = format.replace('d', d.substr(1, 1));
                    break;
                case 2:
                    format = format.replace('dd', d);
                    break;
            }
        } catch (Error) { }
        //String.Format("{0:h hh H HH}",     dt);  // "4 04 16 16"      hour 12/24
        try {
            switch (format.match(new RegExp(/h/g)).length) {
                default:
                    break;
                case 1:
                    format = format.replace('h', h.substr(1, 1));
                    break;
                case 2:
                    format = format.replace('hh', h);
                    break;
            }
        } catch (Error) { }
        try {
            switch (format.match(new RegExp(/H/g)).length) {
                default:
                    break;
                case 1:
                    format = format.replace('H', H.substr(1, 1));
                    break;
                case 2:
                    format = format.replace('HH', H);
                    break;
            }
        } catch (Error) { }
        //String.Format("{0:m mm}",          dt);  // "5 05"            minute
        try {
            switch (format.match(new RegExp(/m/g)).length) {
                default:
                    break;
                case 1:
                    format = format.replace('m', m.substr(1, 1));
                    break;
                case 2:
                    format = format.replace('mm', m);
                    break;
            }
        } catch (Error) { }
        //String.Format("{0:s ss}", dt);  // "7 07"            second
        try {
            switch (format.match(new RegExp(/s/g)).length) {
                default:
                    break;
                case 1:
                    format = format.replace('s', s.substr(1, 1));
                    break;
                case 2:
                    format = format.replace('ss', s);
                    break;
            }
        } catch (Error) { }
        //String.Format("{0:t tt}",          dt);  // "P PM"            A.M. or P.M.
        try {
            switch (format.match(new RegExp(/t/g)).length) {
                default:
                    break;
                case 1:
                    format = format.replace('t', t.substr(1, 1));
                    break;
                case 2:
                    format = format.replace('tt', t);
                    break;
            }
        } catch (Error) { }
        //String.Format("{0:z zz zzz}",      dt);  // "-6 -06 -06:00"   time zone
        try {
            switch (format.match(new RegExp(/z/g)).length) {
                default:
                    break;
                case 1:
                    format = format.replace('z', z.substr(0, 2));
                    break;
                case 2:
                    format = format.replace('zz', z.substr(0, 3));
                    break;
                case 3:
                    format = format.replace('zz', z);
                    break;
            }
        } catch (Error) { }
        return format;
    },
    Now: function () {
        var date = new Date();
        return date.getYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + 'T' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds() +'.'+date.getMilliseconds()+ '+' + (-date.getTimezoneOffset() / 60) + ':00';
    },
    //Chuyen doi string thanh ngay thang nam theo dinh dang ngay truoc
    //Input string 10/02/2010
    //Output dinh dang kieu February 10,2010
    ConvertStringToMonthDayYearEN: function (strDate) {
        var date = new Date(strDate);
        var month;
        if (Encoder.isEmpty(strDate)) return '';
        switch (date.getMonth()) {
            case 0: month = "January"; break;
            case 1: month = "February"; break;
            case 2: month = "March"; break;
            case 3: month = "April"; break;
            case 4: month = "May"; break;
            case 5: month = "June"; break;
            case 6: month = "July"; break;
            case 7: month = "August"; break;
            case 8: month = "September"; break;
            case 9: month = "October"; break;
            case 10: month = "November"; break;
            case 11: month = "December"; break;
        }
        var day = date.getDate();
        if (day <= 9) {
            day = "0" + day;
        };
        return month + ' ' + day + ', ' + date.getFullYear();
    },
    //Chuyen doi string thanh ngay thang nam theo dinh dang ngay truoc
    //Input string 10/02/2010
    //Output dinh dang kieu February 10,2010
    //Create by TuanN
    ConvertStringToMonthDayYearTitleShort: function (strDate) {
        var date = new Date(strDate);
        var month;
        if (AGFS.EncoderUtils.isEmpty(strDate)) return '';
        switch (date.getMonth()) {
            case 0: month = "Jan"; break;
            case 1: month = "Feb"; break;
            case 2: month = "Mar"; break;
            case 3: month = "Apr"; break;
            case 4: month = "May"; break;
            case 5: month = "Jun"; break;
            case 6: month = "Jul &nbsp;"; break;
            case 7: month = "Aug"; break;
            case 8: month = "Sep"; break;
            case 9: month = "Oct"; break;
            case 10: month = "Nov"; break;
            case 11: month = "Dec"; break;
        }
        var day = date.getDate();
        if (day <= 9) {
            day = "0" + day;
        };
        return month + ' ' + day + ', ' + date.getFullYear();
    },
    // chuyen string thanh gio phut
    ConvertStringToHourMinus: function (strDate) {
        var date = new Date(strDate);
        var gio = date.getHours();
        if (gio == 0) {
            gio = "12";
        }
        else {
            if (gio <= 9) {
                gio = "0" + gio;
            }
        };
        var phut = date.getMinutes();
        if (phut <= 9) {
            phut = "0" + phut;
        }
        return gio + ':' + phut;
    },
    //Chuyen string thanh gio phut giay
    ConvertStringToHourMinusSecond: function (strDate) {
        var date = new Date(strDate);
        var gio = date.getHours();
        if (gio == 0) {
            gio = "12";
        }
        else {
            if (gio <= 9) {
                gio = "0" + gio;
            }
        };
        var phut = date.getMinutes();
        if (phut <= 9) {
            phut = "0" + phut;
        }
        var giay = date.getSeconds();
        if (giay <= 9) {
            giay = "0" + giay;
        }
        return gio + ':' + phut + ':' + giay;
    },
    // chuyen ngay tieng viet sang tieng anh  dd/MM -> MM/dd
    ConvertVietNameseToEnglish: function (strDate) {
        var arrDay = strDate.split('/');
        return arrDay[1] + '/' + arrDay[0] + '/' + arrDay[2];
    },
    //Chuyen doi string {dd/MM/yyyy HH:MM:ss} -> {MM/dd/yyyy}
    ConvertStringToMonthDayYear: function (strDate) {
        var ArrayDate = new Array();
        ArrayDate = strDate.split(' ');
        var strDayMonthYear = new Array();
        strDayMonthYear = ArrayDate[0].split('/');
        return strDayMonthYear[1] + "/" + strDayMonthYear[0] + "/" + strDayMonthYear[2];
    },
    // chuyen ngay tu tieng anh sang tieng viet MM/dd ->dd/MM
    ConvertEnglishToVietNamese: function (strDate) {
        if (AGFS.EncoderUtils.isEmpty(strDate)) return '';
        var arrDay = strDate.split('/');
        if (parseInt(arrDay[0]) <= 9) {
            arrDay[0] = "0" + parseInt(arrDay[0]);
        }
        if (parseInt(arrDay[1]) <= 9) {
            arrDay[1] = "0" + parseInt(arrDay[1]);
        }
        return arrDay[1] + '/' + arrDay[0] + '/' + arrDay[2];
    },
    // lay thoi gian hien tai
    GetDateTimeNow: function () {
        var now = new Date();
        var year = now.getYear();
        var month = now.getMonth() + 1;
        var date = now.getDate();
        var hours = now.getHours();
        var minutes = now.getMinutes();
        var seconds = now.getSeconds();
        var time = year.toString() + month.toString() + date.toString() + hours.toString() + minutes.toString() + seconds.toString();
        return time;
    },

    //vd goi DateUtils.GetDatePicker('#Idname');
    GetDatePicker: function (name) {
        $(name).datepicker({
            showOn: 'button',
            buttonImage: '/DesktopModules/AG.Article/App/Images/Cal.gif',
            buttonImageOnly: true,
            changeMonth: true,
            changeYear: true
        });
    },
    GetYearNow: function () {
        var now = new Date();
        return now.getFullYear();
    },
    //Chuyen doi string {dd/MM/yyyy HH:MM:ss} -> {dd/MM/yyyy}
    ConvertStringToDayMonthYear: function (strDate) {
        var ArrayDate = new Array();
        ArrayDate = strDate.split(' ');
        return ArrayDate[0];
    },
    // Lấy ngày hiện tại theo định dạng dd/MM/yyyy
    GetDate_ddMMyyyy: function () {
        var date = new Date();
        var Day = "";
        var Month = "";
        var Year = "";
        if (date.getDate() < 10) {
            Day = "0" + date.getDate();
        }
        else {
            Day = date.getDate();
        }

        if ((date.getMonth() + 1) < 10) {
            Month = "0" + (date.getMonth() + 1);
        }
        else {
            Month = (date.getMonth() + 1);
        }

        var Result = Day + '/' + Month + '/' + date.getFullYear();
        return Result;
    },
    //Đổi định dạng chuỗi vào từ dd/MM/Y thành Y-MM-dd HH:mm:ss
    ConvertStringDayMonthYearToYearMonthDayHourMinusSecond: function (string) {
        var ArrayString = new Array();
        ArrayString = string.split('/');
        return ArrayString[2] + "-" + ArrayString[1] + "-" + ArrayString[0] + " 00:00:00";
    },
    //Đổi định dạng chuỗi vào từ MM/dd/Y thành Y-MM-dd HH:mm:ss
    ConvertStringMonthDayYearToYearMonthDayHourMinusSecond: function (string) {
        var ArrayString = new Array();
        ArrayString = string.split('/');
        return ArrayString[2] + "-" + ArrayString[0] + "-" + ArrayString[1] + " 00:00:00";
    }
};

