// Start Date in Program
var START_DATE = "01/01/2535";

// Check browser version
var isNav4 = false, isNav5 = false, isIE4 = false
var strSeperator = "/"; 
var vDateType = 3; 
var vYearType = 4; 
var vYearLength = 2;
var err = 0; 
if(navigator.appName == "Netscape") {
	if (navigator.appVersion < "5") {
		isNav4 = true;
		isNav5 = false;
	} else if (navigator.appVersion > "4") {
		isNav4 = false;
		isNav5 = true;
	}
} else {
	isIE4 = true;
}
function jsFn_DateFormat(vDateName, vDateValue, e, dateCheck, dateType) {
	vDateType = dateType;
	if (vDateValue == "~") {
		alert("AppVersion = "+navigator.appVersion+" \nNav. 4 Version = "+isNav4+" \nNav. 5 Version = "+isNav5+" \nIE Version = "+isIE4+" \nYear Type = "+vYearType+" \nDate Type = "+vDateType+" \nSeparator = "+strSeperator);
		vDateName.value = "";
		vDateName.focus();
		return true;
	}
	var whichCode = (window.Event) ? e.which : e.keyCode;
	if (vDateValue.length > 8 && isNav4) {
		if ((vDateValue.indexOf("-") >= 1) || (vDateValue.indexOf("/") >= 1))
			return true;
	}
	var alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-";
	if (alphaCheck.indexOf(vDateValue) >= 1) {
		if (isNav4) {
			vDateName.value = "";
			vDateName.focus();
			vDateName.select();
			return false;
		} else {
			vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
			return false;
		}
	}
	if (whichCode == 8) { 
		return false;
	} else {
		var strCheck = '47,48,49,50,51,52,53,54,55,56,57,58,59,95,96,97,98,99,100,101,102,103,104,105';
			if (isNav4) {
				if (((vDateValue.length < 6 && dateCheck) || (vDateValue.length == 7 && dateCheck)) && (vDateValue.length >=1)) {
				vDateName.value = "";
						try {
							vDateName.focus();
							vDateName.select();
						}
						catch (error) {
						}
				return false;
				}
				if (vDateValue.length == 6 && dateCheck) {
					var mDay = vDateName.value.substr(2,2);
					var mMonth = vDateName.value.substr(0,2);
					var mYear = vDateName.value.substr(4,4)
					if (mYear.length == 2 && vYearType == 4) {
					var mToday = new Date();
					var checkYear = mToday.getFullYear() + 30; 
					var mCheckYear = '20' + mYear;
					if (mCheckYear >= checkYear)
						mYear = '19' + mYear;
					else
						mYear = '20' + mYear;
				}
				var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
				if (!jsFn_dateValid(vDateValueCheck)) {
					vDateName.value = "";
						try {
							vDateName.focus();
							vDateName.select();
						}
						catch (error) {
							// ignore
						}
					return false;
				}
				return true;
			} else {
				if (vDateValue.length >= 8  && dateCheck) {
					if (vDateType == 1) // mmddyyyy
					{
						var mDay = vDateName.value.substr(2,2);
						var mMonth = vDateName.value.substr(0,2);
						var mYear = vDateName.value.substr(4,4)
						vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
					}
					if (vDateType == 2) // yyyymmdd
					{
						var mYear = vDateName.value.substr(0,4)
						var mMonth = vDateName.value.substr(4,2);
						var mDay = vDateName.value.substr(6,2);
						vDateName.value = mYear+strSeperator+mMonth+strSeperator+mDay;
					}
					if (vDateType == 3) // ddmmyyyy
					{
						var mMonth = vDateName.value.substr(2,2);
						var mDay = vDateName.value.substr(0,2);
						var mYear = vDateName.value.substr(4,4)
						vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
					}
					var vDateTypeTemp = vDateType;
					vDateType = 1;
					var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
					if (!jsFn_dateValid(vDateValueCheck)) {
						vDateType = vDateTypeTemp;
						vDateName.value = "";
						try {
							vDateName.focus();
							vDateName.select();
						}
						catch (error) {
						}
						return false;
					}
					vDateType = vDateTypeTemp;
					return true;
				} else {
					if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {
						vDateName.value = "";
						try {
							vDateName.focus();
							vDateName.select();
						}
						catch (error) {
						}
						return false;
					}
				}
			}
		} else {
			if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {
				vDateName.value = "";
						try {
							vDateName.focus();
							vDateName.select();
						}
						catch (error) {
							// ignore
						}
				return false;
			}
			if (vDateValue.length >= 8 && dateCheck) {
				if (vDateType == 1) // mm/dd/yyyy
				{
					var mMonth = vDateName.value.substr(0,2);
					var mDay = vDateName.value.substr(3,2);
					var mYear = vDateName.value.substr(6,4)
				}
				if (vDateType == 2) // yyyy/mm/dd
				{
					var mYear = vDateName.value.substr(0,4)
					var mMonth = vDateName.value.substr(5,2);
					var mDay = vDateName.value.substr(8,2);
				}
				if (vDateType == 3) // dd/mm/yyyy
				{
					var mDay = vDateName.value.substr(0,2);
					var mMonth = vDateName.value.substr(3,2);
					var mYear = vDateName.value.substr(6,4)
				}
				if (vYearLength == 4) {
					if (mYear.length < 4) {
						vDateName.value = "";
						try {
							vDateName.focus();
							vDateName.select();
						}
						catch (error) {
						}
						return false;
					}
				}
				var vDateTypeTemp = vDateType;
				vDateType = 1;
				var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
				if (mYear.length == 2 && vYearType == 4 && dateCheck) {
				var mToday = new Date();
				var checkYear = mToday.getFullYear() + 30; 
				var mCheckYear = '20' + mYear;
				if (mCheckYear >= checkYear)
					mYear = '19' + mYear;
				else
					mYear = '20' + mYear;
				vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
				if (vDateTypeTemp == 1) // mm/dd/yyyy
					vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
				if (vDateTypeTemp == 3) // dd/mm/yyyy
					vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
			} 
			if (!jsFn_dateValid(vDateValueCheck)) {
				vDateType = vDateTypeTemp;
				vDateName.value = "";
						try {
							vDateName.focus();
							vDateName.select();
						}
						catch (error) {
						}
				return false;
			}
			vDateType = vDateTypeTemp;
			return true;
		} else {
			if (vDateType == 1) {
				if (vDateValue.length == 2) {
					vDateName.value = vDateValue+strSeperator;
				}
				if (vDateValue.length == 5) {
					vDateName.value = vDateValue+strSeperator;
				}
			}
			if (vDateType == 2) {
				if (vDateValue.length == 4) {
					vDateName.value = vDateValue+strSeperator;
				}
				if (vDateValue.length == 7) {
					vDateName.value = vDateValue+strSeperator;
				}
			} 
			if (vDateType == 3) {
				if (vDateValue.length == 2) {
					vDateName.value = vDateValue+strSeperator;
				}
				if (vDateValue.length == 5) {
					vDateName.value = vDateValue+strSeperator;
				}
			}
			return true;
		}
	}
	if (vDateValue.length == 10&& dateCheck) {
		if (!jsFn_dateValid(vDateName)) {
						try {
							vDateName.focus();
							vDateName.select();
						}
						catch (error) {
							// ignore
						}
		}
	}
	return false;
	
	}
}

function jsFn_dateValid(objName) {
	var strDate;
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var nday;
	var nMonth;
	var nYear;
	var booFound = false;
	var datefield = objName;
	var strSeparatorArray = new Array("-"," ","/",".");
	var nElementNr;
	// var err = 0;
	var strMonthArray = new Array(12);
	strMonthArray[0] = "Jan";
	strMonthArray[1] = "Feb";
	strMonthArray[2] = "Mar";
	strMonthArray[3] = "Apr";
	strMonthArray[4] = "May";
	strMonthArray[5] = "Jun";
	strMonthArray[6] = "Jul";
	strMonthArray[7] = "Aug";
	strMonthArray[8] = "Sep";
	strMonthArray[9] = "Oct";
	strMonthArray[10] = "Nov";
	strMonthArray[11] = "Dec";
	
	strDate = objName;
	if (strDate.length < 1) {
		return true;
	}
	for (nElementNr = 0; nElementNr < strSeparatorArray.length; nElementNr++) {
		if (strDate.indexOf(strSeparatorArray[nElementNr]) != -1) {
			strDateArray = strDate.split(strSeparatorArray[nElementNr]);
			if (strDateArray.length != 3) {
				err = 1;
				return false;
			} else {
				strDay = strDateArray[0];
				strMonth = strDateArray[1];
				strYear = strDateArray[2];
			}
			booFound = true;
		}
	}
	if (booFound == false) {
		if (strDate.length>5) {
			strDay = strDate.substr(0, 2);
			strMonth = strDate.substr(2, 2);
			strYear = strDate.substr(4);
		}
	}
	if (strYear.length == 2) {
		strYear = '20' + strYear;
	}
	strTemp = strDay;
	strDay = strMonth;
	strMonth = strTemp;
	nday = parseInt(strDay, 10);
	if (isNaN(nday)) {
		err = 2;
		return false;
	}
	nMonth = parseInt(strMonth, 10);
	if (isNaN(nMonth)) {
		for (i = 0;i<12;i++) {
			if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
				nMonth = i+1;
				strMonth = strMonthArray[i];
				i = 12;
			}
		}
		if (isNaN(nMonth)) {
			err = 3;
			return false;
		}
	}
	nYear = parseInt(strYear, 10);
	if (isNaN(nYear)) {
		err = 4;
		return false;
	}
	if (nMonth>12 || nMonth<1) {
		err = 5;
		return false;
	}
	if ((nMonth == 1 || nMonth == 3 || nMonth == 5 || nMonth == 7 || nMonth == 8 || nMonth == 10 || nMonth == 12) && (nday > 31 || nday < 1)) {
		err = 6;
		return false;
	}
	if ((nMonth == 4 || nMonth == 6 || nMonth == 9 || nMonth == 11) && (nday > 30 || nday < 1)) {
		err = 7;
		return false;
	}
	if (nMonth == 2) {
		if (nday < 1) {
			err = 8;
			return false;
		}
		if (jsFn_LeapYear(nYear) == true) {
			if (nday > 29) {
				err = 9;
				return false;
			}
		} else {
			if (nday > 28) {
				err = 10;
				return false;
			}
		}
	}
	return true;
}

function jsFn_LeapYear(nYear) {
	var tmYear = 0;
	if (nYear>2500) {
		tmYear = nYear - 543;
	} else {
		tmYear = nYear;
	}
	if (tmYear % 100 == 0) {
		if (tmYear % 400 == 0) { return true; }
	} else {
		if ((tmYear % 4) == 0) { return true; }
	}
	return false;
}
function jsFn_SetFormatDate(obj,event) {
	var strMonth = "";
	var strDay = "";
	var strYear = "";
	var strSeperate = "/";
	if (obj.value.length == 8) {
		strMonth = obj.value.substr(2,2);
		strDay = obj.value.substr(0,2);
		strYear = obj.value.substr(4,4);
		obj.value = strDay+strSeperate+strMonth+strSeperate+strYear;
	}
	if(jsFn_DateFormat(obj,obj.value,event,true,'3')) {
		if(!jsFn_IsObjDate(obj.value)) {
			return false;
		} else {
			event.returnValue = true;
			return true;
		}
	} else {
		alert(jsFn_getMsgErr(57));
		obj.value = "";
						try {
							obj.focus();
							obj.select();
						}
						catch (error) {
						}
		event.keyCode = 0;
		event.returnValue = false;
		return false;
	}
}

function jsFn_SetFormatDate2(obj,event,bpopup) {
	var strMonth = "";
	var strDay = "";
	var strYear = "";
	var strSeperate = "/";
	if (obj.value.length == 8) {
		strMonth = obj.value.substr(2,2);
		strDay = obj.value.substr(0,2);
		strYear = obj.value.substr(4,4);
		obj.value = strDay+strSeperate+strMonth+strSeperate+strYear;
	}
	if(jsFn_DateFormat(obj,obj.value,event,true,'3')) {
		if(!jsFn_IsObjDate(obj.value)) {
			event.keyCode = 0;
			event.returnValue = false;
			return false;
		} else {
			event.returnValue = true;
			return true;
		}
	} else {
		if (bpopup) {
			alert(jsFn_getMsgErr(57));
		}
		event.keyCode = 0;
		event.returnValue = false;
		return false;
	}
}
function jsFn_SplitSeperate(strValue) {
	return strValue.replace(/\//g,'');
}
function jsFn_SplitSeperateAllAlpha(strValue) {
	var strTmp = "";
	strTmp = strValue.replace(/\//g,'');
	strTmp = strTmp.replace(/-/g,'');
	return strTmp;
}
function jsFn_unSetFormatDate(objText) {
	var strNum = objText.value;
	strNum = jsFn_SplitSeperate(strNum);
	objText.value = strNum;
}
function jsFn_CompareStartDate(strStDate) {
	return jsFn_CompareDate(START_DATE,strStDate);
}
function jsFn_CompareDate(strStDate,strFnDate) {
	var strTmSt = jsFn_SplitSeperate(strStDate);
	var strTmFn = jsFn_SplitSeperate(strFnDate);
	var strStMonth = strTmSt.substr(2,2);
	var strStDay = strTmSt.substr(0,2);
	var strStYear = strTmSt.substr(4,4);
	var strFnMonth = strTmFn.substr(2,2);
	var strFnDay = strTmFn.substr(0,2);
	var strFnYear = strTmFn.substr(4,4);
	return jsFn_Compare2Date(strStDay,strStMonth,strStYear,strFnDay,strFnMonth,strFnYear);
}
function jsFn_Compare2Date(strSrcDay1,strSrcMonth1,strSrcYear1,strSrcDay2,strSrcMonth2,strSrcYear2){
     var strDay1 = strSrcDay1*1;
     var strMonth1 = strSrcMonth1*1;
     var strYear1 = strSrcYear1*1;
     
     var strDay2 = strSrcDay2*1;
     var strMonth2 = strSrcMonth2*1;
     var strYear2 = strSrcYear2*1;
     
	if(strYear1>strYear2)
		return 1;
	else if(strYear1<strYear2)
		return -1;
	else if(strYear1==strYear2){
		if(strMonth1>strMonth2)
			return 1;
		else if(strMonth1<strMonth2)
			return -1;
		else {
			if(strDay1>strDay2)
				return 1;
			else if(strDay1<strDay2)
				return -1;
			else
				return 0;
		}
	}else
		return 1;
}
function jsFn_IsObjDate(strChkDate) {
	var strToDay = jsFn_getToday(3,"/");
	var nResultStart = jsFn_CompareStartDate(strChkDate);
	var nResultNow = jsFn_CompareDate(strChkDate,strToDay);
	if(jsFn_trim(strChkDate)=="") return true;
	if(nResultStart > 0) {
		return false;
	} else if (nResultNow > 0) {
		return false;
	} else {
		return true;
	}
}
function jsFn_IsObjDateRange(strChkDate,strCompareType,nPlus) {
	var strToDay = jsFn_getToday(3,"/");
	var strMaxDay = jsFn_getDate(3,"/",strToDay,3,strCompareType,nPlus);
	var nResultStart = jsFn_CompareDate(strToDay,strChkDate);
	var nResultMax = jsFn_CompareDate(strMaxDay,strChkDate);
	if(jsFn_trim(strChkDate)=="") return true;
	if (nResultStart==0) return true;
	if (nResultMax==0) return true;
	if(nResultStart > 0) {
		return false;
	} else if (nResultMax > 0) {
		return false;
	} else {
		return true;
	}
}

function jsFn_FillZero(strNum,nZeroDigit) {
	var strTmp = "";
	var strTmNum = strNum+" ";
	var nCount = nZeroDigit*1;
	strTmNum = jsFn_trim(strTmNum);
	for(var i = 0;i < (nZeroDigit-(strTmNum.length));i++) {
		strTmp += "0";
	}
	return strTmp+strNum;
}
function jsFn_getToday(nType,strSep) {
	var dCurrDate = new Date();
	var strDay = jsFn_FillZero(dCurrDate.getDate(),2);
	var strMonth = jsFn_FillZero(dCurrDate.getMonth()+1,2);
	var strYear = (dCurrDate.getFullYear()<2500?dCurrDate.getFullYear()+543:dCurrDate.getFullYear());
	var strTmp = "";
	switch(nType) {
		case 1 : strTmp = strMonth+strSep+strDay+strSep+strYear; break;
		case 2 : strTmp = strYear+strSep+strMonth+strSep+strDay; break;
		case 3 : strTmp = strDay+strSep+strMonth+strSep+strYear; break;
	}
	return strTmp;
}
function jsFn_seperateDate(strDate,nDateType,strType) {
	var strTemp = "";
	var strMonth = "";
	var strDay = "";
	var strYear = "";
	strDate = jsFn_SplitSeperateAllAlpha(strDate);
	switch(nDateType) {
		case 1 : 
			strDay = strDate.substr(2,2);
			strMonth = strDate.substr(0,2);
			strYear = strDate.substr(4,4);
			break;
		case 2 : 
			strDay = strDate.substr(6,2);
			strMonth = strDate.substr(4,2);
			strYear = strDate.substr(0,4);
			break;
		case 3 : 
			strDay = strDate.substr(0,2);
			strMonth = strDate.substr(2,2);
			strYear = strDate.substr(4,4);
			break;
	}

	if ((strType=="d")||(strType=="D")) strTemp = strDay;
	if ((strType=="m")||(strType=="M")) strTemp = strMonth;
	if ((strType=="y")||(strType=="Y")) strTemp = strYear;

	return strTemp;
}
function jsFn_getDate(nFormatType,strSep,strDate,nDateType,strType,nPlus) {
	var strSrcDay = parseInt(jsFn_seperateDate(strDate,nDateType,"d"));
	var strSrcMonth = parseInt(jsFn_seperateDate(strDate,nDateType,"m"));
	var strSrcYear = parseInt(jsFn_seperateDate(strDate,nDateType,"y"));

	if ((strType == "d")||(strType=="D")) strSrcDay+=nPlus;
	if ((strType == "m")||(strType=="M")) strSrcMonth+=nPlus;
	if ((strType == "y")||(strType=="Y")) strSrcYear+=nPlus;

	var tmDate = strSrcMonth+"/"+strSrcDay+"/"+strSrcYear;
	var dCurrDate = new Date(tmDate);
	var strDay = jsFn_FillZero(dCurrDate.getDate(),2);
	var strMonth = jsFn_FillZero(dCurrDate.getMonth()+1,2);
	var strYear = (dCurrDate.getFullYear()<2500?dCurrDate.getFullYear()+543:dCurrDate.getFullYear());
	var strResult = "";

	switch(nFormatType) {
		case 1 : strResult = strMonth+strSep+strDay+strSep+strYear; break;
		case 2 : strResult = strYear+strSep+strMonth+strSep+strDay; break;
		case 3 : strResult = strDay+strSep+strMonth+strSep+strYear; break;
	}
	return strResult;
}
function jsFn_getYear(){
	var dCurrDate = new Date();
	var strYear = (dCurrDate.getFullYear()<2500?dCurrDate.getFullYear()+543:dCurrDate.getFullYear());
	return strYear;
}
