var m_elemCalendar = null;
var m_elemTarget = null;
var m_elemFrame = null;
var m_elemContainer = null;
var m_ownerDocument = null;
var m_popup = null;


function calShowCalendarPopup(elemCalendar, elemTarget, elemContainer) 
{
    if (elemTarget.disabled || elemTarget.readOnly) 
    {
        return;
    }
    
    m_elemCalendar = elemCalendar;
    m_elemTarget = elemTarget;
    m_elemContainer = elemContainer;

    var strContent =
        "<html xmlns:c><body scroll=no style=\"border: none; margin: 0; padding: 0;\"><?import namespace=\"c\" implementation=\"" + elemContainer.calHtcURL + "\">" +
        "<c:Calendar onDatePicked=\"parent.calOnCalendarClosed(this.selectedDate)\" selectedDate=\"" + elemTarget.value + "\" ";

    var strWidth = elemContainer.calWidth;
    var strHeight = elemContainer.calHeight;
    if ((strWidth != null) || (strHeight != null)) 
    {
        var strStyle = "style=\"";
        if (strWidth != null) 
        {
            strStyle = strStyle + "width:" + strWidth + ";";
        }
        if (strHeight != null) 
        {
            strStyle = strStyle + "height:" + strHeight + ";";
        }
        strStyle = strStyle + "\" ";
    
        strContent = strContent + strStyle;
    }

    if (elemContainer.calStyle != null) 
    {
        strContent = strContent + "calendarStyle=\"" + elemContainer.calStyle + "\" ";
    }
    if (elemContainer.calTitleStyle != null) 
    {
        strContent = strContent + "titleStyle=\"" + elemContainer.calTitleStyle + "\" ";
    }
    if (elemContainer.calDayHeaderStyle != null) 
    {
        strContent = strContent + "dayHeaderStyle=\"" + elemContainer.calDayHeaderStyle + "\" ";
    }
    if (elemContainer.calDayStyle != null) 
    {
        strContent = strContent + "dayStyle=\"" + elemContainer.calDayStyle + "\" ";
    }
    if (elemContainer.calOtherMonthDayStyle != null) 
    {
        strContent = strContent + "otherMonthDayStyle=\"" + elemContainer.calOtherMonthDayStyle + "\" ";
    }
    if (elemContainer.calTodayDayStyle != null) 
    {
        strContent = strContent + "todayDayStyle=\"" + elemContainer.calTodayDayStyle + "\" ";
    }
    if (elemContainer.calSelectedDayStyle != null) 
    {
        strContent = strContent + "selectedDayStyle=\"" + elemContainer.calSelectedDayStyle + "\" ";
    }

    strContent = strContent + " />" + "<body></html>"

    var width = 16;
    var height = 16;
    var left = elemCalendar.offsetWidth;
    var top = elemCalendar.offsetHeight;

    m_popup = window.createPopup();
    m_popup.document.write(strContent);

    var popupBody = m_popup.document.body;
    m_popup.show(0, 0, width, height);
    width = popupBody.scrollWidth;
    height = popupBody.scrollHeight;
    left = left - width;

    m_popup.hide();
    m_popup.show(left, top, width, height, elemCalendar);
}

function calOnCalendarClosed(dtSelected) 
{
    if (dtSelected != null) 
    {
        var nYear = dtSelected.getYear();
        if (nYear < 1900) 
        {
            nYear += 1900;
        }

        m_elemTarget.value = (dtSelected.getMonth() + 1) + '/' + dtSelected.getDate() + '/' + nYear;
        m_elemTarget.focus();
      
        if (m_elemContainer.calAutoPostBack != null) 
        {
            calDoAutoPostBack(m_elemTarget);
        }
    }
    m_elemTarget = null;
    m_elemContainer = null;

    m_popup.hide();
    m_popup = null;
}

function calDoAutoPostBack(elem) 
{
    __doPostBack(elem.name, '');
}

function calShowCalendarFrame(elemCalendar, elemTarget, elemContainer, elemFrame, ownerDocument, frameTarget) 
{
    if (elemTarget.disabled || elemTarget.readOnly) 
    {
        return;
    }

    var left = 0;
    var top = elemCalendar.offsetHeight;

    for (var p = elemCalendar; p && (p.tagName != 'BODY'); p = p.offsetParent) 
    {
        left += p.offsetLeft;
        top += p.offsetTop;
    }

    elemFrame.style.left = left - 80; //for good measure
    elemFrame.style.top = top;
    
    if (elemContainer.calWidth != null) 
    {
        elemFrame.style.width = elemContainer.calWidth;
    }
    if (elemContainer.calHeight != null) 
    {
        elemFrame.style.height = elemContainer.calHeight;
    }
    
    m_elemCalendar = elemCalendar;
    m_elemTarget = elemTarget;
    m_elemFrame = elemFrame;
    m_elemContainer = elemContainer;
    m_ownerDocument = ownerDocument;

    elemFrame.src = frameTarget;
}
