Calendar={activeDays:null,activeMonth:null,activeYear:null,browser:undefined,chooseYear:null,chooseMonth:null,className:"Calendar",constants:{UNKNOWN:0,POSITION_BEFORE_ALL:1,POSITION_AFTER_ALL:2,IE:8,OPERA:9,NETSCAPE:10},currentDateDefined:false,dynamic:false,endYear:2030,lang:null,monthdays:new Array(31,28,31,30,31,30,31,31,30,31,30,31),out:null,startYear:2000,version:"1.0"};Calendar.$=function(a){return document.getElementById(a)};Calendar.clearTag=function(a){a.innerHTML=""};Calendar.createControlPanel=function(){this.controlPanel=document.createElement("DIV");this.controlPanel.innerHTML="";var b=document.createTextNode(this.lang.year);this.chooseYear=document.createElement("SELECT");this.chooseYear.onchange=this.eventhandlers.datechange;this.controlPanel.appendChild(b);this.controlPanel.appendChild(this.chooseYear);for(var c=this.startYear;c<this.endYear;c++){var d=document.createElement("OPTION");d.value=c;d.text=c;d.innerText=c;if(this.year==c){d.selected=true}this.chooseYear.appendChild(d)}this.chooseMonth=document.createElement("SELECT");this.chooseMonth.onchange=this.eventhandlers.datechange;var e=document.createTextNode(this.lang.month);this.controlPanel.appendChild(e);for(var c=0;c<this.lang.months.length;c++){var d=document.createElement("OPTION");d.value=c;d.innerText=this.lang.months[c];d.text=this.lang.months[c];if(this.month==c){d.selected=true}this.chooseMonth.appendChild(d)}this.controlPanel.appendChild(this.chooseMonth);var a=document.createElement("INPUT");a.type="button";a.value=this.lang.submitButtonLabel;a.onclick=this.eventhandlers.buttonclick;a.className="button_submit";this.controlPanel.appendChild(a)};Calendar.createInstance=function(){this.lang=this.langs.ru;this.defineBrowser()};Calendar.createAndInsert=function(){var a=document.createElement("DIV");a.setAttribute("id","output_place");var c=document.createElement("DIV");c.setAttribute("id","place_for_calendar");var b=document.createElement("DIV");b.setAttribute("id","place_for_cpanel");b.className="place_for_cpanel";a.appendChild(b);a.appendChild(c);document.writeln(a.innerHTML);this.createInstance();this.setOutputTag("place_for_calendar");this.showCalendar();this.createControlPanel();this.showControlPanel("place_for_cpanel")};Calendar.defineBrowser=function(){if(navigator.appName=="Netscape"){this.browser=this.constants.NETSCAPE}else{if(navigator.appName=="Microsoft Internet Explorer"){this.browser=this.constants.IE}else{if(navigator.appName=="Opera"){this.browser=this.constants.OPERA}else{this.browser=this.constants.UNKNOWN}}}};Calendar.eventhandlers={datechange:function(){Calendar.currentDateDefined=false;Calendar._setCurrentDate(Calendar.chooseYear.value,Calendar.chooseMonth.value,1);if(Calendar.dynamic){Calendar.showCalendar()}},cellclick:function(b,d){var i=undefined;if(b!=undefined){i=b}else{try{i=window.event}catch(h){}}var g=undefined;if(i.target!=undefined){g=i.target}else{if(i.srcElement){g=i.srcElement}else{throw"Unable to define target element. Please contact to developer."}}var a=window.parseInt(g.innerHTML);var f=Calendar.chooseMonth.value;var c=Calendar.chooseYear.value;Calendar.eventhandlers.cellclick_doTransfer(c,f,a)},buttonclick:function(a,c){var d=Calendar.chooseMonth.value;var b=Calendar.chooseYear.value;Calendar.eventhandlers.cellclick_doTransfer(b,d,null)},cellclick_doTransfer:function(b,c,a){alert("service message: year="+b+"&month="+c+"&day="+a)}};Calendar.isValue=function(a){return((a!=null)&&(a!="null")&&(a!="")&&(a!="undefined")&&(a))};Calendar.langs={en:{month:"",months:new Array("January","Febriary","Marth","April","May","June","July","August","September","October","November","December"),week:new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat"),year:"",submitButtonLabel:"OK"},ru:{month:"",months:new Array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"),week:new Array("Пн","Вт","Ср","Чт","Пт","Сб","Вс"),year:"",submitButtonLabel:"ОК"}};Calendar.safeGet=function(b,a){return Calendar.isValue(b)?b:a};Calendar.setActiveDays=function(a,b,c){this.activeMonth=b;this.activeYear=a;this.activeDays=c};Calendar._setCurrentDate=function(c,e,d){if(!this.currentDateDefined){var b=Calendar.safeGet(d,1);var a=null;if(!Calendar.isValue(e)||!Calendar.isValue(e)){a=new Date()}else{a=new Date(c,e,b)}this.today=a;this.day=a.getDay();this.month=a.getMonth();this.year=a.getFullYear();this.dayMonth=a.getDate();this.start=(this.day-this.dayMonth%7+7)%7;this.currentDateDefined=true}};Calendar.showCalendar=function(){if(this.out===null){var e=document.createElement("DIV");document.documentElement.appendChild(e);this.out=e}if(!this.currentDateDefined){var l=new Date();this._setCurrentDate(l.getFullYear(),l.getMonth(),l.getDate())}var p=this.out;this.clearTag(p);var s=document.createElement("TABLE");s.className="calendar_table";var r=document.createElement("THEAD");s.appendChild(r);var a=document.createElement("TBODY");s.appendChild(a);var n=document.createElement("TR");n.className="calendar_header";r.appendChild(n);for(var o=0;o<this.lang.week.length;o++){var j=this.lang.week[o];var k=document.createTextNode(j);var d=document.createElement("TH");d.className=(o<5)?"week_common":"week_weekend";d.appendChild(k);n.appendChild(d)}var b=parseInt(this.monthdays[this.month]);if((this.month==1)&&(this.year%4==0)){b=29}var c=parseInt(this.start);var f=null;var q=c;var g=b+c;for(var o=0;o<g;o++){if(o%7==0){f=document.createElement("TR");a.appendChild(f)}var j=null;if(q>0){j="";q--}else{var m=o-c+1;j=m}var k=document.createTextNode(j);var h=document.createElement("TD");h.className=(((o%7)<5)||j=="")?"day_common":"day_weekend";if(this.activeYear==this.year&&this.activeMonth==this.month&&this.activeDays!=null&&m<this.activeDays.length&&this.activeDays[m-1]==1){h.className+=" active_day"}else{if(m==this.today.getDate()){h.className="current_day"}}h.appendChild(k);if(j!=""){h.onclick=this.eventhandlers.cellclick}f.appendChild(h)}p.appendChild(s)};Calendar.setOutputTag=function(a){this.out=this.$(a)};Calendar.showControlPanel=function(a){this.cpanel=document.getElementById(a);this.clearTag(this.cpanel);this.cpanel.appendChild(this.controlPanel)};