var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var days = new Array("S", "M", "T", "W", "T", "F", "S");

today = new getToday();	
var element_id;

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() ; // Returned year XXXX
	this.month = this.now.getMonth();
	this.day = this.now.getDate();
}

 
function newCalendar(tblId,todayDay,selMonth,selYear) 
{     

    //alert(tblId + "," + todayDay + "," + selMonth + "," + selYear);    
    var parseYear = parseInt(document.getElementById(selYear) [document.getElementById(selYear).selectedIndex].text);
    
	var newCal = new Date(parseYear , document.getElementById(selMonth).selectedIndex, 1);
	var day = -1;
	var startDay = newCal.getDay();
	var daily = 0; 
    
	today = new getToday(); // 1st call
	if ((today.year == newCal.getFullYear() ) &&   (today.month == newCal.getMonth()))
	   day = today.day;
	// Cache the calendar table's tBody section, dayList.	
	//alert(document.getElementsByTagName("Table")[1]);
	var tableCal = document.getElementById(tblId).tBodies[1];    
	
	//alert(tblId + "," + todayDay + "," + selMonth + "," + selYear);  
	var intDaysInMonth =
	   getDays(newCal.getMonth(), newCal.getFullYear() );
    
	for (var intWeek = 0; intWeek < tableCal.rows.length;  intWeek++)	
		   for (var intDay = 0;
			 intDay < tableCal.rows[intWeek].cells.length;
			 intDay++)
	 {
		  var cell = tableCal.rows[intWeek].cells[intDay];

		  // Start counting days.
		  if ((intDay == startDay) && (0 == daily))
			 daily = 1;

		  // Highlight the current day.
		  cell.style.color = (day == daily) ? "red" : "";
		  if(day == daily)
		  {		    
				document.getElementById(todayDay).innerHTML= "Today: " +  day + "/" + 
					(newCal.getMonth()+1) + "/" + newCal.getFullYear() ;
		  }
		  // Output the day number into the cell.
		  if ((daily > 0) && (daily <= intDaysInMonth))
		  {		    
			 cell.innerHTML = daily++;			 
	       }
		  else
			 cell.innerHTML = "";
	   }
//showSelects();
}
	  
	 function getTodayDay(tblId)
	 {
			    //document.all[element_id].value = today.day + "/" + (today.month+1) + 
				//	"/" + today.year; 
			    document.getElementById(element_id).value = (today.month+1) + "/" + today.day  +
				"/" + today.year; 
		        //document.all.calendar.style.visibility="hidden";
				document.getElementById(tblId).style.display="none";
				document.getElementById("year").selectedIndex =100;   
	            document.getElementById("month").selectedIndex = today.month; 
	 }
 
        function getDate(e,strPg,tblId,month,year) 
		 {
            // This code executes when the user clicks on a day
            // in the calendar.  
            //alert(strPg);                      
            if(navigator.appName == "Microsoft Internet Explorer")
		    {
		       	if ("TD" == event.srcElement.tagName)
				{
			       // Test whether day is valid.
		           if ("" != event.srcElement.innerText)
				   { 
				     var mn = document.getElementById(month).selectedIndex+1;
		    		 var Year = document.getElementById(year) [document.getElementById(year).selectedIndex].text;
					 document.all[element_id].value=mn +"/"+event.srcElement.innerText+"/"+Year;					 
					 //for financial profile
					 if(strPg == "FinancialProfile")
					    document.all[element_id].onchange();
		        	 //document.all.calendar.style.visibility="hidden";		
		        	 document.getElementById(tblId).style.display = "none";         					 
			       }
	             }	   
	            var ua = window.navigator.userAgent
	            var msie = ua.indexOf ( "MSIE 6.0" )
                if(msie > 0)
                {
                    showSelects();    
                }
		    }	
		    else
		    {		
			        e = e.target;
		            if("TD" == e.tagName)
		            if ("" != e.innerHTML)
			        { 
				         var mn = document.getElementById(month).selectedIndex+1;
    			         var Year = document.getElementById(year) [document.getElementById(year).selectedIndex].text;    			         
				         document.getElementById(element_id).value=mn+"/"+e.innerHTML +"/"  +Year;
		                 //document.all.calendar.style.visibility="hidden";
				         document.getElementById(tblId).style.display="none";
			        }
		    }	
		    
		    //__doPostBack('<%=txtEndby.ClientID%>','');
		    //document.forms[0].submit();
		    //document.getElementById(element_id).focus();
		    //document.getElementById(element_id).fireEvent("onchange");
		  
		        element = document.getElementById(element_id);
		        if (document.createEvent) 
                {     
	                var onchangeEvent = document.createEvent('HTMLEvents');     	
	                onchangeEvent.initEvent('change', true, false);     	
	                this.element.dispatchEvent(onchangeEvent); 
	            }  
                else if(document.createEventObject) 
                {     
	                this.element.fireEvent('onchange'); 
                } 
             
        }
        
            
          
 
function GetBodyOffsetX(el_name, shift)
{
	var x;
	var y;
	x = 0;
	y = 0;

	var elem = document.getElementById(el_name);	
	do 
	{
		x += elem.offsetLeft;
		y += elem.offsetTop;
		if (elem.tagName == "BODY")
			break;
		elem = elem.offsetParent; 
	} while  (1 > 0);

	shift[0] = x;
	shift[1] = y;
	return  x;
}	

function SetCalendarOnElement(el_name,tblId)
{
	if (el_name=="") 
	el_name = element_id;
	var shift = new Array(2);
	GetBodyOffsetX(el_name, shift);
	document.getElementById(tblId).style.pixelLeft  = shift[0]; //  - document.all.calendar.offsetLeft;
	document.getElementById(tblId).style.pixelTop = shift[1] + 25 ;
}
	  
 	  
	           
function ShowCalendar(elem_name,tblId,todayDay,selMonth,selYear)
{
		if (elem_name=="")
		elem_name = element_id;

		element_id	= elem_name; // element_id is global variable	
		//alert(elem_name + "," + tblId + "," + todayDay + "," + selMonth + "," + selYear);		
		newCalendar(tblId,todayDay,selMonth,selYear);
		SetCalendarOnElement(element_id,tblId);
		//document.all.calendar.style.visibility = "visible";
		document.getElementById(tblId).style.display="inline";
}

function HideCalendar(tblId)
{
	//document.all.calendar.style.visibility="hidden";
	document.getElementById(tblId).style.display="none";
	showSelects();
}

function ClearField(elem_name,tblId)
{      
    var elem = document.getElementById(elem_name);
    elem.value = "";    
    document.getElementById(tblId).style.display="none";
}

function toggleCalendar(elem_name,tblId,todayDay,selMonth,selYear)
{
	//if (document.all.calendar.style.visibility == "hidden")	
	//alert(document.all.calendar.style);		
	//alert(elem_name + "," + tblId + "," + todayDay + "," + selMonth + "," + selYear);
	
	if(document.getElementById(tblId).style.display=="none")	
		ShowCalendar(elem_name,tblId,todayDay,selMonth,selYear);	
	else 
		HideCalendar(tblId);
}


