/*
OCXInit.js
This file used only by IE. if not IE this function shouldn't be called
created by: Mohamed Fathy
*/

function initializeOCX()
{
/*
		if(CalOCX!=null && CalOCX.toString()!="undefined")
		{
			temp = CalOCX.alive;
			if(temp!=true)
				CalOCX = null;
		}
		else
			CalOCX = null;*/
}

function tryFormat(day, month, year, era, inclDay, ocx)
{
			ret = ocx.jsFormatDate(day, month, year, era, inclDay);
			if(ret==null)
			{
				if(inclDay)
					ret = day+" "+getMonth(month, 1)+" "+year;
				else
					ret = getMonth(month, 1)+" "+year;
			}
		return ret;
}

function tryGregTimeToSystemTime(day, month, year, ocx)
{
	var str = null;
		str = ocx.jsGregTimeToSystemTime(day, month, year);
		if(str == null)
		{
			d = new Date(year, month, day);
			dnw = d.getDay();
			dnm = GetDaysNoInMonth(day, month, year, "", null);
			str = ""+day+";"+month+";"+year+";"+dnw+";"+dnm;
		}
			
	return str;
}


function tryConvertToGregorean(day, month, year, era, ocx)
{
	var str = null;
		str = ocx.jsConvertToGregorean(Number(day), Number(month), Number(year), String(era));
		if(str == null) 
		{
			d = new Date(year, month, day);
			str = ""+day+";"+month+";"+year;
		}

	return str;
}

function tryGetDaysNoInMonth(month, year, era, ocx)
{
	var m = null;
		m = ocx.jsGetDaysNoInMonth(month, year, era);
		if(m==null)
		{
			DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
			m = DOMonth[month];
			if((year%4)==0 && month==1)
				m++;
		}
	return m;
}


//=========================================================================================
function composeWindowHtml(dateText)
{
NS4DocStr = "\r\n";
//composing the globals
NS4DocStr += "var type; var OutItem;var LocaleDate_Return;var GregDay_Return;var GregMonth_Return;var GregYear_Return;var CalOCX;var isNavigator;var isNS4;var isIE4;var isIE5;var isNS6;var isNativeLoaded=false;var currentDay  = null;var currentMonth= null;var currentYear = null;var currentEra  = null;var currentEraNo= null;var ArrayEra     =null;var ArrayEraStart=null;var ArrayEraEnd  =null;var ArrayEraLocaleEndYear =null;var ArrayEraLocaleEndMonth=null;var ArrayEraLocaleEndDay  =null;var docClosed=false;var monthsOnly;var criticalStartDay;var criticalStartMonth;var criticalStartYear;var criticalEndDay;var criticalEndMonth;var criticalEndYear;\r\n";
NS4DocStr += "var font_face='"+font_face+"';var font_size='"+font_size+"';var font_color='"+font_color+"';var border_size='"+border_size+"';var background_color='"+background_color+"';var topbar_bg_color='"+topbar_bg_color+"';var topbar_font_color='"+topbar_font_color+"';var weekdays_font_color='"+weekdays_font_color+"';var weekdays_bg_color='"+weekdays_bg_color+"';var cell_bg_color='"+cell_bg_color+"';var cell_mover_color='"+cell_mover_color+"';var cell_mover_font_color='"+cell_mover_font_color+"';var selected_bg_color='"+selected_bg_color+"';var selected_font_color='"+selected_font_color+"';var cell_font_color='"+cell_font_color+"';\r\n";
//NS4DocStr += "var rsDaysNames = \"Sat;Sun;Mon;Tues;Wed;Thur;Fri\"; var rsMonthsNamesAbbrev = \"Jan;Feb;March;Apr;May;June;Jully;Aug;Sep;Oct;Nov;Dec\"; var rsMonthsNames = \"Jan;Feb;March;Apr;May;June;Jully;Aug;Sep;Oct;Nov;Dec\";\r\n";
NS4DocStr += "var rsDaysNames = \""+rsDaysNames+"\"; var rsMonthsNamesAbbrev = \""+rsMonthsNamesAbbrev+"\"; var rsMonthsNames = \""+rsMonthsNames+"\";\r\n";
//composing calendar.js
NS4DocStr += "function getWeekDays()\r\n";
NS4DocStr += "{	if(CalOCX != null)	DaysNames = CalOCX.jsRetreiveWeakDaysNames(0);\r\n";
NS4DocStr += "	else	DaysNames = rsDaysNames;\r\n";
NS4DocStr += "	return tokenize(DaysNames); }\r\n";

NS4DocStr += "function getMonth(n, apprev)\r\n";
NS4DocStr += "{	if(!apprev)	MonthsNames = rsMonthsNamesAbbrev;	else	MonthsNames = rsMonthsNames;\r\n";
NS4DocStr += "	if(CalOCX != null)	MonthsNames = CalOCX.jsRetrieveMonthsNames(apprev);\r\n";
NS4DocStr += "	arr = tokenize(MonthsNames);\r\n";
NS4DocStr += "	if(n<0 || n>13)	return arr;	else	return arr[n]; }\r\n";

NS4DocStr += "function GetDaysNoInMonth(day, month, year, era)\r\n";
NS4DocStr += "{	ocx = arguments[4];	if(ocx==null)	ocx=CalOCX;\r\n";
NS4DocStr += "	if(ocx != null) {	y = year; e = era; values = null;\r\n";
NS4DocStr += "	if(era!=null && era!=\"\" && era!=\"undefined\"){	vals = convertToGregorian(day, month, year, era);	date = new Date(vals[2], vals[1], vals[0]);	date.setDate(date.getDate()-day+1);{values = assertInEra(date.getDate(), date.getMonth(), date.getFullYear(), era);	if(values!=null && values[0] != -1) { y = values[0]; e = values[1];	}}} m = tryGetDaysNoInMonth(month, parseInt(y), e,ocx);}\r\n";
NS4DocStr += "	else{ DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; m = DOMonth[month]; if((year%4)==0 && month==1) m++; }\r\n";
NS4DocStr += "	return m; }\r\n";

NS4DocStr += "function getDayNoInWeekAfterOffset(day, currentDNW)\r\n";
NS4DocStr += "{	var dayNo=-1;	offset = day-currentDay;\r\n";
NS4DocStr += "	if(offset>=0)	dayNo = (offset+currentDNW)%7; else	dayNo = (7+offset%7+currentDNW)%7;\r\n";
NS4DocStr += "	return dayNo; }\r\n";

NS4DocStr += "function GregTimeToSystemTime(day, month, year, ocx)\r\n";
NS4DocStr += "{ if(ocx == null) ocx = CalOCX;\r\n";
NS4DocStr += "	if(ocx != null) { str = tryGregTimeToSystemTime(day, month, year, ocx); }\r\n";
NS4DocStr += "	else { d = new Date(year, month, day); dnw = d.getDay(); dnm = GetDaysNoInMonth(day, month, year, \"\"); str = \"\"+day+\";\"+month+\";\"+year+\";\"+dnw+\";\"+dnm; }\r\n";
NS4DocStr += "	return tokenize(str); }\r\n";

NS4DocStr += "function convertToGregorian(day, month, year, era)\r\n";
NS4DocStr += "{ if(CalOCX != null){	str = tryConvertToGregorean(Number(day), month, year, era);}\r\n";
NS4DocStr += "	else{ str = \"\"+day+\";\"+month+\";\"+year;	}\r\n";
NS4DocStr += "return tokenize(str);}\r\n";

NS4DocStr += "function formatDate()\r\n";
NS4DocStr += "{ day=arguments[0]; month=arguments[1]; year=arguments[2];	era=arguments[3]; inclDay=arguments[4];	ocx=arguments[5];\r\n";
NS4DocStr += "	if(ocx != null) {	ret = tryFormat(day, month, year, era,Number(inclDay),ocx);}\r\n";
NS4DocStr += "	else{ if(inclDay)	ret = day+\" \"+getMonth(month, 1)+\" \"+year; else ret = getMonth(month, 1)+\" \"+year;}\r\n";
NS4DocStr += "	return ret;}\r\n";

NS4DocStr += "function RetreiveEras()\r\n";
NS4DocStr += "{ if(CalOCX != null) {str = CalOCX.jsRetreiveEras(); }	else{ str = \"\";	}\r\n";
NS4DocStr += "	return tokenize(str);}\r\n";

NS4DocStr += "function assertInEra(day, month, year, inEra)\r\n";
NS4DocStr += "{	var outDay=day, outMonth=month, outYear=-1; outEra=\"\";\r\n";
NS4DocStr += "	if(inEra != \"\") { eraNumb = getEraNo(inEra); if( (year==ArrayEraEnd[eraNumb].getFullYear()) && (month==ArrayEraEnd[eraNumb].getMonth()) && (day>ArrayEraEnd[eraNumb].getDate()) ) {outEra  = ArrayEra[eraNumb+1];outYear = 1;}\r\n";
NS4DocStr += "	else if( (year==ArrayEraStart[eraNumb].getFullYear()) && (month==ArrayEraStart[eraNumb].getMonth()) && (day<ArrayEraStart[eraNumb].getDate()) ) {outEra   = ArrayEra[eraNumb-1];outYear  = ArrayEraLocaleEndYear[eraNumb-1];}	}\r\n";
NS4DocStr += "	return tokenize(outYear+\";\"+outEra);}\r\n";

NS4DocStr += "function getEraNo(era)\r\n";
NS4DocStr += "{ j=-1;	if(ArrayEra != null) {	for(i=0, j=0; i<ArrayEra.length; i++, j++) { if(era == ArrayEra[i])   break; }\r\n";
NS4DocStr += "currentEraNo = j;} return (j-1); }\r\n";

NS4DocStr += "function setCriticalDates(EraNum)\r\n";
NS4DocStr += "{	vals = GregTimeToSystemTime(ArrayEraStart[EraNum].getDate(), ArrayEraStart[EraNum].getMonth(), ArrayEraStart[EraNum].getFullYear()); criticalStartDay = vals[0]; criticalStartMonth = vals[1]; criticalStartYear = vals[2];\r\n";
NS4DocStr += "if(EraNum < ArrayEra.length-1 ) { vals = GregTimeToSystemTime(ArrayEraStart[EraNum+1].getDate(), ArrayEraStart[EraNum+1].getMonth(), ArrayEraStart[EraNum+1].getFullYear()); criticalEndDay = vals[0]; criticalEndMonth = vals[1]; criticalEndYear = vals[2]; }\r\n";
NS4DocStr += "else {	criticalEndDay=31; criticalEndMonth=12; criticalEndYear=2019; } } \r\n";
/*--------------------------------------------------------------------------------*/
// events
/*--------------------------------------------------------------------------------*/
NS4DocStr += "function MouseOverCell(cellid, cellfontid, TopbarTD)\r\n";
NS4DocStr += "{	 }\r\n";

NS4DocStr += "function MouseOutCell(cellid, cellfontid) {}\r\n";

NS4DocStr += "function MouseClickCell(id, caller)\r\n";
NS4DocStr += "{ //alert(LocaleDateReturn);\r\n if(caller == \"CloseBut\") { day = 1; }\r\n";
NS4DocStr += "	else day = OutItem.document.anchors[id].text;\r\n";
NS4DocStr += "	if(day.toString() == \"NaN\") { day = 1; }\r\n";
NS4DocStr += "	oYear= currentYear;  oEra = currentEra;\r\n";
NS4DocStr += "	if(currentEra != null){ if( (currentYear==criticalStartYear) && (currentMonth==criticalStartMonth) ) { if(day < criticalStartDay) { oYear=ArrayEraLocaleEndYear[currentEraNo-1];  oEra=ArrayEra[currentEraNo-1];} } }\r\n";
NS4DocStr += "	currentDay  = Number(day); currentYear = Number(oYear); currentEra  = oEra; roll(0); LocaleDateReturn.value = formatDate(currentDay, currentMonth, currentYear, currentEra, (!monthsOnly), CalOCX);\r\n";
NS4DocStr += "	vals =convertToGregorian(currentDay, currentMonth, currentYear, currentEra); GregDay_Return.value = vals[0]; GregMonth_Return.value = parseInt(vals[1])+1; \/\/GregYear_Return.value  = vals[2]; \r\nGregDay_Return.value=vals[0];GregMonth_Return.value=parseInt(vals[1])+1;GregYear_Return.value=vals[2];window.close();\r\n}\r\n";


NS4DocStr += "function clickCloseButton(cel, item)\r\n";
NS4DocStr += "{	MouseClickCell(cel, \"CloseBut\");	 }\r\n";
/*-------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------*/

NS4DocStr += "function roll(n)\r\n";
NS4DocStr += "{	arr = convertToGregorian(currentDay, currentMonth, currentYear, currentEra);	mDate = new Date(Number(arr[2]+\".0\"),Number(arr[1]+\".0\"),Number(arr[0]+\".0\"));\r\n";
NS4DocStr += "	if( ((mDate.getFullYear()<2019) && n>0) || \r\n";
NS4DocStr += "		((mDate.getFullYear()>1971) && n<0) || \r\n";
NS4DocStr += "		((mDate.getFullYear()==2019) && (mDate.getMonth()<11) && n<2) ||\r\n";
NS4DocStr += "		((mDate.getFullYear()==1971) && (mDate.getMonth()>0) && n>-2)  ) \r\n";
NS4DocStr += "	{switch(n)	{\r\n";
NS4DocStr += "	case -1: mDate.setMonth(mDate.getMonth()-1, 1);	break;\r\n";
NS4DocStr += "	case -2: mDate.setFullYear(mDate.getFullYear()-1); break;\r\n";
NS4DocStr += "	case 1: mDate.setMonth(mDate.getMonth()+1, 1); break;\r\n";
NS4DocStr += "	case 2:	mDate.setFullYear(mDate.getFullYear()+1); break; }	\r\n";
NS4DocStr += "		var values = new Array(6); values = GregTimeToSystemTime(mDate.getDate(), mDate.getMonth(), mDate.getFullYear());\r\n";
NS4DocStr += "		currentDay = parseInt(values[0]); currentMonth = parseInt(values[1]); currentYear  = parseInt(values[2]); currentEra= values[5]; dnw = parseInt(values[3]); \r\n";
NS4DocStr += "		if(currentEra!=\"\" && currentEra!=null) setCriticalDates(getEraNo(currentEra)); \r\n";
NS4DocStr += "		if(currentDay > (i=GetDaysNoInMonth(1, currentMonth, currentYear, currentEra))){ currentDay   = 1; } \r\n";
NS4DocStr += "		drawCalendar(OutItem, currentDay , currentMonth, currentYear, values[5], dnw); } } \r\n";

NS4DocStr += "function tokenize(str)\r\n";
NS4DocStr += "{ var values = new Array(15);\r\n";
NS4DocStr += "for(i=0; i<15; i++) {	\r\n";
NS4DocStr += "	index     = str.indexOf(\";\", 0); if(index > 0) { values[i] = str.substring(0,index); str	  = str.substring(index+1); }\r\n";
NS4DocStr += "	else { values[i] = str; break; } }\r\n";
NS4DocStr += "	return values; }\r\n";


NS4DocStr += "function getArrayLength(arr)\r\n";
NS4DocStr += "{ len=0; for(; len<arr.length; len++) { if(arr[len]==null) break;} return len;}\r\n";

NS4DocStr += "function drawCalendar(OutItem, Day, Month, Year, Era, dayNoNWeek)\r\n";
NS4DocStr += "{ wDays  = getWeekDays(); wMonth = getMonth(Month, -1);\r\n";
NS4DocStr += "	if(Day > GetDaysNoInMonth(Day, Month, Year, Era)) { currentDay = Day = 1; }\r\n";
NS4DocStr += "	nDays	   = getArrayLength(wDays); dayNoNWeek = getDayNoInWeekAfterOffset(1, dayNoNWeek); nMonthDays = GetDaysNoInMonth(Day, Month, Year, Era);\r\n";
NS4DocStr += "	//freeCalendar(OutItem);\r\n	 if(Era == null) Era=\"\";\r\n";
NS4DocStr += "	if(isNavigator)	{ OutHtml = \"<FORM name='inForm'>\"; A1 = \"<\/A>\"; }\r\n";
NS4DocStr += "	OutHtml += \"<TABLE border='\"+border_size+\"' bgcolor=\"+background_color+\" cellspacing=0'><tr align='center'><td id=TopbarTD name=TopbarTD colspan=3 bgcolor='\"+topbar_bg_color+\"'>\"+\"<font color='\"+topbar_font_color+\"'>\"+wMonth+\" \"+Year+\" \"+Era+\"<\/font>\";";
NS4DocStr += "	OutHtml += \"<td bgcolor=#000000 align=right valign=top><input name='hid' type='hidden' value=1><input type='button' onclick='clickCloseButton( hid, OutItem); return true;' value='  x  '><\/td>\";\r\n";
NS4DocStr += "	OutHtml += \"<\/td><\/tr>\";\r\n";
NS4DocStr += "	OutHtml += \"<tr align='center'><td colspan=4>\"+\"<input type='button' onclick='roll(-2); return true;' value='  << '>\";\r\n";
NS4DocStr += "	OutHtml += \"<input type='button' onclick='roll(-1); return true;' value='  <  '>\";\r\n";
NS4DocStr += "	OutHtml += \"<input type='button' onclick='roll(+1); return true;' value='  >  '>\";\r\n";
NS4DocStr += "	OutHtml += \"<input type='button' onclick='roll(+2); return true;' value='  >> '>\"+\"<\/tr>\";\r\n";
NS4DocStr += "	if(monthsOnly == false) {\r\n";
NS4DocStr += "		OutHtml += \"<tr><td colspan=4>\"; OutHtml += \"<TABLE cellpadding=0 cellspacing=1 align='center' border=0> <tr align='center'>\";\r\n";
NS4DocStr += "		for(i=0; i<nDays; i++) { OutHtml = OutHtml +\"<th bgcolor='\"+weekdays_bg_color+\"'>\"+\"<font color='\"+weekdays_font_color+\"'>\"+wDays[i]+\"<\/font><\/th>\"; }\r\n";
NS4DocStr += "		OutHtml = OutHtml +\"<\/tr><tr align='center'>\";\r\n";
NS4DocStr += "		for(i=0; i<nMonthDays+dayNoNWeek; i++) {\r\n";
NS4DocStr += "			if(i%7==0 && i!=0)\r\n";
NS4DocStr += "				OutHtml = OutHtml +\"<\/tr><tr align='center'>\";\r\n";
NS4DocStr += "				if(i<dayNoNWeek) OutHtml = OutHtml +\"<td>&nbsp;<\/td>\";\r\n";
NS4DocStr += "				else {\r\n";
NS4DocStr += "					bcol = cell_bg_color; col  = cell_font_color;\r\n";
NS4DocStr += "					if(i-dayNoNWeek+1 == currentDay) { bcol = selected_bg_color; col  = selected_font_color; }\r\n";
NS4DocStr += "					OutHtml = OutHtml +\"<td bgcolor='\"+bcol+\"' id='cell\"+i+\"' name='cell\"+i+\"' onMouseOut='MouseOutCell(this, cell\"+i+\"font);' onMouseOver='MouseOverCell(cell\"+i+\", cell\"+i+\"font, TopbarTD);' onclick='MouseClickCell(cell\"+i+\"); return false;'>\";\r\n";
NS4DocStr += "					OutHtml += \"<font id='cell\"+i+\"font' name='cell\"+i+\"font' color='\"+col+\"'>\";\r\n";
NS4DocStr += "					OutHtml += A(i); OutHtml += (i-dayNoNWeek+1); OutHtml += A1 + \"<\/font><\/td>\";\r\n";
NS4DocStr += "		} } }";
NS4DocStr += "	OutHtml = OutHtml+\"<\/tr><\/TABLE><\/td><\/tr><\/TABLE>\";\r\n";
NS4DocStr += "	if(isNavigator) { OutHtml += \"<\/FORM>\"; }\r\n";
NS4DocStr += "	wwrite(OutHtml); }\r\n";


NS4DocStr += "function A(i)";
NS4DocStr += "{ a  = \"<A href='' name='link\"+i+\"' onclick=\\\"MouseClickCell('link\"+i+\"'); return false;\\\" >\"; return a; }";

NS4DocStr += "function wwrite(text)\r\n";
NS4DocStr += "{ OutItem.document.open(); OutItem.document.write(text); OutItem.document.close(); }\r\n";



NS4DocStr += "function freeCalendar(Item)\r\n";
NS4DocStr += "{ }\r\n";

NS4DocStr += "function initializeDate(d, m, y, inclDay, obj,ocx)\r\n";
NS4DocStr += "{ v = GregTimeToSystemTime(d, m-1, y, ocx); obj.value = formatDate(parseInt(v[0]), parseInt(v[1]), parseInt(v[2]), v[3], inclDay, ocx); }\r\n";

NS4DocStr += "function srvInitializeDate(d, m, y, inclDay, ocx)\r\n";
NS4DocStr += "{ v = GregTimeToSystemTime(d, m-1, y, ocx); return formatDate(parseInt(v[0]), parseInt(v[1]), parseInt(v[2]), v[3], inclDay, ocx); }\r\n";



NS4DocStr += "function viewCalendar()\r\n";
NS4DocStr += "{ today	   = new Date(); var values = new Array(6);\r\n";
NS4DocStr += "	if(arguments[0]!=null && arguments[1]!=null && arguments[2]!=null) { today.setFullYear(arguments[2]); today.setMonth(arguments[1]-1); today.setDate(arguments[0]); }\r\n";
NS4DocStr += "	values = GregTimeToSystemTime(today.getDate(), today.getMonth(), today.getFullYear()); currentDay= parseInt(values[0]); currentMonth = parseInt(values[1]); currentYear = parseInt(values[2]); currentEra= values[5]; dnw= parseInt(values[3]);\r\n";
NS4DocStr += "	if(currentEra!='' && currentEra!=null) setCriticalDates(getEraNo(currentEra)); drawCalendar(OutItem, currentDay, currentMonth, currentYear, currentEra, dnw); }\r\n";


NS4DocStr += "function initailize()\r\n";
NS4DocStr += "{ vals  = RetreiveEras(); count = parseInt(vals[0]);\r\n";
NS4DocStr += "	if(! isNaN(count)) {\r\n";
NS4DocStr += "		ArrayEra     = new Array(count); ArrayEraStart= new Array(count); ArrayEraEnd	 = new Array(count);\r\n";
NS4DocStr += "		ArrayEraLocaleEndYear  = new Array(count); ArrayEraLocaleEndMonth = new Array(count); ArrayEraLocaleEndDay   = new Array(count);\r\n";
NS4DocStr += "		for(k=0, j=1; k<count; k++, j+=7)\r\n";
NS4DocStr += "		{ ArrayEra[k] = vals[j]; ArrayEraStart[k] = new Date(parseInt(vals[j+3]), parseInt(vals[j+2])-1, parseInt(vals[j+1])); ArrayEraEnd[k]   = new Date(parseInt(vals[j+6]), parseInt(vals[j+5])-1, parseInt(vals[j+4]));\r\n";
NS4DocStr += "		ret = GregTimeToSystemTime(parseInt(vals[j+4]), parseInt(vals[j+5])-1, parseInt(vals[j+6])); ArrayEraLocaleEndDay[k]   = ret[0]; ArrayEraLocaleEndMonth[k] = ret[1]; ArrayEraLocaleEndYear[k]  = ret[2]; } } }\r\n";

NS4DocStr += "function show_calendar()\r\n";
NS4DocStr += "{   OutItem=arguments[0]; LocaleDateReturn= arguments[1]; GregDay_Return  = arguments[2]; GregMonth_Return= arguments[3]; GregYear_Return = arguments[4]; CalOCX = arguments[5]; type= arguments[6];\r\n";
NS4DocStr += "	isNavigator = (navigator.appName == 'Netscape'); isNS4 = (document.layers) ? true : false; isIE4 = (document.all && !document.getElementById) ? true : false;\r\n";
NS4DocStr += "	isIE5 = (document.all && document.getElementById) ? true : false; isNS6 = (!document.all && document.getElementById) ? true : false;\r\n";
NS4DocStr += "	if(type.toString() == 'YearMonthDays') monthsOnly = false; else if(type.toString() == 'MonthsOnly') monthsOnly = true; else monthsOnly = false;\r\n";
NS4DocStr += "	initializeOCX(); initailize(); viewCalendar(arguments[7], arguments[8], arguments[9]); }\r\n";


//composing calendarInit.js
NS4DocStr += "function initializeOCX()\r\n";
NS4DocStr += "{}\r\n";

NS4DocStr += "function tryFormat(day, month, year, era, inclDay, ocx)\r\n";
NS4DocStr += "{ ret = ocx.jsFormatDate(day, month, year, era, inclDay);\r\n";
NS4DocStr += "	if(ret==null) { if(inclDay) ret = day+' '+getMonth(month, 1)+' '+year; else ret = getMonth(month, 1)+' '+year; }\r\n";
NS4DocStr += "	return ret; }\r\n";

NS4DocStr += "function tryGregTimeToSystemTime(day, month, year, ocx)\r\n";
NS4DocStr += "{ var str = null; str = ocx.jsGregTimeToSystemTime(day, month, year);\r\n";
NS4DocStr += "	if(str == null)\r\n";
NS4DocStr += "	{ d = new Date(year, month, day); dnw = d.getDay(); dnm = GetDaysNoInMonth(day, month, year, '', null);\r\n";
NS4DocStr += "	str = ''+day+';'+month+';'+year+';'+dnw+';'+dnm; } return str; }\r\n";

NS4DocStr += "function tryConvertToGregorean(day, month, year, era)\r\n";
NS4DocStr += "{ var str = null; str = CalOCX.jsConvertToGregorean(Number(day), Number(month), Number(year), String(era));\r\n";
NS4DocStr += "	if(str == null) { d = new Date(year, month, day); str = ''+day+';'+month+';'+year; } return str; }\r\n";

NS4DocStr += "function tryGetDaysNoInMonth(month, year, era, ocx)\r\n";
NS4DocStr += "{ var m = null; m = ocx.jsGetDaysNoInMonth(month, year, era);\r\n";
NS4DocStr += "	if(m==null) { DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; m = DOMonth[month];\r\n";
NS4DocStr += "	if((year%4)==0 && month==1) m++; } return m; }\r\n";


return NS4DocStr;
}
NS4Window=null;
function checkModal()
{
	if(!NS4Window.closed) 
	{
		for(i=0;i<document.elements.length;i++)
			document.elements(i).enabled=false;
		NS4Window.focus();
	}
	else
	{
		for(i=0;i<document.elements.length;i++)
			document.elements(i).enabled=true;
	}
}
function openNewWin()
{
	windowStyle = "toolbar=no,menubar=no,directories=no";
	windowStyle += ",location=no,width=400,height=200";
	windowStyle += ",status=no,titlebar=no";
	windowStyle += ",resizable=no,dependent=no";
	


	
	dateText="forms["+this.formIndex+"]."+this.LocaleDateReturn.name;
	ArgStr="window.opener.document.forms["+this.formIndex+"]."+arguments[0][1].name+"";
	for(i=2;i<5;i++)
	{
		ArgStr +=",window.opener.document.forms["+this.formIndex+"]."+arguments[0][i].name+"";
	}
	if(this.CalOCX)
	{
		//alert(CalOCX);
		ArgStr +=",window.opener.document.embeds[0]";
	}
	else
	{
		ArgStr +=",null";
	}
	NS4Window = window.open("", "Calendar"+this.LocaleDateReturn.name, windowStyle);
	NS4Window.document.writeln("<html><head><script>"+composeWindowHtml(dateText));
	NS4Window.document.writeln("<\/script><title>Emms-Calendar<\/title><\/head>");
	
	NS4Window.document.write("<body  >\r\n");


	NS4Doc  = "<ilayer id=\"CalLayer\" height='200px' width='400px'><DIV id=ClientCalDiv style=\"position:absolute;width:0;height:0;\"><\/DIV><\/ilayer>";
	NS4Doc += "<form><TR valign=top><TD><INPUT type=text name='locale_datebox' size=30 >";
	NS4Doc += "<\/TD>";
	NS4Doc += "<TD><INPUT type=hidden  name=\"daybox\"><INPUT type=hidden   name=\"monthbox\"><INPUT type=hidden   name=\"yearbox\"></TD>";

	NS4Doc += "<TD><INPUT  id=b1 name=b1 type=\"button\" value=\"Press to view calendar\" onclick=\"javascript:show_calendar(document.layers['CalLayer'].document.layers[0],"+ArgStr+",'"+this.type+"');\">";

	NS4Doc += "<\/TD><\/TR>";
	NS4Doc += "<\/table><\/form>";
	NS4Doc += "<script>document.forms[0].b1.click();";
	NS4Doc += "<\/script>\r\n";

	NS4Window.document.write(NS4Doc);
	
	
	NS4Window.document.write("\r\n<\/body><\/html>");


}
