jQuery.fn.vDatePicker = function(options){
     // тут мы разместим код плагина

    var options = jQuery.extend({
        auto: true,
		target: false,
        firstYear: 1800,
        currentYear: 2002,
        currentMonth: 0,
        lastYear: 2011,
		zIndex: 1020
    },options);


    var monthDays = new Array(2);
    monthDays[0]=Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    monthDays[1]=Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

    var monthes = new Array("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь","Декабрь");

    var datepicker="";
    var prevDay= new Array(null, null);
    var month;
    var year;
    var date = new Date();
    var id = date.getTime();
    var days;
    if(options.auto){
		days=countDaysInMonth(date.getFullYear(), date.getMonth());
    }
    else{
		days=countDaysInMonth(options.currentYear,options.currentMonth);
    }

    function countDaysInMonth(year, month){
		var days='<div class="dayNames"><div>Пн</div><div>Вт</div><div>Ср</div><div>Чт</div><div>Пт</div><div>Сб</div><div>Вс</div></div>';
        var count;
        if( (year%4)==0 ){
            count=monthDays[1][month];
        }
        else{
            count=monthDays[0][month];
        }
        var a;
        for(var i=1; i<=count; i++){
            if(i==1){
                var date1 = new Date(year, month, 1);
                a=date1.getDay();
                if(a==0){
                    a=6;
                    for(var j=0 ; j<a ; j++)
                    days+='<div class="emptyDay"></div>';
                }
                else{
                    a--;
                    for(var j=0 ; j<a ; j++)
                    days+='<div class="emptyDay"></div>';
                }
            }
            a++;
            var date2 = new Date(year, month, i);
            if(options.auto && (date.getTime() < date2.getTime()) ){
                if( (a%7)==0 || (a%7)==6){
                    days+='<div class="hollyday" id="day_'+i+'">'+i+'</div>';
                }
                else{
                    days+='<div class="day" id="day_'+i+'">'+i+'</div>';
                }
            }
            else{
                if( (a%7)==0 || (a%7)==6){
                    days+='<div class="inactiveHollyday" id="day_'+i+'">'+i+'</div>';
                }
                else{
                    days+='<div class="inactive" id="day_'+i+'">'+i+'</div>';
                }
            }
        }
        for(var j=a ; j<42 ; j++)
            days+='<div class="emptyDay"></div>';
        return days;
    }

    year="<select>";
    for(var i=options.firstYear ; i<=options.lastYear ; i++){
        if(options.auto){
            if(date.getFullYear()==i){
               year+='<option value="'+i+'" selected="selected">'+i+'</options>';
            }
            else{
                year+='<option value="'+i+'">'+i+'</options>';
            }
        }
        else{
            if(options.currentYear==i){
               year+='<option value="'+i+'" selected="selected">'+i+'</options>';
            }
            else{
                year+='<option value="'+i+'">'+i+'</options>';
            }
        }
    }
    year+="</select>";

    month='<select>';
    for( var i=0;i<12;i++ ){
        if(options.auto){
            if(date.getMonth()==i){
                month+='<option value="'+i+'" selected="selected">'+monthes[i]+'</option>';
            }
            else{
                month+='<option value="'+i+'">'+monthes[i]+'</option>';
            }
        }
        else{
            if(options.CurrentMonth==i){
                month+='<option value="'+i+'" selected="selected">'+monthes[i]+'</option>';
            }
            else{
                month+='<option value="'+i+'">'+monthes[i]+'</option>';
            }
        }
    }
    month+='</select>';

    datepicker='<div class="datepicker" id="datepicker_'+id+'" style="height: 295px;">';
        datepicker+='<div class="head">';
            datepicker+='<div class="previosYear"><a href="#"><img src="/img/v_datepicker/left.gif"/></a></div><div class="year">'+year+'</div><div class="nextYear"><a href="#"><img src="/img/v_datepicker/right.gif"/></a></div>';
            datepicker+='<div class="previosMonth"><a href="#"><img src="/img/v_datepicker/left.gif"/></a></div><div class="month">'+month+'</div><div class="nextMonth"><a href="#"><img src="/img/v_datepicker/right.gif"/></a></div>';
            datepicker+='<div style="clear: both;"></div>';
        datepicker+='</div>';
        datepicker+='<div class="days">'+days+'</div>';
        datepicker+='<a class="button ok" href="#">ok</a>';
        datepicker+='<a class="button close" style="width: 24px;" href="#">close</a>';
    datepicker+='</div>';

    function monthYearChange(){
        var html="";
        html=countDaysInMonth($("#datepicker_"+id+" .year select").attr("value"), $(".datepicker .month select").attr("value"));
        $(".datepicker .days").html(html);
        prevDay[0]=null;
        prevDay[1]=null;
        $("#datepicker_"+id+" .days .day").unbind("click");
        $("#datepicker_"+id+" .days .day").click(select, false);
        $("#datepicker_"+id+" .days .hollyday").unbind("click");
        $("#datepicker_"+id+" .days .hollyday").click(select, false);
		
		$("#datepicker_"+id+" .days .day").unbind("dblclick");
		$("#datepicker_"+id+" .days .hollyday").unbind("dblclick");
		$("#datepicker_"+id+" .days .daySel").unbind("dblclick");
		$("#datepicker_"+id+" .days .day").dblclick(selectDate);
		$("#datepicker_"+id+" .days .hollyday").dblclick(selectDate);
		$("#datepicker_"+id+" .days .daySel").dblclick(selectDate);
    }

    function select(){
        if(prevDay[0]!=null && prevDay[1]!=null){
            $("#datepicker_"+id+" .days #"+prevDay[0]+"").attr("class", prevDay[1]);
        }
        prevDay[0]=$(this).attr("id");
        prevDay[1]=$(this).attr("class");
        $(this).attr("class", "daySel");
    }

    function setYear(year){
        $("#datepicker_"+id+" .year select option").each(function(){
            if($(this).attr("selected")){
                $(this).attr("selected", false);
            }
            if($(this).attr("value")==year){
                $(this).attr("selected", true);
            }
        });
    }

    function nextYear(){
        var year=parseInt($("#datepicker_"+id+" .year select").attr("value"));
        if(year==options.lastYear){
            year=options.firstYear;
        }
        else{
            year++;
        }
        setYear(year);
        $("#datepicker_"+id+" .month select").change();
        return false;
    }

    function previosYear(){
        var year=parseInt($("#datepicker_"+id+" .year select").attr("value"));
        if(year==options.firstYear){
            year=options.lastYear;
        }
        else{
            year--;
        }
        setYear(year);
        $("#datepicker_"+id+" .month select").change();
        return false;
    }

    function setMonth(year){
        $("#datepicker_"+id+" .month select option").each(function(){
            if($(this).attr("selected")){
                $(this).attr("selected", false);
            }
            if($(this).attr("value")==year){
                $(this).attr("selected", true);
            }
        });
    }

    function nextMonth(){
        var year=parseInt($("#datepicker_"+id+" .month select").attr("value"));
        if(year==11){
            year=0;
            nextYear();
        }
        else{
            year++;
        }
        setMonth(year);
        $("#datepicker_"+id+" .month select").change();
        return false;
    }

    function previosMonth(){
        var year=parseInt($("#datepicker_"+id+" .month select").attr("value"));
        if(year==0){
            year=11;
            previosYear();
        }
        else{
            year--;
        }
        setMonth(year);
        $("#datepicker_"+id+" .month select").change();
        return false;
    }
	
	function selectDate(){
		var date = new Date($("#datepicker_"+id+" .year select").attr("value"), $("#datepicker_"+id+" .month select").attr("value"), $(this).text());
		$(options.target).attr("value", date.getDate()+"."+date.getMonth()+"."+date.getFullYear());
		//alert($(options.target).attr("value"));
		$(options.target).change();
		$("#datepicker_"+id).css("display", "none");
		return false;
	}
	
	function selectDateOk(){
		if($("#datepicker_"+id+" .daySel").length==1){
			var date = new Date($("#datepicker_"+id+" .year select").attr("value"), $("#datepicker_"+id+" .month select").attr("value"), $("#datepicker_"+id+" .daySel").text());
			$(options.target).attr("value", date.getDate()+"."+date.getMonth()+"."+date.getFullYear());
			$(options.target).change();
			$("#datepicker_"+id).css("display", "none");
		}
		return false;
	}

    $("body").append(datepicker);
	$("#datepicker_"+id).css("z-index", options.zIndex);
	
	this.click(function(event){
		$("#datepicker_"+id).css("left", event.pageX+"px");
		$("#datepicker_"+id).css("top", event.pageY+"px");
		$("#datepicker_"+id).css("opacity", "0.1");
		$("#datepicker_"+id).css("height", "0px");
		$("#datepicker_"+id).css("display", "block");
		
		$("#datepicker_"+id).animate({height: 277}, "slow", function(){$("#datepicker_"+id).animate({opacity: 1}, "slow");});
		return false;
	});
	
	$("#datepicker_"+id+" .close").click(function(){
		$("#datepicker_"+id).css("display", "none");
		return false;
	});
	
	$("#datepicker_"+id+" .ok").click(selectDateOk);
	
    $("#datepicker_"+id+" .month select").change(monthYearChange);
    $("#datepicker_"+id+" .year select").change(monthYearChange);
    $("#datepicker_"+id+" .days .day").click(select);
    $("#datepicker_"+id+" .days .hollyday").click(select);
    $("#datepicker_"+id+" .head .nextYear").click(nextYear);
    $("#datepicker_"+id+" .head .previosYear").click(previosYear);
    $("#datepicker_"+id+" .head .nextMonth").click(nextMonth);
    $("#datepicker_"+id+" .head .previosMonth").click(previosMonth);
	$("#datepicker_"+id+" .days .day").dblclick(selectDate);
	$("#datepicker_"+id+" .days .hollyday").dblclick(selectDate);
	$("#datepicker_"+id+" .days .daySel").dblclick(selectDate);
    $("#datepicker_"+id+" .days").bind("mousedown", function(){
        return false;
    });
}
