//DevelopedBy  :  Manoj Jadoun
//Date         :  
//Purpose      : This javascript file is for displaying javascript calendar. 
//

var currCal = ''; 
function Calendar (days, cname, id, date)
{ 
    //alert(id);
 	// Used to notify the calendar that it is attached to a single html field.
	this.fallback_single = 0;
	
	// Used to notify the claendar that it is attached to 3 html fields.
	this.fallback_multi = 1;
	
	// Used to notify the calendar that it is attached to both field sets.
	this.fallback_both = 2;
	
	// Read-only calendar
	this.viewOnly = false;
	
	// Allows the user to select weekends
	this.allowWeekends = true;
	
	// Allows the user to select weekdays
	this.allowWeekdays = true;
	
	// The minimum date that the user can select (inclusive)
	this.minDate = new Date();
	
	//this.minDate.setDate(this.minDate.getDate());
	this.minDate.setDate(this.minDate.getDate()+ parseInt(days));
	
	// The maximum date that the user can select (exclusive)
	this.maxDate = "--";
	
	// Allow the user to scroll dates
	this.scrolling = true;
	
	// The id of this calendar
	this.name = cname;
	
	// The first day of the week in the calendar (0-Sunday, 6-Saturday)
	this.firstDayOfWeek = 0;
	
	// Fallback method
	this.fallback = this.fallback_both;
	
	// Sets the date and strips out time information
	setCalendarDate(this,date);
    //	this.calendarDate = date;
    //	this.calendarDate.setUTCHours(0);
    //	this.calendarDate.setUTCMinutes(0);
    //	this.calendarDate.setUTCSeconds(0);
    //	this.calendarDate.setUTCMilliseconds(0);
	
	// The field id that the calendar is attached to.
	// For single input, this is used "as is". for the
	// Multi-input, it is given a suffix for _day, _month
	// and _year inputs.
	this.attachedId = id;
	
	// The left and right month control icons
	this.controlLeft = "&#171;";
	this.controlRight = "&#187;";
		
	// The left and right month control icons (when disabled)
	this.controlLeftDisabled = "";
	this.controlRightDisabled = "";
	
	// The css classes for the calendar and header
	this.calendarStyle = "cal_calendar";
	this.headerStyle = "cal_header";
	this.headerCellStyle = "cal_cell";
	this.headerCellStyleLabel = "cal_labelcell";
	
	// The css classes for the rows
	this.weekStyle = "cal_week";
	this.evenWeekStyle = "cal_evenweek";
	this.oddWeekStyle = "cal_oddweek";
	
	// The css classes for the day elements
	this.dayStyle = "cal_day";
	this.disabledDayStyle = "cal_disabled";
	this.commonDayStyle = "cal_common";
	this.holidayDayStyle = "cal_holiday";
	this.offDayStyle = "cal_offday";
	this.eventDayStyle = "cal_event";		
	this.todayDayStyle = "cal_today";
	this.reminderDayStyle = "cal_reminder";
	//this.forceDayStyle = "cal_common";
	this.forceDayStyle = "cal_event";
	// specifies the labels for this calendar
	//this.dayLabels = new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"); //Commented By Mukesh
	//Commented By Mukesh RDPL
//	this.monthLabels = new Array(
//		"January", "February", "March", "April"
//		, "May", "June", "July", "August"
//		, "September", "October", "November", "December");
	//End Of Comment
	// Specifies the dates of any event. The events are to be defined as arrays,
	// with element 0 being the date and element 1 being an id.
	this.eventDates = new Array();
	this.reminderDates = new Array();

	this.holidayDates = new Array();
	this.forceDates = new Array();
	this.offDates = new Array();
	this.offDays = '';
	
    this.body_click = 'false';
	
	// Attach event handlers to any fallback fields.
	if (this.viewOnly == false) 
	{
		//manoj setFieldValue(this.attachedId, this.calendarDate);
		if ((this.fallback = this.fallback_both) || (this.fallback = this.fallback_single)) 
		{
			eval("document.getElementById(\"" + this.attachedId + "\").onchange = function () {updateFromSingle("+this.name+", this);}");
		}

		if ((this.fallback = this.fallback_both) || (this.fallback = this.fallback_multi)) 
		{
		}
	} 
	
	selectEvent = new Function();
}

// by manoj 

function setCalendarDate(calendar,date)
{
    calendar.calendarDate = date;
	calendar.calendarDate.setUTCHours(0);
	calendar.calendarDate.setUTCMinutes(0);
	calendar.calendarDate.setUTCSeconds(0);
	calendar.calendarDate.setUTCMilliseconds(0);
}

function changeReminderDate(calReminder,dtt,msg,td)
{
//debugger;
	newDate = new Date (dtt);
	newDate.setUTCDate(newDate.getUTCDate()+1);
	calReminder.calendarDate = newDate;
	document.getElementById('tester2').value = getDayString(newDate.getUTCDay()) + ", " + newDate.getUTCDate()  + " " + getMonthString(newDate.getUTCMonth()) + ", " + newDate.getUTCFullYear();	
	renderCalendar (calReminder);
	document.getElementById('txtReminderMsg').value = td.nextSibling.innerText;
	
	document.getElementById('hidRowId').value = td.nextSibling.id;
}

function showCalendar()
{ 
    if(document.getElementById("divDummyCalendar") != null)
        document.getElementById("divDummyCalendar").style.display = 'none'
    if(document.getElementById("trSelectDate") != null)
        document.getElementById("trSelectDate").style.display = 'none'

	if (document.getElementById("cal_tester2_display").style.display == 'none')
	{ 
		document.getElementById("cal_tester2_display").style.display = 'block';
		//document.getElementById("divCal").style.display = 'block';
		body_click = 'false' ;
		if(document.getElementById("divTest") != null)
          document.getElementById("divTest").style.display = 'block';
	}
	else
	{
		document.getElementById("cal_tester2_display").style.display = 'none';
        if(document.getElementById("divTest") != null)
          document.getElementById("divTest").style.display = 'none';
        //document.getElementById("divCal").style.display = 'none';
    }
}
//Added by Mohit on 8th July for showing Calendar on Shopping cart page--start
function showCalendarOnShoppingCart(CtrlId)
{   
    //debugger;
    if(currCal != CtrlId)
    {
        if(document.getElementById('cal_tester2_' + currCal + '_display') != null)
        {
            var display = document.getElementById('cal_tester2_' + currCal + '_display').style.display;
	        if(display == 'block' || display != '')
	        {
	            hideCalendarOnShoppingCart(currCal);
            }
        }
    }
    currCal = CtrlId;
    if(document.getElementById('cal_tester2_' + CtrlId + '_display') != null)
	{
	    var display = document.getElementById('cal_tester2_' + CtrlId + '_display').style.display;
	    if(display == 'none' || display == '')
	    {
	        display = 'block';
	        body_click = 'true' ;
        }
	    else
	    {
	        display = 'none';
	        body_click = 'false' ;
	    }
	    document.getElementById('cal_tester2_' + CtrlId + '_display').style.display = display;
	    if(document.getElementById("divTest") != null)
          document.getElementById("divTest").style.display = display;
	}
    //  alert( document.getElementById("hdItemCode" + '_' + CtrlId ));
}

function hideCalendarOnShoppingCart(CtrlId)
{      
	if ( body_click == 'true')
	{
        if(document.getElementById('cal_tester2_' + CtrlId + '_display') != null)
        {
	    	document.getElementById('cal_tester2_' + CtrlId + '_display').style.display = 'none';
        }
    }
    else
    {		
		body_click = 'true' ;
    }
}

//Added by Mohit on 8th July for showing Calendar on Shopping cart page--end

// By Mukesh Rdpl To Show Calender on DeliveryMethod Method, ItRequired Modification

function showCalendarOnRadioChecked()
{ 
	if (document.getElementById("cal_tester2_display").style.display == 'none')
	{
		document.getElementById("cal_tester2_display").style.display = 'block';
		body_click = 'false' ;
	}
	else
	    document.getElementById("cal_tester2_display").style.display = 'none';
}


function LoadNewCalenderOnChanged()
    {
         var deleveryMethod="";
         for( i = 0; i < document.getElementsByName('rblDeliveryMethod').length; i++)  
         {
            if( document.getElementById('rblDeliveryMethod_'+i).checked == true )
                {
                    deleveryMethod =document.getElementById('rblDeliveryMethod_'+i).value;
                }
         }
    }

function hideCalendar()
{
	if ( body_click == 'true')
	    if(document.getElementById("cal_tester2_display") != null)
	    {
		    document.getElementById("cal_tester2_display").style.display = 'none';
		}
    else		
		body_click = 'true' ;
}
function hideOnClose(calendar)
{
     body_click = 'true';
     var currentUrl =  document.location.href;    
     currentUrl = currentUrl.toLowerCase();
     if((currentUrl.indexOf('addonshoppingcart.aspx') >0) || (currentUrl.indexOf('shoppingcart.aspx') >0))
     {     
        hideCalendarOnShoppingCart(currCal);
     }
     else
     {
        hideCalendar();
     }
}


function getMonthString(month)
{	
//Commented By Mukesh
//	this.monthLabel = new Array(
//		"January", "February", "March", "April"
//		, "May", "June", "July", "August"
//		, "September", "October", "November", "December");
//End of Commenting
////Added By Mukesh On behalf of above
monthArray = new getMonthArry()
this.monthLabel = new Array();
this.monthLabel  = this.monthArray.monthLabel;
////End of Add
    return this.monthLabel[month];
}

function getDayString(day)
{
 	//this.dayLabel = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");//Commented By mukesh
// 	//Added by Mukesh
 	dayArray = new getDayArry()
    this.dayLabel = new Array();
    this.dayLabel  = this.dayArray.dayLabel;
//    //end
	return this.dayLabel[day];
}


function getMonthFromString(month)
{	
//	this.monthLabel = new Array(
//		"January", "February", "March", "April"
//		, "May", "June", "July", "August"
//		, "September", "October", "November", "December");
		
//		//Added By Mukesh On behalf of above
monthArray = new getMonthArry()
this.monthLabel = new Array();
this.monthLabel  = this.monthArray.monthLabel;
////End of Add
		
	for(var i11 = 0; i11 < 12 ; i11++)	
	{
	    if(this.monthLabel[i11] == month)
	        return i + 1; 
	}
    return 1;
}

function resetCal(SEvent)
{
    //alert('Check resetCal');
	cal2.holidayDates = new Array();
	cal2.eventDates = new Array();
	hDaycounter = 0;
	eDaycounter = 0;
	var tmp = new Array();
	tmp = SEvent.split(',')
	for(var i = 0;i < tmp.length;i++){
		var x = tmp[i].split("~");
		if (x[2] == 'H'){ 
			cal2.holidayDates[hDaycounter] = new Array(2);
			cal2.holidayDates[hDaycounter][0] = x[0];
			cal2.holidayDates[hDaycounter][1] = x[1];
			hDaycounter += 1 ;
		}
		if (x[2] == 'E'){
			cal2.eventDates[eDaycounter] = new Array(2);
			cal2.eventDates[eDaycounter][0] = x[0];
			cal2.eventDates[eDaycounter][1] = x[1];
			eDaycounter += 1 ;
		}
	}
	renderCalendar (cal2); 
}

function updateFromSingle (sender, helper) {
	newDate = new Date (helper.value);
	newDate.setUTCDate(newDate.getUTCDate()+1);
	sender.calendarDate = newDate;
	renderCalendar (sender);
}

function updateFromMultiDay (sender, helper) {

	if (isNaN(helper.value)) {
		helper.value = sender.calendarDate.getUTCDate();
		return false;
	}

	sender.calendarDate.setUTCDate(helper.value);
	renderCalendar (sender);
}
function updateFromMultiMonth (sender, helper) {

	if (isNaN(helper.value)) {
		helper.value = sender.calendarDate.getUTCMonths() -1;
		return false;
	}
	
	sender.calendarDate.setUTCMonth(helper.value-1);
	renderCalendar (sender);
}
function updateFromMultiYear (sender, helper) {

	if (isNaN(helper.value)) {
		helper.value = sender.calendarDate.getUTCFullYear();
		return false;
	}
	
	sender.calendarDate.setUTCFullYear(helper.value);
	renderCalendar (sender);
}
function getFirstCalendarDate (calendar)
{
	return new Date (
		calendar.calendarDate.getUTCFullYear()
		, calendar.calendarDate.getUTCMonth()
		, 1
	);
}
function renderCalendar (calendar)
{
   
    var currDate = new Date();  
	calHtml1 =  ("<table id=\"cal_" + calendar.attachedId + "\" class=\"" + calendar.calendarStyle +"\">");
	
	calHtml1 +=  ("<tr><td align=left valign=top colspan=2>");	
	calHtml1 +=  buildTopHeader(calendar,0,currDate);
	calHtml1 +=  ("</td></tr>");	
	
	calHtml1 +=  ("<tr><td align=left valign=top>");	
	calHtml1 +=  ("<table id=\"cal_" + calendar.attachedId + "\" class=\"" + calendar.calendarStyle +"\">");
	
	calHtml1 += ((calendar.scrolling)?buildHeader(calendar,0):buildStaticHeader(calendar));	
	calHtml1 += buildCalendarTable (calendar,0,currDate);        
	calHtml1 += ("</table>");
	calHtml1 +=  ("</td>");	
	
	// we are forwarding current date to next month for rendering next month
	calendar.calendarDate.setUTCMonth(calendar.calendarDate.getUTCMonth() + 1);
	
	calHtml1 +=  ("<td  valign=top>");	
	calHtml1 +=  ("<table id=\"cal_" + calendar.attachedId + "\" class=\"" + calendar.calendarStyle +"\">");
	
	calHtml1 += ((calendar.scrolling)?buildHeader(calendar,1):buildStaticHeader(calendar));		
	calHtml1 += buildCalendarTable (calendar,1,currDate);
        
	calHtml1 += ("</table>");
	calHtml1 +=  ("</td></tr>");
	
	// for building footer	
	calHtml1 +=  ("<tr><td colspan=2  style=\"background-color:#ffffff;\">");	
	if (calendar.name != 'calReminder')
	{
	    calHtml1 +=  ("<table id=\"cal_" + calendar.attachedId + "\"  width=100% align=center border=0 cellspacing=0 cellpadding=0>");
        calHtml1 += buildFooter();	
	    calHtml1 += ("</table>");
    }    
	calHtml1 +=  ("</td></tr>");	
	calHtml1 += ("</table>");
	//alert('Test Lok');
   if(document.getElementById("cal_" + calendar.attachedId + "_display") != null)
        document.getElementById("cal_" + calendar.attachedId + "_display").innerHTML = calHtml1; //It Will Not Work in i.e 6
        
        
        
   calendar.calendarDate.setUTCMonth(calendar.calendarDate.getUTCMonth() - 1);
   
}

function scrollMonthBack (calendar)
{
	calendar.calendarDate.setUTCMonth(calendar.calendarDate.getUTCMonth() - 1);
	renderCalendar (calendar);
}

function selectDate (calendar, day,count)
{  
    //Below is Commented By Mukesh RDPL
      if(count=="0")
      {
            calendar.calendarDate.setUTCMonth(calendar.calendarDate.getUTCMonth());
            calendar.calendarDate.setUTCDate(day);
            setFieldValue(calendar.attachedId, calendar.calendarDate,count);
            calendar.calendarDate.setUTCMonth(calendar.calendarDate.getUTCMonth() - count);
            body_click = 'true' ;
      }
      if(count=="1")
      {
            calendar.calendarDate.setUTCMonth(calendar.calendarDate.getUTCMonth()+count);
            calendar.calendarDate.setUTCDate(day);
            setFieldValue(calendar.attachedId, calendar.calendarDate,count);
            calendar.calendarDate.setUTCMonth(calendar.calendarDate.getUTCMonth() - count);
            body_click = 'true' ;
      }
     renderCalendar(calendar);
       
     var currentUrl =  document.location.href;    
     currentUrl = currentUrl.toLowerCase();
     //if((currentUrl.indexOf('shoppingcart.aspx') >0) || (currentUrl.indexOf('ShoppingCart.aspx') >0) || (currentUrl.indexOf('SHOPPINGCART.ASPX') >0))
     if((currentUrl.indexOf('addonshoppingcart.aspx') >0) || (currentUrl.indexOf('shoppingcart.aspx') >0))
     {     
        hideCalendarOnShoppingCart(currCal);
     }
     else
     {
        hideCalendar();
        AddToBasketImage();//To enable calender
     }
     //Below is Commented By Mukesh RDPL
    
//    if (calendar.name != 'calReminder')
//        getDeliveryCharge();    
//	if (!calendar.viewOnly) {alert("2")
//	    calendar.calendarDate.setUTCMonth(calendar.calendarDate.getUTCMonth() + count);
//		calendar.calendarDate.setUTCDate(day);
//		setFieldValue(calendar.attachedId, calendar.calendarDate,count);
//	    calendar.calendarDate.setUTCMonth(calendar.calendarDate.getUTCMonth() - count);
//		renderCalendar (calendar);
//			
//		body_click = 'true' ;
//		if (calendar.name != 'calReminder')
//		{alert("3")
//		    hideCalendar();		    
//		    AddToBasketImage();
//		}    
//	}
}

function scrollMonthForward (calendar)
{
	calendar.calendarDate.setUTCMonth(calendar.calendarDate.getUTCMonth() + 1);
	renderCalendar (calendar);
}

function setFieldValue(fieldId, date,count) { 
    if(count == 0)
	    document.getElementById(fieldId).value = getDayString(date.getUTCDay()) + ", " + date.getUTCDate()  + " " + getMonthString(date.getUTCMonth()) + ", " + date.getUTCFullYear();
	else 
	    document.getElementById(fieldId).value = getDayString(date.getUTCDay()) + ", " + date.getUTCDate()  + " " + getMonthString(date.getUTCMonth()) + ", " + date.getUTCFullYear();	    
	    
	    //AddToBasketImageForCalender();
}

function getFieldValue(fieldId, calendar)
 {   
    var fieldVal = document.getElementById(fieldId).value;
    if (fieldVal != '')
    {
        var currDate = fieldVal.substring(fieldVal.indexOf(',') + 2);   
        var month = currDate.substring(currDate.indexOf(' ') + 1,currDate.indexOf(',') );
        var monthNo = getMonthFromString(month);
        currDate = currDate.replace(' ' + month + ', ', '/');
        var dateNo = currDate.substring(0,currDate.indexOf('/') );
        currDate = currDate.replace(currDate.substring(0,currDate.indexOf('/') ) + '/' ,(parseInt(dateNo) + 1) + '/' );
        currDate = monthNo + '/' + currDate;
        
	    var newDate =  new Date(currDate);
	    
	    calendar.calendarDate.setUTCDate(dateNo);
	    calendar.calendarDate.setUTCMonth(monthNo);
        return newDate;
    }   
    return new Date();
}
//
//dayArray = new getDayArry()
//    this.dayLabel = new Array();
//    this.dayLabel  = this.dayArray.dayLabel;
    
function buildFooter()//Commented By Mukesh RDPL
{
    strday = new getStringResources()
     this.offdayLabel = this.strday.offdayLabel;
     this.spldayLabel = this.strday.specialdayLabel;
     this.HolidayLabel = this.strday.holidayLabel;
    footer = "";
    footer += "<tr class=\"cal_header\"  style=\"background-color:#ffffff;\">";
    footer += "<td></td>";
    footer += "<td><span class='cal_offday' width=30px >DD</span></td>";
    footer += "<td width=100px >"+this.offdayLabel+"</td>";//footer += "<td width=100px >Off day</td>";//commented and added by mukesh RDPL
    footer += "<td><span class=\"cal_event\" width=30px  >DD</span></td>";
    footer += "<td width=100px >"+this.spldayLabel+"</td>";//footer += "<td width=100px >Special Day</td>";//commented and added by mukesh RDPL
    footer += "<td><span class=\"cal_holiday\" width=30px  >DD</span></td>";
    footer += "<td width=100px >"+HolidayLabel+"</td>";//footer += "<td width=100px >Holiday</td>";//commented and added by mukesh RDPL
    footer += "</tr>";
    return footer;	
}


function buildTopHeader (calendar,month, currDate)
{
    //alert(calendar.calendarDate.getUTCMonth() + '<=' + calendar.minDate.getUTCMonth());
	enableLeft = true;
	enableRight = true;
	
	if (calendar.minDate != "--") 
	{
		if (calendar.calendarDate.getUTCFullYear() <= calendar.minDate.getUTCFullYear())
		{
			if (calendar.calendarDate.getUTCMonth() <= calendar.minDate.getUTCMonth())
			{
				enableLeft = false;
			}
		}
	}

	if (calendar.maxDate != "--") 
	{
		if (calendar.calendarDate.getUTCFullYear() >= calendar.maxDate.getUTCFullYear())
		{
			if (calendar.calendarDate.getUTCMonth() >= calendar.maxDate.getUTCMonth())
			{
				enableRight = false;
			}
		}
	}

	calHtml2 = "";
	
	calHtml2 +=  "<table width=100% border=0 cellspacing=0 cellpadding=0>";
	
    calHtml2 +=  (
		"<tr class=\""
		+ calendar.headerStyle
		+ "\">");
	calHtml2 +=  (
	    "<td style=\"background-color:#ffffff;\" colspan=6></td>"
	    + "<td align=\"right\" style=\"background-color:#ffffff;cursor:hand;\" class=\""
	    + calendar.headerCellStyle
	    //+ ("\" onclick=\"body_click = 'true';hideCalendar1('" + calendar.attachedId + "');")
	    + ("\" onclick=\"hideOnClose('"+calendar+"');")
	    + "\">"
	    + "<img src=\"images/close1.gif\" alt=\"close calendar\"/>"
	    + "</td>");
	calHtml2 += ("</tr>");
	
	calHtml2 +=  (
		"<tr class=\""
		+ calendar.headerStyle
		+ "\">");
    calHtml2 +=  (
	    "<td style=\"font-size:12pt;font-weight:bold;background-color:#ffffff;cursor:hand;\"  class=\""
	    + calendar.headerCellStyle
	    + ((enableLeft)?("\" onclick=\"scrollMonthBack(" + calendar.name + ")"):"")
	    + "\">"
	    + ((enableLeft)?calendar.controlLeft:calendar.controlLeftDisabled)
	    + "</td>");
	calHtml2 +=  (
		"<td colspan=\"5\" style=\"width:100%;text-align:center;background-color:#ffffff;\" class=\""
		+ calendar.headerCellStyleLabel
		+ "\">"
		+ currDate.getUTCDate()
		+ ", " + calendar.monthLabels[currDate.getUTCMonth()] 
		+ " " + currDate.getUTCFullYear()
		+ "</td>");
	
    calHtml2 +=  (
	    "<td style=\"font-size:12pt;font-weight:bold;background-color:#ffffff;cursor:hand;\" class=\""
	    + calendar.headerCellStyle
	    + ((enableRight)?("\" onclick=\"scrollMonthForward(" + calendar.name + ")"):"")
	    + "\">"
	    + ((enableRight)?calendar.controlRight:calendar.controlRightDisabled)
	    + "</td>");
	
	calHtml2 += ("</tr>");
	calHtml2 += ("</table>");
	return calHtml2
}

function buildHeader (calendar,month)
{

	enableLeft = true;
	enableRight = true;
	
	if (calendar.minDate != "--") 
	{
		if (calendar.calendarDate.getUTCFullYear() <= calendar.minDate.getUTCFullYear())
		{
			if (calendar.calendarDate.getUTCMonth() <= calendar.minDate.getUTCMonth())
			{
				enableLeft = false;
			}
		}
	}

	if (calendar.maxDate != "--") 
	{
		if (calendar.calendarDate.getUTCFullYear() >= calendar.maxDate.getUTCFullYear())
		{
			if (calendar.calendarDate.getUTCMonth() >= calendar.maxDate.getUTCMonth())
			{
				enableRight = false;
			}
		}
	}

	calHtml2 = "";
	
	calHtml2 +=  (
		"<tr class=\""
		+ calendar.headerStyle
		+ "\">");
    calHtml2 +=  (
	    "<td  class=\""
	    + calendar.headerCellStyle
	    + "\">"
	    + "</td>");
	calHtml2 +=  (
		"<td colspan=\"5\" class=\""
		+ calendar.headerCellStyleLabel
		+ "\">"
		+ calendar.monthLabels[calendar.calendarDate.getUTCMonth()] 
		+ ", " + calendar.calendarDate.getUTCFullYear()
		+ "</td>");
		
	    calHtml2 +=  (
	    "<td class=\""
	    + calendar.headerCellStyle
	    + "\">"
	    + "</td>");
	
	calHtml2 += ("</tr>");
	
	calHtml2 +=  (
		"<tr class=\""
		+ calendar.headerStyle
		+ "\">")

	for (i = 0; i < 7; i++) {
		showDay = i + calendar.firstDayOfWeek;
		if (showDay > 6) showDay = showDay - 7;
		calHtml2 +=  (
			"<td class=\""
			+ calendar.headerCellStyle
			+ "\">"
			+ calendar.dayLabels[showDay]
			+ "</td>");
	}

	calHtml2 += ("</tr>");
	return calHtml2
}

function buildStaticHeader (calendar)
{
	calHtml2 = "";
	
	calHtml2 +=  (
		"<tr class=\""
		+ calendar.headerStyle
		+ "\">");
	calHtml2 +=  (
		"<td colspan=\"7\" class=\""
		+ calendar.headerCellStyleLabel
		+ "\">"
		+ calendar.monthLabels[calendar.calendarDate.getUTCMonth()] 
		+ ", " + calendar.calendarDate.getUTCFullYear()
		+ "</td>");	
	calHtml2 += ("</tr>");
	
	calHtml2 +=  (
		"<tr class=\""
		+ calendar.headerStyle
		+ "\">")

	for (i = 0; i < 7; i++) {
		showDay = i + calendar.firstDayOfWeek;
		if (showDay > 6) showDay = showDay - 7;
		calHtml2 +=  (
			"<td class=\""
			+ calendar.headerCellStyle
			+ "\">"
			+ calendar.dayLabels[showDay]
			+ "</td>");
	}

	calHtml2 += ("</tr>");
	return calHtml2
}

function RenderDayDisabled (calendar, currentDate)
{
	calHtml += ('<td class="day">');
	calHtml += ("<span class=\"" + calendar.disabledDayStyle + "\">");
	calHtml += (currentDate.getUTCDate());
	calHtml += ("</span>");
	calHtml += ("</td>");
}

function RenderDayOff (calendar, currentDate, dayStyle)
{
	currentDayStyle = dayStyle;
	calHtml += ('<td class="day">');
	calHtml += ("<span class=\"" + dayStyle + "\" >");
	calHtml += (currentDate.getUTCDate());
	calHtml += ("</span>");
	calHtml += ("</td>");
}

function RenderDayEnabled (calendar, currentDate, dayStyle,count)
{  
	currentDayStyle = dayStyle;
	calHtml += ('<td class="day">');
	calHtml += ("<span class=\"" + dayStyle + "\" onclick=\"selectDate(" + calendar.name + ", " + currentDate.getUTCDate() + "," + count + "); "  + calendar.name + ".selectEvent('');\">");
	calHtml += (currentDate.getUTCDate());
	calHtml += ("</span>");
	calHtml += ("</td>");
}

function RenderDayEvent (calendar, currentDate, dayStyle, eventId, tooltip,count)
{
	currentDayStyle = dayStyle;
	calHtml += ('<td class="day">');
	calHtml += ("<span title=\"" + tooltip + "\"  class=\"" + dayStyle + "\" onclick=\"selectDate(" + calendar.name + ", " + currentDate.getUTCDate() + "," + count + "); " + calendar.name + ".selectEvent('" + tooltip + "');\">");
	calHtml += (currentDate.getUTCDate());
	calHtml += ("</span>");
	calHtml += ("</td>");
}

function RenderDayOff (calendar, currentDate, dayStyle, eventId, tooltip,count)
{
     strday = new getStringResources()
     this.offdayLabel = this.strday.offdayLabel;
     
	tooltip = this.offdayLabel;//tooltip = 'Off Day';
	currentDayStyle = dayStyle;
	calHtml += ('<td class="day">');
	calHtml += ("<span title=\"" + tooltip + "\"  class=\"" + dayStyle + "\" >");
	calHtml += (currentDate.getUTCDate());
	calHtml += ("</span>");
	calHtml += ("</td>");
}
function RenderDayReminder (calendar, currentDate, dayStyle, eventId, tooltip,count)
{
	currentDayStyle = dayStyle;
	calHtml += ('<td class="day">');
	calHtml += ("<span title=\"" + tooltip + "\"  class=\"" + dayStyle + "\" onclick=\"selectDate(" + calendar.name + ", " + currentDate.getUTCDate() + "," + count + "); " + calendar.name + ".selectEvent('" + tooltip + "');\">");
	calHtml += (currentDate.getUTCDate());
	calHtml += ("</span>");
	calHtml += ("</td>");
}

function RenderDayForce (calendar, currentDate, dayStyle, eventId, tooltip,count)
{
	currentDayStyle = dayStyle;
	calHtml += ('<td class="day">');
	calHtml += ("<span title=\"" + tooltip + "\"  class=\"" + dayStyle + "\" onclick=\"selectDate(" + calendar.name + ", " + currentDate.getUTCDate() + "," + count + "); " + calendar.name + ".selectEvent('" + tooltip + "');\">");
	calHtml += (currentDate.getUTCDate());
	calHtml += ("</span>");
	calHtml += ("</td>");
}


function RenderDayHoliday (calendar, currentDate, dayStyle, eventId, tooltip)
{
   
	currentDayStyle = dayStyle;
	calHtml += ('<td class="day">');
	calHtml += ("<span title=\"" + tooltip + "\" class=\"" + dayStyle + "\" onclick=\"" + calendar.name + ".selectEvent('');\" >");
	calHtml += (currentDate.getUTCDate());
	calHtml += ("</span>");
	calHtml += ("</td>");
}

function RefreshCalender(calString ,calendar)
{
    //debugger;
    
    var str = calString.split('^');
    
    //force day Array
    var forceDatesArray =new Array();
    var forceDatesArrayTemp =str[0].split('_');
    var i=0;
    for (i=0;i<str[0].split('_').length;i++)
    {
     var f = forceDatesArrayTemp[i];
     forceDatesArray[i]= f.split('*');
    }
    calendar.forceDates = forceDatesArray;
    //End Force Day
    
    //Event Array
    var eventDatesArray =new Array();
    var eventDatesArrayTemp =str[1].split('_');
    var i=0;
    for (i=0;i<str[1].split('_').length;i++)
    {
     var e = eventDatesArrayTemp[i];
     eventDatesArray[i]= e.split('*');
    }
    calendar.eventDates = eventDatesArray;
    //End Event
    
    //Holiday Array
    var holidayArray =new Array();
    var holidayArrayTemp =str[2].split('_');
    i=0;
    for (i=0;i<str[2].split('_').length;i++)
    {
     var h = holidayArrayTemp[i];
     holidayArray[i]= h.split('*');
    }
    calendar.holidayDates = holidayArray;
    //End Holiday
    
    //Reminder Array
    var reminderDatesArray =new Array();
    var reminderDatesArrayTemp =str[3].split('_');
    i=0;
    for (i=0;i<str[3].split('_').length;i++)
    {
     var r = reminderDatesArrayTemp[i];
     reminderDatesArray[i]= r.split('*');
    }
    calendar.reminderDates = reminderDatesArray;
    //End Reminder
    
    //Start Date
    calendar.minDate = new Date();
    //setCalendarDate(calendar,calendar.minDate);
    calendar.minDate.setDate(calendar.minDate.getDate()+ parseInt(str[4]));
    //End Start Date
    
    //Month an Day Lable
    calendar.monthLabel = str[5].split(',');
    calendar.dayLabels = str[6].split(','); 
    
    calendar.offdayLabel =str[7]; 
    calendar.specialdayLabel =str[8]; 
    calendar.holidayLabel =str[9]; 
    //End of Month and Day Lable
    
    calendar.offDays = str[10];
    
    
    calendar.scrolling = true;
    //calendar.selectEvent = function(eventId) {};
    
    //calendar.selectEvent = new Function();
    
    renderCalendar (calendar);
    this.body_click = 'true';
    hideCalendar();
}

//Added By Mukesh To Refresh Calender on Rest of World
function RefreshCalenderROW(calString ,calendar,dd)
{
    RefreshCalender(calString ,calendar);
//    var str = calString.split('^');

//    //force day Array
//    var forceDatesArray =new Array();
//    var forceDatesArrayTemp =str[0].split('_');
//    var i=0;
//    for (i=0;i<str[0].split('_').length;i++)
//    {
//     var f = forceDatesArrayTemp[i];
//     forceDatesArray[i]= f.split('*');
//    }
//    calendar.forceDates = forceDatesArray;
//    //End Force Day
//    
//    //Event Array
//    var eventDatesArray =new Array();
//    var eventDatesArrayTemp =str[1].split('_');
//    var i=0;
//    for (i=0;i<str[1].split('_').length;i++)
//    {
//     var e = eventDatesArrayTemp[i];
//     eventDatesArray[i]= e.split('*');
//    }
//    calendar.eventDates = eventDatesArray;
//    //End Event
//    
//    //Holiday Array
//    var holidayArray =new Array();
//    var holidayArrayTemp =str[2].split('_');
//    i=0;
//    for (i=0;i<str[2].split('_').length;i++)
//    {
//     var h = holidayArrayTemp[i];
//     holidayArray[i]= h.split('*');
//    }
//    calendar.holidayDates = holidayArray;
//    //End Holiday
//    
//    //Reminder Array
//    var reminderDatesArray =new Array();
//    var reminderDatesArrayTemp =str[3].split('_');
//    i=0;
//    for (i=0;i<str[3].split('_').length;i++)
//    {
//     var r = reminderDatesArrayTemp[i];
//     reminderDatesArray[i]= r.split('*');
//    }
//    calendar.reminderDates = reminderDatesArray;
//    //End Reminder
//    
//    //Start Date
//    
//    calendar.minDate = new Date();
//    debugger;
//    //calendar.minDate = Date.parse(str[10]);
//    //if(dd)
//    //{
//        //newDate = new Date (dd);
//        //calendar.minDate = newDate;
//        setCalendarDate(calendar,calendar.minDate);
//        calendar.minDate.setDate(calendar.minDate.getDate() + parseInt(str[4]));
//    //}
//    //End Start Date
//    
//    //Month an Day Lable
//    calendar.monthLabel = str[5].split(',');
//    calendar.dayLabels = str[6].split(','); 
//    //debugger;
//    calendar.offdayLabel =str[7]; 
//    calendar.specialdayLabel =str[8]; 
//    calendar.holidayLabel =str[9]; 
//    //End of Month and Day Lable
//    
//    calendar.scrolling = true;
//    calendar.selectEvent = function(eventId) {};
//    renderCalendar (calendar);
//    this.body_click = 'true';
//    hideCalendar();
}

function buildCalendarTable (calendar,month,currDate)
{
	currentDate = getFirstCalendarDate(calendar);
	odd = 0;
	while (currentDate.getUTCDay() != calendar.firstDayOfWeek)
	{
		currentDate.setUTCDate(currentDate.getUTCDate() - 1);
	}
    var counter = 0;
	calHtml = "";
	do
	{
	    counter += 1;
		odd += 1;

		calHtml +=  (
			"<tr class=\"" + (((odd%2)==0) ? calendar.evenWeekStyle : calendar.oddWeekStyle) + "\">")

		for (i = 0;i < 7;i++)
		{
			currentDayStyle = calendar.dayStyle;
			currentEventStyle = calendar.commonDayStyle;
			currentDateString = currentDate.getUTCFullYear() + "/" + (currentDate.getUTCMonth()+1) + "/" + currentDate.getUTCDate();
	        var forceday = -1;
			for (var k=0; k < calendar.forceDates.length; k++)
			{
				if (calendar.forceDates[k][0] == currentDateString) 
				{
					forceday = k;
					k = calendar.forceDates.length;
				}
			}
			
			if (currentDate < calendar.minDate) 
			{
				RenderDayDisabled (calendar, currentDate);
			} 
			else if (currentDate > calendar.maxDate) 
			{
				RenderDayDisabled (calendar, currentDate);
			} 
			else if (currentDate.getUTCMonth() != calendar.calendarDate.getUTCMonth())
			{
				RenderDayDisabled (calendar, currentDate);
			}			
			else if (forceday > -1) 
			{
					style = calendar.forceDayStyle;
					RenderDayForce (calendar, currentDate, style, calendar.forceDates[forceday][0], calendar.forceDates[forceday][1],month);
					k = calendar.forceDates.length;
			}
            //else if (currentDate.getUTCDate() == calendar.calendarDate.getUTCDate())
            else if (currentDate.getUTCDate() == currDate.getUTCDate() && currentDate.getUTCMonth() == currDate.getUTCMonth() && currentDate.getUTCFullYear() == currDate.getUTCFullYear())			
			{
				if (calendar.offDays.indexOf(currentDate.getUTCDay()) != -1)
				{
					if (calendar.allowWeekends == true)
					{
						RenderDayEnabled (calendar, currentDate, calendar.todayDayStyle,month);
					} 
					else 
					{
						RenderDayDisabled (calendar, currentDate);	
						month = calendar.calendarDate.getUTCMonth();
						calendar.calendarDate.setUTCDate(calendar.calendarDate.getUTCDate()+1);
						if (month != calendar.calendarDate.getUTCMonth())
						{
							renderCalendar(calendar);
						}

					}
				}
				else {
					if (calendar.allowWeekdays == true)
					{
						RenderDayEnabled (calendar, currentDate, calendar.todayDayStyle,month);
					} 
					else 
					{
						RenderDayDisabled (calendar, currentDate);	
						month = calendar.calendarDate.getUTCMonth();
						calendar.calendarDate.setUTCDate(calendar.calendarDate.getUTCDate()+1);
						if (month != calendar.calendarDate.getUTCMonth())
						{
							renderCalendar(calendar);
						}
					}
				}
			}
			else if (calendar.offDays.indexOf(currentDate.getUTCDay()) != -1)
			{
				if (calendar.allowWeekends == true)
				{
				
					style = calendar.offDayStyle
					
					for (j=0; j < calendar.eventDates.length; j++)
					{
						if (calendar.eventDates[j][0] == currentDateString) 
						{
							style = calendar.eventDayStyle;
							//Code is changed to call Event description as well - v8.3 -- Start
							//RenderDayEvent (calendar, currentDate, style, calendar.eventDates[j][0],month);
							RenderDayEvent (calendar, currentDate, style, calendar.eventDates[j][0], calendar.eventDates[j][1],month);
							//Code is changed to call Event description as well -- End
							j = calendar.eventDates.length;
						}
					}
					
					for (j=0; j < calendar.offDates.length; j++)
					{
						if (calendar.offDates[j][0] == currentDateString) 
						{
							style = calendar.offDayStyle;
							RenderDayOff (calendar, currentDate, style, calendar.offDates[j][0],month);
							j = calendar.offDates.length;
						}
					}
					
					if (style == calendar.offDayStyle)
					{
						for (j=0; j < calendar.reminderDates.length; j++)
					    {
    						if (calendar.reminderDates[j][0] == currentDateString) 
	    					{
		    					style = calendar.reminderDayStyle;
			    				RenderDayReminder (calendar, currentDate, style, calendar.reminderDates[j][0], calendar.reminderDates[j][1],month);
			    				j = calendar.reminderDates.length;
				    		}
					    }
					}
					
					if (style == calendar.offDayStyle)
					{
						RenderDayOff (calendar, currentDate, style);
					}
				} 
				else 
				{
					RenderDayDisabled (calendar, currentDate);	
				}
			} 
			else {
				if (calendar.allowWeekdays == true)
				{
					style = calendar.commonDayStyle;

					for (j=0; j < calendar.eventDates.length; j++)
					{
						if (calendar.eventDates[j][0] == currentDateString) 
						{
							style = calendar.eventDayStyle;
							RenderDayEvent (calendar, currentDate, style, calendar.eventDates[j][0], calendar.eventDates[j][1],month);
							j = calendar.eventDates.length;							
						}
					}

					for (j=0; j < calendar.offDates.length; j++)
					{
						if (calendar.offDates[j][0] == currentDateString) 
						{
							style = calendar.offDayStyle;
							RenderDayEvent (calendar, currentDate, style, calendar.offDates[j][0], calendar.offDates[j][1],month);
							j = calendar.offDates.length;							
						}
					}
                //for displaying Common Date

                    if (style == calendar.commonDayStyle)
                    {
					  for (j=0; j < calendar.holidayDates.length; j++)
					  { 
						if (calendar.holidayDates[j][0] == currentDateString) 
						{
							style = calendar.holidayDayStyle;
							RenderDayHoliday (calendar, currentDate, style, calendar.holidayDates[j][0],calendar.holidayDates[j][1]);						
							j = calendar.holidayDates.length;
						}
					  }
                    }

                    // for displaying Personal Event(Reminder)
					if (style == calendar.commonDayStyle)
					{
						for (j=0; j < calendar.reminderDates.length; j++)
					    {
    						if (calendar.reminderDates[j][0] == currentDateString) 
	    					{
		    					style = calendar.reminderDayStyle;
			    				RenderDayReminder (calendar, currentDate, style, calendar.reminderDates[j][0], calendar.reminderDates[j][1],month);
			    				j = calendar.reminderDates.length;
				    		}
					    }
					}
					// end of reminder bloc
					
					if (style == calendar.commonDayStyle)					
					{
						RenderDayEnabled (calendar, currentDate, style,month);

					}
				} 
				else 
				{
					RenderDayDisabled (calendar, currentDate);	
				}
			}

			currentDate.setUTCDate(currentDate.getUTCDate() + 1);	
		}
		
		calHtml += ("</tr>");
		

	} while (currentDate.getUTCMonth() == calendar.calendarDate.getUTCMonth() || counter <= 5  );
	return calHtml;
}


function refreshOnSMChange()
{
    if(document.getElementById('divState') != null)
        document.getElementById('divState').style.display = 'none';
    //document.getElementById('divState').innerHTML = '';
    if(document.getElementById('divCal') != null)
        document.getElementById('divCal').style.display='none';
    if(document.getElementById('divFlag') != null)
        document.getElementById('divFlag').style.display='none';
    if(document.getElementById('divTime') != null)
        document.getElementById('divTime').style.display='none';
    if(document.getElementById('tb') != null)
        document.getElementById('tb').value= '';
    //document.getElementById('divPrice').innerHTML = '';
}