Guest User

Untitled

a guest
Jul 28th, 2012
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function Calendar(inVarName, inCurrent)
  2. {
  3.     var dtmToday = new Date();
  4.     dtmToday = new Date(dtmToday.getFullYear(), dtmToday.getMonth(), dtmToday.getDate());
  5.    
  6.     var dtmCurrent = inCurrent;
  7.     var arrMonths = new Array('Januar', 'Februar', 'Marts', 'April', 'Maj', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'December');
  8.     var arrDayNames = new Array('M', 'T', 'O', 'T', 'F', 'L', 'S');
  9.     var strVarName = inVarName;
  10.  
  11.     var arrActiveDays = new Array();
  12.  
  13.     var objBoxCalendar = document.getElementById('BoxCalendar');
  14.     var objWrapper = null;
  15.     var objNaviLeft = null;
  16.     var objCalendarYear = null;
  17.     var objNaviRight = null;
  18.  
  19.     this.create = function ()
  20.     {
  21.         if (objBoxCalendar)
  22.         {
  23.             CreateHeader('DayView');
  24.             this.viewDays(dtmCurrent);
  25.         }
  26.     }
  27.  
  28.     this.viewDays = function (dtmStart)
  29.     {
  30.         dtmStart = new Date(dtmStart);
  31.         if (dtmStart.getDate() > 1)
  32.             dtmStart.setDate(1);
  33.  
  34.         for (var i = objWrapper.childNodes.length; i >= 0; i--)
  35.         {
  36.             var objChild = objWrapper.childNodes[i];
  37.             if (objChild)
  38.             {
  39.                 if (objChild.className != 'CalendarRowNavi')
  40.                 {
  41.                     objWrapper.removeChild(objChild);
  42.                 }
  43.             }
  44.         }
  45.  
  46.         var objCalendarRowDays = document.createElement('div');
  47.         objCalendarRowDays.className = 'CalendarRowDays';
  48.         objWrapper.appendChild(objCalendarRowDays);
  49.         for (var i = 0; i < arrDayNames.length; i++)
  50.         {
  51.             var objCalendarCell = document.createElement('div');
  52.             objCalendarCell.className = 'CalendarCell';
  53.             objCalendarCell.appendChild(document.createTextNode(arrDayNames[i]));
  54.             objCalendarRowDays.appendChild(objCalendarCell);
  55.             objCalendarRowDays.appendChild(document.createTextNode('\n'));
  56.         }
  57.  
  58.         var intDaysInMonth = DaysInMonth(dtmStart.getFullYear(), dtmStart.getMonth());
  59.  
  60.         //Set the correct text and link on the top field
  61.         while (objCalendarYear.hasChildNodes())
  62.         {
  63.             objCalendarYear.removeChild(objCalendarYear.firstChild);
  64.         }
  65.         objCalendarYear.appendChild(document.createTextNode(arrMonths[dtmStart.getMonth()] + ' ' + dtmStart.getFullYear()));
  66.         objCalendarYear.setAttribute('onclick', strVarName + '.viewMonths(\'' + new Date(dtmStart.getFullYear(), dtmStart.getMonth(), 1) + '\')');
  67.         //Do the same for the navigation buttons
  68.         objNaviLeft.setAttribute('onclick', strVarName + '.viewDays(\'' + new Date(dtmStart.getFullYear(), dtmStart.getMonth() - 1, 1) + '\')');
  69.         objNaviRight.setAttribute('onclick', strVarName + '.viewDays(\'' + new Date(dtmStart.getFullYear(), dtmStart.getMonth() + 1, 1) + '\')');
  70.  
  71.         //Fill the first row with blank fields until we reach the starting point
  72.         var objFirstRow = document.createElement('div');
  73.         objFirstRow.className = 'CalendarRow';
  74.         objWrapper.appendChild(objFirstRow);
  75.         var intCount = 0;
  76.         for (intCount; intCount < dtmStart.getUTCDay(); intCount++)
  77.         {
  78.             var objNotThisMonth = document.createElement('div');
  79.             objNotThisMonth.className = 'CalendarCell NotThisMonth';
  80.             objFirstRow.appendChild(objNotThisMonth);
  81.             objFirstRow.appendChild(document.createTextNode('\n'));
  82.         }
  83.  
  84.         //Fill the rest of the first row with days
  85.         for (intCount; intCount < 7; intCount++)
  86.         {
  87.             var objCalendarCell = document.createElement('div');
  88.             objCalendarCell.className = 'CalendarCell';
  89.  
  90.             for (var j = 0; j < arrActiveDays.length; j++)
  91.             {
  92.                 var dtmActiveDay = arrActiveDays[j];
  93.                 if (dtmActiveDay.getTime() == dtmStart.getTime())
  94.                 {
  95.                     objCalendarCell.setAttribute('onclick', 'window.open(\'/?ci=' + dtmActiveDay.getFullYear() + '-' + eval(dtmActiveDay.getMonth() + 1) + '-' + dtmActiveDay.getDate() + '\', \'_self\');');
  96.                     objCalendarCell.className += ' Active';
  97.                 }
  98.             }
  99.  
  100.             if (dtmToday.getTime() == dtmStart.getTime())
  101.             {
  102.                 if (dtmCurrent.getTime() == dtmStart.getTime())
  103.                 {
  104.                     objCalendarCell.className += ' Today';
  105.                 }
  106.                 else
  107.                 {
  108.                     objCalendarCell.className += ' TodayNotChosen';
  109.                 }
  110.             }
  111.             else if (dtmCurrent.getTime() == dtmStart.getTime())
  112.             {
  113.                 objCalendarCell.className += ' Chosen';
  114.             }
  115.  
  116.             objCalendarCell.appendChild(document.createTextNode(dtmStart.getDate()));
  117.             objFirstRow.appendChild(objCalendarCell);
  118.             objFirstRow.appendChild(document.createTextNode('\n'));
  119.             dtmStart.setDate(dtmStart.getDate() + 1);
  120.         }
  121.  
  122.         var objCalendarRow = document.createElement('div');
  123.         objCalendarRow.className = 'CalendarRow';
  124.  
  125.         //Fill each row with days
  126.         for (var i = dtmStart.getDate(); i <= intDaysInMonth; i++)
  127.         {
  128.             if (dtmStart.getUTCDay() == 0)
  129.             {
  130.                 objWrapper.appendChild(document.createTextNode('\n'));
  131.                 objCalendarRow = document.createElement('div');
  132.                 objCalendarRow.className = 'CalendarRow';
  133.                 objWrapper.appendChild(objCalendarRow);
  134.             }
  135.  
  136.             var objCalendarCell = document.createElement('div');
  137.             objCalendarCell.className = 'CalendarCell';
  138.  
  139.             for (var j = 0; j < arrActiveDays.length; j++)
  140.             {
  141.                 var dtmActiveDay = arrActiveDays[j];
  142.                 if (dtmActiveDay.getTime() == dtmStart.getTime())
  143.                 {
  144.                     objCalendarCell.setAttribute('onclick', 'window.open(\'/?ci=' + dtmActiveDay.getFullYear() + '-' + eval(dtmActiveDay.getMonth() + 1) + '-' + dtmActiveDay.getDate() + '\', \'_self\');');
  145.                     objCalendarCell.className += ' Active';
  146.                 }
  147.             }
  148.  
  149.             if (dtmToday.getTime() == dtmStart.getTime())
  150.             {
  151.                 if (dtmCurrent.getTime() == dtmStart.getTime())
  152.                 {
  153.                     objCalendarCell.className += ' Today';
  154.                 }
  155.                 else
  156.                 {
  157.                     objCalendarCell.className += ' TodayNotChosen';
  158.                 }
  159.             }
  160.             else if (dtmCurrent.getTime() == dtmStart.getTime())
  161.             {
  162.                 objCalendarCell.className += ' Chosen';
  163.             }
  164.  
  165.             objCalendarCell.appendChild(document.createTextNode(dtmStart.getDate()));
  166.             objCalendarRow.appendChild(objCalendarCell);
  167.             objCalendarRow.appendChild(document.createTextNode('\n'));
  168.  
  169.             dtmStart.setDate(dtmStart.getDate() + 1);
  170.         }
  171.  
  172.         //Fill the rest of the last row with blank fields
  173.         for (var i = dtmStart.getUTCDay(); i < 7; i++)
  174.         {
  175.             var objNotThisMonth = document.createElement('div');
  176.             objNotThisMonth.className = 'CalendarCell NotThisMonth';
  177.             objCalendarRow.appendChild(objNotThisMonth);
  178.             objCalendarRow.appendChild(document.createTextNode('\n'));
  179.         }
  180.  
  181.     }
  182.  
  183.     this.viewMonths = function (dtmStart)
  184.     {
  185.         dtmStart = new Date(dtmStart);
  186.         if (dtmStart.getDate() > 1)
  187.             dtmStart.setDate(1);
  188.  
  189.         for (var i = objWrapper.childNodes.length; i >= 0; i--)
  190.         {
  191.             var objChild = objWrapper.childNodes[i];
  192.             if (objChild)
  193.             {
  194.                 if (objChild.className != 'CalendarRowNavi')
  195.                 {
  196.                     objWrapper.removeChild(objChild);
  197.                 }
  198.             }
  199.         }
  200.  
  201.         //Set the correct text and link on the top field
  202.         while (objCalendarYear.hasChildNodes())
  203.         {
  204.             objCalendarYear.removeChild(objCalendarYear.firstChild);
  205.         }
  206.         objCalendarYear.appendChild(document.createTextNode(dtmStart.getFullYear()));
  207.         objCalendarYear.setAttribute('onclick', strVarName + '.viewYears(\'' + new Date(dtmStart.getFullYear(), 0, 1) + '\')');
  208.         //Do the same for the navigation buttons
  209.         objNaviLeft.setAttribute('onclick', strVarName + '.viewMonths(\'' + new Date(dtmStart.getFullYear() - 1, dtmStart.getMonth(), 1) + '\')');
  210.         objNaviRight.setAttribute('onclick', strVarName + '.viewMonths(\'' + new Date(dtmStart.getFullYear() + 1, dtmStart.getMonth(), 1) + '\')');
  211.  
  212.         var objCalendarMonthRow = null;
  213.  
  214.         for (var i = 0; i < arrMonths.length; i++)
  215.         {
  216.             if (i % 3 == 0)
  217.             {
  218.                 objCalendarMonthRow = document.createElement('div');
  219.                 objCalendarMonthRow.className = 'CalendarMonthRow';
  220.                 objWrapper.appendChild(objCalendarMonthRow);
  221.             }
  222.  
  223.             var objCalendarCell = document.createElement('div');
  224.             objCalendarCell.className = 'CalendarCell';
  225.             objCalendarCell.appendChild(document.createTextNode(arrMonths[i]));
  226.             objCalendarCell.appendChild(document.createTextNode('\n'));
  227.             objCalendarCell.setAttribute('onclick', strVarName + '.viewDays(\'' + new Date(dtmStart.getFullYear(), i, 1) + '\')');
  228.             objCalendarMonthRow.appendChild(objCalendarCell);
  229.             objCalendarMonthRow.appendChild(document.createTextNode('\n'));
  230.         }
  231.     }
  232.  
  233.     this.viewYears = function (dtmStart)
  234.     {
  235.         dtmStart = new Date(dtmStart);
  236.         if (dtmStart.getDate() > 1)
  237.             dtmStart.setDate(1);
  238.  
  239.         for (var i = objWrapper.childNodes.length; i >= 0; i--)
  240.         {
  241.             var objChild = objWrapper.childNodes[i];
  242.             if (objChild)
  243.             {
  244.                 if (objChild.className != 'CalendarRowNavi')
  245.                 {
  246.                     objWrapper.removeChild(objChild);
  247.                 }
  248.             }
  249.         }
  250.  
  251.         //Set the correct text and link on the top field
  252.         while (objCalendarYear.hasChildNodes())
  253.         {
  254.             objCalendarYear.removeChild(objCalendarYear.firstChild);
  255.         }
  256.         objCalendarYear.appendChild(document.createTextNode(dtmStart.getFullYear() + ' - ' + eval(dtmStart.getFullYear() + 11)));
  257.         //Do the same for the navigation buttons
  258.         objNaviLeft.setAttribute('onclick', strVarName + '.viewYears(\'' + new Date(dtmStart.getFullYear() - 12, 0, 1) + '\')');
  259.         objNaviRight.setAttribute('onclick', strVarName + '.viewYears(\'' + new Date(dtmStart.getFullYear() + 12, 0, 1) + '\')');
  260.  
  261.         var objCalendarYearRow = null;
  262.  
  263.         for (var i = 0; i < 12; i++)
  264.         {
  265.             if (i % 3 == 0)
  266.             {
  267.                 objCalendarYearRow = document.createElement('div');
  268.                 objCalendarYearRow.className = 'CalendarYearRow';
  269.                 objWrapper.appendChild(objCalendarYearRow);
  270.             }
  271.  
  272.             var objCalendarCell = document.createElement('div');
  273.             objCalendarCell.className = 'CalendarCell';
  274.             objCalendarCell.appendChild(document.createTextNode(eval(dtmStart.getFullYear() + i)));
  275.             objCalendarCell.appendChild(document.createTextNode('\n'));
  276.             objCalendarCell.setAttribute('onclick', strVarName + '.viewMonths(\'' + new Date(eval(dtmStart.getFullYear() + i), 0, 1) + '\')');
  277.             objCalendarYearRow.appendChild(objCalendarCell);
  278.             objCalendarYearRow.appendChild(document.createTextNode('\n'));
  279.         }
  280.     }
  281.  
  282.     this.addActiveDay = function (inDate)
  283.     {
  284.         arrActiveDays[arrActiveDays.length] = inDate;
  285.     }
  286.  
  287.     CreateHeader = function (inType)
  288.     {
  289.         var objHeader = document.createElement('div');
  290.         objHeader.className = 'Header';
  291.  
  292.         var objHeaderImage = document.createElement('img');
  293.         objHeaderImage.src = '/gfx/box/headers/calendar.png';
  294.         objHeaderImage.width = '16';
  295.         objHeaderImage.width = '151';
  296.         objHeaderImage.alt = 'Maritim Kalender';
  297.         objHeader.appendChild(objHeaderImage);
  298.  
  299.         var objContent = document.createElement('div');
  300.         objContent.className = 'Content';
  301.  
  302.         objWrapper = document.createElement('div');
  303.         objWrapper.className = 'CalendarWrapper';
  304.         objContent.appendChild(objWrapper);
  305.  
  306.         var objCalendarRowNavi = document.createElement('div');
  307.         objCalendarRowNavi.className = 'CalendarRowNavi';
  308.         objWrapper.appendChild(objCalendarRowNavi);
  309.         objCalendarRowNavi.appendChild(document.createTextNode('\n'));
  310.  
  311.         objNaviLeft = document.createElement('div');
  312.         objNaviLeft.className = 'CalendarCell NaviLeft';
  313.         objCalendarRowNavi.appendChild(objNaviLeft);
  314.         objCalendarRowNavi.appendChild(document.createTextNode('\n'));
  315.  
  316.         objCalendarYear = document.createElement('div');
  317.         objCalendarYear.className = 'CalendarCell CalendarYear';
  318.         objCalendarRowNavi.appendChild(objCalendarYear);
  319.         objCalendarRowNavi.appendChild(document.createTextNode('\n'));
  320.  
  321.         objNaviRight = document.createElement('div');
  322.         objNaviRight.className = 'CalendarCell NaviRight';
  323.         objCalendarRowNavi.appendChild(objNaviRight);
  324.  
  325.         while (objBoxCalendar.hasChildNodes())
  326.         {
  327.             objBoxCalendar.removeChild(objBoxCalendar.firstChild);
  328.         }
  329.         objBoxCalendar.appendChild(objHeader);
  330.         objBoxCalendar.appendChild(objContent);
  331.     }
  332.  
  333.     DaysInMonth = function (year, month)
  334.     {
  335.         return 32 - new Date(year, month, 32).getDate();
  336.     }
  337. }
Advertisement
Add Comment
Please, Sign In to add comment