function Epoch(name, mode, targetelement, multiselect) {
   var self = this;
   function calConfig() {
      self.versionNumber = '2.0.2';
      self.displayYearInitial = self.curDate.getFullYear();
      self.displayMonthInitial = self.curDate.getMonth();
      self.displayYear = self.displayYearInitial;
      self.displayMonth = self.displayMonthInitial;
      self.minDate = new Date(2008, 0, 1);
      self.maxDate = new Date(2016, 11, 31);
      self.startDay = 0;
      self.showWeeks = true;
      self.selCurMonthOnly = true;
      }
   function setLang() {
      self.daylist = new Array('S', 'M', 'T', 'W', 'T', 'F', 'S', 'S', 'M', 'T', 'W', 'T', 'F', 'S');
      self.months_sh = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
      self.monthup_title = 'Go to the next month';
      self.monthdn_title = 'Go to the previous month';
      self.clearbtn_caption = 'Clear';
      self.clearbtn_title = 'Clears any dates selected on the calendar';
      self.maxrange_caption = 'This is the maximum range';
      self.closebtn_caption = 'Close';
      self.closebtn_title = 'Close the calendar';
      }
   function setDays() {
      self.daynames = new Array();
      var j = 0;
      for(var i = self.startDay; i < self.startDay + 7; i++) {
         self.daynames[j++] = self.daylist[i];
         }
      self.monthDayCount = new Array(31, ((self.curDate.getFullYear() - 2000) % 4 ? 28 : 29), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
      }
   function createCalendar() {
      var tbody, tr, td;
      self.calendar = document.createElement('table');
      self.calendar.setAttribute('id', self.name + '_calendar');
      setClass(self.calendar, 'calendar');
      self.calendar.style.display = 'none';
      addEventHandler(self.calendar, 'selectstart', function() {
         return false; }
      );
      addEventHandler(self.calendar, 'drag', function() {
         return false; }
      );
      tbody = document.createElement('tbody');
      tr = document.createElement('tr');
      td = document.createElement('td');
      td.appendChild(createMainHeading());
      tr.appendChild(td);
      tbody.appendChild(tr);
      tr = document.createElement('tr');
      td = document.createElement('td');
      self.calendar.celltable = document.createElement('table');
      setClass(self.calendar.celltable, 'cells');
      self.calendar.celltable.appendChild(createDayHeading());
      self.calendar.celltable.appendChild(createCalCells());
      td.appendChild(self.calendar.celltable);
      tr.appendChild(td);
      tbody.appendChild(tr);
      tr = document.createElement('tr');
      td = document.createElement('td');
      td.appendChild(createFooter());
      tr.appendChild(td);
      tbody.appendChild(tr);
      self.calendar.appendChild(tbody);
      addEventHandler(self.calendar, 'mouseover', cal_onmouseover);
      addEventHandler(self.calendar, 'mouseout', cal_onmouseout);
      }
   function createMainHeading() {
      var container = document.createElement('div');
      setClass(container, 'mainheading');
      self.monthSelect = document.createElement('select');
      self.yearSelect = document.createElement('select');
      var monthDn = document.createElement('input'), monthUp = document.createElement('input');
      var opt, i;
      for(i = 0; i < 12; i++) {
         opt = document.createElement('option');
         opt.setAttribute('value', i);
         if(self.displayMonth == i) {
            opt.setAttribute('selected', 'selected');
            }
         opt.appendChild(document.createTextNode(self.months_sh[i]));
         self.monthSelect.appendChild(opt);
         }
      var yrMax = self.maxDate.getFullYear(), yrMin = self.minDate.getFullYear();
      for(i = yrMin; i <= yrMax; i++) {
         opt = document.createElement('option');
         opt.setAttribute('value', i);
         if(self.displayYear == i) {
            opt.setAttribute('selected', 'selected');
            }
         opt.appendChild(document.createTextNode(i));
         self.yearSelect.appendChild(opt);
         }
      monthUp.setAttribute('type', 'button');
      monthUp.setAttribute('value', ' >>');
      monthUp.setAttribute('title', self.monthup_title);
      monthDn.setAttribute('type', 'button');
      monthDn.setAttribute('value', '<< ');
      monthDn.setAttribute('title', self.monthdn_title);
      self.monthSelect.owner = self.yearSelect.owner = monthUp.owner = monthDn.owner = self;
      function selectonchange() {
         if(self.goToMonth(self.yearSelect.value, self.monthSelect.value)) {
            self.displayMonth = self.monthSelect.value;
            self.displayYear = self.yearSelect.value;
            }
         else {
            self.monthSelect.value = self.displayMonth;
            self.yearSelect.value = self.displayYear;
            }
         }
      addEventHandler(monthUp, 'click', function() {
         self.nextMonth(); }
      );
      addEventHandler(monthDn, 'click', function() {
         self.prevMonth(); }
      );
      addEventHandler(self.monthSelect, 'change', selectonchange);
      addEventHandler(self.yearSelect, 'change', selectonchange);
      container.appendChild(monthDn);
      container.appendChild(self.monthSelect);
      container.appendChild(self.yearSelect);
      container.appendChild(monthUp);
      return container;
      }
   function createFooter() {
      var container = document.createElement('div');
      //var clearSelected=document.createElement('input');clearSelected.setAttribute('type','button');clearSelected.setAttribute('value',self.clearbtn_caption);clearSelected.setAttribute('title',self.clearbtn_title);clearSelected.owner=self;addEventHandler(clearSelected,'click',function(){self.resetSelections(false);});container.appendChild(clearSelected);if(self.mode=='popup')//{var closeBtn=document.createElement('input');closeBtn.setAttribute('type','button');closeBtn.setAttribute('value',self.closebtn_caption);closeBtn.setAttribute('title',self.closebtn_title);addEventHandler(closeBtn,'click',function(){self.hide();});setClass(closeBtn,'closeBtn');container.appendChild(closeBtn);}
      return container;
      }
   function createDayHeading() {
      self.calHeading = document.createElement('thead');
      setClass(self.calHeading, 'caldayheading');
      var tr = document.createElement('tr'), th;
      self.cols = new Array(false, false, false, false, false, false, false);
      for(var dow = 0; dow < 7; dow++) {
         th = document.createElement('th');
         th.appendChild(document.createTextNode(self.daynames[dow]));
         if(self.selectMultiple) {
            th.headObj = new CalHeading(self, th, (dow + self.startDay < 7 ? dow + self.startDay : dow + self.startDay - 7));
            }
         tr.appendChild(th);
         }
      self.calHeading.appendChild(tr);
      return self.calHeading;
      }
   function createCalCells() {
      self.rows = new Array(false, false, false, false, false, false);
      self.cells = new Array();
      var row =- 1, totalCells = (self.showWeeks ? 48 : 42);
      var beginDate = new Date(self.displayYear, self.displayMonth, 1);
      var endDate = new Date(self.displayYear, self.displayMonth, self.monthDayCount[self.displayMonth]);
      var sdt = new Date(beginDate);
      sdt.setDate(sdt.getDate() + (self.startDay - beginDate.getDay()) - (self.startDay - beginDate.getDay() > 0 ? 7 : 0));
      self.calCells = document.createElement('tbody');
      var tr, td;
      var cellIdx = 0, cell, week, dayval;
      for(var i = 0; i < totalCells; i++) {
         if(i % 7 == 0) {
            row++;
            week = sdt.getWeek(self.startDay);
            tr = document.createElement('tr');
            }
         dayval = sdt.getDate();
         td = document.createElement('td');
         td.appendChild(document.createTextNode(dayval));
         cell = new CalCell(self, td, sdt, row, week);
         self.cells[cellIdx] = cell;
         td.cellObj = cell;
         tr.appendChild(td);
         self.calCells.appendChild(tr);
         self.reDraw(cellIdx++);
         sdt.setDate(dayval + 1);
         }
      return self.calCells;
      }
   function setMode(targetelement) {
      if(self.mode == 'popup') {
         self.calendar.style.position = 'absolute';
         }
      if(targetelement) {
         switch(self.mode) {
            case 'flat':self.tgt = targetelement;
            self.tgt.appendChild(self.calendar);
            self.visible = true;
            break;
            case 'popup':self.calendar.style.position = 'absolute';
            document.body.appendChild(self.calendar);
            self.setTarget(targetelement, false);
            break;
            }
         }
      else {
         document.body.appendChild(self.calendar);
         self.visible = false;
         }
      }
   function deleteCells() {
      self.calendar.celltable.removeChild(self.calendar.celltable.childNodes[1]);
      }
   function setClass(element, className) {
      element.setAttribute('class', className);
      element.setAttribute('className', className);
      }
   function setCellProperties(cellindex) {
      var cell = self.cells[cellindex];
      var date;
      idx = self.dateInArray(self.dates, cell.date);
      if(idx >- 1) {
         date = self.dates[idx];
         cell.date.selected = date.selected || false;
         cell.date.type = date.type;
         cell.date.canSelect = date.canSelect;
         cell.setTitle(date.title);
         cell.setURL(date.href);
         cell.setHTML(date.cellHTML);
         }
      else {
         cell.date.selected = false;
         }
      if(cell.date.getTime() < self.minDate.getTime() || cell.date.getTime() > self.maxDate.getTime()) {
         cell.date.canSelect = false;
         }
      cell.setClass();
      }
   function cal_onmouseover() {
      self.mousein = true;
      }
   function cal_onmouseout() {
      self.mousein = false;
      }
   function updateSelectedDates() {
      var idx = 0;
      self.selectedDates = new Array();
      for(i = 0; i < self.dates.length; i++) {
         if(self.dates[i].selected) {
            self.selectedDates[idx++] = self.dates[i];
            }
         }
      }
   self.dateInArray = function(arr, searchVal, startIndex) {
      startIndex = (startIndex != null ? startIndex : 0);
      for(var i = startIndex; i < arr.length; i++) {
         if(searchVal.getUeDay() == arr[i].getUeDay()) {
            return i;
            }
         }
      return - 1;
      };
   self.setTarget = function(targetelement, focus) {
      if(self.mode == 'popup') {
         function popupFocus() {
            self.show();
            }
         function popupBlur() {
            if(!self.mousein) {
               self.hide();
               }
            }
         function popupKeyDown() {
            self.hide();
            }
         if(self.tgt) {
            removeEventHandler(self.tgt, 'focus', popupFocus);
            removeEventHandler(self.tgt, 'blur', popupBlur);
            removeEventHandler(self.tgt, 'keydown', popupKeyDown);
            }
         self.tgt = targetelement;
         var dto = self.tgt.dateObj, pdateArr = new Array;
         if(dto) {
            if(self.tgt.value.length) {
               pdateArr[0] = dto;
               }
            self.goToMonth(dto.getFullYear(), dto.getMonth());
            }
         self.selectDates(pdateArr, true, true, true);
         self.topOffset = self.tgt.offsetHeight;
         self.leftOffset = 0;
         self.updatePos(self.tgt);
         addEventHandler(self.tgt, 'focus', popupFocus);
         addEventHandler(self.tgt, 'blur', popupBlur);
         addEventHandler(self.tgt, 'keydown', popupKeyDown);
         if(focus !== false) {
            popupFocus();
            }
         }
      else {
         if(self.tgt) {
            self.tgt.removeChild(self.calendar);
            }
         self.tgt = targetelement;
         self.tgt.appendChild(self.calendar);
         self.show();
         }
      };
   self.nextMonth = function() {
      var month = self.displayMonth;
      var year = self.displayYear;
      if(self.displayMonth < 11) {
         month++;
         }
      else if(self.yearSelect.value < self.maxDate.getFullYear()) {
         month = 0;
         year++;
         }
      return self.goToMonth(year, month);
      };
   self.prevMonth = function() {
      var month = self.displayMonth;
      var year = self.displayYear;
      if(self.displayMonth > 0) {
         month--;
         }
      else {
         month = 11;
         year--;
         }
      return self.goToMonth(year, month);
      };
   self.goToMonth = function(year, month) {
      var testdatemin = new Date(year, month, 31);
      var testdatemax = new Date(year, month, 1);
      if(testdatemin >= self.minDate && testdatemax <= self.maxDate) {
         self.monthSelect.value = self.displayMonth = month;
         self.yearSelect.value = self.displayYear = year;
         createCalCells();
         deleteCells();
         self.calendar.celltable.appendChild(self.calCells);
         return true;
         }
      else {
         alert(self.maxrange_caption);
         return false;
         }
      };
   self.updatePos = function(target) {
      if(self.mode == 'popup') {
         self.calendar.style.top = getTop(target) + self.topOffset + 'px';
         self.calendar.style.left = getLeft(target) + self.leftOffset + 'px';
         }
      };
   self.show = function() {
      self.updatePos(self.tgt);
      self.calendar.style.display = 'block';
      self.visible = true;
      };
   self.hide = function() {
      self.calendar.style.display = 'none';
      self.visible = false;
      };
   self.toggle = function() {
      self.visible ? self.hide() : self.show();
      };
   self.addDates = function(dates, redraw) {
      var i;
      for(i = 0; i < dates.length; i++) {
         if(self.dateInArray(self.dates, dates[i]) == - 1) {
            self.dates[self.dates.length] = dates[i];
            }
         }
      updateSelectedDates();
      if(redraw != false) {
         self.reDraw();
         }
      };
   self.removeDates = function(dates, redraw) {
      var idx;
      for(var i = 0; i < dates.length; i++) {
         idx = self.dateInArray(self.dates, dates[i]);
         if(idx !=- 1) {
            self.dates.splice(idx, 1);
            }
         }
      updateSelectedDates();
      if(redraw != false) {
         self.reDraw();
         }
      };
   self.selectDates = function(inpdates, selectVal, redraw, removeothers) {
      var i, idx;
      if(removeothers == true) {
         for(i = 0; i < self.dates.length; i++) {
            self.dates[i].selected = false;
            }
         }
      for(i = 0; i < inpdates.length; i++) {
         idx = self.dateInArray(self.dates, inpdates[i]);
         if(selectVal == true) {
            inpdates[i].selected = true;
            if(idx ==- 1) {
               self.dates[self.dates.length] = inpdates[i];
               }
            else {
               self.dates[idx].selected = true;
               }
            }
         else {
            if(idx >- 1) {
               self.dates[idx].selected = inpdates[i].selected = false;
               if(self.dates[idx].type == 'normal') {
                  self.dates.splice(idx, 1);
                  }
               }
            }
         }
      updateSelectedDates();
      if(redraw != false) {
         self.reDraw();
         }
      };
   self.sendForm = function(form, inputname) {
      var inpname = inputname || 'epochdates', f, inp;
      f = (typeof(form) == 'string' ? document.getElementById(form) : form);
      if(!f) {
         alert('ERROR:Invalid form input');
         return false;
         }
      for(var i = 0; i < self.dates.length; i++) {
         inp = document.createElement('input');
         inp.setAttribute('type', 'hidden');
         inp.setAttribute('name', inpname + '[' + i + ']');
         inp.setAttribute('value', encodeURIComponent(self.dates[i].dateFormat('d-m-Y')));
         f.appendChild(inp);
         }
      return true;
      };
   self.resetSelections = function(retMonth) {
      var dateArray = new Array();
      var dt = self.dates;
      for(var i = 0; i < dt.length; i++) {
         if(dt[i].selected) {
            dateArray[dateArray.length] = dt[i];
            }
         }
      self.selectDates(dateArray, false, false);
      self.rows = new Array(false, false, false, false, false, false, false);
      self.cols = new Array(false, false, false, false, false, false, false);
      if(self.mode == 'popup') {
         self.tgt.value = '';
         self.hide();
         }
      retMonth == true ? self.goToMonth(self.displayYearInitial, self.displayMonthInitial) : self.reDraw();
      };
   self.reDraw = function(index) {
      self.state = 1;
      var len = index ? index + 1 : self.cells.length;
      for(var i = index || 0; i < len; i++) {
         setCellProperties(i);
         }
      self.state = 2;
      };
   self.getCellIndex = function(date) {
      for(var i = 0; i < self.cells.length; i++) {
         if(self.cells[i].date.getUeDay() == date.getUeDay()) {
            return i;
            }
         }
      return - 1;
      };
   self.state = 0;
   self.name = name;
   self.curDate = new Date();
   self.mode = mode;
   self.selectMultiple = (multiselect == true);
   self.dates = new Array();
   self.selectedDates = new Array();
   self.calendar;
   self.calHeading;
   self.calCells;
   self.rows;
   self.cols;
   self.cells = new Array();
   self.monthSelect;
   self.yearSelect;
   self.mousein = false;
   calConfig();
   setLang();
   setDays();
   createCalendar();
   targetelement = typeof(targetelement) == 'string' ? document.getElementById(targetelement) : targetelement;
   setMode(targetelement);
   self.state = 2;
   self.visible ? self.show() : self.hide();
   }
function CalHeading(owner, tableCell, dayOfWeek) {
   function DayHeadingonclick() {
      var sdates = owner.dates;
      var cells = owner.cells;
      var dateArray = new Array();
      owner.cols[dayOfWeek] =!owner.cols[dayOfWeek];
      for(var i = 0; i < cells.length; i++) {
         if(cells[i].dayOfWeek == dayOfWeek && cells[i].date.canSelect && (!owner.selCurMonthOnly || cells[i].date.getMonth() == owner.displayMonth && cells[i].date.getFullYear() == owner.displayYear)) {
            dateArray[dateArray.length] = cells[i].date;
            }
         }
      owner.selectDates(dateArray, owner.cols[dayOfWeek], true);
      }
   var self = this;
   self.dayOfWeek = dayOfWeek;
   addEventHandler(tableCell, 'mouseup', DayHeadingonclick);
   }
function WeekHeading(owner, tableCell, week, tableRow) {
   function weekHeadingonclick() {
      var cells = owner.cells;
      var sdates = owner.dates;
      var dateArray = new Array();
      owner.rows[tableRow] =!owner.rows[tableRow];
      for(var i = 0; i < cells.length; i++) {
         if(cells[i].tableRow == tableRow && cells[i].date.canSelect && (!owner.selCurMonthOnly || cells[i].date.getMonth() == owner.displayMonth && cells[i].date.getFullYear() == owner.displayYear)) {
            dateArray[dateArray.length] = cells[i].date;
            }
         }
      owner.selectDates(dateArray, owner.rows[tableRow], true);
      }
   var self = this;
   self.week = week;
   tableCell.setAttribute('class', 'wkhead');
   tableCell.setAttribute('className', 'wkhead');
   addEventHandler(tableCell, 'mouseup', weekHeadingonclick);
   }
function CalCell(owner, tableCell, dateObj, row, week) {
   var self = this;
   function calCellonclick() {
      if(self.date.canSelect) {
         if(owner.selectMultiple == true) {
            owner.selectDates(new Array(self.date), !self.date.selected, false);
            self.setClass();
            }
         else {
            owner.selectDates(new Array(self.date), true, false, true);
            if(owner.mode == 'popup') {
               owner.tgt.value = self.date.dateFormat();
               owner.tgt.dateObj = new Date(self.date);
               owner.hide();
               }
            owner.reDraw();
            }
         }
      }
   function calCellonmouseover() {
      if(self.date.canSelect) {
         tableCell.setAttribute('class', self.cellClass + ' hover');
         tableCell.setAttribute('className', self.cellClass + ' hover');
         }
      }
   function calCellonmouseout() {
      self.setClass();
      }
   self.setClass = function() {
      if(self.date.canSelect !== false) {
         if(self.date.selected) {
            self.cellClass = 'cell_selected';
            }
         else if(owner.displayMonth != self.date.getMonth()) {
            self.cellClass = 'notmnth';
            }
         else if(self.date.type == 'holiday') {
            self.cellClass = 'hlday';
            }
         else if(self.dayOfWeek > 0 && self.dayOfWeek < 6) {
            self.cellClass = 'wkday';
            }
         else {
            self.cellClass = 'wkend';
            }
         }
      else {
         self.cellClass = 'noselect';
         }
      if(self.date.getUeDay() == owner.curDate.getUeDay()) {
         self.cellClass = self.cellClass + ' curdate';
         }
      tableCell.setAttribute('class', self.cellClass);
      tableCell.setAttribute('className', self.cellClass);
      };
   self.setURL = function(href, type) {
      if(href) {
         if(type == 'js') {
            addEventHandler(self.tableCell, 'mousedown', function() {
               window.location.href = href; }
            );
            }
         else {
            var url = document.createElement('a');
            url.setAttribute('href', href);
            url.appendChild(document.createTextNode(self.date.getDate()));
            self.tableCell.replaceChild(url, self.tableCell.firstChild);
            }
         }
      };
   self.setTitle = function(titleStr) {
      if(titleStr && titleStr.length > 0) {
         self.title = titleStr;
         self.tableCell.setAttribute('title', titleStr);
         }
      };
   self.setHTML = function(html) {
      if(html && html.length > 0) {
         if(self.tableCell.childNodes[1]) {
            self.tableCell.childNodes[1].innerHTML = html;
            }
         else {
            var htmlCont = document.createElement('div');
            htmlCont.innerHTML = html;
            self.tableCell.appendChild(htmlCont);
            }
         }
      };
   self.cellClass;
   self.tableRow = row;
   self.tableCell = tableCell;
   self.date = new Date(dateObj);
   self.date.canSelect = true;
   self.date.type = 'normal';
   self.date.selected = false;
   self.date.cellHTML = '';
   self.dayOfWeek = self.date.getDay();
   self.week = week;
   addEventHandler(tableCell, 'click', calCellonclick);
   addEventHandler(tableCell, 'mouseover', calCellonmouseover);
   addEventHandler(tableCell, 'mouseout', calCellonmouseout);
   self.setClass();
   }
Date.prototype.getDayOfYear = function() {
   return parseInt((this.getTime() - new Date(this.getFullYear(), 0, 1).getTime()) / 86400000 + 1);
   };
Date.prototype.getWeek = function(dowOffset) {
   dowOffset = typeof(dowOffset) == 'int' ? dowOffset : 0;
   var newYear = new Date(this.getFullYear(), 0, 1);
   var day = newYear.getDay() - dowOffset;
   day = (day >= 0 ? day : day + 7);
   var weeknum, daynum = Math.floor((this.getTime() - newYear.getTime() - (this.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;
   if(day < 4) {
      weeknum = Math.floor((daynum + day - 1) / 7) + 1;
      if(weeknum > 52) {
         nYear = new Date(this.getFullYear() + 1, 0, 1);
         nday = nYear.getDay() - dowOffset;
         nday = nday >= 0 ? nday : nday + 7;
         weeknum = nday < 4 ? 1 : 53;
         }
      }
   else {
      weeknum = Math.floor((daynum + day - 1) / 7);
      }
   return weeknum;
   };
Date.prototype.getUeDay = function() {
   return parseInt(Math.floor((this.getTime() - this.getTimezoneOffset() * 60000) / 86400000));
   };
Date.prototype.dateFormat = function(format) {
   if(!format) {
      format = 'd/m/Y';
      }
   LZ = function(x) {
      return(x < 0 || x > 9 ? '':'0') + x};
   var MONTH_NAMES = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
   var DAY_NAMES = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
   var result = "";
   var i_format = 0;
   var c = "";
   var token = "";
   var y = this.getFullYear().toString();
   var M = this.getMonth() + 1;
   var d = this.getDate();
   var E = this.getDay();
   var H = this.getHours();
   var m = this.getMinutes();
   var s = this.getSeconds();
   value = {
      Y : y.toString(), y : y.substring(2), n : M, m : LZ(M), F : MONTH_NAMES[M - 1], M : MONTH_NAMES[M + 11], j : d, d : LZ(d), D : DAY_NAMES[E + 7], l : DAY_NAMES[E], G : H, H : LZ(H)};
   if(H == 0) {
      value['g'] = 12;
      }
   else if(H > 12) {
      value['g'] = H - 12;
      }
   else {
      value['g'] = H;
      }
   value['h'] = LZ(value['g']);
   if(H > 11) {
      value['a'] = 'pm';
      value['A'] = 'PM';
      }
   else {
      value['a'] = 'am';
      value['A'] = 'AM';
      }
   value['i'] = LZ(m);
   value['s'] = LZ(s);
   while(i_format < format.length) {
      c = format.charAt(i_format);
      token = "";
      while((format.charAt(i_format) == c) && (i_format < format.length)) {
         token += format.charAt(i_format++);
         }
      if(value[token] != null) {
         result = result + value[token];
         }
      else {
         result = result + token;
         }
      }
   return result;
   };
function addEventHandler(element, type, func) {
   if(element.addEventListener) {
      element.addEventListener(type, func, false);
      }
   else if(element.attachEvent) {
      element.attachEvent('on' + type, func);
      }
   }
function removeEventHandler(element, type, func) {
   if(element.removeEventListener) {
      element.removeEventListener(type, func, false);
      }
   else if(element.attachEvent) {
      element.detachEvent('on' + type, func);
      }
   }
function getTop(element) {
   var oNode = element;
   var iTop = 0;
   while(oNode.tagName != 'HTML') {
      iTop += oNode.offsetTop || 0;
      if(oNode.offsetParent) {
         oNode = oNode.offsetParent;
         }
      else {
         break;
         }
      }
   return iTop;
   }
function getLeft(element) {
   var oNode = element;
   var iLeft = 0;
   while(oNode.tagName != 'HTML') {
      iLeft += oNode.offsetLeft || 0;
      if(oNode.offsetParent) {
         oNode = oNode.offsetParent;
         }
      else {
         break;
         }
      }
   return iLeft;
   }
   
   


/********************************************************************
********************************************************************/
		
  function WindowOnload(f) {
    var prev=window.onload;
    window.onload=function(){ if(prev)prev(); f(); }
  }

var popup1;
WindowOnload(my_init);

function my_init() { 
popup1 = new Epoch('popup1','popup',document.getElementById('ttl-f34344a1-44a7-45fd-a116-e9f82e2d1517'),false);
document.getElementById('ttl-f34344a1-44a7-45fd-a116-e9f82e2d1517').onclick = function() {popup1.setTarget(this);}
document.getElementById('ttl-f34344a1-44a7-45fd-a116-e9f82e2d1517').onfocus = function() {popup1.setTarget(this);}
document.getElementById('ttl-fed77e4a-344e-4ad9-b828-70bc430a29de').onclick = function() {popup1.setTarget(this);}
document.getElementById('ttl-fed77e4a-344e-4ad9-b828-70bc430a29de').onfocus = function() {popup1.setTarget(this);}
};


//used to set the outward date to todays date
function setStartTimeNow() {
            var dthisday=new Date();
	    var sthismonth=1+dthisday.getMonth();
	    if (sthismonth<10) sthismonth='0'+sthismonth;
            var sthisdate=dthisday.getDate();
	    if (sthisdate<10) sthisdate='0'+sthisdate;
            strthisday = sthisdate+'/'+sthismonth+'/'+dthisday.getFullYear();
            document.getElementById('ttl-f34344a1-44a7-45fd-a116-e9f82e2d1517').value = strthisday; 
}

//used to set the outward date to tomorrows date
function setStartTimeTmrw() {
            var dthisday=new Date();
            vthisday=dthisday.getTime();
            var vnextday = vthisday + (1*24*60*60*1000);
            var dnextday=new Date();
            dnextday.setTime(vnextday);

	    var snextmonth=1+dnextday.getMonth();
	    if (snextmonth<10) snextmonth='0'+snextmonth;
            var snextdate=dnextday.getDate();
	    if (snextdate<10) snextdate='0'+snextdate;

            strnextday = snextdate+'/'+snextmonth+'/'+dnextday.getFullYear();
            document.getElementById('ttl-f34344a1-44a7-45fd-a116-e9f82e2d1517').value = strnextday; 
}

//used to set the return date to same as outward date
function setReturnTimeSame() {
var strthisday = document.getElementById('ttl-f34344a1-44a7-45fd-a116-e9f82e2d1517').value;
document.getElementById('ttl-fed77e4a-344e-4ad9-b828-70bc430a29de').value = strthisday; 
Setreturntime('ttl-fed77e4a-344e-4ad9-b828-70bc430a29de');
            }

//used to set the return date to day after the outward date
function setReturnTimeNext() {
            var strthisday = document.getElementById('ttl-f34344a1-44a7-45fd-a116-e9f82e2d1517').value;
            var a=strthisday.indexOf('/',0);
            var dnextday=new Date();
            var dthisday=new Date();
            if(a>0){
                        var thisday=1*strthisday.substring(0,a);
                        var b=strthisday.indexOf('/',a+1);
                        if(b>0) {
                                    var thismonth=1*strthisday.substring(a+1,b);
                                    var thisyear=1*strthisday.substring(b+1);
                                    if(thisyear<100) thisyear=thisyear+2000;
                                    dthisday.setYear(thisyear);
                                    }
                        if(b<1) {
                                    var thismonth=1*strthisday.substring(a+1);
                                    }
                        dthisday.setDate(thisday);
                        dthisday.setMonth(thismonth-1);
                        vthisday=dthisday.getTime();
                        var vnextday = vthisday + (1*24*60*60*1000);
                        dnextday.setTime(vnextday);

			var snextdate=dnextday.getDate();
			var snextmonth=1+dnextday.getMonth();
	 	        if (snextmonth<10) snextmonth='0'+snextmonth;
		        if (snextdate<10) snextdate='0'+snextdate;

                        strnextday = snextdate+'/'+snextmonth+'/'+dnextday.getFullYear();
                        document.getElementById('ttl-fed77e4a-344e-4ad9-b828-70bc430a29de').value = strnextday; 
                        }

		Setreturntime('ttl-fed77e4a-344e-4ad9-b828-70bc430a29de');
            }

function ReturnOutOnly() {

document.getElementById('ttl-fed77e4a-344e-4ad9-b828-70bc430a29de').value='';
var vRetHour = document.getElementById('ttl-1597f620-35eb-4097-9ee3-0a82750a5824');
vRetHour[0].selected=true;
var vRetMin = document.getElementById('ttl-0d23998e-7180-400b-85a3-7b975135bdf7');
vRetMin [0].selected=true;

if ((document.getElementById('outonly').checked==false) && (document.getElementById('openreturn').checked==false) ){
	document.getElementById('ttl-1597f620-35eb-4097-9ee3-0a82750a5824').disabled=false;
	document.getElementById('ttl-0d23998e-7180-400b-85a3-7b975135bdf7').disabled=false;
	document.getElementById('ttl-fed77e4a-344e-4ad9-b828-70bc430a29de').disabled=false;
	}
else {
	document.getElementById('ttl-1597f620-35eb-4097-9ee3-0a82750a5824').disabled=true;
	document.getElementById('ttl-0d23998e-7180-400b-85a3-7b975135bdf7').disabled=true;
	document.getElementById('ttl-fed77e4a-344e-4ad9-b828-70bc430a29de').disabled=true;
	}

}




//this automatically sets the return time to 9am when a return date is input
function Setreturntime(DateFld)
{
if (DateFld == 'ttl-fed77e4a-344e-4ad9-b828-70bc430a29de')
{
if (document.getElementById('ttl-fed77e4a-344e-4ad9-b828-70bc430a29de').value != ""){
var vRetDate = document.getElementById('ttl-1597f620-35eb-4097-9ee3-0a82750a5824');
for(i=0; i<vRetDate.length; i++)
{
 if (vRetDate[i].text=='09'){
vRetDate[i].selected=true;}
}
}
else if (document.getElementById('ttl-fed77e4a-344e-4ad9-b828-70bc430a29de').value == ""){
var vRetDate = document.getElementById('ttl-1597f620-35eb-4097-9ee3-0a82750a5824');
for(i=0; i<vRetDate.length; i++)
{
 if (vRetDate[i].text==''){
vRetDate[i].selected=true;}
}
}
if (document.getElementById('ttl-fed77e4a-344e-4ad9-b828-70bc430a29de').value != ""){
var vRetDate = document.getElementById('ttl-0d23998e-7180-400b-85a3-7b975135bdf7');
for(i=0; i<vRetDate.length; i++)
{
 if (vRetDate[i].text=='00'){
vRetDate[i].selected=true;}
}
}
else if (document.getElementById('ttl-fed77e4a-344e-4ad9-b828-70bc430a29de').value == ""){
var vRetDate = document.getElementById('ttl-0d23998e-7180-400b-85a3-7b975135bdf7');
for(i=0; i<vRetDate.length; i++)
{
 if (vRetDate[i].text==''){
vRetDate[i].selected=true;}
}
}
}
}
