
var _disable_before = "disable_before";
var _disable_after = "disable_after";
var _disable_before_date = "disable_before_date";
var _disable_after_date = "disable_after_date";
var _disable_between = "disable_between";
var _enable_between = "enable_between";

try {
  if (_sysDate == undefined) {
	var _sysDate = new Date();
  }
} catch (ex) {
	var _sysDate = new Date();
}

_sysDate = trimDate(_sysDate);

function disable_before(date) {
	return (trimDate(date) < _sysDate);
}

function disable_after(date) {
	return (trimDate(date) > _sysDate);
}

function disable_before_date(date,vDate){
	return (trimDate(date) < trimDate(vDate));
}
function disable_after_date(date,vDate){
	return (trimDate(date) > trimDate(vDate));
}
function disable_between(date,vDateFrom,vDateEnd){
		vDateEnd = trimDate(vDateEnd);
		date = trimDate(date);
		return (date  >= vDateFrom  && date  <= vDateEnd);
}
function enable_between(date,vDateFrom,vDateEnd){
		vDateEnd = trimDate(vDateEnd);
		date = trimDate(date);
		return !(date  >= vDateFrom  && date  <= vDateEnd);
}

//=============================================================================================
function setCalendar(sender,output,disable,errMsg,fromField,endField) {
	if (output != undefined) {
		output.saveblur = null;
		output.saveFocus = null;
		if (output.readOnly) {
			sender.style.display="none";
			return;
		}
	} else {
		return;
	}

	var tcal = null;

	if (disable == _disable_before) {
		tcal = new ThaiCal.Calendar.setup({
			weekNumbers : false,
			electric : false,
			inputField : output.id,
			button : sender.id,
			ifFormat : "%d/%m/%Y",
			daFormat : "%d/%m/%Y",
			dateStatusFunc :  disable_before
		});

		if (output != undefined) {
			output.saveblur = output.onblur;
			output.onblur = function () {
				if (verifyDateBF(output) && (output.saveblur != null)) {
					output.saveblur();
				}
			}
		}
	}

	if (disable == _disable_after) {
		tcal = new ThaiCal.Calendar.setup({
			weekNumbers : false,
			electric : false,
			inputField : output.id,
			button : sender.id,
			ifFormat : "%d/%m/%Y",
			daFormat : "%d/%m/%Y",
			dateStatusFunc :  disable_after
		});
		if (output != undefined) {
			output.saveblur = output.onblur;
			output.onblur = function () {
				if (verifyDateAF(output,errMsg) && (output.saveblur != null)) {
					output.saveblur();
				}
			};
		}
	}

	if (disable == _disable_before_date) {
		tcal = new ThaiCal.Calendar.setup({
			weekNumbers : false,
			electric : false,
			inputField : output.id,
			button : sender.id,
			ifFormat : "%d/%m/%Y",
			daFormat : "%d/%m/%Y",
			dateStatusFunc :  function (date) {
								fdate = strToDate(fromField.value);
								return disable_before_date(date,fdate);}
		});
		if (output != undefined) {
			output.saveblur = output.onblur;
			output.onblur = function () {
				if (verifyDateBFDate(output,fromField,errMsg) && (output.saveblur != null)) {
					output.saveblur();
				}
			};
		}
	}

	if (disable == _disable_after_date) {
		tcal = new ThaiCal.Calendar.setup({
			weekNumbers : false,
			electric : false,
			inputField : output.id,
			button : sender.id,
			ifFormat : "%d/%m/%Y",
			daFormat : "%d/%m/%Y",
			dateStatusFunc  :  function (date) {
								fdate = strToDate(fromField.value);
								return disable_after_date(date,fdate);}
		});
		if (output != undefined) {
			output.saveblur = output.onblur;
			output.onblur = function () {
				if (verifyDateAFDate(output,fromField,errMsg) && (output.saveblur != null)) {
					output.saveblur();
				}
			};
		}
	}

	if (disable == _disable_between) {
		tcal = new ThaiCal.Calendar.setup({
			weekNumbers : false,
			electric : false,
			inputField : output.id,
			button : sender.id,
			ifFormat : "%d/%m/%Y",
			daFormat : "%d/%m/%Y",
			dateStatusFunc :  function (date) {
				fdate1 = strToDate(fromField.value);
				fdate2 = strToDate(endField.value);
				//fdate2 = incDate(fdate2,1);
				return disable_between(date,fdate1,fdate2);
			}

		});

		if (output != undefined) {
			output.saveblur = output.onblur;
			output.onblur = function () {
				if (verifyDateDsBt(output,fromField,endField,errMsg) && (output.saveblur != null)) {
					output.saveblur();
				}
			};
		}
	}

	if (disable == _enable_between) {
		tcal = new ThaiCal.Calendar.setup({
			weekNumbers : false,
			electric : false,
			inputField : output.id,
			button : sender.id,
			ifFormat : "%d/%m/%Y",
			daFormat : "%d/%m/%Y",
			dateStatusFunc :  function (date) {
				fdate1 = strToDate(fromField.value);
				fdate2 = strToDate(endField.value);
				return enable_between(date,fdate1,fdate2);
			}
		});

		if (output != undefined) {
			output.saveblur = output.onblur;
			output.onblur = function () {
				if (verifyDateEnBt(output,fromField,endField,errMsg) && (output.saveblur != null)) {
					output.saveblur();
				}
			};
		}
	}

	if (disable == undefined || disable == "" || tcal == null) {
		var tcal = new ThaiCal.Calendar.setup({
			weekNumbers : false,
			electric : false,
			inputField : output.id,
			button : sender.id,
			ifFormat : "%d/%m/%Y",
			daFormat : "%d/%m/%Y"
		});
		if (output != undefined) {
			output.saveblur = output.onblur;
			output.onblur = function () {
				if (verifyDate(output) && (output.saveblur != null)) {
					output.saveblur();
				}
			};
		}

	}

	if (output != undefined) {
		output.saveFocus = output.onfocus;
		output.onfocus = function () {
			if (output.readOnly) {
				output.onfocus = output.saveFocus;
				output.onblur = output.saveFocus;
				sender.style.display="none";
				return;
			}
			//if (output.value == "") {
			//	output.value = dateToStr(_sysDate);
				//iAlert(_sysDate);
			//}
			output.select();
			if (output.saveFocus != null) {
				output.saveFocus();
			}
		};
	}
}

//=============================================================================================
function setCalBox(container,callFunction) {
	var tcal = new ThaiCal.Calendar.setup({
	    showOthers  : true,
		flat : container,
		flatCallback : callFunction,
		weekNumbers : false,
		noCloseButton : true,
		ifFormat : "%d/%m/%Y",
		daFormat : "%d/%m/%Y"
	});
}

