﻿// JScript File
	var dDate = new Date();
	
    var dCurMonth = dDate.getMonth();
    var dCurDayOfMonth = dDate.getDate();
    var dCurYear = dDate.getFullYear();
    var objPrevElement = new Object();
    var txtField;
    
    function fToggleColor(myElement) 
    {
       if (myElement.className == "calDaysText")
            myElement.className = "calDaysTextHover";
        else if (myElement.className == "calDaysTextHover")
            myElement.className = "calDaysText";
        else if (myElement.className == "calDaysTextSelected")
            myElement.className = "calDaysTextSelectedHover";
        else if (myElement.className == "calDaysTextSelectedHover")
            myElement.className = "calDaysTextSelected";
        
        
//        var toggleColor = "#ff0000";
//        if (myElement.id == "calDateText") 
//        {
//            if (myElement.color == toggleColor) 
//            {
//                myElement.color = "";
//            }
//            else 
//            {
//                myElement.color = toggleColor;
//            }
//        } 
//        else if (myElement.id.search("calCell") > -1)
//        {
//            for (var i in myElement.children) 
//            {
//                if (myElement.children[i].id == "calDateText") 
//                {
//                    if (myElement.children[i].color == toggleColor) 
//                    {
//                        myElement.children[i].color = "";
//                    } 
//                    else 
//                    {
//                        myElement.children[i].color = toggleColor;
//                    }
//                }
//            }
//        }
    }
    
    function fSetSelectedDay(myElement)
    {
        dt = SetDay(myElement);

        if (txtField != null && dt != null)
               txtField.value = dt;  
               
        if (txtField.onchange != null)
            txtField.onchange();
        HideCalDiv(); 
    }

    function SetDay(dayElement)
    {
    
        if (dayElement.id.search("calCell") > -1)
        {
            if (!isNaN(parseInt(dayElement.children["calDateText"].innerText))) 
            {
                objPrevElement.className = "calDaysText";
                dayElement.className = "calDaysTextSelected";
//                objPrevElement.bgColor = "";
//                dayElement.bgColor = "#c0c0c0";
                document.all.calSelectedDate.value = parseInt(dayElement.children["calDateText"].innerText);
                objPrevElement = dayElement;

                dt = FormatToStr(document.all.calSelectedDate.value) + '/' + document.all.tbSelMonth.value + '/' + document.all.tbSelYear.value;
                return dt;
            }
            
        }
        else
          return null;
    }

function fGetDaysInMonth(iMonth, iYear) 
{
    var dPrevDate = new Date(iYear, iMonth, 0);
    return dPrevDate.getDate();
}

function fBuildCal(iYear, iMonth, iDayStyle) 
{
    var aMonth = new Array();
    aMonth[0] = new Array(7);
    aMonth[1] = new Array(7);
    aMonth[2] = new Array(7);
    aMonth[3] = new Array(7);
    aMonth[4] = new Array(7);
    aMonth[5] = new Array(7);
    aMonth[6] = new Array(7);

    var dCalDate = new Date(iYear, iMonth, 1);
    var iDayOfFirst = dCalDate.getDay();
    var iDaysInMonth = fGetDaysInMonth(iMonth+1, iYear);
    var iVarDate = 1;
    var i, d, w;
    
    if (iDayStyle == 2) 
    {
        aMonth[0][0] = "ראשון";
        aMonth[0][1] = "שני";
        aMonth[0][2] = "שלישי";
        aMonth[0][3] = "רביעי";
        aMonth[0][4] = "חמישי";
        aMonth[0][5] = "שישי";
        aMonth[0][6] = "שבת";
    }
    else if (iDayStyle == 1) 
    {
        aMonth[0][0] = "א";
        aMonth[0][1] = "ב";
        aMonth[0][2] = "ג";
        aMonth[0][3] = "ד";
        aMonth[0][4] = "ה";
        aMonth[0][5] = "ו";
        aMonth[0][6] = "ש";
    } 
    else 
    {
        aMonth[0][0] = "א";
        aMonth[0][1] = "ב";
        aMonth[0][2] = "ג";
        aMonth[0][3] = "ד";
        aMonth[0][4] = "ה";
        aMonth[0][5] = "ו";
        aMonth[0][6] = "ש";
    }
    
    for (d = iDayOfFirst; d < 7; d++) 
    {
        aMonth[1][d] = iVarDate;
        iVarDate++;
    }
    
    for (w = 2; w < 7; w++) 
    {
        for (d = 0; d < 7; d++) 
        {
            if (iVarDate <= iDaysInMonth) 
            {
                aMonth[w][d] = iVarDate;
                iVarDate++;
            }
        }
    }
    return aMonth;
}

function FormatToStr(iDate)
{
    if (iDate < 10)
        return "0"+String(iDate);
    else
        return String(iDate);  
}

//function fDrawCal(iYear, iMonth, iCellWidth, iCellHeight, sDateTextSize, sDateTextWeight, iDayStyle) 
function fDrawCal(iYear, iMonth,sDateTextSize, sDateTextWeight, iDayStyle) 
{
    var myMonth;
    myMonth = fBuildCal(iYear, iMonth, iDayStyle);
    document.write("<table id='tblCal' border='0' cellpadding='0' cellspacing='0' class='calCalendar'>");
    document.write("<tr class='calDaysTitleTr'>");
    document.write("<td>" + myMonth[0][0] + "</td>");
    document.write("<td>" + myMonth[0][1] + "</td>");
    document.write("<td>" + myMonth[0][2] + "</td>");
    document.write("<td>" + myMonth[0][3] + "</td>");
    document.write("<td>" + myMonth[0][4] + "</td>");
    document.write("<td>" + myMonth[0][5] + "</td>");
    document.write("<td>" + myMonth[0][6] + "</td>");
    document.write("</tr>");
    for (w = 1; w < 7; w++) 
    {
        document.write("<tr class='calDaysTr'>")
        for (d = 0; d < 7; d++) 
        {
            document.write("<td id=calCell onMouseOver='fToggleColor(this)' onMouseOut='fToggleColor(this)' onclick='fSetSelectedDay(this);'  class='calDaysText'>");
            if (!isNaN(myMonth[w][d])) 
            {
     
//                document.write("<td align='left' valign='top' width='" + iCellWidth + "' height='" + iCellHeight + "' id=calCell"+ myMonth[w][d]+ " style='CURSOR:Hand' onMouseOver='fToggleColor(this)' onMouseOut='fToggleColor(this)' onclick=fSetSelectedDay(this)>");
//                document.write("<td id='calCell' onMouseOver='fToggleColor(this)' onMouseOut='fToggleColor(this)' onclick=fSetSelectedDay(this)>");
                document.write("<span id=calDateText onMouseOver='fToggleColor(this)' onMouseOut='fToggleColor(this)' onclick='fSetSelectedDay(this)'>" + myMonth[w][d] + "</span>");
            } 
            else 
            {
            
//                document.write("<td align='left' valign='top' width='" + iCellWidth + "' height='" + iCellHeight + "' id=calCell style='CURSOR:Hand' onMouseOver='fToggleColor(this)' onMouseOut='fToggleColor(this)' onclick=fSetSelectedDay(this)>");
//                document.write("<td id='calCell'>");
                document.write("<span id=calDateText onMouseOver='fToggleColor(this)' onMouseOut='fToggleColor(this)' onclick='fSetSelectedDay(this)'> </span>");
            }
            document.write("</td>")
        }
       document.write("</tr>");
    }
    document.write("</table>")
    
}

function fUpdateCal(iYear, iMonth) 
{
    
    myMonth = fBuildCal(iYear, iMonth,1);
    objPrevElement.className = "calDaysText";
    //objPrevElement.bgColor = "";
    //document.all.calSelectedDate.value = "";
    for (w = 1; w < 7; w++) 
    {
        for (d = 0; d < 7; d++) 
        {
            if (!isNaN(myMonth[w][d])) 
            {
                calDateText[((7*w)+d)-7].innerText = myMonth[w][d];
//                if ((myMonth[w][d] == document.all.calSelectedDate.value)
//                    && (iYear == txtField.value.substr(6,4) )
//                    && (iMonth == txtField.value.substr(3,2)-1 ))
                    
                  
            }
            else 
            {
                calDateText[((7*w)+d)-7].innerText = " ";
            }
        }
   }
}

function DrawYearCombo(currYear)
{
    iCurrYear = parseInt(currYear);
    
    document.write("<select name='tbSelYear' onchange='fUpdateCal(tbSelYear.value, parseInt(tbSelMonth.value)-1)' dir='rtl'  class='calCombo'>");
    
    for (i=iCurrYear+10; i>=1900; i--)
    {
        if (i == iCurrYear)
            document.write("<option value='"+i+"' selected='selected'>"+i+"</option>");
        else    
            document.write("<option value='"+i+"'>"+i+"</option>");
    }
    document.write("</select>");
}

function OpenCalendar(txtFieldName, button)
{
    
    pos = getAbsolutePos(button);
    
    if (ToggleCalDivVisibility(pos.y + button.offsetHeight+1,pos.x+1, txtFieldName))
    {

        txtField = document.getElementById(txtFieldName);

        if ( txtField != null) 
        {

            var dCurDate = new Date();

            if ( txtField.value != "")
            {

                var strdate=""; 
                strdate= txtField.value;

                dCurDate.setFullYear(strdate.substr(6,4));
                dCurDate.setMonth(strdate.substr(3,2)-1);
                dCurDate.setDate(strdate.substr(0,2));

            }

            SetDate(dCurDate);
        }
    }
}

function ToggleCalDivVisibility(top,left,txtFieldName)
{
    if (divCal.length > 1)
        divToShow = divCal[0];
    else
       divToShow =  divCal;
       
    if (divToShow.className == "calDivShow" && txtFieldName == txtField.id)
    {
        HideCalDiv();
        return false;
    }
    else
    {
        ShowCalDiv(top, left);
        return true;
    }

}

function HideCalDiv()
{
    if (divCal.length > 1)
        divToShow = divCal[0];
    else
       divToShow =  divCal;
    
    divToShow.className = "calDivHide";
    HandleCombos(divToShow);
}

function ShowCalDiv(top, left)
{
    if (divCal.length > 1)
        divToShow = divCal[0];
    else
       divToShow =  divCal;
       
    divToShow.className = "calDivShow";
    divToShow.style.top = top;
    divToShow.style.left = left;
    HandleCombos(divToShow);
    
}

function HandleCombos(divToShow)
{
    badElements = document.getElementsByTagName("select");
    calTopLeft = getAbsolutePos(divToShow);
    myRight = calTopLeft.x + divToShow.offsetWidth;
    myBottom = calTopLeft.y + divToShow.offsetHeight;
    for (i=0 ; i < badElements.length; i++)
    {
        if ((badElements[i] != document.all.tbSelMonth) && (badElements[i] != document.all.tbSelYear))
        {
            elementTopLeft = getAbsolutePos(badElements[i]);
            elementRight = elementTopLeft.x + badElements[i].offsetWidth;
            elementBottom = elementTopLeft.y + badElements[i].offsetHeight;
            
            if (divToShow.className == "calDivShow") 
            {
                if (!(elementTopLeft.x > myRight || elementTopLeft.y > myBottom || 
                      elementRight < calTopLeft.x || elementBottom < calTopLeft.y))
                     badElements[i].style.visibility ="hidden";
                else
                     badElements[i].style.visibility ="visible";
            }
            else
               badElements[i].style.visibility ="visible";
        }
    }
}


function SelectToday()
{
    
    today = new Date();
    SetDate(today);
}

function SetDate(reqDay)
{
    
    SetCombos(reqDay);  
    
//    var iDay = reqDay.getDay();
//    var iDate = reqDay.getDate();
//    var iWeeks = parseInt((iDate)/7);
    var firstDate =   new Date(reqDay.getYear(), reqDay.getMonth(), 1);
    var iDayOfFirst = firstDate.getDay();
    var iDate = reqDay.getDate();
    
    dayElement = calDateText[iDayOfFirst+iDate-1].parentElement;
    SetDay(dayElement);
}

function  SetCombos(reqDate)
{
    monthCombo = document.all.tbSelMonth;
    yearCombo = document.all.tbSelYear;

    monthCombo.options[reqDate.getMonth()].selected = true;
    for (i = 0; i < yearCombo.options.length; i++)
    {
        if (yearCombo.options[i].value == reqDate.getFullYear())
            yearCombo.options[i].selected = true;
    }
    fUpdateCal(reqDate.getYear(), reqDate.getMonth());
}

function getAbsolutePos(element) 
{
	var scrollLeft = 0, scrollTop = 0;
	var isDiv = /^div$/i.test(element.tagName);
	if (isDiv && element.scrollLeft)
		scrollLeft = element.scrollLeft;
	if (isDiv && element.scrollTop)
		scrollTop = element.scrollTop;
	var elementPos = { x: element.offsetLeft - scrollLeft, y: element.offsetTop - scrollTop };
	if (element.offsetParent) 
	{
		var parentPos = this.getAbsolutePos(element.offsetParent);
		elementPos.x += parentPos.x;
		elementPos.y += parentPos.y;
	}
	return elementPos;
};

function ClearDate()
{   
    if (txtField != null)
       txtField.value = "";
    HideCalDiv(); 
}

//additional
function TxtToHidden(txtField,hiddenField)
{
    hiddenField.value = txtField.value;
}
