﻿




/*====================================================
    Function Date: Test value is or not Date (mm/dd/yyyy)
=====================================================*/
function g_DateIs(stringdate)
{
    //date alway have format : mm/dd/yyyy
    //test is null or empty
    if(stringdate == null || stringdate == "") return false;
    if(stringdate.indexOf("/") == -1) return false;
    
    var m = new Array();
    var day, month, year;    
    m = stringdate.split("/");
    
    if(m.length != 3) return false;    
    day = m[1]; month = m[0]; year = m[2];    
    
    if(isNaN(day) || isNaN(month) || isNaN(year)) return false;
    if(Number(day) < 1 || Number(day) > 31) return false;
    if(Number(month) < 1 || Number(month) > 12) return false;
    if(Number(year) < 1900 || Number(year) > 3000) return false;
    return true;
}

/*====================================================
    Function DateDiff(dd,day1,day2)     day1 = 01/01/2001 and day2 = 01/02/2001
    DateDiff > 0    day2 > day1
    DateDiff < 0    day2 < day1
    format : dd(day)    mm(month)   yy(year)
    date : mm/dd/yyyy
=====================================================*/
function g_DateDiff(format, date1, date2)
{
    try
    {
        var m1 = new Array();
        var m2 = new Array();
        m1 = date1.split("/");
        m2 = date2.split("/");
        var day1 = m1[1]; var month1 = m1[0]; var year1 = m1[2];
        var day2 = m2[1]; var month2 = m2[0]; var year2 = m2[2];
    
        var total1 = Number(day1) + Number(month1) * 30 + Number(year1) * 365;
        var total2 = Number(day2) + Number(month2) * 30 + Number(year2) * 365;
        if(format == "dd") return total2 - total1;
        if(format == "mm") return (total2 - total1) * 1.0 / 30;
        if(format == "yy") return (total2 - total1) * 1.0 / 365;
    }catch(err){
        alert(err.description);
        return false;
    }
}
/*====================================================
    Function Date: Format value date for Input (mm/dd/yyyy) 
=====================================================*/
function g_DateFormatInput(stringformat, stringdate)
{
    //CONVERT date have format into mm/dd/yyyy
    //format : format date : dd/mm/yyyy or dd-mmm-yyyy or mm/dd/yyyy
    //date : date must be mm/dd/yyyy
    if(stringformat == null || stringformat == "") return "";
    if(stringdate == null || stringdate == "") return "";
    
    var m = new Array();
    var day, month, year;    
    
    if(stringformat == "dd-mmm-yyyy")
    {
        if(stringdate.indexOf("-") == -1) return "";
        m = stringdate.split("-"); if(m.length != 3) return "";
        day = g_StringTrim(m[0]); month = g_StringTrim(m[1]); year = g_StringTrim(m[2]);
        //test here
        month = month.toLowerCase();
             if(month == "jan") month = "01";else if(month == "may") month = "05";else if(month == "sep") month = "09";
        else if(month == "feb") month = "02";else if(month == "jun") month = "06";else if(month == "oct") month = "10";
        else if(month == "mar") month = "03";else if(month == "jul") month = "07";else if(month == "nov") month = "11";
        else if(month == "apr") month = "04";else if(month == "aug") month = "08";else if(month == "dec") month = "12"; else return "";
        return month + "/" + day + "/" + year;
    }
    else if(stringformat == "dd-mm-yyyy")
    {
        if(stringdate.indexOf("-") == -1) return "";
        m = stringdate.split("-"); if(m.length != 3) return "";
        day = g_StringTrim(m[0]); month = g_StringTrim(m[1]); year = g_StringTrim(m[2]);
        return month + "/" + day + "/" + year;
    }
    else if(stringformat == "dd/mm/yyyy")
    {
        if(stringdate.indexOf("/") == -1) return "";
        m = stringdate.split("/"); if(m.length != 3) return "";
        day = g_StringTrim(m[0]); month = g_StringTrim(m[1]); year = g_StringTrim(m[2]);
        return month + "/" + day + "/" + year;
    }
    else
    {        
        return stringdate;        
    }    
}

/*====================================================
    Function Date: Format value date for Output 
=====================================================*/
function g_DateFormatOutput(stringformat, stringdate)
{
    //CONVERT mm/dd/yyyy into date have format 
    //format : format date : dd/mm/yyyy or dd-mmm-yyyy or mm/dd/yyyy
    //date : date must be mm/dd/yyyy
    if(stringformat == null || stringformat == "") return "";
    if(stringdate == null || stringdate == "") return "";
    
    var m = new Array();
    var day, month, year;    
    if(stringdate.indexOf("/") == -1) return "";
    m = stringdate.split("/"); if(m.length != 3) return "";
    day = g_StringTrim(m[1]); month = g_StringTrim(m[0]); year = g_StringTrim(m[2]);
    if(Number(day) < 0 || Number(day) > 31) return "";
    
    if(stringformat == "dd-mmm-yyyy")
    {        
        //test here
             if(Number(month)==1) month = "Jan";else if(Number(month)==5) month = "May";else if(Number(month)==9) month = "Sep";
        else if(Number(month)==2) month = "Feb";else if(Number(month)==6) month = "Jun";else if(Number(month)==10) month = "Oct";
        else if(Number(month)==3) month = "Mar";else if(Number(month)==7) month = "Jul";else if(Number(month)==11) month = "Nov";
        else if(Number(month)==4) month = "Apr";else if(Number(month)==8) month = "Aug";else if(Number(month)==12) month = "Dec"; else return "";
        return day + "-" + month + "-" + year;
    }
    else if(stringformat == "dd-mm-yyyy")
    {        
        return day + "-" + month + "-" + year;        
    }
    else if(stringformat == "dd/mm/yyyy")
    {        
        return day + "/" + month + "/" + year;        
    }
    else
    {        
        return stringdate;        
    }    
}

/*====================================================
    Function Date: Convert value month (Number) into month (Apr) 
=====================================================*/
function g_DateFormatMonth(intmonth)
{
    var month = "";
    if(Number(intmonth)==1) month = "Jan";else if(Number(intmonth)==5) month = "May";else if(Number(intmonth)==9) month = "Sep";
    else if(Number(intmonth)==2) month = "Feb";else if(Number(intmonth)==6) month = "Jun";else if(Number(intmonth)==10) month = "Oct";
    else if(Number(intmonth)==3) month = "Mar";else if(Number(intmonth)==7) month = "Jul";else if(Number(intmonth)==11) month = "Nov";
    else if(Number(intmonth)==4) month = "Apr";else if(Number(intmonth)==8) month = "Aug";else if(Number(intmonth)==12) month = "Dec";
    return month;    
}

/*====================================================
    Function Date: Calculate TotalHour 
=====================================================*/
function g_DateTotalHour(stringstart,stringend)
{   
    //stringstart : gio co dang VD      4:15
    //stringend : gio co dang   VD      8:30
    
    var kq;    
    var m1=new Array();m1=stringstart.split(":");
    var m2=new Array();m2=stringend.split(":");                
    
    var gio1=Number(m1[0]); var gio2=Number(m2[0]);
    var phut1=Number(m1[1]);var phut2=Number(m2[1]);                
    
    if(phut1==phut2)
    {   
        if(gio1<=gio2) kq = Number(gio2-gio1); else kq = Number(24+gio2-gio1);        
        return kq + ":00";
    }
    if(gio1<gio2)
    {           
        if(phut2>phut1) kq=(gio2-gio1) + ":" + (phut2-phut1);
        if(phut2<phut1) kq=(gio2-gio1-1) + ":" + (phut2-phut1+60);
    }else if(gio1==gio2){
        if(phut2>phut1) kq=(gio2-gio1) + ":" + (phut2-phut1);
        if(phut2<phut1) kq="23" + ":" +(phut2-phut1+60);       //VD: 10.00 - 10.15
    }else{    
        if(phut2>phut1) kq=(24+gio2-gio1) + ":" + (phut2-phut1);
        if(phut2<phut1) kq=(24+gio2-gio1-1) + ":" +(phut2-phut1+60);
    }        
    return kq;    
}










/*====================================================
    Function String: Trim space
=====================================================*/
function g_StringTrim(stringx) 
{
    return stringx.replace(/^\s+|\s+$/g,'');
} 




