function opdiv()
{
	document.getElementById("DaFPtr").style.display="";
	document.getElementById("cal").style.display="none";	
}
function cldiv()
{
	document.getElementById("DaFPtr").style.display="none";
	document.getElementById("cal").style.display="";	
}
function insertvalue(day,mounth,year)
{
	if(day<10) day="0"+day;
	mounth=mounth+1;
	if(mounth<10) mounth="0"+mounth;
	document.getElementById("transferdate").value=day+"."+mounth+"."+year;

}

var calendarNamesHash = new Array();
calendarNamesHash.ru = new Array();
calendarNamesHash.en = new Array();
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'];

var closeCalendarTimeOut = 0;
var activeCalendarName = '';

function getCalendarDate(name) {
    if (!LSCalendars[name].GetDate()) { return (new Date()); }
    else { return LSCalendars[name].GetDate(); }
}

function setDateForCalendar(dayToSet, monthToSet, yearToSet) {

    if (!LSCalendars[activeCalendarName].GetDate()) { var dateToSet = new Date(); }
    else { var dateToSet = LSCalendars[activeCalendarName].GetDate(); }

    dateToSet.setFullYear(yearToSet);
    dateToSet.setMonth(monthToSet,1);
	dateToSet.setDate(dayToSet);

    LSCalendars[activeCalendarName].SetDate(dateToSet);
}

function setCalendarDateByStr(name, strDate) {
    if (strDate==null || strDate=="") { // если пустая строка
        LSCalendars[name].SetDate(null);
    } 
    else {
        MyCal=new LSCalendar();
        if (!MyCal.Validate(strDate)) {
            alert("Неверный формат даты - "+strDate);
            return false;
        }
        else {
            LSCalendars[name].SetDate(strDate);
            setInputByLSCalendar(name);
            return true;
        }
    }
    closeCalendarTimeOut = 0; // важно
}

function showCalendarForElement(elemName) {
    calLeer = document.getElementById('DaFPtr');
	activeCalendarName = elemName;
	var currDate = getCalendarDate(elemName);
	calLeer.innerHTML = calendarHTML(currDate.getMonth(), currDate.getFullYear(), currDate);
}

function switchMonthTo(month, year) {
    var calLeer = document.getElementById('DaFPtr');
    if (calLeer) {
        var currDate = getCalendarDate(activeCalendarName);
        calLeer.innerHTML = calendarHTML(month, year, currDate);
    }
}

function LSCalendar() {
    this.date=null;
    this.format='dd-mm-yyyy';
    this.SetDate=_SetDate;
    this.GetStrDate=_GetStrDate;
    this.GetDate=_GetDate;
    this.Str2Date=_Str2Date;
    this.zeroFill=_zeroFill;
    this.Validate=_Validate;
    this.SetFormat=_SetFormat;
    return true;
}

function _SetDate(Date) {
    if (Date==null || Date=="") { this.date=null; }
    else if (typeof(Date)=="object") { this.date=Date; }
    else { this.date=this.Str2Date(Date)?this.Str2Date(Date):(new Date()); }
    return true;
}

function _GetDate() {
    return this.date;
}

function _zeroFill(value) {
    return (value<10?'0':'')+value;
}

function _GetStrDate() {
    if (!this.date) {
        return "";
    }
    else {
        var Day=this.zeroFill(this.date.getDate());
        var Month=this.zeroFill(this.date.getMonth()+1);
        var Year=this.date.getFullYear();
        var shortYear=this.date.getYear();
		if (shortYear>=2000) { shortYear-=2000; } 
        else if (shortYear>=100) { shortYear-=100; }
        shortYear=this.zeroFill(shortYear);
        if (this.format=='dd-mm-yy') { return Day+'-'+Month+'-'+shortYear; }
        else if (this.format=='dd.mm.yy') { return Day+'.'+Month+'.'+shortYear; }
        else if (this.format=='yyyy-mm-dd') { return Year+'-'+Month+'-'+Day; }
        else if (this.format=='yyyy.mm.dd') { return Year+'.'+Month+'.'+Day; }
        else if (this.format=='dd.mm.yyyy') { return Day+'.'+Month+'.'+Year; }
        else { return Day+'-'+Month+'-'+Year; }
    }
}

function _Validate(Str) {
    return this.Str2Date(Str)?true:false;
}

function _Str2Date(Str) {
    if (Str) {
        var RegYMDHIS = /^(\d{4})[-|.|\/](\d+)[-|.|\/](\d+)\s+(\d+):(\d+):(\d+)$/i; 
        var RegDMYHIS = /^(\d+)[-|.|\/](\d+)[-|.|\/](\d{4})\s+(\d+):(\d+):(\d+)$/i; 
        var RegYMD = /^(\d{4})[-|.|\/](\d+)[-|.|\/](\d+)$/i; 
        var RegDMY = /^(\d+)[-|.|\/](\d+)[-|.|\/](\d{4})$/i; 
        var RegDMY2 = /^(\d+)[-|.|\/](\d+)[-|.|\/](\d{2})$/i; 

        var date = RegYMDHIS.exec(Str);
        if (date) { return (new Date(date[1],date[2]-1,date[3],date[4],date[5],date[6])); }

        var date = RegDMYHIS.exec(Str);
        if (date) { return (new Date(date[3],date[2]-1,date[1],date[4],date[5],date[6])); }

        var date = RegYMD.exec(Str);
        if (date) { return (new Date(date[1],date[2]-1,date[3])); }

        var date = RegDMY.exec(Str);
        if (date) { return (new Date(date[3],date[2]-1,date[1])); }

        var date = RegDMY2.exec(Str);
        if (date) {
            Year=Number(date[3]);
            if (Year<10) { Year+=2000; }
            else { Year+=1900; }
            return (new Date(Year, (date[2]-1), date[1]));
        }
    }
    return null;
}

function _SetFormat(Str) {
    if (Str=='dd-mm-yy') { this.format='dd-mm-yy'; }
    else if (Str=='dd.mm.yy') { this.format='dd.mm.yy'; }
    else if (Str=='yyyy-mm-dd') { this.format='yyyy-mm-dd'; }
    else if (Str=='yyyy.mm.dd') { this.format='yyyy.mm.dd'; }
    else if (Str=='dd.mm.yyyy') { this.format='dd.mm.yyyy'; }
    else { this.format='dd-mm-yyyy'; }
    return true;
}

var LSCalendars=new Array();

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 nextYear = thisYear + 1;
    var prevYear = thisYear - 1;
    var nextMonthYear = (thisMonth == 11)? thisYear + 1 : thisYear;
    var prevMonthYear = (thisMonth == 0)? thisYear - 1 : thisYear;
    
    
    var calendarCode = '<div id="cal_close"><a href="javascript:cldiv();"><img src="/img/cal_close.gif" width="14" height="14" title="Закрыть" alt="Закрыть"></a></div>';
    calendarCode += '<div class="cal_head"><table align="center" class="cal_mounth_table">';
	tes=new Date();
	calendarCode += '<tr><td><div onClick="switchMonthTo(' + prevMonth + ', ' + prevMonthYear + ');" class="arr"><img src="/img/arr_left.gif" style="width:12px;height:9px;" alt="Предыдущий месяц" title="Предыдущий месяц"></div><\/td>';

    calendarCode += '<td id="m_y"><div>' + calendarNames.month[thisMonth] + '  ' + thisYear + '</div><\/td>';
    calendarCode += '<td><div class="arr" onClick="switchMonthTo(' + nextMonth + ', ' + nextMonthYear + ');"><img src="/img/arr_right.gif" style="width:12px;height:9px;" alt="Следующий месяц" title="Следующий месяц"></div><\/td><\/tr>';
    calendarCode += '<\/table><\/div>';

    calendarCode += '<div class="calendar_web"><table id="cal_table"><tr>';
    calendarCode += '';
    for (var i = 0; i < calendarNames.weekday.length; i++) {
        var styleClass = (i < calendarNames.weekday.length - 1)? 'whiteCell' : 'sundayCell';
        if(i==5 || i==6) calendarCode += '<td class="weekend">' + calendarNames.weekday[i] + '<\/td>';
		else  calendarCode += '<td class="weekday">' + calendarNames.weekday[i] + '<\/td>';
    }

    calendarCode += '<tr>';
    var daysToStart = (drawMonth.getDay() == 0)? 7 : drawMonth.getDay();
    for (var i = 0; i < daysToStart - 1; i++) calendarCode += '<td ><br /><\/td>';
	
    for (var i = 1; i < 33; i++) {
        drawMonth.setDate(i);
		if (i<10){
			td='0'+i;
		}
		else{
			td=i;
		}
		if (thisMonth<10){
			tm='0'+thisMonth;
		}
		else{
			tm=thisMonth;
		}
		if (isThisMonth && i == currDate.getDate() && flag!=1) {
           calendarCode += '<td onMouseOver="this.className = \'overCell\';" onMouseOut="this.className = \'' + styleClass + '\';" onClick="window.location.href=\''+ linkLanguage +i+'/'+month+'/'+year+'/\'" style="cursor:pointer;cursor:hand;">' + i + '<\/td>';
        }
		else if (str.match(td+'-'+tm+'-'+thisYear)){
			if (cpu==1){
				var styleClass = ((drawMonth.getDay()==0) || (drawMonth.getDay()==6))? 'LinksundayCell' : 'LinkwhiteCell';
				calendarCode += '<td onMouseOver="this.className = \'overCell\';" onMouseOut="this.className = \'' + styleClass + '\';" onClick="window.location.href=\''+ linkLanguage +i+'/'+month+'/'+year+'/\'" style="cursor:pointer;cursor:hand;">' + i + '<\/td>';
			}
			else{
				var styleClass = ((drawMonth.getDay()==0) || (drawMonth.getDay()==6))? 'LinksundayCell' : 'LinkwhiteCell';
				calendarCode += '<td onMouseOver="this.className = \'overCell\';" onMouseOut="this.className = \'' + styleClass + '\';" onClick="window.location.href=\'?'+ linkLanguage +'r=2&d='+i+'&m='+month+'&y='+year+'\'"style="cursor:pointer;cursor:hand;">' + i + '<\/td>';
			}
		}
        else {
            if (drawMonth.getMonth() == thisMonth) {
                var styleClass = ((drawMonth.getDay()==0) || (drawMonth.getDay()==6))? 'sundayCell' : 'whiteCell';
calendarCode += '<td onMouseOver="this.className = \'overCell\';" onMouseOut="this.className = \'' + styleClass + '\';" onClick="insertvalue('+i+','+month+','+year+');" style="cursor:pointer;cursor:hand;">' + i + '<\/td>';
            }
            else {
                break;
            }
        }
        if (drawMonth.getDay() == 0) calendarCode += '<\/tr><tr>';
    }

    if (drawMonth.getDay() != 1) {
        var daysToEnd = 8 - ((drawMonth.getDay() == 0)? 7 : drawMonth.getDay());
        for (var i = 0; i < daysToEnd; i++) calendarCode += '<td ><br /><\/td>';
    }
    calendarCode += '<\/tr><\/table><\/div>';
    calendarCode += '<\/table></div>';

    return calendarCode;
}