(function($) {
    var publish_version = false;
    var isInner = false; //发布线上后有内外网的配置
    var agentName = "wlyyAgentForDoc";
    var server, userAgent, loginUrl, imserver, socketUrl, imgServer, grant_type, client_id

    var IMEI = localStorage.getItem('WLYY_IMEI') || uuid(16, 16)
    localStorage.setItem('WLYY_IMEI', IMEI)
    $.support.cors = true;
    if(publish_version) { // 生产环境配置
        server = "http://www.xmtyw.cn/wlyytest/"
        imserver = "http://27.155.101.77:3000/api/v2";
        socketUrl = "http://27.155.101.77:3000";
        loginUrl = "../../login/login.html";
        imgServer = "http://www.xmtyw.cn/";
        if(isInner){
            server = "http://10.95.22.10:8011/wlyy/"
            imserver = "http://10.95.22.138:3000/api/v2";
            socketUrl = "http://10.95.22.138:3000";
            loginUrl = "../../login/html/login.html";
            imgServer = "http://10.95.22.10:8011/";
        }
    } else {// 测试环境配置
    	grant_type = "password";
        client_id = "WYo0l73F8e";
    	server = "http://172.19.103.73:10001/";
//      server = "http://172.19.103.88:9092/wlyy/"
        imserver = "http://172.19.103.88:3000/api/v2";
        socketUrl = "http://172.19.103.88:3000";
//      server = "http://192.168.131.133:8080/";

//      server = "http://192.168.131.127:8060/"; //逸祥
//      server = "http://192.168.131.24:8080/"; //仕杰
//      imserver = "http://192.168.131.24:3000/api/v2"
//      socketUrl = "http://192.168.131.24:3000";

        loginUrl = "../../login/login.html";
//      loginUrl = "/PC-prescription/login.html"; //自己本地测试时的路径
        imgServer = "http://172.19.103.54/";
    }


    function httpGet(url, options) {
        //发送ajax请求
        return new Promise(function(resolve, reject) {
            $.ajax(server + url,
                $.extend({}, {
                    type: 'GET',
                    dataType: 'JSON',
                    beforeSend: function(request) {                    	
                        var oauthInfo = JSON.parse(sessionStorage.getItem("oauthInfo"));
                        if (oauthInfo) {
                            request.setRequestHeader("accessToken", oauthInfo.accessToken);
                            request.setRequestHeader("token", oauthInfo.accessToken);
                        }
                    },
                    error: function(res) {
                        reject(res)
                    },
                    success: function(res) {
                        failCodeHandle(res)
                        resolve(res)
                    }
                }, options));
        })
    }

    function httpPost(url, options) {
        //发送ajax请求
        return new Promise(function(resolve, reject) {
            $.ajax(server + url,
                $.extend({}, {
                    type: 'POST',
                    dataType: 'JSON',
                    beforeSend: function(request) {
                        var oauthInfo = JSON.parse(sessionStorage.getItem("oauthInfo"));
                        if (oauthInfo) {
                            request.setRequestHeader("accessToken", oauthInfo.accessToken);
                            request.setRequestHeader("token", oauthInfo.accessToken);
                        }
                    },
                    error: function(res) {
                        reject(res)
                    },
                    success: function(res) {
                        failCodeHandle(res)
                        resolve(res)
                    }
                }, options));
        })
    }
    
    //调用福州总部的接口的方法
    function fzHttpPost(url, options){
        return new Promise(function(resolve, reject) {
            var url2 = "/basic/api/v1.0/fz/open/api",
                params = {
                    apiUrl: url, //相对接口路径，不用"/"开头
                    paramsJson:  JSON.stringify(options)
                }
            $.ajax(server + url2, {
                type: 'POST',
                data: params,
                dataType: 'JSON',
                error: function(res) {
                    console.log("error", res);
                    reject(res)
                },
                success: function(res) {
                    console.log("success", res)
                    failCodeHandle(res)
                    resolve(res)
                }
            });
        })
    }

    function imHttpGet(url, options) {
        //发送ajax请求
        return new Promise(function(resolve, reject) {
            $.ajax(imserver + url,
                $.extend({}, {
                    type: 'GET',
                    dataType: 'JSON',
                    beforeSend: function(request) {
//                      request.setRequestHeader("userAgent", JSON.stringify(userAgent));
                    },
                    error: function(res) {
                        reject(res)
                    },
                    success: function(res) {
                        failCodeHandle(res)
                        resolve(res)
                    }
                }, options));
        })
    }

    function imHttpPost(url, options) {
        //发送ajax请求
        return new Promise(function(resolve, reject) {
            $.ajax(imserver + url,
                $.extend({}, {
                    type: 'POST',
                    dataType: 'JSON',
                    beforeSend: function(request) {
//                      request.setRequestHeader("userAgent", JSON.stringify(userAgent));
                    },
                    error: function(res) {
                        reject(res)
                    },
                    success: function(res) {
                        failCodeHandle(res)
                        resolve(res)
                    }
                }, options));
        })
    }

    function toLoginPage() {
        if(location.href.indexOf('login.html') > -1) {
            return;
        }
        setTimeout(function() {
            sessionStorage.setItem("wlyy_relogin", 1)
//          var path = top.location.pathname,
//              rootPath = path.split("/")[1];
            top.location.replace(loginUrl + '?redirect_url=' + encodeURIComponent(top.location.href))
        }, 2000)
    }

    var count = 0;
    function failCodeHandle(res) {
        var tip = "";
        if(res.status == 999) {
            tip = "此账号已在别处登录，请重新登录";
        } else if(res.status == 998) {
            tip = "登录超时，请重新登录";
        } else if(res.status == 997) {
            tip = "此账号未登录，请先登录"
        }
        if(tip) {
            count ++;
            if(count == 1){
//              toastr && toastr.warning(tip)
                toLoginPage()
            }
        }
    }

    function uuid(len, radix) {
        var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
        var uuid = [],
            i;
        radix = radix || chars.length;

        if(len) {
            // Compact form  
            for(i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
        } else {
            // rfc4122, version 4 form  
            var r;

            // rfc4122 requires these characters  
            uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
            uuid[14] = '4';

            // Fill in random data.  At i==19 set the high bits of clock sequence as  
            // per rfc4122, sec. 4.1.5  
            for(i = 0; i < 36; i++) {
                if(!uuid[i]) {
                    r = 0 | Math.random() * 16;
                    uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
                }
            }
        }

        return uuid.join('');
    }

    /*
     * 获取图片路径方法修改
     */
    function getImgUrl(str) {
        if(typeof str != 'string') {
            return "";
        }
        if(str.length == 0) {
            return "";
        } else {
            if(str.indexOf("../") > -1) {
                //访问本地路径
                return str;
            } else if((str.indexOf("http://") > -1) || (str.indexOf("https://") > -1)) {
                return str;
            } else {
                //服务器上的图片路径
                return imgServer + str;
            }
        }
    }
    
    function httpPostContent(url, options) {
        //发送ajax请求
        return new Promise(function (resolve, reject) {
            $.ajax(server + url,
                $.extend({}, {
                    type: 'POST',
                    beforeSend: function (request) {                    	
                        var oauthInfo = JSON.parse(sessionStorage.getItem("oauthInfo"));
                        if (oauthInfo) {
                            request.setRequestHeader("accessToken", oauthInfo.accessToken);
                            request.setRequestHeader("token", oauthInfo.accessToken);
                        }
                    },
                    error: function (xhr, type, errorThrown) {
                        reject(xhr, type, errorThrown)
                    },
                    success: function (res) {
                        resolve(res)
                    }
                }, options));
        })
    }
    function httpPutContent(url, options) {   //加contentType限制
        //发送ajax请求
        return new Promise(function (resolve, reject) {
            $.ajax(server + url,
                $.extend({}, {
                    type: 'PUT',
                    dataType: 'JSON',
                    contentType:'application/json; charset=utf-8',
                    beforeSend: function (request) {                    	
                        var oauthInfo = JSON.parse(sessionStorage.getItem("oauthInfo"));
                        if (oauthInfo) {
                            request.setRequestHeader("accessToken", oauthInfo.accessToken);
                            request.setRequestHeader("token", oauthInfo.accessToken);
                        }
                    },
                    error: function (xhr, type, errorThrown) {
                        errTip(xhr.status);
                        reject(xhr, type, errorThrown)
                    },
                    success: function (res) {
                        resolve(res)
                    },
                }, options));
        })
    }
    

    httpRequest = {
        agentName: agentName,
        server: server,
        imserver: imserver,
        socketUrl: socketUrl,
//      userAgent: userAgent,
        get: httpGet,
        post: httpPost,
        imHttpGet: imHttpGet,
        imHttpPost: imHttpPost,
        fzPost: fzHttpPost,
        getImgUrl: getImgUrl,
        grant_type: grant_type,
        client_id: client_id,
        imgServer:imgServer,
        failCodeHandle: failCodeHandle,
        httpPostContent:httpPostContent,
        httpPutContent:httpPutContent,
        loginIm: function(data){
            return imHttpPost('/users/login', data);
        },
        getDoctorInfo: function() {
            return httpGet('doctor/baseinfo');
        }
    }

    window.httpRequest = httpRequest;
})(jQuery)