        //---------------------------------------------------------------------
       // Martin Revay @ The Websiteshop, info@a4internet.com
       // You may use this code freely on your site as long as you do not make
       // modifications to it other than editing the stylesheet settings to
       // make it fit your design.
       //--Global Stuff-------------------------------------------------------
       var fc_ie = false;
       if (document.all) { fc_ie = true; }

       var calendars = Array();
       //var fc_months = Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
       var fc_months = Array('January', 'February', 'March', 'April', 'May', 'Jun', 'Jul', 'August', 'September', 'October', 'November', 'December');
       var fc_openCal;

       var fc_calCount = 0;

       function getCalendar(fieldId) {
               return calendars[fieldId];
       }

       function displayCalendarFor(fieldId) {
               var formElement = fc_getObj(fieldId);
               displayCalendar(formElement);
       }

       function displayCalendar(formElement) {
               if (!formElement.id) {
                       formElement.id = fc_calCount++;
               }
               var cal = calendars[formElement.id];
               if (typeof(cal) == 'undefined') {
                       cal = new wCalendar();
                       cal.setElement(formElement);
                       calendars[formElement.id] = cal;
               }
               if (cal.shown) {
                       cal.hide();
               } else {
                       cal.show();
               }
       }

       function display3FieldCalendar(me, de, ye) {
               if (!me.id) { me.id = fc_calCount++; }
               if (!de.id) { de.id = fc_calCount++; }
               if (!ye.id) { ye.id = fc_calCount++; }
               var id = me.id + '-' + de.id + '-' + ye.id;
               var cal = calendars[id];
               if (typeof(cal) == 'undefined') {
                       cal = new wCalendar();
                       cal.setElements(me, de, ye);
                       calendars[id] = cal;
               }
               if (cal.shown) {
                       cal.hide();
               } else {
                       cal.show();
               }
       }

       //--Class Stuff--------------------------------------------------
       function wCalendar() {
               // Define Methods
               this.setElement = fc_setElement;
               this.setElements = fc_setElements;
               this.parseDate = fc_parseDate;
               this.generateHTML = fc_generateHTML;
               this.show = fc_show;
               this.hide = fc_hide;
               this.moveMonth = fc_moveMonth;
               this.jumpMonth = fc_jumpMonth;
               this.setDate = fc_setDate;
               this.formatDate = fc_formatDate;
               this.setDateFields = fc_setDateFields;
               this.parseDateFields = fc_parseDateFields;

               this.shown = false;
       }

       function fc_setElement(formElement) {
               this.element = formElement;
               this.format = this.element.title;
               this.value = this.element.value;
               this.id = this.element.id;
               this.mode = 1;
       }

       function fc_setElements(monthElement, dayElement, yearElement) {
               this.mElement = monthElement;
               this.dElement = dayElement;
               this.yElement = yearElement;
               this.id = this.mElement.id + '-' + this.dElement.id + '-' + this.yElement.id;
               this.element = this.mElement;
               if (fc_absoluteOffsetLeft(this.dElement) < fc_absoluteOffsetLeft(this.element)) {
                       this.element = this.dElement;
               }
               if (fc_absoluteOffsetLeft(this.yElement) < fc_absoluteOffsetLeft(this.element)) {
                       this.element = this.yElement;
               }
               if (fc_absoluteOffsetTop(this.mElement) > fc_absoluteOffsetTop(this.element)) {
                       this.element = this.mElement;
               }
               if (fc_absoluteOffsetTop(this.dElement) > fc_absoluteOffsetTop(this.element)) {
                       this.element = this.dElement;
               }
               if (fc_absoluteOffsetTop(this.yElement) > fc_absoluteOffsetTop(this.element)) {
                       this.element = this.yElement;
               }

               this.mode = 2;
       }

       function fc_parseDate() {
               if (this.element.value) {
                       this.date = new Date();
                       var out = '';
                       var token = '';
                       var lastCh, ch;
                       var start = 0;
                       lastCh = this.format.substring(0, 1);
                       for (i = 0; i < this.format.length; i++) {
                               ch = this.format.substring(i, i+1);
                               if (ch == lastCh) {
                                       token += ch;
                               } else {
                                       fc_parseToken(this.date, token, this.element.value, start);
                                       start += token.length;
                                       token = ch;
                               }
                               lastCh = ch;
                       }
                       fc_parseToken(this.date, token, this.element.value, start);
               } else {
                       this.date = new Date();
               }
               if ('' + this.date.getMonth() == 'NaN') {
                       this.date = new Date();
               }
       }

       function fc_parseDateFields() {
               this.date = new Date();
               if (this.mElement.value) this.date.setMonth(fc_getFieldValue(this.mElement) - 1);
               if (this.dElement.value) this.date.setDate(fc_getFieldValue(this.dElement));
               if (this.yElement.value) this.date.setFullYear(fc_getFieldValue(this.yElement));
               if ('' + this.date.getMonth() == 'NaN') {
                       this.date = new Date();
               }
       }

       function fc_setDate(d, m, y) {
               this.date.setYear(y);
               this.date.setMonth(m);
               this.date.setDate(d);
               if (this.mode == 1) {
                       this.element.value = this.formatDate();
               } else {
                       this.setDateFields();
               }

               if (this.id == "DMonth-DDay-DYear")
               {
                       //alert(this.id);
                       var retDate = new Date(this.date.getFullYear(), this.date.getMonth(), this.date.getDate() + 7);
                       var dret = fc_getObj("RDay");
                       var mret = fc_getObj("RMonth");
                       var yret = fc_getObj("RYear");
                       //alert(retDate.getMonth());

                       fc_setFieldValue(dret, fc_zeroPad(retDate.getDate()));
                       fc_setFieldValue(mret, fc_zeroPad(retDate.getMonth()+1));
                       fc_setFieldValue(yret, fc_zeroPad(retDate.getFullYear()));
               }
               this.hide();
       }

       function fc_setDateFields() {
               fc_setFieldValue(this.mElement, fc_zeroPad(this.date.getMonth() + 1));
               fc_setFieldValue(this.dElement, fc_zeroPad(this.date.getDate()));
               fc_setFieldValue(this.yElement, this.date.getFullYear());
       }

       function fc_formatDate() {
               var out = '';
               var token = '';
               var lastCh, ch;
               lastCh = this.format.substring(0, 1);
               for (i = 0; i < this.format.length; i++) {
                       ch = this.format.substring(i, i+1);
                       if (ch == lastCh) {
                               token += ch;
                       } else {
                               out += fc_formatToken(this.date, token);
                               token = ch;
                       }
                       lastCh = ch;
               }
               out += fc_formatToken(this.date, token);
               return out;
       }

       function fc_show() {
               if (typeof(fc_openCal) != 'undefined') { fc_openCal.hide(); }

               if (this.mode == 1) {
                       this.parseDate();
               } else {
                       this.parseDateFields();
               }
               this.showDate = new Date(this.date.getTime());
               if (typeof(this.div) != 'undefined') {
                       this.div.innerHTML = this.generateHTML();
               }

               if (typeof(this.div) == 'undefined') {
                       this.div = document.createElement('DIV');
                       this.div.style.zIndex =  99;
                       this.div.style.position = 'absolute';
                       this.div.style.display = 'none';
                       this.div.className = 'fc_main';
                       this.div.innerHTML = this.generateHTML();
                       var leftoffset = fc_absoluteOffsetLeft(this.element);
                       this.div.style.left = leftoffset +"px";
                       var rightoffset = fc_absoluteOffsetTop(this.element) + this.element.offsetHeight + 1;
                       this.div.style.top = rightoffset + "px";
                       document.body.appendChild(this.div);
               }
               //hide cal2
               if (this.element.name == "DDay")
               {
                       var hel = fc_getObj('returndates');
                       var hel2 = fc_getObj('options');
                       hel.style.display = 'block';
                       hel2.style.display = 'block';
               }
               if (this.element.name == "RDay")
               {
                       var hel2 = fc_getObj('options');
                       hel2.style.display = 'block';
               }
               //fc_getObj(id)
               this.div.style.display = 'block';
               this.shown = true;
               fc_openCal = this;
       }

       function fc_generateHTML() {
               var now = new Date();
               var tDate = this.showDate;
               var maxDate = new Date(now.getFullYear(),now.getMonth()+12,now.getDate());
               var maxDate1 = new Date(now.getFullYear(),now.getMonth()+11,now.getDate());
               var nDate = new Date(tDate.getFullYear(),(tDate.getMonth()+1),tDate.getDate());
               //alert (maxDate + "-" + tDate);


               var html = '<TABLE border="0" cellpadding="3" cellspacing="0">';
               html += '<TR>';
               html += '<td valign="top">';
                       html += '<TABLE border="0" cellpadding="2" cellspacing="1">';
                       html += '<TR><td colspan="7" class="fc_monthname" height="30">';
                       html += '<table border="0" cellpadding="3" cellspacing="1" width="100%" ><tr>';
                       if (tDate > now)
                       {
                               html += '<TD width="10" CLASS="fc_date" onMouseover="this.className = \'fc_dateHover\';" onMouseout="this.className=\'fc_date\';" onClick="getCalendar(\'' + this.id + '\').moveMonth(-1);"><B>&laquo;</B></TD>';
                       }
                       else
                       {
                               html += '<TD width="10">&nbsp;&nbsp;</TD>';
                       }
                       //html += '<TD COLSPAN="3" CLASS="fc_mth">' + fc_months[this.showDate.getMonth()] + ' ' + fc_getYear(this.showDate) + '</TD>';
                       html += '<TD COLSPAN="3" CLASS="fc_mth"><select name="xmonth" onchange="getCalendar(\'' + this.id + '\').jumpMonth(this.options[selectedIndex].value);" style="font-weight: normal; font-size: 10px;" >';
                       for (i=0; i<12; i++)
                       {
                               var selDate = new Date(now.getFullYear(),now.getMonth()+i,now.getDate());
                               html += '<option value="' + selDate.getMonth() + ','+ fc_getYear(selDate) + '"';
                               if (selDate.getMonth() == this.showDate.getMonth()) html += ' selected';
                               html += '>'+ fc_months[selDate.getMonth()] + ','+ fc_getYear(selDate) +'</option>';
                       }
                       html += '</select></td>';

                       if (tDate < maxDate1)
                       {
                               html += '<TD width="10" CLASS="fc_date" onMouseover="this.className = \'fc_dateHover\';" onMouseout="this.className=\'fc_date\';" onClick="getCalendar(\'' + this.id + '\').moveMonth(1);"><B>&raquo;</B></TD>';
                       }
                       else
                       {
                               html += '<TD width="10">&nbsp;</TD>';
                       }
                       html += '</tr></table>';
                       html += '</td></tr>';
                       html += '<TR><td colspan="7">&nbsp;</td></tr>';
                       html += '<TR><TD WIDTH="14%" CLASS="fc_wk">Mo</TD><TD WIDTH="14%" CLASS="fc_wk">Tu</TD><TD WIDTH="14%" CLASS="fc_wk">We</TD><TD WIDTH="14%" CLASS="fc_wk">Th</TD><TD WIDTH="14%" CLASS="fc_wk">Fr</TD><TD class="fc_wknd" WIDTH="14%">Sa</TD><TD class="fc_wknd" WIDTH="14%">Su</TD></TR>';
                       html += '<TR>';

                       //show days
                       var dow = 0;
                       var i, style;
                       var totald = fc_monthLength(this.showDate);
                       for (i = 0; i < fc_firstDOW(this.showDate); i++) {
                               dow++;
                               html += '<TD> </TD>';
                       }
                       for (i = 1; i <= totald; i++) {
                               var dowDate = new Date(this.showDate.getFullYear(),this.showDate.getMonth(),(i+1));
                               if (dow == 0) { html += '<TR>'; }
                               if (this.showDate.getMonth() == this.date.getMonth() && this.showDate.getYear() == this.date.getYear() && this.date.getDate() == i) {
                                       style = ' style="font-weight: bold;"';
                               } else {
                                       style = '';
                               }
                               if (dowDate < now || dowDate > maxDate)
                               {
                                       html += '<TD class="fc_date_disabled">' + i + '</TD>';
                               }
                               else
                               {
                                       html += '<TD CLASS="fc_date" onMouseover="this.className = \'fc_dateHover\';" onMouseout="this.className=\'fc_date\';" onClick="getCalendar(\'' + this.id + '\').setDate(' + i + ', ' + this.showDate.getMonth() + ', ' + this.showDate.getFullYear() + ');" ' + style + '>' + i + '</TD>';
                               }
                               dow++;
                               if (dow == 7) {
                                       html += '</TR>';
                                       dow = 0;
                               }
                       }
                       if (dow != 0) {
                               for (i = dow; i < 7; i++) {
                                       html += '<TD> </TD>';
                               }
                       }
                       html +='</TR>';
                       html += '</TABLE>';
               html += '</td>';
               html += '<td width="20">&nbsp;</td>';
               //show next month
               html += '<td valign="top">';
                       html += '<TABLE border="0" cellpadding="2" cellspacing="1">';
                       html += '<TR><td colspan="7" class="fc_monthname" height="30">';
                       html += '<table border="0" cellpadding="3" cellspacing="1" width="100%"><tr>';
                       html += '<TD CLASS="fc_mth" valign="middle">' + fc_months[nDate.getMonth()] + ' ' + fc_getYear(nDate) + '</TD>';
                       html += '<TD CLASS="fc_date" onMouseover="this.className = \'fc_dateHover\';" onMouseout="this.className=\'fc_date\';" onClick="getCalendar(\'' + this.id + '\').hide();"><B>X</B></TD>';
                       html += '</tr></table>';
                       html += '</td></tr>';
                       html += '<TR><td colspan="7">&nbsp;</td></tr>';
                       html += '<TR><TD WIDTH="14%" CLASS="fc_wk">Mo</TD><TD WIDTH="14%" CLASS="fc_wk">Tu</TD><TD WIDTH="14%" CLASS="fc_wk">We</TD><TD WIDTH="14%" CLASS="fc_wk">Th</TD><TD WIDTH="14%" CLASS="fc_wk">Fr</TD><TD class="fc_wknd" WIDTH="14%">Sa</TD><TD class="fc_wknd" WIDTH="14%">Su</TD></TR>';
                       html += '<TR>';
                       var dow = 0;
                       var i, style;
                       var totald = fc_monthLength(nDate);
                       for (i = 0; i < fc_firstDOW(nDate); i++) {
                               dow++;
                               html += '<TD> </TD>';
                       }
                       for (i = 1; i <= totald; i++) {
                               var dowDate = new Date(nDate.getFullYear(),nDate.getMonth(),(i+1));
                               if (dow == 0) { html += '<TR>'; }
                               if (nDate.getMonth() == this.date.getMonth() && nDate.getYear() == this.date.getYear() && this.date.getDate() == i) {
                                       style = ' style="font-weight: bold;"';
                               } else {
                                       style = '';
                               }
                               if (dowDate < now || dowDate > maxDate)
                               {
                                       html += '<TD class="fc_date_disabled">' + i + '</TD>';
                               }
                               else
                               {
                                       html += '<TD CLASS="fc_date" onMouseover="this.className = \'fc_dateHover\';" onMouseout="this.className=\'fc_date\';" onClick="getCalendar(\'' + this.id + '\').setDate(' + i + ', ' + nDate.getMonth() + ', ' + nDate.getFullYear() + ');" ' + style + '>' + i + '</TD>';
                               }
                               dow++;
                               if (dow == 7) {
                                       html += '</TR>';
                                       dow = 0;
                               }
                       }
                       if (dow != 0) {
                               for (i = dow; i < 7; i++) {
                                       html += '<TD> </TD>';
                               }
                       }
                       html +='</TR>';
                       html += '</TABLE>';
               html += '</td>';
               html += '</TR>';
               html += '</TABLE>';
               return html;
       }

       function fc_hide() {
               if (this.div != false) {
                       this.div.style.display = 'none';
               }
               var hel = fc_getObj('returndates');
               var hel2 = fc_getObj('options');
               hel.style.display = 'block';
               hel2.style.display = 'block';
               this.shown = false;
               fc_openCal = undefined;
       }

       function fc_jumpMonth(month,year) {

               var str = month.split(",");
               var m = this.showDate.getMonth();
               var y = fc_getYear(this.showDate);
               //alert (str[0] + '---' + str[1]);
               this.showDate.setMonth(str[0]);
               this.showDate.setFullYear(str[1]);
               /*if (month < m)  {
                       this.showDate.setYear(y + 1);
               }*/
               this.div.innerHTML = this.generateHTML();
       }

       function fc_moveMonth(amount) {
               var m = this.showDate.getMonth();
               var y = fc_getYear(this.showDate);
               if (amount == 1)  {
                       if (m == 11)  {
                               this.showDate.setMonth(0);
                               this.showDate.setYear(y + 1);
                       } else {
                               this.showDate.setMonth(m + 1);
                       }
               } else if (amount == -1)  {
                       if (m == 0)  {
                               this.showDate.setMonth(11);
                               this.showDate.setYear(y - 1);
                       } else {
                               this.showDate.setMonth(m - 1);
                       }
               } else if (amount == 12) {
                       this.showDate.setYear(y + 1);
               } else if (amount == -12) {
                       this.showDate.setYear(y - 1);
               }
               this.div.innerHTML = this.generateHTML();
       }

       //--Utils-------------------------------------------------------------
       function fc_absoluteOffsetTop(obj) {
       var top = obj.offsetTop;
       var parent = obj.offsetParent;
       while (parent != document.body) {
               top += parent.offsetTop;
               parent = parent.offsetParent;
       }
       return top;
     }

     function fc_absoluteOffsetLeft(obj) {
       var left = obj.offsetLeft;
       var parent = obj.offsetParent;
       while (parent != document.body) {
               left += parent.offsetLeft;
               parent = parent.offsetParent;
       }
       return left;
     }

     function fc_firstDOW(date) {
       var dow = date.getDay();
       var day = date.getDate();
               if (day % 7 == 0) return dow;
       return (7 + dow - (day % 7)) % 7;
     }

     function fc_getYear(date) {
       var y = date.getYear();
       if (y > 1900) return y;
       return 1900 + y;
     }

     function fc_monthLength(date) {
               var month = date.getMonth();
               var totald = 30;
               if (month == 0
                       || month == 2
                       || month == 4
                       || month == 6
                       || month == 7
                       || month == 9
                       || month == 11) totald = 31;
               if (month == 1) {
                       var year = date.getYear();
                       if (year % 4 == 0 && (year % 400 == 0 || year % 100 != 0))
                               totald = 29;
                       else
                               totald = 28;
               }
               return totald;
     }

     function fc_formatToken(date, token) {
               var command = token.substring(0, 1);
               if (command == 'y' || command == 'Y') {
                       if (token.length == 2) { return fc_zeroPad(date.getFullYear() % 100); }
                       if (token.length == 4) { return date.getFullYear(); }
               }
               if (command == 'd' || command == 'D') {
                       if (token.length == 2) { return fc_zeroPad(date.getDate()); }
               }
               if (command == 'm' || command == 'M') {
                       if (token.length == 2) { return fc_zeroPad(date.getMonth() + 1); }
                       if (token.length == 3) { return fc_months[date.getMonth()]; }
               }
               return token;
     }

     function fc_parseToken(date, token, value, start) {
               var command = token.substring(0, 1);
               var v;
               if (command == 'y' || command == 'Y') {
                       if (token.length == 2) {
                               v = value.substring(start, start + 2);
                               if (v < 70) { date.setFullYear(2000 + parseInt(v)); } else { date.setFullYear(1900 + parseInt(v)); }
                       }
                       if (token.length == 4) { v = value.substring(start, start + 4); date.setFullYear(v);}
               }
               if (command == 'd' || command == 'D') {
                       if (token.length == 2) { v = value.substring(start, start + 2); date.setDate(v); }
               }
               if (command == 'm' || command == 'M') {
                       if (token.length == 2) { v = value.substring(start, start + 2); date.setMonth(v - 1); }
                       if (token.length == 3) {
                               v = value.substring(start, start + 3);
                               var i;
                               for (i = 0; i < fc_months.length; i++) {
                                       if (fc_months[i].toUpperCase() == v.toUpperCase()) { date.setMonth(i); }
                               }
                       }
               }
     }

     function fc_zeroPad(num) {
               if (num < 10) { return '0' + num; }
               return num;
     }

       function fc_getObj(id) {
               if (fc_ie) { return document.all[id]; }
               else { return document.getElementById(id);      }
       }

      function fc_setFieldValue(field, value) {
                if (field.type.substring(0,6) == 'select') {
                        var i;
                        for (i = 0; i < field.options.length; i++) {
                                if (fc_equals(field.options[i].value, value)) {
                                        field.selectedIndex = i;
                                }
                        }
                } else {
                        field.value = value;
                }
      }

      function fc_getFieldValue(field) {
                if (field.type.substring(0,6) == 'select') {
                        return field.options[field.selectedIndex].value;
                } else {
                        return field.value;
                }
      }

      function fc_equals(val1, val2) {
               if (val1 == val2) return true;
               if (1 * val1 == 1 * val2) return true;
               return false;
      }


         function setDates() {
                       var now = new Date();
                       var retDate = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 7);
                       var dnow = fc_getObj("DDay");
                       var mnow = fc_getObj("DMonth");
                       var ynow = fc_getObj("DYear");
                       var dret = fc_getObj("RDay");
                       var mret = fc_getObj("RMonth");
                       var yret = fc_getObj("RYear");

                       fc_setFieldValue(dnow, fc_zeroPad(now.getDate()));
                       fc_setFieldValue(mnow, fc_zeroPad(now.getMonth()+1));
                       fc_setFieldValue(ynow, fc_zeroPad(now.getFullYear()));

                       fc_setFieldValue(dret, fc_zeroPad(retDate.getDate()));
                       fc_setFieldValue(mret, fc_zeroPad(retDate.getMonth()+1));
                       fc_setFieldValue(yret, fc_zeroPad(retDate.getFullYear()));
         }
