function CurrentTime(containerNode, startTimeStamp) {
    var self = this,
        timer,
        weekDays = ["воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота"],

	months = ["январь", "февраль", "март", "апрель", "май", "июнь", "июль", "август", "сентябрь", "октябрь", "ноябрь", "декабрь"],
        now = new Date(),
        prevTickTimeStamp,
        currTickTimeStamp;
        

    function addLeadingZero(v) {
        var s = v < 0 ? "-" : "";
        v  = Math.abs(v);

        return s + (v < 10 ? "0" + v : v);
    }

    function generateTimeString() {
        return now.getUTCHours() + ":" + addLeadingZero(now.getUTCMinutes()) + ":" + addLeadingZero(now.getUTCSeconds())
             + " - " + weekDays[now.getUTCDay()] + ", " + months[now.getUTCMonth()] + " " + now.getUTCDate() + ", "
             + now.getUTCFullYear();
    }

    function secondTick() {
        currTickTimeStamp = new Date().getTime();
        now.setTime((currTickTimeStamp - prevTickTimeStamp) + startTimeStamp);

        containerNode.nodeValue = generateTimeString();
    }

    this.start = function () {
        clearInterval(timer);
        prevTickTimeStamp = (new Date()).getTime();
        timer = setInterval(secondTick, 1000);
    }
}
