/**
 * @author 何杰
 * @date 2016-08-01 12:00:00
 * @address www.yitong.com.cn
 * @mail hj@yitong.com.cn
 * @desc: 屹通客户端组件api
 */
var Fw = {}; Fw.device = {};
Fw.device.Device = function () {
    var userAgent = navigator.userAgent;
    //ios 事件队列
    var eventQueue = [];
    return {
        //是否iOS设备
        is_ios: userAgent.indexOf('iPhone') > -1 || userAgent.indexOf('iPad') > -1,
        //是否Android设备
        is_android: userAgent.indexOf('Android') > -1,
        /**
         * ios
         * 注册事件
         * @param code 事件编码
         * @param options 参数
         */
        addEvent : function(code, options) {
            if (options && code) {
                eventQueue.push(JSON.stringify({
                    code : code,
                    name : options
                }));
            }
        },
        /**
         * ios
         * 原生调用，从队列中获取事件
         * @returns {string}
         */
        getEvent : function() {
            return eventQueue.length > 0 ? eventQueue.shift() : '0';
        }
    };
}();
/**
 * 供第三方调用API
 */
Fw.device.api = function () {
    var device = Fw.device.Device;
    return {

        
        /**
         *    @brief 获取经纬度
         */
        handCodeGetLocation : function (fn) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            var option = {};
            option.callBack = fn;
            device.is_ios && device.addEvent("51",JSON.stringify(option));
            device.is_android && GetInfoJs.getLocation(JSON.stringify(option));
        },
                /**
         *    @brief 获取用户信息
         */
        getUserInfo : function (fn) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            var option = {};
            option.callback = fn;
            device.is_ios && device.addEvent("getUserInfo",JSON.stringify(option));
            device.is_android && GetInfoJs.getUserInfo(JSON.stringify(option));
        },
         /**
         *    @brief
         */
        getCustNo : function (fn) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            device.is_ios && device.addEvent("getCustNo",fn);
            device.is_android && GetInfoJs.getCustNo(fn);
        },
        
        initTitle : function (option) {
             if(!device.is_ios && !device.is_android){
                 alert("请在ios/android设备上使用！");
                 return;
             }

            device.is_ios && device.addEvent("initTitle",JSON.stringify(option));
             device.is_android && GetInfoJs.initTitle(JSON.stringify(option));

         },

         setBackFun : function (option) {
             if(!device.is_ios && !device.is_android){
                 alert("请在ios/android设备上使用！");
                 return;
             }
             device.is_ios && device.addEvent("goBack",JSON.stringify(option));
             device.is_android && GetInfoJs.goBack(JSON.stringify(option));
         },
        setRightButton : function (option) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            device.is_ios && device.addEvent("setRightButton",JSON.stringify(option));
            device.is_android && GetInfoJs.setRightButton(JSON.stringify(option));
        },
         getBackFun :  function (fn) {
             if(!device.is_ios && !device.is_android){
                 alert("请在ios/android设备上使用！");
                 return;
             }
             device.is_ios && device.addEvent("getBackFun",fn);
             device.is_android && GetInfoJs.getBackFun(option);
         },


         startRecordVoice : function (option) {
             if(!device.is_ios && !device.is_android){
                 alert("请在ios/android设备上使用！");
                 return;
             }
             device.is_ios && device.addEvent("startRecordVoice",JSON.stringify(option));
             device.is_android && GetInfoJs.startRecordVoice();
         },
          stopRecordVoice : function (fn) {
              if(!device.is_ios && !device.is_android){
                  alert("请在ios/android设备上使用！");
                  return;
              }
               device.is_ios && device.addEvent("stopRecordVoice",fn);
              device.is_android && GetInfoJs.stopRecordVoice(fn);
          },
          getPhoneNo : function (fn) {
              if(!device.is_ios && !device.is_android){
                  alert("请在ios/android设备上使用！");
                  return;
              }
              device.is_ios && device.addEvent("getPhoneNo",fn);
              device.is_android && GetInfoJs.getPhoneNo(fn);
          },
          /**
            *扫一扫
            */
          openScanPage : function (option) {
              if(!device.is_ios && !device.is_android){
                  alert("请在ios/android设备上使用！");
                  return;
              }
              device.is_ios && device.addEvent("goToQrCode",JSON.stringify(option));
              device.is_android && GetInfoJs.openScanPage();
          },
           /**
            *付款码
            */
          openPaymentCode : function (option) {
              if(!device.is_ios && !device.is_android){
                  alert("请在ios/android设备上使用！");
                  return;
              }
              device.is_ios && device.addEvent("gotoPaymentCode",JSON.stringify(option));
              device.is_android && GetInfoJs.openPaymentCode(JSON.stringify(option));
          },

          /**
            * 拨打电话
            */
          gotoSystemPhone : function (fn) {
              if(!device.is_ios && !device.is_android){
                  alert("请在ios/android设备上使用！");
                  return;
              }
              device.is_ios && device.addEvent("gotoSystemPhone",fn);
              device.is_android && GetInfoJs.gotoSystemPhone(fn);
          },

          /**
            * 关闭当前页面
            */
          goBack : function (option) {
              if(!device.is_ios && !device.is_android){
                  alert("请在ios/android设备上使用！");
                  return;
              }
                device.is_ios && device.addEvent("getBackFun",JSON.stringify(option));
                device.is_android && GetInfoJs.goBack();
          },

          /**
            * 调用物理返回键
            */
          nativeBack : function () {
              if(!device.is_ios && !device.is_android){
                  alert("请在ios/android设备上使用！");
                  return;
              }
              option = {};
//                device.is_ios && device.addEvent("getBackFun",JSON.stringify(option));
                device.is_android && GetInfoJs.nativeBack();
          },
          /**
            * 地图导航
            */
          openMap : function (option) {
              if(!device.is_ios && !device.is_android){
                  alert("请在ios/android设备上使用！");
                  return;
              }
            device.is_ios && device.addEvent("openMap",JSON.stringify(option));
            device.is_android && GetInfoJs.openMap(JSON.stringify(option));
          },

          /**
            * 登录
            */
          gotoLoginCallback : function (fn) {
              if(!device.is_ios && !device.is_android){
                  alert("请在ios/android设备上使用！");
                  return;
              }
               device.is_ios && device.addEvent("goToLoginView",JSON.stringify(fn));
              device.is_android && GetInfoJs.gotoLoginCallback(JSON.stringify(fn));
          },

          loginStatus : function (option) {
              if(!device.is_ios && !device.is_android){
                  alert("请在ios/android设备上使用！");
                  return;
              }
             device.is_ios && device.addEvent("loginStatus",JSON.stringify(option));
              device.is_android && GetInfoJs.loginStatus(JSON.stringify(option));
          },


          checkRecordVoicePermission : function (fn) {
              if(!device.is_ios && !device.is_android){
                  alert("请在ios/android设备上使用！");
                  return;
              }
    //             device.is_ios && device.addEvent("getBackFun",JSON.stringify(option));
              device.is_android && GetInfoJs.checkRecordVoicePermission(fn);
          },
          openMenu : function (fn) {
              if(!device.is_ios && !device.is_android){
                  alert("请在ios/android设备上使用！");
                  return;
              }
    //             device.is_ios && device.addEvent("getBackFun",JSON.stringify(option));
              device.is_android && GetInfoJs.gotoCommonlyUsedMenu(fn);
          },

        /**
         *    @brief 分享
         */
        handCodeShare : function (param,fn) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            var option = {};
            option.fn = fn;
            option.param = param;
            device.is_ios && device.addEvent("41",JSON.stringify(param));
            device.is_android && GetInfoJs.showShare(JSON.stringify(option));
        },
      /**
         *    @brief 拍照、相册
         */
        handCodeGetPhotos : function (fn) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            var option = {};
            option.fn = fn;
            device.is_ios && device.addEvent("41",JSON.stringify(param));
            device.is_android && GetInfoJs.takePhotos(JSON.stringify(option));
        },

        /**
         *    @brief 拍照
         */
        openCamera : function (fn) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            var option = {};
            option.fn = fn;
//            device.is_ios && device.addEvent("41",JSON.stringify(param));
            device.is_android && GetInfoJs.openCamera(JSON.stringify(option));
        },

        /**
         *    @brief 相册
         */
        photoAlbum : function (fn) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            var option = {};
            option.fn = fn;
//            device.is_ios && device.addEvent("41",JSON.stringify(param));
            device.is_android && GetInfoJs.photoAlbum(JSON.stringify(option));
        },


        /**
           *    @brief 复制到粘贴板
           */
        pasteStringToSystem : function (fn) {
        if(!device.is_ios && !device.is_android){
            alert("请在ios/android设备上使用！");
            return;
        }

        device.is_ios && device.addEvent("pasteStringToSystem",fn);
        device.is_android && GetInfoJs.pasteStringToSystem(fn);
        },

        queryAppFamily : function (fn) {
        if(!device.is_ios && !device.is_android){
            alert("请在ios/android设备上使用！");
            return;
        }
        //TODO ios粘贴方法

        device.is_android && GetInfoJs.queryAppFamily(fn);
        },

        getHeaderImg : function (fn) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            //TODO ios粘贴方法

            device.is_android && GetInfoJs.getHeaderImg(fn);
        },

        getSystemVersion : function (fn) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            device.is_ios && device.addEvent("getEquipmentInfo",fn);
            device.is_android && GetInfoJs.getSystemVersion(fn);
        },

        /**
         *    @brief 跳转VUE
         */
        goVUEPage : function (param,fn) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            var option = {};
            option.fn = fn;
            option.param = param;
            device.is_ios && device.addEvent("goToAresPage",JSON.stringify(param));
            device.is_android && GetInfoJs.showShare(JSON.stringify(option));
        },
        /**
         甘肃宁波观影
         */
        checkDiscountLevel : function (fn) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            var option = {};
            option.fn = "callbackCheckDiscountLevel";
            option.shopid = "1100529310001000001";
            option.sign = "bd91222d6fcff0de67dd28583926ae92"
            device.is_ios && device.addEvent("checkDiscountLevel",JSON.stringify(option));
            device.is_android && GetInfoJs.checkDiscountLevel(fn);
        },
        /**
         宁波活动
         */
        checkBFMLevel : function (fn) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            var option = {};
            option.fn = "callbackCheckBFMLevel";
            option.shopid = "1100529310001000009";
            device.is_ios && device.addEvent("checkBFMLevel",JSON.stringify(option));
            device.is_android && GetInfoJs.checkBFMLevel(option);
        },
        uploadThirdCertifyEvents : function (param ,fn) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            var option = {};
            option.fn = "callBackUploadThirdCertifyEvents";
            option.param = param;
            device.is_ios && device.addEvent("uploadThirdCertifyEvents",JSON.stringify(param));
            device.is_android && GetInfoJs.uploadThirdCertifyEvents(option);
        },
        checkUserChangeOrNoAndLoginStatus : function (param,fn) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            var option = {};
            option.fn = fn;
            option.param = param;
            device.is_ios && device.addEvent("checkUserChangeOrNoAndLoginStatus",JSON.stringify(param));
            device.is_android && GetInfoJs.checkUserChangeOrNoAndLoginStatus(JSON.stringify(option));
        },
        handCodePay : function (param,fn) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            var option = {};
            option.fn = fn;
            option.param = param;
            device.is_ios && device.addEvent("HandCodePay",JSON.stringify(param));
            device.is_android && GetInfoJs.go2Pay(JSON.stringify(param));
        },
        publicActivityEvents : function (param,fn) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            var option = {};
            option.fn = fn;
            option.param = param;
            device.is_ios && device.addEvent("publicActivityEvents",JSON.stringify(option));
            device.is_android && GetInfoJs.publicActivityEvents(JSON.stringify(option));
        },
        getNewAuthorization : function (param) {
            if(!device.is_ios && !device.is_android){
                alert("请在ios/android设备上使用！");
                return;
            }
            device.is_ios && device.addEvent("getNewAuthorization",JSON.stringify(param));
            device.is_android && GetInfoJs.getNewAuthorization(JSON.stringify(param));
        }
    }
}();
