jQuery.fn.countdown = function (date, settings) {
	var countdown_settings = {
		lang: {
			years:   ['</b>год<b>', '</b>года<b>', '</b>лет<b>'],
			months:  ['</b>месяц<b>', '</b>месяца<b>', '</b>месяцев<b>'],
			days:    ['</b>день<b>', '</b>дня<b>', '</b>дней<b>'],
			hours:   ['</b>час<b>', '</b>часа<b>', '</b>часов<b>'],
			minutes: ['</b>минута<b>', '</b>минуты<b>', '</b>минут<b>'],
			seconds: ['</b>секунда', '</b>секунды', '</b>секунд'],
			plurar:  function(n) {
				return (n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
			}
		},
		prefix: "Осталось: ",
		finish: "Всё"
	};
	countdown_settings = jQuery.extend(countdown_settings, settings);

	var timeDifference = function(begin, end) {
	    if (end < begin) {
		    return false;
	    }
	    var
	    days   = end.getDate()  - begin.getDate(),
	    months = end.getMonth() - begin.getMonth(),
	    years  = end.getYear()  - begin.getYear(),
	    hms    = (end / 1000 - begin / 1000) % 86400,
	    seconds = Math.floor(hms % 60),
	    minutes = Math.floor(hms/60) % 60,
	    hours   = Math.floor(hms/3600) % 60,
	    date = new Date();
	    if (days < 0) {
	    	date.setFullYear(begin.getYear(), begin.getMonth(), 32);
	    	if (begin.getMonth() == 0 || begin.getMonth() == 2 || begin.getMonth() == 4 || begin.getMonth() == 6 || begin.getMonth() == 7 || begin.getMonth() == 9 || begin.getMonth() == 11) {
	    		days += 32 - date.getDate();
		}
		else
		{
			days += 31 - date.getDate();
		}
	    	months--;
	    }
	    if (days == 1) {	    	diff_chek = end / 1000 - begin / 1000;	    	if (diff_chek < 86400){	    		days = 0;	    	}	    }
	    if (months < 0) {
	    	months += 12;
	    	years--;
	    }
	    var diff = {years: years, months: months, days: days, hours: hours, minutes: minutes};
	    var result = new Array();
	    for (i in diff) {
	    	if(!diff[i]) continue;
		    result.push(diff[i] + ' ' + countdown_settings.lang[i][countdown_settings.lang.plurar(diff[i])]);
	    }
	    return result.join(' ');
	};
	var elem = $(this);
	var timeUpdate = function () {
	    var s = timeDifference(new Date(), date);
	    if (s.length) {
	    	elem.html(countdown_settings.prefix + s + '</b>');
	    } else {
	        clearInterval(timer);
	        elem.html(countdown_settings.finish);
	    }
	};
	timeUpdate();
	var timer = setInterval(timeUpdate, 30000);
};

