﻿(function(userArticles) {
    userArticles.ajax = {
        doCallbackHtml: function(id, param, callback) {
            $.ajaxSetup({
                contentType: "application/x-www-form-urlencoded"
            });
            var postData = "__CALLBACKID=" + escape(id) +
			"&__CALLBACKPARAM=" + escape(param) + "&__VIEWSTATE=&";
            $.post(document.URL, postData, function(data, status) {
                if (data.charAt(0) == "s") {
                    status = "success";
                    data = data.substring(1);
                } else if (data.charAt(0) == "e") {
                    status = "error";
                    data = data.substring(1);
                } else {
                    var separatorIndex = data.indexOf("|");
                    if (separatorIndex != -1) {
                        var valLength = parseInt(data.substring(0, separatorIndex));
                        if (!isNaN(valLength)) {
                            data = data.substring(separatorIndex + valLength + 1);
                        }
                    }
                }
                if (callback != null)
                    callback(data, status);
            }, "html");
        },
        doCallbackJson: function(url, method, params, callback) {
            $.ajaxSetup({
                contentType: "application/json"
            });

            $.post(url + method, $.toJSON(params), function(data, status) {
                var res = eval(data);
                callback(res[method + "Result"], status);
            }, "json");
        },
        doCallbackJsona: function(url, params, callback) {
            //URL here with metod name on the format of
            //"http://localhost/UserArticleServices/PostService.svc/KeywordGetAll?method=?"
            if (params = '') {
                $.getJSON(url, callback);
            }
            else
                $.getJSON(url, params, callback);

        }
		,
        doCallback: function(url, method, params) {
            $.ajaxSetup({
                contentType: "application/json"
            });
            $.post(url + method, $.toJSON(params), null, "json");
        }
    }
    userArticles.services = {
        //        ServicehostUrl: "http://localhost/UserArticleServices/#SVCFileName#/#FunctionName#?method=?",
        //        hostUrl: "http://localhost/UserArticles/#SVCFileName#/#FunctionName#",
        //               ServicehostUrl: "http://192.168.100.100/UserArticleServices/#SVCFileName#/#FunctionName#?method=?",
        //               hostUrl: "http://192.168.100.100/UserArticles/#SVCFileName#/#FunctionName#",
        ServicehostUrl: "http://www.masrawy.com/UserArticleServices/#SVCFileName#/#FunctionName#?method=?",
        hostUrl: "http://www.masrawy.com/Ketabat/#SVCFileName#/#FunctionName#",
        PostService: {
            KeywordGetAll: function(callback) {
                //                $.ajax({
                //                    type: "GET",
                //                    url: userArticles.services.hostUrl.replace('#SVCFileName#', 'PostService.svc').replace('#FunctionName#', 'KeywordGetAll'),

                //                    success: function(msg) {
                //                        alert(msg);
                //                    },
                //                    complete: function(msg) {
                //                        alert(msg);
                //                        if (msg.status == 200 && msg.statusText == 'OK') {
                //                            var res = eval(msg.responseText.replace('"', '').replace('"', ''));
                //                            callback(res, status);
                //                        }
                //                    },
                //                    dataType: "json"
                //                });
                //                $.getJSON(userArticles.services.ServicehostUrl.replace('#SVCFileName#', 'PostService.svc').replace('#FunctionName#', 'KeywordGetAll'), callback);
            },
            Addpost: function(param, callback, callbackError) {
                $.ajaxSetup({
                    contentType: "application/json"
                });
                $.ajax({
                    type: "Post",
                    url: userArticles.services.hostUrl.replace('#SVCFileName#', 'PostServiceCaller.svc').replace('#FunctionName#', 'PostPendingAdd'),
                    data: param,
                    success: function(msg) {
                        var res = eval(msg.replace('"', '').replace('"', ''));
                        callback(res, status);
                    },
                    complete: function(msg) {
                        if (msg.status == 200 && msg.statusText == 'OK') {
                            var res = eval(msg.responseText.replace('"', '').replace('"', ''));
                            callback(res, status);
                        }
                        else {
                            callbackError(res, status);
                        }
                    },
                    dataType: "application/json"
                });
            },

            SendInvetation: function(param, callback) {
                $.ajaxSetup({
                    contentType: "application/json"
                });
                $.ajax({
                    type: "Post",
                    url: userArticles.services.hostUrl.replace('#SVCFileName#', 'PostServiceCaller.svc').replace('#FunctionName#', 'SendInvetation'),
                    data: $.toJSON(param),
                    success: function(msg) {
                        //                        var res = eval(msg.replace('"', '').replace('"', ''));
                        callback();
                    },
                    complete: function(msg) {
                        //                        if (msg.status == 200 && msg.statusText == 'OK') {
                        //                            var res = eval(msg.responseText.replace('"', '').replace('"', ''));
                        callback();
                        //                        }
                    },
                    dataType: "application/json"
                });
            },
            UserUpdateAvatar: function(param, callback, callbackError) {
                $.ajaxSetup({
                    contentType: "application/json"
                });
                $.ajax({
                    type: "Post",
                    data: param,
                    url: userArticles.services.hostUrl.replace('#SVCFileName#', 'PostServiceCaller.svc').replace('#FunctionName#', 'UserUpdateAvatar'),
                    success: function(data) {
                        var res = eval(data);
                        callback(res["UserUpdateAvatarResult"], status);
                    },
                    complete: function(msg) {
                        if (msg.status == 200 && msg.statusText == 'OK') {
                            var res = eval(msg.responseText.replace('"', '').replace('"', ''));
                            //callback(res, status);
                        }
                        else {
                            callbackError(res, status);
                        }
                    },
                    dataType: "json"
                });
            },
            UserUpdateBrief: function(param, callback, callbackError) {
                $.ajaxSetup({
                    contentType: "application/json"
                });
                $.ajax({
                    type: "Post",
                    data: param,
                    url: userArticles.services.hostUrl.replace('#SVCFileName#', 'PostServiceCaller.svc').replace('#FunctionName#', 'UserUpdateBrief'),
                    success: function(data) {
                        var res = eval(data);
                        //callback(res["UserUpdateBriefResult"], status);
                    },
                    complete: function(msg) {
                        if (msg.status == 200 && msg.statusText == 'OK') {
                            var res = eval(msg.responseText.replace('"', '').replace('"', ''));
                            callback(res, status);
                        }
                        else {
                            callbackError(res, status);
                        }
                    },
                    dataType: "json"
                });
            },
            SeriesInsert: function(param, callback, callbackError) {
                $.ajaxSetup({
                    contentType: "application/json"
                });
                $.ajax({
                    type: "Post",
                    data: param,
                    url: userArticles.services.hostUrl.replace('#SVCFileName#', 'PostServiceCaller.svc').replace('#FunctionName#', 'SeriesInsert'),
                    success: function(data) {
                        var res = eval(data);
                        //callback(res["UserUpdateBriefResult"], status);
                    },
                    complete: function(msg) {
                        if (msg.status == 200 && msg.statusText == 'OK') {
                            var res = eval(msg.responseText.replace('"', '').replace('"', ''));
                            callback(res, status);
                        }
                        else {
                            callbackError(res, status);
                        }
                    },
                    dataType: "json"
                });
            },
            SeriesUpdate: function(param, callback, callbackError) {
                $.ajaxSetup({
                    contentType: "application/json"
                });
                $.ajax({
                    type: "Post",
                    data: param,
                    url: userArticles.services.hostUrl.replace('#SVCFileName#', 'PostServiceCaller.svc').replace('#FunctionName#', 'SeriesUpdate'),
                    success: function(data) {
                        var res = eval(data);
                        //callback(res["UserUpdateBriefResult"], status);
                    },
                    complete: function(msg) {
                        if (msg.status == 200 && msg.statusText == 'OK') {
                            var res = eval(msg.responseText.replace('"', '').replace('"', ''));
                            callback(res, status);
                        }
                        else {
                            callbackError(res, status);
                        }
                    },
                    dataType: "json"
                });
            },
            SeriesDelete: function(param, callback, callbackError) {
                $.ajaxSetup({
                    contentType: "application/json"
                });
                $.ajax({
                    type: "Post",
                    data: param,
                    url: userArticles.services.hostUrl.replace('#SVCFileName#', 'PostServiceCaller.svc').replace('#FunctionName#', 'SeriesDelete'),
                    success: function(data) {
                        var res = eval(data);
                        //callback(res["UserUpdateBriefResult"], status);
                    },
                    complete: function(msg) {
                        if (msg.status == 200 && msg.statusText == 'OK') {
                            var res = eval(msg.responseText.replace('"', '').replace('"', ''));
                            callback(res, status);
                        }
                        else {
                            callbackError(res, status);
                        }
                    },
                    dataType: "json"
                });
            },
            GetUserGroups: function(params, callback) {
                userArticles.ajax.doCallbackJson(userArticles.services.hostUrl + this.url, "GetUserGroups", params, function(data, status) {
                    var res = eval(data);
                    callback(res[method + "Result"], status);
                });
            }
            ,
            PostSeriesUpdate: function(param, callback, callbackError) {
                $.ajaxSetup({
                    contentType: "application/json"
                });
                $.ajax({
                    type: "Post",
                    data: param,
                    url: userArticles.services.hostUrl.replace('#SVCFileName#', 'PostServiceCaller.svc').replace('#FunctionName#', 'PostApprovedSeriesUpdate'),
                    success: function(data) {
                        var res = eval(data);
                        //callback(res["UserUpdateBriefResult"], status);
                    },
                    complete: function(msg) {
                        if (msg.status == 200 && msg.statusText == 'OK') {
                            var res = eval(msg.responseText.replace('"', '').replace('"', ''));
                            callback(res, status);
                        }
                        else {
                            callbackError(res, status);
                        }
                    },
                    dataType: "json"
                });
            },
            PostRequestDelete: function(param, callback, callbackError) {
                $.ajaxSetup({
                    contentType: "application/json"
                });
                $.ajax({
                    type: "Post",
                    url: userArticles.services.hostUrl.replace('#SVCFileName#', 'PostServiceCaller.svc').replace('#FunctionName#', 'PostRequestDelete'),
                    data: param,
                    success: function(msg) {
                        var res = eval(msg.replace('"', '').replace('"', ''));
                        callback(res, status);
                    },
                    complete: function(msg) {
                        if (msg.status == 200 && msg.statusText == 'OK') {
                            var res = eval(msg.responseText.replace('"', '').replace('"', ''));
                            callback(res, status);
                        }
                        else {
                            callbackError(res, status);
                        }
                    },
                    dataType: "application/json"
                });
            }
        }
    }
})(userArticles);
