// This JavaScript was automatically generated by
// Jayrock.JsonRpc.Web.JsonRpcProxyGenerator, Jayrock, Version=0.9.8316.0, Culture=neutral, PublicKeyToken=null
// on Friday, September 10, 2010 at 3:45:17 PM (GMT Daylight Time)

// Proxy version 1.0

function SubjectViewAJAX(url)
{
    this["addWidget"] = function(WidgetTypeId, callback)
    {
        return call("addWidget", [ WidgetTypeId ], callback);
    }
    
    this["reloadWidget"] = function(ViewId, PageNum, callback)
    {
        return call("reloadWidget", [ ViewId, PageNum ], callback);
    }
    
    this["updateWidgetOrder"] = function(NewOrder, callback)
    {
        return call("updateWidgetOrder", [ NewOrder ], callback);
    }
    
    this["dropWidget"] = function(SubjectViewId, callback)
    {
        return call("dropWidget", [ SubjectViewId ], callback);
    }
    
    this["changeEmailAddress"] = function(newEmailAddress, callback)
    {
        return call("changeEmailAddress", [ newEmailAddress ], callback);
    }
    
    this["joinTo"] = function(myId, foreignId, linkType, viewId, introduction, callback)
    {
        return call("joinTo", [ myId, foreignId, linkType, viewId, introduction ], callback);
    }
    
    this["removeFrom"] = function(myId, foreignId, linkType, viewId, callback)
    {
        return call("removeFrom", [ myId, foreignId, linkType, viewId ], callback);
    }
    
    this["requestRespond"] = function(accept, requestId, viewId, callback)
    {
        return call("requestRespond", [ accept, requestId, viewId ], callback);
    }
    
    this["addRating"] = function(viewId, message, rating, callback)
    {
        return call("addRating", [ viewId, message, rating ], callback);
    }
    
    this["addMessage"] = function(viewId, message, callback)
    {
        return call("addMessage", [ viewId, message ], callback);
    }
    
    this["deleteMessage"] = function(messageId, viewId, callback)
    {
        return call("deleteMessage", [ messageId, viewId ], callback);
    }
    
    this["changeStatus"] = function(viewId, message, callback)
    {
        return call("changeStatus", [ viewId, message ], callback);
    }
    
    this["updateDescription"] = function(SubjectId, message, callback)
    {
        return call("updateDescription", [ SubjectId, message ], callback);
    }
    
    this["changePassword"] = function(OldPassword, NewPassword, callback)
    {
        return call("changePassword", [ OldPassword, NewPassword ], callback);
    }
    
    this["setProfileImage"] = function(subjectId, imgId, callback)
    {
        return call("setProfileImage", [ subjectId, imgId ], callback);
    }
    
    this["tagThem"] = function(vwId, id, val, callback)
    {
        return call("tagThem", [ vwId, id, val ], callback);
    }
    
    this["getChildSubjectsList"] = function(ClientObjId, NodeId, MaxDepth, callback)
    {
        return call("getChildSubjectsList", [ ClientObjId, NodeId, MaxDepth ], callback);
    }
    
    this["getSubjectsList"] = function(ClientObjId, NodeIds, MaxDepth, callback)
    {
        return call("getSubjectsList", [ ClientObjId, NodeIds, MaxDepth ], callback);
    }
    
    this["getJoinedSubjectsListFromName"] = function(ClientObjId, Node, NodeTypeId, SubjectTypeId, MaxDepth, callback)
    {
        return call("getJoinedSubjectsListFromName", [ ClientObjId, Node, NodeTypeId, SubjectTypeId, MaxDepth ], callback);
    }
    
    this["getJoinedSubjectsList"] = function(ClientObjId, NodeId, SubjectTypeId, MaxDepth, callback)
    {
        return call("getJoinedSubjectsList", [ ClientObjId, NodeId, SubjectTypeId, MaxDepth ], callback);
    }
    
    this["getSubjectSearch"] = function(ClientObjId, Term, SubjectTypeId, MaxDepth, callback)
    {
        return call("getSubjectSearch", [ ClientObjId, Term, SubjectTypeId, MaxDepth ], callback);
    }
    
    this["checkEmailRegistered"] = function(email, callback)
    {
        return call("checkEmailRegistered", [ email ], callback);
    }
    
    this["checkUserNameTaken"] = function(username, callback)
    {
        return call("checkUserNameTaken", [ username ], callback);
    }
    
    this["checkSubjectNameTaken"] = function(name, subjectTypeId, callback)
    {
        return call("checkSubjectNameTaken", [ name, subjectTypeId ], callback);
    }
    
    this["changeViewableNamePermission"] = function(SubjectViewId, PermissionLevel, callback)
    {
        return call("changeViewableNamePermission", [ SubjectViewId, PermissionLevel ], callback);
    }
    
    this["saveMyLinks"] = function(NewSubjectIds, subjectTypeIds, callback)
    {
        return call("saveMyLinks", [ NewSubjectIds, subjectTypeIds ], callback);
    }
    
    this["changeSubjectLinkingPrivacy"] = function(PrivacyLevel, SubjectViewId, callback)
    {
        return call("changeSubjectLinkingPrivacy", [ PrivacyLevel, SubjectViewId ], callback);
    }
    
    /* Returns an array of method names implemented by this service. */
    
    this["system.listMethods"] = function(callback)
    {
        return call("system.listMethods", [ ], callback);
    }
    
    /* Returns the version server implementation using the major, minor, build and revision format. */
    
    this["system.version"] = function(callback)
    {
        return call("system.version", [ ], callback);
    }
    
    /* Returns a summary about the server implementation for display purposes. */
    
    this["system.about"] = function(callback)
    {
        return call("system.about", [ ], callback);
    }
    
    var url = typeof(url) === 'string' ? url : 'http://sap1.com/Modules/SocialProfile/SubjectViewAJAX.ashx';
    var self = this;
    var nextId = 0;

    function call(method, params, callback)
    {
        var request = { id : nextId++, method : method, params : params };
        return callback == null ? 
            callSync(method, request) : callAsync(method, request, callback);
    }

    function callSync(method, request)
    {
        var http = newHTTP();
        http.open('POST', url, false, self.httpUserName, self.httpPassword);
        setupHeaders(http, method);
        http.send(JSON.stringify(request));
        if (http.status != 200)
            throw { message : http.status + ' ' + http.statusText, toString : function() { return message; } };
        var response = JSON.eval(http.responseText);
        if (response.error != null) throw response.error;
        return response.result;
    }

    function callAsync(method, request, callback)
    {
        var http = newHTTP();
        http.open('POST', url, true, self.httpUserName, self.httpPassword);
        setupHeaders(http, method);
        http.onreadystatechange = function() { http_onreadystatechange(http, callback); }
        http.send(JSON.stringify(request));
        return request.id;
    }

    function setupHeaders(http, method)
    {
        http.setRequestHeader('Content-Type', 'text/plain; charset=utf-8');
        http.setRequestHeader('X-JSON-RPC', method);
    }

    function http_onreadystatechange(sender, callback)
    {
        if (sender.readyState == /* complete */ 4)
        {
            var response = sender.status == 200 ? 
                JSON.eval(sender.responseText) : {};
            
            response.xmlHTTP = sender;
                
            callback(response);
        }
    }

    function newHTTP()
    {
        if (typeof(window) != 'undefined' && window.XMLHttpRequest)
            return new XMLHttpRequest(); /* IE7, Safari 1.2, Mozilla 1.0/Firefox, and Netscape 7 */
        else
            return new ActiveXObject('Microsoft.XMLHTTP'); /* WSH and IE 5 to IE 6 */
    }
}

SubjectViewAJAX.rpcMethods = ["addWidget","reloadWidget","updateWidgetOrder","dropWidget","changeEmailAddress","joinTo","removeFrom","requestRespond","addRating","addMessage","deleteMessage","changeStatus","updateDescription","changePassword","setProfileImage","tagThem","getChildSubjectsList","getSubjectsList","getJoinedSubjectsListFromName","getJoinedSubjectsList","getSubjectSearch","checkEmailRegistered","checkUserNameTaken","checkSubjectNameTaken","changeViewableNamePermission","saveMyLinks","changeSubjectLinkingPrivacy","system.listMethods","system.version","system.about"];
