//
//  ViewDelegate.m
//  bungloo
//
//  Created by Jeena on 15.04.10.
//  Licence: BSD (see attached LICENCE.txt file).
//

#import "ViewDelegate.h"


@implementation ViewDelegate

@synthesize timelineView, oauthView;

- (void)webView:(WebView *)sender addMessageToConsole:(NSDictionary *)message {

	if (![message isKindOfClass:[NSDictionary class]]) return;

	NSString *viewName = @"TimelineView";
	if (sender == oauthView) viewName = @"OauthView";
    
	NSLog(@"js<%@>: %@:%@: %@",
		viewName,
		[[message objectForKey:@"sourceURL"] lastPathComponent],
		[message objectForKey:@"lineNumber"],
		[message objectForKey:@"message"]
	);
}

- (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame {
	NSString *viewName = @"TimelineView";
	if (sender == oauthView) viewName = @"OauthView";

	NSLog(@"jsa<%@>: %@", viewName, message);
}

- (BOOL)webView:(WebView *)sender runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame {
	NSInteger result = NSRunCriticalAlertPanel(NSLocalizedString(@"Bungloo", @""),   // title
											   message,								 // message
											   NSLocalizedString(@"OK", @""),		 // default button
											   NSLocalizedString(@"Cancel", @""),	 // alt button
											   nil);
	return NSAlertDefaultReturn == result;
	return NO;
}

- (void)webView:(WebView *)sender decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id <WebPolicyDecisionListener>)listener {
    
    NSArray *frames = [NSArray arrayWithObjects:timelineView.mainFrame, oauthView.mainFrame, nil];

    // If it is clicked from one of the views the open default browser
    if ([frames indexOfObject:frame] != NSNotFound) {
        [listener ignore];
        [[NSWorkspace sharedWorkspace] openURL:[request URL]];
    } else { // otherwies load the iframe stuff like YouTube or vimeo
        [listener use];
    }
}

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame {

	NSFileManager *fileManager = [NSFileManager defaultManager];
	NSString *pathToJsPlugin = [@"~/Library/Application Support/bungloo/Plugin.js" stringByExpandingTildeInPath];
	NSString *pathToCssPlugin = [@"~/Library/Application Support/bungloo/Plugin.css" stringByExpandingTildeInPath];

	if([fileManager fileExistsAtPath:pathToCssPlugin])
	{
		[sender stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"setTimeout(function() { loadCssPlugin('file://localhost%@') }, 1000);", pathToCssPlugin]];
	}

	if([fileManager fileExistsAtPath:pathToJsPlugin])
	{
		[sender stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"setTimeout(function() { loadJsPlugin('file://localhost%@') }, 1000);", pathToJsPlugin]];
	}

	[sender stringByEvaluatingJavaScriptFromString:@"var OS_TYPE = 'mac';"];

	if (sender == oauthView) {

		[oauthView stringByEvaluatingJavaScriptFromString:@"function HostAppGo() { start('oauth') }"];

	} else {

		[sender stringByEvaluatingJavaScriptFromString:@"function HostAppGo() { start('timeline') }"];
	}
}

- (NSArray *)webView:(WebView *)sender contextMenuItemsForElement:(NSDictionary *)element defaultMenuItems:(NSArray *)defaultMenuItems
{
	// FIXME
	/*
	NSMutableArray *menuItems = [NSMutableArray arrayWithArray:defaultMenuItems];

	for (NSMenuItem*item in defaultMenuItems) {
		if ([[item title] isEqualToString:@"Reload"]) {
			//[item setAction:@selector(reload:)];
			//[item setTarget:self];
		} else {
			[menuItems addObject:item];
		}
	}*/

	return defaultMenuItems;
}

- (void)reload:(id)sender {
	[timelineView stringByEvaluatingJavaScriptFromString:@"bungloo.timeline.getNewData();"];
}

- (NSString *)pluginURL
{
	NSFileManager *fileManager = [NSFileManager defaultManager];
	NSString *pathToPlugin = [@"~/Library/Application Support/Bungloo/Plugin.js" stringByExpandingTildeInPath];

	if([fileManager fileExistsAtPath:pathToPlugin])
	{
		return [NSString stringWithFormat:@"%@", [NSURL fileURLWithPath:pathToPlugin]];
	}
	return nil;
}

@end
