//
//  Define.swift
//  GeLiLaiGeWan
//
//  Created by geli on 2018/6/22.
//  Copyright © 2018年 geli. All rights reserved.
//

/*
 来个碗Apple开发者账号、密码:
 dev@laigewan.com
 81338860^geLi
 下载链接:
 https://itunes.apple.com/cn/app/id1428195489?mt=8
 */

import UIKit
import SwiftDate //日期处理库
import SwiftyJSON

//版本号
let systemVersion = (UIDevice.current.systemVersion as String)

//let UserId = ((UserDefaults.standard.string(forKey: "user_id") != nil) ? (UserDefaults.standard.string(forKey: "user_id")) : "") as! String

//let IsHavUserId = (UserId.count != 0)

//接口地址
//test
let SERVERCE_ImageHost = "http://z.gelifood.com/"
let SERVERCE_HOST = "http://z.gelifood.com/admin/"

//online
//let SERVERCE_ImageHost = "https://api.laigewan.com/upload/images/"
//let SERVERCE_HOST = "http://a.gelifood.com/apia"
//视图常量
let IS_IPHONE_X = __CGSizeEqualToSize(CGSize(width: 375.0, height: 812.0),UIScreen.main.bounds.size ) || __CGSizeEqualToSize(CGSize(width: 812.0, height: 375.0),UIScreen.main.bounds.size)||__CGSizeEqualToSize(CGSize(width: 414.0, height: 896.0),UIScreen.main.bounds.size ) || __CGSizeEqualToSize(CGSize(width: 896.0, height: 414.0),UIScreen.main.bounds.size)

let glscale = UIScreen.main.bounds.size.width/375

let fullScreenWidth = UIScreen.main.bounds.width //屏幕高度

let fullScreenHeight = UIScreen.main.bounds.height //屏幕宽度

let NavHeight = (IS_IPHONE_X ? 88 : 64)

let TabHeight = (IS_IPHONE_X ? 83 : 49)

let NavCGRect = CGRect(x: 0, y: 0, width: Int(UIScreen.main.bounds.size.width), height: NavHeight)

let LoopHeight =  UIScreen.main.bounds.size.width / 1.25

func SetTopFrameView(view:UIView,btmView:UIView){
    view.snp.makeConstraints { (make) in
        make.top.equalTo(NavCGRect.height)
        make.right.left.equalTo(0)
        make.bottom.equalTo(btmView.snp_top)
    }
}
func SetTopFrame(view:UIView,height:CGFloat){
    view.snp.makeConstraints { (make) in
        make.top.equalTo(NavCGRect.height)
        make.right.left.equalTo(0)
        make.height.equalTo(height)
    }
}
func IsOldIos() ->Bool{
    if #available(iOS 11.0, *){
        return false
    }else{
        return true
    }
}

func x(object: UIView) ->CGFloat {
    
    return object.frame.origin.x
}

func y(object: UIView) -> CGFloat {
    return object.frame.origin.y
}

func width(object: UIView) -> CGFloat {
    return object.frame.size.width
}

func height(object: UIView) -> CGFloat {
    return object.frame.size.height
}

func centerX(object: UIView) -> CGFloat {
    return object.center.x
}

func centerY(object: UIView) -> CGFloat {
    return object.center.y
}

func setFont(_ size:CGFloat) -> UIFont{
    return UIFont.boldSystemFont(ofSize: size)
}

func setColor(red:CGFloat,green:CGFloat,blue:CGFloat)->UIColor{
    
    return UIColor(red: red/255, green: green/255, blue: blue/255, alpha: 1)
}

func isPurnFloat(string: String) -> Bool {
    
    let scan: Scanner = Scanner(string: string)
    
    var val:Float = 0
    
    return scan.scanFloat(&val) && scan.isAtEnd
}

func isPurnInt(string: String) -> Bool {
    
    let scan: Scanner = Scanner(string: string)
    
    var val:Int = 0
    
    return scan.scanInt(&val) && scan.isAtEnd
    
}
//MARK:--是否是正确的数值
func isPurnNumber(str:String)-> Bool{
    if isPurnInt(string: str) || isPurnFloat(string: str){
        return true
    }else{
        return false
    }
}
//RGB
func RGB(r:CGFloat,g:CGFloat,b:CGFloat)->UIColor{
    return UIColor(red: r/255.0, green: g/255.0, blue: b/255.0, alpha: 1)
}
//MARK:--是否手机号码
func isTelNumber(num:NSString)->Bool
{
    var mobile = "^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$"
    var  CM = "^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$"
    var  CU = "^1(3[0-2]|5[256]|8[56])\\d{8}$"
    var  CT = "^1((33|53|8[09])[0-9]|349)\\d{7}$"
    var regextestmobile = NSPredicate(format: "SELF MATCHES %@",mobile)
    var regextestcm = NSPredicate(format: "SELF MATCHES %@",CM )
    var regextestcu = NSPredicate(format: "SELF MATCHES %@" ,CU)
    var regextestct = NSPredicate(format: "SELF MATCHES %@" ,CT)
    if ((regextestmobile.evaluate(with: num) == true)
        || (regextestcm.evaluate(with: num)  == true)
        || (regextestct.evaluate(with: num) == true)
        || (regextestcu.evaluate(with: num) == true))
    {
        return true
    }
    else
    {
        return false
    }
}

func stringToTimeStamp(stringTime:Int)->String {
    
    let interval = TimeInterval(stringTime)
    
    let date = NSDate(timeIntervalSince1970: interval)
    
    // 格式化输出
    let dateFormatter = DateFormatter()
    
    dateFormatter.dateFormat = " yyyy-MM-dd  HH:mm:ss"
    
    let nowDate = dateFormatter.string(from: date as Date)
    return nowDate
}
//MARK:--是否是邮箱
func isMailBox(mail_ad:String) -> Bool {
    
    let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
    
    let emailTest = NSPredicate.init(format: "SELF MATCHES %@", emailRegex)
    
    return emailTest.evaluate(with: mail_ad)
    
}
extension UIViewController {
    class func currentViewController(base: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? {
        if let nav = base as? UINavigationController {
            return currentViewController(base: nav.visibleViewController)
        }
        if let tab = base as? UITabBarController {
            return currentViewController(base: tab.selectedViewController)
        }
        if let presented = base?.presentedViewController {
            return currentViewController(base: presented)
        }
        return base
    }
}
//MARK:--根据开始位置和长度截取字符串
extension String {
    func subString(start:Int, length:Int = -1) -> String {
        var len = length
        if len == -1 {
            len = self.count - start
        }
        let st = self.index(startIndex, offsetBy:start)
        let en = self.index(st, offsetBy:len)
        return String(self[st ..< en])
    }
}
//MARK:--根据整数返回字符串
func StringByInt(number:Int) -> String {
    let num = NSNumber(value: number)
    let str = NumberFormatter.localizedString(from: num, number: .none)
    return str
}
//MARK: 创建一个日期格式器
func TimeByDouble (sender : Double ) -> String {
    let timeInterval:TimeInterval = TimeInterval(sender)
    let data : Date = Date(timeIntervalSince1970: timeInterval)
    let dformatter = DateFormatter()
    dformatter.dateFormat = "yyyy.MM.dd HH:mm:ss"
    return dformatter.string(from: data)
}
func dayByDouble (sender : Double ) -> String {
    let timeInterval:TimeInterval = TimeInterval(sender)
    let data : Date = Date(timeIntervalSince1970: timeInterval)
    let dformatter = DateFormatter()
    dformatter.dateFormat = "yyyy.MM.dd"
    return dformatter.string(from: data)
}

//MARK:--数组转字符串
func dataChangeString(sender:Array<Any>) -> String{
    var str = ""
    do {
        let json = JSON(sender)
        let data = try! JSONEncoder().encode(json)
        str = String(data: data, encoding: .utf8)!
        
    }catch {
        str = ""
    }
    
    return str
}
//MARK:--字符串转字典
func getDictionaryFromJSONString(jsonString:String) ->NSDictionary{
       
       let jsonData:Data = jsonString.data(using: .utf8)!
       
       let dict = try? JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers)
       if dict != nil {
           return dict as! NSDictionary
       }
       return NSDictionary()
   }
//MARK:--字典转字符串
func dictChangeString(sender:Dictionary<String, String>) -> String{
    var str = ""
    do {
        let json = JSON(sender)
        let data = try! JSONEncoder().encode(json)
        str = String(data: data, encoding: .utf8)!
        
    }catch {
        str = ""
    }
    
    return str
}