﻿// date format must be : dd/mm/yyyy
// the input should be a string
//function AddMonth(input, noOfMonth, formatStyle)
//{
//    var aArray = input.split("/");
//    var newDate = new Date();
//    newDate.setDate(parseInt(aArray[0], 10));
//    newDate.setMonth(parseInt(aArray[1], 10));
//    newDate.setFullYear(aArray[2]);
//   // alert(newDate);
//   // alert(aArray[0]);
//   // alert(aArray[1]);
//   // alert(aArray[2]);
//   // alert(parseInt(aArray[1], 10));
//   // var newDate = new Date(aArray[2], parseInt(aArray[1], 10) + parseInt(noOfMonth, 10), parseInt(aArray[0], 10));
//    return newDate;
//}

function f_toDate(input, formatStyle)
{
    var aArray = input.split("/");
    var newDate = new Date();
//    var newDate = new Date(parseInt(aArray[0], 10), parseInt(aArray[1], 10), parseInt(aArray[2]));
//    var newDate = new Date(parseInt(aArray[0], 10), parseInt(aArray[1], 10), );
    
    newDate.setDate(parseInt(aArray[0], 10));
    newDate.setMonth(parseInt(aArray[1], 10) - 1);
    newDate.setFullYear(aArray[2]);
    return newDate;
}
var g_dtCh = "/";
var g_minYear = 0000;
var g_maxYear = 9999;

function f_isInteger(s) {
    var i;
    for (i = 0; i < s.length; i++) {
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

//Validate date
function f_stripCharsInBag(s, bag) {
    var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function f_daysInFebruary(year) {
    // February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
}
function f_daysArray(n) {
    for (var i = 1; i <= n; i++) {
        this[i] = 31;
        if (i == 4 || i == 6 || i == 9 || i == 11) { this[i] = 30 }
        if (i == 2) { this[i] = 29 }
    }
    return this;
}

function f_isDate(dtStr) {
    var daysInMonth = f_daysArray(12);
    var pos1 = dtStr.indexOf(g_dtCh);
    var pos2 = dtStr.indexOf(g_dtCh, pos1 + 1);
    var strDay = dtStr.substring(0, pos1);
    var strMonth = dtStr.substring(pos1 + 1, pos2);
    var strYear = dtStr.substring(pos2 + 1);
    strYr = strYear;
    if (strDay.charAt(0) == "0" && strDay.length > 1) strDay = strDay.substring(1)
    if (strMonth.charAt(0) == "0" && strMonth.length > 1) strMonth = strMonth.substring(1)
    for (var i = 1; i <= 3; i++) {
        if (strYr.charAt(0) == "0" && strYr.length > 1) strYr = strYr.substring(1);
    }
    month = parseInt(strMonth);
    day = parseInt(strDay);
    year = parseInt(strYr);
    if (pos1 == -1 || pos2 == -1) {
        return false;
    }
    if (strMonth.length < 1 || month < 1 || month > 12) {
        return false;
    }
    if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > f_daysInFebruary(year)) || day > daysInMonth[month]) {
        return false;
    }
    if (strYear.length != 4 || year == 0 || year < g_minYear || year > g_maxYear) {
        return false;
    }
    if (dtStr.indexOf(g_dtCh, pos2 + 1) != -1 || f_isInteger(f_stripCharsInBag(dtStr, g_dtCh)) == false) {
        return false;
    }
    return true;
}

function f_setTime(input, time) {
    var aArray = time.split(":");
    var newDate = new Date();
    newDate = input;

    newDate.setHours(parseInt(aArray[0], 10));
    newDate.setMinutes(parseInt(aArray[1], 10));
    newDate.setSeconds(parseInt(aArray[2], 10));
    newDate.setMilliseconds(parseInt(aArray[3], 10));
    return newDate;
}

function f_isTime(timeStr) {
    var v_aArray = timeStr.split(":");
    var v_hr = (parseInt(v_aArray[0],10));
    var v_min = (parseInt(v_aArray[1], 10));

    if (timeStr.length > 5) {
        return false;
    }
    if (timeStr.indexOf(":") == -1) {
        return false;
    }
    
    if (!f_isInteger(v_hr) || !f_isInteger(v_min)) {
        return false;
    }

    if ((!CheckIsBetween(v_hr, 0, 23)) || (!CheckIsBetween(v_min, 0, 59))) {
        return false;
    }

    return true;
}

// Format : dd/MM/yyyy hh:mi:ss
function f_toDateString(p_input, p_outputFormat) {
    var v_tempStr = p_input.getDate().toString();
    var v_result = "";
    var withTime = false;
    var withDate = false;

    switch(p_outputFormat)
    {
        case "dd/MM/yyyy hh:mi:ss":
            withTime = true;
            withDate = true;
            break;
        case "dd/MM/yyyy":
            withTime = false;
            withDate = true;
            break;
        default:
            withTime = true;
            withDate = true;
    }
    if (withDate) {
        if (v_tempStr.length < 2)
            v_tempStr = "0" + v_tempStr;
        v_result = v_tempStr + "/";

        v_tempStr = (p_input.getMonth() + 1).toString();
        if (v_tempStr.length < 2)
            v_tempStr = "0" + v_tempStr;
        v_result = v_result + v_tempStr + "/";

        v_result = v_result + p_input.getFullYear().toString() + " ";
    }
    if (withTime) {
        v_tempStr = p_input.getHours().toString();

        if (v_tempStr.length < 2)
            v_tempStr = "0" + v_tempStr;
        v_result = v_result + v_tempStr + ":";

        v_tempStr = p_input.getMinutes().toString();
        if (v_tempStr.length < 2)
            v_tempStr = "0" + v_tempStr;
        v_result = v_result + v_tempStr + ":";

        v_tempStr = p_input.getSeconds().toString();
        if (v_tempStr.length < 2)
            v_tempStr = "0" + v_tempStr;
        v_result = v_result + v_tempStr;
    }
    return v_result;

}

