﻿var GEO_PATH = "/_ui/media/plugin.aspx";
var GEO_SIGNUP = { id: "GEO_SIGNUP", title: "Sign Up", path: GEO_PATH, width: "550", height: "500" };
var GEO_SIGNIN = { id: "GEO_SIGNIN", title: "Sign In", path: GEO_PATH, width: "385", height: "200" };
var GEO_SHOWVIDEO = { id: "GEO_SHOWVIDEO", title: "Video", path: GEO_PATH, width: "425", height: "344" };


//Actions
function geoAction() { };

geoAction.prototype = {
    serverPath: GEO_PATH,
    addToPost: function(postId) {

        if ($l("CommentText").value == "" || $l("CommentName").value == "")
            return;

        var data = new dataObject();
        data.add("page", "Commenter");
        data.add("method", "AddToPost");

        data.add("name", $l("CommentName").value);
        data.add("location", $l("CommentLocation").value);
        data.add("text", $l("CommentText").value);
        data.add("postId", postId);

        lara.indicateOn();
        lara.request(this.serverPath + ":Pass", data, function(result) { ga.showComment(result.data); });
    },
    showComment: function(result) {
        if (result.success) {
            $l("CommentBox").innerHTML = result.html;
        }
        else {
            alert(result.error);
        }
        lara.indicateOff();
    },
    followSpot: function(id) {

        var data = new dataObject();
        data.add("page", "Follow");
        data.add("method", "FollowSpot");

        data.add("id", id);

        lara.indicateOn();
        lara.request(this.serverPath + ":Pass", data, function(result) { ga.processFollow(result.data); });
    },
    followPost: function(id) {

        var data = new dataObject();
        data.add("page", "Follow");
        data.add("method", "FollowPost");

        data.add("id", id);

        lara.indicateOn();
        lara.request(this.serverPath + ":Pass", data, function(result) { ga.processFollow(result.data); });
    },
    followUser: function(id) {

        var data = new dataObject();
        data.add("page", "Follow");
        data.add("method", "FollowUser");

        data.add("id", id);

        lara.indicateOn();
        lara.request(this.serverPath + ":Pass", data, function(result) { ga.processFollow(result.data); });
    },
    followEntity: function(id) {

        var data = new dataObject();
        data.add("page", "Follow");
        data.add("method", "FollowEntity");

        data.add("id", id);

        lara.indicateOn();
        lara.request(this.serverPath + ":Pass", data, function(result) { ga.processFollow(result.data); });
    },
    processFollow: function(result) {
        if (result.success) {
            $l("FollowLink").innerHTML = result.newText;
        }
        else {
            alert(result.error);
        }
        lara.indicateOff();
    },
    request: function(targetId, path, hide) {

        if (hide && $l(targetId).innerHTML != "") {
            $l(targetId).innerHTML = "";
            return;
        }

        var data = new dataObject();
        data.add("targetId", targetId);
        data.add("path", path);

        lara.indicateOn();
        lara.request(this.serverPath + ":RequestData", data, function(result) { ga.showResult(result); });
    },
    showResult: function(result) {
        if (result.html) {
            $l(result.targetId).innerHTML = result.html;

            //Google analytics
            try {
                pageTracker._trackPageview(BASE_URL + result.requestPath);
            }
            catch (err) {
            }
        }
        else {
            alert(result.error);
        }
        lara.indicateOff();
    },
    signIn: function() {

        if ($l("SigninEmail").value == "" || $l("SigninPassword").value == "")
            return false;

        var data = new dataObject();
        data.add("page", "SignIn");
        data.add("method", "Authenticate");

        data.add("email", $l("SigninEmail").value);
        data.add("password", $l("SigninPassword").value);

        lara.indicateOn();
        lara.request(this.serverPath + ":Pass", data, function(result) { ga.processSignIn(result.data); });
    },
    signUp: function() {

        if ($l("SignupEmail").value == "" || $l("SignupName").value == "" || $l("SignupPassword").value == "")
            return;

        if ($l("SignupPassword").value != $l("SignupConfirm").value) {
            alert("Passwords do not match.");
            return;
        }

        var data = new dataObject();
        data.add("page", "SignUp");
        data.add("method", "Create");

        data.add("email", $l("SignupEmail").value);
        data.add("name", $l("SignupName").value);
        data.add("password", $l("SignupPassword").value);
        data.add("spotId", $l("SignupSelectorSpotId").value);

        lara.indicateOn();
        lara.request(this.serverPath + ":Pass", data, function(result) { ga.processSignUp(result.data); });
    },
    processSignUp: function(result) {
        if (result.success) {
            $l("GeoWinFrame").innerHTML = result.html;
        }
        else {
            alert(result.error);
        }
        lara.indicateOff();
    },
    processSignIn: function(result) {
        if (result.success) {
            if (result.redirect)
                window.location = window.location;
            else {
                $l("SignInResult").innerHTML = result.error;
                lara.indicateOff();
            }
        }
        else {
            $l("SignInResult").innerHTML = result.error;
            $l("SigninPassword").value = "";
            $l("SigninEmail").focus();
            lara.indicateOff();
        }

    },
    signOut: function() {

        var data = new dataObject();
        data.add("page", "SignIn");
        data.add("method", "SignOut");

        lara.indicateOn();
        lara.request(this.serverPath + ":Pass", data, function(result) { ga.processSignOut(result.data); });
    },
    processSignOut: function(result) {
        if (result.success) {
            window.location = window.location;
        }
        else {
            alert(result.error);
        }
        lara.indicateOff();
    }
};

var ga = new geoAction();



