var silberClock = {
    getTime: function(callback)
    {
        var url = 'http://json-time.appspot.com/time.json?tz=UTC',
            ud  = 'json' + (+new Date());
            
        window[ud]= function(o)
        {
            callback && callback(Date.parse(new Date(o.datetime)), o);
        };
        
        document.getElementsByTagName('head')[0].appendChild((function()
        {
            var s = document.createElement('script');
            s.type = 'text/javascript';
            s.src = url + '&callback=' + ud;
            return s;
        })());
    },
    
    formatDate: function(givenDate, format){
        if(givenDate instanceof Date) 
        {
            var months = new Array(
                "Januar",
                "Februar",
                "März",
                "April",
                "Mai",
                "Juni",
                "Juli",
                "August",
                "September",
                "Oktober",
                "November",
                "Dezember"
            );
            var yyyy = givenDate.getFullYear();
            var yy   = yyyy.toString().substring(2);
            var m    = givenDate.getMonth();
            var mm   = m < 10 ? "0" + m : m;
            var mmm  = months[m];
            var d    = givenDate.getDate();
            var dd   = d < 10 ? "0" + d : d;
            
            var h  = givenDate.getHours();
            var hh = h < 10 ? "0" + h : h;
            var n  = givenDate.getMinutes();
            var nn = n < 10 ? "0" + n : n;
            var s  = givenDate.getSeconds();
            var ss = s < 10 ? "0" + s : s;
    
            format = format.replace(/yyyy/i, yyyy);
            format = format.replace(/yy/i, yy);
            format = format.replace(/mmm/i, mmm);
            format = format.replace(/mm/i, mm);
            format = format.replace(/m/i, m);
            format = format.replace(/dd/i, dd);
            format = format.replace(/d/i, d);
            format = format.replace(/hh/i, hh);
            format = format.replace(/h/i, h);
            format = format.replace(/nn/i, nn);
            format = format.replace(/n/i, n);
            format = format.replace(/ss/i, ss);
            format = format.replace(/s/i, s);
    
            return format;
        } 
        else 
        {
            return '';
        }
    },
    
    calcDate: function(target, city, offset, date, firstTime)
    {
        date+= 1000;
        
        if (typeof(firstTime) == 'undefined' || firstTime === true)
            date+= offset * 3600000;
        
        var formated = new Date(date);

        target.innerHTML = city + ': ' + silberClock.formatDate(formated, 'dd.mm.yyyy hh:nn');
        
        setTimeout(function(){
            silberClock.calcDate(target, city, offset, date, false)
            }, 1000
        );
    }
};
