﻿// *** Service Calling Proxy Class
function serviceProxy(serviceUrl) {
    var _I = this;
    this.serviceUrl = serviceUrl;
    // *** Call a wrapped object
    this.invoke = function (method, data, callback, error, bare) {
        // *** Convert input data into JSON - REQUIRES Json2.js
        var json = JSON.stringify(data);

        // *** The service endpoint URL
        var url = _I.serviceUrl + method;
        $.ajax({
            url: url,
            data: json,
            type: "POST",
            processData: false,
            contentType: "application/json",
            timeout: 20000,
            dataType: "text",
            // not "json" we'll parse
            success:
                    function (res) {
                        callback(res);
                        /*
                        if (!callback) return;
                        // *** Use json library so we can fix up MS AJAX dates
                        var result = JSON.parse(res);
                        // *** Bare message IS result
                        if (bare)
                        { callback(result); return; }
                        // *** Wrapped message contains top level object node
                        // *** strip it off
                        for (var property in result) {
                        callback(result[property]);
                        break;
                        }
                        */
                    },
            error:
                    function (xhr) {
                        if (!error) return;
                        if (xhr.responseText) {
                            var err = JSON.parse(xhr.responseText);
                            if (err)
                                error(err);
                            else
                                error({ Message: "Unknown server error." })
                        } else {
                            error({ Message: "Unknown server error." });
                        }
                        return;

                    }
        });
    }
};function getscriptsource() {     var scripts = document.getElementsByTagName('script'),         script = scripts[scripts.length - 1];      if (script.getAttribute.length !== undefined) {         return script.getAttribute('src')     }      return script.getAttribute('src', 2) };

function createUser(wlidkey, name, email, blog) {
    var Proxy = new serviceProxy("/AjaxService.svc/");
    Proxy.invoke("CreateUser", { wlidKey: wlidkey, nickName: name, emailAddress: email, blogAddress: blog },
    function (result) {

        var coolresult = $.parseJSON(result);
        $("#dialog").dialog("close");
        userId = coolresult.CreateUserResult;
        document.getElementById("userloggedin").innerHTML = name + " is logged in.";
    }, null);
};

function closeCommentFromId(postid) {
    $("#addcomments_" + postid).hide();
    $("#comments_" + postid).hide();
}

function createCommentFromId(postid) {
    if ($("#commenttext_" + postid).attr("value") == '') {
        alert('Please enter a comment');
    } else {
        document.getElementById('addComment_' + postid).disabled = true;
        createComment(postid, $("#name_" + postid).attr("value"), $("#email_" + postid).attr("value"), $("#blog_" + postid).attr("value"), userId, $("#commenttext_" + postid).attr("value"));
    }
}

function createComment(postId, nickname, emailaddress, blogaddress, userid, Comment) {
    var Proxy = new serviceProxy("/AjaxService.svc/");

    var remember = document.getElementById('remember_' + postId);

    if (remember != null) {
        if (remember.checked) {
            $.cookie("comment_nickname", nickname, { expires: 365 });
            $.cookie("comment_email", emailaddress, { expires: 365 });
            $.cookie("comment_blog", blogaddress, { expires: 365 });
        }
    }

    Proxy.invoke("CreateComment", { postid: postId, nickName: nickname, emailAddress: emailaddress, blogAddress: blogaddress, userId: userid, comment: Comment },
    function (result) {
        alert('Comment created.  It may not show up for a while.');
        document.getElementById('addComment_' + postId).disabled = false;
        document.getElementById('commenttext_' + postId).value = '';

        showComments(postId);
    }, function (result) {
        document.getElementById('addComment_' + postId).disabled = false;
        alert('Error');
    });
};

function showComments(id) {
    document.getElementById('commentSpinner_' + id).style.visibility = 'Visible';

    $.get(rootCalc.getRooted('generatecomments.aspx')+'?id=' + id, function (data) {
        document.getElementById("comments_" + id).innerHTML = data;
        document.getElementById('commentSpinner_' + id).style.visibility = 'Hidden';
        $("#comments_" + id).slideDown("slow");

        if ($("#comments_" + id).offset().top > ($(window).height() / 2)) {
            $('html, body').animate({
                scrollTop: $("#comments_" + id).offset().top - ($(window).height() / 2)
            }, 2000);
        }
    });

    $.get(rootCalc.getRooted('createcomment.aspx')+'?id=' + id, function (data) {
        document.getElementById("addcomments_" + id).innerHTML = data;
        $("#addcomments_" + id).slideDown("slow");
    });
}

function hideComments(x) {
    //alert('hello');
    var dialog = document.getElementById('commentDialog');
    dialog.innerHTML = '';
}

function showCreateUser() {

    var strVar = "";

    strVar += "    <form name='input' action='javascript:createUserSubmit()'>";
    strVar += "        Nickname:&nbsp;<input id=\"nickname\" type=\"text\"\/>";
    strVar += "        email:&nbsp;<input id=\"email\" type=\"text\"\/>";
    strVar += "        blog:&nbsp;<input id=\"blog\" type=\"text\"\/>";
    strVar += "        ";
    strVar += "        <input type=\"submit\" value=\"Create User\"\/>"
    strVar += "        <\/form>";



    var dialog = document.getElementById('dialog');
    try {
        dialog.innerHTML = strVar;
    } catch (ex) {
        alert(ex.message);
    }

    dialog.style.visibility = "visible";

    $("#dialog").dialog({ hide: 'slide' });
}

function createUserSubmit() {
    var item = document.getElementById("nickname");
    createUser(userToken, $("#nickname").attr("value"), $("#email").attr("value"), $("#blog").attr("value"));
}

function doSearch() {
    var query = $("#search").attr("value");
    //document.getElementById("loadingSpinner").style.visibility = 'visible';
    $.get(rootCalc.getRooted("cloud_generatesearchresults.aspx")+"?search=" + query, function (data) {
        document.getElementById("SearchResults").innerHTML = data;
        //$("#SearchResults").slideDown("slow");
        document.getElementById("SearchResults").style.visibility = 'visible';
    });

}
function loadDefault(){    loadpagerelative("virtualgeneratepage.aspx");}function loadpagerelative(x) {    var actualUrl = rootCalc.getRooted(x);    document.getElementById("loadingSpinner").style.visibility = 'visible';    $.get(actualUrl, function (data) {        document.getElementById("postdisplaydiv").innerHTML = data;        document.getElementById("loadingSpinner").style.visibility = 'hidden';    });};
function loadpage(x) {
    document.getElementById("loadingSpinner").style.visibility = 'visible';
    $.get(x, function (data) {
        document.getElementById("postdisplaydiv").innerHTML = data;
        document.getElementById("loadingSpinner").style.visibility = 'hidden';
    });
};var rootCalc = function () {        var root = "";        var scripts = document.getElementsByTagName('script'),        script = scripts[scripts.length - 1];        if (script.getAttribute.length !== undefined) {            root = script.getAttribute('src');        } else {            root = script.getAttribute('src', 2);        }        //if root is not null        root = root.substring(0, root.lastIndexOf('/') + 1)        return {            getRooted: function (vari) { return root + vari; }        };    } ();