namespace("UPC.util");

UPC.util.Jsonp = function() {
    var callbacks = [];
    var cbBaseId = now();
    var timeout = 5000;
    // 5 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 ($("my_upc_login_link") != null) {
        UPC.util.Jsonp.request("http://service.upc.at/cckservices/login/status?callback=?", {
            "callbacks": {
                "onSuccess": function(data) {
                    if (data.loggedin == '1') {
                        $("my_upc_logout_link").show();
                    } else {
                        $("my_upc_login_link").show();
                    }
                },
                "onTimeout": function() {
                    $("my_upc_login_status_timeout").show();

                }
            }
        });
    }
});

