// ========= Allow multiple onload events
function addLoadEvent(func) { 
	var oldonload = window.onload; 
	if (typeof window.onload != 'function') { 
		window.onload = func; 
	} else { 
		window.onload = function() { 
			if (oldonload) { 
				oldonload(); 
			} 
			func(); 
		};
	} 
}

// ========= External site links open in new window
function externalLinks() {
	var anchors, i;
	if (!document.getElementsByTagName) { return; }
	anchors = document.getElementsByTagName("a");
	for (i=0; i<anchors.length; i++) {
		anchor = anchors[i];
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") {
			anchor.target = "_blank";
		}
	}
}

// ========= Copyright Date
function copyright() {
	var d, yr;
	d = new Date();
	yr = d.getFullYear();
	if (yr!=2008)
	document.write("- "+yr);
}

// ========= Execute all the onload Events
addLoadEvent(externalLinks); 

// ========= Jquery HoverIntent
(function($) {
	$.fn.hoverIntent = function(f,g) {
		var cfg, cX, cY, pX, pY, track, compare, delay, handleHover;
		cfg = {
			sensitivity: 7,
			interval: 100,
			timeout: 0
		};
		cfg = $.extend(cfg, g ? { over: f, out: g } : f );
		track = function(ev) {
			cX = ev.pageX;
			cY = ev.pageY;
		};
		compare = function(ev,ob) {
			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
			if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
				$(ob).unbind("mousemove",track);
				ob.hoverIntent_s = 1;
				return cfg.over.apply(ob,[ev]);
			} else {
				pX = cX; pY = cY;
				ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
			}
		};
		delay = function(ev,ob) {
			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
			ob.hoverIntent_s = 0;
			return cfg.out.apply(ob,[ev]);
		};
		handleHover = function(onThis) {
			var p, ev, ob;
			p = (onThis.type == "mouseover" ? onThis.fromElement : onThis.toElement) || onThis.relatedTarget;
			while ( p && p != this ) { try { p = p.parentNode; } catch(onThis) { p = this; } }
			if ( p == this ) { return false; }
			ev = jQuery.extend({},onThis);
			ob = this;
			if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }
			if (onThis.type == "mouseover") {
				pX = ev.pageX; pY = ev.pageY;
				$(ob).bind("mousemove",track);
				if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}
			} else {
				$(ob).unbind("mousemove",track);
				if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
			}
		};
		return this.mouseover(handleHover).mouseout(handleHover);
	};
})(jQuery);

// ========= Jquery Functions and variables
function showNav() { $("ul", this).slideDown(200); }
function hideNav() { $("ul", this).slideUp(200); }

// ========= Jquery Onload Events
$(document).ready(function(){
						   
// ========= Nav Hover
	
	// ==== Current Nav background change
	$("#main_nav div").hover(function(){
		$(this).addClass("on");				 
	}, function () {
		$(this).removeClass("on");
	});

	// ==== Dropdowns
	$("#navigation li.primary ul").css("visibility", "visible").css("display", "none");
	$("#navigation li.primary:hover ul").css("visibility", "visible");
	$("li.primary").hoverIntent({
		sensitivity: 5,
		interval: 100,
		over: showNav,
		timeout: 500,
		out: hideNav
	});
	
	// Make inline labels for inputs with titles
	$('input[title]').each(function() {
		if($(this).val() === '') {
			$(this).val($(this).attr('title'));
		}
		$(this).focus(function() {
			if($(this).val() === $(this).attr('title')) {
				$(this).val('').addClass('focused');
			}
		});
		$(this).blur(function() {
			if($(this).val() === '') {
				$(this).val($(this).attr('title')).removeClass('focused');
			}
		});
	});

	// variables for form-block
	var showform = {
		'width' : '375px',
		'z-index' : '500',
		'-moz-box-shadow' : '4px 3px 5px #888888',
		'-webkit-box-shadow' : '4px 3px 5px #888888',
		'box-shadow' : '4px 3px 5px #888888'
	};
	var hideform = {
		'width' : '180px',
		'z-index' : '400',
		'-moz-box-shadow' : '',
		'-webkit-box-shadow' : '',
		'box-shadow' : ''
	};
	// functions for form-block
	function showblock(input,currentcat) { 
		$(".inside", input).toggleClass("over");
		$(input).css(showform);
		
		var parentblock = $(input).parent();
					
		// rfp stuff
		if ( $(parentblock).attr("id") == "rfp" ) {
			$(parentblock).find(".button").attr("value","submit");
		}
		// newsletter stuff
		else if ( $(parentblock).attr("id") == "newsletter" ) {
			$(parentblock).find(".button").attr("value","subscribe");
			$(parentblock).find("h2:first").text();
			$(parentblock).find(".email-temp").hide();
			var emailtemp = $(parentblock).find(".email-temp").attr("value");
			if (emailtemp != "Your Email Address") {
				$(parentblock).find(".email-newsletter").attr("value", emailtemp);
			};
			
			// change interests select into ul	
			var $interests = $('#interests');
			var $alloptions = $interests.find("option");
			if ($('#interests-list').length == 0) {
				$interests.after("<ul id=interests-list></ul>");
				$interests.hide();
				$alloptions.each(function(i) {
					$('#interests-list').append('<li rel="'+$(this).val()+'">'+$(this).text()+'</li>');
				});
				$('#interests-list li:first').addClass("current");
				
				// clicking on interests
				$("#interests-list li").click(function(event) {
					event.preventDefault();
					$(this).siblings(".current").removeClass("current");
					if ($(this).hasClass("current")) {
						null;
					} else {
						$(this).addClass("current");
						var currentli = $("#interests-list .current").attr("rel");
						$('#interests').val(currentli);
					};
				});
			};
		}
		// newsletter-picker stuff
		else if ( $(parentblock).attr("id") == "newsletter-picker" ) {
			$(parentblock).show();
			$(parentblock).find(".button").attr("value","subscribe");
			
			if ( currentcat == 'basic-cat' ) {
				$('#interests').val(currentcat);
				$(parentblock).find("h2:first span").text('');
			} else {
				$('#interests').val(currentcat);
				$(parentblock).find("h2:first span").text($('#interests option:selected').text());
			}
			
			// make and display overlay
			$('body').append('<div class="overlay"></div>');
		};
	};
	function hideblock(input) {
			$(input).parent(".inside").toggleClass("over");
			$(input).parents(".form-block").css(hideform);
			$(input).parents(".form-block").find(".button").attr("value","go");
			$(input).parents("#newsletter").find(".email-temp").show();
			$(input).parents("#newsletter-picker").hide();
			$(".overlay").remove();
	};
	$(".form-block").submit(function(event) {
		if ($(this).width() == "180"){
			event.preventDefault();
			showblock(this);
		} else {
			// run validation
			if ( $(this).validate().form() == false ) {
				// failed, stop.
				event.preventDefault();
			} else {
				// run script
			};
		};
	});
	
	var interests = $('#interests').clone();
	
	$(".signup").bind("click", function(event){
			event.preventDefault();
			$('#newsletter-picker #interests').hide();
			
			if ( $(this).parent().hasClass('basic-cat') ) {
				$('#newsletter-picker #interests').remove();
				if ( $('#newsletter-picker .basic-cat').length == 0 ) { $('#newsletter-picker .cancel').before('<input name="bacc" type="hidden" value="49613" class="basic-cat" />'); };
				var currentcat = 'basic-cat';
			} else {
				$('#newsletter-picker .basic-cat').remove();
				if ( $('#newsletter-picker #interests').length == 0 ) { $('#newsletter-picker .cancel').before( interests ); };
				var currentcat = $(this).parent().attr('rel');
			};
			showblock("#newsletter-picker .form-block",currentcat);
	});
		
	// click cancel button
	$(".form-block .cancel").bind("click", function(event){
		event.preventDefault();
		hideblock(this);
	});
});