var imagesFolder = '/calender/';
var tasksLanguage = 'ru';
var calendarNamesHash = [];
calendarNamesHash.ru = [];
calendarNamesHash.en = [];

calendarNamesHash.ru.month = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];
calendarNamesHash.ru.monthShort = ['янв', 'фев', 'мар', 'апр', 'мая', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'];
calendarNamesHash.ru.weekday = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'];
calendarNamesHash.ru.today= 'сегодня';

calendarNamesHash.en.month = ['January', 'February', 'March', 'April', 'May', 'June', 'July','August', 'September', 'October', 'November', 'December'];
calendarNamesHash.en.monthShort = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug','sep', 'oct', 'nov', 'dec'];
calendarNamesHash.en.weekday = ['M', 'T', 'W', 'T', 'F', 'S', 'S'];
calendarNamesHash.en.today= 'today';

var calendarNames = calendarNamesHash[ tasksLanguage == 'en' ? 'en':'ru'];

function calendar(name,value,options){
 writeInFields(name,value,options);
 updateCalendar(name);
} //function calendar


function zeroFill(value){return (value<10 ? '0':'')+value;}
function date2string(date){return date.getDate() + ' ' + calendarNames.monthShort[date.getMonth()] + ' ' + date.getFullYear();}
function date2value(date){return date.getFullYear()+'-'+zeroFill(date.getMonth()+1)+'-'+zeroFill(date.getDate())+' '+zeroFill(date.getHours())+':'+zeroFill(date.getMinutes())+':00';}
function value2date(value){if (value && value != '0000-00-00 00:00:00'){var re = /(\d+)-(\d+)-(\d+)\s+(\d+):(\d+):(\d+)/i;var date = re.exec(value);if (date) return(new Date(date[1],date[2]-1,date[3],date[4],date[5],date[6]));}return null;}
function getDateVal(value,what){if (value && value != '0000-00-00 00:00:00'){var re = /(\d+)-(\d+)-(\d+)\s+(\d+):(\d+):(\d+)/i;var date = re.exec(value);if (date) {if (what == 'y') return date[1];if (what == 'm') return date[2];if (what == 'd') return date[3];}}return null;}
function updateCalendar(name){var date = getCalendarDateUnchecked(name);var hiddenValue = document.getElementsByName(name)[0];if (hiddenValue){var dateH = hiddenValue.value;var yearInput = document.getElementsByName('yyyy')[0];var monthInput = document.getElementsByName('mm')[0];var dayInput = document.getElementsByName('dd')[0];if (yearInput) yearInput.value = getDateVal(dateH,'y');if (monthInput) monthInput.value = getDateVal(dateH,'m');if (dayInput) dayInput.value = getDateVal(dateH,'d');}var dateInput = document.getElementsByName(name + 'Input')[0];var hoursInput = document.getElementsByName(name + 'Hours')[0];var minutesInput = document.getElementsByName(name + 'Minutes')[0];if (dateInput) dateInput.value = date ? date2string(date) : ' ';if (hoursInput) hoursInput.value = date ? date.getHours() : '-';if (minutesInput) minutesInput.value = date ? zeroFill(date.getMinutes()) : '-';}
function getCalendarDateUnchecked(name){var hiddenValue = document.getElementsByName(name)[0];return hiddenValue ? value2date(hiddenValue.value) : null;}
function getCalendarDate(name){var date=getCalendarDateUnchecked(name);return date ? date : new Date();}
function putCalendarDate(name, date) {var hiddenValue = document.getElementsByName(name)[0];if (hiddenValue){hiddenValue.value = date2value(date);updateCalendar(name);}}
function putCalendarValue(name,value){var hiddenValue = document.getElementsByName(name)[0];if(hiddenValue){hiddenValue.value = value;updateCalendar(name);}}
function calendarCallback(name, date, mode){}
function changeCalendarDate(name, date, mode){var current=getCalendarDate(name);putCalendarDate(name,date);if (date2value(date) != date2value(current)) calendarCallback(name, date, mode);}var closeCalendarTimeOut = 0;var activeCalendarName = '';
function setDateFromCalendar(dayToSet, monthToSet, yearToSet){var dateToSet = getCalendarDate(activeCalendarName);dateToSet.setFullYear(yearToSet);dateToSet.setDate(1);dateToSet.setMonth(monthToSet);dateToSet.setDate(dayToSet);changeCalendarDate(activeCalendarName, dateToSet, 'date');hideCalendar();}
function setTodayFromCalendar() {var date=new Date();setDateFromCalendar(date.getDate(),date.getMonth(),date.getFullYear());}
function getCalendarTimeFromString(fieldName) {var hoursInput = document.getElementsByName(fieldName + 'Hours')[0];var minutesInput = document.getElementsByName(fieldName + 'Minutes')[0];if (hoursInput && minutesInput){var newDate = getCalendarDate(fieldName);var thisHour=parseInt(hoursInput.value);var thisMinutes=parseInt(minutesInput.value);if (!isNaN(thisHour)) newDate.setHours(thisHour);if (!isNaN(thisMinutes)) newDate.setMinutes(thisMinutes);changeCalendarDate(fieldName, newDate, 'time');}}
function getCalendarDateFromString(fieldName) {var dateInput = document.getElementsByName(fieldName + 'Input')[0];var re = /^\s*(\d+)[\s|\/|.]+([^\s]+)[\s|\/|.]+(\d+)\s*$/i;var results = re.exec(dateInput.value);if (results){var newDate = getCalendarDate(fieldName);var newYear = parseInt(results[3]);if (newYear < 30) newYear += 2000;else if (newYear < 100) newYear += 1900;else if (newYear < 1930) newYear += 2000;newDate.setFullYear(newYear);newDate.setDate(1);if (isNaN(parseInt(results[2]))){var monthStr = results[2].toLowerCase();for (var i = 0; i < 12; i++) {if (calendarNamesHash.ru.month[i].toLowerCase().indexOf(monthStr) == 0 ||calendarNamesHash.ru.monthShort[i].toLowerCase().indexOf(monthStr) == 0 ||calendarNamesHash.en.month[i].toLowerCase().indexOf(monthStr) == 0 ||calendarNamesHash.en.monthShort[i].toLowerCase().indexOf(monthStr) == 0) {newDate.setMonth(i);break;}}} else {newDate.setMonth(parseInt(results[2]) - 1);}newDate.setDate(parseInt(results[1]));changeCalendarDate(fieldName, newDate, 'date');} else {if (dateInput.value){alert('Неверный формат даты');updateCalendar(fieldName);}}}var pixelSpacer = '<div style="width: 1px; height: 1px;"><spacer type="block" width=1 height=1></div>\n';

function writeInFields(name, value, options) {
 var pref = (name=='begin_') ? 'с' : 'по';
 var a = (name=='begin_') ? [2,3] : [4,5];

 var s='<table cellpadding=0 cellspacing=0 border=0>\n'+
        '<input type=hidden name="' + name + '" value="' + value + '">\n'+
        '<input type=hidden name="' + 'yyyy" value="' + getDateVal(value,'y') + '">\n'+
        '<input type=hidden name="' + 'mm" value="' + getDateVal(value,'m') + '">\n'+
        '<input type=hidden name="' + 'dd" value="' + getDateVal(value,'d') + '">\n'+
        '<tr valign=bottom>\n'+
         '<td width=20 nowrap><SPAN style="COLOR: #ffffff"><b>'+pref+'</b></spab></td>\n'+
         '<td><input type=text name="' + name + 'Input" style="width:50px;" onBlur="getCalendarDateFromString(\'' + name + '\');"></td>\n'+
         '<td valign=middle>\n'+
         '<button class="calBtn" name="' + name + 'Btn" onClick="showCalendarForElement(\'' + name + '\', event); return false;" style="width:30px;height:15px;">&nbsp;<img src="' + imagesFolder + 'dayselect.gif" width=15 height=15>&nbsp;</button>'+
         '&nbsp;&nbsp;<a onClick="showCalendarForElement(\'' + name + '\', event); return false;" style="color:#5780da;font-size:12px" href="#">Календарь</a>'+
        '</td>\n';


 if (options == 1){
  s+= '<td valign=middle>&nbsp;&nbsp;</td>\n'+
      '<td><input type=text name="' + name + 'Hours" size=3 onBlur="getCalendarTimeFromString(\'' + name + '\');" style="text-align: right;" /></td>\n'+
      '<td valign=middle><small>&nbsp;:&nbsp;</small></td>\n'+
      '<td><input type=text name="' + name + 'Minutes" size=3 onBlur="getCalendarTimeFromString(\'' + name + '\');"></td>\n'+
      '<td valign=middle>&nbsp;&nbsp;</td>\n';
 }


  s+=  '</tr>\n'+
       '<tr>\n'+
        '<td colspan=3>' + pixelSpacer + '</td>\n'+
        '<td>\n<div id="' + name + 'Ptr" style="width: 1px; height: 1px;"><spacer type=block width=1 height=1></div></td>\n'+
       '</tr>\n'+
      '</table>\n';
 document.write(s);
}

function setTime(name, value, options) {
 var pref = (name=='begin_') ? 'с' : 'по';
 var a = (name=='begin_') ? [2,3] : [4,5];

 var s =  '<table cellpadding=0 cellspacing=0 border=0>'+
           '<tr>'+
            '<td width=20 nowrap><SPAN style="COLOR: #ffffff"><b> '+pref+'</b></span></td>'+
            '<td>'+
             '<SELECT id=cel'+a[0]+'>'+
              '<OPTION value="" selected>часы</OPTION>'+
              '<OPTION value=9>9</OPTION>'+
              '<OPTION value=10>10</OPTION>'+
              '<OPTION value=11>11</OPTION>'+
              '<OPTION value=12>12</OPTION>'+
              '<OPTION value=13>13</OPTION>'+
              '<OPTION value=14>14</OPTION>'+
              '<OPTION value=15>15</OPTION>'+
              '<OPTION value=16>16</OPTION>'+
              '<OPTION value=17>17</OPTION>'+
              '<OPTION value=18>18</OPTION>'+
              '<OPTION value=19>19</OPTION>'+
              '<OPTION value=20>20</OPTION>'+
              '<OPTION value=21>21</OPTION>'+
              '<OPTION value=22>22</OPTION>'+
              '<OPTION value=23>23</OPTION>'+
              '<OPTION value=24>24</OPTION>'+
             '</SELECT>'+
            '</td>'+
            '<td width=10 nowrap></td>'+
            '<td>'+
             '<SELECT id=cel'+a[1]+'>'+
              '<OPTION value="" selected>мин</OPTION>'+
              '<OPTION value=00>00</OPTION>'+
              '<OPTION value=30>30</OPTION>'+
             '</SELECT>'+
            '</td>'+
           '</tr>'+
          '</table>';

 document.write(s);
} //function setTime


function Gid(id){return document.getElementById(id);}
function showCalendarForElement(elemName, evt) {
 var badSelect = Gid('price');
 if(badSelect){
  badSelect.style.visibility = 'hidden';
 }
 var calPtr = Gid(elemName + 'Ptr');
 if (calPtr) {
  var calLeer = Gid('candarLeer');
  if (!calLeer) {
   calLeer = document.createElement('div');
   calLeer.id = 'candarLeer';
   document.getElementsByTagName('body')[0].appendChild(calLeer);
  }
  if (calLeer.style.visibility == 'visible' && activeCalendarName == elemName) {
   calLeer.style.visibility = 'hidden';
  }
  else {activeCalendarName = elemName;
   calLeer.style.visibility = 'hidden';
   var calPosition = new getElementPosition(calPtr);
   var currDate = getCalendarDate(elemName);
   calLeer.innerHTML = calendarHTML(currDate.getMonth(), currDate.getFullYear(), currDate);
   calLeer.style.left = calPosition.x - 40- calLeer.offsetWidth/3*2;
   calLeer.style.top = calPosition.y;
   calLeer.style.visibility = 'visible';

   if (evt) evt.cancelBubble = true;
   addEvent(calLeer, 'click', calendarClick);
   addEvent(calLeer, 'mouseover', calendarMouseOver);
   addEvent(calLeer, 'mouseout', calendarMouseOut);
  }
 }
}

function calendarClick(e) {evt = (e)? e : window.event;evt.cancelBubble = true;}
function calendarMouseOver(e) {if (closeCalendarTimeOut) {clearTimeout(closeCalendarTimeOut);closeCalendarTimeOut = 0;}}
function calendarMouseOut(e) {if (closeCalendarTimeOut) clearTimeout(closeCalendarTimeOut);closeCalendarTimeOut = setTimeout('hideCalendar()', 5000);}
function hideCalendar() {var calLeer = document.getElementById('candarLeer');if (calLeer) calLeer.style.visibility = 'hidden';closeCalendarTimeOut = 0;var badSelect = document.getElementById('price');if(badSelect){badSelect.style.visibility = 'visible'}}
function switchMonthTo(month, year) {var calLeer = document.getElementById('candarLeer');if (calLeer) {var currDate = getCalendarDate(activeCalendarName);calLeer.innerHTML = calendarHTML(month, year, currDate);}}
function calendarHTML(month, year, currDate) {var isThisMonth = (currDate)? (currDate.getMonth() == month && currDate.getFullYear() == year) : false;var drawMonth = new Date(); drawMonth.setMonth(month, 1); drawMonth.setYear(year); drawMonth.setDate(1);var thisMonth = drawMonth.getMonth();var nextMonth = (thisMonth == 11)? 0 : thisMonth + 1;var prevMonth = (thisMonth == 0)? 11 : thisMonth - 1;var thisYear = drawMonth.getFullYear();var nextMonthYear = (thisMonth == 11)? thisYear + 1 : thisYear;var nextYear = thisYear + 1;var prevMonthYear = (thisMonth == 0)? thisYear - 1 : thisYear;var prevYear = thisYear - 1;var calendarCode = '<table cellpadding=0 cellspacing=0 border=0 style="border: 1px solid #D7D7D7;">\n<tr>\n<td class=purpleCell>\n<table cellpadding=0 cellspacing=3 border=0 width=100%>\n<tr>\n<td><img src="' + imagesFolder + 'arr-prev.gif" width=15 height=16 border=0 onClick="switchMonthTo(' + thisMonth + ', ' + prevYear + ')" style="cursor: pointer; cursor: hand;" /></td>\n<td align=center class=purpleCell>' + thisYear + '</td>\n<td align=right><img src="' + imagesFolder + 'arr-next.gif" width=15 height=16 border=0 onClick="switchMonthTo(' + thisMonth + ', ' + nextYear + ')" style="cursor: pointer; cursor: hand;"></td>\n</tr>\n<tr>\n<td><img src="' + imagesFolder + 'arr-prev.gif" width=15 height=16 border=0 onClick="switchMonthTo(' + prevMonth + ', ' + prevMonthYear + ')" style="cursor: pointer; cursor: hand;"></td>\n<td align=center class=purpleCell>' + calendarNames.month[thisMonth] + '</td>\n<td align=right><img src="' + imagesFolder + 'arr-next.gif" width=15 height=16 border=0 onClick="switchMonthTo(' + nextMonth + ', ' + nextMonthYear + ')" style="cursor: pointer; cursor: hand;" /></td>\n</tr>\n</table>\n</td>\n</tr>\n<tr>\n<td style="border-top: 1px solid #D7D7D7;" bgcolor="#ffffff">\n<table cellpadding=0 cellspacing=0 border=0 width=100% style="border-bottom: 1px solid #D7D7D7;">\n<tr>\n<td class=whiteCell>&nbsp;</td>\n<td class=whiteCell>&nbsp;</td>\n';for(var i = 0; i < calendarNames.weekday.length; i++){var styleClass = (i < calendarNames.weekday.length - 1)? 'whiteCell' : 'sundayCell';calendarCode += '<td class=weekDay align=right>' + calendarNames.weekday[i] + '</td>\n';}calendarCode += '<td class=whiteCell>&nbsp;</td>\n<td class=whiteCell>&nbsp;</td>\n</tr>\n';calendarCode += '<tr>\n<td class=whiteCell><br /><\/td><td class=whiteCell><br></td>\n';var daysToStart = (drawMonth.getDay() == 0)? 7 : drawMonth.getDay();for (var i = 0; i < daysToStart - 1; i++) calendarCode += '<td class=whiteCell><br></td>\n';for (var i = 1; i < 33; i++) {drawMonth.setDate(i);if (isThisMonth && i == currDate.getDate()) {var styleClass = (drawMonth.getDay() == 0)? 'sundayCell' : 'whiteCell';calendarCode += '<td class="' + styleClass + '" align=right onMouseOver="this.className = \'overCell\';" onMouseOut="this.className = \'' + styleClass + '\';" onClick="setDateFromCalendar(' + i + ', ' + month + ', ' + year + ');" style="cursor:pointer; cursor:hand; font-weight:bold;">' + i + '</td>\n'} else {if (drawMonth.getMonth() == thisMonth) {var styleClass = (drawMonth.getDay() == 0)? 'sundayCell' : 'whiteCell';calendarCode += '<td class="' + styleClass + '" align=right onMouseOver="this.className = \'overCell\';" onMouseOut="this.className = \'' + styleClass + '\';" onClick="setDateFromCalendar(' + i + ', ' + month + ', ' + year + ');" style="cursor: pointer; cursor: hand;">' + i + '</td>\n';}else break;}if (drawMonth.getDay() == 0) calendarCode += '<td class=whiteCell><br></td>\n<td class=whiteCell><br></td>\n</tr>\n<tr>\n<td class=whiteCell><br></td>\n<td class=whiteCell><br></td>\n';}if (drawMonth.getDay() != 1) {var daysToEnd = 8 - ((drawMonth.getDay() == 0)? 7 : drawMonth.getDay());for (var i = 0; i < daysToEnd; i++) calendarCode += '<td class=whiteCell><br></td>\n';}calendarCode += '<td class=whiteCell><br></td>\n<td class=whiteCell><br></td>\n</tr>\n</table>\n</td>\n</tr>\n';calendarCode += '</table>\n';return calendarCode;}
function getElementPosition(elemPtr) {var posX = elemPtr.offsetLeft;var posY = elemPtr.offsetTop;while (elemPtr.offsetParent != null) {elemPtr = elemPtr.offsetParent;posX += elemPtr.offsetLeft;posY += elemPtr.offsetTop;}this.x = posX;this.y = posY;return this;}
function addEvent(elementPtr, eventType, eventFunc) {if (elementPtr.addEventListener)  elementPtr.addEventListener(eventType, eventFunc, false);if (elementPtr.attachEvent) elementPtr.attachEvent('on' + eventType, eventFunc);}
function SaveForm(){var arr=[7,'Фамилия',8,'Имя Отчество',9,'Контактный телефон'],i,b;for(i=0,b=arr.length; i<b; i=i+2){if(Gid('clc'+arr[i]).value!='') continue;alert('Поле `'+arr[i+1]+'` не заполнено!');Gid('clc'+arr[i]).focus();return false;}if(Gid('clc13').selectedIndex<1){alert('Не выбрана марка автомобиля!');Gid('clc13').focus();return false;}var i,tt,nm,aa=['',''];for(i=0; i<2; i++){nm = (i==0) ? 'begin_' : 'finish_';tt = document.getElementsByName(nm)[0];if(!tt) continue;var re = /(\d+)-(\d+)-(\d+)/i;var date = re.exec(tt.value);aa[i] = date[3]+'.'+date[2]+'.'+date[1];}if(aa[0]=='' || aa[1]==''){alert('Укажите дату и время!');return false;}Gid('clc11').value = aa[0]+' '+GetSv(Gid('cel2'))+':'+GetSv(Gid('cel3'));Gid('clc12').value = aa[1]+' '+GetSv(Gid('cel4'))+':'+GetSv(Gid('cel5'));return true;}
function GetSv(o){return (!o) ? '' : o.options[o.selectedIndex].value;}addEvent(document, 'click', hideCalendar);addEvent(window, 'resize', hideCalendar);
