var imagesDir = appendImagePath("other/16x16/");
function buildCal(calId,m, year, cM, cH, cDW, cD,eventDays, brdr,events,counter)
{

	var prevMonth = parseInt(m)-1;
	var newYear1 = year;
	var newYear2 = year;
	if(prevMonth <= 0)
	{
		prevMonth = 12;
		newYear1 = year-1;
	}
	var nextMonth = parseInt(m)+1;
	if(nextMonth > 12)
	{
		nextMonth = 1;
		newYear2 = year+1;


	}
	var prevYear = parseInt(year)-1;
	var nextYear = parseInt(year)+1;
	var arrEvents = new Object();
	
	if(events)
	{
		
		var arData = events.split("~");
		var eventData="";
		var arData1;
		var arData2;
		var date;
		for(var p=0;p<arData.length;p++)
		{
		  date  = arData[p].substring(0,arData[p].indexOf("("));
		  var arr = new Array();
		  if(date.indexOf("-") == -1)
		  {
			  date = getTwoDigitNumber(m)+"-"+getTwoDigitNumber(date)+"-"+year;
			  arr[0] = date;
		  }
		  else
		  {
			  var monddyyyy= date.split("-");
			  if(monddyyyy[1].indexOf("[") == -1)
			  {
				date =getTwoDigitNumber(monddyyyy[0])+"-"+(getTwoDigitNumber(monddyyyy[1])).toLowerCase()+"-"+monddyyyy[2]; 
				arr[0] = date;
			  }
			  else
			  {
				
				var dayData = monddyyyy[1];
				var initStr	= dayData.substring(0,dayData.indexOf("[")) ;
				var content	= dayData.substring(dayData.indexOf("[")+1,dayData.indexOf("]"));
				var arrContent = content.split(",");
				for(var x=0;x<arrContent.length;x++)
				{
					arr[x] = getTwoDigitNumber(monddyyyy[0])+"-"+(initStr+"["+arrContent[x]+"]").toLowerCase()+"-"+monddyyyy[2]; 
					
				}
			  }
						
		  }
		  for(var j=0;j<arr.length;j++)
		  {
			  date = arr[j];
			  eventData = arData[p].substring(arData[p].indexOf("(")+1,arData[p].indexOf(")"))
			 
			  var event="";
			  var time="";
			  var eventAndTime;
			  var allEvents="";
			  arData1 = eventData.split("|");
			  for(var q=0;q<arData1.length;q++)
			  {
				time ="";
				event="";
				eventAndTime = "";
				eventAndTime = arData1[q]; 
				eventAndTime = eventAndTime.replace(/&nbsp;/g," ");
				arData2 = eventAndTime.split(";");
				
				if(arData2.length == 2)
				{
					time = arData2[0];
					event = arData2[1];
				}
				else if(arData2.length == 1)
				{
					event = arData2[0];
					
				}
				

				if(time=="")
				{
					allEvents=allEvents+"<li>"+event+"</li>";
				
				}
				else
				{
					allEvents=allEvents+"<li>"+time+"-"+event+"</li>";
			
				}

			  }	// End of for loop for arData1
			 
			  if(arrEvents[date] == "undefined" || typeof arrEvents[date] == "undefined")
			  {
				arrEvents[date]=allEvents;
			  }
			  else
			  {
				arrEvents[date]=arrEvents[date]+allEvents;
			  }
		  }
	 
		}  // End of for loop for arData

		

	}
	
	arrayOfEvents[counter]= arrEvents;
	
    var mn=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
    var dim=[31,0,31,30,31,30,31,31,30,31,30,31];
    var oD = new Date(year, m-1, 1);
    oD.od=oD.getDay()+1;
    var todaydate=new Date() //DD added
    var scanfortoday=(year==todaydate.getFullYear() && m==todaydate.getMonth()+1)? todaydate.getDate() : 0 //DD added
    
	dim[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;

    var t='<div id="div'+calId+'" class="'+cM+'"><table class="'+cM+'" cols="7" cellpadding="0" border="'+brdr+'" cellspacing="1"><tr align="center">';
    
	t+='<td colspan="7" class="'+cH+'" ondblclick="openCalendar('+'\''+calId+'\''+','+m+','+(year)+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+events+'\''+','+counter+')">'+'&nbsp;&nbsp;&nbsp;&nbsp;'+'<a  onClick="buildNextCal('+'\''+calId+'\''+','+m+','+prevYear+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+'\''+','+counter+')"><img alt="Previous Year" title="Previous Year" name="calbtn1" src="' + imagesDir + 'left8.gif" border="0" width="11" height="11" align="baseline" ></a>'+'&nbsp;&nbsp;&nbsp;&nbsp;'+'<a  onClick="buildNextCal('+'\''+calId+'\''+','+prevMonth+','+(newYear1)+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+'\''+','+counter+')"><img alt="Previous Month" title="Previous Month" name="calbtn1" src="' + imagesDir + 'left4.gif" border="0" width="6" height="11" align="baseline" ></a>'+'&nbsp;&nbsp;'+mn[m-1]+' - '+year+'&nbsp;&nbsp;'+'<a  onClick="buildNextCal('+'\''+calId+'\''+','+nextMonth+','+(newYear2)+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+'\''+','+counter+')"><img alt="Next Month" title="Next Month" name="calbtn1" src="' + imagesDir + 'right4.gif" border="0" width="6" height="11" align="baseline" ></a>'+'&nbsp;&nbsp;&nbsp;&nbsp;'+'<a  onClick="buildNextCal('+'\''+calId+'\''+','+(m)+','+nextYear+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+'\''+','+counter+')"><img alt="Next Year" title="Next Year" name="calbtn1" src="' + imagesDir + 'right8.gif" border="0" width="11" height="11" align="baseline" ></a>'+'&nbsp;&nbsp;&nbsp;&nbsp;<a  onClick="openCalendar('+'\''+calId+'\''+','+m+','+(year)+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+escape(events)+'\''+','+counter+')" alt="Maximize" title="Maximize"><img src="' + imagesDir + 'maximize.png" border="0" align="baseline"  alt="Maximize" title="Maximize"></a></td></tr><tr align="center">';
   	
	var month =mn[m-1];

	for(s=0;s<7;s++)
		t+='<td class="'+cDW+'">'+"SMTWTFS".substr(s,1)+'</td>';
    t+='</tr><tr align="center">';
	
    for(i=1;i<=42;i++)
    {
        var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : '&nbsp;';
		
        var y = x;
		var arrKey = getTwoDigitNumber(m)+"-"+getTwoDigitNumber(y)+"-"+year;
	
		var imgId="";
		var consolidatedEventData = getConsolidatedEventData(arrEvents,getTwoDigitNumber(m),getTwoDigitNumber(y),year);

		if(consolidatedEventData == "")
		{
			if(x == scanfortoday)
			{
				t+='<td class="currday"><img alt="" src=blank.gif height=0 width=0 id='+y+'>'+x+'</td>';
			}
			else
			{
				t+='<td class="'+cD+'"><img alt="" src=blank.gif height=0 width=0 id='+y+'>'+x+'</td>';
			}
		}
		else
		{
			
		   if(x=="&nbsp;")
		   {
			
				t+='<td class="'+cD+'">'+x+'</td>';
		   }
		   else
		   {
			    imgId=calId+y;
				if(x == scanfortoday)
				{
					t+='<td class="currday" onmouseover=showCalDiv('+'\''+imgId+'\''+','+'\''+month+'\''+','+year+','+y+','+'\''+arrKey+'\''+','+counter+','+m+') ><img alt="" src=blank.gif height=0 width=0 id="'+imgId+'">'+x+'</td>';
				}
				else
			   {
				t+='<td class="'+eventDays+'" onmouseover=showCalDiv('+'\''+imgId+'\''+','+'\''+month+'\''+','+year+','+y+','+'\''+arrKey+'\''+','+counter+','+m+') ><img alt="" src=blank.gif height=0 width=0 id="'+imgId+'">'+x+'</td>';
			   }
		   }
		  
		}
        if(((i)%7==0)&&(i<42))
			t+='</tr><tr align="center">';
    }
	
    return t+='</tr></table></div>';
}

function buildNextCal(calId,m, year, cM, cH, cDW, cD,eventDays, brdr,events,counter)
{

	var divId = "div"+calId;
	var headerdiv = document.getElementById(divId);
	
	var prevMonth = parseInt(m)-1;
	var newYear1 = year;
	var newYear2 = year;
	if(prevMonth <= 0)
	{
		prevMonth = 12;
		newYear1 = year-1;
	}
	var nextMonth = parseInt(m)+1;
	if(nextMonth > 12)
	{
		nextMonth = 1;
		newYear2 = year+1;
	}
	
	var prevYear = parseInt(year)-1;
	var nextYear = parseInt(year)+1;
	
	var arrEvents=arrayOfEvents[counter];
	
	
    var mn=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
    var dim=[31,0,31,30,31,30,31,31,30,31,30,31];
    var oD = new Date(year, m-1, 1);
    oD.od=oD.getDay()+1;
    var todaydate=new Date() //DD added
    var scanfortoday=(year==todaydate.getFullYear() && m==todaydate.getMonth()+1)? todaydate.getDate() : 0 //DD added
    
	dim[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;

    var t='<table class="'+cM+'" cols="7" cellpadding="0" border="'+brdr+'" cellspacing="1"><tr align="center">';
    
	t+='<td colspan="7" class="'+cH+'" ondblclick="openCalendar('+'\''+calId+'\''+','+m+','+(year)+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+events+'\''+','+counter+')">'+'&nbsp;&nbsp;&nbsp;&nbsp;'+'<a  onClick="buildNextCal('+'\''+calId+'\''+','+m+','+prevYear+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+'\''+','+counter+')"><img alt="Previous Year" title="Previous Year" name="calbtn1" src="' + imagesDir + 'left8.gif" border="0" width="11" height="11" align="baseline" ></a>'+'&nbsp;&nbsp;&nbsp;&nbsp;'+'<a  onClick="buildNextCal('+'\''+calId+'\''+','+prevMonth+','+(newYear1)+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+'\''+','+counter+')"><img alt="Previous Month" title="Previous Month" name="calbtn1" src="' + imagesDir + 'left4.gif" border="0" width="6" height="11" align="baseline" ></a>'+'&nbsp;&nbsp;'+mn[m-1]+' - '+year+'&nbsp;&nbsp;'+'<a  onClick="buildNextCal('+'\''+calId+'\''+','+nextMonth+','+(newYear2)+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+'\''+','+counter+')"><img alt="Next Month" title="Next Month" name="calbtn1" src="' + imagesDir + 'right4.gif" border="0" width="6" height="11" align="baseline" ></a>'+'&nbsp;&nbsp;&nbsp;&nbsp;'+'<a  onClick="buildNextCal('+'\''+calId+'\''+','+(m)+','+nextYear+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+'\''+','+counter+')"><img alt="Next Year" title="Next Year" name="calbtn1" src="' + imagesDir + 'right8.gif" border="0" width="11" height="11" align="baseline" ></a>'+'&nbsp;&nbsp;&nbsp;&nbsp;<a  onClick="openCalendar('+'\''+calId+'\''+','+m+','+(year)+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+escape(events)+'\''+','+counter+')" alt="Maximize" title="Maximize"><img src="' + imagesDir + 'maximize.png" border="0" align="baseline"  alt="Maximize" title="Maximize"></a></td></tr><tr align="center">';
   	   	
	var month =mn[m-1];
	
	for(s=0;s<7;s++)
		t+='<td class="'+cDW+'">'+"SMTWTFS".substr(s,1)+'</td>';
    t+='</tr><tr align="center">';
	
    for(i=1;i<=42;i++)
    {
       var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : '&nbsp;';
        var y = x;
		var arrKey = getTwoDigitNumber(m)+"-"+getTwoDigitNumber(y)+"-"+year;
		
		var imgId="";
		var consolidatedEventData = getConsolidatedEventData(arrEvents,getTwoDigitNumber(m),getTwoDigitNumber(y),year);

		if(consolidatedEventData == "")
		{
			if(x == scanfortoday)
			{
				t+='<td class="currday"><img alt="" src=blank.gif height=0 width=0 id='+y+'>'+x+'</td>';
			}
			else
			{
				t+='<td class="'+cD+'"><img alt="" src=blank.gif height=0 width=0 id='+y+'>'+x+'</td>';
			}

		}
		else
		{
		
		   if(x=="&nbsp;")
		   {
				t+='<td class="'+cD+'">'+x+'</td>';
		   }
		   else
		   {
			    imgId=calId+y;
				if(x == scanfortoday)
				{
					t+='<td class="currday" onmouseover=showCalDiv('+'\''+imgId+'\''+','+'\''+month+'\''+','+year+','+y+','+'\''+arrKey+'\''+','+counter+','+m+') ><img src=blank.gif height=0 width=0 id="'+imgId+'">'+x+'</td>';
				}
				else
			   {
						t+='<td class="'+eventDays+'" onmouseover=showCalDiv('+'\''+imgId+'\''+','+'\''+month+'\''+','+year+','+y+','+'\''+arrKey+'\''+','+counter+','+m+') ><img src=blank.gif height=0 width=0 id="'+imgId+'">'+x+'</td>';
			   }
				
		   }
		  
		}
        if(((i)%7==0)&&(i<42))
			t+='</tr><tr align="center">';
    }
	
    t+='</tr></table>';

	headerdiv.innerHTML=t;
}

function buildLargeCal(calId,m, year, cM, cH, cDW, cD,eventDays, brdr,events,counter)
{

  	var divId = "div"+calId;
	var headerdiv = document.getElementById(divId);
	
	var prevMonth = parseInt(m)-1;
	var newYear1 = year;
	var newYear2 = year;
	if(prevMonth <= 0)
	{
		prevMonth = 12;
		newYear1 = year-1;
	}
	var nextMonth = parseInt(m)+1;
	if(nextMonth > 12)
	{
		nextMonth = 1;
		newYear2 = year+1;
	}
	
	var prevYear = parseInt(year)-1;
	var nextYear = parseInt(year)+1;
	var arrEvents = new Object();
	if(window.opener)
	{
		arrayOfLargeEvents = window.opener.arrayOfEvents;
	}
	
	if(!window.opener || typeof window.opener.arrayOfEvents == "undefined" || arrayOfLargeEvents.length == 0)
	{
		
	   if(events)
	   {
			var arData = events.split("~");
			
			var eventData="";
			var arData1;
			var arData2;
			var date;
			for(var p=0;p<arData.length;p++)
			{
			
			  date  = arData[p].substring(0,arData[p].indexOf("("));
			  var arr = new Array();
			  if(date.indexOf("-") == -1)
			  {
				  date = getTwoDigitNumber(m)+"-"+getTwoDigitNumber(date)+"-"+year;
				  arr[0] = date;
			  }
			  else
			  {
				  var monddyyyy= date.split("-");
				  if(monddyyyy[1].indexOf("[") == -1)
				  {
					date =getTwoDigitNumber(monddyyyy[0])+"-"+(getTwoDigitNumber(monddyyyy[1])).toLowerCase()+"-"+monddyyyy[2]; 
					arr[0] = date;
				  }
				  else
				  {
					
					var dayData = monddyyyy[1];
					var initStr	= dayData.substring(0,dayData.indexOf("[")) ;
					var content	= dayData.substring(dayData.indexOf("[")+1,dayData.indexOf("]"));
					var arrContent = content.split(",");
					for(var x=0;x<arrContent.length;x++)
					{
						arr[x] = getTwoDigitNumber(monddyyyy[0])+"-"+(initStr+"["+arrContent[x]+"]").toLowerCase()+"-"+monddyyyy[2]; 
						
					}
				  }
						
							
			  }
			 
			  for(var j=0;j<arr.length;j++)
			  {
				  date = arr[j];
				  eventData = arData[p].substring(arData[p].indexOf("(")+1,arData[p].indexOf(")"))
				 
				  var event="";
				  var time="";
				  var eventAndTime;
				  var allEvents="";
				  arData1 = eventData.split("|");
				  for(var q=0;q<arData1.length;q++)
				  {
					time ="";
					event="";
					eventAndTime = "";
					eventAndTime = arData1[q]; 
				    eventAndTime = eventAndTime.replace(/&nbsp;/g," ");
					arData2 = eventAndTime.split(";");
					if(arData2.length == 2)
					{
						time = arData2[0];
						event = arData2[1];
					}
					else if(arData2.length == 1)
					{
						event = arData2[0];
					}
					

					if(time=="")
					{
						allEvents=allEvents+"<li>"+event+"</li>";
					
					}
					else
					{
						allEvents=allEvents+"<li>"+time+"-"+event+"</li>";
				
					}

				  }	// End of for loop for arData1
				 
				  if(arrEvents[date] == "undefined" || typeof arrEvents[date] == "undefined")
				  {
					arrEvents[date]=allEvents;
				  }
				  else
				  {
					arrEvents[date]=arrEvents[date]+allEvents;
				  }
			  }
		 
			}  // End of for loop for arData
		
			arrayOfEvents[counter]= arrEvents;
			arrayOfLargeEvents = arrayOfEvents;
	   }
	}
	var arrEvents=arrayOfLargeEvents[counter];
	
    var mn=['January','February','March','April','May','June','July','August','September','October','November','December'];
    var dim=[31,0,31,30,31,30,31,31,30,31,30,31];
    var oD = new Date(year, m-1, 1);
    oD.od=oD.getDay()+1;
    var todaydate=new Date() //DD added
    var scanfortoday=(year==todaydate.getFullYear() && m==todaydate.getMonth()+1)? todaydate.getDate() : 0 //DD added
   
	dim[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;

    var t='<div id="div'+calId+'" class="'+cM+'"><table  width="100%" class="'+cM+'" cols="7" cellpadding="0" border="'+brdr+'" cellspacing="1"><tr align="center">';
    
	t+='<td colspan="7" class="'+cH+'">'+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+'<a  onClick="buildLargeNextCal('+'\''+calId+'\''+','+m+','+prevYear+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+'\''+','+counter+')"><img alt="Previous Year" title="Previous Year" name="calbtn1" src="' + imagesDir + 'prevyear.gif" height="19" width="21" border="0" align="baseline" ></a>'+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+'<a onClick="buildLargeNextCal('+'\''+calId+'\''+','+prevMonth+','+(newYear1)+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+'\''+','+counter+')"><img alt="Previous Month" title="Previous Month" name="calbtn1" src="' + imagesDir + 'prevmonth.gif" height="19" width="15" border="0" align="baseline" ></a>'+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="spantop">'+mn[m-1]+' - '+year+'</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+'<a onClick="buildLargeNextCal('+'\''+calId+'\''+','+nextMonth+','+(newYear2)+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+'\''+','+counter+')"><img alt="Next Month" title="Next Month" name="calbtn1" src="' + imagesDir + 'nextmonth.gif" border="0" width="15" height="19" align="baseline" ></a>'+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+'<a onClick="buildLargeNextCal('+'\''+calId+'\''+','+(m)+','+nextYear+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+'\''+','+counter+')"><img alt="Next Year" title="Next Year" name="calbtn1" src="' + imagesDir + 'nextyear.gif" border="0" width="21" height="19" align="baseline" ></a>'+'</td></tr><tr align="center">';
  
	var month =mn[m-1];
	var day;
	for(s=0;s<7;s++)
	{
		if(s==0)
		{
			day='Sun';
		}
		else if( s==1)
		{
			day='Mon'
		}
		else if( s==2)
		{
			day='Tue'
		}
		else if( s==3)
		{
			day='Wed';
		}
		else if( s==4)
		{
			day='Thu';
		}
		else if( s==5)
		{
			day='Fri';
		}
		else if( s==6)
		{
			day='Sat';
		}
		t+='<td class="'+cDW+'">'+day+'</td>';
    }
	t+='</tr><tr align="center">';
	
	
    for(i=1;i<=42;i++)
    {
       var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : '&nbsp;';
        var y = x;
		var arrKey = getTwoDigitNumber(m)+"-"+getTwoDigitNumber(y)+"-"+year;
		
		var imgId="";
	    var consolidatedEventData = getConsolidatedEventData(arrEvents,getTwoDigitNumber(m),getTwoDigitNumber(y),year);

		if(consolidatedEventData == "")
		{
			if(x == scanfortoday)
			{
				t+='<td class="currday">'+x+'</td>';
			}
			else
			{
				t+='<td class="'+cD+'">'+x+'</td>';
			}
			
		}
		else
		{
			
		   if(x=="&nbsp;")
		   {
				t+='<td class="'+cD+'">'+x+'</td>';
		   }
		   else
		   {
			    imgId=calId+y;
			if(x == scanfortoday)
			{
					t+='<td class="currday">'+x+'<br><div class=eventDataDiv>'+consolidatedEventData+'</div></td>';
			}
			else
			{
					t+='<td class="'+cD+'">'+x+'<br><div class=eventDataDiv>'+consolidatedEventData+'</div></td>';
			}
			
				
		   }
		  
		}
        if(((i)%7==0)&&(i<42))
			t+='</tr><tr align="center">';
    }
	
    t+='</tr></table></div>';

	return t;
	
}

function buildLargeNextCal(calId,m, year, cM, cH, cDW, cD,eventDays, brdr,events,counter)
{
	
  	var divId = "div"+calId;
	var headerdiv = document.getElementById(divId);
	
	var prevMonth = parseInt(m)-1;
	var newYear1 = year;
	var newYear2 = year;
	if(prevMonth <= 0)
	{
		prevMonth = 12;
		newYear1 = year-1;
	}
	var nextMonth = parseInt(m)+1;
	if(nextMonth > 12)
	{
		nextMonth = 1;
		newYear2 = year+1;
	}
	
	var prevYear = parseInt(year)-1;
	var nextYear = parseInt(year)+1;
	//arrayOfLargeEvents = window.opener.arrayOfEvents;
	
	var arrEvents=arrayOfLargeEvents[counter];
	
    var mn=['January','February','March','April','May','June','July','August','September','October','November','December'];
    var dim=[31,0,31,30,31,30,31,31,30,31,30,31];
    var oD = new Date(year, m-1, 1);
    oD.od=oD.getDay()+1;
    var todaydate=new Date() //DD added
    var scanfortoday=(year==todaydate.getFullYear() && m==todaydate.getMonth()+1)? todaydate.getDate() : 0 //DD added
   
	dim[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;

    var t='<table  width="100%" class="'+cM+'" cols="7" cellpadding="0" border="'+brdr+'" cellspacing="1"><tr align="center">';
    
	t+='<td colspan="7" class="'+cH+'">'+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+'<a  onClick="buildLargeNextCal('+'\''+calId+'\''+','+m+','+prevYear+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+'\''+','+counter+')"><img alt="Previous Year" title="Previous Year" name="calbtn1" src="' + imagesDir + 'prevyear.gif" height="19" width="21" border="0" align="baseline" ></a>'+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+'<a onClick="buildLargeNextCal('+'\''+calId+'\''+','+prevMonth+','+(newYear1)+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+'\''+','+counter+')"><img alt="Previous Month" title="Previous Month" name="calbtn1" src="' + imagesDir + 'prevmonth.gif" height="19" width="15" border="0" align="baseline" ></a>'+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="spantop">'+mn[m-1]+' - '+year+'</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+'<a onClick="buildLargeNextCal('+'\''+calId+'\''+','+nextMonth+','+(newYear2)+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+'\''+','+counter+')"><img alt="Next Month" title="Next Month" name="calbtn1" src="' + imagesDir + 'nextmonth.gif" border="0" width="15" height="19" align="baseline" ></a>'+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+'<a onClick="buildLargeNextCal('+'\''+calId+'\''+','+(m)+','+nextYear+','+'\''+cM+'\''+','+'\''+cH+'\''+','+'\''+cDW+'\''+','+'\''+cD+'\''+','+'\''+eventDays+'\''+','+brdr+','+'\''+'\''+','+counter+')"><img alt="Next Year" title="Next Year" name="calbtn1" src="' + imagesDir + 'nextyear.gif" border="0" width="21" height="19" align="baseline" ></a>'+'</td></tr><tr align="center">';
  
	var month =mn[m-1];
	
	for(s=0;s<7;s++)
	{
		if(s==0)
		{
			day='Sun';
		}
		else if( s==1)
		{
			day='Mon'
		}
		else if( s==2)
		{
			day='Tue'
		}
		else if( s==3)
		{
			day='Wed';
		}
		else if( s==4)
		{
			day='Thu';
		}
		else if( s==5)
		{
			day='Fri';
		}
		else if( s==6)
		{
			day='Sat';
		}
		t+='<td class="'+cDW+'">'+day+'</td>';
    }
    t+='</tr><tr align="center">';
	
	
    for(i=1;i<=42;i++)						
    {
       var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : '&nbsp;';
        var y = x;
		var arrKey = getTwoDigitNumber(m)+"-"+getTwoDigitNumber(y)+"-"+year;
		
		var imgId="";
	
		var consolidatedEventData = getConsolidatedEventData(arrEvents,getTwoDigitNumber(m),getTwoDigitNumber(y),year);

		if(consolidatedEventData == "")
		{
			if(x == scanfortoday)
			{
				t+='<td class="currdate">'+x+'</td>';
			}
			else
			{
					t+='<td class="'+cD+'">'+x+'</td>';
			}
			
		}
		else
		{
			
		   if(x=="&nbsp;")
		   {
				t+='<td class="'+cD+'">'+x+'</td>';
		   }
		   else
		   {
			imgId=calId+y;
				
			if(x == scanfortoday)
			{
					t+='<td class="currday">'+x+'<br><div class=eventDataDiv>'+consolidatedEventData+'</div></td>';
			}
			else
			{
					t+='<td class="'+cD+'">'+x+'<br><div class=eventDataDiv>'+consolidatedEventData+'</div></td>';
			}
				
		   }
		  
		}
        if(((i)%7==0)&&(i<42))
			t+='</tr><tr align="center">';
    }
	
    t+='</tr></table>';

	headerdiv.innerHTML=t;
	
}

function getConsolidatedEventData(arrEvents,month,day,year)
{
  var consolidatedData="";
  if(day != "&nbsp;")
  {
	  var strMonth;
	  if(month == "01" || month == "1")
	  {
		strMonth="January";
	  }
	  else if(month == "02" || month == "2")
	  {
		strMonth="February";
	  }
	  else if(month == "03" || month == "3")
	  {
		strMonth="March";
	  }
	  else if(month == "04" || month == "4")
	  {
		strMonth="April";
	  }
	  else if(month == "05" || month == "5")
	  {
		strMonth="May";
	  }
	  else if(month == "06" || month == "6")
	  {
		strMonth="June";
	  }
	  else if(month == "07" || month == "7")
	  {
		strMonth="July";
	  }
	  else if(month == "08" || month == "8")
	  {
		strMonth="August";
	  }
	  else if(month == "09" || month == "9")
	  {
		strMonth="September";
	  }	 
	   else if(month == "10")
	  {
		strMonth="October";
	  }
	  else if(month == "11")
	  {
		strMonth="November";
	  }	 
	  else if(month == "12")
	  {
		strMonth="December";
	  }	 
	
	  var dateObj = new Date(strMonth+" "+day+" "+year);
	  
	  var dayOfMonthNumeric = dateObj.getDay();
	 
	  var dayOfMonth;
	  if(parseInt(dayOfMonthNumeric) == 0)
	  {
		 dayOfMonth="sun";
	  }
	  else if(parseInt(dayOfMonthNumeric) == 1)
	  {
		 dayOfMonth="mon";
	  }
	  else if(parseInt(dayOfMonthNumeric) == 2)
	  {
		 dayOfMonth="tue";
	  }
	  else if(parseInt(dayOfMonthNumeric) == 3)
	  {
		 dayOfMonth="wed";
	  }
	  else if(parseInt(dayOfMonthNumeric) == 4)
	  {
		 dayOfMonth="thu";
	  }
	  else if(parseInt(dayOfMonthNumeric) == 5)
	  {
		 dayOfMonth="fri";
	  }
	  else if(parseInt(dayOfMonthNumeric) == 6)
	  {
		 dayOfMonth="sat";
	  }
	  

	  var occurance=getDayWithOccurance(dateObj);
	  
	 
	  if(typeof arrEvents == "undefined" || arrEvents == "undefined" || arrEvents.length == 0 )
	  {
		 
	  }
	  else
	  {
		var arrKey=month+"-"+day+"-"+year;
		if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
		{
			consolidatedData = arrEvents[arrKey];
		}
				
		arrKey="*-"+day+"-"+year;
		if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
		{
			consolidatedData = consolidatedData+arrEvents[arrKey];
		}
		
		arrKey="*-"+"*-"+year;
		if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
		{
			consolidatedData = consolidatedData+arrEvents[arrKey];
		}
		
		arrKey="*-*-*";
		if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
		{
			consolidatedData = consolidatedData+arrEvents[arrKey];
		}
		
		arrKey=month+"-"+"*"+"-"+year;
		if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
		{
			consolidatedData = consolidatedData+arrEvents[arrKey];
		}

		arrKey="*"+"-"+"*"+"-"+year;
		if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
		{
			consolidatedData = consolidatedData+arrEvents[arrKey];
		}

		arrKey=month+"-"+day+"-"+"*";
		if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
		{
			consolidatedData = consolidatedData+arrEvents[arrKey];
		}

		arrKey="*-"+day+"-*";
		if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
		{
			consolidatedData = consolidatedData+arrEvents[arrKey];
		}

		arrKey=month+"-*-*";
		if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
		{
			consolidatedData = consolidatedData+arrEvents[arrKey];
		}

		arrKey="*-"+dayOfMonth+"["+occurance+"]"+"-*";
		if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
		{
			consolidatedData = consolidatedData+arrEvents[arrKey];
		}

		arrKey="*-"+dayOfMonth+"[*]"+"-*";
		if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
		{
			consolidatedData = consolidatedData+arrEvents[arrKey];
		}
	   
		arrKey="*-"+dayOfMonth+"["+occurance+"]"+"-"+year;
		if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
		{
			consolidatedData = consolidatedData+arrEvents[arrKey];
		}

		arrKey="*-"+dayOfMonth+"[*]"+"-"+year;
		if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
		{
			consolidatedData = consolidatedData+arrEvents[arrKey];
		}

		arrKey=month+"-"+dayOfMonth+"["+occurance+"]"+"-"+year;
		if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
		{
			consolidatedData = consolidatedData+arrEvents[arrKey];
		}

		arrKey=month+"-"+dayOfMonth+"[*]"+"-"+year;
		if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
		{
			consolidatedData = consolidatedData+arrEvents[arrKey];
		}

		arrKey=month+"-"+dayOfMonth+"["+occurance+"]"+"-*";
		if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
		{
			consolidatedData = consolidatedData+arrEvents[arrKey];
		}

		arrKey=month+"-"+dayOfMonth+"[*]"+"-*";
		if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
		{
			consolidatedData = consolidatedData+arrEvents[arrKey];
		}
		var tempDate;
		if(day == "01")
		{
		   tempDate="1"
		}
		else if(day == "02")
		{
			tempDate="2"
		}
		else if(day == "03")
		{
			tempDate="3"
		}
		else if(day == "04")
		{
			tempDate="4"
		}
		else if(day == "05")
		{
			tempDate="5"
		}
		else if(day == "06")
		{
			tempDate="6"
		}
		else if(day == "07")
		{
			tempDate="7"
		}
		else if(day == "08")
		{
			tempDate="8"
		}
		else if(day == "09")
		{
			tempDate="9"
		}
		else
		{
			tempDate=day;
		}

		var tempMonth;
		if(month == "01")
		{
		   tempMonth="1"
		}
		else if(month == "02")
		{
			tempMonth="2"
		}
		else if(month == "03")
		{
			tempMonth="3"
		}
		else if(month == "04")
		{
			tempMonth="4"
		}
		else if(month == "05")
		{
			tempMonth="5"
		}
		else if(month == "06")
		{
			tempMonth="6"
		}
		else if(month == "07")
		{
			tempMonth="7"
		}
		else if(month == "08")
		{
			tempMonth="8"
		}
		else if(month == "09")
		{
			tempMonth="9"
		}
		else
		{
			tempMonth=month;
		}
		if(parseInt(tempDate) >= 28)
		{
			if(parseInt(tempDate) ==  parseInt(getLastDateOfMonth(year,(parseInt(tempMonth)-1))))
			{
				
				arrKey="*"+"-"+"ldom"+"-*";
				if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
				{
					consolidatedData = consolidatedData+arrEvents[arrKey];
				}

				arrKey=month+"-"+"ldom"+"-*";
				if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
				{
					consolidatedData = consolidatedData+arrEvents[arrKey];
				}

				arrKey=month+"-"+"ldom"+"-"+year;
				if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
				{
					consolidatedData = consolidatedData+arrEvents[arrKey];
				}

				arrKey="*-"+"ldom"+"-"+year;
				if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
				{
					
					consolidatedData = consolidatedData+arrEvents[arrKey];
				}

			}

		}	

		if(parseInt(tempDate) <=3)
		{
		
		   var firstWorkingDay = getFirstWorkingDay(dateObj);
		   if(getTwoDigitNumber(firstWorkingDay) == getTwoDigitNumber(day))
		   {
			    arrKey="*"+"-"+"fwdom"+"-*";
				if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
				{
					consolidatedData = consolidatedData+arrEvents[arrKey];
				}

				arrKey=month+"-"+"fwdom"+"-*";
				if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
				{
					consolidatedData = consolidatedData+arrEvents[arrKey];
				}

				arrKey=month+"-"+"fwdom"+"-"+year;
				if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
				{
					consolidatedData = consolidatedData+arrEvents[arrKey];
				}

				arrKey="*-"+"fwdom"+"-"+year;
				if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
				{
					
					consolidatedData = consolidatedData+arrEvents[arrKey];
				}
		   }
		}

		if(parseInt(tempDate) >= 26)
		{
			var lastWorkingDay = getLastWorkingDay(dateObj,year,(parseInt(tempMonth)-1));
			
			if(getTwoDigitNumber(lastWorkingDay) == getTwoDigitNumber(day))
			{
				arrKey="*"+"-"+"lwdom"+"-*";
				if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
				{
					consolidatedData = consolidatedData+arrEvents[arrKey];
				}

				arrKey=month+"-"+"lwdom"+"-*";
				if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
				{
					consolidatedData = consolidatedData+arrEvents[arrKey];
				}

				arrKey=month+"-"+"lwdom"+"-"+year;
				if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
				{
					consolidatedData = consolidatedData+arrEvents[arrKey];
				}

				arrKey="*-"+"lwdom"+"-"+year;
				if(arrEvents[arrKey] != "" && arrEvents[arrKey] != "undefined" && typeof arrEvents[arrKey] != "undefined")
				{
					consolidatedData = consolidatedData+arrEvents[arrKey];
				}

			}
		}


		
		
		
	  }
	 
  }
  return consolidatedData;
}

function getWeekOfMonth(dateObject) 
{

 var strYear = new Date(dateObject.getYear(), dateObject.getMonth(), 1)
 
 var strDay = (strYear.getDay()) ? strYear.getDay() : 7;
 strYear =  strYear - ( strDay * (24*60*60*1000) );
 
 return Math.ceil((dateObject - strYear) / (7 * 24*60*60*1000));
}

function y2k(number) { return (number < 1000) ? number + 1900 : number; }

// month starts from 0(Jan) and ends with 11(Dec)
function getWeekOfYear(year,month,day) 
{
	var when = new Date(year,month,day);

	var newYear = new Date(year,0,1);
	var offset = 7 + 1 - newYear.getDay();
	if (offset == 8) offset = 1;
	
	var daynum = ((Date.UTC(y2k(year),when.getMonth(),when.getDate(),0,0,0) - Date.UTC(y2k(year),0,1,0,0,0))/1000/60/60/24) + 1;
	var weeknum = Math.floor((daynum-offset+7)/7);
	
	if (weeknum == 0) {
		year--;
		var prevNewYear = new Date(year,0,1);
		var prevOffset = 7 + 1 - prevNewYear.getDay();
		if (prevOffset == 2 || prevOffset == 8) weeknum = 53; else weeknum = 52;
	}
	return weeknum;
}

function getDayWithOccurance(vDate)
{
   	var weekTime     =          (1000*60*60*24)*7;
	var tmpDate       = new Date(vDate.getTime()-weekTime);
	var occurence = 1;
	while(true)
	{
	 	if( tmpDate.getMonth() == vDate.getMonth() )
	  	{
	  		occurence++;
	  		tmpDate = new Date(tmpDate.getTime()-weekTime);
	  	}
	  	else
	  	{
	  		break;
	  	}
	 }
	return occurence;
}

function getFirstWorkingDay(tmpDate)
{
   	var ret = 0;
	tmpDate.setDate(1);
	
	if(tmpDate.getDay() != 0 && tmpDate.getDay() != 6)
	{
		ret = 1;
	}
	if(ret == 0)
	{
		tmpDate.setDate(2);
		if(tmpDate.getDay() != 0 && tmpDate.getDay() != 6)
		{
			ret = 2;
		}
	}
	if(ret == 0)
	{
		tmpDate.setDate(3);
		if(tmpDate.getDay() != 0 && tmpDate.getDay() != 6)
		{
			ret = 3;
		}
	}

	return ret;
}

function getLastWorkingDay(tmpDate,year,month)
{
   	var ret = 0;
	var lastDateOfMonth = getLastDateOfMonth(year, month);
	tmpDate.setDate(lastDateOfMonth);
	
	if(tmpDate.getDay() != 0 && tmpDate.getDay() != 6)
	{
		ret = lastDateOfMonth;
	}
	if(ret == 0)
	{
		tmpDate.setDate(lastDateOfMonth-1);
		if(tmpDate.getDay() != 0 && tmpDate.getDay() != 6)
		{
			ret = lastDateOfMonth-1;
		}
	}
	if(ret == 0)
	{
		tmpDate.setDate(lastDateOfMonth-2);
		if(tmpDate.getDay() != 0 && tmpDate.getDay() != 6)
		{
			ret = lastDateOfMonth-2;
		}
	}

	return ret;
}


function getLastDateOfMonth(year, month)
{
  return (new Date( (new Date(year,month+1,1))-1 )).getDate();
}



