
/*
*************************************************

THOMSON REUTERS
JavaScript Functions

Created by the friendly folks at Happy Cog
http://www.happycog.com/

modified for use on science by cweeks 10 july 2009
removed lightbox and sIFR

*************************************************
*/

// VARIABLES --------------------------------------------------


// browse tags
var BROWSE_COLUMNS = 4;
var COLUMN_DELIMITER = 8;
var $j = jQuery.noConflict();




// INITIAL ACTIONS --------------------------------------------------

function tr(){
	
	//home page
	createFlashStories();
	populateQuoteBox();
	roundTickerCorners();
	
	// Browse Products page
	initProductBrowse();
	
	// general functions
	greyInitialValues();
	initTabs();

}


$j(document).ready(function() { tr(); });







// FUNCTIONS --------------------------------------------------


/* =======================================
	Generic functions 
======================================= */

function greyInitialValues(){
	
	$j('input.filled').each(function(){
	
		this.startText = $j(this).attr('value');
	
	}).focus(function(){		
		
		if($j(this).val() == this.startText){
			$j(this).val('');
			$j(this).removeClass('filled');	
		}
		
	}).blur(function(){
		
		if($j(this).val() == ''){
			$j(this).val(this.startText);
			$j(this).addClass('filled');
		}
		
	});	
	
}


/* =======================================
	Tabs	
	http://docs.jquery.com/UI/Tabs
======================================= */

function initTabs(){ $j('.tabset').tabs(); }




/* =======================================
	Home page stories
======================================= */


/* Flash version */

function createFlashStories(){
	
	if($j('.story').size() > 0){
		
		var numStories = $j('.story').size();
		
		$j('.story:eq(0)').parent().append('<div id="flash-stories"></div>');
		
		// flashvars
		var rawBackgrounds = new Array();
		var rawHeadlines = new Array();
		var rawBlurbs = new Array();
		
		$j('.story').each(function(n){
			rawBackgrounds.push($j(this).css('backgroundImage'));
			rawHeadlines.push(encodeURI($j(this).find('h2:eq(0)').html()));
			if(n > 0){
				rawBlurbs.push('breakerbreaker' + encodeURI($j(this).find('p:eq(0)').html()));
			}else{
				rawBlurbs.push(encodeURI($j(this).find('p:eq(0)').html()));
			}
		});
		
		// Flash params	
		
		var flashvars = { 
			
			numStories: $j('.story').size(),
			rawBackgrounds: rawBackgrounds,
			rawHeadlines: rawHeadlines,
			rawBlurbs: rawBlurbs
			
		}
		
		swfobject.embedSWF("/now/swf/stories2.swf", "flash-stories", "920", "308", "9.0.0","/now/swf/expressInstall.swf", flashvars, { menu: 'false'}, {});
		
	}
	
}


/* =======================================
	Home page Reuters box
======================================= */

function populateQuoteBox(){
	
	$j('#reuters #quote').attr('value', $j('label[for="quote"]').html());
	$j('#reuters #quote').addClass('filled');
	$j('label[for="quote"]').remove();
	
}

function loadTicker(loc, el){
	
	$j('#ticker .toggle li.current').removeClass('current');
	el.parent().addClass('current');
	
	$j('#market-news').load(loc, function(){
		$j('#market-news table:eq(0)').hide();
		$j('#market-news table:eq(0)').fadeIn('normal');
	});	
	
	return false;
	
}

function roundTickerCorners(){
	
	$j('#reuters #ticker .toggle a').append('<b class="tl"></b><b class="tr"></b><b class="bl"></b><b class="br"></b>');
	$j('#selected_tags a').append('<b class="tl"></b><b class="tr"></b><b class="bl"></b><b class="br"></b>');
	
}



/* =======================================
	Browse Products by Tag
======================================= */

function initProductBrowse(){
	
	if($j('#product_browse').size() > 0){
		
		$j('#product_browse #tag_chooser form label').each(function(){
		
			$j('#product_browse #tag_chooser').append('<div class="tag-section" id="' + $j(this).attr('for') + '"><h3 class="sIFR-ignore">' + $j(this).html() + '</h3><ul class="tags"></ul></div>');
			
			$j(this).next().children().each(function(m){					

							
				if($j(this).children().size() > 0){ // if this is an <optgroup>				
					
					var kids = $j(this).children().size();
					
					// create label
					$j('#tag_chooser .tag-section:last-child ul.tags').append('<li class="nested"><span class="category">' + $j(this).attr('label') + '</span></li>');				
					
					
					// create new nested <ul> or <table>
					if(kids > COLUMN_DELIMITER){
						$j('#tag_chooser .tag-section:last-child ul.tags > li:last-child').append('<table><tr><td></td><td></td><td></td><td></td></tr></table>');
						
						var perColumn = Math.floor(kids/4);
						var overflowColumns = kids%4;
						var columnNums = [];
						var currentColumn = 0;
						var columnCounter = 0;
						
						for(var i = 0; i <= 3; i++){
							if(i < overflowColumns){
								columnNums.push(perColumn+1);
							}else{
								columnNums.push(perColumn);
							}							
						}					
						
						$j('.tags table').hide();						
						
					}else{
						$j('#tag_chooser .tag-section:last-child ul.tags > li:last-child').append('<ul></ul>');	
						$j('ul.tags ul').hide();					
					}			
					
					
					// populate new nested <ul> or <table>
					$j(this).children().each(function(n){
							
						if(kids > COLUMN_DELIMITER){
							if(columnCounter == columnNums[currentColumn]){
								currentColumn++;
								columnCounter = 1;
							}else{
								columnCounter++;
							}		
							
							if($j(this).attr('selected')){
								$j('#tag_chooser .tag-section:last-child ul.tags > li:last-child > table td').eq(currentColumn).append('<a class="selected" href="#">' + $j(this).html() + '</a>');
							}else{
								$j('#tag_chooser .tag-section:last-child ul.tags > li:last-child > table td').eq(currentColumn).append('<a href="#">' + $j(this).html() + '</a>');								
							}							
							
						}else{
							if($j(this).attr('selected')){
								$j('#tag_chooser .tag-section:last-child ul.tags > li:last-child > ul:eq(0)').append('<li><a class="selected" href="#">' + $j(this).html() + '</a></li>');
							}else{
								$j('#tag_chooser .tag-section:last-child ul.tags > li:last-child > ul:eq(0)').append('<li><a href="#">' + $j(this).html() + '</a></li>');
							}
						}							

					});
					
				}else{ // if this is an <option>
					
					$j('#tag_chooser .tag-section:last-child ul.tags').addClass('one_level');
					
					if($j(this).parent().children().size() > COLUMN_DELIMITER){	
						if($j(this).attr('selected')){
							$j('#tag_chooser .tag-section:last-child ul.tags').append('<li class="column' + Math.floor(m/BROWSE_COLUMNS) + '"><a class="selected" href="#">' + $j(this).html() + '</a></li>');
						}else{
							$j('#tag_chooser .tag-section:last-child ul.tags').append('<li class="column' + Math.floor(m/BROWSE_COLUMNS) + '"><a href="#">' + $j(this).html() + '</a></li>');
						}					
						
					}else{
						$j('#tag_chooser .tag-section:last-child ul.tags').append('<li><a href="#">' + $j(this).html() + '</a></li>');
					}
				}
				
			});		
		
		});	
		
		//label handler
		$j('span.category').mouseenter(function(){
			if($j(this).next().is(':hidden')){	
				$j(this).removeClass('category').addClass('category-over');
			}else{
				$j(this).removeClass('category-collapse').addClass('category-collapse-over');
			}						
		}).mouseleave(function(){
			if($j(this).next().is(':hidden')){
				$j(this).removeClass('category-over').addClass('category');
			}else{
				$j(this).removeClass('category-collapse-over').addClass('category-collapse');
			}
		}).click(function(){
			if($j(this).next().is(':hidden')){
				$j(this).removeClass('category category-over').addClass('category-collapse-over');
				$j(this).next().show();
			}else{
				$j(this).removeClass('category-collapse category-collapse-over').addClass('category-over');
				$j(this).next().hide();
			}
		});
		
		
		
	
		$j('#product_browse #tag_chooser form').hide();
		
		// h3 handler
		$j('.tag-section h3').mouseenter(function(){
			$j(this).addClass('over');
		}).mouseleave(function(){
			$j(this).removeClass('over');
		}).click(function(){
			
			// highlight section
			if($j(this).hasClass('current')){
				$j(this).removeClass('current').addClass('over');
			}else{
				$j(this).removeClass('over').addClass('current');
			}
			
			// open/close tags			
			if($j(this).next().css('left') == '-9999px'){
				$j(this).next().css({'left': '0'});
				$j(this).next().hide();
				$j(this).next().slideDown('normal');
			}else{
				$j(this).next().slideUp('fast', function(){
					$j(this).css({'left': '-9999px'});
				});
				
			}
		});
	
	}
	
}
