//
//  HelpViewController.m
//   ZeroRec/Komadori
//
//  Created by AIG-Soft on 10/12/20.
//  Copyright 2010 AIG-Soft. All rights reserved.
//

#import "HelpViewController.h"
#import "libs.h"
#import "FileControl2.h"
#import "UIAlertView+Blocks.h"
#import "main.h"

@interface HelpViewController()
<UIWebViewDelegate>
{
	IBOutlet	__weak	UIWebView *webView;
	NSURL		*url;
	NSString	*helpFname;
}
@end

@implementation HelpViewController

-(void)open:(NSString *)helpfname title:(NSString *)title
{
	printSelf();
	self.title=NSLocalStr(title);
	helpFname=NSLocalStr(helpfname);
	nslog(@"helpname=%@",helpFname);
}

- (void)viewDidLoad
{
	printSelf();
    [super viewDidLoad];

	// リソースからHTMLの読み込み
	NSString *path=makeFullPathForResource(helpFname,@"html"); // リソース内のパスを得る
	nslog(@"path=%@",path);
	NSString *html=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
	NSURL *base=[NSURL fileURLWithPath:path]; // HTML内の画像のリンクを解決するため、これが非常に重要
	nslog(@"base=%@",base);
	// 表示
	[webView loadHTMLString:html baseURL:base];

	// 読み込んでからの設定が必要
	webView.delegate=self;
	url=nil;

	// iOS7で、viewの下にあるUIScrollViewを内包するUI要素(UITableView/UIScrollView/UIWebViewなど)のスクロール開始位置が勝手にずらされるのを禁止する
	self.automaticallyAdjustsScrollViewInsets=NO;

	// 戻るを出さないと前のtitleが入るので
	self.navigationItem.leftBarButtonItem =[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"back"] style:UIBarButtonItemStylePlain target:self action:@selector(onTapReturnButton:)];
}

-(void)onTapReturnButton:(id)sender
{
	printSelf();
	if ([self.delegate respondsToSelector:@selector(AtHelpViewClose:)]) {
		[self.delegate performSelector:@selector(AtHelpViewClose:) withObject:self];
	}
	[self.navigationController popViewControllerAnimated:YES];
}

// webViewからのデリゲート
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
	// 内のリンクはそのままではwebView内で開いてしまうので、ブラウザが開くように処理を差し替える
//	nslog(@"request=%@",request);
	switch (navigationType) {
		case UIWebViewNavigationTypeLinkClicked: { // リンクがクリックされたとき
			// リンクに飛ぶ前に確認する
			{
			NSURL *url0=[request URL];
//			nslog(@"確認前url=%@\nscheme=%@",url0,[url0 scheme]);
			if ([[url0 scheme]hasPrefix:@"file"]) {
				break; // file:の時は内部なので、何もしないで開けば良い
			}
			url = [url0 copy]; // copyしないと消えてしまうので要注意
			}
			UIAlertView *alert = [UIAlertView showWithTitle:NSLocalizedString(@"Link"	,@"リンク")
													message:NSLocalizedString(@"SUPPORT",@"サポートページを開きますか？")
										  cancelButtonTitle:NSLocalizedString(@"NO"		,@"いいえ")
										  otherButtonTitles:@[NSLocalizedString(@"YES",@"はい")]
												   tapBlock:^(UIAlertView *alertView, NSInteger buttonIndex) {
													   nslog(@"buttonIndex=%d",(int)buttonIndex);
													   // キャンセル相当にする
													   switch (buttonIndex) {
														   case 0: // キャンセル
															   break;
															   
														   default: // OK
															   nslog(@"直前url=%@",url);
															   // リンクへ飛ぶ
															   [[UIApplication sharedApplication] openURL:url]; // httpがあるので自動的にブラウザが立ち上がる
															   break;
													   }
												   }
								  ];
			[alert show]; // 表示したらすぐ終わる
			return(FALSE);
		}
		default:
			break;
	}
	return(TRUE);
}

//----------------------------------------------
// 画面を回転して良いかどうか
//----------------------------------------------

// 回転検出
// UIViewControllerの標準メソッドのオーバーライド
// 呼び出されるのは回転「前」のインスタンス
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{
	printSelf();
	[webView reload]; // こうしないと画面幅が調整されないので
}

// iOS6.0
-(BOOL)shouldAutorotate
{
	return shouldAutorotateByMain();
}

// iOS6.0
- (NSUInteger)supportedInterfaceOrientations
{
	return (supportedInterfaceOrientationsByMain());
}

//---------------------------------------------------

#ifdef DEBUG
- (void)didReceiveMemoryWarning
{
	printSelf();
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc. that aren't in use.
}

#endif

- (void)dealloc
{
	printSelf();
	webView.delegate=nil; // なんか必要なのだそうな
}

@end
