(function($){
	
	
	$.fn.exists = function()
	{
		return $(this).length>0;
	};
	
	
	/*--------------------------------------------------------------------------------------------
		setup_nav
	--------------------------------------------------------------------------------------------*/
	function setup_nav()
	{
		//Add a class to the first child of the nav
		$('#nav_shareholder_review, #nav_sustainability_report, #nav_origin_foundation').addClass("nav_first_level");
		
		
		//Primary
		$('.nav_first_level').mouseover(function(){
			$(this).addClass("temp_over");
			$('.nav_first_level ul').hide();
			
			if(!$(this).hasClass("active")){
				$('.nav_first_level.active a').css({
					backgroundPosition: "0 50% !important"
				});
			}
			
			$(this).find("ul").show();
		})
		$('.nav_first_level').mouseout(function(){
			$('.nav_first_level.active a').css({
				backgroundPosition: "0 100% !important"
			});
			$(this).removeClass("temp_over");
		})
		
		//Hide all un-needed secondary links
		$('.nav_first_level ul').hide();
		$('.nav_first_level.active ul').show();
		
		//Secondary
		$('.menu ul > li').mouseover(function(){
			$(this).find("ul").show();
		})
		$('.menu ul > li').mouseout(function(){
			$(this).find("ul").hide();
			$('.menu ul li.active').find("ul").show();
		})
		
		
		//Tertiary
		var url_title = "";
		var old_url_title = "";
		var ter, ter_timer;
		$('.sub_navigation li').mouseover(function(){
			
			var link = $(this).attr("rel").split("/");
			for(i = 5; i > 0; i = i-1){

				if(link[i] != ""){
					old_url_title = url_title;
					url_title = link[i];
					break;
				}
			}
			
			if(url_title != old_url_title){
				$('#tertiary_'+old_url_title).hide();
			}
			ter = $('#tertiary_'+url_title);
			ter.show().addClass("open_tertiary_nav");
			
			clearTimeout(ter_timer);
			ter_timer = setTimeout(function(){
				ter.hide();
			}, 1000);
			
		})
		$('.tertiary_nav').mouseleave(function(){
			$(this).hide();
		});
		$('.tertiary_nav').mouseover(function(){
			clearTimeout(ter_timer);
		})
		$('.sub_navigation li').hover(
			function(){
				clearTimeout(ter_timer);
			}, 
			function(){
				clearTimeout(ter_timer);
				ter_timer = setTimeout(function(){
					$('.open_tertiary_nav').hide();
				}, 250);
			}
		);
	}
	
	/*--------------------------------------------------------------------------------------------
		setup_slider
	--------------------------------------------------------------------------------------------*/
	var active_slide = 0;
	var slider_is_active = false;
	var auto_slide_call;
	function setup_slider()
	{
		$('.slide_content').hide().eq(0).show();
		$('.slider_image').hide().eq(0).show();
		
		$('#left_slider_trigger').click(function(){
			clearInterval(auto_slide_call);
			slider_is_active = true;
			active_slide --;
			slide_images();
			return false;
			
		});
		$('#right_slider_trigger').click(function(){
			clearInterval(auto_slide_call);
			slider_is_active = true;
			active_slide ++;
			slide_images();
			return false;
			
		});
		
		slide_images();
		
		auto_slide_call = setInterval(auto_slide, 10000);
		
	}
	function slide_images(){
    if (active_slide < 0) {
      active_slide = $('.slider_image').length -1;
    }

    if (active_slide > $('.slider_image').length -1) {
      active_slide = 0;
    }

		if(slider_is_active){
			$('.slide_content:visible, .slider_image:visible').fadeOut(function(){
				$('.slide_content').eq(active_slide).fadeIn();
				$('.slider_image').eq(active_slide).fadeIn();
			});
		}
		
	}
	
	function auto_slide(){
		slider_is_active = true;
		if(active_slide == $('.slider_image').length -1){
			active_slide = 0;
		}
		else{
			active_slide ++;
		}

		slide_images();
	}
	
	/*--------------------------------------------------------------------------------------------
		hide show footer
	--------------------------------------------------------------------------------------------*/
	function footer_control(){
		$('#footer_top a').click(function(){
			
			if($('#footer_inner:visible').length){
				$('#footer_inner').slideUp();
			}
			else{
				
				var y = $('#footer_inner').position().top + $(window).height();
				$('body, html').animate({
					scrollTop: y
				}, 500);
				$('#footer_inner').slideDown();
			}
			return false;
		});
	}
	
	/*--------------------------------------------------------------------------------------------
		Setup inputs
	--------------------------------------------------------------------------------------------*/
	function setup_inputs(){
		//Glossary
		$('#footer_glossary input').focus(function(){
			if($(this).val() == "Search Glossary..."){
				$(this).val("");
			}
		});
		$('#footer_glossary input').blur(function(){
			if($(this).val() == ""){
				$(this).val("Search Glossary...");
			}
		});
		
		//In the loop
		$('#name').focus(function(){
			if($(this).val() == "Your Name..."){
				$(this).val("");
			}
		});
		$('#name').blur(function(){
			if($(this).val() == ""){
				$(this).val("Your Name...");
			}
		});
		$('#email').focus(function(){
			if($(this).val() == "Email Address..."){
				$(this).val("");
			}
		});
		$('#email').blur(function(){
			if($(this).val() == ""){
				$(this).val("Email Address...");
			}
		});
	}
	
	/*--------------------------------------------------------------------------------------------
		Accordions
	--------------------------------------------------------------------------------------------*/
	function setup_accordions(){
		$('.accordion_content').hide();
		$('.accordion_header').click(function(){
			if($(this).parent().hasClass("open")){
				$(this).next().slideUp();
				$(this).parent().removeClass("open");
			}
			else{
				$(this).next().slideDown();
				$(this).parent().addClass("open");
			}
		});
		
		//If theres an id in the url the click that otherwise click the first
		var hash = window.location.hash;
		if(hash.substring(1)){
			window.location = "#" + hash.substring(1);
			$('#'+hash.substring(1)).click();
		}
		else{
			$('.accordion_header:first').click();
		}
	}
	
	/*--------------------------------------------------------------------------------------------
		GLosary
	--------------------------------------------------------------------------------------------*/
	function setup_glossary(){
	
		$("#glossary_form").submit(function(){
		
			var keywords = $("#glossary_keywords").val();
			
			window.location = "/glossary/#" + keywords;
		
			return false;
		
		});

		if($('body').hasClass("glossary_wrap")){
			$.ajax({
			  url: "/ajax/glossary.json",
			  dataType: 'json',
			  complete: function(r){
					glossary = r.responseText;
					glossary = jQuery.parseJSON( glossary );
					glossary = glossary.glossary;
					for(i=0; i < glossary.length; i++){
						highlight(" " +glossary[i].title + " ", glossary[i].glossary_description);
					}
					$(".acronym").each(function(){
						$(this).simpletip({
						   	fixed: true,
							content: $(this).attr("title")
						})
						$(this).attr("title", "");
					});
					glossary_ready();
				}
			});
		}
		else{
			glossary_ready();
		}
	}
	
		
	function highlight(word, description) {
				
		var element = $('.glossary_wrap .content p');
		
		var rgxp = new RegExp(word, 'gi');
		var find_word = word.replace(/^\s+|\s+$/g,""); 
		
		/*
		var upper_find_word = find_word.toUpperCase();
		if(find_word !== upper_find_word){	
			find_word = find_word.toLowerCase();
		}
		*/
					
	    var repl = ' <a href="/glossary/#'+find_word+'" class="acronym" title="'+description+'">' + find_word + '</a> ';
	    element.each(function(i){
			if($(this).parent().parent().attr("id") != "accordion_content_94"){
				var new_html = $(this).html().replace(rgxp, repl);
				$(this).html(new_html);
			}
	    });
	    
	}
	
	/*--------------------------------------------------------------------------------------------
		setup_utilities
	--------------------------------------------------------------------------------------------*/
	function setup_utilities()
	{
		var div = $('#utilities');
		
		var add_note = false;
		var feedback = false;
		
		
		// share
		$('#util_share').click(function(){
		
			if($("#util_feedback").parent().hasClass("active")){
				$("#util_feedback").parent().removeClass('active');
				
				$('#util_add_note_content_mask').animate({'height' : 'toggle', 'margin-bottom' : '0'}, 0);
				
			}
		
			if($(this).parent().hasClass('active'))
			{
				$(this).parent().removeClass('active');
				$('#util_share_content').hide();
			}
			else
			{
				$(this).parent().addClass('active');
				$('#util_share_content').show();
			}
			
			$('#util_feedback_content_mask').hide();
		});
		
		
		// add note
		$('#util_add_note').click(function(){
			
			
			$(this).parent().siblings('li').removeClass('active');
			
			if(add_note)
			{
				add_note = false;
				$(this).parent().removeClass('active');
				$('#util_add_note_content_mask').animate({'height' : 'toggle', 'margin-bottom' : '0px'}, 500);
			}
			else
			{
				add_note = true;
				var speed = 500;
				if(feedback)
				{
					feedback = false;
					$('#util_feedback_content_mask').animate({'height' : 'toggle', 'margin-bottom' : '0'}, 0);
					speed = 0;
				}
				
				$(this).parent().addClass('active');
				$('#util_add_note_content_mask').animate({'height' : 'toggle', 'margin-bottom' : '35px'}, speed);
			}
			
			
		});
		
		// feedback
		$('#util_feedback').click(function(){
		
		
			$(this).parent().siblings('li').removeClass('active');
			
			if(feedback)
			{
				feedback = false;
				$(this).parent().removeClass('active');
				$('#util_feedback_content_mask').animate({'height' : 'toggle', 'margin-bottom' : '0px'}, 500);
			}
			else
			{
				feedback = true;
				var speed = 500;
				if(add_note)
				{
					add_note = false;
					$('#util_add_note_content_mask').animate({'height' : 'toggle', 'margin-bottom' : '0'}, 0);
					
					speed = 0;
				}
				
				$(this).parent().addClass('active');
				$('#util_feedback_content_mask').animate({'height' : 'toggle', 'margin-bottom' : '35px'}, speed);
				
			}
			$('#util_share_content').hide();
			
		});
		
		$('#util_print').click(function(){
			window.print();
		})
	}
	
	/*--------------------------------------------------------------------------------------------
		Add note
	--------------------------------------------------------------------------------------------*/
	function setup_add_note(){
		$('#add_note_form').submit(function(){
			/*
			data = $(this).serialize();
			$.ajax({
				type: 'POST',
			  	url: "/ajax/save_note.php",
			  	data: data,
			  	success: function(data){
					$('#note_saved').fadeIn()
					setTimeout(function(){
						$('#note_saved').fadeOut()
					}, 2000)
				}
			});
			*/
			return false;

		})
		
		//get any existing notes
		/*	
		$.ajax({
			type: 'GET',
		  	url: "/ajax/get_note.php",
		  	data: data,
		  	success: function(data){
				if(data){
					$('#note_field').val(data)
				}
			}
		});
		*/
	}
	
	/*--------------------------------------------------------------------------------------------
		FAQs
	--------------------------------------------------------------------------------------------*/
	function display_faqs(){
		
		//body.feedback
		if($('body').hasClass("feedback")){
			$.ajax({
				url: "/faqs/data.json",
				dataType: 'json',
				success: function(d){
					if(d){
					
						var html = "";
						$(d).each(function(i){
							
							var question = stripslashes(decodeURIComponent((d[i].question + '').replace(/\+/g, '%20')));
							var answer = stripslashes(decodeURIComponent((d[i].answer + '').replace(/\+/g, '%20')));
						
							
							html += '<div class="accordion"><h2 class="accordion_header">'+question+'</h2><div class="accordion_content pad_bottom"><div class="accordion_1_col">'+answer+'</div><div class="clear"></div></div></div>';
						});
						
						$("#faq_display").html(html);
						//setup_accordions();
					
					}
				}
			});
		}
		
	}
	
	function stripslashes(str) {
		str=str.replace(/\\'/g,'\'');
		str=str.replace(/\\"/g,'"');
		str=str.replace(/\\0/g,'\0');
		str=str.replace(/\\\\/g,'\\');
		return str;
	}
	
	/*--------------------------------------------------------------------------------------------
		Glossary Page
	--------------------------------------------------------------------------------------------*/
	function setup_glossary_page(){
	

		$('#search_glossary').live('keyup', function(){

			do_search($(this).val());
		})
		$('#letters a').click(function(){
			$('#search_glossary').val("");
			$('#letters .selected').removeClass("selected");
			id = $(this).attr("id").split("_")[1];
			do_search(id);
			return false;
		})
		
		
		var hash = window.location.hash;
		if(hash.substring(1)){
			
			$('#search_glossary').val(hash.substring(1));
			do_search(hash.substring(1));
		}


		var first_letter = "";
		function do_search(v){
			if(v.length > 0){
				//get the first letter
				var letter = v.substring(0,1).toLowerCase();

				if(!isNaN(letter)){
					letter = "1";
				}

				if(first_letter != letter){
					$('#letters .selected').removeClass("selected");

					$('.glossary_letter').hide();
					$('#glossary_'+letter).show();

					$('#letter_'+letter).addClass("selected");

					first_letter = letter;
				}

			}
			else{
				$('#letters .selected').removeClass("selected");				
				$('.glossary_letter').hide();
			}
		}
		
		//Add the clears
		/*
		$('#glossary_c .definition:even').addClass("odd");
		$('#glossary_p .definition:even').addClass("odd");
		*/
		$('.glossary_letter').each(function(){
			
			$(this).find(".definition:even").addClass("odd")
			
		});
	}
	
	
	function setup_fancybox(){
		
		$('a').each(function(){
			if(this.href.indexOf(".jpg") > -1 || this.href.indexOf(".jpeg") > -1 || this.href.indexOf(".png") > -1 || this.href.indexOf(".gif") > -1){
				$(this).addClass("fancybox");
			}
		});
		
		$("a.fancybox").fancybox({
			'transitionIn'	:	'elastic',
			'transitionOut'	:	'elastic',
			'speedIn'		:	600, 
			'speedOut'		:	200, 
			'overlayShow'	:	true,
			'overlayColor'	: 	"#000"
		});
	}
	
	
	
	
	/*--------------------------------------------------------------------------------------------
		Document Ready
	--------------------------------------------------------------------------------------------*/
	
	
	$(document).ready(function()
	{
		display_faqs();
		setup_glossary();
		//glossary_ready();
		
		$("p small").parent().css({
			lineHeight: "10px"
		});
		
	});
	
	
	/*--------------------------------------------------------------------------------------------
		Window load
	--------------------------------------------------------------------------------------------*/
	$(window).load(function()
	{
		
	});
	
	function glossary_ready(){
		
		setup_nav();
		setup_slider();
		footer_control();
		//$('#footer_inner').hide();
		
		
		setup_accordions();
		setup_inputs();
		
		setup_utilities();
		setup_add_note();
		setup_glossary_page();
		setup_fancybox();
		
	}

	
	
})(jQuery);

