// Code reviewed by Pankaj on 07/22/2003


         // 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 gDivList;
         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 + '');
                                        
            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) {
	     displayMonth = 0;
	     incYear(1,eltName);
	   } else if (displayMonth <= -1) {
	     displayMonth = 11;
	     incYear(-1,eltName);
	   } else {
	     newCalendar(eltName);
	   }
	 }

	 function incYear(delta,eltName) {
	   displayYear = parseInt(displayYear + '') + delta;
	   newCalendar(eltName);
	 }

	 function makeDaysGrid(startDay,day,intDaysInMonth,newCal,eltName) {
	    var daysGrid;
	    var month = newCal.getMonth();
	    var year = newCal.getFullYear();
	    var isThisYear = (year == new Date().getFullYear());
	    var isThisMonth = (day > -1)
	    daysGrid = '<table border=0 bordercolor=#000000 cellspacing=0 cellpadding=2><tr><td bgcolor=white colspan=3 nowrap><table border=2 bordercolor=#3399FF ><tr><td>';
	    daysGrid += '<font face="courier new, courier" size=2>';
//	    daysGrid += '<a href="javascript:hideElement(\'' + eltName + '\')"><font color=#DC143C>x</font></a>';
	    daysGrid += '&nbsp;';
	    daysGrid += '<a href="javascript:incMonth(-1,\'' + eltName + '\')" style="text-decoration:none"><img src="/gifs/left.jpg" width="14" height = "14" border =0></a>';

	    daysGrid += '<b>&nbsp;';
	    if (isThisMonth) { daysGrid += '<font color=#000000 style="FONT-FAMILY: sans-serif; FONT-SIZE: 10pt; FONT-WEIGHT: bold">' + months[month] + '</font>'; }
	    else { daysGrid +='<font color=#000000 style="FONT-FAMILY: sans-serif; FONT-SIZE: 10pt">' + months[month]+ '</font>'; }
	    daysGrid += '</b>&nbsp;';

	    daysGrid += '<a href="javascript:incMonth(1,\'' + eltName + '\')" style="text-decoration:none"><img src="/gifs/right.jpg" width="14" height = "14" border =0></a>&nbsp;';
	    daysGrid += '</td></tr></table></td><td bgcolor=white colspan=3 nowrap><table border=2 bordercolor=#3399FF ><tr><td>';
	    daysGrid += '&nbsp;<a href="javascript:incYear(-1,\'' + eltName + '\')" style="text-decoration:none"><img src="/gifs/left.jpg" width="14" height = "14" border =0></a>&nbsp;';

	    daysGrid += '<b>';
	    if (isThisYear) { daysGrid += '<font color=#000000 style="FONT-FAMILY: sans-serif; FONT-SIZE: 10pt; FONT-WEIGHT: bold">' + year + '</font>'; }
	    else { daysGrid += '<font color=#000000 style="FONT-FAMILY: sans-serif; FONT-SIZE: 10pt">'+year + '</font>'; }
	    daysGrid += '</b>&nbsp;';

	    daysGrid += '<a href="javascript:incYear(1,\'' + eltName + '\')" style="text-decoration:none"><img src="/gifs/right.jpg" width="14" height = "14" border =0></a>';
	    daysGrid += '&nbsp;</td></tr></table></td></td><td bgcolor=#FF6633 colspan=6 align=center nowrap>';
	    daysGrid += '<font face="courier new, courier" size=2>';
		daysGrid += '<a href="javascript:hideElement(\'' + eltName + '\')" style="text-decoration:none"><font size=3 color=#000000>X</font></a>';
	    daysGrid += '</td></tr><tr bgcolor=#3399FF>';
	    daysGrid += '';
	    daysGrid += '<td><font face="courier new, courier" size=2><font color=#555588><b>Su</b></font></td><td ><font face="courier new, courier" size=2><font color=#555588><b> Mo</b></font></td><td ><font face="courier new, courier" size=2><font color=#555588><b> Tu</b></font></td><td ><font face="courier new, courier" size=2><font color=#555588><b> We</b></font></td><td ><font face="courier new, courier" size=2><font color=#555588><b> Th</b></font></td><td ><font face="courier new, courier" size=2><font color=#555588><b> Fr</b></font></td><td ><font face="courier new, courier" size=2><font color=#555588><b>Sa</b></font>';
	    daysGrid += '</td></tr>';
//	    daysGrid += '<font face="courier new, courier" size=2>';
	    var dayOfMonthOfFirstSunday = (7 - startDay + 1);
		for	(var intWeek = 0; intWeek <	6; intWeek++) {
			var dayOfMonth;
				daysGrid +=	'<tr bgcolor=#E2F4FF nowrap>';
			for (var	intDay = 0;	intDay < 7;	intDay++) {

				dayOfMonth	= (intWeek * 7)	+ intDay + dayOfMonthOfFirstSunday - 7;
				if	(dayOfMonth	<= 0) {
//					daysGrid	+= "&nbsp;&nbsp; "+dayOfMonth;
					daysGrid	+= '<td><font face="courier new, courier" size=2>&nbsp;</td>';
				} else	if (dayOfMonth <= intDaysInMonth) {
					daysGrid	+= '<td><font face="courier new, courier" size=2>';
					var color = "blue";
					if (intDay == 0 || intDay ==6) color="red ";
		
					if ( day < dayOfMonth && today.year ==displayYear && today.month <= displayMonth) {
						daysGrid	+= '<a href="javascript:setDay(';
						daysGrid	+= dayOfMonth +	',\'' +	eltName	+ '\')"	'
						daysGrid	+= 'style="color:' + color + '">';
						var dayString = dayOfMonth +	"</a> ";
						if (dayString.length	== 6) dayString	= '0' +	dayString;
						daysGrid	+= dayString;
					} else if (today.year < displayYear && today.month >= displayMonth ){
						daysGrid	+= '<a href="javascript:setDay(';
						daysGrid	+= dayOfMonth +	',\'' +	eltName	+ '\')"	'
						daysGrid	+= 'style="color:' + color + '">';
						var dayString = dayOfMonth +	"</a> ";
						if (dayString.length	== 6) dayString	= '0' +	dayString;
						daysGrid	+= dayString;
					} else if (today.year < displayYear && today.month < displayMonth ){
						var dayString = dayOfMonth ;
						if (dayString.length	== 6) dayString	= '0' +	dayString;
						daysGrid	+= '<font color="' + color + '" >';
						daysGrid	+= dayString;
					}else {

						if (day > 0 && day == dayOfMonth){
							color="Blue";
							daysGrid	+= '<B>' ;
						}
						var dayString = dayOfMonth ;
						if (dayString.length	== 6) dayString	= '0' +	dayString;
						daysGrid	+= '<font color="' + color + '" >';
						daysGrid	+= dayString;
						if ( day == dayOfMonth){
							daysGrid	+= '</B>';
						}
					}
					daysGrid	+= "</td>";
				} else	if (dayOfMonth >= intDaysInMonth && intWeek <	5) {
					daysGrid	+= '<td><font face="courier new, courier" size=2>&nbsp;</td>';
				}
			}
//		   if (dayOfMonth <	intDaysInMonth)	daysGrid +=	"<br>&nbsp;";

		  	daysGrid +=	'</tr>';
		}
//		return daysGrid	+ "</td></tr></table>";
		return daysGrid	+ "</table>";
	 }

	 function setDay(day,eltName) {

	   //The requirement is to show the date in dd/mm/yyyy format
	   //displayElement.value = (displayMonth + 1) + "/" + day + "/" + displayYear;
	   //displayElement.value =  (displayMonth + 1) + "/" + day + "/" + displayYear;
	   displayElement.value =  day + "-" + months[displayMonth] + "-" + displayYear;

		din = document.getElementById("DT").value;
		dout = document.getElementById("outDT").value;
		if (din > "" && dout > "")
		{

		var mydate;
		mydate = din.split("-");
		var mysmonth;
		switch(mydate[1])
		 {
			case "Jan":
				mysmonth = 0;
			    break;
			case "Feb":
				mysmonth = 1;
				break;
			case "Mar":
				mysmonth = 2;
				break;
			case "Apr":
				mysmonth = 3;
				break;
			case "May":
			    mysmonth = 4;
				break;
			case "Jun":
			    mysmonth = 5;
				break;
			case "Jul":
			    mysmonth = 6;
				break;
			case "Aug":
			    mysmonth = 7;
				break;
			case "Sep":
			    mysmonth = 8;
				break;
			case "Oct":
			    mysmonth = 9;
				break;
			case "Nov":
			    mysmonth = 10;
				break;
			case "Dec":
			    mysmonth = 11;
				break;
		 }
		var mysdate = new Date(mydate[2],mysmonth,mydate[0]);

		mydate = dout.split("-");
		var myemonth;
		switch(mydate[1])
		 {
			case "Jan":
				myemonth = 0;
			    break;
			case "Feb":
				myemonth = 1;
				break;
			case "Mar":
				myemonth = 2;
				break;
			case "Apr":
				myemonth = 3;
				break;
			case "May":
			    myemonth = 4;
				break;
			case "Jun":
			    myemonth = 5;
				break;
			case "Jul":
			    myemonth = 6;
				break;
			case "Aug":
			    myemonth = 7;
				break;
			case "Sep":
			    myemonth = 8;
				break;
			case "Oct":
			    myemonth = 9;
				break;
			case "Nov":
			    myemonth = 10;
				break;
			case "Dec":
			    myemonth = 11;
				break;
		 }
		 var myedate = new Date(mydate[2],myemonth,mydate[0]);

		 var one_day=1000*60*60*24


document.getElementById("NN").value=Math.ceil((myedate.getTime()-mysdate.getTime())/(one_day));
		}
	   //Releasing the screen space back
	   //document.all[eltName].innerHTML = '';
	   document.getElementById(eltName).innerHTML = '';  

	   //Below two lines commented by SP and added one line to hide the div in calender
	   //hideElement(eltName);
	   //document.all[eltName].innerText = '';
	 //  document.all[eltName].style.display = 'none';
	   document.getElementById(eltName).style.display = 'none';
	 }
	 
function toggleDatePicker(eltName,formElt,lDivList) {
  var x = formElt.indexOf('.');
  var formName = formElt.substring(0,x);
  var formEltName = formElt.substring(x+1);
  
  document.getElementById(eltName).style.display = '';  
  //document.all[eltName].style.display = '';
  //Modified by Manish Tiwari on 21/04/2003 Since it is a global variable it hides all those divs which are
  // being used in the second field of to date.
  gDivList = '';

  newCalendar(eltName,document.forms[formName].elements[formEltName]);

  //toggleVisible(eltName);
  
  gDivList = lDivList;
  if (lDivList != '') 
  {
		var DivArray = lDivList.split(",");
		for(i=0;i<= DivArray.length-1;i++)
		{
			getDivStyle(DivArray[i]).visibility = 'hidden';
		}
	}
}
function fixPosition(divname) {
 divstyle = getDivStyle(divname);
 positionerImgName = divname + 'Pos';
 // hint: try setting isPlacedUnder to false
 isPlacedUnder = false;
 if (isPlacedUnder) {
  setPosition(divstyle,positionerImgName,true);
 } else {
  setPosition(divstyle,positionerImgName)
 }
}

function SetToDate(to,from)
{
	var ObjTo = eval("document."+to);
	var ObjFrom = eval("document."+from);
	var ObjFrom1 = TrimTheString(ObjFrom.value);
	if (ObjFrom1.length <= 0  ) return 0;
	
	if (IsEmpty(TrimTheString(ObjTo.value )))
	{	
		var CheckDate=IsDate(ObjFrom);
		if (CheckDate == false)
		{
		   return 0;
		}
		else   
		ObjTo.value = ObjFrom.value; 
	}	   	
}
function IsWhitespace ( pszStringtoCheck )
{
	var reWhitespace = /^\s+$/
	return ( IsEmpty ( pszStringtoCheck ) || reWhitespace.test ( pszStringtoCheck ) );
}
function IsEmpty ( pszStringtoCheck ) {
	return ( ( pszStringtoCheck == null ) || ( pszStringtoCheck.length == 0 ) )
}
				
function TrimTheString ( pszStringtoTrim )
{
	var bflag = true;
	var i = 0;
	if ( IsWhitespace ( pszStringtoTrim ) == true )		return "";
	while ( ( i < pszStringtoTrim.length ) && ( bflag ) )
	{
		retChar = pszStringtoTrim.charAt ( i++ );
		if ( retChar != " " ) bflag = false;
	}
	if ( bflag ) return "";
	var j = pszStringtoTrim.length-1;
	bflag = true;
	while ( ( j >= 0 ) && ( bflag ) ) 
	{
		retChar = pszStringtoTrim.charAt ( j-- );
		if ( retChar != " " ) bflag = false;
	}
	if ( bflag ) return "";
	pszStringtoTrim = pszStringtoTrim.substring ( i-1 ,j+2 );
	return pszStringtoTrim;
}

function SetFromDate(from,to)
{
	var ObjFrom = eval("document."+from);
	var ObjTo = eval("document."+to);
	var ObjTo1 = TrimTheString(ObjTo.value);
	if (ObjTo1.length <= 0  ) return 0;
	if (ObjTo1.length > 0 && IsEmpty(TrimTheString(ObjFrom.value )) )
	{
		
		
		var CheckDate=IsDate(ObjTo);
		if (CheckDate == false) 
		{
		    return 0;
		}
		else
		{    
			var ObjDate = new Date(ObjTo.value);
			var YesDate = new Date(addDays(-1,ObjDate));
			var DD= YesDate.getDate();
			var MM=YesDate.getMonth();
			var MM1=eval(MM+1)
			var YY=YesDate.getYear();
			var SetDate=months[MM1]+"/"+DD+"/"+YY
		}
	}	
}
function addDays(intDays,datDate){
	datStart =Date.parse(datDate)
	datEnd = datStart + intDays*(24*60*60*1000)
	datFinal = new Date(datEnd)
	return datFinal
}

function IsDate ( pszFieldObj )
{
	var szTheDate = TrimTheString( eval ( pszFieldObj ).value )
	var reTheRegExp = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
	
	var aMatchArray = szTheDate.match(reTheRegExp); // is the format ok?
	
	if (aMatchArray == null) 
	{
		
		alert("Please enter date as either mm/dd/yyyy.");
		pszFieldObj.focus()
		return false;
	}

	nMonth = aMatchArray[1]; // parse date into variables
	nDay = aMatchArray[3];
	nYear = aMatchArray[5];
	
	if ( nYear < 1900 )
	{
		alert("Year must be greater than 1900.");
		return false;
	}

	if ( nMonth < 1 || nMonth > 12 ) // check month range
	{
		alert("Month must be between 1 and 12.");
		return false;
	}

	if ( nDay < 1 || nDay > 31 ) 
	{
		alert("Day must be between 1 and 31.");
		return false;
	}

	if ( ( nMonth == 4 || nMonth == 6 || nMonth == 9 || nMonth == 11) && nDay == 31 ) 
	{
		alert("Month " + nMonth + " does not have 31 days!")
		return false;
	}

	if ( parseInt ( nMonth ) == 2) // check for february 29th
	{
		var isleap = ( nYear % 4 == 0 && ( nYear % 100 != 0 || nYear % 400 == 0 ) );
		if ( parseInt ( nDay ) > 29 || ( parseInt ( nDay ) == 29 && !isleap ) ) 
		{
			alert("February " + nYear + " doesn't have " + nDay + " days!");
			return false;
		}
	}
	return true; // date is valid
}


