//
//  GMDatePicker.m
//  ZhengXing
//
//  Created by Sean Lee on 11/19/14.
//  Copyright (c) 2014 Wanmei Creative. All rights reserved.
//

#import "GMDatePickerView.h"
#import "GMFont.h"
#import <Masonry/Masonry.h>
#import <Constant.h>
#import <UIColor+GMTheme.h>

#define DATAPICKER_HEIGHT

@interface GMDatePickerView ()

@property (nonatomic,strong)UIButton * leftButton;
@property (nonatomic,strong)UILabel  * titleLabel;
@property (nonatomic,strong)UIButton * rightButton;

@end


@implementation GMDatePickerView

- (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        self.backgroundColor = [UIColor colorWithWhite:0 alpha:.6];
        self.hidden = YES;
        [self createDatePicker];
        
    }
    return self;
}

- (void)createDatePicker{
    
    _contentView = [[UIView alloc]initWithFrame:CGRectZero];
    _contentView.frame = CGRectMake(0, [[UIScreen mainScreen] bounds].size.width, self.frame.size.width, 255);
    _contentView.backgroundColor = UIColor.whiteColor;
    [self addSubview:_contentView];
    
    _picker = [[UIDatePicker alloc]initWithFrame:CGRectMake(0, 39, [[UIScreen mainScreen] bounds].size.width, 216)];
    _picker.backgroundColor = UIColor.whiteColor;
    _picker.datePickerMode = UIDatePickerModeDate;
    //2037-12-31 23:59:59的时间戳
    _picker.maximumDate = [NSDate dateWithTimeIntervalSince1970:2145887999];
    [_picker setDate:[NSDate date] animated:NO];
    [_picker addTarget:self action:@selector(didPickerSelected:) forControlEvents:UIControlEventValueChanged];
    [_contentView addSubview:_picker];
    _picker.layer.borderWidth = 1;
    _picker.layer.borderColor = [UIColor separatorLine].CGColor;
    
    
    _leftButton = [UIButton buttonWithType:UIButtonTypeCustom];
    _leftButton.tag = 1;
    _leftButton.hidden = YES;
    [_contentView addSubview:_leftButton];
    [_leftButton mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(_contentView.mas_left).with.offset(16);
        make.top.equalTo(_contentView.mas_top).offset(4);

    }];
    [_leftButton.titleLabel setFont:[UIFont gmFont:16]];
    [_leftButton setTitleColor:[UIColor mainVisual] forState:UIControlStateNormal];
    [_leftButton addTarget:self action:@selector(confirmButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
    
    
    _titleLabel = [[UILabel alloc]init];
    _titleLabel.hidden = YES;
    _titleLabel.font = [UIFont gmFont:17];
    [_titleLabel setTextColor:UIColor.blackColor];
    [_contentView addSubview:_titleLabel];
    [_titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerX.equalTo(_contentView);
        make.top.equalTo(_leftButton.mas_top).with.offset(6);
        
    }];

    
    _rightButton = [UIButton buttonWithType:UIButtonTypeCustom];
    _rightButton.tag = 2;
    [_contentView addSubview:_rightButton];
    [_rightButton mas_makeConstraints:^(MASConstraintMaker *make) {
        make.right.equalTo(_contentView.mas_right).with.offset(-16);
        make.top.equalTo(_contentView.mas_top).offset(4);
    }];
    [_rightButton setTitleColor:[UIColor mainVisual] forState:UIControlStateNormal];
    [_rightButton setTitle:@"确定" forState:UIControlStateNormal];
    [_rightButton.titleLabel setFont:[UIFont gmFont:16]];
    [_rightButton addTarget:self action:@selector(confirmButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
    
    
    
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
    tapGesture.delegate = self;
    [self addGestureRecognizer:tapGesture];
}


- (void)setLeftButtonTitle:(NSString *)leftButtonTitle{
    _leftButtonTitle= leftButtonTitle;
    _leftButton.hidden = NO;
    [_leftButton setTitle:leftButtonTitle forState:UIControlStateNormal];
}

- (void)setTitleLabelTitle:(NSString *)titleLabelTitle{
    _titleLabelTitle = titleLabelTitle;
    _titleLabel.hidden = NO;
    _titleLabel.text = titleLabelTitle;
}

- (void)didPickerSelected:(id)sender{

    if (self.confirmButtonClickBolck) {
        self.confirmButtonClickBolck(_picker.date);
    }
}

- (void)confirmButtonClicked:(id)sender{
    
    UIButton * button = (UIButton *)sender;
    if (button.tag ==1) {
        if (self.confirmButtonClickBolck) {
            self.confirmButtonClickBolck(nil);
        }
    }else if(button.tag == 2){
        if (self.confirmButtonClickBolck) {
            self.confirmButtonClickBolck(_picker.date);
        }
    }
    
    
    [self hide];

}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    if([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]])
    {
        CGPoint touch = [gestureRecognizer locationInView:self];
        if(!CGRectContainsPoint(_contentView.frame, touch))
        {
            return YES;
        }
        return NO;
    }
    return YES;
    
}

- (void)tap:(UITapGestureRecognizer *)recognizer
{
    
    if ([self.delegate respondsToSelector:@selector(openPicker)]) {
        [self.delegate openPicker];
    }
}


-(void)show
{
    [_picker setDate:[NSDate date] animated:NO];
    [UIView animateWithDuration:0.2 delay:0.0f options:UIViewAnimationOptionCurveEaseInOut animations:^{
        self.contentView.frame = CGRectMake(0, MAINSCREEN_HEIGHT - 255, MAINSCREEN_WIDTH, self.contentView.frame.size.height);
    } completion:^(BOOL finished) {
    }];
}

-(void)hide
{
    [UIView animateWithDuration:0.2 delay:0.0f options:UIViewAnimationOptionCurveEaseInOut animations:^{
        self.contentView.frame = CGRectMake(0, MAINSCREEN_HEIGHT, MAINSCREEN_WIDTH, self.contentView.frame.size.height);
        self.backgroundColor = [UIColor colorWithWhite:0 alpha:0];
        
    } completion:^(BOOL finished) {
        
        self.hidden = YES;
        self.backgroundColor = [UIColor colorWithWhite:0 alpha:.3];
    }];
}
@end
