if (typeof(LinkDev) == 'undefined')
{
    LinkDev = new Object();
}

if (typeof(LinkDev.WebMonkey) == 'undefined')
{
    LinkDev.WebMonkey = new Object();
}

if (typeof(LinkDev.WebMonkey.CalendarControl) == 'undefined')
{
    LinkDev.WebMonkey.CalendarControl = new Object();
}


LinkDev.WebMonkey.CalendarControl.RegisteredCalendars = new Array();
LinkDev.WebMonkey.CalendarControl.OriginalOnLoad = null;
LinkDev.WebMonkey.CalendarControl.OriginalOnBodyClick = null;
LinkDev.WebMonkey.CalendarControl.OriginalOnBodyClickSet = false;
LinkDev.WebMonkey.CalendarControl.ActiveCalendar = null;
LinkDev.WebMonkey.CalendarControl.ActiveCalendarTime = 0;
LinkDev.WebMonkey.CalendarControl.MouseOverDiv = null;
LinkDev.WebMonkey.CalendarControl.MouseOverSel = null;

LinkDev.WebMonkey.CalendarControl.CalendarInfo = function(id, styles, monthNames, shortMonthNames, 
            dayNames, shortDayNames, 
            nextPrevPattern, monthDayPattern, textBoxPattern, titlePattern,
            value, today, calendarType, firstWeekDay, hasButton, popFlags, popX, popY, adjustment, weekend,
            yearsToShow, minDate, maxDate)
{
    this.id = id;
    this.calendarStyles = WebMonkey_Values[styles];
    this.monthNames = WebMonkey_Values[monthNames];
    this.shortMonthNames = WebMonkey_Values[shortMonthNames];
    this.dayNames = WebMonkey_Values[dayNames];
    this.shortDayNames = WebMonkey_Values[shortDayNames];
    this.nextPrevPattern = nextPrevPattern;
    this.textBoxPattern = textBoxPattern;
    this.titlePattern = titlePattern;
    this.monthDayPattern = monthDayPattern;
    this.value = value;
    this.today = today;
    this.calendarType = calendarType;
    this.firstWeekDay = firstWeekDay;
    this.hasButton = hasButton;
    this.popFlags = popFlags;
    this.popX = popX;
    this.popY = popY;
    this.adjustment = adjustment;
    this.weekend = weekend;
    this.yearsToShow = yearsToShow;
    this.minDate = new LinkDev.WebMonkey.CalendarDay(minDate, this.calendarType, this.adjustment);
    this.maxDate = new LinkDev.WebMonkey.CalendarDay(maxDate, this.calendarType, this.adjustment);
    
    var link = document.getElementById(this.id + "_nextMonth");
    if(link != null)
    {
        var ctrl = document.getElementById(this.id);
        var isRtl = false;
        while(ctrl != null)
        {
            if(ctrl.dir != null && ctrl.dir.toString().toLowerCase() == "rtl")
            {
                isRtl = true;
                break;
            }
            ctrl = ctrl.parentElement;
        }
        link.parentNode.align = isRtl ? "left" : "right";
    }
    
    document.getElementById(this.id).info = this;
    document.getElementById(this.id).getSelectedDate = function()
    {
        var calendarInfo = this.info;
        var sDate = document.getElementById(this.id + "_selection").value;
        if(sDate == null || sDate == "")
        {
            return null;
        }
        var first = new LinkDev.WebMonkey.CalendarDay(sDate.split(',')[0], calendarInfo.calendarType, calendarInfo.adjustment);
        return first;
    }
    
    var table = document.getElementById(this.id + "_table");
    for(i = 0; i < 6; i++)
    {
        var row = table.rows[table.rows.length - i - 1];
        var week = 5 - i;
        for(j = 0; j < 7; j++)
        {
            var cell = row.cells[row.cells.length - j - 1];
            var day = 6 - j;
            var cellid = id + "_day_" + week.toString() + "_" + day.toString();
            var element = document.createElement(hasButton ? 'a' : 'span');
            element.id = cellid;
            cell.appendChild(element);
        }
    }
    var visible = document.getElementById(this.id + "_visible");
    var selected = document.getElementById(this.id + "_selection");
    LinkDev.WebMonkey.CalendarControl.RegisteredCalendars[LinkDev.WebMonkey.CalendarControl.RegisteredCalendars.length] = new Array(this.id, visible.value, selected.value);
    if(!visible.form.calendarEventsAttached)
    {
       if(visible.form.onreset != null)
          visible.form.calendarOriginalOnReset = visible.form.onreset;
       visible.form.onreset = LinkDev.WebMonkey.CalendarControl.OnReset;
       visible.form.calendarEventsAttached = true;
    }
    
    var valueFormat = null;
    if(valueFormat == null)
        valueFormat = 'yyyy-MM-dd';
    this.valueFormat = valueFormat;
    if(!window.calendarEventsAttached)
    {
        LinkDev.WebMonkey.CalendarControl.OriginalOnLoad = window.onload;
        window.onload = LinkDev.WebMonkey.CalendarControl.OnLoad;
        window.calendarEventsAttached = true;
    }
    
    var calendarDiv = document.getElementById(id + "_div");
    if(calendarDiv != null)
    {
        if(!LinkDev.WebMonkey.CalendarControl.OriginalOnBodyClickSet)
        {
            LinkDev.WebMonkey.CalendarControl.OriginalOnBodyClick = document.body.onclick;
            document.body.onclick = LinkDev.WebMonkey.CalendarControl.OnBodyClick;
            LinkDev.WebMonkey.CalendarControl.OriginalOnBodyClickSet = true;
            LinkDev.WebMonkey.CalendarControl.OriginalOnResize = window.onresize;
            window.onresize = LinkDev.WebMonkey.CalendarControl.OnResize;
        }
        
        calendarDiv.onmouseover = function() { LinkDev.WebMonkey.CalendarControl.MouseOverDiv = this; }
        calendarDiv.onmouseout = function() { LinkDev.WebMonkey.CalendarControl.MouseOverDiv = null; }
        
        var yearSel = document.getElementById(id + "_year");
        if(yearSel != null)
        {
            yearSel.onfocus = function() { LinkDev.WebMonkey.CalendarControl.MouseOverSel = this; }
            yearSel.onblur = function() { LinkDev.WebMonkey.CalendarControl.MouseOverSel = null; }
        }
        var monthSel = document.getElementById(id + "_month");
        if(monthSel != null)
        {
            monthSel.onfocus = function() { LinkDev.WebMonkey.CalendarControl.MouseOverSel = this; }
            monthSel.onblur = function() { LinkDev.WebMonkey.CalendarControl.MouseOverSel = null; }
        }
    }
    
    
}



LinkDev.WebMonkey.CalendarControl.OnLoad = function()
{
    var i;
    var valueFormat = 'yyyy-MM-dd';
    
    for(i = 0; i < LinkDev.WebMonkey.CalendarControl.RegisteredCalendars.length; i++)
    {
        var d = LinkDev.WebMonkey.CalendarControl.RegisteredCalendars[i][2];
        var id = LinkDev.WebMonkey.CalendarControl.RegisteredCalendars[i][0]
        var calendar = document.getElementById(id);
        var calendarObj = calendar.info;
        var visible = document.getElementById(id + "_visible");
        LinkDev.WebMonkey.CalendarControl.SetVisibleMonth(id, visible.value);
        
        if(d.length == 0)
        {
            //calendar.value = "";
            calendarObj.value = "";
        }
        else
        {
            var ranges = d.split('|');
            var sel = ranges[0].split(',');
            var first = new LinkDev.WebMonkey.CalendarDay(sel[0], calendarObj.calendarType, calendarObj.adjustment);
            var date = first.getDate();
            var date = first.getDate();
            date = new LinkDev.WebMonkey.CalendarDay(date.getFullYear().toString() + '-' + (date.getMonth() + 1).toString() + '-' + date.getDate().toString(), "Gregorian", calendarObj.adjustment);
            var val = date.formatDate(valueFormat, calendarObj);
            //calendar.value = val;
            calendarObj.value = val;
            
        }
        calendar.valueFormat = calendarObj.valueFormat = valueFormat;
    }
    if(LinkDev.WebMonkey.CalendarControl.OriginalOnLoad)
    {
        LinkDev.WebMonkey.CalendarControl.OriginalOnLoad();
    }
}

LinkDev.WebMonkey.CalendarControl.HideAllCalendars = function(sender)
{
    if(LinkDev.WebMonkey.CalendarControl.MouseOverSel != null)
    {
        return;
    }
    for(var i = 0; i < LinkDev.WebMonkey.CalendarControl.RegisteredCalendars.length; i++)
    {
        var id = LinkDev.WebMonkey.CalendarControl.RegisteredCalendars[i][0];
        var div = document.getElementById(id + "_div");
        var active = LinkDev.WebMonkey.CalendarControl.ActiveCalendar;
        if(active != null)
        {
            var activeTime = LinkDev.WebMonkey.CalendarControl.ActiveCalendarTime;
            var now = new Date().getTime();
            if(now - activeTime > 200)
            {
                active = null;
            }
        }
        if(div != null && div != sender && active != div && div.style.display == '')
        {
            LinkDev.WebMonkey.CalendarControl.ToggleShow(id, null);
        }
    }
}

LinkDev.WebMonkey.CalendarControl.OnResize = function()
{
    if(typeof(LinkDev.WebMonkey.CalendarControl.OriginalOnResize) == 'function')
    {
        LinkDev.WebMonkey.CalendarControl.OriginalOnResize();
    }
    LinkDev.WebMonkey.CalendarControl.HideAllCalendars(null);
}

LinkDev.WebMonkey.CalendarControl.OnBodyClick = function()
{
    if(typeof(LinkDev.WebMonkey.CalendarControl.OriginalOnBodyClick) == 'function')
    {
        LinkDev.WebMonkey.CalendarControl.OriginalOnBodyClick();
    }
    window.setTimeout("LinkDev.WebMonkey.CalendarControl.HideAllCalendars(LinkDev.WebMonkey.CalendarControl.MouseOverDiv);", 100);
}

LinkDev.WebMonkey.CalendarControl.OnReset = function()
{
    for(var i = 0; i < LinkDev.WebMonkey.CalendarControl.RegisteredCalendars.length; i++)
    {
        var id = LinkDev.WebMonkey.CalendarControl.RegisteredCalendars[i][0];
        var v = LinkDev.WebMonkey.CalendarControl.RegisteredCalendars[i][1];
        var s = LinkDev.WebMonkey.CalendarControl.RegisteredCalendars[i][2];
        var visible = document.getElementById(id + "_visible");
        visible.value = v;
        LinkDev.WebMonkey.CalendarControl.SelectDate(id, s, true);
        //LinkDev.WebMonkey.CalendarControl.SetVisibleMonth(id, visible.value);
    }
}

LinkDev.WebMonkey.CalendarControl.NextMonth = function(id)
{
    var calendarObj = document.getElementById(id).info;
    var calendarType = calendarObj.calendarType;
    var visibleDateObj = document.getElementById(id + "_visible");
    var visibleDate = new LinkDev.WebMonkey.CalendarDay(visibleDateObj.value, calendarType, calendarObj.adjustment);
    var newVisibleDate = visibleDate.addMonths(1);
    LinkDev.WebMonkey.CalendarControl.SetVisibleMonth(id, newVisibleDate.getString());
}

LinkDev.WebMonkey.CalendarControl.PrevMonth = function(id)
{
    var calendarObj = document.getElementById(id).info;
    var calendarType = calendarObj.calendarType;
    var visibleDateObj = document.getElementById(id + "_visible");
    var visibleDate = new LinkDev.WebMonkey.CalendarDay(visibleDateObj.value, calendarType, calendarObj.adjustment);
    var newVisibleDate = visibleDate.addMonths(-1);
    LinkDev.WebMonkey.CalendarControl.SetVisibleMonth(id, newVisibleDate.getString());
}


LinkDev.WebMonkey.CalendarControl.YearChange = function(id)
{
    var yearObj = document.getElementById(id + "_year");
    if(yearObj.isInChange)
    {
        yearObj.isInChange = true;
    }
    var calendarObj = document.getElementById(id).info;
    var calendarType = calendarObj.calendarType;
    var visibleDateObj = document.getElementById(id + "_visible");
    var visibleDate = new LinkDev.WebMonkey.CalendarDay(visibleDateObj.value, calendarType, calendarObj.adjustment);
    var newVisibleDate = visibleDate.addYears(parseInt(yearObj.options[yearObj.selectedIndex].value) - visibleDate.getFullYear());
    LinkDev.WebMonkey.CalendarControl.SetVisibleMonth(id, newVisibleDate.getString());
    yearObj.isInChange = false;
}

LinkDev.WebMonkey.CalendarControl.MonthChange = function(id)
{
    var monthObj = document.getElementById(id + "_month");
    if(monthObj.isInChange)
    {
        monthObj.isInChange = true;
    }
    var calendarObj = document.getElementById(id).info;
    var calendarType = calendarObj.calendarType;
    var visibleDateObj = document.getElementById(id + "_visible");
    var visibleDate = new LinkDev.WebMonkey.CalendarDay(visibleDateObj.value, calendarType, calendarObj.adjustment);
    var newVisibleDate = visibleDate.addMonths(parseInt(monthObj.options[monthObj.selectedIndex].value) - visibleDate.getMonth());
    LinkDev.WebMonkey.CalendarControl.SetVisibleMonth(id, newVisibleDate.getString());
    monthObj.isInChange = false;
}

LinkDev.WebMonkey.CalendarControl.IsDateSelected = function (date, selection, calendarType, adjustment)
{
    if(selection == null || selection.length == 0)
        return false;
    var ranges = selection.split('|');
    for(i = 0; i < ranges.length; i++)
    {
        var firstSelected;
        var lastSelected;
        var sel = ranges[i].split(',');
        firstSelected = new LinkDev.WebMonkey.CalendarDay(sel[0], calendarType, adjustment);
        if(sel.length > 1)
        {
            lastSelected = firstSelected.addDays(parseInt(sel[1]) - 1);
        }
        else
        {
            lastSelected = firstSelected;
        }
        if(date.isInRange(firstSelected, lastSelected))
        {
            return true;
        }
    }
    return false;
}

LinkDev.WebMonkey.CalendarControl.SetVisibleMonth = function(id, sDate)
{
    var calendarObj = document.getElementById(id).info;
    var calendarType = calendarObj.calendarType;
    var visibleDate = new LinkDev.WebMonkey.CalendarDay(sDate, calendarType, calendarObj.adjustment);
    var firstDate = new LinkDev.WebMonkey.CalendarDay(sDate, calendarType, calendarObj.adjustment);
    var yearSel = document.getElementById(id + "_year");
    if(yearSel != null && calendarObj.yearsToShow == 0)
    {
        var minYear = parseInt(yearSel.options[0].value, 10);
        var maxYear = parseInt(yearSel.options[yearSel.options.length - 1].value, 10);
        var year = firstDate.getFullYear();
        if(year < minYear || year > maxYear)
        {
            return;
        }
        
    }
    var dayDiff = firstDate.getDayOfWeek() - calendarObj.firstWeekDay;
    if (dayDiff <= 0)
    {
        dayDiff += 7;
    }
    firstDate = firstDate.addDays(-dayDiff);
    var currentDate = firstDate;
    var selection = document.getElementById(id + "_selection").value;
    
    
    for(var i = 0; i < 6; i++)
    {
        var element = document.getElementById(id + "_week_" + i.toString());
        if(element != null)
        {
            element.disabled = !currentDate.isInRange(calendarObj.minDate, calendarObj.maxDate)
                || !currentDate.addDays(6).isInRange(calendarObj.minDate, calendarObj.maxDate);
            if(element.disabled)
                element.href = "javascript:void(0);";
            else
                element.href = "javascript:LinkDev.WebMonkey.CalendarControl.SelectDate('" + id + "', '" + currentDate.getString() + ",7')";
        }
        for(var j = 0; j < 7; j++)
        {
            var text = currentDate.formatDate("d", calendarObj);
            element = document.getElementById(id + "_day_" + i.toString() + "_" + j.toString());
            element.innerHTML = text;
            
            if (element.title != null)
            {
                element.title = currentDate.formatDate(calendarObj.monthDayPattern, calendarObj);
            }
            
            var styleMask = 0;
            if(selection)
            {
                if(LinkDev.WebMonkey.CalendarControl.IsDateSelected(currentDate, selection, calendarType, calendarObj.adjustment))
                {
                    styleMask += 8;
                }
            }
            var weekDay = currentDate.getDayOfWeek().toString();
            if(calendarObj.weekend.indexOf(weekDay) >= 0)
            {
                styleMask += 1;
            }
            if(visibleDate.getMonth() != currentDate.getMonth())
            {
                styleMask += 2;
            }
            if(currentDate.getString() == calendarObj.today)
            {
                styleMask += 4;
            }
            element.disabled = !currentDate.isInRange(calendarObj.minDate, calendarObj.maxDate);
            if(element.disabled)
            {
                styleMask += 16;
            }
            
            LinkDev.WebMonkey.CalendarControl.ApplyStyle(element, calendarObj.calendarStyles, styleMask);
            if(element.href != null)
            {
                if(element.disabled)
                {
                    element.href = "javascript:void(0);";
                }
                else
                {
                    element.href = "javascript:LinkDev.WebMonkey.CalendarControl.SelectDate('" + id + "', '" + currentDate.getString() + "')";
                }
            }
            currentDate = currentDate.addDays(1);
        }
    }
    var link = document.getElementById(id + "_nextMonth");
    if(link != null && calendarObj.nextPrevPattern != null && calendarObj.nextPrevPattern.length > 0)
    {
        nextMonth = visibleDate.addMonths(1);
        link.innerHTML = nextMonth.formatDate(calendarObj.nextPrevPattern, calendarObj);
    }
    link = document.getElementById(id + "_prevMonth");
    if(link != null && calendarObj.nextPrevPattern != null && calendarObj.nextPrevPattern.length > 0)
    {
        prevMonth = visibleDate.addMonths(-1);
        link.innerHTML = prevMonth.formatDate(calendarObj.nextPrevPattern, calendarObj);
    }
    link = document.getElementById(id + "_smonth");
    if(link != null)
    {
        var daysInMonth = LinkDev.WebMonkey.Dates.GetDaysInMonth(calendarType, visibleDate.getFullYear(), visibleDate.getMonth());
        link.disabled = !(visibleDate.isInRange(calendarObj.minDate, calendarObj.maxDate)
            && visibleDate.addDays(daysInMonth - 1).isInRange(calendarObj.minDate, calendarObj.maxDate));
        if(link.disabled)
        {
            link.href = "javascript:void(0);";
        }
        else
        {
            link.href = "javascript:LinkDev.WebMonkey.CalendarControl.SelectDate('" + id + "', '" 
            + visibleDate.getString() + "," 
            + daysInMonth.toString() +  "')";
        }
    }
    var title = document.getElementById(id + "_title");
    if(title != null)
    {
        title.innerHTML = visibleDate.formatDate(calendarObj.titlePattern, calendarObj);
    }
    
    document.getElementById(id + "_visible").value = sDate;
    
    if(yearSel != null && calendarObj.yearsToShow != 0 && (yearSel.selectedIndex != calendarObj.yearsToShow || yearSel.options[yearSel.selectedIndex].value != visibleDate.getFullYear().toString()))
    {
        for(i = 0; i < calendarObj.yearsToShow * 2 + 1; i++)
        {
            yearSel.options[i].value = (visibleDate.getFullYear() + i - calendarObj.yearsToShow).toString();
            yearSel.options[i].text = visibleDate.addYears(i - calendarObj.yearsToShow).formatDate("yyyy", calendarObj);
        }
        yearSel.isInChange = true;
        yearSel.selectedIndex = calendarObj.yearsToShow;
        yearSel.isInChange = false;
    }
    
    var monthSel = document.getElementById(id + "_month");
    if(monthSel != null && (monthSel.selectedIndex != (visibleDate.getMonth() - 1) || monthSel.options.length != LinkDev.WebMonkey.Dates.GetMonthsInYear(calendarType, visibleDate.getFullYear()) ))
    {
        monthSel.isInChange = true;
        while(monthSel.options.length > 0)
            monthSel.options[0] = null;
        var months = LinkDev.WebMonkey.Dates.GetMonthsInYear(calendarType, visibleDate.getFullYear());
        for(i = 1; i <= months; i++)
        {
            var opt = new Option();
            var d = new LinkDev.WebMonkey.CalendarDay(visibleDate.year.toString() + '-' + i.toString() + '-' + 1, calendarObj.calendarType, calendarObj.adjustment);
            opt.text = d.formatDate('MMMM', calendarObj);
            opt.value = i.toString();
            monthSel.options[i - 1] = opt;
        }
        monthSel.selectedIndex = visibleDate.getMonth() - 1;
        monthSel.isInChange = false;
    }
}

LinkDev.WebMonkey.CalendarControl.SelectDate = function(id, sDate, suppressEvents)
{
    if(document.getElementById(id + "_selection").value == sDate)
    {
        sDate = "";
    }
    
    document.getElementById(id + "_selection").value = sDate;
    LinkDev.WebMonkey.CalendarControl.SetVisibleMonth(id, document.getElementById(id + "_visible").value);
    var calendarObj = document.getElementById(id).info;
    var textBox = document.getElementById(id + "_text");
    
    var first;
    if(sDate == null || sDate == '')
    {
        first = null;
    }
    else
    {
        first = new LinkDev.WebMonkey.CalendarDay(sDate.split(',')[0], calendarObj.calendarType, calendarObj.adjustment);
    }
    
    if(textBox != null)
    {
        var calendarDiv = document.getElementById(id + "_div");
        if(calendarDiv.style.display == '')
        {
            LinkDev.WebMonkey.CalendarControl.ToggleShow(id, null);    
        }
        if(first == null)
        {
            textBox.value = "";
        }
        else
        {
            textBox.value = first.formatDate(calendarObj.textBoxPattern, calendarObj);
        }
    }
    if(first == null)
    {
        calendarObj.value = "";
    }
    else
    {
        var date = first.getDate();
        date = new LinkDev.WebMonkey.CalendarDay(date.getFullYear().toString() + '-' + (date.getMonth() + 1).toString() + '-' + date.getDate().toString(), "Gregorian", calendarObj.adjustment);
        calendarObj.value = date.formatDate(calendarObj.valueFormat, calendarObj);
    }
    document.getElementById(id).value = calendarObj.value;
    
    if(!suppressEvents)
    {
        if(typeof(document.getElementById(id).onselectionchange) == 'function')
        {
            document.getElementById(id).onselectionchange();
        }
    }
}

LinkDev.WebMonkey.CalendarControl.ApplyStyle = function(obj, style, styleIndex)
{
    if(obj != null)
    {
        if(obj.parentNode != null)
        {
            obj.parentNode.className = style[styleIndex * 5];
            obj.parentNode.align = style[styleIndex * 5 + 1];
            obj.parentNode.valign = style[styleIndex * 5 + 2];
            obj.parentNode.wrap = style[styleIndex * 5 + 3];
        }
        obj.style.color = style[styleIndex * 5 + 4];
        obj.className = style[styleIndex * 5];
    }
}

LinkDev.WebMonkey.CalendarControl.ToggleShow = function(id, button)
{
    var calendarDiv = document.getElementById(id + "_div");
    var calendarTable = document.getElementById(id + "_table");
    calendarDiv.style.display = calendarDiv.style.display == 'none' ? '' : 'none';
    
    var calendarObj = document.getElementById(id);
    var isRtl = false;
    var ctrl = calendarObj;
    while(ctrl != null)
    {
        if(ctrl.dir != null && ctrl.dir.toString().toLowerCase() == "rtl")
        {
            isRtl = true;
            break;
        }
        ctrl = ctrl.parentElement;
    }
    calendarObj = calendarObj.info;
    if(calendarDiv.style.display == '')
    {
        var top = 0;
        var left = 0;
        var obj = button;
        while(obj != calendarDiv.offsetParent && obj != null)
        {
            top += obj.offsetTop;
            left += obj.offsetLeft;
            obj = obj.offsetParent;
        }
        
        var x = calendarObj.popFlags & 0x3;
        if(x == 0)
        {
            x = isRtl ? 3 : 1;
        }
        
        if(x == 2)
        {
            left -= calendarDiv.offsetWidth / 2;
        }
        else if(x == 3)
        {
            left -= calendarDiv.offsetWidth;
        }
        x = (calendarObj.popFlags >> 4) & 0x3;
        if(x == 0)
        {
            x = 1;
        }
        if(x == 2)
        {
            top -= calendarDiv.offsetHeight / 2;
        }
        else if(x == 3)
        {
            top -= calendarDiv.offsetHeight;
        }
        x = (calendarObj.popFlags >> 8) & 0x3;
        if(x == 0)
        {
            x = isRtl ? 1 : 3;
        }
        if(x == 2)
        {
            left += button.offsetWidth / 2;
        }
        else if(x == 3)
        {
            left += button.offsetWidth;
        }
        x = (calendarObj.popFlags >> 12) & 0x3;
        if(x == 0)
        {
            x = 1;
        }
        if(x == 2)
        {
            top += button.offsetHeight / 2;
        }
        else if(x == 3)
        {
            top += button.offsetHeight;
        }
        left += isRtl ? -calendarObj.popX : calendarObj.popX;
        top += isRtl ? -calendarObj.popY : calendarObj.popY;
        calendarDiv.style.top = Math.floor(top).toString() + "px";
        calendarDiv.style.left = Math.floor(left).toString() + "px";
        calendarDiv.style.width = calendarTable.offsetWidth.toString() + "px";
        LinkDev.WebMonkey.CalendarControl.ActiveCalendar = calendarDiv;
        LinkDev.WebMonkey.CalendarControl.ActiveCalendarTime = new Date().getTime();
        LinkDev.WebMonkey.CalendarControl.HideAllCalendars(calendarDiv);
    }
//    else
//    {
//        calendarDiv.style.top = "-1000px";
//        calendarDiv.style.left = "-1000px";       
//    }

    var calendarIframe = document.getElementById(id + "_iframe");
    if(calendarIframe != null)
    {
        calendarIframe.style.display = calendarDiv.style.display;
        calendarIframe.style.width = calendarDiv.offsetWidth + "px";
        calendarIframe.style.height = calendarDiv.offsetHeight + "px";
        calendarIframe.style.top = calendarDiv.style.top;
        calendarIframe.style.left = calendarDiv.style.left;
    }
}