if ($.browser.msie && $.browser.version<7) false;
var SocialCore = {
    apiUrl: '',

    getUrlVar: function(name)
    {
        name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
        var regexS = "[\\?&]"+name+"=([^&#]*)";
        var regex = new RegExp( regexS );
        var results = regex.exec( window.location.href );
        if (null==results){
            return "";
        } else {
            return results[1];
        }
    },

    getCookie: function(key)
    {
        var cookie = " " + document.cookie;
        var search = " " + key + "=";
        var setStr = null;
        var offset = 0;
        var end = 0;
        if (cookie.length > 0) {
            offset = cookie.indexOf(search);
            if (offset != -1) {
                offset += search.length;
                end = cookie.indexOf(";", offset);
                if (end == -1) {
                    end = cookie.length;
                }
                setStr = decodeURIComponent(cookie.substring(offset, end));
            }
        }
        return(setStr);
    }
}


var SocialAuth = {
    authPoint: [],
    backUrl: '',
    userInfo: null,
    lastLogin: '',

    init: function(params) {
        var loginUrl = params.apiUrl+'login/view.do?fmt=js'+'&plazus=cDf$sdf9j45&r='+Math.random()+'&';
        if (params.availablePicSize.length>0) {
            loginUrl += 'userpicSize='+params.availablePicSize.join(',')+'&';
        }
        var auth = SocialCore.getCookie('sosh_o');
        if(auth != null && auth != '') {
            loginUrl += 'sosh_o=' + auth;
        } else {
            loginUrl += 'sosh_o=0';
        }
        document.write('<'+'script type="text/javascript" charset="UTF-8" src="' + loginUrl + '"><'+'/script>');

        $this = this;

        var intervalId = setInterval(function () {
            if(typeof(ApolloApi) != 'undefined' && ApolloApi.addLoginListener != null) {
                clearInterval(intervalId);
                ApolloApi.addLoginListener({
                    onLogin: function() {
                        if (typeof(_gaq) != 'undefined' && _gaq != null && _gaq.push != null) {
                            _gaq.push(['_trackEvent', 'Social', 'Login', $this.lastLogin]);
                        }
                        if ($this.backUrl) {
                            window.location = $this.backUrl;
                        } else {
                            window.location = window.location;
                        }
                    },
                    onLoginError: function(errors) {
                        $this.riseError(errors);
                    },
                    onLogout: function() {
                        var href = window.location.href;
						window.location = href.replace(/#(.*)/i, "");
                    }
                });
                if (ApolloApi.status()) {
                    $this.userInfo = ApolloApi.getUserInfo();
                    $this.riseUserLoggedIn();
                } else {
                    $this.userInfo = false;
                    $this.riseUserLoggedOut();
                }
            }
        }, 20);
    },

    add: function(authPointObj) {
            this.authPoint.push(authPointObj);
            if (this.userInfo != null) {
                if (this.userInfo) {
                    if ('function'==typeof(authPointObj.onUserLoggedIn)) {
                        authPointObj.onUserLoggedIn(this.userInfo);
                    }
                } else {
                    if ( !($.browser.msie && $.browser.version<7))
        {
                    if ('function'==typeof(authPointObj.onUserLoggedOut)) {
                        authPointObj.onUserLoggedOut();
                    }
                }
            }
        }

    },

    riseError: function(error) {
        for(var i in this.authPoint) {
            if ('function'==typeof(this.authPoint[i].onError)) {
                this.authPoint[i].onError(error);
            }
        }
    },

    riseUserLoggedOut: function() {
        if (!this.userInfo) {
            for(var i in this.authPoint) {
                if ('function'==typeof(this.authPoint[i].onUserLoggedOut)) {
                    this.authPoint[i].onUserLoggedOut();
                }
            }
        }
    },

    riseUserLoggedIn: function() {
        if (this.userInfo) {
            for(var i in this.authPoint) {
                if ('function'==typeof(this.authPoint[i].onUserLoggedIn)) {
                    this.authPoint[i].onUserLoggedIn(this.userInfo);
                }
            }
        }
    },

    buildForm: function(containerId) {
        if(typeof(ApolloApi) != 'undefined') {
            ApolloApi.view(containerId);
        }
    },

    logout: function() {
        if(typeof(ApolloApi) != 'undefined' && ApolloApi.status()) {
            if (typeof(_gaq) != 'undefined' && _gaq != null && _gaq.push != null) {
                _gaq.push(['_trackEvent', 'Social', 'Logout', this.userInfo.email]);
            }
            ApolloApi.logout();
        }
    },

    login: function(login, password, backUrl) {
        this.lastLogin = login;
        if(typeof(ApolloApi) != 'undefined' && !ApolloApi.status()) {
            if (typeof(backUrl)!='undefined' && backUrl) {
                this.backUrl = backUrl;
            }
            return ApolloApi.login(login, password);
        }
        return false;
    }

}



function SocialComments(url, containerId, debug) {
    debug = typeof(debug)!='undefined' && debug;

    var page = SocialCore.getUrlVar('page');
    if(typeof(page) !== 'undefined' && (page != null || page != "")) {
        url += '&page=' + page;
    }

    var auth = SocialCore.getCookie('sosh_o');
    if(auth != null && auth != '') {
        url += '&sosh_o=' + auth;
    }
    document.write('<'+'script type="text/javascript" charset="UTF-8" src="' + url + '"><'+'/script>');

     var intervalId = setInterval(function () {
        if(typeof(ApolloApi) != 'undefined' && ApolloApi.load != null) {
            clearInterval(intervalId);
            ApolloApi.load(containerId);
        }
    }, 20);
}
