/*методы работы с датой*/
var DateUtils = new Object();

/*1.функция перевода даты в строку-------------------------------------------------------------*/
DateUtils.dateToString = function(date) {
    var day = date.getDate();//получение из даты дня
    if (day < 10) {
        day = '0' + day;
    }
    var month = date.getMonth() + 1;//получение из даты месяца
    if (month < 10) {
        month = '0' + month;
    }
    var year = date.getFullYear();//получение из даты года
    var fullDate = day + '.' + month + '.' + year;//дата в строковом виде
    return fullDate;
};

/*2.функция перевода даты из строки в формат даты----------------------------------------------*/
DateUtils.stringToDate = function(date) {
    var s = date;
    var pattern1 = /\d\d[\.\-\/]\d\d[\.\-\/]\d\d\d\d/;
    var m = pattern1.test(s);
    if (!m) {
        return null;
    }
    var a = s.split(/[\.\-\/]/);//массив-число месяц год
    var pattern2 = /[1-2]\d\d\d/;
    var string = a[2];
    var t = pattern2.test(string);
    if (a[0] > 31 || a[0] < 1) {
        return false;
    }
    if (a[1] > 12 || a[1] < 1) {
        return false;
    }
    if (!t) {
        return false;
    }
    var dateNew = new Date(a[2], a[1] - 1, a[0]);//создание нового экземпляра даты
    //dateNew.setFullYear(a[2]);//установка года
    //dateNew.setMonth(a[1]-1);//установка месяца
    //dateNew.setDate(a[0]);//установка числа
    return dateNew;
};

/*3.функция разбора текста, введенного в поле формы---------------------------------------------*/
/* now - текущая дата
 * возвращает Date
 */
DateUtils.parseDate = function (poleId, now) {
    var divElementPole = document.getElementById(poleId);//получение поля по ID
    var dateString = divElementPole.value;//получение значения поля
    if (dateString == "") {
        return null;
    }//пустая строка
    var parsedDate = DateUtils.stringToDate(dateString);//перевод строки в дату
    return parsedDate;
};

/*4.функция сравнения дат*/
/* 0 - даты равны, 1 - дата1 больше даты2, -1 - дата1 меньше даты2*/
DateUtils.compareDates = function(date1, date2) {
    var dayDate1 = date1.getDate();
    var dayDate2 = date2.getDate();
    var monthDate1 = date1.getMonth();
    var monthDate2 = date2.getMonth();
    var yearDate1 = date1.getYear();
    var yearDate2 = date2.getYear();
    if (yearDate1 > yearDate2) {
        return 1;
    } else {
        if (yearDate1 < yearDate2) {
            return -1;
        } else {
            if (monthDate1 > monthDate2) {
                return 1;
            } else {
                if (monthDate1 < monthDate2) {
                    return -1;
                } else {
                    if (dayDate1 > dayDate2) {
                        return 1;
                    } else {
                        if (dayDate1 < dayDate2) {
                            return -1;
                        } else {
                            return 0;
                        }
                    }
                }
            }
        }
    }
};

/*5.количество дней в месяце*/
DateUtils.getDaysFromMonth = function(currentMonth, currentYear) {
    var date = new Date();
    date.setDate(1);//дата в первое число
    date.setMonth(currentMonth);
    date.setYear(currentYear);
    var aktivMonth = date.getMonth();//сохраняем значение текущего месяца
    var counter = 0;//счетчик в ноль
    do {
        date.setDate(date.getDate() + 1);//иинкремент даты
        var currentMonth = date.getMonth();//сохраняем значение месяца
        counter += 1;
    } while (currentMonth == aktivMonth);//проверяем, чтобы месяц оставался текущим

    return (counter);//возвращаем счетчик дней

};
/*6.увеличение даты*/
DateUtils.datePlus = function(date, number) {
    var date = new Date(date.getTime());//
    date.setDate(date.getDate() + number);
    return date;
};
/*-----------------------*/
