﻿// NOTE: Date has format dd/MM/yyyy

function stringToDate(dateString){
    var dateParts = dateString.split("/");
    return new Date(dateParts[2], dateParts[1]-1, dateParts[0]);
}

function getDays(from, to){
    var dateFrom = stringToDate(from);
    var dateTo = stringToDate(to);
    
    if (dateFrom > dateTo)
    {
        return -1 * daysBetween(dateFrom, dateTo);
    }
    else
    {
        return daysBetween(dateFrom, dateTo);
    }
}

function daysBetween(date1, date2) {
    // The number of milliseconds in one day
    var ONE_DAY = 1000 * 60 * 60 * 24;

    // Convert both dates to milliseconds
    var date1_ms = date1.getTime();
    var date2_ms = date2.getTime();

    // Calculate the difference in milliseconds
    var difference_ms = Math.abs(date1_ms - date2_ms);
    
    // Convert back to days and return
    return Math.round(difference_ms/ONE_DAY);
}   

function setDateByDays(fromCtrl, toCtrl, days){
    if (isDateString(fromCtrl.value) == true)
    {
        var dtFrom = stringToDate(fromCtrl.value);
        toCtrl.value = formatDate(getEndDate(dtFrom, days));
    }
    else if (isDateString(toCtrl.value) == true)
    {
        var dtTo = stringToDate(toCtrl.value);
        fromCtrl.value = formatDate(getEndDate(dtTo, -1 * days));
    }
}

function getEndDate(startDate, days){
    return new Date(startDate.getFullYear(), startDate.getMonth() + 1, startDate.getDate() + parseInt(days));
}

function formatDate(date){
    var dayVar = date.getDate().toString();
    if (dayVar.length == 1)
    {
        dayVar = "0" + dayVar;
    }
    
    var monthVar = date.getMonth().toString();
    if (monthVar.length == 1)
    {
        monthVar = "0" + monthVar;
    }
    
    return dayVar + "/" + monthVar + "/" + date.getFullYear();
}

function isDateString(dateString){
    var datePattern = new RegExp("[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}");
    return datePattern.test(dateString);
}

function setTermMode(shortTerm, dateToDiv, daysDiv, priceType, perMonth){
    if (shortTerm == true)
    {
        dateToDiv.style.display = 'block';
        daysDiv.style.display = 'block';
        priceType.style.display = 'block';
        perMonth.style.display = 'none';
    }
    else
    {
        dateToDiv.style.display = 'none';
        daysDiv.style.display = 'none';
        priceType.style.display = 'none';
        perMonth.style.display = 'block';
    }
}
