// Text Input Handler
function text_input_handler()
{	
	var selector = 'input[type="text"], \
					input[type="password"], \
					textarea';
	
	$(selector).each(function () {
		reset_inputs(this);
	});
	
	$(selector).focus(function () {
		clear_inputs(this);
	});
	
	$(selector).blur(function () {
		reset_inputs(this);
	});
	
	watch_form_submissions();
	watch_newsletter_subscriptions();
}
// End Text Input Handler

// Watch Newsletter Subscriptions
function watch_newsletter_subscriptions()
{
	$('#newsletter_form form.logged_out .email_address').keyup(function() {
		var email_address = $(this).attr('value');
		var form_action = '/member/register/newsletter/' + email_address + '/';
				
		$('#newsletter_form form.logged_out').attr('action', form_action);
	});
}
// End Watch Newsletter Subscriptions

// Zebra Table
function zebra_table()
{
	round_headings('table.zebra tr .first', 'left');
	round_headings('table.zebra tr .last', 'right');
	$('table.zebra tr:even').addClass('even');
	round_headings('table.zebra tr.even td.first', 'left');
	round_headings('table.zebra tr.even td.last', 'right');
}
// End Zebra Table

// Reset Inputs
function reset_inputs(input)
{
	var value = $(input).attr('value');
	var title = $(input).attr('title');
	var type	= $(input).attr('type');
	
	if (value == '' && type == 'password')
	{
		$(input).addClass('off');
	}
	else if (value == '' && title != '')
	{			
		$(input).attr('value', title);
	}
}
// End Reset Inputs

// Clear Inputs
function clear_inputs(input)
{
	var value = $(input).attr('value');
	var title = $(input).attr('title');
	var type	= $(input).attr('type');
	
	if (type == 'password')
	{
		$(input).removeClass('off');
	}
	else if (value == title)
	{			
		$(input).attr('value', '');
	}
}
// End Clear Inputs

// Watch Form Submissions
function watch_form_submissions()
{
	$('form').submit(function() {
		var form = this;
		var selector = 'input[type="text"], \
						textarea';
		
		$(selector).each(function() {
			if ($(this).attr('value') == $(this).attr('title'))
			{
				$(this).attr('value', '');
			}
		});		
	});
}
// End Watch Form Submissions

// Special Category Handler
function special_category_handler()
{
	$('#left_column .entry').each(function() {
		var id = $(this).attr('id');
		
		$('#' + id + ' h2 .special:last').addClass('last');
		$('#' + id + ' h2 .special:first').addClass('first');
		$('#' + id + ' h2 br:not(:last)').remove();
	});
	
	DD_roundies.addRule('#left_column .entry h2 .special.first.last', '3px 3px 3px 3px', true);
	DD_roundies.addRule('#left_column .entry h2 .special.first', '3px 0 0 3px', true);
	DD_roundies.addRule('#left_column .entry h2 .special.last', '0 3px 3px 0', true);
}
// End Special Category Handler

// Round Headings
function round_headings(selector, type)
{
	type = (typeof type == 'undefined') ? 'all' : type;
	
	if (type == 'left')
	{
		DD_roundies.addRule(selector, '3px 0 0 3px', true);
	}
	else if (type == 'right')
	{
		DD_roundies.addRule(selector, '0 3px 3px 0', true);
	}
	else if (type == 'top')
	{
		DD_roundies.addRule(selector, '3px 3px 0 0', true);
	}
	else if (type == 'bottom')
	{
		DD_roundies.addRule(selector, '0 0 3px 3px', true);
	}
	else
	{
		DD_roundies.addRule(selector, '3px 3px 3px 3px', true);
	}
}
// End Round Headings

// Add Edit Links
function add_edit_links()
{
	if (author == true)
	{
		$('#left_column .entry').each(function() {
			var id = $(this).attr('id');
			var entry_id = id.substr(6);
			var link = '<li class="edit"> \
							<a href="http://paidcontent.org/edit/index.php?S=0&amp;C=edit&amp;M=edit_entry&amp;weblog_id=1&amp;entry_id=' + entry_id + '" title="Edit" target="_blank"> \
								<img src="http://paidcontent.org/images/site/icon_edit.png" alt="Edit" width="10" height="11"/> \
							</a> \
							<a href="http://paidcontent.org/edit/index.php?S=0&amp;C=edit&amp;M=edit_entry&amp;weblog_id=1&amp;entry_id=' + entry_id + '" title="Edit" target="_blank">Edit</a> \
						</li>';
						
			$('#' + id + ' .entry_menu.bottom').append(link);
		});
	}
}
// End Add Edit Links

// Image Lightbox Handler
function image_lightbox_handler()
{
	$('.photo a.image_link').each(function() {
		var link_id = $(this).attr('id');
		var ids 		= link_id.split('_'); 
		var type		= 'image';

		if ($(this).hasClass('set'))
		{
			type = 'set';
		}
		
		var lightbox_selector	= '#lightbox_' + ids[0] + '_' + ids[1];
		var trigger 					= '.photo_' + ids[0] + '_' + ids[1] + ' a.image_link';
		var ajax_url					= '/ajax/' + type + '/' + ids[1] + '/';

		$(lightbox_selector).jqm({
			ajax: 		ajax_url, 
			ajaxText:	'<img src="http://paidcontent.org/images/site/ajax_indicator.gif" alt="AJAX Indicator" />',
			trigger:	trigger,
			overlay:	80
		});		
	});
}
// End Image Lightbox Handler

// Set Pagination Handler
function set_pagination_handler(selector)
{	
	$(selector + ' .pagination a.jump').ajaxify({
		target			: selector,
		params			: false,
		loading_img	: 'http://paidcontent.org/images/site/ajax_indicator.gif',
		method			: 'POST'
	});
}
// End Set Pagination Handler

// Registration / Account Info Handler
function registration_account_info_handler()
{	
	// State/Region Fields
	$('.member .form_chunk .state').hide();
	$('.member .form_chunk .region').hide();
	$('.member .form_chunk .region input').attr('disabled', true);
	$('.member .form_chunk .state select').attr('disabled', true);
	
	$('.member .form_chunk .country select').each(function() {
		change_state_region_field($(this).attr('value'));
	});
	
	$('.member .form_chunk .country select').change(function() {
		change_state_region_field($(this).attr('value'));
	});
	
	// Other Field
	$('.member .form_chunk .heard_about input').hide();
	
	$('.member .form_chunk .heard_about select').each(function() {
		show_hide_other($(this).attr('value'));
	});
	
	$('.member .form_chunk .heard_about select').change(function() {
		show_hide_other($(this).attr('value'));
	});
}
// End Registration / Account Info Handler

// Change State Region Field
function change_state_region_field(country)
{
	if (country == 'United States of America')
	{
		$('.member .form_chunk .region input').attr('disabled', true);
		$('.member .form_chunk .state select').attr('disabled', false);
		$('.member .form_chunk .state').fadeIn('slow');
		$('.member .form_chunk .region').hide();
	}
	else
	{
		$('.member .form_chunk .region input').attr('disabled', false);
		$('.member .form_chunk .state select').attr('disabled', true);
		$('.member .form_chunk .region').fadeIn('slow');
		$('.member .form_chunk .state').hide();
	}
}
// End Change State Region Field

// Show/Hide Other
function show_hide_other(value)
{
	if (value == 'Other')
	{
		$('.member .form_chunk .heard_about input').fadeIn('slow');
	}
	else
	{
		$('.member .form_chunk .heard_about input').hide();
	}
}
// End Show/Hide Other

// Ajaxify Handler
function ajaxify_handler()
{													
	// Entry share links
	$('.entry .entry_menu li.share a').each(function() {
		var div_id		= $(this).parents('div:eq(0)').attr('id');
		var entry_id	= div_id.substr(6);
		var html_code	= '<div class="indicator"><img src="http://paidcontent.org/images/site/ajax_indicator.gif" alt="AJAX Indicator" /></div> \
										 <div class="share_links"></div>';
		
		$('.entry .entry_menu.top li.share a').mouseup(function() {
			$.scrollTo('.entry_menu.bottom', 500);
		});
		
		$(this).attr('href', '/ajax/share_links/' + entry_id + '/');
		
		if ($(this).hasClass('link') == true && $(this).parents('ul:eq(0)').hasClass('bottom') == true)
		{
			$('#entry_' + entry_id + ' .entry_menu li.share a').ajaxify({
				target			: '#entry_' + entry_id + ' .share_links',
				params			: false,
				method			: 'POST',
				onStart			: function() 
								{
									if ($('#entry_' + entry_id + ' .share_links').length > 0)
									{
										$('#entry_' + entry_id + ' .share_links').remove();
										return false;
									}
									
									var remove_selector = '#entry_' + entry_id + ' .share_links, \
																				 #entry_' + entry_id + ' .email_share_form, \
																				 #entry_' + entry_id + ' .indicator';

									$(remove_selector).remove();
									$('#entry_' + entry_id).append(html_code);
									$('#entry_' + entry_id + ' .share_links').hide();
								},
				onComplete	: function()
							{
								$('#entry_' + entry_id + ' .indicator').remove();
								$('#entry_' + entry_id + ' .share_links').fadeIn('slow'); 
							}
			});
		}
	});
	
	// Entry email form
	$('.entry .entry_menu li.email a').each(function() {
		var div_id		= $(this).parents('div:eq(0)').attr('id');
		var entry_id	= div_id.substr(6);
		var html_code	= '<div class="indicator"><img src="http://paidcontent.org/images/site/ajax_indicator.gif" alt="AJAX Indicator" /></div> \
										 <div class="email_share_form"></div>';
		
		$('.entry .entry_menu.top li.email a').mouseup(function() {
			$.scrollTo('.entry_menu.bottom', 500);
		});
		
		$(this).attr('href', '/ajax/email_share_form/' + entry_id + '/');
		
		if ($(this).hasClass('link') == true && $(this).parents('ul:eq(0)').hasClass('bottom') == true)
		{
			$('#entry_' + entry_id + ' .entry_menu li.email a').ajaxify({
				target			: '#entry_' + entry_id + ' .email_share_form',
				params			: false,
				method			: 'POST',
				onStart			: function() 
								{
									if ($('#entry_' + entry_id + ' .email_share_form').length > 0)
									{
										$('#entry_' + entry_id + ' .email_share_form').remove();
										return false;
									}
									
									var remove_selector = '#entry_' + entry_id + ' .share_links, \
																				 #entry_' + entry_id + ' .email_share_form, \
																				 #entry_' + entry_id + ' .indicator';

									$(remove_selector).remove();
									$('#entry_' + entry_id).append(html_code);
									$('#entry_' + entry_id + ' .email_share_form').hide();
								},
				onComplete	: function()
							{
								$('#entry_' + entry_id + ' .indicator').remove();
								$('#entry_' + entry_id + ' .email_share_form').fadeIn('slow'); 
								text_input_handler();
							}
			});
		}
	});
	
	// Anonymous tip box
	$('#anonymous_tips .tip_form .button').attr('href', '/ajax/anonymous_tip_form/');
	
	$('#anonymous_tips .tip_form .button').ajaxify({
		target			: '#anonymous_tips .tip_form',
		params			: false,
		method			: 'POST',
		onStart			: function() 
							{
								$('#anonymous_tips').append('<img src="http://paidcontent.org/images/site/ajax_indicator.gif" alt="AJAX Indicator" class="indicator" />');
								$('#anonymous_tips .tip_form').hide();
							},
		onComplete	: function()
						{
							$('#anonymous_tips .indicator').remove();
							$('#anonymous_tips .tip_form').fadeIn('slow'); 
							text_input_handler();
						}
	});
	
	// Close comment
	$('.article .comments .comment .close_comment').each(function() {
		var close_link = $(this).attr('href');
		close_link = close_link.replace('&response=yes', '');
		
		$(this).attr('href', close_link);
	});
	
	$('.article .comments .comment .close_comment').ajaxify({
		target			: '.article .comments .comment .close_comment',
		params			: false,
		method			: 'POST',
		onSuccess		: function(options, comment_id)
						{
							$('.article .comments #comment_' + comment_id).fadeOut('slow');
						}
	});
}
// End Ajaxify Handler

// Fitted Handler
function fitted_handler()
{	
	$('.featured .target').fitted({
		'class' : {
			'hover' : 'pointer'
		}
	});
	
	$('.list .list_items .target').fitted({
		'class' : {
			'hover' : 'pointer'
		}
	});
}
// End Fitted Handler

// Ajaxify Snapshot
function ajaxify_snapshot()
{	
	var entry_id	= $('#right_column .earnings_snapshot').attr('id');
	var ajax_url	= '/ajax/earnings_data/' + entry_id.substr(6);

	$('#lightbox_earnings_data').jqm({
		ajax: 		ajax_url, 
		ajaxText:	'<img src="http://paidcontent.org/images/site/ajax_indicator.gif" alt="AJAX Indicator" />',
		trigger:	'#right_column .earnings_snapshot, #right_column .earnings_snapshot a', 
		overlay:	80
	});
		
	return false;
}
// End Ajaxify Snapshot

// Image Preload
function image_preload()
{
	load_image('http://paidcontent.org/images/site/ajax_indicator.gif');
	load_image('http://paidcontent.org/images/site/invisible_ajax_indicator.gif');
	
	if ($('body.news, body.article, body.topic').length > 0)
	{	
		load_image('http://paidcontent.org/themes/cp_global_images/lg_social_bookmarks/favicons/delicious.png');
		load_image('http://paidcontent.org/themes/cp_global_images/lg_social_bookmarks/favicons/digg.png');
		load_image('http://paidcontent.org/themes/cp_global_images/lg_social_bookmarks/favicons/facebook.png');
		load_image('http://paidcontent.org/themes/cp_global_images/lg_social_bookmarks/favicons/linkedin.png');
		load_image('http://paidcontent.org/themes/cp_global_images/lg_social_bookmarks/favicons/newsvine.png');
		load_image('http://paidcontent.org/themes/cp_global_images/lg_social_bookmarks/favicons/reddit.png');	
	}
}
// End Image Preload

// Load Image
function load_image(source)
{
	var img = new Image();
	img.src = source;
}
// End Load Image

// Font Size Handler
function font_size_handler()
{
	var text_size = $.cookie('exp_text_size');

	if (text_size == null || text_size == '')
	{
		text_size = 'smaller';
	}

	change_font_size(text_size);

	$('.entry_menu li.text a').click(function() {
		if ($(this).hasClass('on') == false)
		{
			text_size = $(this).attr('class');
			$.cookie('exp_text_size', $(this).attr('class'), { expires: 30, path: '/' });
			change_font_size(text_size);
		}
		
		return false;
	});
}
// End Font Size Handler

// Change Font Size
function change_font_size(text_size)
{
	$('.entry_menu li.text a').removeClass('on');
	$('.entry_menu li.text a.' + text_size).addClass('on');
	$('.article .entry .content').removeClass('larger smaller');
	$('.article .entry .content').addClass(text_size);
}
// End Change Font Size

// Scroll To Anchor
function scroll_to_anchor(selector)
{
	$(selector).click(function() {
		$.scrollTo('a[name="' + $(this).attr('href').substr(1) + '"]', 500);
		return false;
	});
}
// End Scroll To Anchor

// Do Height Match
function do_height_match(selector)
{
    var highest_column = 0;

    $(selector).each(function() {
        if ($(this).height() > highest_column)
        {
            highest_column = $(this).height();
        }
    });

    $(selector).height(highest_column);
}
// End Do Height Match 

// Fix Bio Width
function fix_bio_width()
{
	var photo_width = $('.bio_contents .photo').width();
	$('.bio_contents .bio').width(625 - photo_width);
}
// End Fix Bio Width

// Breaking News Handler
function breaking_news_handler()
{
	var breaking_height = $('.breaking.abn_box').height();
	$('.breaking.abn_box .alert_header').css('line-height', breaking_height - 22 + 'px');
}
// End Breaking News Handler

// Account Fields Handler
function account_fields_handler()
{
	var selector = '.member .account_info input[name="first_name"], \
									.member .account_info input[name="last_name"]';
	
	$(selector).keyup(function() {
		var name	= $(this).attr('name');
		var value	= $(this).attr('value');

		$('.member .password_info input[name="' + name + '"]').attr('value', value);
	});
}
// End Account Fields Handler

// Announcements & Breaking News Box Handler
function abn_box_handler()
{
	remove_closed_boxes();
	close_boxes_on_click();
}
// End Announcements & Breaking News Box Handler

// Remove Closed Boxes
function remove_closed_boxes()
{
	var closed_boxes = $.cookie('exp_closed_boxes');
	
	if (closed_boxes != null && closed_boxes != '')
	{
		closed_boxes = closed_boxes.split('|');

		var count = closed_boxes.length;

		for (var i = 0, length = count; i < length; ++i)
		{
		  $('#abn_box_' + closed_boxes[i]).remove();
		}
	}
}
// End Remove Closed Boxes

// Close Boxes On Click
function close_boxes_on_click()
{
	$('div.abn_box a.close_box').click(function() {
		var parent_id	= $(this).parents('div:eq(0)').attr('id');
		var alert_id	= parent_id.substr(8) ;

		$('#' + parent_id).fadeOut('slow', function() { 
			$('#' + parent_id).remove();
		});
		
		var closed_boxes = $.cookie('exp_closed_boxes');

		if (closed_boxes == null || closed_boxes == '')
		{
			closed_boxes = alert_id;
		}
		else
		{
			closed_boxes = closed_boxes + '|' + alert_id;
		}

		$.cookie('exp_closed_boxes', closed_boxes, { expires: 30, path: '/' });
		
		return false;
	});
}
// End Close Boxes On Click

// Fix Article Columns
function fix_article_columns()
{
	if (segs != 'article/print')
	{
		var left_column_width = 640;

		if ($('.entry_column .photo img').length > 0)
		{
			var image_width = $('.entry_column .photo img').width();

			var content_width = 640 - 10 - image_width;

		  $('.entry .entry_column').css('width', image_width + 'px');
			$('.entry .content').css('width', content_width + 'px');
		}
		else
		{
			$('.entry .entry_column').css('width', '200px');
			$('.entry .content').css('width', '430px');
		}
	}
}
// End Fix Article Columns

// Fix Vodpod Links
function fix_vodpod_links()
{
	// Fix See All Link	
	var vodpod_see_all  = 'See All Videos &raquo;';
	
	$('#vodpod_widget div.vodpod_footer a.vodpod_see_all').html(vodpod_see_all);
	$('#vodpod_widget div.vodpod_footer a.vodpod_see_all').attr('href', 'http://videos.paidcontent.org/');
	
	// Fix Next/Previous Links
	var next = 'Next &raquo;';
	var prev = '&laquo; Previous';

	$('#vodpod_paging_next a').html(next);
	$('#vodpod_paging_prev a').html(prev);
}
// End Fix Vodpod Links

// Fix Content Media
function fix_content_media()
{
	var content_width	= $('.entry .content').width();
	var selectors		= '.entry .content img, \
						   .entry .content embed, \
						   .entry .content object';
	
	$(selectors).each(function() {
	    resize_object(this, content_width);
	});
}
// End Fix Content Media

// Resize Object
function resize_object(obj, limit)
{
	var max_width	= limit;
    var img_ratio	= 0;
    var img_width	= $(obj).width();
	var img_height	= $(obj).height();
	
	if(img_width > max_width)
	{
        img_ratio = max_width / img_width;
        $(obj).css("width", max_width);
        $(obj).css("height", img_height * img_ratio);
    }
}
// End Resize Object

// Main Menu
function main_menu()
{
	DD_roundies.addRule('#network_menu a', '3px 3px 0 0', true);
}
// End Main Menu

/*
================
 Document Ready 
================
*/

$(document).ready(function()
{
	//	Common	
	main_menu();
	abn_box_handler();
	text_input_handler();
	image_lightbox_handler();
	ajaxify_handler();
	$('#contributors li:last').addClass('last');
	
	// Area-specific scripts		
	switch (site_area)
	{
		case 'news':
			fitted_handler();
			add_edit_links();
			$('.news #left_column .entry:first').addClass('first');
			fix_content_media();
			break;
		
		case 'archives':
			$('.archives #left_column .entry:first').addClass('first');
			break;
		
		case 'partner':
			$('#other_partner_headlines li:last').addClass('last');
			break;
			
		case 'list':
			fitted_handler();
			$('.list .list_items li:last').addClass('last');
			break;
			
		case 'topic':
			$('#top_headlines li:last').addClass('last');
			$('.nielson ul, .twenty_four_seven ul').each(function() {
				$(this).children(':last').addClass('last');
			});
			break;
			
		case 'topics':
			$('#topic_list ul.subcats').each(function() {
				$(this).children('li:last').addClass('last');
			});
			break;
			
		case 'article':
			font_size_handler();
			scroll_to_anchor('.entry_menu.top .comments a');
			scroll_to_anchor('.entry_menu.bottom .comments a');
			scroll_to_anchor('.comments a.button');
			$('#related ul li:last').addClass('last');
			do_height_match('.article #left_column .popular_and_headlines ul');
			fix_content_media();
			break;

		case 'events':
			break;
			
		case 'event':
			break;

		case 'reports':
			$('#left_column .report:odd').addClass('odd');
			do_height_match('.reports .report h2');
			do_height_match('.reports .report .info .description');
			do_height_match('.reports .report .info .topics');
			break;

		case 'member':
			account_fields_handler();
			registration_account_info_handler();
			break;
			
		case 'twitter':
			$('.tweet:last, .twitter_menu li:last').addClass('last');
			start_twitter_refresh('1');
			break;
			
		case 'bio':
			$('.tweet:last').addClass('last');
			start_twitter_refresh('1');
			fix_bio_width();
			break;

		case 'member':
			break;
						
		case 'results':
			do_search_tasks(); 
			break;

		default: break;
	}
});