//var $ = jQuery.noConflict();

function display_enlarged_picture(elem) {
	var top  = 128;
	top += $(window).scrollTop();
	var slide = '<div id="blackbox" style="height: ' + $(document).height() + 'px; width: ' + $(document).width() + 'px;">';
	slide += '<div class="blackbox_content" style="top: ' + top + 'px;">';
	slide += '<img id="blackbox_content_picture" src="' + elem.attr('href') + '" alt="" />';

	/*
	var caption = elem.parent().find('figcaption');
	if(caption.html() != null){
		slide += caption.html();
	}
	*/
	slide += '</div>';
	slide += '</div>';
	$('body').prepend(slide);
}

function generate_comment_list(data) {
	var alt_class = '';
	var list_item = '';
	$.each(data, function(i,comment){
			list_item += '<li class="single_comment" id="comment_' + comment.comment_ID + '"' + alt_class + '>';
			if (alt_class == '') {
				alt_class = ' class="alt"';
			} else {
				alt_class = '';
			}
			list_item += '<div class="icons">';
			list_item += '<p class="avatar"><a href="' + comment.user_url + '"><img src="' + comment.gravatar + '" alt="" /></a></p>';
			list_item += '<div class="comment_karma"><p class="';
			if (comment.comment_karma >= 0) {
				list_item += 'karmaplus';
			} else {
				list_item += 'karmaminus';
			}
			list_item += '">' + comment.comment_karma + '</p></div>';
			list_item += '</div>';
			list_item += '<div class="comment_box">';
			if (!parseInt(comment.comment_parent)) {
				if (comment.allow_rating) {
					list_item += '<div class="vote_karma" style="float:right;">';
					list_item += '<a class="update_karma karmaplus" href="' + comment.goodkarma_url + '">Good</a>';
					list_item += '<a class="update_karma karmaminus" href="' + comment.badkarma_url + '">Bad</a>';
					list_item += '</div>';
				}
			}
			list_item += '<p class="comment_username"><a href="' + comment.user_url + '">' + comment.comment_author + '</a>';
			list_item += '<span class="comment_time"><time datetime="' + comment.date_iso + '">' + comment.date + '</time>';
			list_item += '</span></p>';
			list_item += '<div class="comment_text">' + comment.comment_content + '</div>';
			if (typeof comment.origin != 'undefined') {
				if (!comment.origin) {
					list_item += '<p class="comment_post_link">Article Unavailable</p>';
				} else {
					list_item += '<p class="comment_post_link"><strong>Posted in:</strong> <a href="';
					list_item += comment.origin.url + '#comment_' + comment.comment_ID + '">' + comment.origin.post_title + '</a></p>';
				}
			}
			if (typeof comment.replies != 'undefined') {
				list_item += '<ul class="comment_list_child">';
				list_item += generate_comment_list(comment.replies);
				list_item += '</ul>';
			}
			list_item += '</div>';
			list_item += '</li>' + "\n";
	});
	return list_item;
}

function comment_tool(start, end) {
	var textarea = document.getElementById("comment_input_box");
	if (document.selection){
		var txt = document.selection.createRange().text;
		var newtext = start + txt + end;
		newtext = $('form#article_comment_form textarea').val().replace(txt,newtext);
		$('form#article_comment_form textarea').val(newtext);
	} else if (typeof textarea.selectionStart != 'undefined') {
		var before, after, selection;
		before = textarea.value.substring(0, textarea.selectionStart);
		selection = textarea.value.substring(textarea.selectionStart, textarea.selectionEnd);
		after = textarea.value.substring(textarea.selectionEnd, textarea.value.length);
		textarea.value = before + start + selection + end + after;
	}
}

function switchStylestyle(styleName)
{
	$('link[rel*=style][title]').each(function(i)
		{
			this.disabled = true;
			if (this.getAttribute('title') == styleName) this.disabled = false;
		});
	createCookie('style', styleName, 365);
}

// cookie functions http://www.quirksmode.org/js/cookies.html
function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name)
{
	createCookie(name,"",-1);
}
// /cookie functions

function topFormToggle(tab, othertab) {
	var frame = $('#top_form');

	// make sure all animations are terminated
	frame.stop(true, true);
	tab.stop(true, true);
	othertab.stop(true, true);
	
	var tab_displayed = tab.is(':visible');
	var frame_displayed = frame.is(':visible');
	
	if (!tab_displayed) {
		if (frame_displayed && othertab.is(':visible')) {
			othertab.fadeOut('fast', function(){
					tab.show();
			});
		} else {
			othertab.hide();
			tab.show();
		}
	} else {
		othertab.hide();
	}

	if (!frame_displayed || tab_displayed) {
		frame.slideToggle();
	}

	$('#main_sub_nav_container:visible').hide();
	$('#features a').removeClass('submenu');
}

function changeKarma(){
	var current_link = $(this);
	//var id = parent.attr('id').replace('comment_','');
	var url = current_link.attr('href');
	$.getJSON(url, function(json){
			if (json.updated_karma !== false) {
				var karma_counter = current_link.parents('li').find('.comment_karma p');
				karma_counter.html(json.updated_karma);
				if (json.updated_karma >= 0 && karma_counter.hasClass('karmaminus')) {
					karma_counter.removeClass('karmaminus');
					karma_counter.addClass('karmaplus');
				} else if (json.updated_karma < 0 && karma_counter.hasClass('karmaplus')) {
					karma_counter.removeClass('karmaplus');
					karma_counter.addClass('karmaminus');
				}
			}
	});
	return false;
}

$(function(){
		$('a[rel~="external"]').click(function() {
				window.open($(this).attr('href'));
				return false;
		});

		$('li#tool_bold').click(function(){
				comment_tool('**','**');
				return false;
		});

		$('li#tool_italic').click(function(){
				comment_tool('*','*');
				return false;
		});

		$('li#tool_quote').click(function(){
				comment_tool('\r\n>','\r\n\r\n');
				return false;
		});

		$('li#tool_link').click(function(){
				comment_tool('<','>');
				return false;
		});

		if ($('.side_weather').length) {
			$.getJSON('weather', function(data){
					for (var city in data) {
						$('#weather_' + city).css('background-image', 'url(' + data[city].icon + ')');
						var temp = $('#weather_' + city + ' dd');
						temp.html(temp.html().replace('--', data[city].temp_c));
					}
			});
		}

		//clear prefilled form vars
		if ($('input.login_form_field, form#login_form_single input.text_input').length) {
			$('input.login_form_field, form#login_form_single input.text_input').click(function(){
					if ($(this).val() == 'Username' || $(this).val() == 'Password') {
						$(this).val('');
					}
			});
		}

		//add link to view preview
		if ($('tbody#the-list').length) {
			$('tbody#the-list tr').each(function(){
					var id = $(this).attr('id').replace('post-','');
					$(this).children('td').children('a.view').attr({href: 'http://www.japantoday.com/single/preview/' + id, rel: 'external'});
			});
		}

		//ajax form for poll
		$('form#japantoday_poll').submit(function(){
				if ($(this).hasClass('require_login')) {
					return;
				}
				$.getJSON($(this).attr('action'), $(this).serializeArray(), function(data) {
						$('form#japantoday_poll').slideUp('slow', function(){
								if (data) {
								    var total_votes = 0;
									var results = '<div id="poll_results" style="display: none;">';
									$.each(data.answers, function(i,answer){
									        total_votes += parseInt(answer.votes);
											results += '<p class="vote_result"><span style="width: ' + answer.percentage + '%"></span><strong>' + answer.percentage + '% ' + answer.answer + ' (' + answer.votes + ' Votes)</strong></p>';
									});
									results += '<p id="vote_total"><span>Total:</span> ' + total_votes + ' votes</p>';
									results += '</div>';
									$(this).replaceWith(results);
									$('div#poll_results').slideDown('slow');
								}
						});
				});
				// Prevent normal submit
				return false;
		});
		//preview comment
		$('input#comment_preview_button').click(function(){
				var id = $('input[name=post_id]').val();
				var textarea = $('textarea#comment_input_box').val();
				var url = $(this).parents('form').attr('action');
				$.ajax({
						type: "POST",
						url: url,
						data: "post_id=" + escape(id) + "&text=" + escape(textarea) + "&type=preview"
				}).success(function(json){
					$('#comment_preview_outer').remove();
					if (json) {
						var results = '';
						if (json.notice) {
							results += '<p class="warning">' + json.notice +'</p>';
						} else {
							results += '<div id="comment_preview_outer" style="display:none">';
							results += '<h4>Preview of your comment</h4>';
							results += '<div id="comment_preview">';
							results += '<p class="avatar"><a href="' + json.user_url + '"><img src="' + json.gravatar + '" alt="" /></a></p>';
							results += '<div class="comment_text">';
							results += json.text
							results += '</div>';
							results += '</div>';
							results += '</div>';
						}
						//put preview at bottom of list again
						$('#article_comment_form h3').after(results);
						$('#comment_preview_outer').fadeIn();
					}
				});
		});

		//ajax form for comments
		$('form#article_comment_form').submit(function(){
				$.getJSON($(this).attr('action'), $(this).serializeArray(), function(data) {
						if (data) {
							var list_item = '<li id="comment_' + data.id + '" class="single_comment" style="display: none;">';
							if (data.notice) {
								list_item += '<p class="warning">' + data.notice +'</p></li>';
							} else {
								list_item += '<div class="icons">';
								list_item += '<p class="avatar"><a href="' + data.user_url + '"><img src="' + data.gravatar + '" alt="" /></a></p>';
								list_item += '<div class="comment_karma"><p class="karmaplus">0</p></div>';
								list_item += '</div>';
								list_item += '<div class="comment_box">';
								list_item += '<p class="comment_username"><a href="' + data.user_url + '">' + data.username + '</a></p>';
								list_item += '<div class="comment_text">' + data.text + '</div>';
								list_item += '<p class="comment_time"><time datetime="' + data.date_iso + '">' + data.date + '</time>';
								list_item += '</p>';
								list_item += '</div>';
								list_item += '</li>';
								$('form#article_comment_form textarea').val('');
							}
							$('ul#comment_list').append(list_item);
							$('#comment_preview_outer').stop(true, true);
							if ($('#comment_preview_outer').is(':visible')) {
								$('#comment_preview_outer').slideUp('slow', function(){
										$('li#comment_' + data.id).slideDown('slow');
										$(this).remove();
								});
							} else {
								$('li#comment_' + data.id).slideDown('slow');
							}
						}
				});
				// Prevent normal submit
				return false;
		});

		//ajax form to display comments
		$('#load_next_comments').click(function(){
				var link = $(this);
				if (link.hasClass('ajaxLoading')) {
					return false;
				}
				var url = link.attr('href');
				var params = url.split('/')
				var page_index = url.split('/').indexOf('page');
				if (page_index == -1) {
					return false;
				} else {
					page_index++;
				}
				link.addClass('ajaxLoading');
				$.ajax({
						type: "GET",
						url: url
				}).success(function(json){
					var results = '';
					if (!json) {
						return false;
					}
					if (json.next) {
						params[page_index] = json.page + 1;
						link.attr('href', params.join('/'));
					} else {
						link.remove();
					}
					$('#comment_list').append(generate_comment_list(json.comments));
					link.removeClass('ajaxLoading');
				});
				// Prevent normal submit
				return false;
		});

		//ajax form to display comments
		$('.sort_comments').click(function(){
				if ($(this).hasClass('active')) {
					return false;
				}
				if ($('ul#comment_list li').hasClass('ajaxLoading')) {
					return false;
				}
				$('.sort_comments.active').removeClass('active');
				$(this).addClass('active');
				$('ul#comment_list li').remove();
				$('ul#comment_list').html('<li class="ajaxLoading"></li>');
				$.getJSON($(this).attr('href'), function(data) {
						if (data) {
							if (data.notice) {
								list_item += '<li><p class="warning">' + data.notice +'</p></li>';	
							} else {
								list_item = generate_comment_list(data);
							}
							$('ul#comment_list li').remove();
							$('ul#comment_list').append(list_item);
						}
				});
				// Prevent normal submit
				return false;
		});

		//print nav
		$('a.print_button').click(function(){
				$('ul.print_list').slideToggle('fast');
		});

		$('.styleswitch').click(function()
			{
				$('ul.print_list').slideUp('slow');
				switchStylestyle(this.getAttribute("rel"));
				window.print();
				return false;
			});

		var c = readCookie('style');
		if (c) {
			switchStylestyle(c);
		}

		$('div.categories ul input:checkbox').click(function(){
				are_all_categories_selected();
		});
		$('div.cat_all label').click(function(){
				if ($('div.cat_all input#all_category').attr('checked') == true) {
					$('div.cat_all input#all_category').removeAttr('checked');
					$('div.categories ul input:checkbox').removeAttr('checked');
				} else {
					$('div.cat_all input#all_category').attr('checked', 'checked');
					$('div.categories ul input:checkbox').attr('checked', 'checked');
				}
		});
		$('div.cat_all input#all_category').click(function(){
				if ($(this).attr('checked') == true) {
					$('div.categories ul input:checkbox').attr('checked', 'checked');
				} else {
					$('div.categories ul input:checkbox').removeAttr('checked');
				}
		});

		/**
		 * feature
		 */
		$('.f1009 .more a').click(function(e){
				e.preventDefault();
				thisId = $(this).attr('href');
				$(thisId + ' .fmore').slideToggle();
				if($(this).text() == 'More'){
					$(this).text('Close');
					$(this).addClass('open');
				} else {
					$(this).text('More');
					$(this).removeClass('open');
				}
				return false;
		});
		$('.lang_sw a').click(function(e){
				article = $(this).attr('href').substr(1);
				cur_lang = $(this).attr('class');
				lang = $(this).attr('title');
				$('div#' + article + ' div.' + cur_lang).hide();
				$('div#' + article + ' div.' + lang).show();
				$('div#' + article + ' .fmore').hide();
				$('.f1009 .more a').text('More');
				return false;
		});

		/**
		 * Login Form
		 */
		 // Auto-value
		$('#login_form .login_form_field').each(function(){
				$(this).val($(this).attr('rel'));
		});
		$('#login_form .login_form_field').blur(function(){
				if ($(this).val() == ''){
					$(this).val($(this).attr('rel'));
				}
		}).click(function(){
			if ($(this).val() == $(this).attr('rel')){
				$(this).val('');
			}
		});

		// LOGIN POPUP
		$('#login_form_wrapper p.title a').click(function(){
				$('#login_form_wrapper').toggleClass('selected');
				$('#login_form_wrapper #login_form_cnt').toggle();
				return false;
		});
		// END LOGIN POPUP
		$('#login_form_wrapper').mouseup(function() {
				return false;
		});
		// CLOSE POPUP
		$(document).mouseup(function(e) {
				if($(e.target).parent('#login_form_wrapper').length==0) {
					$('#login_form_wrapper #login_form_cnt').hide();
					$('#login_form_wrapper').removeClass('selected');
				}
		});

		$('.tabbed_widget .menu li:not(.active) a').live('click', function(){
				var widget_id = $(this).parents('.tabbed_widget').attr('id');
				$('#' + widget_id + ' .menu li').removeClass('active');
				$(this).closest('li').addClass('active');
				var link_id = $(this).attr('id');
				$('.' + widget_id + '_list ul').hide();
				$('.' + widget_id + '_list ul#list_' + link_id).fadeIn('fast');
				$('.' + widget_id + '_list .' + widget_id + '_more').hide();
				$('.' + widget_id + '_list #link_' + link_id).show();
				return false;
		});

		$('#top_login a').click(function(){
				topFormToggle($('#top_form .top_form_inner'), $('#newsletter_register'));
				return false;
		});

		$('#top_newsletter a').click(function(){
				topFormToggle($('#newsletter_register'), $('#top_form .top_form_inner'));
				return false;
		});

		$('#features a').click(function(){
				$('#top_form:visible').slideUp();
				$('#main_sub_nav_container').toggle();
				$(this).toggleClass('submenu');
				return false;
		});

		/* added #forgotpass */
		$('#forgotpass').click(function(){
				$('#reset_pass_form, .column2 .register').fadeToggle();
				return false;
		});

		$('#login').click(function(){
				$('#register').removeClass('active');
				$('#login').addClass('active');
				$('#jt_register').fadeOut('fast', function() {
						$('#jt_login').show();
				});
				return false;
		});

		$('#register,#register_link').click(function(){
				$('#login').removeClass('active');
				$('#register').addClass('active');
				$('#jt_login').fadeOut('fast', function() {
						$('#jt_register').show();
				});
				return false;
		});

		$('#register_to_subscribe').click(function(){
				$('#login').removeClass('active');
				$('#register').addClass('active');
				$('#jt_login').hide();
				$('#jt_register').show();

				$('#newsletter_register').fadeOut('fast', function(){
						$('#top_form .top_form_inner').show();
				});
				return false;
		});

		// CLOSE POPUP
		$(document).mouseup(function(event) {
				$('#blackbox:visible').remove();

				if($(event.target).parents('#top_login').length!=0) {
					return;
				}
				if($(event.target).parents('#top_newsletter').length!=0) {
					return;
				}
				if($(event.target).parents('#features').length!=0) {
					return;
				}

				if($(event.target).parents('#top_form').length==0) {
					$('#top_form:visible').slideUp();
				}

				if($(event.target).parents('#main_sub_nav_container').length==0) {
					$('#main_sub_nav_container:visible').hide();
					$('#features a').removeClass('submenu');
				}
		});

		$(document).keyup(function(event) {
				$('#blackbox:visible').remove();
				if (event.keyCode == '27') {
					$('#top_form:visible').slideUp();
					$('#main_sub_nav_container:visible').hide();
					$('#features a').removeClass('submenu');
				}
		});

		$('.update_karma').live('click', changeKarma);

		$('#load_next_articles').click(function(){
				var link = $(this);
				if (link.hasClass('ajaxLoading')) {
					return false;
				}
				var url = link.attr('href');
				var params = url.split('/')
				var page_index = url.split('/').indexOf('page');
				if (page_index == -1) {
					return false;
				} else {
					page_index++;
				}
				link.addClass('ajaxLoading');
				$.ajax({
						type: "GET",
						url: url
				}).success(function(json){
					var results = '';
					if (!json) {
						return false;
					}
					if (json.next) {
						params[page_index] = json.page + 1;
						link.attr('href', params.join('/'));
					} else {
						link.remove();
					}
					$.each(json.articles, function(i,article){
							results += '<article class="article_primary2';
							if (typeof article.image_url != 'undefined') {
								results += ' narrow_article';
							}
							results += '">' + "\n";
							results += '<div class="article_excerpt_wrapper">';
							results += '<h2 class="article_title_primary"><a href="' + article.url + '">' + article.post_title + '</a></h2>' + "\n";
							results += '<p class="article_date"><a class="category_title" href="' + article.category_url + '" title="' + article.category_name + ' News">' + article.category_name + '</a>' + "\n";
							results += '<time datetime="' + article.date_iso + '">' + article.date + '</time> ( <a class="comment" href="' + article.url + '#comments">' + article.comment_total + '</a> )';
							if (typeof article.author_url != 'undefined' && typeof article.author_name != 'undefined') {
								results += "\n"
								+ '<span class="author_name">By <a href="'
								+ article.author_url
								+ '">'
								+ article.author_name
								+ '</a></span>';
							}
							results += '</p>' + "\n";
							if (typeof article.expired != 'undefined') {
								results += '<p class="article_expired">This article is expired.</p>' + "\n";
							} else if (typeof article.excerpt != 'undefined') {
								results += '<p class="article_excerpt"><a href="' + article.url + '">';
								var readmore = ' <span class="read">Read</span>';
								if (typeof article.postmeta != 'undefined') {
									if ('EventVenue' in article.postmeta || 'EventDateStart' in article.postmeta || 'EventDateEnd' in article.postmeta) {
										readmore = '';
									}
								}
								results += article.excerpt + readmore + '</a></p>' + "\n";
							}

							if (typeof article.postmeta != 'undefined') {
								if ('EventVenue' in article.postmeta || 'EventDateStart' in article.postmeta || 'EventDateEnd' in article.postmeta) {
									if ('EventDateStart' in article.postmeta || 'EventDateEnd' in article.postmeta) {
										results += '<p class="eventdate"><span>When:</span>' + "\n";
										if ('EventDateStart' in article.postmeta) {
											results += article.postmeta['EventDateStart'] + "\n";
										}
										if ('EventDateStart' in article.postmeta && 'EventDateEnd' in article.postmeta) {
											results += ' - ' + "\n";
										}
										if ('EventDateEnd' in article.postmeta) {
											results += article.postmeta['EventDateEnd'] + "\n";
										}
									}
									if ('EventVenue' in article.postmeta) {
										results += '<p class="eventplace"><span>Place:</span> ' + article.postmeta['EventVenue'] + '</p>' + "\n";
									}
								}
							}

							results += '</div>';
							if (typeof article.image_url != 'undefined') {
								results += '<p class="thumbnail"><a href="'
									+ article.url + '"><img src="'
									+ article.image_url + '" alt="'
									+ article.post_title + '" title="'
									+ article.post_title + '" width="'
									+ article.image_width +'" height="'
									+ article.image_height + '" /></a></p>' + "\n";
							}
							results += '</article>' + "\n";
					});
					$('#article_list').append(results);
					link.removeClass('ajaxLoading');
				});
				return false;
		});

		$('.photo_gallery_thumbnails a').click(function(){
				var pic_loc = $('#photo_gallery_display');
				var image_link = $(this).attr('href');
				pic_loc.empty();
				pic_loc.animate({
				'bottom': '+50',
				'height': 420
				}, function(){
				        pic_loc.hide().html('<img src="' + image_link + '" alt="" />').fadeIn();
				});
				return false;
		});

		$('.article_image_inner a').click(function(){
				display_enlarged_picture($(this));
				return false;
		});

		$(window).resize(function() {
				$('#blackbox:visible').remove();
		});

		$('input, textarea').placeholder();

		/** Facebook connect */
		$('.facebook_connect_login_button').click(function(){
				FB.login(function(response) {
						if (response.authResponse) {
							window.location.reload();
						}
				}, {scope: 'user_birthday,email'});
				return false;
		});
});

