/**
 * Created by mac on 17/7/3.
 */

/**
 * Created by mac on 17/5/8.
 */

sysComm = {
    sysCode: '1002',//系统编码
    cityId:69,//市id
    provId:3,//省id
    cityName:'邯郸市',//城市
    areaName:'邯郸市峰峰矿区',
    point_lng:114.223507,//赤峰市万达广场经度
    point_lat:36.460958,//赤峰市万达广场纬度(118.917132,42.255586)
    centerpoint_lng:114.158931,//热点区域中心点
    centerpoint_lat:36.538439,//维多利购物广场坐标（118.967899,42.279838）
    grantType: 'PASSWORD',//授权模式
    clientType: 'WEB'//客户端类型
}


// var baseUrl = 'http://192.168.1.196:8099/';// url公用地址

var baseUrl = 'http://120.26.116.79:8094/';// url公用地址

// var baseUrl = 'http://61.177.139.228:18094/';// url公用地址

//var baseUrl = 'http://127.0.0.1:8099/';// url公用地址
//var baseUrl = 'http://192.168.1.111:8099/';// url公用地址


var authUrl = 'http://120.26.116.79:8088/';// 鉴权URL公用地址

var dataUrl = dataUrl || {};


dataUrl.util = {
	//根据停车场编号获取空闲车位数
	queryParkFreeBerthsByPkNos:function(){
		return baseUrl +'parkingLBS/queryParkFreeBerthsByPkNos'
	},
	//热点区域 预警下发
	smsWarningNotice:function(){
		return baseUrl +'hotspot/smsWarningNotice'
	},
	//根据热点区域获取周边停车场
	getParkLotByHotSpot:function(){
		return baseUrl +'hotspot/parkinglots'
	},
	//获取某个城市的热点区域
	getHotspotByCityId:function(){
		return baseUrl+'hotspot/getHotspotByCityId';
	},
	//park-websocket端点
	getParkWebSocketEndpoint:function(){
		return baseUrl+'park-websocket';
	},
	//获取某个城市要显示的区县
	getDisplayCountry:function(){
		return baseUrl + 'dataGeneralize/displayCountryByCityId'
	},
	//首页-空闲车位雷达图
	getFreeBerthRadarChart:function () {
        return baseUrl + 'dataGeneralize/freeBerthRadarChart'
    },
    sendFreeBerthRadarChartByWebSocket:function () {
        return baseUrl + 'park/freeBerthRadarChartByWebSocket'
    },
    subscribeFreeBerthRadarChartByWebSocket:function(){
    	return '/user/'+sysComm.cityId+'freeBerthRadarChartByWebSocket';
    },
    //首页-停车场柱图
    getParkinglotColumnChart:function(){
    	return baseUrl + 'dataGeneralize/parkinglotColumnChart'
    },
	//首页-停车场设备
	getParkLotEqpCountChart:function(){
		return baseUrl + 'dataGeneralize/statisticParkLotEqpCountByCountry'
	},
	//首页-中间地图
	getParkAndBerthAndEqpMap:function(){
		return baseUrl + 'dataGeneralize/parkAndBerthAndEqpMap'
	},
	//首页-线上线下排行
	getQueryParkTransaction:function(){
		return baseUrl + 'dataGeneralize/queryParkTransaction'
	},
	//首页-车位配比
	getBerthSpaceRatioChart:function(){
		return baseUrl + 'dataGeneralize/berthSpaceRatioChart'
	},
	
	//停车LBS-查询省市的停车热点-按小时统计
	queryParkHeatmapByHour:function(){
		return baseUrl + 'parkingLBS/queryParkHeatmapByHour'
	},
	//停车LBS-查询省市的停车热点-按日期统计
	queryParkHeatmapByDay:function(){
		return baseUrl + 'parkingLBS/queryParkHeatmapByDay'
	},
	
	//查询区域的下一级
	queryNextLowerLeverById:function(){
		return baseUrl + 'area/queryNextLowerLeverById'
	},
	
	
    //获取验证码
    getLoginImageCode: function () {
        return authUrl + 'oauth/imageCode?' + Math.random()
    },
    //登录
    getLogin: function () {
        return authUrl + 'oauth/login'
    },
    //登出
    getLoginOut: function () {
        return authUrl + 'oauth/loginout'
    },
    //获取菜单
    getMenuByOpId: baseUrl + 'sysOp/queryMenuByOpId',
    //查询角色
    getQueryRoles: function () {
        return baseUrl + 'sysRole/queryRoles'
    },
    //查询职能
    getQueryJobFunc: function () {
        return baseUrl + 'sysJobFunc/pageQuerySysjobFunc'
    },
    //根据职能ID 获取 改职能下有哪些资源
    queryResByJobFunId: baseUrl + 'sysJobFunc/queryResIdByJobFunId',
    //新增或更新 职能信息 职能与资源的关联关系
    saveOrUpdateJobFunWithResIds: baseUrl + 'sysJobFunc/saveOrUpdateJobFunWithResIds',
    //根据职能id查询角色
    getRoleByJobFuncId: baseUrl + 'sysJobFunc/queryResIdByJobFunId',
    //删除职能
    deleteJobFun: baseUrl + 'sysJobFunc/deleteSysJobFunc',
    //更新职能
    updateJobFun: baseUrl + 'sysJobFunc/updateJobFun',
    //保存职能
    saveJobFun: baseUrl + 'sysJobFunc/saveJobFun',
    //通过syscode查询职能
    getJobFuncsBySysCode: function () {
        return baseUrl + 'sysJobFunc/queryJobFuncsBySysCode'
    },
    //通过角色查询职能
    queryJobFuncsByRoleId: function () {
        return baseUrl + 'sysJobFunc/queryJobFuncsByRoleId'
    },
    //修改密码
    modifyPass: baseUrl + 'sysOp/modifyPass',
    isUsedForRoleByRoleId: function () {
        return baseUrl + 'sysRole/isUsedForRoleByRoleId';
    },
    saveRole: function () {
        return baseUrl + 'sysRole/add'
    },
    updateRole: function () {
        return baseUrl + 'sysRole/update'
    },
    deleteRole: function () {
        return baseUrl + 'sysRole/delete'
    },
    //查询用户分页列表
    getQueryUsersList: baseUrl + 'sysOp/queryOpsBySysCode',
    //查询用户名loginCode是否可以用
    queryLoginCodeIsUsed: baseUrl + 'sysOp/loginCodeIsUsed',
    //保存用户
    saveUser: baseUrl + 'sysOp/insertUser',
    //修改用户
    updateUser: baseUrl + '/sysOp/modifyUser',
    //删除用户
    deleteUser: baseUrl + '/sysOp/deleteUser',
    //重置密码
    resetUserPwd: baseUrl + 'sysOp/modifyUserPassword',
    //添加用户时查询角色列表
    getQueryRolesList: baseUrl + 'sysOp/queryRolesBySysCode',
    //条件查询时查询部门（组织）列表
    getQueryOrgsList: baseUrl + 'sysOp/queryOrgsBySysCode',
    //查询组织分页列表
    getQueryOrgsPageList: baseUrl + 'sysOrg/getQueryOrgList',
    //添加组织
    saveOrg: baseUrl + 'sysOrg/insertOrg',
    //修改组织
    updateOrg: baseUrl + 'sysOrg/modifyOrg',
    //删除组织
    deleteOrg: baseUrl + 'sysOrg/deleteOrg',
    //判断组织是否被占用
    isUsedForOrgByOrgId: baseUrl + 'sysOrg/isUsedForOrgByOrgId',
    //通过sysCode构建树形组织
    getOrgTreeBySysCode: function () {
        return baseUrl + 'sysOrg/getOrgTreeBySysCode'
    },
    //查询菜单
    getSysResBySysCode: function () {
        return baseUrl + 'sysRes/queryResBySysCode'
    },
    //通过syscode查询菜单树
    getResTreeBySysCode: function () {
        return baseUrl + 'sysRes/getResTreeBySysCode'
    },
    //删除菜单
    deleteRes: function () {
        return baseUrl + 'sysRes/delete'
    },
    //保存或更新菜单
    saveOrUpdateRes: function () {
        return baseUrl + 'sysRes/saveOrUpdate'
    },
    //判断某菜单是否已经被使用
    isUsedForMenuByMenuId: function () {
        return baseUrl + 'sysRes/isUsedForResByResId'
    },
    
    //根据行政区域编码 以及 诱导屏幕等级 查询诱导屏信息
    listGuideScreenByAreaCodes: function () {
        return baseUrl + 'guideScreen/listGuideScreenByAreaCodes'
    },
    
    //查询所有诱导屏信息，用于地图展示
    listGuideScreenForMap: function () {
        return baseUrl + 'guideScreen/listGuideScreenForMap'
    },
    
    //根据行政区编码 统计各个诱导屏数量
    statisticsGuideScreenLevelByAreaCodes: function () {
        return baseUrl + 'guideScreen/statisticsGuideScreenLevelByAreaCodes'
    },
    //根据诱导牌编号 查询诱导屏信息
    getGuideScreenInfo:function () {
        return baseUrl+'guideScreen/getGuideScreenInfo'
    },
    //数据分析-->停车轨迹-->加载饼图
    getPieChartURL:function(){
    	  return baseUrl+'parkingContrail/parkingCountForPlType'
    },
    //数据分析-->停车轨迹-->统计图
    getStatisticalChar:function(){
    	  return baseUrl+'parkingContrail/parkingCountForBusiCircle'
    },
    //数据分析-->停车轨迹-->表哥
    queryParkingTrack:function(){
    	  return baseUrl+'parkingContrail/queryParkingTrack'
    },
    //停车场分页查询-根据市、区县id、停车场名称或地址
    queryParkLotByCountryAndParkName:function () {
        return baseUrl+'parkingLBS/queryParkLotByCountryAndParkName'
    },
    //根据停车场编号列表查询停车场空闲车位数
    queryParkFreeBerthsByPkNos:function () {
        return baseUrl+'parkingLBS/queryParkFreeBerthsByPkNos'
    },
    //根据停车场编号列表查询停车场空闲车位数
    queryParkingLotGeoByCountryAndParkName:function () {
        return baseUrl+'parkingLBS/queryParkingLotGeoByCountryAndParkName'
    }
    
    


}

//公共方法
fn = {
    //获取普通API鉴权token
    getToken: function () {
        var token = sessionStorage.getItem("token");
        if (StrUtil.isEmpty(token)) {
            token = '';
        }
        return token;
    },
    //设置普通API鉴权token
    setToken: function (token) {
        sessionStorage.setItem("token", token);
    },
    getUserAccount: function () {
        return sessionStorage.getItem("userAccount");
    },
    setUserAccount: function (userAccount) {
        sessionStorage.setItem("userAccount", userAccount);
    },
    getUserName: function () {
        return sessionStorage.getItem("userName");
    },
    setUserName: function (userName) {
        sessionStorage.setItem("userName", userName);
    },
    getUserId: function () {
        return sessionStorage.getItem("userId");
    },
    setUserId: function (userId) {
        sessionStorage.setItem("userId", userId);
    },
    //获取鉴权API会话token
    getAuthToken: function () {
        var authToken = sessionStorage.getItem("Authtoken");
        if (StrUtil.isEmpty(authToken)) {
            authToken = '';
        }
        return authToken;
    },
    //设置鉴权API会话token
    setAuthToken: function (autoToken) {
        sessionStorage.setItem("Authtoken", autoToken);
    },
    //跳转到登录界面
    toLoginPage: function () {
        window.location.href = '../../login.html'
    },
    //登出系统
    loginOut: function () {
        var token = fn.getToken();
        fn.setToken('');
        if (StrUtil.isNotEmpty()) {
            var req = {'token': token, 'url': dataUrl.util.getLoginOut()}
            sysAjax(req);

        }
        fn.toLoginPage();
    }

}

DateUtil = {
    dataFormat: function (longTime, formatStr) {
        //格式化时间
        //longTime 要进行格式化的long类型的时间
        //formatStr 要格式化成的字符串类型
        var data = new Date(longTime);
        return data.Format(formatStr);
    },
    isLongTime: function (longTime) {
        //判断是否是longTime时间类型

    }
}

//cookie操作工具类
CkUtil = {
    //获取cookie
    getCookie: function (name) {
        var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
        if (arr = document.cookie.match(reg))
            return unescape(arr[2]);
        else
            return null;
    },
    //删除cookie
    delCookie: function (name) {
        var exp = new Date();
        exp.setTime(exp.getTime() - 1);
        var cval = CkUtil.getCookie(name);
        if (cval != null)
            document.cookie = name + "=" + cval + ";expires=" + exp.toUTCString();
    },
    //设置cookie，time单位毫秒
    setCookie: function (name, value, time) {
        var exp = new Date();
        exp.setTime(exp.getTime() + time);
        document.cookie = name + "=" + escape(value) + ";expires=" + exp.toUTCString();
    },
    //获取毫秒数  1s的毫秒数为 getSec('s1') 1小时为 getSec('h1')
    getSec: function (str) {
        var str1 = str.substring(1, str.length) * 1;
        var str2 = str.substring(0, 1);
        if (str2 == "s") {
            return str1 * 1000;
        }
        else if (str2 == "h") {
            return str1 * 60 * 60 * 1000;
        }
        else if (str2 == "d") {
            return str1 * 24 * 60 * 60 * 1000;
        }
    }

}


StrUtil = {
    isEmpty: function (str) {
        if (str == undefined || null == str || StrUtil.trim(str).length == 0) {
            return true;
        }
        return false;
    },
    isNotEmpty: function (str) {
        return !StrUtil.isEmpty(str);
    },
    trim: function (str) {
        //删除左右两端的空格
        return str.replace(/(^\s*)|(\s*$)/g, "");
    },
    ltrim: function (str) {
        //删除左边的空格
        return str.replace(/(^\s*)/g, "");
    },
    rtrim: function (str) {
        //删除右边的空格
        return str.replace(/(\s*$)/g, "");
    }
}


// 对Date的扩展，将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子：
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function (fmt) { //author: meizz
    var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours(), //小时
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}

//公用接口调用

function sysAjax(opts) {
    //校验token
//	if(!token){
//      window.location.href=""
//  }

    //一.设置默认参数
    var defaults = {
        method: 'GET',
        url: '',
        dataType: 'json',
        data: '',
        async: true,
        cache: false,
        contentType: 'application/json; charset=utf-8',
        success: function () {
        },
        error: function () {
        }
    };


    //二.用户参数覆盖默认参数
    for (var key in opts) {
        defaults[key] = opts[key];
    }
    // console.log("请求相关参数：");
    // console.log(defaults)
    $.ajax({
        type: defaults.method,
        url: defaults.url,
        dataType: defaults.dataType,
        contentType: defaults.contentType,
        data: defaults.data,
        async: defaults.async,
        beforeSend: function (xhr) {
            //设置请求头
            //xhr.setRequestHeader("User-Agent", "headertest");
            //console.log(JSON.stringify(sysComm));
            xhr.setRequestHeader("x-auth-token", fn.getAuthToken());
            xhr.setRequestHeader("Authorization", fn.getToken());
        },
        success: function (res, status, xhr) {
            //console.log('获取header:'+xhr.getAllResponseHeaders());
            // console.log("服务器响应信息：");
            // console.log(res)
            var msg = (typeof res.msg == 'string') && (res.msg.constructor == String) ? res.msg : res.errMsg;
            //成功
            if (res.code == "2003") {
                //授权令牌不存在或已失效，请重新登录后在尝试
                alert(res.errMsg);
            } else if (res.code == "2004") {
                //授权令牌不合法,请重新登录收尝试
                alert(res.errMsg);
            } else if (res.code == "2005") {
                //无此权限
                alert(msg);
            } else {
                defaults.success(res, status, xhr);
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            if (textStatus == "timeout") {
                alert('请求超时，请重试');
            } else {
                // alert("请求报错")
                console.log(errorThrown);
            }

        }
    });
}


function ajaxCommon(opts) {
    //一.设置默认参数
    var defaults = {
        method: 'GET',
        url: '',
        data: '',
        async: true,
        cache: false,
        contentType: 'application/json; charset=utf-8',
        success: function () {
        },
        error: function () {
        }
    };

    //二.用户参数覆盖默认参数
    for (var key in opts) {
        defaults[key] = opts[key];
    }

    defaults.method = defaults.method.toUpperCase();    //处理 method

    //三.对数据进行处理
    //如果数据是对象，并且 方法为 get方法时，将data拼接到url后面
    if (typeof defaults.data === 'object' && defaults.method === 'GET') {    //处理 data
        var str = '';
        for (var key in defaults.data) {
            str += key + '=' + defaults.data[key] + '&';
        }
        defaults.data = str.substring(0, str.length - 1);
    }

    defaults.cache = defaults.cache ? '' : '&' + new Date().getTime();//处理 cache

    if (defaults.method === 'GET' && (defaults.data || defaults.cache)) defaults.url += '?' + defaults.data + defaults.cache;    //处理 url

    //四.开始编写ajax
    //1.创建ajax对象
    var oXhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
    //2.和服务器建立联系，告诉服务器你要取什么文件
    oXhr.open(defaults.method, defaults.url, defaults.async);
    //3.发送请求
    if (defaults.method === 'GET')
        oXhr.send(null);
    else {
        oXhr.setRequestHeader("Content-type", defaults.contentType);
        oXhr.send(defaults.data);
    }
    //4.等待服务器回应
    oXhr.onreadystatechange = function () {
        if (oXhr.readyState === 4) {
            if (oXhr.status === 200)
                defaults.success.call(oXhr, oXhr.responseText);
            else {
                defaults.error();
            }
        }
    };
}


