﻿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(featureId, featureLocator, postId) {

        if ($("CommentText").value == "" || $("CommentName").value == "")
            return;

        alert(featureId + " " + featureLocator);
        var data = new dataObject();
        data.add("id", featureId);
        data.add("locator", featureLocator);

        data.add("page", "Commenter");
        data.add("method", "AddToPost");

        data.add("name", $("CommentName").value);
        data.add("location", $("CommentLocation").value);
        data.add("text", $("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) {
            $("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) {
            $("FollowLink").innerHTML = result.newText;
        }
        else {
            alert(result.error);
        }
        lara.indicateOff();
    },
    request: function(targetId, path, hide) {

        if (hide && $(targetId).innerHTML != "") {
            $(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) {
            $(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 ($("SigninEmail").value == "" || $("SigninPassword").value == "")
            return false;

        var data = new dataObject();
        data.add("page", "SignIn");
        data.add("method", "Authenticate");

        data.add("email", $("SigninEmail").value);
        data.add("password", $("SigninPassword").value);

        lara.indicateOn();
        lara.request(this.serverPath + ":Pass", data, function(result) { ga.processSignIn(result.data); });
    },
    signUp: function() {

        if ($("SignupEmail").value == "" || $("SignupName").value == "" || $("SignupPassword").value == "")
            return;

        if ($("SignupPassword").value != $("SignupConfirm").value) {
            alert("Passwords do not match.");
            return;
        }

        var data = new dataObject();
        data.add("page", "SignUp");
        data.add("method", "Create");

        data.add("email", $("SignupEmail").value);
        data.add("name", $("SignupName").value);
        data.add("password", $("SignupPassword").value);
        data.add("spotId", $("SignupSelectorSpotId").value);

        lara.indicateOn();
        lara.request(this.serverPath + ":Pass", data, function(result) { ga.processSignUp(result.data); });
    },
    processSignUp: function(result) {
        if (result.success) {
            $("GeoWinFrame").innerHTML = result.html;
        }
        else {
            alert(result.error);
        }
        lara.indicateOff();
    },
    processSignIn: function(result) {
        if (result.success) {
            if (result.redirect)
                window.location = window.location;
            else {
                $("SignInResult").innerHTML = result.error;
                lara.indicateOff();
            }
        }
        else {
            $("SignInResult").innerHTML = result.error;
            $("SigninPassword").value = "";
            $("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();


