var globalForm; // parent formname with date field name which is to be populated from calendar
		 javascript:window.history.forward(1);
		 // how reliable is this test?
         isIE = (document.all ? true : false);
		isDOM = (document.getElementById ? true : false);

         // Initialize arrays.
         var months = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
	 "Aug", "Sep", "Oct", "Nov", "Dec");
         var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31,
            30, 31, 30, 31);
	 var displayMonth = new Date().getMonth();
	 var displayYear = new Date().getFullYear();
	 var displayDivName;
	 var displayElement;
var selectedDate;
         function getDays(month, year) {
            // Test for leap year when February is selected.
            if (1 == month)
               return ((0 == year % 4) && (0 != (year % 100))) ||
                  (0 == year % 400) ? 29 : 28;
            else
               return daysInMonth[month];
         }

         function getToday() {
            // Generate today's date.
            this.now = new Date();
            this.year = this.now.getFullYear();
            this.month = this.now.getMonth();
            this.day = this.now.getDate();
         }

         // Start with a calendar for today.
         today = new getToday();

         function newCalendar(eltName,attachedElement) {
		
	    if (attachedElement) {
	       if (displayDivName && displayDivName != eltName) hideElement(displayDivName);
	       displayElement = attachedElement;
		 }
		
	    displayDivName = eltName;
            today = new getToday();

            var parseYear = parseInt(displayYear + '');
			selectedDate = parseYear;
            var newCal = new Date(parseYear,displayMonth,1);
            var day = -1;
            var startDayOfWeek = newCal.getDay();
            if ((today.year == newCal.getFullYear()) &&
                  (today.month == newCal.getMonth()))
	    {
               day = today.day;
            }
            var intDaysInMonth =
               getDays(newCal.getMonth(), newCal.getFullYear());
            var daysGrid = makeDaysGrid(startDayOfWeek,day,intDaysInMonth,newCal,eltName)
	 		if (isIE) {
	       var elt = document.all[eltName];
	       elt.innerHTML = daysGrid;
			} else if (isDOM) {
	       var elt = document.getElementById(eltName);
	       elt.innerHTML = daysGrid;
	    } else {
	       var elt = document.layers[eltName].document;
	       elt.open();
	       elt.write(daysGrid);
	       elt.close();
	    }
				 
	 }

	 function incMonth(delta,eltName) {
	   displayMonth += delta;
	   if (displayMonth >= 12) {
	 //    alert("This is Last Month.");
	 //    displayMonth = 11;
	     displayMonth = 0;
	     incYear2(1,eltName);
	   } else if (displayMonth <= -1) {
	//   alert("This is First Month.");
//		 displayMonth = 0;
displayMonth = 11;
//alert("ok");
	    incYear2(-1,eltName);
	   } else {
	     newCalendar(eltName);
	   }
	 }
function incYear2(delta,eltName) {
	//alert("selectedDate = " + selectedDate);
	//alert(delta + " " + eltName);
	   displayYear = parseInt(selectedDate + '') + delta;
	   newCalendar(eltName);
	 }
	 function incYear(delta,eltName,name) {
	 displayYear = parseInt(name.value + '') + delta;
	  selectedDate = name.value;
	  newCalendar(eltName);
	   
	 }

	 function makeDaysGrid(startDay,day,intDaysInMonth,newCal,eltName) {
	    var daysGrid;
	    var month = newCal.getMonth();
	    var year = newCal.getFullYear();
		var todaysYear = new Date().getFullYear();
		var isThisYear = (year == new Date().getFullYear());
		var todaysDate = new Date().getDate();
		var todaysMonth = months[new Date().getMonth()];

	    var isThisMonth = (day > -1)
	    daysGrid = '<table border=1 bgcolor="#a41c2b" cellspacing=0 cellpadding=2 ><tr ><td bgcolor=#a41c2b nowrap>';
	    daysGrid += '<font face="tahoma" color="white" size=2><b>';
		daysGrid += '<a style=color:white text-decoration:none; href="javascript:hideElement(\'' + eltName + '\')">x</a>';
	    daysGrid += '&nbsp;&nbsp;&nbsp;&nbsp;';
	    daysGrid += '<a style=color:white text-decoration:none; href="javascript:incMonth(-1,\'' + eltName + '\')">&laquo; </a>';

	    daysGrid += '<b>';
	    if (isThisMonth) { daysGrid += '<font color=yellow><b>' + months[month] + '<b></font>'; }
	    else { daysGrid += months[month]; }
	    daysGrid += '</b>';

	    daysGrid += '<a style=color:white text-decoration:none; href="javascript:incMonth(1,\'' + eltName + '\')"> &raquo;</a>';
	    daysGrid += '&nbsp;&nbsp;&nbsp;&nbsp;';
	    
	    daysGrid += '<b>';
/*Modifications  by Amar Pandav starts*/
		var tempYear = todaysYear;
	    if (isThisYear) 
		{
			
			daysGrid += '<font color="yellow"><b>&nbsp;&nbsp;&nbsp;&nbsp;<select name=selectYear onchange="incYear(0,\''+eltName+'\',this)" style="background-color: #e5e5e5; color: black; border-style: none">';
			/*Modifications done for CRRIB20615 by Shriraj Birth year should start from year 1900 25-08-08*/
			for(i=todaysYear-1900;i>=0;i--){
				tempYear=todaysYear - i;
				if(todaysYear==tempYear)
				{
					daysGrid += '<option value='+ tempYear+' selected>' + tempYear+'</option>';
				}else{
				daysGrid += '<option value='+ tempYear+'>' + tempYear+'</option>';
				}
			}
			for(i=1;i<=20;i++){
				tempYear=todaysYear + i;
			if(todaysYear==tempYear)
				{
					daysGrid += '<option value='+ tempYear+' selected>' + tempYear+'</option>';
				}else{
				daysGrid += '<option value='+ tempYear+'>' + tempYear+'</option>';
				}
			}
			
			
			daysGrid +=	'</select></b></font>';
		
		}
	    else
		{
			daysGrid +='&nbsp;&nbsp;&nbsp;&nbsp;<select name=selectYear2 onchange="incYear(0,\''+eltName+'\',this)" style="background-color: #e5e5e5; color: black; border-style: none">';
			/*Modifications done for CRRIB20615 by Shriraj Birth year should start from year 1900 25-08-08*/
			for(i=todaysYear-1900;i>=0;i--){
				tempYear=todaysYear - i;
				if(selectedDate==tempYear)
				{
					daysGrid += '<option value='+ tempYear+' selected>' + tempYear+'</option>';
				}else{
				daysGrid += '<option value='+ tempYear+'>' + tempYear+'</option>';
				}
			}
			for(i=1;i<=20;i++){
				tempYear=todaysYear + i;
			if(selectedDate==tempYear)
				{
					daysGrid += '<option value='+ tempYear+' selected>' + tempYear+'</option>';
				}else{
				daysGrid += '<option value='+ tempYear+'>' + tempYear+'</option>';
				}
			}
			daysGrid +=	'</select>';
			
		}
	    daysGrid += '</b>';


	    daysGrid += '</td></tr><tr><td><font face="tahoma" size=1 ><table  bgcolor="#a41c2b" cellspacing=0 cellpadding=1 width="100%"><tr  bgcolor="#e5e5e5" style="font-name:tahoma;font-size:12;color:#a41c2b;font-weight:bold;"><td width=2%>Sun</td><td>Mon</td><td>Tue</td><td>Wed</td><td>Thu</td><td>&nbsp;Fri&nbsp;</td><td>Sat</td></tr>';
		var row=1;
	    var dayOfMonthOfFirstSunday = (7 - startDay + 1);
	    for (var intWeek = 0; intWeek < 6; intWeek++) {
	       var dayOfMonth;
		   daysGrid+='<tr  bgcolor="#e5e5e5">';
	       for (var intDay = 0; intDay < 7; intDay++) {
	         dayOfMonth = (intWeek * 7) + intDay + dayOfMonthOfFirstSunday - 7;
		 if (dayOfMonth <= 0) {
	           daysGrid += "<td></td>";
		 } else if (dayOfMonth <= intDaysInMonth) {
		   var color = "blue";
		   if (day > 0 && day == dayOfMonth) 
			   color="red";
			else
				color="black";
		   daysGrid += '<td align=center><a href="javascript:setDay(';
		   daysGrid += dayOfMonth + ',\'' + eltName + '\')" '
		   daysGrid += 'style="font-size:12;text-decoration:none;color:' + color + '">';
		   var dayString = dayOfMonth + "</td></a> ";
		   if (dayString.length == 6) dayString = '0' + dayString;
		   daysGrid += dayString;
		 }else if (dayOfMonth >= 0) {
					var cell =6-intDay;
					if(cell==6)
					row++;	
					if(row==1)
		           daysGrid += "<td></td>";
		 }
	       }
	       if (dayOfMonth < intDaysInMonth) daysGrid += "</tr>";
	    }
	    return daysGrid + "<tr><td colspan=7 align=center><font  face=Arial color=white size=2>Today is:"+todaysDate+"."+todaysMonth+"."+todaysYear+"</td></tr></table></td></tr></table></font>";
	 }

	 function setDay(day,eltName) {
		 
		 if(day<10){
			 day="0"+day;
			 
		 }
		 var prefix;
		 if((displayMonth+1)<10)
			 prefix="0";
		else
			 prefix="";
		/*
	   valueAssign = "window.opener.document." + globalForm + ".value = '" + day + "/" +prefix+(displayMonth+1)  + "/" + displayYear+"'";
	   eval(valueAssign);
*/

	   displayElement.value = day + "/" +prefix+(displayMonth+1)  + "/" + displayYear;
	   hideElement(eltName);

	   hideElement(eltName);
	   //	   window.close();
	 }
	 
	 function fixPosition(divname)
{
	divstyle = getDivStyle(divname);
	positionerImgName = divname + 'Pos';
	isPlacedUnder = false;
	if (isPlacedUnder)
	{
		setPosition(divstyle,positionerImgName,true);
	}
	else
	{
		setPosition(divstyle,positionerImgName)
	}
}

function toggleDatePicker(eltName,formElt)
{
	var x = formElt.indexOf('.');
	var formName = formElt.substring(0,x);
	var formEltName = formElt.substring(x+1);
	
	newCalendar(eltName,document.forms[formName].elements[formEltName]);
	toggleVisible(eltName);
}

// fixPositions() puts everything back in the right place after a resize.
function fixPositions()
{
	// add a fixPosition call here for every element
	// you think might get stranded in a resize/reflow.
	fixPosition('daysOfMonth1');
	//fixPosition('daysOfMonth2');
}

	function fixPosition(divname)
{
	divstyle = getDivStyle(divname);
	positionerImgName = divname + 'Pos';
	isPlacedUnder = false;
	if (isPlacedUnder)
	{
		setPosition(divstyle,positionerImgName,true);
	}
	else
	{
		setPosition(divstyle,positionerImgName)
	}
}

function toggleDatePicker(eltName,formElt,parentForm)
{
	globalForm = parentForm;
	var x = formElt.indexOf('.');

	var formName = formElt.substring(0,x);

	var formEltName = formElt.substring(x+1);

	newCalendar(eltName, document.forms[formName].elements[formEltName]);

	toggleVisible(eltName);
	
}	 



/*  New Page tjmlib.js copied here by amar Pandav.*/



// overly simplistic test for IE
isIE = (document.all ? true : false);
// both IE5 and NS6 are DOM-compliant
isDOM = (document.getElementById ? true : false);

// get the true offset of anything on NS4, IE4/5 & NS6, even if it's in a table!
function getAbsX(elt) { return (elt.x) ? elt.x : getAbsPos(elt,"Left"); }
function getAbsY(elt) { return (elt.y) ? elt.y : getAbsPos(elt,"Top"); }
function getAbsPos(elt,which) {
 iPos = 0;
 while (elt != null) {
  iPos += elt["offset" + which];
  elt = elt.offsetParent;
 }
 return iPos;
}

function getDivStyle(divname) {
 var style;
 if (isDOM) { style = document.getElementById(divname).style; }
 else { style = isIE ? document.all[divname].style
                     : document.layers[divname]; } // NS4
 return style;
}

function hideElement(divname) {
 getDivStyle(divname).visibility = 'hidden';
// window.close();
}

// annoying detail: IE and NS6 store elt.top and elt.left as strings.
function moveBy(elt,deltaX,deltaY) {
 elt.left = parseInt(elt.left) + deltaX;
 elt.top = parseInt(elt.top) + deltaY;
}

function toggleVisible(divname) {
	
 divstyle = getDivStyle(divname);
 if (divstyle.visibility == 'visible' || divstyle.visibility == 'show') {
	 
   divstyle.visibility = 'hidden';
 } else {
		
   fixPosition(divname);
   divstyle.visibility = 'visible';
 }
}

function setPosition(elt,positionername,isPlacedUnder) {
 var positioner;
 
 if (isIE) {
  positioner = document.all[positionername];

 } else {
  if (isDOM) {
    positioner = document.getElementById(positionername);
  } else {
    // not IE, not DOM (probably NS4)
    // if the positioner is inside a netscape4 layer this will *not* find it.
    // I should write a finder function which will recurse through all layers
    // until it finds the named image...
    positioner = document.images[positionername];
  }
 }
elt.left = getAbsX(positioner);

 elt.top = getAbsY(positioner) + (isPlacedUnder ? positioner.height : 0);
}

