//
//  KMPurchaseCompareDMGWindowController.m
//  PDF Reader Pro Edition
//
//  Created by 王帅 on 2018/5/8.
//

#import "KMPurchaseCompareDMGWindowController.h"
#import <PDF_Reader_Pro-Swift.h>
#import "KMVerificationWindowController.h"
#import "VerificationManager.h"

static NSString *const KMPurchaseCompareDMGHeaderCellIdentifier = @"KMPurchaseCompareDMGHeaderCell";
static NSString *const KMPurchaseCompareDMGCellIdentifier       = @"KMPurchaseCompareDMGCell";

#pragma mark - KMPurchaseCompareDMGHeaderCell

@interface KMPurchaseCompareDMGHeaderCell : NSTableCellView

@property (nonatomic,assign) IBOutlet NSView *contentView;

@end

@implementation KMPurchaseCompareDMGHeaderCell

- (void)dealloc {
    [NSDistributedNotificationCenter.defaultCenter removeObserver:self];
}

- (void)awakeFromNib {
    [super awakeFromNib];
    
    self.contentView.wantsLayer = YES;

    [self updateViewColor];

    [NSDistributedNotificationCenter.defaultCenter addObserver:self selector:@selector(themeChanged:) name:@"AppleInterfaceThemeChangedNotification" object: nil];
}

- (void)themeChanged:(NSNotification *)notification {
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self updateViewColor];
    });
}

- (void)updateViewColor {
    NSColor *textColor = [NSColor colorWithDeviceRed:51.0/255.0 green:51.0/255.0 blue:51.0/255.0 alpha:1.0];
    NSColor *viewColor = [NSColor colorWithDeviceRed:55.0/255.0 green:57.0/255.0 blue:59.0/255.0 alpha:0.06];
    
    if (@available(macOS 10.14, *)) {
        NSAppearanceName appearanceName = [[NSApp effectiveAppearance] bestMatchFromAppearancesWithNames:@[NSAppearanceNameAqua, NSAppearanceNameDarkAqua]];
        if ([appearanceName isEqualToString:NSAppearanceNameDarkAqua]) {
            textColor = [NSColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:0.87];
            viewColor = [NSColor colorWithRed:52.0/255.0 green:53.0/255.0 blue:56.0/255.0 alpha:1.0];
        }
    }
    
    self.contentView.layer.backgroundColor = viewColor.CGColor;
    self.textField.textColor = textColor;
    self.textField.font = [NSFont boldSystemFontOfSize:14.0];
}

@end

#pragma mark - KMPurchaseCompareDMGCell

@interface KMPurchaseCompareDMGCell : NSTableCellView

@property (nonatomic,assign) IBOutlet NSTextField *value1Label;
@property (nonatomic,assign) IBOutlet NSTextField *value2Label;
@property (nonatomic,assign) IBOutlet NSImageView *value1ImageView;
@property (nonatomic,assign) IBOutlet NSImageView *value2ImageView;

@property (nonatomic,assign) IBOutlet NSBox *lineBox;

@end

@implementation KMPurchaseCompareDMGCell

- (void)dealloc {
    [NSDistributedNotificationCenter.defaultCenter removeObserver:self];
}

- (void)awakeFromNib {
    [super awakeFromNib];
    [self updateViewColor];
    [NSDistributedNotificationCenter.defaultCenter addObserver:self selector:@selector(themeChanged:) name:@"AppleInterfaceThemeChangedNotification" object: nil];
}

- (void)themeChanged:(NSNotification *)notification {
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self updateViewColor];
    });
}

- (void)updateViewColor {
    NSColor *textColor = [NSColor colorWithRed:102.0/255.0 green:102.0/255.0 blue:102.0/255.0 alpha:0.85];
    NSColor *lineColor = [NSColor colorWithRed:204.0/255.0 green:204.0/255.0 blue:204.0/255.0 alpha:0.4];
    
    if (@available(macOS 10.14, *)) {
        NSAppearanceName appearanceName = [[NSApp effectiveAppearance] bestMatchFromAppearancesWithNames:@[NSAppearanceNameAqua, NSAppearanceNameDarkAqua]];
        if ([appearanceName isEqualToString:NSAppearanceNameDarkAqua]) {
            textColor = [NSColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:0.6];
            lineColor = [NSColor colorWithRed:0.0/255.0 green:0.0/255.0 blue:0.0/255.0 alpha:0.4];
        }
    }
    self.value1Label.textColor = self.value2Label.textColor =  textColor;
    self.lineBox.fillColor = lineColor;
    self.textField.textColor = textColor;
}

@end

#pragma mark - KMPurchaseCompareDMGWindowController

@interface KMPurchaseCompareDMGWindowController ()

@property (nonatomic, assign) IBOutlet NSTextField *titleLabel;
@property (assign) IBOutlet HyperLinkButton *enterLicenseButton;

@property (assign) IBOutlet NSView *freeContendView;

@property (assign) IBOutlet NSView *freeVersionBGView;
@property (assign) IBOutlet NSTextField *freeVersionLbl;
@property (assign) IBOutlet NSView *freeVersionLineView;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl1;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl2;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl3;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl4;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl5;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl6;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl7;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl8;
@property (assign) IBOutlet NSTextField *freeVersionInfoLbl9;

@property (weak) IBOutlet NSTextField *freeVersionInfoLbl10;

@property (assign) IBOutlet NSView *parmanentVerBGView;
@property (assign) IBOutlet NSTextField *parmanentVerLbl;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl1;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl2;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl3;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl4;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl5;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl6;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl7;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl8;
@property (assign) IBOutlet NSTextField *parmanentVerInfoLbl9;
@property (weak) IBOutlet NSImageView *parmanentVerInfoImage1;

@property (weak) IBOutlet NSTextField *parmanentVerInfoLbl10;

@property (assign) IBOutlet KMButton *parmanentVerInfoBtn2;
@property (assign) IBOutlet NSImageView *parmanentVerinfoimg2;
@property (assign) IBOutlet NSView *parmanentInfoView;

@property (assign) IBOutlet NSImageView *discountTipImage;

@property (assign) IBOutlet NSTextField *oneTimeTipLbl;

@property (assign) IBOutlet NSBox *freeTrialBox;
@property (assign) IBOutlet KMButton *freeTrialButton;

@property (assign) IBOutlet NSBox *buyNowBox;
@property (assign) IBOutlet KMButton *buyNowButton;

@property (assign) IBOutlet NSView *aiContendView;
@property (assign) IBOutlet NSView *aiSepLineView;
@property (assign) IBOutlet NSTextField *aiTitleLabel;
@property (assign) IBOutlet NSTextField *aiInfoLbl1;
@property (assign) IBOutlet NSTextField *aiInfoLbl2;
@property (assign) IBOutlet NSTextField *aiInfoLbl3;
@property (assign) IBOutlet NSTextField *aiInfoLbl4;
@property (assign) IBOutlet NSTextField *aiPurchaseLabel;
@property (assign) IBOutlet KMButton *aiPurchaseButton;

@property (weak) IBOutlet NSTextField *premiumLabel;
@property (weak) IBOutlet NSTextField *permanentLabel;
@property (weak) IBOutlet NSSwitch *buySwitch;
@property (weak) IBOutlet NSTextField *discountPriceLabel;
@property (weak) IBOutlet NSTextField *originalPriceLabel;
@property (weak) IBOutlet NSTextField *discountPriceLabel2;

@property (nonatomic, assign) NSModalSession modalSession;
@property (nonatomic, retain) NSArray *dataSource;
@property (nonatomic, retain) NSPopover *popOver;

- (NSString *)_buyNowEventToPaidEventName;
- (NSDictionary *)_getPaidEventParamsWith:(NSString *)eventN;

@end

@implementation KMPurchaseCompareDMGWindowController

#pragma mark Init Methods

- (id)init {
    if (self = [super initWithWindowNibName:@"KMPurchaseCompareDMGWindowController"]) {

    }
    return self;
}

- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    [NSDistributedNotificationCenter.defaultCenter removeObserver:self];
    
}

- (void)windowDidLoad {
    [super windowDidLoad];
    
    self.window.movableByWindowBackground = YES;
    self.window.backgroundColor = [NSColor whiteColor];
    
    __block typeof(self) blockSelf = self;
    
    [self.freeVersionInfoLbl2 setEnabled:YES];
    
    self.freeVersionLineView.wantsLayer = YES;
    
    self.premiumLabel.stringValue = NSLocalizedString(@"Premium", nil);
    self.premiumLabel.textColor = [NSColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:0.7];
    self.premiumLabel.font = [NSFont SFProTextRegularFont:14.0];
    self.permanentLabel.stringValue = NSLocalizedString(@"Permanent", nil);
    self.permanentLabel.textColor = [NSColor colorWithRed:255.0/255.0 green:94.0/255.0 blue:44.0/255.0 alpha:1.0];
    self.permanentLabel.font = [NSFont SFProTextRegularFont:14.0];

    self.discountPriceLabel.textColor = [NSColor colorWithRed:255.0/255.0 green:231.0/255.0 blue:106.0/255.0 alpha:1.0];
    self.discountPriceLabel.font = [NSFont fontWithName:@"Ubuntu" size:36.0];
    self.originalPriceLabel.textColor = [NSColor whiteColor];
    self.originalPriceLabel.font = [NSFont fontWithName:@"Ubuntu" size:14.0];
    self.discountPriceLabel2.textColor = [NSColor colorWithRed:255.0/255.0 green:231.0/255.0 blue:106.0/255.0 alpha:1.0];
    self.discountPriceLabel2.font = [NSFont fontWithName:@"Ubuntu" size:36.0];
    [self.discountPriceLabel2 setHidden:YES];

    self.freeVersionLbl.stringValue = NSLocalizedString(@"Free Version", nil);
    self.parmanentVerLbl.stringValue = NSLocalizedString(@"Permanent License", nil);
    
    self.freeVersionInfoLbl1.stringValue =  self.parmanentVerInfoLbl1.stringValue = NSLocalizedString(@"View PDFs", nil);
    self.freeVersionInfoLbl2.stringValue = NSLocalizedString(@"Annotate PDFs (basic)", nil);
    self.parmanentVerInfoLbl2.stringValue = NSLocalizedString(@"Annotate PDFs (advanced)", nil);
    self.freeVersionInfoLbl3.stringValue = self.parmanentVerInfoLbl3.stringValue = NSLocalizedString(@"Unlimited file conversion", nil);
    self.freeVersionInfoLbl4.stringValue = self.parmanentVerInfoLbl4.stringValue = NSLocalizedString(@"Edit PDF text and images", nil);
    self.freeVersionInfoLbl5.stringValue = self.parmanentVerInfoLbl5.stringValue = NSLocalizedString(@"Digital signature", nil);
    self.freeVersionInfoLbl6.stringValue = self.parmanentVerInfoLbl6.stringValue = NSLocalizedString(@"Organize pages", nil);
    self.freeVersionInfoLbl7.stringValue = self.parmanentVerInfoLbl7.stringValue = NSLocalizedString(@"Batch process", nil);
    self.freeVersionInfoLbl8.stringValue = self.parmanentVerInfoLbl8.stringValue = NSLocalizedString(@"OCR PDFs", nil);
    self.freeVersionInfoLbl9.stringValue = self.parmanentVerInfoLbl9.stringValue = NSLocalizedString(@"Measuring Tools", nil);
    self.freeVersionInfoLbl10.stringValue = self.parmanentVerInfoLbl10.stringValue = NSLocalizedString(@"Ad-free", nil);
    [self refreshParmanentVerInfo];

//    self.parmanentVerinfoimg2.toolTip = NSLocalizedString(@"Support insert links and custom stamps", nil);
    self.parmanentVerInfoBtn2.mouseMoveCallback = ^(BOOL mouseEntered) {
        if (mouseEntered) {
            KMToolbarItemPopViewController *popViewController = [[KMToolbarItemPopViewController alloc] init];
            self.popOver = [[NSPopover alloc] init];
            self.popOver.contentViewController = popViewController;
            self.popOver.animates = NO;
            self.popOver.behavior = NSPopoverBehaviorSemitransient;
            
            self.popOver.contentSize = popViewController.view.frame.size;
            [popViewController updateWithHelpTipWithHelpTip:NSLocalizedString(@"Support insert links and custom stamps", nil)];
            [self.popOver showRelativeToRect:self.parmanentVerInfoBtn2.frame ofView:self.parmanentInfoView preferredEdge:NSRectEdgeMaxY];
//            self.parmanentVerinfoimg2.image = [NSImage imageNamed:@"ic_Tooltip_hover"];
        } else {
            [self.popOver close];
//            self.parmanentVerinfoimg2.image = [NSImage imageNamed:@"ic_Tooltip"];
        }
    };
    
    
    
    self.oneTimeTipLbl.stringValue = NSLocalizedString(@"one-time purchase", nil);
    self.enterLicenseButton.title = NSLocalizedString(@"Enter License", nil);
    [self.enterLicenseButton setTitleColor:[KMAppearance KMColor_Layout_W0]];
    self.enterLicenseButton.mouseMoveCallback = ^(BOOL mouseEntered) {
        if (mouseEntered) {
            [blockSelf.enterLicenseButton setTitleColor:[KMAppearance KMColor_Layout_W70]];
        } else {
            [blockSelf.enterLicenseButton setTitleColor:[KMAppearance KMColor_Layout_W0]];
        }
    };
    
    self.titleLabel.font = [NSFont SFMediumFontWithSize:20];
    self.freeVersionLbl.font = [NSFont UbuntuBoldFontWithSize:24];
    self.parmanentVerLbl.font = [NSFont UbuntuBoldFontWithSize:24];
    self.freeVersionInfoLbl1.font =  self.parmanentVerInfoLbl1.font = [NSFont SFProTextRegularFont:14.];
    self.freeVersionInfoLbl2.font = [NSFont SFProTextRegularFont:14.];
    self.parmanentVerInfoLbl2.font = [NSFont SFProTextRegularFont:14.];
    self.freeVersionInfoLbl3.font = self.parmanentVerInfoLbl3.font = [NSFont SFProTextRegularFont:14.];
    self.freeVersionInfoLbl4.font = self.parmanentVerInfoLbl4.font = [NSFont SFProTextRegularFont:14.];
    self.freeVersionInfoLbl5.font = self.parmanentVerInfoLbl5.font = [NSFont SFProTextRegularFont:14.];
    self.freeVersionInfoLbl6.font = self.parmanentVerInfoLbl6.font = [NSFont SFProTextRegularFont:14.];
    self.freeVersionInfoLbl7.font = self.parmanentVerInfoLbl7.font = [NSFont SFProTextRegularFont:14.];
    self.freeVersionInfoLbl8.font = self.parmanentVerInfoLbl8.font = [NSFont SFProTextRegularFont:14.];
    self.freeVersionInfoLbl9.font = self.parmanentVerInfoLbl9.font = [NSFont SFProTextRegularFont:14.];
    self.freeVersionInfoLbl10.font = self.parmanentVerInfoLbl10.font = [NSFont SFProTextRegularFont:14.];
    self.buyNowButton.font = [NSFont UbuntuMediumFontWithSize:16];
    self.freeTrialButton.font = [NSFont UbuntuMediumFontWithSize:16];
    
    
    self.freeContendView.wantsLayer = YES;
    self.freeContendView.layer.cornerRadius = 12;
    self.freeContendView.layer.masksToBounds = YES;
    
    self.parmanentVerBGView.wantsLayer = YES;
    self.parmanentVerBGView.layer.cornerRadius = 12;
    self.parmanentVerBGView.layer.masksToBounds = YES;
    
    self.buyNowBox.wantsLayer = YES;
    self.buyNowBox.fillColor = [NSColor colorWithRed:255/255. green:94/255. blue:44/255. alpha:1.];
    self.buyNowBox.cornerRadius = CGRectGetHeight(self.buyNowBox.frame)/2.;
    self.buyNowBox.layer.masksToBounds = YES;
    
    self.buyNowButton.wantsLayer = YES;
    self.buyNowButton.layer.cornerRadius = 1.0;
    self.buyNowButton.title = NSLocalizedString(@"Buy Now", nil);
    self.buyNowButton.mouseMoveCallback = ^(BOOL mouseEntered) {
        if (mouseEntered) {
            blockSelf.buyNowButton.layer.backgroundColor = [[NSColor blackColor] colorWithAlphaComponent:0.15].CGColor;
        } else {
            blockSelf.buyNowButton.layer.backgroundColor = [NSColor clearColor].CGColor;
        }
    };
    
    self.freeTrialBox.cornerRadius = CGRectGetHeight(self.freeTrialBox.frame)/2.;
    self.freeTrialBox.borderWidth = 1.;
    
    self.freeTrialButton.target = self;
    self.freeTrialButton.action = @selector(buttonItemClicked_License:);
    self.freeTrialButton.mouseMoveCallback = ^(BOOL mouseEntered) {
        if ([KMAppearance isDarkMode]) {
            if (mouseEntered) {
                blockSelf.freeTrialBox.fillColor = [NSColor colorWithRed:179/255. green:159/255. blue:1 alpha:0.2];
            } else {
                blockSelf.freeTrialBox.fillColor = [NSColor colorWithRed:179/255. green:159/255. blue:1 alpha:0.07];
            }
        } else {
            if (mouseEntered) {
                blockSelf.freeTrialBox.fillColor = [NSColor colorWithRed:85/255. green:40/255. blue:1 alpha:0.15];
            } else {
                blockSelf.freeTrialBox.fillColor = [NSColor colorWithRed:85/255. green:40/255. blue:1 alpha:0.07];
            }
        }
    };
    self.discountTipImage.hidden = YES;
    [self updatePriceLabel];
    
    self.aiSepLineView.wantsLayer = YES;
    self.aiInfoLbl1.font = self.aiInfoLbl2.font = self.aiInfoLbl3.font = self.aiInfoLbl4.font = [NSFont SFProTextRegularFont:14];
    self.aiPurchaseLabel.font = [NSFont UbuntuMediumFontWithSize:16];
    
    self.aiTitleLabel.stringValue = NSLocalizedString(@"AI Tools Title", nil);
    self.aiInfoLbl1.stringValue = NSLocalizedString(@"AI Summarize", nil);
    self.aiInfoLbl2.stringValue = NSLocalizedString(@"AI Rewrite", nil);
    self.aiInfoLbl3.stringValue = NSLocalizedString(@"AI Proofread", nil);
    self.aiInfoLbl4.stringValue = NSLocalizedString(@"AI Translate", nil);
    self.aiPurchaseLabel.stringValue = NSLocalizedString(@"Buy Now", nil);
    self.aiPurchaseButton.wantsLayer = YES;
    self.aiPurchaseButton.layer.cornerRadius = CGRectGetHeight(self.aiPurchaseButton.frame)/2.;
    self.aiPurchaseButton.layer.masksToBounds = YES;
    self.aiPurchaseButton.mouseMoveCallback = ^(BOOL mouseEntered) {
        if (mouseEntered) {
            self.aiPurchaseButton.layer.backgroundColor = [[NSColor whiteColor] colorWithAlphaComponent:0.2].CGColor;
        } else {
            self.aiPurchaseButton.layer.backgroundColor = [NSColor clearColor].CGColor;
        }
    };
    
    [self updateViewColor];
    
    [self updatePurchaseInformation];
    
    [NSDistributedNotificationCenter.defaultCenter addObserver:self selector:@selector(themeChanged:) name:@"AppleInterfaceThemeChangedNotification" object: nil];
    
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(recommondInfoUpdateNoti:) name:@"KMRecommondInfoUpdateNoti" object:nil];
}

#pragma mark - Private Methods
- (void)updateViewColor {
    
    if ([KMAppearance isDarkMode]) {
        self.freeContendView.layer.backgroundColor = [[NSColor blackColor] colorWithAlphaComponent:0.3].CGColor;
        self.freeVersionLineView.layer.backgroundColor = [[NSColor whiteColor] colorWithAlphaComponent:0.1].CGColor;
        self.aiSepLineView.layer.backgroundColor = [[NSColor whiteColor] colorWithAlphaComponent:0.1].CGColor;
        self.freeVersionLbl.textColor = [[NSColor whiteColor] colorWithAlphaComponent:0.5];
        self.freeTrialBox.fillColor = [NSColor colorWithRed:179/255. green:159/255. blue:1 alpha:0.07];
        self.freeTrialBox.borderColor = [NSColor colorWithRed:207/255. green:146/255. blue:1 alpha:1];
        
        self.freeVersionInfoLbl1.textColor = 
        self.freeVersionInfoLbl2.textColor =
        self.freeVersionInfoLbl3.textColor =
        self.freeVersionInfoLbl4.textColor =
        self.freeVersionInfoLbl5.textColor =
        self.freeVersionInfoLbl6.textColor =
        self.freeVersionInfoLbl7.textColor =
        self.freeVersionInfoLbl8.textColor =
        self.freeVersionInfoLbl9.textColor =
        self.freeVersionInfoLbl10.textColor = [NSColor whiteColor];
        
        self.parmanentVerInfoLbl1.textColor = 
        self.parmanentVerInfoLbl2.textColor =
        self.parmanentVerInfoLbl3.textColor =
        self.parmanentVerInfoLbl4.textColor =
        self.parmanentVerInfoLbl5.textColor =
        self.parmanentVerInfoLbl6.textColor =
        self.parmanentVerInfoLbl7.textColor = 
        self.parmanentVerInfoLbl8.textColor =
        self.parmanentVerInfoLbl9.textColor =
        self.parmanentVerInfoLbl10.textColor = [NSColor whiteColor];
        
        self.aiInfoLbl1.textColor = self.aiInfoLbl2.textColor = self.aiInfoLbl3.textColor = self.aiInfoLbl4.textColor = [NSColor whiteColor];
        self.aiPurchaseLabel.textColor = [NSColor whiteColor];
        
        self.aiTitleLabel.textColor = [NSColor colorWithRed:239/255. green:235/255. blue:255/255. alpha:1];
    } else {
        self.freeContendView.layer.backgroundColor = [[NSColor whiteColor] colorWithAlphaComponent:0.7].CGColor;
        self.freeVersionLineView.layer.backgroundColor = [NSColor colorWithRed:0 green:33/255. blue:67/255. alpha:0.1].CGColor;
        self.aiSepLineView.layer.backgroundColor = [NSColor colorWithRed:0 green:33/255. blue:67/255. alpha:0.1].CGColor;
        self.freeVersionLbl.textColor = [NSColor colorWithRed:129/255. green:125/255. blue:178/255. alpha:1.];

        self.freeTrialBox.fillColor = [NSColor colorWithRed:85/255. green:40/255. blue:1 alpha:0.07];
        self.freeTrialBox.borderColor = [NSColor colorWithRed:160/255. green:40/255. blue:1 alpha:1];
        
        self.freeVersionInfoLbl1.textColor = 
        self.freeVersionInfoLbl2.textColor =
        self.freeVersionInfoLbl3.textColor =
        self.freeVersionInfoLbl4.textColor =
        self.freeVersionInfoLbl5.textColor =
        self.freeVersionInfoLbl6.textColor =
        self.freeVersionInfoLbl7.textColor =
        self.freeVersionInfoLbl8.textColor =
        self.freeVersionInfoLbl9.textColor =
        self.freeVersionInfoLbl10.textColor = [NSColor colorWithRed:20/255.0 green:0/255.0 blue:102/255.0 alpha:1];
        
        self.parmanentVerInfoLbl1.textColor = 
        self.parmanentVerInfoLbl2.textColor =
        self.parmanentVerInfoLbl3.textColor =
        self.parmanentVerInfoLbl4.textColor =
        self.parmanentVerInfoLbl5.textColor =
        self.parmanentVerInfoLbl6.textColor =
        self.parmanentVerInfoLbl7.textColor =
        self.parmanentVerInfoLbl8.textColor =
        self.parmanentVerInfoLbl9.textColor =
        self.parmanentVerInfoLbl10.textColor = [NSColor whiteColor];
        
        self.aiInfoLbl1.textColor = self.aiInfoLbl2.textColor = self.aiInfoLbl3.textColor = self.aiInfoLbl4.textColor = [NSColor colorWithRed:20/255. green:0 blue:102/255. alpha:1];
        self.aiPurchaseLabel.textColor = [NSColor whiteColor];
        self.aiTitleLabel.textColor = [NSColor colorWithRed:20/255. green:0 blue:102/255. alpha:1];
    }
    
    self.parmanentVerLbl.textColor = [NSColor colorWithRed:252/255. green:253/255. blue:255/255. alpha:1.];
    self.oneTimeTipLbl.textColor = [NSColor colorWithRed:255/255. green:231/255. blue:106/255. alpha:1.];
    
    if ([KMAppearance isDarkMode]) {
        [self.freeTrialButton setTitleColor:[NSColor colorWithRed:178/255. green:165/255. blue:1 alpha:1]];
    } else {
        [self.freeTrialButton setTitleColor:[NSColor colorWithRed:160/255. green:40/255. blue:1 alpha:1]];
    }
}

- (void)updatePurchaseInformation {
    self.freeTrialBox.hidden = NO;
    self.titleLabel.stringValue = NSLocalizedString(@"Upgrade to Pro Version", nil);
    self.titleLabel.textColor = [NSColor whiteColor];
    
    [self.freeTrialButton setTitle:NSLocalizedString(@"7-day Free Trial", nil)];

    if (ActivityStatusVerification == [VerificationManager manager].status) {
        self.freeTrialBox.hidden = YES;
    } else if (ActivityStatusNone == [VerificationManager manager].status) {
        
    } else if (ActivityStatusTrialExpire == [VerificationManager manager].status) {
        self.freeTrialBox.hidden = YES;
        if ([VerificationManager manager].secondTrialEnabled) {
            self.freeTrialBox.hidden = NO;
        }
    } else {
        self.freeTrialBox.hidden = YES;
    }
    if ([KMAppearance isDarkMode]) {
        [self.freeTrialButton setTitleColor:[NSColor colorWithRed:178/255. green:165/255. blue:1 alpha:1]];
    } else {
        [self.freeTrialButton setTitleColor:[NSColor colorWithRed:160/255. green:40/255. blue:1 alpha:1]];
    }
    [self.buyNowButton setTitleColor:[NSColor whiteColor]];
    
    [self updatePriceLabel];
}

- (void)updatePriceLabel {
    NSString *originalText = @"";
    NSString *discountText = @"";
#if VERSION_DMG
    NSString *abbreviation = @"$";
    if ([@"CNY" isEqualToString:NSLocalizedString(@"USD", nil)])  {
        abbreviation = @"¥";
    }
    if ([self.buySwitch state]) {
        originalText = [NSString stringWithFormat:@"%@%@", abbreviation, [[KMDMGProductsManager shareInstance] getPrice:KMAdvancedAnnualSubscriptionCodeKey_DMG]];
        discountText = [NSString stringWithFormat:@"%@%@", abbreviation, [[KMDMGProductsManager shareInstance] getActivityPrice:KMAdvancedAnnualSubscriptionCodeKey_DMG]];
    } else {
        originalText = [NSString stringWithFormat:@"%@%@", abbreviation, [[KMDMGProductsManager shareInstance] getPrice:KMStandardAnnualSubscriptionCodeKey_DMG]];
        discountText = [NSString stringWithFormat:@"%@%@", abbreviation, [[KMDMGProductsManager shareInstance] getActivityPrice:KMStandardAnnualSubscriptionCodeKey_DMG]];
    }
#endif
    NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithString:originalText];
    [attributedText addAttribute:NSStrikethroughStyleAttributeName
                           value:@(NSUnderlineStyleSingle)
                           range:NSMakeRange(0, originalText.length)];
    self.originalPriceLabel.attributedStringValue = attributedText;
    self.discountPriceLabel.stringValue = discountText;
    self.discountPriceLabel2.stringValue = discountText;

    if (KMAdvertisementManager.manager.info.discountContent.content.count > 0) {
        KMAdvertisementItemInfo *info = KMAdvertisementManager.manager.info.discountContent.content.firstObject;
        if ([KMAdvertisementManager checkAdvertisementValid:info]) {
            self.discountTipImage.hidden = NO;
            
            NSURL *url = [NSURL URLWithString:[KMAdvertisementModelTransition transitionImagePathWithImage:info.image highlight:NO]];
            self.discountTipImage.image = [KMAdvertisementImage imageWithURLWithUrl:url completion:^(NSImage * _Nonnull image) {
                self.discountTipImage.image = image;
            }];
            if ([originalText isEqualToString:discountText]) {
                [self.originalPriceLabel setHidden:YES];
                [self.discountPriceLabel setHidden:YES];
                [self.discountPriceLabel2 setHidden:NO];
                [self.discountTipImage setHidden:YES];
            } else {
                [self.originalPriceLabel setHidden:NO];
                [self.discountPriceLabel setHidden:NO];
                [self.discountPriceLabel2 setHidden:YES];
                [self.discountTipImage setHidden:NO];
            }
        } else {
            self.discountTipImage.hidden = YES;
            if ([originalText isEqualToString:discountText]) {
                [self.originalPriceLabel setHidden:YES];
                [self.discountPriceLabel setHidden:YES];
                [self.discountPriceLabel2 setHidden:NO];
            } else {
                [self.originalPriceLabel setHidden:NO];
                [self.discountPriceLabel setHidden:NO];
                [self.discountPriceLabel2 setHidden:YES];
            }
        }
    }
}

- (void)refreshParmanentVerInfo {
    if ([self.buySwitch state] == NSControlStateValueOn) {
        self.parmanentVerInfoLbl1.stringValue = NSLocalizedString(@"View PDFs", nil);
        self.parmanentVerInfoLbl2.stringValue = NSLocalizedString(@"Annotate PDFs (advanced)", nil);
        self.parmanentVerInfoLbl3.stringValue = NSLocalizedString(@"Unlimited file conversion", nil);
        self.parmanentVerInfoLbl4.stringValue = NSLocalizedString(@"Edit PDF text and images", nil);
        self.parmanentVerInfoLbl5.stringValue = NSLocalizedString(@"Digital signature", nil);
        self.parmanentVerInfoLbl6.stringValue = NSLocalizedString(@"Organize pages", nil);
        self.parmanentVerInfoLbl7.stringValue = NSLocalizedString(@"Batch process", nil);
        self.parmanentVerInfoLbl8.stringValue = NSLocalizedString(@"OCR PDFs", nil);
        self.parmanentVerInfoLbl9.stringValue = NSLocalizedString(@"Measuring Tools", nil);
        self.parmanentVerInfoLbl10.stringValue = NSLocalizedString(@"Ad-free", nil);
        self.parmanentVerInfoImage1.image = [NSImage imageNamed:@"function_vip"];
    } else {
        self.parmanentVerInfoLbl1.stringValue = NSLocalizedString(@"Unlimited file conversion", nil);
        self.parmanentVerInfoLbl2.stringValue = NSLocalizedString(@"Annotate PDFs (advanced)", nil);
        self.parmanentVerInfoLbl3.stringValue = NSLocalizedString(@"View PDFs", nil);
        self.parmanentVerInfoLbl4.stringValue = NSLocalizedString(@"Edit PDF text and images", nil);
        self.parmanentVerInfoLbl5.stringValue = NSLocalizedString(@"Digital signature", nil);
        self.parmanentVerInfoLbl6.stringValue = NSLocalizedString(@"Organize pages", nil);
        self.parmanentVerInfoLbl7.stringValue = NSLocalizedString(@"Batch process", nil);
        self.parmanentVerInfoLbl8.stringValue = NSLocalizedString(@"OCR PDFs", nil);
        self.parmanentVerInfoLbl9.stringValue = NSLocalizedString(@"Measuring Tools", nil);
        self.parmanentVerInfoLbl10.stringValue = NSLocalizedString(@"Ad-free", nil);
        self.parmanentVerInfoImage1.image = [NSImage imageNamed:@"compare_nosupport"];
    }
}

#pragma mark - Window Method
- (void)showWindow:(id)sender {
    [super showWindow:nil];
    
    [self.window center];
    [self.window orderFront:nil];
    
    [self.buySwitch setState:NSControlStateValueOn];
    [self updatePriceLabel];
    [self updatePurchaseInformation];
}

- (BOOL)windowShouldClose:(id)sender {
    [self endModal:sender];
    return YES;
}

- (void)close {
    [super close];
    
    // 清空埋点的数据
    self.kEventName = nil;
    self.kEventTag = 0;
    
    [self endModal:nil];
}

- (void)updateTitle:(NSString *)title andColor:(NSColor *)titleColor {
    self.titleLabel.stringValue = title ?:@"";
    self.titleLabel.textColor = titleColor ?:[NSColor labelColor];
    
}

#pragma mark - IBAction
- (IBAction)startModal:(id)sender {
    
    [NSApp stopModal];
    
    NSInteger modalCode;
    self.modalSession = [NSApp beginModalSessionForWindow:self.window];
    do {
        modalCode = [NSApp runModalSession:self.modalSession];
    } while (modalCode == NSRunContinuesResponse);
}

- (IBAction)endModal:(id)sender {
    if (self.modalSession) {
        [NSApp stopModal];
        [NSApp endModalSession:self.modalSession];
        [self.window orderOut:self];
        
        self.modalSession = nil;
    }
}

- (void)showWindowRestore:(id)sender {
    [self showWindow:sender];
}

- (IBAction)enterLicenseAction:(id)sender {
        [self close];
        KMVerificationWindowController *vc = [KMVerificationWindowController verificationWithType:KMVerificationTypeActivate];
        vc.callback = ^{
//            [[KMProductCompareWC shared] setOrientation:NO];
//            [[KMProductCompareWC shared] showWindow:nil];
            [[KMMemberInfo shared] advancedFunctionUsageWithType:KMSubscribeWaterMarkTypeNone];
        };
        [vc showWindow:nil];

}

- (IBAction)buttonItemClicked_Buy:(id)sender {
#if VERSION_DMG
    [self trackEvent_buyNow];
    NSString *paidEventName = [self _buyNowEventToPaidEventName];
    NSDictionary *paidEventParams = [self _getPaidEventParamsWith:paidEventName];
    
    NSString *thePaidEventName = paidEventParams.allKeys.firstObject;
    NSDictionary *thePaidEventParams = nil;
    if (paidEventName != nil && paidEventParams.allValues.firstObject != nil) {
        thePaidEventParams = @{paidEventParams.allValues.firstObject : paidEventName};
    }
    
    [self close];
    
    NSString *productID = @"";
    if ([self.buySwitch state]) {
        productID = KMAdvancedAnnualSubscriptionCodeKey_DMG;
    } else {
        productID = KMStandardAnnualSubscriptionCodeKey_DMG;
    }
    KMPurchaseEmbeddedWindowController *embeddedWC = [KMPurchaseEmbeddedWindowController currentCode:productID];
    embeddedWC.kEventName = thePaidEventName;
    embeddedWC.kEventParams = thePaidEventParams;
    [embeddedWC showWindow:nil];
    [[embeddedWC window] center];
#endif
}

- (IBAction)buttonItemClicked_CloseWindow:(id)sender {
    [self close];
}

- (void)buttonItemClicked_License:(id)sender {
//    if (ActivityStatusNone == [VerificationManager manager].status) {
//        [self close];
//
//        KMVerificationWindowController *vc = [KMVerificationWindowController verificationWithType:KMVerificationTypeTrial];
//        [vc showWindow:nil];
//    } else if (ActivityStatusTrialExpire == [VerificationManager manager].status) {
        if ([VerificationManager manager].secondTrialEnabled) {
            [[FMTrackEventManager defaultManager] trackEventWithEvent:@"Tbr" withProperties:@{@"Tbr_Btn":@"Btn_Tbr_SecondTrial"}];
            [[VerificationManager manager] trialForDays:7
                                                  email:[VerificationManager manager].email
                                                   name:[VerificationManager manager].accountName
                                            complention:^(ActivityStatus status, NSDictionary *info, NSError *error) {
                if (error ||
                    status != ActivityStatusTrial) {
                    NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedString(@"Activation Error", nil)
                                                     defaultButton:NSLocalizedString(@"Try Again", nil)
                                                   alternateButton:nil
                                                       otherButton:nil
                                         informativeTextWithFormat:NSLocalizedString(@"Failed to sign up for the free trial. Please make sure your internet connection is available and try again later.", nil), nil];
                    [alert runModal];
                } else {
                    KMVerificationWindowController *vc = [KMVerificationWindowController verificationWithType:KMVerificationTypeRepeatTrialSuccess];
                    [vc showWindow:nil];
                }
            }];
            [self close];
        } else {
            [self close];
            KMVerificationWindowController *vc = [KMVerificationWindowController verificationWithType:KMVerificationTypeTrial];
            vc.callback = ^{
//                [[KMProductCompareWC shared] setOrientation:NO];
//                [[KMProductCompareWC shared] showWindow:nil];
                [[KMMemberInfo shared] advancedFunctionUsageWithType:KMSubscribeWaterMarkTypeNone];
            };
            [vc showWindow:nil];
        }
}

- (IBAction)aiPurchaseButtonClick:(NSButton *)sender {
//    NSURL *url = [NSURL URLWithString:Swift_oc_Tool.AIProduct_Link_OC];
//    [[NSWorkspace sharedWorkspace] openURL:url];
//    
//    [[FMTrackEventManager defaultManager] trackEventWithEvent:@"PUW" withProperties:@{@"PUW_Btn":@"PUW_Btn_BuyAITools"}];
    [self trackEvent_buyNow];
    NSString *paidEventName = [self _buyNowEventToPaidEventName];
    NSDictionary *paidEventParams = [self _getPaidEventParamsWith:paidEventName];
    NSString *thePaidEventName = paidEventParams.allKeys.firstObject;
    NSDictionary *thePaidEventParams = nil;
    if (paidEventName != nil && paidEventParams.allValues.firstObject != nil) {
        thePaidEventParams = @{paidEventParams.allValues.firstObject : paidEventName};
    }
    
    [self close];
#if VERSION_DMG
    KMPurchaseEmbeddedWindowController *embeddedWC = [KMPurchaseEmbeddedWindowController currentCode:KMAISubscriptionMonthCodeKey_DMG];
    embeddedWC.kEventName = thePaidEventName;
    embeddedWC.kEventParams = thePaidEventParams;
    [embeddedWC showWindow:nil];
    [[embeddedWC window] center];
#endif
}

- (IBAction)buySwitchAction:(NSSwitch *)sender {
    [self refreshParmanentVerInfo];
    [self updatePriceLabel];
}

#pragma mark - Noti
- (void)themeChanged:(NSNotification *)notification {
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self updateViewColor];
    });
}

- (void)recommondInfoUpdateNoti:(NSNotification *)noti {
    dispatch_async(dispatch_get_main_queue(), ^{
        [self updatePriceLabel];
    });
}

@end

@implementation KMPurchaseCompareDMGWindowController (KMAnalytic)

- (void)trackEvent_buyNow {
    NSDictionary *params = [self _getBuyNowEventParams];
    NSString *theEventName = params.allKeys.firstObject;
    NSDictionary *theParams = nil;
    if (self.kEventName != nil && params.allValues.firstObject != nil) {
        theParams = @{params.allValues.firstObject : self.kEventName};
    }
    
    [self trackEvent_dmgWithEventName:theEventName params:theParams platform:KMAnalyticsPlatformAppCenter];
}

- (NSDictionary *)_getBuyNowEventParams {
    NSString *eveN = self.kEventName;
    if (eveN == nil || eveN.length == 0) {
        return nil;
    }
    
    if ([eveN isEqual:@"Reading_WebsiteLink_BuyNow"] ||
        [eveN isEqual:@"Reading_EmailLink_BuyNow"] ||
        [eveN isEqual:@"Reading_DynamicStamp_BuyNow"] ||
        [eveN isEqual:@"Reading_CustomStamp_BuyNow"] ||
        [eveN isEqual:@"Reading_Signature_BuyNow"] ||
        [eveN isEqual:@"Reading_Table_BuyNow"]) {
        return @{@"Purchase_Tools" : @"SubTbr_Tools"};
    } else if ([eveN isEqual:@"Reading_InsertBlankPage_BuyNow"] ||
               [eveN isEqual:@"Reading_InsertPDF_BuyNow"] ||
               [eveN isEqual:@"Reading_InsertSacnner_BuyNow"] ||
               [eveN isEqual:@"Reading_InsertImage_BuyNow"] ||
               [eveN isEqual:@"Reading_InsertClipboard_BuyNow"] ||
               [eveN isEqual:@"Reading_Replace_BuyNow"] ||
               [eveN isEqual:@"Reading_Extract_BuyNow"] ||
               [eveN isEqual:@"Reading_Split_BuyNow"] ||
               ([eveN isEqual:@"Reading_Rotate_BuyNow"] && self.kEventTag == 0) ||
               [eveN isEqual:@"Reading_Reverse_BuyNow"] ||
               [eveN isEqual:@"Reading_Copy_BuyNow"] ||
               [eveN isEqual:@"Reading_Delete_BuyNow"] ||
               [eveN isEqual:@"Reading_Merge_BuyNow"]) {
        return @{@"Purchase_PageEdit" : @"SubTbr_PageEdit"};
    } else if ([eveN isEqual:@"Onbrd_EditPage_BuyNow"] ||
               [eveN isEqual:@"Onbrd_Merge_BuyNow"]) {
        return @{@"Purchase_PageEdit" : @"Home_PageEdit"};
    } else if ([eveN isEqual:@"Reading_RemoveSecurity_BuyNow"] ||
               [eveN isEqual:@"Reading_Compare_BuyNow"] ||
               [eveN isEqual:@"Reading_AddWatermark_BuyNow"] ||
               [eveN isEqual:@"Reading_RemoveWatermark_BuyNow"] ||
               [eveN isEqual:@"Reading_AddBackground_BuyNow"] ||
               [eveN isEqual:@"Reading_RemoveBackground_BuyNow"] ||
               [eveN isEqual:@"Reading_AddHeaderFooter_BuyNow"] ||
               [eveN isEqual:@"Reading_RemoveHeaderFooter_BuyNow"] ||
               [eveN isEqual:@"Reading_AddBates_BuyNow"] ||
               [eveN isEqual:@"Reading_RemoveBates_BuyNow"] ||
               [eveN isEqual:@"Reading_Measure_BuyNow"]) {
        return @{@"Purchase_Editor" : @"SubTbr_Editor"};
    } else if ([eveN isEqual:@"Onbrd_Compare_BuyNow"] ||
               [eveN isEqual:@"Onbrd_Background_BuyNow"] ||
               [eveN isEqual:@"Onbrd_Watermard_BuyNow"] ||
               [eveN isEqual:@"Onbrd_HeaderFooter_BuyNow"] ||
               [eveN isEqual:@"Onbrd_Bates_BuyNow"] ||
               [eveN isEqual:@"Onbrd_Security_BuyNow"]) {
        return @{@"Purchase_Editor" : @"Home_Editor"};
    } else if ([eveN isEqual:@"Reading_PDFtoWord_BuyNow"] ||
              [eveN isEqual:@"Reading_PDFtoExcel_BuyNow"] ||
              [eveN isEqual:@"Reading_PDFtoPPT_BuyNow"] ||
              [eveN isEqual:@"Reading_PDFtoRTF_BuyNow"] ||
              [eveN isEqual:@"Reading_PDFtoCSV_BuyNow"] ||
              [eveN isEqual:@"Reading_PDFtoText_BuyNow"] ||
              [eveN isEqual:@"Reading_PDFtoImage_BuyNow"] ||
              [eveN isEqual:@"Reading_ExtractImage_BuyNow"]) {
       return @{@"Purchase_Converter" : @"SubTbr_Converter"};
    } else if ([eveN isEqual:@"Onbrd_ConvertPDF_BuyNow"] ||
               [eveN isEqual:@"Onbrd_PDFtoWord_BuyNow"] ||
               [eveN isEqual:@"Onbrd_PDFtoExcel_BuyNow"] ||
               [eveN isEqual:@"Onbrd_PDFtoPPT_BuyNow"] ||
               [eveN isEqual:@"Onbrd_ImagetoPDF_BuyNow"]) {
        return @{@"Purchase_Converter" : @"Home_Converter"};
    } else if ([eveN isEqual:@"Reading_TextField_BuyNow"] ||
               [eveN isEqual:@"Reading_CheckBox_BuyNow"] ||
               [eveN isEqual:@"Reading_RadioButton_BuyNow"] ||
               [eveN isEqual:@"Reading_ListBox_BuyNow"] ||
               [eveN isEqual:@"Reading_ComboBox_BuyNow"] ||
               [eveN isEqual:@"Reading_Button_BuyNow"]) {
        return @{@"Purchase_Form" : @"SubTbr_Forms"};
    } else if ([eveN isEqual:@"Reading_FillSign_Signature_BuyNow"] ||
               [eveN isEqual:@"Reading_DigitalSign_BuyNow"] ||
               [eveN isEqual:@"Reading_ElectronicSign_BuyNow"]) {
        return @{@"Purchase_Sign" : @"SunTbr_Signature"};
    } else if ([eveN isEqual:@"Reading_EditPDF_BuyNow"] ||
                [eveN isEqual:@"Reading_ReplaceText_BuyNow"]) {
         return @{@"Purchase_EditPDF" : @"Tbr_Edit PDF"};
    } else if ([eveN isEqual:@"Reading_Redact_BuyNow"]) {
        return @{@"Purchase_Redact" : @"Tbr_Redact"};
    } else if ([eveN isEqual:@"Reading_OCR_BuyNow"] ||
               [eveN isEqual:@"Reading_Convert_OCR_BuyNow"] ||
               [eveN isEqual:@"Onbrd_OCR_BuyNow"]) {
        return @{@"Purchase_OCR" : @"SubTbr_OCR"};
    } else if ([eveN isEqual:@"Reading_SplitView_BuyNow"] ||
               [eveN isEqual:@"Reading_Rotate_BuyNow"] ||
               [eveN isEqual:@"Reading_Theme_BuyNow"] ||
               [eveN isEqual:@"Reading_MultiTab_BuyNow"]) {
        return @{@"Purchase_PageDisplay" : @"SubTbr_PageDisplay"};
    } else if ([eveN isEqual:@"Onbrd_PrintPoster_BuyNow"] ||
               [eveN isEqual:@"Onbrd_PrintMultiple_BuyNow"] ||
               [eveN isEqual:@"Onbrd_PrintBooklet_BuyNow"]) {
        return @{@"Purchase_Others" : @"Home_Others"};
    } else if ([eveN isEqual:@"Reading_Flatten_BuyNow"]) {
        return @{@"Purchase_Others" : @"SubTbr_Others"};
    } else if ([eveN isEqual:@"MenuBar_PrintPoster_BuyNow"] ||
               [eveN isEqual:@"MenuBar_PrintMultiple_BuyNow"] ||
               [eveN isEqual:@"MenuBar_PrintBooklet_BuyNow"]) {
        return @{@"Purchase_Others" : @"MenuBar_Others"};
    }
    return nil;
}

- (NSString *)_buyNowEventToPaidEventName {
    NSString *eveN = self.kEventName;
    if (eveN == nil || eveN.length == 0) {
        return nil;
    }

    // Paid_Tools
    if ([eveN isEqual:@"Reading_WebsiteLink_BuyNow"]) {
        return @"Reading_WebsiteLink_Paid";
    } else if ([eveN isEqual:@"Reading_EmailLink_BuyNow"]) {
        return @"Reading_EmailLink_Paid";
    } else if ([eveN isEqual:@"Reading_DynamicStamp_BuyNow"]) {
        return @"Reading_DynamicStamp_Paid";
    } else if ([eveN isEqual:@"Reading_CustomStamp_BuyNow"]) {
        return @"Reading_CustomStamp_Paid";
    } else if ([eveN isEqual:@"Reading_Signature_BuyNow"]) {
        return @"Reading_Signature_Paid";
    } else if ([eveN isEqual:@"Reading_Table_BuyNow"]) {
        return @"Reading_Table_Paid";
    }
    // Paid_PageEdit SubTbr_PageEdit
    else if ([eveN isEqual:@"Reading_InsertBlankPage_BuyNow"]) {
        return @"Reading_InsertBlankPage_Paid";
    } else if ([eveN isEqual:@"Reading_InsertPDF_BuyNow"]) {
        return @"Reading_InsertPDF_Paid";
    } else if ([eveN isEqual:@"Reading_InsertSacnner_BuyNow"]) {
        return @"Reading_InsertSacnner_Paid";
    } else if ([eveN isEqual:@"Reading_InsertImage_BuyNow"]) {
        return @"Reading_InsertImage_Paid";
    } else if ([eveN isEqual:@"Reading_InsertClipboard_BuyNow"]) {
        return @"Reading_InsertClipboard_Paid";
    } else if ([eveN isEqual:@"Reading_Replace_BuyNow"]) {
        return @"Reading_Replace_Paid";
    } else if ([eveN isEqual:@"Reading_Extract_BuyNow"]) {
        return @"Reading_Extract_Paid";
    } else if ([eveN isEqual:@"Reading_Split_BuyNow"]) {
        return @"Reading_Split_Paid";
    } else if ([eveN isEqual:@"Reading_Rotate_BuyNow"]) {
        return @"Reading_Rotate_Paid";
    } else if ([eveN isEqual:@"Reading_Reverse_BuyNow"]) {
        return @"Reading_Reverse_Paid";
    } else if ([eveN isEqual:@"Reading_Copy_BuyNow"]) {
        return @"Reading_Copy_Paid";
    } else if ([eveN isEqual:@"Reading_Delete_BuyNow"]) {
        return @"Reading_Delete_Paid";
    } else if ([eveN isEqual:@"Reading_Merge_BuyNow"]) {
        return @"Reading_Merge_Paid";
    }
    // Paid_PageEdit Home_PageEdit
    else if ([eveN isEqual:@"Onbrd_EditPage_BuyNow"]) {
        return  @"Onbrd_EditPage_Paid";
    } else if ([eveN isEqual:@"Onbrd_Merge_BuyNow"]) {
        return  @"Onbrd_Merge_Paid";
    }
    // Paid_Editor SubTbr_Editor
    else if ([eveN isEqual:@"Reading_RemoveSecurity_BuyNow"]) {
        return @"Reading_RemoveSecurity_Paid";
    } else if ([eveN isEqual:@"Reading_Compare_BuyNow"]) {
        return @"Reading_Compare_Paid";
    } else if ([eveN isEqual:@"Reading_AddWatermark_BuyNow"]) {
        return @"Reading_AddWatermark_Paid";
    } else if ([eveN isEqual:@"Reading_RemoveWatermark_BuyNow"]) {
        return @"Reading_RemoveWatermark_Paid";
    } else if ([eveN isEqual:@"Reading_AddBackground_BuyNow"]) {
        return @"Reading_AddBackground_Paid";
    } else if ([eveN isEqual:@"Reading_RemoveBackground_BuyNow"]) {
        return @"Reading_RemoveBackground_Paid";
    } else if ([eveN isEqual:@"Reading_AddHeaderFooter_BuyNow"]) {
        return @"Reading_AddHeaderFooter_Paid";
    } else if ([eveN isEqual:@"Reading_RemoveHeaderFooter_BuyNow"]) {
        return @"Reading_RemoveHeaderFooter_Paid";
    } else if ([eveN isEqual:@"Reading_AddBates_BuyNow"]) {
        return @"Reading_AddBates_Paid";
    } else if ([eveN isEqual:@"Reading_RemoveBates_BuyNow"]) {
        return @"Reading_RemoveBates_Paid";
    } else if ([eveN isEqual:@"Reading_Measure_BuyNow"]) {
        return @"Reading_Measure_Paid";
    }
    // Paid_Editor Home_Editor
    else if ([eveN isEqual:@"Onbrd_Compare_BuyNow"]) {
        return @"Onbrd_Compare_Paid";
    } else if ([eveN isEqual:@"Onbrd_Background_BuyNow"]) {
        return @"Onbrd_Background_Paid";
    } else if ([eveN isEqual:@"Onbrd_Watermard_BuyNow"]) {
        return @"Onbrd_Watermard_Paid";
    } else if ([eveN isEqual:@"Onbrd_HeaderFooter_BuyNow"]) {
        return @"Onbrd_HeaderFooter_Paid";
    } else if ([eveN isEqual:@"Onbrd_Bates_BuyNow"]) {
        return @"Onbrd_Bates_Paid";
    } else if ([eveN isEqual:@"Onbrd_Security_BuyNow"]) {
        return @"Onbrd_Security_Paid";
    }
    // Paid_Converter SubTbr_Converte
    else if ([eveN isEqual:@"Reading_PDFtoWord_BuyNow"]) {
        return @"Reading_PDFtoWord_Paid";
    } else if ([eveN isEqual:@"Reading_PDFtoExcel_BuyNow"]) {
        return @"Reading_PDFtoExcel_Paid";
    } else if ([eveN isEqual:@"Reading_PDFtoPPT_BuyNow"]) {
        return @"Reading_PDFtoPPT_Paid";
    } else if ([eveN isEqual:@"Reading_PDFtoRTF_BuyNow"]) {
        return @"Reading_PDFtoRTF_Paid";
    } else if ([eveN isEqual:@"Reading_PDFtoCSV_BuyNow"]) {
        return @"Reading_PDFtoCSV_Paid";
    } else if ([eveN isEqual:@"Reading_PDFtoText_BuyNow"]) {
        return @"Reading_PDFtoText_Paid";
    } else if ([eveN isEqual:@"Reading_PDFtoImage_BuyNow"]) {
        return @"Reading_PDFtoImage_Paid";
    } else if ([eveN isEqual:@"Reading_ExtractImage_BuyNow"]) {
        return @"Reading_ExtractImage_Paid";
    }
    // Paid_Converter Home_Converter
    else if ([eveN isEqual:@"Onbrd_ConvertPDF_BuyNow"]) {
        return @"Onbrd_ConvertPDF_Paid";
    } else if ([eveN isEqual:@"Onbrd_PDFtoWord_BuyNow"]) {
        return @"Onbrd_PDFtoWord_Paid";
    } else if ([eveN isEqual:@"Onbrd_PDFtoExcel_BuyNow"]) {
        return @"Onbrd_PDFtoExcel_Paid";
    } else if ([eveN isEqual:@"Onbrd_PDFtoPPT_BuyNow"]) {
        return @"Onbrd_PDFtoPPT_Paid";
    } else if ([eveN isEqual:@"Onbrd_ImagetoPDF_BuyNow"]) {
        return @"Onbrd_ImagetoPDF_Paid";
    }
    // Paid_Form SubTbr_Forms
    else if ([eveN isEqual:@"Reading_TextField_BuyNow"]) {
        return @"Reading_TextField_Paid";
    } else if ([eveN isEqual:@"Reading_CheckBox_BuyNow"]) {
        return @"Reading_CheckBox_Paid";
    } else if ([eveN isEqual:@"Reading_RadioButton_BuyNow"]) {
        return @"Reading_RadioButton_Paid";
    } else if ([eveN isEqual:@"Reading_ListBox_BuyNow"]) {
        return @"Reading_ListBox_Paid";
    } else if ([eveN isEqual:@"Reading_ComboBox_BuyNow"]) {
        return @"Reading_ComboBox_Paid";
    } else if ([eveN isEqual:@"Reading_Button_BuyNow"]) {
        return @"Reading_Button_Paid";
    }
    // Paid_Sign SunTbr_Signature
    else if ([eveN isEqual:@"Reading_FillSign_Signature_BuyNow"]) {
        return @"Reading_FillSign_Signature_Paid";
    } else if ([eveN isEqual:@"Reading_DigitalSign_BuyNow"]) {
        return @"Reading_DigitalSign_Paid";
    } else if ([eveN isEqual:@"Reading_ElectronicSign_BuyNow"]) {
        return @"Reading_ElectronicSign_Paid";
    }
    // Paid_EditPDF Tbr_Edit PDF
    else if ([eveN isEqual:@"Reading_EditPDF_BuyNow"]) {
        return @"Reading_EditPDF_Paid";
    } else if ([eveN isEqual:@"Reading_ReplaceText_BuyNow"]) {
        return @"Reading_ReplaceText_Paid";
    }
    // Paid_Redact Tbr_Redact
    else if ([eveN isEqual:@"Reading_Redact_BuyNow"]) {
        return @"Reading_Redact_Paid";
    }
    // Paid_OCR SubTbr_OCR
    else if ([eveN isEqual:@"Reading_OCR_BuyNow"]) {
        return @"Reading_OCR_Paid";
    } else if ([eveN isEqual:@"Reading_Convert_OCR_BuyNow"]) {
        return @"Reading_Convert_OCR_Paid";
    } else if ([eveN isEqual:@"Onbrd_OCR_BuyNow"]) {
        return @"Onbrd_OCR_Paid";
    }
    // Paid_PageDisplay SubTbr_Page Display
    else if ([eveN isEqual:@"Reading_SplitView_BuyNow"]) {
        return @"Reading_SplitView_Paid";
    } else if ([eveN isEqual:@"Reading_Rotate_BuyNow"]) {
        return @"Reading_Rotate_Paid";
    } else if ([eveN isEqual:@"Reading_Theme_BuyNow"]) {
        return @"Reading_Theme_Paid";
    } else if ([eveN isEqual:@"Reading_MultiTab_BuyNow"]) {
        return @"Reading_MultiTab_Paid";
    }
    //  Home_Others
    else if ([eveN isEqual:@"Onbrd_PrintPoster_BuyNow"]) {
        return @"Onbrd_PrintPoster_Paid";
    } else if ([eveN isEqual:@"Onbrd_PrintMultiple_BuyNow"]) {
        return @"Onbrd_PrintMultiple_Paid";
    } else if ([eveN isEqual:@"Onbrd_PrintBooklet_BuyNow"]) {
        return @"Onbrd_PrintBooklet_Paid";
    }
    // Paid_Others SubTbr_Others
    else if ([eveN isEqual:@"Reading_Flatten_BuyNow"]) {
        return @"Reading_Flatten_Paid";
    }
    // Paid_Others MenuBar_Others
    else if ([eveN isEqual:@"MenuBar_PrintPoster_BuyNow"]) {
        return @"MenuBar_PrintPoster_Paid";
    } else if ([eveN isEqual:@"MenuBar_PrintMultiple_BuyNow"]) {
        return @"MenuBar_PrintMultiple_Paid";
    } else if ([eveN isEqual:@"MenuBar_PrintBooklet_BuyNow"]) {
        return @"MenuBar_PrintBooklet_Paid";
    }
    return nil;
}

- (NSDictionary *)_getPaidEventParamsWith:(NSString *)eventN {
    NSString *eveN = eventN;
    if (eveN == nil || eveN.length == 0) {
        return nil;
    }
    
    // Paid_Tools SubTbr_Tools
    if ([eveN isEqual:@"Reading_WebsiteLink_Paid"] ||
        [eveN isEqual:@"Reading_EmailLink_Paid"] ||
        [eveN isEqual:@"Reading_DynamicStamp_Paid"] ||
        [eveN isEqual:@"Reading_CustomStamp_Paid"] ||
        [eveN isEqual:@"Reading_Signature_Paid"] ||
        [eveN isEqual:@"Reading_Table_Paid"]) {
        return @{@"Paid_Tools" : @"SubTbr_Tools"};
    }
    // Paid_PageEdit SubTbr_PageEdit
    else if ([eveN isEqual:@"Reading_InsertBlankPage_Paid"] ||
             [eveN isEqual:@"Reading_InsertPDF_Paid"] ||
             [eveN isEqual:@"Reading_InsertSacnner_Paid"] ||
             [eveN isEqual:@"Reading_InsertImage_Paid"] ||
             [eveN isEqual:@"Reading_InsertClipboard_Paid"] ||
             [eveN isEqual:@"Reading_Replace_Paid"] ||
             [eveN isEqual:@"Reading_Extract_Paid"] ||
             [eveN isEqual:@"Reading_Split_Paid"] ||
             [eveN isEqual:@"Reading_Rotate_Paid"] ||
             [eveN isEqual:@"Reading_Reverse_Paid"] ||
             [eveN isEqual:@"Reading_Copy_Paid"] ||
             [eveN isEqual:@"Reading_Delete_Paid"] ||
             [eveN isEqual:@"Reading_Merge_Paid"]) {
        return @{@"Paid_PageEdit" : @"SubTbr_PageEdit"};
    }
    // Paid_PageEdit Home_PageEdit
    else if ([eveN isEqual:@"Onbrd_EditPage_Paid"] ||
             [eveN isEqual:@"Onbrd_Merge_Paid"]) {
        return @{@"Paid_PageEdit" : @"Home_PageEdit"};
    }
    // Paid_Editor SubTbr_Editor
    else if ([eveN isEqual:@"Reading_RemoveSecurity_Paid"] ||
             [eveN isEqual:@"Reading_Compare_Paid"] ||
             [eveN isEqual:@"Reading_AddWatermark_Paid"] ||
             [eveN isEqual:@"Reading_RemoveWatermark_Paid"] ||
             [eveN isEqual:@"Reading_AddBackground_Paid"] ||
             [eveN isEqual:@"Reading_RemoveBackground_Paid"] ||
             [eveN isEqual:@"Reading_AddHeaderFooter_Paid"] ||
             [eveN isEqual:@"Reading_RemoveHeaderFooter_Paid"] ||
             [eveN isEqual:@"Reading_AddBates_Paid"] ||
             [eveN isEqual:@"Reading_RemoveBates_Paid"] ||
             [eveN isEqual:@"Reading_Measure_Paid"]) {
        return @{@"" : @""};
    }
    // Paid_Editor Home_Editor
    else if ([eveN isEqual:@"Onbrd_Compare_Paid"] ||
             [eveN isEqual:@"Onbrd_Background_Paid"] ||
             [eveN isEqual:@"Onbrd_Watermard_Paid"] ||
             [eveN isEqual:@"Onbrd_HeaderFooter_Paid"] ||
             [eveN isEqual:@"Onbrd_Bates_Paid"] ||
             [eveN isEqual:@"Onbrd_Security_Paid"]) {
        return @{@"Paid_Editor" : @"Home_Editor"};
    }
    // Paid_Converter SubTbr_Converter
    else if ([eveN isEqual:@"Reading_PDFtoWord_Paid"] ||
             [eveN isEqual:@"Reading_PDFtoExcel_Paid"] ||
              [eveN isEqual:@"Reading_PDFtoPPT_Paid"] ||
              [eveN isEqual:@"Reading_PDFtoRTF_Paid"] ||
              [eveN isEqual:@"Reading_PDFtoCSV_Paid"] ||
              [eveN isEqual:@"Reading_PDFtoText_Paid"] ||
              [eveN isEqual:@"Reading_PDFtoImage_Paid"] ||
              [eveN isEqual:@"Reading_ExtractImage_Paid"]) {
        return @{@"Paid_Converter" : @"SubTbr_Converter"};
    }
    // Paid_Converter Home_Converter
    else if ([eveN isEqual:@"Onbrd_ConvertPDF_Paid"] ||
             [eveN isEqual:@"Onbrd_PDFtoWord_Paid"] ||
             [eveN isEqual:@"Onbrd_PDFtoExcel_Paid"] ||
              [eveN isEqual:@"Onbrd_PDFtoPPT_Paid"] ||
              [eveN isEqual:@"Onbrd_ImagetoPDF_Paid"]) {
        return @{@"Paid_Converter" : @"Home_Converter"};
    }
    // Paid_Form SubTbr_Forms
    else if ([eveN isEqual:@"Reading_TextField_Paid"] ||
             [eveN isEqual:@"Reading_CheckBox_Paid"] ||
             [eveN isEqual:@"Reading_RadioButton_Paid"] ||
             [eveN isEqual:@"Reading_ListBox_Paid"] ||
             [eveN isEqual:@"Reading_ComboBox_Paid"] ||
             [eveN isEqual:@"Reading_Button_Paid"]) {
        return @{@"Paid_Form" : @"SubTbr_Forms"};
    }
    // Paid_Sign SunTbr_Signature
    else if ([eveN isEqual:@"Reading_FillSign_Signature_Paid"] ||
             [eveN isEqual:@"Reading_DigitalSign_Paid"] ||
             [eveN isEqual:@"Reading_ElectronicSign_Paid"]) {
        return @{@"Paid_Sign" : @"SunTbr_Signature"};
    }
    // Paid_EditPDF Tbr_Edit PDF
    else if ([eveN isEqual:@"Reading_EditPDF_Paid"] ||
             [eveN isEqual:@"Reading_ReplaceText_Paid"]) {
        return @{@"Paid_EditPDF" : @"Tbr_Edit PDF"};
    }
    // Paid_Redact Tbr_Redact
    else if ([eveN isEqual:@"Reading_Redact_Paid"]) {
        return @{@"Paid_Redact" : @"Tbr_Redact"};
    }
    // Paid_OCR SubTbr_OCR
    else if ([eveN isEqual:@"Reading_OCR_Paid"] ||
             [eveN isEqual:@"Reading_Convert_OCR_Paid"] ||
             [eveN isEqual:@"Onbrd_OCR_Paid"]) {
        return @{@"Paid_OCR" : @"SubTbr_OCR"};
    }
    // Paid_PageDisplay SubTbr_Page Display
    else if ([eveN isEqual:@"Reading_SplitView_Paid"] ||
             [eveN isEqual:@"Reading_Rotate_Paid"] ||
             [eveN isEqual:@"Reading_Theme_Paid"] ||
             [eveN isEqual:@"Reading_MultiTab_Paid"]) {
        return @{@"Paid_PageDisplay" : @"SubTbr_Page Display"};
    }
    //  Home_Others
    else if ([eveN isEqual:@"Onbrd_PrintPoster_Paid"] ||
             [eveN isEqual:@"Onbrd_PrintMultiple_Paid"] ||
             [eveN isEqual:@"Onbrd_PrintBooklet_Paid"]) {
        return @{@"Paid_Others" : @"Home_Others"};
    }
    // Paid_Others SubTbr_Others
    else if ([eveN isEqual:@"Reading_Flatten_Paid"]) {
        return @{@"Paid_Others" : @"SubTbr_Others"};
    }
    // Paid_Others MenuBar_Others
    else if ([eveN isEqual:@"MenuBar_PrintPoster_Paid"] ||
             [eveN isEqual:@"MenuBar_PrintMultiple_Paid"] ||
             [eveN isEqual:@"MenuBar_PrintBooklet_Paid"]) {
        return @{@"Paid_Others" : @"MenuBar_Others"};
    }
    return nil;
}


@end