//
//  UITextField.swift


import Foundation
import UIKit
private var __maxLengths = [UITextField: Int]()
public extension UITextField
{
    
    
    func  setIconLeft(_ imageName:String,_ isPadding:Bool) -> Void {
        var width = 60
        if isPadding {
            width = 30
        }
        
        let view = UIView(frame: CGRect(x: 0, y: 0, width: width, height: Int(self.frame.height)))
        let paddingView = UIButton(frame: CGRect(x: 0, y: 0, width: width, height: Int(self.frame.height)))
        //paddingView.image = UIImage(named: imageName)
        paddingView.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 13);
        if !isPadding {
            paddingView.setImage(UIImage(named: imageName), for: .normal)
            paddingView.addRightBorderWithColor(color: UIColor.hexStringToUIColor(hex: "#E7E7E7"), width: 1)
        }
        view.addSubview(paddingView)
        self.leftView = view
        //self.leftView = paddingView
        self.leftViewMode = UITextField.ViewMode.always
        
        //self.textContentType = .init(rawValue: "")
        
    }
    func  setRightIcon(_ imageName:String,_ isPadding:Bool, _ y:Int? = 20){
            var width = 40
            if isPadding {
                width = 20
            }
            
            let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: width, height: Int(self.frame.height)))
            //paddingView.image = UIImage(named: imageName)
            //paddingView.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 20);
        let button = UIButton(frame: CGRect(x: 0, y: y ?? 20, width: width, height: 30))
            button.setImage(UIImage(named: imageName), for: .normal)
//          button.backgroundColor = .green
            paddingView.addSubview(button)
//          paddingView.backgroundColor = .red
            
            self.rightView = paddingView
            self.rightViewMode = UITextField.ViewMode.always
            
            
    //        if imageName == "ic_eye_closed" {
    //            button.imageView?.tintColor = MIColor.GREEN_COLOR
    //        }
        }
    func  setIconLeftSelectColor(_ imageName:String,_ isPadding:Bool) -> Void {
        
        if let view = self.leftView{
            if let paddingView = view.subviews.first as? UIButton{
                
                paddingView.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 13);
                if !isPadding {
                    paddingView.setImage(paddingView.imageView?.image?.withRenderingMode(.alwaysTemplate), for: .normal)
                    
//                    if CommonShared.getUserType() == .individual{
//                        paddingView.tintColor = MIColor.BLUE_COLOR.withAlphaComponent(1.0)
//                        paddingView.addRightBorderWithColor(color: MIColor.BLUE_COLOR, width: 1)
//                    }
//                    else{
//                        paddingView.tintColor = MIColor.GREEN_COLOR.withAlphaComponent(1.0)
//                        paddingView.addRightBorderWithColor(color: MIColor.GREEN_COLOR, width: 1)
//                    }
                }
                
                self.leftView = view
                self.leftViewMode = UITextField.ViewMode.always
            }
        
        }
    
    }
    
    func  setIconLeftNormMIColor(_ imageName:String,_ isPadding:Bool) -> Void {
        
        if let view = self.leftView{
            
            if let paddingView = view.subviews.first as? UIButton{
                paddingView.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 13);
                if !isPadding {
                    paddingView.setImage(paddingView.imageView?.image?.withRenderingMode(.alwaysTemplate), for: .normal)
                    paddingView.tintColor = UIColor.hexStringToUIColor(hex: "#E7E7E7").withAlphaComponent(1.0)
                    paddingView.addRightBorderWithColor(color: UIColor.hexStringToUIColor(hex: "#E7E7E7"), width: 1)
                }
                self.leftView = view
                self.leftViewMode = UITextField.ViewMode.always
                
            }
        }
    }
    
    func  setSearchIconLeft(_ imageName:String,_ isPadding:Bool,isRoundBorderWithColor:Bool = false) -> UIButton {
        var width = isRoundBorderWithColor ? 70 : 50
        if isPadding {
            width = 20
        }
        let view = UIView(frame: CGRect(x: 0, y: 5, width: width, height: Int(self.frame.height)))
        let paddingView = UIButton(frame: CGRect(x: 10, y: 5, width: Int(self.frame.height - 10), height: Int(self.frame.height - 10)))
        paddingView.backgroundColor = UIColor.clear
        if isRoundBorderWithColor {
            paddingView.backgroundColor = UIColor.hexStringToUIColor(hex: "#48A8AB")
            paddingView.layer.cornerRadius = (self.frame.height - 10)/2
        }
        
        //paddingView.image = UIImage(named: imageName)
        //paddingView.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 20);
        paddingView.setImage(UIImage(named: imageName), for: .normal)
        view.addSubview(paddingView)
        self.leftView = view
        self.leftViewMode = UITextField.ViewMode.always
        
        return paddingView
    }
    
    func  setSearchIconRight(_ imageName:String,_ isPadding:Bool) -> UIButton {
        var width = 40
        if isPadding {
            width = 20
        }
        
        let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: width, height: Int(self.frame.height)))
        //paddingView.image = UIImage(named: imageName)
        //paddingView.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 20);
        let button = UIButton(frame: CGRect(x: 0, y: 0, width: width, height: Int(self.frame.height)))
        button.setImage(UIImage(named: imageName), for: .normal)
        
        paddingView.addSubview(button)
        
        self.rightView = paddingView
        self.rightViewMode = UITextField.ViewMode.always
        
        
//        if imageName == "ic_eye_closed" {
//            button.imageView?.tintColor = MIColor.GREEN_COLOR
//        }
        
        
        return button
        
    }
    
    
    
    
    func setSearchPlaceholder(strPlaceHolder:String){
        
        self.attributedPlaceholder = NSAttributedString(string: strPlaceHolder,
                                                        attributes:[NSAttributedString.Key.foregroundColor: UIColor.hexStringToUIColor(hex: "#8D9896")])
        
    }
    
    func addDoneButtonToKeyboard(_ toView: UIView) {
        
        let keyboardToolbar = UIToolbar()
        keyboardToolbar.sizeToFit()
        let flexBarButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace,
                                            target: nil, action: nil)
        let doneBarButton = UIBarButtonItem(barButtonSystemItem: .done,
                                            target: toView, action: #selector(UIView.endEditing(_:)))
        keyboardToolbar.items = [flexBarButton, doneBarButton]
        self.inputAccessoryView = keyboardToolbar
    }
    
    @IBInspectable var maxLength: Int {
        get {
            guard let l = __maxLengths[self] else {
                return 150 // (global default-limit. or just, Int.max)
            }
            return l
        }
        set {
            __maxLengths[self] = newValue
            addTarget(self, action: #selector(fix), for: .editingChanged)
        }
    }
    @objc func fix(textField: UITextField) {
        let t = textField.text
        textField.text = t?.safelyLimitedTo(length: maxLength)
    }
    
    func setBorder() -> Void {
        
        self.layer.borderWidth = 1
        self.layer.borderColor = UIColor.hexStringToUIColor(hex: "#EFEFEF").cgColor
        self.layer.cornerRadius = 5.0
        //self.setIconLeft("", true)
    }
    func underline(color:UIColor) {
        self.layoutIfNeeded()
        self.borderStyle = .none
        self.layer.backgroundColor = UIColor.white.cgColor
        self.layer.masksToBounds = false
        self.layer.shadowColor = color.cgColor
        self.layer.shadowOffset = CGSize(width: 0.0, height: 1.0)
        self.layer.shadowOpacity = 1.0
        self.layer.shadowRadius = 0.0
    }
    
    //set cornerRadius
    func cornerRadius(){
        self.layoutIfNeeded()
        self.layer.cornerRadius = self.frame.height / 2
        self.clipsToBounds = true
    }
    func blank() -> Bool{
        let strTrimmed = self.text!.trim()//get trimmed string
        if(strTrimmed.count == 0)//check textfield is nil or not ,if nil then return false
        {
            return true
        }
        return false
    }
}

public extension UITextView
{
    func addDoneButtonToKeyboard(_ toView: UIView) {
        
        let keyboardToolbar = UIToolbar()
        keyboardToolbar.sizeToFit()
        let flexBarButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace,
                                            target: nil, action: nil)
        let doneBarButton = UIBarButtonItem(barButtonSystemItem: .done,
                                            target: toView, action: #selector(UIView.endEditing(_:)))
        keyboardToolbar.items = [flexBarButton, doneBarButton]
        self.inputAccessoryView = keyboardToolbar
        
    }
    
}


extension UITextView {
    
    var currentWord : String? {

     let beginning = beginningOfDocument

     if let start = position(from: beginning, offset: selectedRange.location),
         let end = position(from: start, offset: selectedRange.length) {

        let textRange = tokenizer.rangeEnclosingPosition(end, with: .word, inDirection: UITextDirection(rawValue: 1))

         if let textRange = textRange {
             return text(in: textRange)
         }
     }
     return nil
    }
    
}

