<?xml version="1.0" encoding="UTF-8" ?>
<Module>
    <ModulePrefs
            title="VZ 3D Welt"
            author="Smeet"
            author_email="support@smeet.com"
            description="Smeet ist dein gratis browserbasiertes 3D Social Game im Internet. Entdecke jetzt mit deinem Avatar die vielfältige virtuelle Welt und gestalte sie nach deinen Wünschen!"
            preview="Besuch uns und werde zum Smeeter!"
            thumbnail="thumb150x100_transp.png"
            feed_promotion_text="Ich habe mich gerade bei dem 3D Social Chat Game Smeet angemeldet. Du willst auch chatten, spielen, Leute kennenlernen? Dann komm zu Smeet!"
            icon="icon85x85_transp.png"
            platform="studivz+meinvz,schuelervz"
            age_restriction="false"
            private="false"
            host_location="Germany">

        <Require feature="opensocial-0.9" />
        <Require feature="views"/>
        <Require feature="invite" />

        <AllowedDomain name="www.smeet.com"/>
        <AllowedDomain name="de.smeet.com"/>

        <!--AllowedDomain name="www.smeet-fixes.com"/>
        <AllowedDomain name="de.smeet-fixes.com"/>

        <AllowedDomain name="internal.de.ceres.smeet.de"/>
        <AllowedDomain name="de.ceres.dev.smeet.de"/-->

    </ModulePrefs>
    <Content type="html" view="canvas"><![CDATA[

        <script type="text/javascript">

            if (!window["vzSmeet"]) {
                window.vzSmeet = {};
            }

            function logViewer() {
                var req = opensocial.newDataRequest();
                var params = {};

                params[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] = [
                    opensocial.Person.Field.ID
                ];

                req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER, params), 'json');
                req.send(display);
             }

            function display(data) {
                log('display: ' + JSON.stringify(data));
            }

            function log(msg) {
                if (console && console.log) {
                    console.log(msg);
                }
            }

            vzSmeet.BrowserDetect = {

                browser: function() {
                    return this.searchString(this.dataBrowser) || "An unknown browser";
                },

                version: function() {
                    return this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version";
                },

                OS: function() {
                    return this.searchString(this.dataOS) || "an unknown OS";
                },

                searchString: function (data) {
                    for (var i=0; i<data.length; i++)   {
                        var dataString = data[i].string;
                        var dataProp = data[i].prop;
                        this.versionSearchString = data[i].versionSearch || data[i].identity;
                        if (dataString) {
                            if (dataString.indexOf(data[i].subString) != -1)
                                return data[i].identity;
                        }
                        else if (dataProp) {
                            return data[i].identity;
                        }
                    }
                    return null;
                },

                searchVersion: function (dataString) {
                    var index = dataString.indexOf(this.versionSearchString);
                    if (index == -1) return null;
                    return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
                },

                dataBrowser: [
                    {
                        string: navigator.userAgent,
                        subString: "Chrome",
                        identity: "Chrome"
                    },
                    {   string: navigator.userAgent,
                        subString: "OmniWeb",
                        versionSearch: "OmniWeb/",
                        identity: "OmniWeb"
                    },
                    {
                        string: navigator.vendor,
                        subString: "Apple",
                        identity: "Safari",
                        versionSearch: "Version"
                    },
                    {
                        prop: window.opera,
                        identity: "Opera"
                    },
                    {
                        string: navigator.vendor,
                        subString: "iCab",
                        identity: "iCab"
                    },
                    {
                        string: navigator.vendor,
                        subString: "KDE",
                        identity: "Konqueror"
                    },
                    {
                        string: navigator.userAgent,
                        subString: "Firefox",
                        identity: "Firefox"
                    },
                    {
                        string: navigator.vendor,
                        subString: "Camino",
                        identity: "Camino"
                    },
                    {           // for newer Netscapes (6+)
                        string: navigator.userAgent,
                        subString: "Netscape",
                        identity: "Netscape"
                    },
                    {
                        string: navigator.userAgent,
                        subString: "MSIE",
                        identity: "Explorer",
                        versionSearch: "MSIE"
                    },
                    {
                        string: navigator.userAgent,
                        subString: "Gecko",
                        identity: "Mozilla",
                        versionSearch: "rv"
                    },
                    {           // for older Netscapes (4-)
                        string: navigator.userAgent,
                        subString: "Mozilla",
                        identity: "Netscape",
                        versionSearch: "Mozilla"
                    }
                ],

                dataOS : [
                    {
                        string: navigator.platform,
                        subString: "Win",
                        identity: "Windows"
                    },
                    {
                        string: navigator.platform,
                        subString: "Mac",
                        identity: "Mac"
                    },
                    {
                        string: navigator.userAgent,
                        subString: "iPhone",
                        identity: "iPhone/iPod"
                    },
                    {
                        string: navigator.platform,
                        subString: "Linux",
                        identity: "Linux"
                    }
                ]

            };

            vzSmeet.Popup = {

                definePopup : function(url, xS, yS) {
                    xS = xS || 1400;
                    yS = yS || 900;

                    var xT = (screen.availWidth / 2) - (xS / 2);
                    var yT = (screen.availHeight / 2) - (yS / 2 + 30);
                    if (screen.width <= xS) {
                        xS = screen.availWidth;
                        yS = screen.availHeight - 30;
                        if (vzSmeet.BrowserDetect.browser() == "Chrome" && vzSmeet.BrowserDetect.OS() == "Windows") {
                            // make room for win start bar
                            yS -= 30;
                        }
                        xT = 0;
                        yT = 0;
                    }

                    return {
                        width: xS,
                        height: yS,
                        left: xT,
                        top: xT
                    };
                }
            };

            Config = {
                hosts : [
                    {
                        host: 'www.smeet.com'
                    },
                    {
                        host: 'www.smeet-fixes.com'
                    },
                    {
                        host: 'de.ceres.dev.smeet.de'
                    },
                ]
            };

            var host = 'http://' + Config.hosts[0].host;

            log('main: host=' + host);

            if (window.name == "smeet-popup") {

                log('main: open popup');

                document.write('<style type=text/css> html,body {    width:100%;    height:100%;overflow:hidden;}</style><iframe width="100%" height="100%" scrolling="no" frameBorder="0" id="smeet-vz-embedd" name="smeet-vz-embedd" style="overflow:hidden;"></iframe>');

                var iFrameName = 'smeet-vz-embedd';
                var uid = gadgets.util.getUrlParameters()['uid'];
                var token = gadgets.util.getUrlParameters()['token'];
                var nounce = gadgets.util.getUrlParameters()['nounce'];
                var rpcToken = gadgets.util.getUrlParameters()['rpctoken'];
                var url = host + '/smeet-web/partner/studivz/import.do?token=' + encodeURIComponent(token)
                    + '&uid=' + encodeURIComponent(uid)
                    + '&nounce=' + encodeURIComponent(nounce)
                    + '&studivz_env=' + getEnv()
                    + '&studivz_parent=' + encodeURIComponent('http://' + location.host)
                    + '&studivz_rpctoken=' + rpcToken;

                log('main: iframe url=' + url);

                var popupParams = vzSmeet.Popup.definePopup()
                var iframe = document.getElementById(iFrameName);

                iframe.src = url;
                iframe.innerHTML = html;
                window.width = popupParams.width;
                window.height = popupParams.height;
                gadgets.rpc.setAuthToken(iFrameName, rpcToken);
                gadgets.rpc.setRelayUrl(iFrameName, host + '/pages/flash/components/partner/studivz/rpc_relay.html');

            } else {

                logViewer();

                var originalGlobalUrl;
                var uid;
                var nounce;
                var token;
                var tokenUrl;

                function checkToken() {
                    log('checkToken: uid=' + uid);
                    log('checkToken: nounce=' + nounce);
                    log('checkToken: token=' + token);

                    var now = (new Date()).getTime();
                    log('checkToken: now=' + now);

                    if (now - nounce > (30 * 60 * 1000)) {
                        log('checkToken: token is expired!');
                        log('token url: ' + tokenUrl);

                        var params = {};
                        params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
                        params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED;
                        params[gadgets.io.RequestParameters.HEADERS] = {
                            "Accept" : "application/json",
                            "Pragma" : "no-cache"
                        };

                        gadgets.io.makeRequest(tokenUrl, function(tokenMessage) {
                            log('checkToken: tokenMessage=' + JSON.stringify(tokenMessage));

                            uid = tokenMessage.data.uid;
                            nounce = tokenMessage.data.nounce;
                            token = tokenMessage.data.token;

                            globaliFrameUrl = originalGlobalUrl;
                            globaliFrameUrl += '&uid=' + encodeURIComponent(uid) + '&token=' + encodeURIComponent(token) + '&nounce=' + encodeURIComponent(nounce);

                            var success = smeet_open();
                            if (success == undefined) {
                                window.location.reload(1);
                            }

                        }, params);
                    } else {
                        log('checkToken: token is valid.');
                        smeet_open();
                    }
                }

                function smeet_open() {
                    log('smeet_open: globaliFrameUrl=' + globaliFrameUrl);

                    var popupParams = vzSmeet.Popup.definePopup();
                    importantStuff = window.open(globaliFrameUrl, 'smeet-popup', "toolbar=no,location=no,resizable=yes,status=no,menubar=no,width="+popupParams["width"]+",height="+popupParams["height"]+",left="+popupParams["left"]+",top="+popupParams["top"]+"");
                    log('smeet_open: importantStuff=' + importantStuff);

                    return importantStuff;
                }

                function t1(a) {
                    log('t1: a=' + a);

                    globaliFrameUrl = a;
                    originalGlobalUrl = a;

                    var locUrl = 'http://' + Config.hosts[0].host + '/?location=' + new Date().getTime();
                    var host = null;
                    var params = {};
                    params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
                    params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED;
                    params[gadgets.io.RequestParameters.HEADERS] = {
                        "Accept" : "application/json",
                        "Pragma" : "no-cache"
                    };

                    log('t1: location url=' + locUrl);

                    gadgets.io.makeRequest(locUrl, function(loc) {
                        log('t1: location=' + JSON.stringify(loc));

                        if (loc == undefined || loc.text == undefined) {
                            alert('Something smells wrong with loc!');
                        }

                        var locObject = JSON.parse(loc.text);
                        host = locObject.url;
                        tokenUrl = host + '/smeet-web/oauth/token/studivz.htm';

                        log('t1: token url=' + tokenUrl);

                        gadgets.io.makeRequest(tokenUrl, function(tokenMessage) {

                            log('t1: tokenMessage=' + JSON.stringify(tokenMessage));

                            uid = tokenMessage.data.uid;
                            nounce = tokenMessage.data.nounce;
                            token = tokenMessage.data.token;

                            globaliFrameUrl += '&uid=' + encodeURIComponent(uid) + '&token=' + encodeURIComponent(token) + '&nounce=' + encodeURIComponent(nounce);

                            smeet_open();
                        }, params);
                    }, params);
                }

                log('main: requestNavigateTo...');

                gadgets.rpc.call(null, "requestNavigateTo", t1, "popup", {}, "111", {});

                document.write('<a onclick="javascript:checkToken();"><img src="https://s3.amazonaws.com/files.smeet.com/studivz/Studi_VZ_Smeet.jpg" alt="Play smeet here"/><img src=logo.png></a>');
            }

            /* RPC */

            gadgets.util.registerOnLoadHandler(function() {
                  gadgets.rpc.register('frameCallback', function (args) {
                      alert("received arguments: " + args);
                      this.callback('callbackValue');
                  });
            });

            function getEnv() {
                return '__ENV_CONTAINER__';
            }

        </script>

    ]]></Content>

    <Content type="html" view="group"><![CDATA[
<a href="javascript:vz.invite.install()">
    <img src="https://s3.amazonaws.com/files.smeet.com/studivz/Studi_VZ_Smeet6_smallsize.jpg" alt="Play smeet here" />
</a>
<!--div id="placeholder" style="width:100%; height:100%; background-image: url('http://s3.amazonaws.com/files.smeet.com/studivz/StudiVZ_3d_icon_new.jpg')">
    <br>
    <h1>Klicke auf "Will ich haben!" und füge Smeet zu deinen Spielen hinzu!</h1>
    <a href="javascript:vz.invite.install()">Jetzt Smeet spielen!</a>
</div-->
]]></Content>

    <Content type="html" view="preview"><![CDATA[
<a href="javascript:vz.invite.install()">
    <img src="https://s3.amazonaws.com/files.smeet.com/studivz/Studi_VZ_Smeet6.jpg" alt="Play smeet here" />
</a>
<!--div id="placeholder" style="width:100%; height:100%; background-image: url('http://s3.amazonaws.com/files.smeet.com/studivz/StudiVZ_3d_icon_new.jpg')">
    <h1>Werde jetzt ein Teil der Smeet-Community!</h1>
    <p> sMeet Communications GmbH </p>
</div-->
]]></Content>

    <Content type="html" view="profile"><![CDATA[
<a href="javascript:vz.invite.install()">
    <img src="https://s3.amazonaws.com/files.smeet.com/studivz/Studi_VZ_Smeet6_smallsize.jpg" alt="Play smeet here" />
</a>
<!--div id="placeholder" style="width:100%; height:100%; background-image: url('http://s3.amazonaws.com/files.smeet.com/studivz/StudiVZ_3d_icon_new.jpg')">
    <div id="greeting"></div>
    <br>
    <p>Dies ist das Profil von Smeet, deinem gratis 3D Social Chat Game im Internet! Log dich jetzt ein und geh auf Entdeckungstour in der virtuellen Welt von Smeet! Hier kannst du deinen Avatar und dein Zuhause in 3D nach deinen persönlichen Wünschen gestalten. Lerne spielend neue Leute kennen und erlebe Abenteuer mit deinen Freunden! Es gibt so viel zu tun und zu entdecken! Werde jetzt ein Teil der Smeet-Community!
    </p>
    <a href="javascript:vz.invite.install()">Komm in die virtuelle Welt von Smeet!</a>
</div-->
]]></Content>
</Module>