/**
 * @author rderksen
 */
namespace("UPC.util");

UPC.util.Jsonp = function () {
    var callbacks = [];
    var cbBaseId = now ();
    var timeout = 8000; // 8 seconds
    
    function now () {
        var today = new Date();
        return today.getTime();
    }
    
    function request (url, options) {
        var callbackId = cbBaseId++;
        
        callbacks[callbackId] = options.callbacks;
        
        if (typeof(callbacks[callbackId].onSuccess) == "undefined") return;
        
        callbacks[callbackId]._success = function (data){
            clearTimeout(callbacks[callbackId]._timeout);
            this.onSuccess(data);
        }.bind(callbacks[callbackId]);
        
        if (typeof(callbacks[callbackId].onTimeout) != "undefined") {
            callbacks[callbackId]._timeout = setTimeout(function(){
                this._success = Prototype.emptyFunction;
                this.onTimeout();
            }.bind(callbacks[callbackId]), timeout);
        }
        url = url.replace("=?", "=" + encodeURIComponent("UPC.util.Jsonp.callbacks[" + callbackId + "]._success"));
        url = /https:/.test(document.location.protocol) ? url.replace("http:", "https:") : url;
        
        var remote = /^(?:\w+:)?\/\/([^\/?#]+)/;
        if (remote.test(url)) {
            var head = document.getElementsByTagName("head")[0];
            var script = document.createElement("script");
            script.type = "text/javascript";
            script.src = url;
            head.appendChild(script);
        }
    }
    
    return {
        "request": request,
        "callbacks": callbacks
    }
}();

document.observe("dom:loaded", function () {
    if ($("loginbox") != null) {
        UPC.util.Jsonp.request("http://strefaklienta.upc.pl/cckservices/myupcloginbox?format=json&jsoncallback=?", {
            "callbacks": {
                "onSuccess": function(data){
                    $("loginbox").update(data);
                },
                "onTimeout": function(){
                    $("loginbox").update("System Moje UPC nie jest aktualnie dost&#281;pny. Spr&oacute;buj ponownie za chwil&#281;.");
                }
            }
        }); 
    }

    if ($("upcheaderlink") != null) {
        UPC.util.Jsonp.request("http://strefaklienta.upc.pl/cckservices/myupcheaderlink?format=json&jsoncallback=?", {
            "callbacks": {
                "onSuccess": function(data){
                    $("upcheaderlink").update(data);
                },
                "onTimeout": function(){
                    $("upcheaderlink").update("System Moje UPC nie jest aktualnie dost&#281;pny.");
                }
            }
        })
    }

   
    if ($("loginboxankeiler") != null) {
        UPC.util.Jsonp.request("http://strefaklienta.upc.pl/cckservices/myupcloginankeiler?format=json&jsoncallback=?", {
            "callbacks": {
                "onSuccess": function(data){
                    $("loginboxankeiler").update(data);
                },
                "onTimeout": function(){
                    $("loginboxankeiler").update("System Moje UPC nie jest aktualnie dost&#281;pny. Spr&oacute;buj ponownie za chwil&#281;.");
                }
            }
        })
    }

    if ($("rfsteaser") != null) {
        UPC.util.Jsonp.request("http://strefaklienta.upc.pl/cckservices/serviceteaser/ankeiler?format=json&jsoncallback=?", {
            "callbacks": {
                "onSuccess": function (data) {
                    $("rfsteaser").update(data);
                },
                "onTimeout": function(){
                    $("rfsteaser").update("Nie mo&#380;na sprawdzić dostępności usługi. Spróbuj ponownie za chwilę.")
                }
            }
        })
    }
})
