/// <reference path="doc/jquery-1.3.2-vsdoc.js" />

$(function() {

	

	$('#primary-content .right-column a.more').fadeTo(0, .7)
	    .mouseover(function() { $(this).fadeTo('fast', 1); })
	    .mouseout(function() { $(this).fadeTo('fast', .7); });
	
	
	var h3Date;
    for(var idx = 0; idx < $('#primary-content .blog .left-column h3').length; idx++)
    {
        h3Date = $('#primary-content .blog .left-column h3')[idx];
        $(h3Date).html(formatBlogDate($(h3Date).text())).addClass('formatted');
    }
    
	// Logo Banner	
	var logoFlashVars = {};
	var logoParams = { wmode: "transparent", allowscriptaccess: 'always' };
	var logoAttributes = { id: "logo-banner" };
	swfobject.embedSWF("http://www.drakecooper.com/assets/flash/logo-banner/logo-banner.swf", "logo-banner", "900", "200", "9.0.0", "assets/flash/swfobject/expressInstall.swf", logoFlashVars, logoParams, logoAttributes);
});

function formatBlogDate(postDate)
{
    /*var comma1 = bloggerDate.indexOf(', ') + 2;
    var dateStart = bloggerDate.indexOf(' ', comma1+1) + 1;
    var comma2 = bloggerDate.indexOf(', ', comma1+1);
    var formatted = bloggerDate.substring(comma1, comma1+3) + ' ' +
         bloggerDate.substring(dateStart, comma2) + '<br /><span class="year">' + 
         bloggerDate.substring(comma2+2) + "</span>";
    return formatted;*/
    var monthStart = 0;
    var monthLen = 3;
    var month = postDate.substr(monthStart, monthLen);
    
    var dayStart = postDate.indexOf(' ');
    var dayLen = postDate.indexOf(',') - dayStart - 2;
    var day = postDate.substr(dayStart, dayLen);
    
    var yearStart = postDate.indexOf(',') + 2;
    var yearLen = 4;
    var year = postDate.substr(yearStart, yearLen);
    
    return month + ' ' + day + '<br /><span class="year">' + year + '</span>';
}

// 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);
		}
		
	}
};

// Load Functions
$(function() {
	// Custom Timeout
	Messages.ApplyTimeout();

	// Fix IE6 PNG
	$("body").ifixpng();
});
