﻿function formatCurrency(num) {
    num = num.toString().replace(/\$|\,/g, '');
    if (isNaN(num))
        num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num * 100 + 0.50000000001);
    cents = num % 100;
    num = Math.floor(num / 100).toString();
    if (cents < 10)
        cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
        num = num.substring(0, num.length - (4 * i + 3)) + ',' +
num.substring(num.length - (4 * i + 3));
    return (((sign) ? '' : '-') + '$' + num + '.' + cents);
}

function RedirectToLogin() {
    window.location = '/';
}

function IdentifyDealer() {
    var returnValue = null;
    $.ajax({
        type: "GET",
        url: "/Account/IsAuthenticated",
        data: {},
        async: false,
        contentType: "application/json",
        dataType: "json",
        success: function(res) {
            if (res.length > 0) {
                returnValue = res;
            } else {
                RedirectToLogin();
                return false;   
            }
        },
        error: function(res) {
            //alert('error');
        }
    });

    return returnValue;
}

function cleanString(stringToClean) {
    return stringToClean.replace("'", "\\'");
}

function numbersonly(myfield, e, dec) {
    var key;
    var keychar;

    if (window.event)
        key = window.event.keyCode;
    else if (e)
        key = e.which;
    else
        return true;
    keychar = String.fromCharCode(key);

    // control keys
    if ((key == null) || (key == 0) || (key == 8) ||
    (key == 9) || (key == 13) || (key == 27))
        return true;

    // numbers
    else if ((("0123456789").indexOf(keychar) > -1))
        return true;

    // decimal point jump
    else if (dec && (keychar == ".")) {
        myfield.form.elements[dec].focus();
        return false;
    }
    else
        return false;
}

function IsValidTime(timeStr) {
    // Checks if time is in HH:MM:SS AM/PM format.
    // The seconds and AM/PM are optional.

    var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;

    var matchArray = timeStr.match(timePat);
    if (matchArray == null) {
        alert("The time format should be : hh:mm AM or hh:mm PM");
        return "";
    }
    hour = matchArray[1];
    minute = matchArray[2];
    second = matchArray[4];
    ampm = matchArray[6];

    if (second == "") { second = null; }
    if (ampm == "") { ampm = null }

    if (hour < 0 || hour > 23) {
//        alert("Hour must be between 1 and 12. (or 0 and 23 for military time)");
        //        return false;
        alert("The time format should be : hh:mm AM or hh:mm PM");
        return "";
    }
    if (hour <= 12 && ampm == null) {
        if (confirm("Please indicate which time format you are using.  OK = Standard Time, CANCEL = Military Time")) {
//            alert("You must specify AM or PM.");
            //            return false;
            alert("The time format should be : hh:mm AM or hh:mm PM");
            return "";
        }
    }
    if (hour > 12 && ampm != null) {
//        alert("You can't specify AM or PM for military time.");
        //        return false;
        alert("The time format should be : hh:mm AM or hh:mm PM");
        return "";
    }
    if (minute < 0 || minute > 59) {
//        alert("Minute must be between 0 and 59.");
        //        return false;
        alert("The time format should be : hh:mm AM or hh:mm PM");
        return "";
    }
    if (second != null && (second < 0 || second > 59)) {
//        alert("Second must be between 0 and 59.");
        //        return false;
        alert("The time format should be : hh:mm AM or hh:mm PM");
        return "";
    }
    return timeStr;
}

var dtCh = "/";
var minYear = 2010;
var maxYear = 2100;

function 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;
}

function 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 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 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 isDate(dtStr) {
    var daysInMonth = DaysArray(12)
    var pos1 = dtStr.indexOf(dtCh)
    var pos2 = dtStr.indexOf(dtCh, pos1 + 1)
    var strMonth = dtStr.substring(0, pos1)
    var strDay = 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) {
        alert("The date format should be : mm/dd/yyyy")
        return ""
    }
    if (strMonth.length < 1 || month < 1 || month > 12) {
//        alert("Please enter a valid month")
        //        return false
        alert("The date format should be : mm/dd/yyyy")
        return ""
    }
    if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
//        alert("Please enter a valid day")
        //        return false
        alert("The date format should be : mm/dd/yyyy")
        return ""
    }
    if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear) {
//        alert("Please enter a valid 4 digit year between " + minYear + " and " + maxYear)
        //        return ""
        alert("The date format should be : mm/dd/yyyy")
        return ""
    }
    if (dtStr.indexOf(dtCh, pos2 + 1) != -1 || isInteger(stripCharsInBag(dtStr, dtCh)) == false) {
//        alert("Please enter a valid date")
        //        return false
        alert("The date format should be : mm/dd/yyyy")
        return ""
    }
    return dtStr
}

function ValidateForm() {
    var dt = document.frmSample.txtDate
    if (isDate(dt.value) == false) {
        dt.focus()
        return false
    }
    return true
}
