
// param1 = string Thai date (dd/mm/yyyy)
// param2 = string Thai date (dd/mm/yyyy)
// param3 = string time field is "date", "month", "year", "full"
// if param3 = "full" function will return time difference àªè¹ 1 »Õ 3 à´×Í¹ 2 ÇÑ¹
function DateDiff(gStartDateVal, gFinishDateVal, timeField){
	if(gStartDateVal==null || gFinishDateVal==null || timeField==null){
		return "";
	}//if
	if(gStartDateVal=="" || gFinishDateVal=="" || timeField==""){
		return "";
	}//if

	var nDiff="";
	var DateStart, DateFinish;
	var dateDiff, yearDiff, monthDiff;
	DateStart		= jsFn_getDate(gStartDateVal, "/");
	DateFinish	= jsFn_getDate(gFinishDateVal, "/");

	dateDiff		= parseInt((DateFinish - DateStart)/(1000*60*60*24))
	yearDiff		= DateFinish.getFullYear() - DateStart.getFullYear();
	monthDiff	= (yearDiff * 12) + (DateFinish.getMonth() - DateStart.getMonth());

	switch(timeField.toLowerCase()){
		case "date" :
			nDiff = dateDiff;		break;
		case "month"	:
			nDiff = monthDiff;	break;
		case "year"	 :
			nDiff = yearDiff;		break;
		case "full"	 :
			if(monthDiff > 0){
				dateDiff =  DateDiff(DateAdd(gStartDateVal, 0, monthDiff, 0), gFinishDateVal, "date");
				if(dateDiff < 0 && monthDiff > 1){
					monthDiff = monthDiff-1;
					dateDiff =  DateDiff(DateAdd(gStartDateVal, 0, monthDiff, 0), gFinishDateVal, "date");
				}//if
				 if(dateDiff < 0 && monthDiff == 1){					
					dateDiff =  DateDiff(gStartDateVal, gFinishDateVal, "date");
					monthDiff = 0;
				 }//if
				if(monthDiff >= 12){
					yearDiff = parseInt(monthDiff/12); 
					monthDiff = monthDiff%12;
					nDiff = yearDiff + " »Õ ";
				}//if
			}//if
			//alert(yearDiff+"=="+monthDiff+"=="+dateDiff);
			if(monthDiff > 0)	nDiff += monthDiff +" à´×Í¹ ";
			if(dateDiff > 0)	nDiff += dateDiff +" ÇÑ¹ ";
			break;
		case "fulldiffdate" :
			if(monthDiff > 0){
				dateDiff =  DateDiff(DateAdd(gStartDateVal, 0, monthDiff, 0), gFinishDateVal, "date");
				if(dateDiff < 0 && monthDiff > 1){
					monthDiff = monthDiff-1;
					dateDiff =  DateDiff(DateAdd(gStartDateVal, 0, monthDiff, 0), gFinishDateVal, "date");
				}//if
				 if(dateDiff < 0 && monthDiff == 1){					
					dateDiff =  DateDiff(gStartDateVal, gFinishDateVal, "date");
					monthDiff = 0;
				 }//if
			}//if
			nDiff = dateDiff;
			break;
		case "fulldiffmonth" :
			if(monthDiff > 0){
				dateDiff =  DateDiff(DateAdd(gStartDateVal, 0, monthDiff, 0), gFinishDateVal, "date");
				if(dateDiff < 0 && monthDiff > 1){
					monthDiff = monthDiff-1;
					dateDiff =  DateDiff(DateAdd(gStartDateVal, 0, monthDiff, 0), gFinishDateVal, "date");
				}//if
				 if(dateDiff < 0 && monthDiff == 1){					
					dateDiff =  DateDiff(gStartDateVal, gFinishDateVal, "date");
					monthDiff = 0;
				 }//if
				if(monthDiff >= 12){
					yearDiff = parseInt(monthDiff/12); 
					monthDiff = monthDiff%12;
					nDiff = yearDiff + " »Õ ";
				}//if
			}//if
			nDiff = monthDiff;
			break;
		case "fulldiffyear" :
			nDiff = 0;
			if(monthDiff > 0){
				dateDiff =  DateDiff(DateAdd(gStartDateVal, 0, monthDiff, 0), gFinishDateVal, "date");
				if(dateDiff < 0 && monthDiff > 1){
					monthDiff = monthDiff-1;
					dateDiff =  DateDiff(DateAdd(gStartDateVal, 0, monthDiff, 0), gFinishDateVal, "date");
				}//if
				 if(dateDiff < 0 && monthDiff == 1){					
					dateDiff =  DateDiff(gStartDateVal, gFinishDateVal, "date");
					monthDiff = 0;
				 }//if
				if(monthDiff >= 12){
					yearDiff = parseInt(monthDiff/12); 
					monthDiff = monthDiff%12;
					nDiff = yearDiff;
				}//if			
			}//if
			break;
	}//swich

	return nDiff;	
}//fn

//Start DateAdd Util Section
//Thai date format (dd/mm/yyyy)
function DateAdd(strDate, numDays, numMonths, numYears){
	var returnDate = new Date(jsFn_getDate(strDate,"/").getTime());
	var yearsToAdd = parseInt(numYears);
	var month = parseInt(returnDate.getMonth())+ parseInt(numMonths);
	if (month > 11){
		yearsToAdd = Math.floor((month+1)/12);
		month -= 12*yearsToAdd;
		yearsToAdd += parseInt(numYears);
	}//if	
	returnDate.setMonth(parseInt(month));
	returnDate.setFullYear(returnDate.getFullYear()+ yearsToAdd);
	returnDate.setTime(returnDate.getTime()+1000*60*60*24*numDays);
	//return (returnDate.getDate())+"/"+(returnDate.getMonth()+1)+"/"+(returnDate.getFullYear()+543);
	return (returnDate.getDate()<10?"0"+returnDate.getDate():returnDate.getDate())+"/"+((returnDate.getMonth()+1)<10?"0"+(returnDate.getMonth()+1):returnDate.getMonth()+1)+"/"+(returnDate.getFullYear()+543);
}//fn

function YearAdd(strDate, numYears){
		return DateAdd(strDate,0,0,numYears);
}//fn

function MonthAdd(strDate, numMonths){
		return DateAdd(strDate,0,numMonths,0);
}//fn

function DayAdd(strDate, numDays){
		return DateAdd(strDate,numDays,0,0);
}//fn
//End DateAdd Util Section--

function jsFn_getDate(strThaiDate, strDelimiter){
	var sdate = strThaiDate.split(strDelimiter);
	var _Date = new Date(Date.parse((Math.abs(sdate[1]))+"/"+(Math.abs(sdate[0]))+"/"+(Math.abs(sdate[2])-543)));
	return _Date;
}//fn



