/*---------------------------------------
Common function for working with Date
-----------------------------------------
CS_DATE_INPUT_FORMAT is server date input format
CS_DATE_DISPLAY_FORMAT is server date display format
CS_DATE_MONTH_NAMES is server Abbreviated month names array
*/
var CS_DATE_INPUT_FORMAT="dd/MM/yyyy";
var CS_DATE_DISPLAY_FORMAT="dd/MM/yyyy";//"dd-MMM-yyyy";
var CS_DATE_MONTH_NAMES=new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");
/*
IsDate			: check is date or not
GetDateInput	: change data from display format to edit format
CDate			: convert to date type
FormatDateTime 	: format to display format
FormatDateTimeEx: format to display format with support quick input
*/
function IsDate(input_value)
{    
    return (CDate(input_value)!=null);
}
function GetDateInput(display_value)
{
	if (display_value=="")
		return "";
	var monthfield;
	var dayfield;
	var yearfield;

	display_value=display_value.replace(/-/g,"/");
	yearfield=display_value.split("/")[2];
	if (CS_DATE_INPUT_FORMAT.indexOf("dd")==0)
	{
	monthfield=display_value.split("/")[1];
	dayfield=display_value.split("/")[0];
	}
	else
	{
	monthfield=display_value.split("/")[0];
	dayfield=display_value.split("/")[1];
	}		
	if (eval(dayfield)<10&&dayfield.length<2) dayfield="0"+dayfield;
    if (monthfield.length==3)
    {
	    var i=0;
		for (i=0;i<=CS_DATE_MONTH_NAMES.length-1;i++)
		{
			if (CS_DATE_MONTH_NAMES[i]==monthfield)
			{
			monthfield=i+1;
			break;
			}
		}
    }
    else
    	if (IsNumeric(monthfield)) monthfield=eval(monthfield);
    //        
	display_value=CS_DATE_INPUT_FORMAT;	 
    display_value=display_value.replace("yyyy",yearfield);     
    display_value=display_value.replace("MMM",CS_DATE_MONTH_NAMES[eval(monthfield)]);     
    if (eval(monthfield)<10) monthfield="0"+monthfield;        
    display_value=display_value.replace("MM",monthfield); 
    //
    display_value=display_value.replace("dd",dayfield);
    return display_value; 
}
function CDate(input_value)
{
	var monthfield;
	var dayfield;
	var yearfield;
	    
	var validformat=/^\d{1,2}\/\d{1,2}\/\d{2,4}$/; //Basic check for full  format validity 
	if (!validformat.test(input_value))
	{
	    validformat=/^\d{1,2}\/\d{1,2}$/; //Basic check for  yearless format validity 
	    if (!validformat.test(input_value))
	        return null;    //incorect format        
	    else        
	        yearfield=(new Date()).getFullYear();            
	}
	else
	{
	    yearfield=input_value.split("/")[2];
	    //support Y2K correct
	    yearfield=eval(yearfield);    
	    if (yearfield<50) yearfield=yearfield+2000;    
	}
	//Detailed check for valid date ranges
	//Current format is dd/MM/yyyy
	if (CS_DATE_INPUT_FORMAT.indexOf("dd")==0)
	{
	monthfield=input_value.split("/")[1];
	dayfield=input_value.split("/")[0];
	}
	else //Current format is MM/dd/yyyy
	{
	monthfield=input_value.split("/")[0];
	dayfield=input_value.split("/")[1];
	}
	var dayobj = new Date(yearfield, monthfield-1, dayfield);
	if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||((dayobj.getFullYear()!=yearfield)&&(dayobj.getYear()!=yearfield)))
	    return null; //incorect value
	else
		return dayobj;
}
function FormatDateTime(input_value)
{    
var dayobj;
if	(typeof input_value=="string")
	dayobj=CDate(input_value);
else
	dayobj=input_value;

if (dayobj==null)
    return ""; //incorect value
else
{	
    var monthfield=dayobj.getMonth()+1;
    var dayfield=dayobj.getDate();    
    if (dayfield<10) dayfield="0"+dayfield;
    if (monthfield<10)    monthfield="0"+monthfield;    
    var temp=CS_DATE_DISPLAY_FORMAT;
    //
    temp=temp.replace("yyyy",dayobj.getFullYear()); 
    temp=temp.replace("yy",dayobj.getYear()); 
    //
    temp=temp.replace("MMM",CS_DATE_MONTH_NAMES[dayobj.getMonth()]); 
    temp=temp.replace("MM",monthfield); 
    //
    temp=temp.replace("dd",dayfield); 
    //
    return temp;    
}    
}

function FormatDateTimeEx(dtValue)
{
    //Ho tro su dung dau cach
    dtValue=dtValue.replace(/ /g,"/");    
    //Ho tro su dung dau -
    dtValue=dtValue.replace(/-/g,"/");    
    if (!IsDate(dtValue))
    {
        var Pattern;
        //Truong hop nhap 6 so. vd: 010106
        Pattern=/^\d{6}$/;
        if (Pattern.test(dtValue))            
            dtValue=dtValue.substr(0,2) + "/" + dtValue.substr(2,2) + "/" + dtValue.substr(4,2);        
        else
        {
            //Truong hop nhap 4 so. vd: 0101
            Pattern=/^\d{4}$/;
            if (Pattern.test(dtValue) && (dtValue.length==4))            
                dtValue=dtValue.substr(0,2) + "/" + dtValue.substr(2,2);                            
            else
            {
                //Truong hop nhap 2 so. vd: 01
                Pattern=/^\d{2}$/;
                if (Pattern.test(dtValue) && (dtValue.length==2) )
                {
                    if (eval(dtValue)<32)
                    dtValue=dtValue + "/" + ((new Date()).getMonth()+1);                    
                }
            }
        }
    }    
    return FormatDateTime(dtValue)
}

function IsTime(input_value)
{
    var validformat=/^\d{1,2}\:\d{1,2}$/; //Basic check for full  format validity 
	if (validformat.test(input_value))
	{
   /* var vH:=input_value.split(":")[0];    
    var vM:=input_value.split(":")[1];    
    if (vH<0)||vH>23)
        return false;
    if (vM<0)||vM>59) 
        return false;
        */
    return true;
    }
    else
    {return false;}
}

function FormatTime(dtValue)
{    
    if (!IsTime(dtValue))
    {
        var Pattern;                      
        //Truong hop nhap 4 so. vd: 0101
        Pattern=/^\d{4}$/;
        if (Pattern.test(dtValue) && (dtValue.length==4))            
            dtValue=dtValue.substr(0,2) + ":" + dtValue.substr(2,2);                            
        else
        {
            //Truong hop nhap 2 so. vd: 01
            Pattern=/^\d{2}$/;
            if (Pattern.test(dtValue) && (dtValue.length==2) )
            {
                if (eval(dtValue)<24)
                dtValue=dtValue + ":00";                    
            }
        }        
    }    
    return dtValue;
}