﻿// Utilities
var Utils = {
	ExternalLinks: function() {
		/* XHTML Compliant Open Window */
		$('a.external').each(function() {
			$(this).attr("target", "_blank");
		});
	},
	Ie6NavHelper: function() {
		// Son of Suckerfish IE 6 Dropdown Helper
		$("#nav_main li").each(function() {
			var currentLi = $(this);

			currentLi.mouseover(function() {
				currentLi.addClass("ieHover");
			}).mouseout(function() {
				currentLi.removeClass("ieHover");
			});
		});
	},
	PreloadImages: function() {
		/* Image Pre-Loader */
		if (document.images) {
			if (typeof (document.preload) == 'undefined') {
				document.preload = new Object();
			}

			document.preload.loadedimages = new Array();
			var arglength = arguments.length;

			for (arg = 0; arg < arglength; arg++) {
				document.preload.loadedimages[arg] = new Image();
				document.preload.loadedimages[arg].src = arguments[arg];
			}
		}
	},
	WriteSafeEmail: function(username, hostname, tld) {
		// Generate SPAM Safe E-Mails
		var atSign = "&#64;";
		var appearance = "";

		/* Optional 4th argument for appearance */
		if (arguments[3] == null) {
			appearance = username + atSign + hostname + "." + tld;
		}
		else {
			appearance = arguments[3];
		}

		var addr = username + atSign + hostname + "." + tld;
		document.write("<" + "a" + " " + "href=" + "mail" + "to:" + addr + " \/>" + appearance + "<\/a>");
	},
	ShowDocTypes: function() {
		var docTypes = new Array('doc', 'pdf', 'xls');

		$('a').each(function(idx) {
			for (var idx = 0; idx < docTypes.length; idx++) {
				if (this.href.indexOf('.' + docTypes[idx]) > -1 &&
					!$(this).hasClass('link-' + docTypes[idx])) {
					$(this).addClass('link-' + docTypes[idx]);
				}
			}
			if (
				(this.href.indexOf('http://') > -1 || this.href.indexOf('https://') > -1) &&
				this.href.indexOf(top.location.href.substring(0, 20)) == -1 &&
				!$(this).hasClass('link-external') &&
				$(this).children().length == 0) {
				$(this).addClass('link-external');
			}
		});
	}
};

// Messages
var Messages = {
	FadeOutTime: "1500",
	MessageContainer: '#primary',
	MessageWrapper: null,
	AddGood: function(messageText, displayTime)
	{
	    Messages.AddMessage({message: messageText, cssClass: 'good', displayTime: displayTime});
	},
	AddAlert: function(messageText, displayTime)
	{
	    Messages.AddMessage({message: messageText, cssClass: 'alert', displayTime: displayTime});
	},
	AddError: function(messageText, displayTime)
	{
	    Messages.AddMessage({message: messageText, cssClass: 'bad', displayTime: displayTime});
	},
	AddMessage: function(message)
	{
	    if (Messages.MessageWrapper == null)
	    {
	        Messages.MessageWrapper = $('<div></div>').addClass('message-wrapper');
	        if ($(Messages.MessageContainer))
	        {
	            $(Messages.MessageContainer).prepend(Messages.MessageWrapper);
	        }
	        else
	        {
	            $('body').append(Messages.MessageWrapper);
	        }	       
	    }
	    var newMessage = $('<div></div>')
		    .addClass('message')
		    .addClass(message.cssClass)
		    .html(message.message);
		$(Messages.MessageWrapper).append(newMessage);
		if (message.displayTime != null) 
		{
			newMessage.addClass("displayTime_" + message.displayTime);
		    Messages.ApplyTimeout();
		}
		newMessage = null;
	},
	FadeOutMessages: function(msgHolder) {
		$(msgHolder).fadeOut(Messages.FadeOutTime);
	},	
	ClearMessages: function() {
		$(".message").fadeOut(Messages.FadeOutTime, function() {
			$(this).remove();
		});
	},
	ApplyTimeout: function() {
		var elapsedTime = new Number();
		elapsedTime = 3000; // Set the inital elasped interval

		$(".message[class*=displayTime]").each(function() {
			var displayTimeString = new String();
			var displayTime = new Number();
			displayTimeString = $(this).attr("class");

			// If the displayTime_ class exists, parse the string and return the number
			if (displayTimeString.indexOf("displayTime_") != -1) {
				displayTime = displayTimeString.substring(displayTimeString.indexOf("displayTime_") + 12);
			}
			else {
				displayTime = elapsedTime;
				elapsedTime += 1000;
			}

			var thisPointer = this; // Create a pointer for this.
			var displayTimeItem = setTimeout(function() {
				Messages.FadeOutMessages(thisPointer);
			}, displayTime);
		});
	},
	Trace: function(msg)
	{
		if (console)
		{
		    console.log(msg);
		}
		
	}
};

var MenuAppearance = {
	Init: function() {
		var logo = $("#logo-keynetics");
		var base = this;
		this.SetDefaultColor(logo);
		$("#nav-main li a").mouseover(function() {
			// Gold
			if ($(this).hasClass("nm-news"))
			{
				logo.removeClass().addClass("gold");
			}

			// Blue
			if ($(this).hasClass("nm-whyboise") || $(this).hasClass("nm-about") || $(this).hasClass("nm-contactus"))
			{
				logo.removeClass().addClass("blue");
			}

			// Green
			if ($(this).hasClass("nm-people") || $(this).hasClass("nm-subsidiaries"))
			{
				logo.removeClass().addClass("green");
			}
		}).mouseout(function()
		{
			base.SetDefaultColor(logo);
		});
	},
	SetDefaultColor: function(logo)
	{
		if(top.location.href.indexOf("/news/") > -1)
		{
			logo.removeClass().addClass("gold");
		}
		else if(top.location.href.indexOf("/why-boise/") > -1 || top.location.href.indexOf("/about/") > -1 || top.location.href.indexOf("/contact-us/") > -1)
		{
			logo.removeClass().addClass("blue");
		}
		else if(top.location.href.indexOf("/subsidiaries/") > -1 || top.location.href.indexOf("/people/") > -1)
		{
			logo.removeClass().addClass("green");
		}
	
	},
	ColorShift: function(color) {
		var logo = $("#logo-keynetics");

		if (color == "blue")
		{
			logo.removeClass().addClass("blue");
		}
		else if (color == "gold")
		{
			logo.removeClass().addClass("gold");
		}
		else if (color == "green")
		{
			logo.removeClass().addClass("green");
		}
	}
}

// Load Functions
$(function() {
	// Custom Timeout
	Messages.ApplyTimeout();
	
	// Menu + Logo Dynamic Colors
	MenuAppearance.Init();
});