

/*
 * 2004 inxire GmbH
 * ====================================================================
 * Version: $Id: date-picker.jsp,v 1.2.8.4 2005/10/14 18:25:31 tschnell Exp $
 *
 * Implementation of Calendar Popup
 *
 * Original:  Kedar R. Bhave (softricks@hotmail.com)
 * Web Site:  http://www.softricks.com -->
 *
 * See also:  http://javascript.internet.com  for many other examples
 *
 * Adapted to iO framework by HMK to support localization and CSS stylesheet.
 *
 * Usage: show_calendar(<form>, <item>, <month>, <year>, <format>, <language>, <submit>)
 *        (see method documentation for further details)
 *         
 * Localization:
 *       currently only German (de) and English (en) are supported,
 *       look for 'localization' in comments to extend.
 *
 * Have Fun, HMK
 */






var weekend = [0,6];
var weekendStyle  = "background-color: #e0e0e0";
var disabledStyle = "color: gray";
var todayStyle    = "color: red; font-weight: bold";

var gNow = new Date();
// reference to popup window
// var ggWinCal;
var datePickerWindow;

isNav = (navigator.appName.indexOf("Netscape") != -1) ? true : false;
isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;

/* Localization: German (de) and English (en) */
Calendar.months_en = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];
Calendar.months_de = ["Januar", "Februar", "März", "April", "Mai", "Juni",
"Juli", "August", "September", "Oktober", "November", "Dezember"];

Calendar.shortMonths_en = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
Calendar.shortMonths_de = ["Jan", "Feb", "Mrz", "Apr", "Mai", "Jun",
"Jul", "Aug", "Sep", "Okt", "Nov", "Dez"];

Calendar.weekDays_en = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
Calendar.weekDays_de = ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"];

/* localization ends here */


// Non-Leap year Month days..
Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// Leap year Month days..
Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];


/*
 * Constructor for Calendar object
 * *** IOC start ***
 * @param p_form   name of form element
 * @param p_lang   ISO 639 language code
 * @param p_submit either 'true', to submit the form on select, or a form method
 *                  (as string, must NOT contain double quotes (!)), optional
 * *** IOC end ***
 */
function Calendar(p_form, p_item, p_WinCal, p_month, p_year, p_format, p_lang, p_submit) 
{
	if ((p_month == null) && (p_year == null))	return;

/* now mandatory !!
	if (p_WinCal == null)
		this.gWinCal = ggWinCal;
	else
*/
  this.gWinCal = p_WinCal;

  // *** IOC localization start ***
  if (p_lang == 'de') {
    this.gMonthNames      = Calendar.months_de;
    this.gMonthShortNames = Calendar.shortMonths_de;
    this.gWeekDays        = Calendar.weekDays_de;
  } else {
    this.gMonthNames      = Calendar.months_en;
    this.gMonthShortNames = Calendar.shortMonths_en;
    this.gWeekDays        = Calendar.weekDays_en;
  }
  // *** IOC end ***

	if (p_month == null) {
		this.gMonthName = null;
		this.gMonth = null;
		this.gYearly = true;
	} else {
		this.gMonthName = this.gMonthNames[p_month];  // *** IOC ***
		this.gMonth = new Number(p_month);
		this.gYearly = false;
	}

  this.gYear        = p_year;
  this.gFormat      = p_format;
  this.gLang        = p_lang;    // *** IOC ***
  this.gReturnForm  = p_form;
  this.gReturnItem  = p_item;
  this.gSubmit      = p_submit;  // *** IOC ***
}

// Calendar.get_month = Calendar_get_month;   *** IOC deprecated ***
Calendar.get_daysofmonth = Calendar_get_daysofmonth;
Calendar.calc_month_year = Calendar_calc_month_year;
Calendar.print = Calendar_print;


/* *** IOC deprecated ***
function Calendar_get_month(monthNo) {
	return Calendar.Months[monthNo];
}
*/


function Calendar_get_daysofmonth(monthNo, p_year) {
	/* 
	Check for leap year ..
	1.Years evenly divisible by four are normally leap years, except for... 
	2.Years also evenly divisible by 100 are not leap years, except for... 
	3.Years also evenly divisible by 400 are leap years. 
	*/
	if ((p_year % 4) == 0) {
		if ((p_year % 100) == 0 && (p_year % 400) != 0)
			return Calendar.DOMonth[monthNo];
	
		return Calendar.lDOMonth[monthNo];
	} else
		return Calendar.DOMonth[monthNo];
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {
	/* 
	Will return an 1-D array with 1st element being the calculated month 
	and second being the calculated year 
	after applying the month increment/decrement as specified by 'incr' parameter.
	'incr' will normally have 1/-1 to navigate thru the months.
	*/
	var ret_arr = new Array();
	
	if (incr == -1) {
		// B A C K W A R D
		if (p_Month == 0) {
			ret_arr[0] = 11;
			ret_arr[1] = parseInt(p_Year) - 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) - 1;
			ret_arr[1] = parseInt(p_Year);
		}
	} else if (incr == 1) {
		// F O R W A R D
		if (p_Month == 11) {
			ret_arr[0] = 0;
			ret_arr[1] = parseInt(p_Year) + 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) + 1;
			ret_arr[1] = parseInt(p_Year);
		}
	}
	
	return ret_arr;
}

function Calendar_print() {
	datePickerWindow.print();
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {
	/* 
	Will return an 1-D array with 1st element being the calculated month 
	and second being the calculated year 
	after applying the month increment/decrement as specified by 'incr' parameter.
	'incr' will normally have 1/-1 to navigate thru the months.
	*/
	var ret_arr = new Array();
	
	if (incr == -1) {
		// B A C K W A R D
		if (p_Month == 0) {
			ret_arr[0] = 11;
			ret_arr[1] = parseInt(p_Year) - 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) - 1;
			ret_arr[1] = parseInt(p_Year);
		}
	} else if (incr == 1) {
		// F O R W A R D
		if (p_Month == 11) {
			ret_arr[0] = 0;
			ret_arr[1] = parseInt(p_Year) + 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) + 1;
			ret_arr[1] = parseInt(p_Year);
		}
	}
	
	return ret_arr;
}

// This is for compatibility with Navigator 3, we have to create and discard one object before the prototype object exists.
new Calendar();

Calendar.prototype.getMonthlyCalendarCode = function() {
	var vCode = "";
	var vHeader_Code = "";
	var vData_Code = "";
	
	// Begin Table Drawing code here..
	vCode = vCode + "<TABLE width='100%' class='objectList'>";
	
	vHeader_Code = this.cal_header();
	vData_Code = this.cal_data();
	vCode = vCode + vHeader_Code + vData_Code;
	
	vCode = vCode + "</TABLE>";
	
	return vCode;
}

Calendar.prototype.show = function() {
	var vCode = "";
	
	this.gWinCal.document.open();

	// Setup the page...
	this.wwrite("<html>");
  // *** IOC start ***
	this.wwrite("<head><title>Kalender</title>");
	this.wwrite("<link rel='stylesheet' type='text/css' href='/adp/style/main.css'>");
	this.wwrite("<script type='text/javascript'>");
	this.wwrite("<\!--");
	this.wwrite("function submit(newValue) {");
	this.wwrite("  var form = window.opener.document." + this.gReturnForm + ";");
	this.wwrite("  window.opener.getFormElementByName(form, '" + this.gReturnItem + "').value = newValue;");
	if (this.gSubmit == 'true') {
    this.wwrite("  form.submit();");
    this.wwrite("  window.close();");
	} 
  else if (this.gSubmit) {
    this.wwrite("  form." + this.gSubmit + ";");
  }
  else {
    this.wwrite("  window.close();");
  }
	this.wwrite("}" );
	this.wwrite("//--\>");
	this.wwrite("</script>");
  // *** IOC end ***
	this.wwrite("</head>");

	this.wwrite("<body>");
	this.wwriteA("<h4 >" + this.gMonthName + " " + this.gYear + "</h4>");

	// Show navigation buttons
	var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1);
	var prevMM = prevMMYYYY[0];
	var prevYYYY = prevMMYYYY[1];

	var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1);
	var nextMM = nextMMYYYY[0];
	var nextYYYY = nextMMYYYY[1];
	
	this.wwrite("<TABLE WIDTH='100%' class='objectList'><TR><TH ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
                "'" + this.gReturnForm +     // *** IOC ***
		"', '" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1) + "', '" + this.gFormat +
                "', '" + this.gLang + "', '" + this.gSubmit.replace(/'/g, "\\'") +     // *** IOC ***
		"');" +
		"\">&lt;&lt;<\/A>]</TH><TH ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
                "'" + this.gReturnForm +    // *** IOC ***
		"', '" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat +
                "', '" + this.gLang + "', '" + this.gSubmit.replace(/'/g, "\\'") +       // *** IOC ***
		"');" +
		"\">&lt;<\/A>]</TH><TH width='20%'>");
	// this.wwrite("[<A HREF=\"javascript:window.print();\">Print</A>]</TD><TD ALIGN=center>");
	this.wwrite("&nbsp;</TH><TH ALIGN=center>");  // *** IOC ***
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
                "'" + this.gReturnForm +    // *** IOC ***
		"', '" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat +
                "', '" + this.gLang + "', '" + this.gSubmit.replace(/'/g, "\\'") +       // *** IOC ***
		"');" +
		"\">&gt;<\/A>]</TH><TH ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
                "'" + this.gReturnForm +    // *** IOC ***
		"', '" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1) + "', '" + this.gFormat +
                "', '" + this.gLang + "', '" + this.gSubmit.replace(/'/g, "\\'") +       // *** IOC ***
		"');" +
		"\">&gt;&gt;<\/A>]</TH></TR></TABLE><BR>");

	// Get the complete calendar code for the month..
	vCode = this.getMonthlyCalendarCode();
	this.wwrite(vCode);

	this.wwrite("</body></html>");
	this.gWinCal.document.close();
}

/*
 * Warning: this method may not work with iO framework !
 */
Calendar.prototype.showY = function() {
	var vCode = "";
	var i;
	var vr, vc, vx, vy;		// Row, Column, X-coord, Y-coord
	var vxf = 285;			// X-Factor
	var vyf = 200;			// Y-Factor
	var vxm = 10;			// X-margin
	var vym;				// Y-margin
	if (isIE)	vym = 75;
	else if (isNav)	vym = 25;
	
	this.gWinCal.document.open();

	this.wwrite("<html>");
  // *** IOC start ***
	this.wwrite("<head><title>Kalender</title>");
	this.wwrite("<link rel='stylesheet' type='text/css' href='/adp/style/main.css'>");
	this.wwrite("<script type='text/javascript'>");
	this.wwrite("<\!--");
	this.wwrite("function submit(newValue) {");
	this.wwrite("  var form = window.opener.document." + this.gReturnForm + ";");
	this.wwrite("  window.opener.getFormElementByName(form, '" + this.gReturnItem + "').value = newValue;");
	if (this.gSubmit == 'true') {
    this.wwrite("  form.submit();");
    this.wwrite("  window.close();");
	} 
  else if (this.gSubmit) {
    this.wwrite("  form." + this.gSubmit + ";");
  }
  else {
    this.wwrite("  window.close();");
  }
	this.wwrite("}" );
	this.wwrite("//--\>");
	this.wwrite("</script>");
  // *** IOC end ***
	this.wwrite("<style type='text/css'>\n<!--");
	for (i=0; i<12; i++) {
		vc = i % 3;
		if (i>=0 && i<= 2)	vr = 0;
		if (i>=3 && i<= 5)	vr = 1;
		if (i>=6 && i<= 8)	vr = 2;
		if (i>=9 && i<= 11)	vr = 3;
		
		vx = parseInt(vxf * vc) + vxm;
		vy = parseInt(vyf * vr) + vym;

		this.wwrite(".lclass" + i + " {position:absolute;top:" + vy + ";left:" + vx + ";}");
	}
	this.wwrite("-->\n</style>");
	this.wwrite("</head>");

	this.wwrite("<body>");
	this.wwrite("Jahr : " + this.gYear);
	this.wwrite("<BR>");

	// Show navigation buttons
	var prevYYYY = parseInt(this.gYear) - 1;
	var nextYYYY = parseInt(this.gYear) + 1;
	
	this.wwrite("<TABLE WIDTH='100%' class='objectList'><TR><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
                "'" + this.gReturnForm +    // *** IOC ***
	        "', '" + this.gReturnItem + "', null, '" + prevYYYY + "', '" + this.gFormat +
                "', '" + this.gLang + "', '" + this.gSubmit.replace(/'/g, "\\'") +       // *** IOC ***
		"');" +
		"\" alt='Prev Year'><<<\/A>]</TD><TD width='20%'>");
	// this.wwrite("[<A HREF=\"javascript:window.print();\">Print</A>]</TD><TD ALIGN=center>");
	this.wwrite("&nbsp;</TD><TD ALIGN=center>");  // *** IOC ***
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
                "'" + this.gReturnForm +    // *** IOC ***
		"', '" + this.gReturnItem + "', null, '" + nextYYYY + "', '" + this.gFormat +
                "', '" + this.gLang + "', '" + this.gSubmit.replace(/'/g, "\\'") +       // *** IOC ***
		"');" +
		"\">>><\/A>]</TD></TR></TABLE><BR>");

	// Get the complete calendar code for each month..
	var j;
	for (i=11; i>=0; i--) {
		if (isIE)
			this.wwrite("<DIV ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");
		else if (isNav)
			this.wwrite("<LAYER ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");

		this.gMonth = i;
		// this.gMonthName = Calendar.get_month(this.gMonth);
		this.gMonthName = this.gMonthNames[this.gMonth];  // *** IOC ***
		vCode = this.getMonthlyCalendarCode();
		this.wwrite(this.gMonthName + "/" + this.gYear + "<BR>");
		this.wwrite(vCode);

		if (isIE)
			this.wwrite("</DIV>");
		else if (isNav)
			this.wwrite("</LAYER>");
	}

	this.wwrite("<BR></body></html>");
	this.gWinCal.document.close();
}

Calendar.prototype.wwrite = function(wtext) {
	this.gWinCal.document.writeln(wtext);
}

Calendar.prototype.wwriteA = function(wtext) {
	this.gWinCal.document.write(wtext);
}

Calendar.prototype.cal_header = function() {
	var vCode = "";
	
	vCode = vCode + "<TR>";
        vCode = vCode + "<TH WIDTH='14%'>" + this.gWeekDays[0] +"</TH>";  // Son
        vCode = vCode + "<TH WIDTH='14%'>" + this.gWeekDays[1] +"</TH>";  // Mon
        vCode = vCode + "<TH WIDTH='14%'>" + this.gWeekDays[2] +"</TH>";  // Tue
        vCode = vCode + "<TH WIDTH='14%'>" + this.gWeekDays[3] +"</TH>";  // Wed
        vCode = vCode + "<TH WIDTH='14%'>" + this.gWeekDays[4] +"</TH>";  // Thu
        vCode = vCode + "<TH WIDTH='14%'>" + this.gWeekDays[5] +"</TH>";  // Fri
        vCode = vCode + "<TH WIDTH='16%'>" + this.gWeekDays[6] +"</TH>";  // Sat
	vCode = vCode + "</TR>";
	
	return vCode;
}

Calendar.prototype.cal_data = function() {
	var vDate = new Date();
	vDate.setDate(1);
	vDate.setMonth(this.gMonth);
	vDate.setFullYear(this.gYear);

	var vFirstDay=vDate.getDay();
	var vDay=1;
	var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear);
	var vOnLastDay=0;
	var vCode = "";

	/*
	Get day for the 1st of the requested month/year..
	Place as many blank cells before the 1st day of the month as necessary. 
	*/

	vCode = vCode + "<TR>";
	for (i=0; i<vFirstDay; i++) {
		vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(i) + ">&nbsp;</TD>";
	}

	// Write rest of the 1st week
	for (j=vFirstDay; j<7; j++) {
		vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + ">" + 
			"<A HREF=\"javascript:submit('" + this.format_data(vDay) + "');\">" + 
				this.format_day(vDay) + 
			"</A>" + 
			"</TD>";
		vDay=vDay + 1;
	}
	vCode = vCode + "</TR>";

	// Write the rest of the weeks
	for (k=2; k<7; k++) {
		vCode = vCode + "<TR>";

		for (j=0; j<7; j++) {
			vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + ">" + 
				"<A HREF=\"javascript:submit('" + this.format_data(vDay) + "');\">" + 
				this.format_day(vDay) + 
				"</A>" + 
				"</TD>";
			vDay=vDay + 1;

			if (vDay > vLastDay) {
				vOnLastDay = 1;
				break;
			}
		}

		if (j == 6)
			vCode = vCode + "</TR>";
		if (vOnLastDay == 1)
			break;
	}
	
	// Fill up the rest of last week with proper blanks, so that we get proper square blocks
	for (m=1; m<(7-j); m++) {
		if (this.gYearly)
			vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) + 
			"></TD>";
		else
			vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) + 
			"><span style='" + disabledStyle + "'>" + m + "</span></TD>";
	}
	
	return vCode;
}

Calendar.prototype.format_day = function(vday) {
	var vNowDay = gNow.getDate();
	var vNowMonth = gNow.getMonth();
	var vNowYear = gNow.getFullYear();

	if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear)
		return ("<span style='" + todayStyle + "'>" + vday + "</span>");
	else
		return (vday);
}

/*
 * Write style property, as specified for weekend
 */
Calendar.prototype.write_weekend_string = function(vday) {
	var i;

	// Return special formatting for the weekend day.
	for (i=0; i<weekend.length; i++) {
		if (vday == weekend[i])
			return (" style='" + weekendStyle + "'");
	}
	
	return "";
}

Calendar.prototype.format_data = function(p_day) {
	var vData;
	var vMonth = 1 + this.gMonth;
	vMonth = (vMonth.toString().length < 2) ? "0" + vMonth : vMonth;
	// var vMon = Calendar.get_month(this.gMonth).substr(0,3).toUpperCase();
	// var vFMon = Calendar.get_month(this.gMonth).toUpperCase();
	var vMon  = this.gMonthShortNames[this.gMonth];  // *** IOC *** month short name
	var vFMon = this.gMonthNames[this.gMonth];       // *** IOC *** month full name
	var vY4 = new String(this.gYear);
	var vY2 = new String(this.gYear.substr(2,2));
	var vDD = (p_day.toString().length < 2) ? "0" + p_day : p_day;

	switch (this.gFormat) {
		case "MM\/DD\/YYYY" :
			vData = vMonth + "\/" + vDD + "\/" + vY4;
			break;
		case "MM\/DD\/YY" :
			vData = vMonth + "\/" + vDD + "\/" + vY2;
			break;
		case "MM-DD-YYYY" :
			vData = vMonth + "-" + vDD + "-" + vY4;
			break;
		case "MM-DD-YY" :
			vData = vMonth + "-" + vDD + "-" + vY2;
			break;

		// case "DD\/MON\/YYYY" :   *** IOC ***
		case "DD\/MMM\/YYYY" :
			vData = vDD + "\/" + vMon + "\/" + vY4;
			break;
		// case "DD\/MON\/YY" :   *** IOC ***
		case "DD\/MMM\/YY" :
			vData = vDD + "\/" + vMon + "\/" + vY2;
			break;
		// case "DD-MON-YYYY" :   *** IOC ***
		case "DD-MMM-YYYY" :
			vData = vDD + "-" + vMon + "-" + vY4;
			break;
		// case "DD-MON-YY" :     *** IOC ***
		case "DD-MMM-YY" :
			vData = vDD + "-" + vMon + "-" + vY2;
			break;
		case "DD\.MMM\.YYYY" :
			vData = vDD + "." + vMon + "." + vY4;
			break;
		case "DD\.MMM\.YY" :
			vData = vDD + "." + vMon + "." + vY2;
			break;

		case "DD\/MONTH\/YYYY" :
			vData = vDD + "\/" + vFMon + "\/" + vY4;
			break;
		case "DD\/MONTH\/YY" :
			vData = vDD + "\/" + vFMon + "\/" + vY2;
			break;
		case "DD-MONTH-YYYY" :
			vData = vDD + "-" + vFMon + "-" + vY4;
			break;
		case "DD-MONTH-YY" :
			vData = vDD + "-" + vFMon + "-" + vY2;
			break;

		case "DD\/MM\/YYYY" :
			vData = vDD + "\/" + vMonth + "\/" + vY4;
			break;
		case "DD\/MM\/YY" :
			vData = vDD + "\/" + vMonth + "\/" + vY2;
			break;
		case "DD-MM-YYYY" :
			vData = vDD + "-" + vMonth + "-" + vY4;
			break;
		case "DD-MM-YY" :
			vData = vDD + "-" + vMonth + "-" + vY2;
			break;
		case "DD\.MM\.YYYY" :
			vData = vDD + "." + vMonth + "." + vY4;
			break;
		case "DD\.MM\.YY" :
			vData = vDD + "." + vMonth + "." + vY2;
			break;

		default :
			vData = vMonth + "\/" + vDD + "\/" + vY4;
	}

	return vData;
}

function Build(p_form, p_item, p_month, p_year, p_format, p_lang, p_submit) 
{
	var gCal = new Calendar(p_form, p_item, datePickerWindow, p_month, p_year, p_format, p_lang, p_submit);

	// Choose appropriate show function
	if (gCal.gYearly)	gCal.showY();
	else	gCal.show();
}

/*
 * Main entry point for calendar popup.
 *
 * @param p_form   : name of web form element, e.g. 'searchForm'   *** IOC ***
 * @param p_item   : name of input item element, e.g. 'startDate'  *** IOC ***
 * @param p_month  : 0-11 for Jan-Dec; 12 for All Months.
 * @param p_year   : 4-digit year
 * @param p_format : Date format (mm/dd/yyyy, dd/mm/yy, ...)
 * @param p_lang   : ISO 639 language code   (*** IOC ***)
 * @param p_submit either 'true', to submit the form on select, or a form method
 *                  (as string, must NOT contain single quotes (!)), or undefined    (*** IOC ***)
 */
function show_calendar(p_form, p_item, p_month, p_year, p_format, p_lang, p_submit) 
{
  // Defaults
	if (p_month == null || p_month == '') p_month = new String(gNow.getMonth());
	if (p_year == null || p_year == '')		p_year = new String(gNow.getFullYear().toString());
  
	if (p_format == null)	p_format = "MM/DD/YYYY";
	else p_format = p_format.toUpperCase();
  
  // *** IOC start ***
	if (p_lang == null)	p_lang = "en";
  if (p_submit == null) p_submit = '';
  else if (p_submit == true) p_submit = 'true';
  // *** IOC end ***

	datePickerWindow = window.open("/adp/empty.html", "DatePicker", 
                      "width=310,height=300,status=no,resizable,dependent,top=200,left=200");

	Build(p_form, p_item, p_month, p_year, p_format, p_lang, p_submit);
}


/*
 * Yearly Calendar Code Starts here
 */
function show_yearly_calendar(p_form, p_item, p_year, p_format, p_lang, p_submit) {
	// Load the defaults..
	if (p_year == null || p_year == "")
		p_year = new String(gNow.getFullYear().toString());
	if (p_format == null || p_format == "")
		p_format = "MM/DD/YYYY";

  // *** IOC start ***
	if (p_lang == null)		p_lang = "en";
  if (p_submit == null) p_submit = '';
  else if (p_submit == true) p_submit = 'true';
  // *** IOC end ***

	datePickerWindow = window.open("/adp/empty.html", "DatePicker", "status=no,scrollbars,dependent,resizable");

	Build(p_form, p_item, null, p_year, p_format, p_lang, p_submit);
}
