(function ($) {
	var cache = [];
	// Arguments are image paths relative to the current page.
	$.preLoadImages = function () {
		var i;
		var args_len = arguments.length;
		for (i = args_len; i--;) {
			var cacheImage = document.createElement('img');
			cacheImage.src = arguments[i];
			cache.push(cacheImage);
		}
	};
})(jQuery);

/*!
 * isFontFaceSupported - Sniff variant - v0.9 - 12/19/2009
 * http://paulirish.com/2009/font-face-feature-detection/
 * 
 * Copyright (c) 2009 Paul Irish
 * MIT license
 */
 
/* Browser sniffing is bad. You should use feature detection.
   Sadly the only feature detect for @font-face is 
   asynchronous. So for those that *need* a synchronous solution,
   here is a sniff-based result:
*/
var ua = navigator.userAgent, parsed;

var isFontFaceSupported = function(){
  if (Modernizr.touch)
  	  return false
  if (parsed = ua.match(/android/gi))
	  return false;
  if (/*@cc_on@if(@_jscript_version>=5)!@end@*/0) 
	  return true;
  if (parsed = ua.match(/Chrome\/(\d+\.\d+\.\d+\.\d+)/))
	  return parsed[1] >= '4.0.249.4';
  if ((parsed = ua.match(/Safari\/(\d+\.\d+)/)) && !/iPhone/.test(ua))
	  return parsed[1] >= '525.13';
  if (/Opera/.test({}.toString.call(window.opera)))
	  return opera.version() >= '10.00';
  if (parsed = ua.match(/rv:(\d+\.\d+\.\d+)[^b].*Gecko\//))
	  return parsed[1] >= '1.9.1';
  if (parsed = ua.match(/Firefox/gi))
	  return true;
  return false;
}
var userAgent = navigator.userAgent.toLowerCase();
$.browser = {
	version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [0, '0'])[1],
	safari: /webkit/.test(userAgent),
	opera: /opera/.test(userAgent),
	msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
	mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)
};
$(document).ready(function () {
	
	$("#jsdetect").removeClass("no-js");
	/*
	if (isFontFaceSupported()) {
		$("body").addClass("fontface");
	}	
	*/
	
	if ($(".home").length > 0) {
		//blog code
		$.get("/news/atom.xml", function(xml, bolSuccess) {
			if (bolSuccess == "success") {
				var strEntries = "";
				$(xml).find("entry").each(function(i) {
					if (i < 4) {
						var bolHasImg = true;
						var strImgSrc = $("span.full-image-block img", $(this).find("content").text()).attr("src");
						
						strEntries += "<li>";
						strEntries += "\t<a href=\"" + $(this).find("link").attr("href") + "\">";
						if (strImgSrc != null && strImgSrc != "" && strImgSrc != undefined) {
							strEntries += "\t\t<img src=\"" + $("span.full-image-block img", $(this).find("content").text()).attr("src") + "\" alt=\"" + $(this).find("title").text() + "\" />";
						}
						strEntries += "\t\t<em>" + $(this).find("title").text() + "</em>";
						strEntries += "\t</a>";
						strEntries += "</li>";
					}
				});
				if (strEntries != "") {
					strEntries = "<ul id=\"recentblog\">\n" + strEntries + "</ul>\n<div class=\"clear\"></div>\n";
					$("#homeblog .content").append(strEntries);
					$('#recentblog li a img').load(function() {
						var intWidth = $(this).width(), intHeight = $(this).height(), intRatio = 1, intParentWidth = $(this).parent().width(), intParentHeight = $(this).parent().height();
						intRatio = intWidth/intHeight;
						if (Math.ceil(intParentWidth/intRatio) < intParentHeight) {
							$(this).width(Math.ceil(intParentHeight * intRatio));
							$(this).height(intParentHeight);
						} else {
							$(this).width(intParentWidth);
							$(this).height(Math.ceil(intParentWidth / intRatio));
						}
					});
				} else {
					$("#homeblog").remove();
				}
			} else {
				$("#homeblog").remove();
			}
		}, "xml");
		
		//twitter code
		var url = "http://twitter.com/status/user_timeline/39237072.json?count=2&callback=?";
		String.prototype.makelinks = function() {
			return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/g, function(m) {
			m = m.link(m);
			m = m.replace('href="','target="_blank" href="');
			return m;
		  });
		};
		String.prototype.linkuser = function() {
		  return this.replace(/[@]+[A-Za-z0-9-_]+/g, function(us) {
			var username = us.replace("@","")
			return us.link("http://twitter.com/"+username);
		  });
		};
		String.prototype.linktag = function() {
		  return this.replace(/[#]+[A-Za-z0-9-_]+/, function(t) {
			var tag = t.replace("#","%23");
			return t.link("http://search.twitter.com/search?q="+tag);
		  });
		};
		function timeAgo(tweetTime, nowMS) {
			var v=tweetTime.split(' ');
			tweetTime = new Date(Date.parse(v[1]+" "+v[2]+", "+v[5]+" "+v[3]+" UTC")).getTime();
			var timeAgoSec = (nowMS - tweetTime)/1000;
			var strUnit = "";
			var numTimeAgo = 0;
			
			if (timeAgoSec < 60) {
				numTimeAgo = Math.ceil(timeAgoSec);
				strUnit = " second";
			} else if (timeAgoSec < 3600) {
				numTimeAgo = Math.round(timeAgoSec/60);
				strUnit = " minute";
			} else if (timeAgoSec < 86400) {
				numTimeAgo = Math.round(timeAgoSec/3600);
				strUnit = " hour";
			} else if (timeAgoSec < 31536000) {
				numTimeAgo = Math.round(timeAgoSec/86400);
				strUnit = " day";
			} else {
				numTimeAgo = Math.round(timeAgoSec/31536000);
				strUnit = " year";
			}
			if (numTimeAgo != 1) {
				strUnit += "s";
			}
			
			return numTimeAgo + strUnit + " ago";
		}
		$.getJSON(url, function (data) {
			$.each(data, function (i, item) {
				if (i == 0) {
					var strUserName = item.user.screen_name;
					$("#twitter .content em").remove();
					$("#twitter .content").prepend(item.text.makelinks().linkuser());
					$("#twitter .ago").text(timeAgo(item.created_at, new Date().getTime()));
					$("#twitter .ago").attr("href", "http://twitter.com/" + strUserName + "/status/" + item.id);
				}
			});
		});
		
	}
	if ($("#eventlistings").length > 0) {
		var arrDays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
		var arrMonthsLong = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
		var arrMonths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"];	
		$.getJSON("http://www.google.com/calendar/feeds/frwdco@gmail.com/public/full?alt=json-in-script&callback=?&orderby=starttime&max-results=4&singleevents=true&sortorder=ascending&futureevents=true", function(data) {
			if (data.feed.entry != undefined) {
				var strEvents = "";
				var strTitle = "";
				var strStartTime;
				var strEventURL = "";
				var strContent = "";
				var strTime = "";
				for (var k = 0; k < 4; k++) {
					strTitle =  data.feed.entry[k].title.$t;
					strContent =  data.feed.entry[k].content.$t;					
					strEventURL =  data.feed.entry[k].link[0].href;
					strStartTime = data.feed.entry[k].gd$when[0].startTime.split("T")[0].replace(/-/g, "/");
					strStartTime = new Date(strStartTime);
					
					if (strContent.length > 561) {
						strContent = strContent.substr(0, 558) + "&#8230;";
					}
					
					var hours = strStartTime.getHours();
					var minutes = strStartTime.getMinutes();
					var dayHalf = "AM";
					if (minutes < 10) {
					minutes = "0" + minutes;
					}
					if (hours > 11){
						dayHalf = "PM";
					}
					if (hours > 12) {
						hours = hours - 12;
					} else if (hours == 0) {
						hours = 12;
					}
					strTime = ", " + hours + ":" + minutes + " " + dayHalf;
					if (strTime == ", 12:00 AM") {
						strTime = "";
					}
					
					
					strEvents += "<a href=\"" + strEventURL + "\" class=\"eventdate\">\n";
					strEvents += "\t" + arrMonths[strStartTime.getMonth()] + " <strong>" + strStartTime.getDate() + "</strong>\n";
					strEvents += "</a>\n";
					strEvents += "<a href=\"" + strEventURL + "\" class=\"eventlisting\">\n";
					strEvents += "\t<strong>" + strTitle  + "</strong>\n";
					strEvents += "\t<em>" + arrDays[strStartTime.getDay()] + ", " + arrMonthsLong[strStartTime.getMonth()] + " " + strStartTime.getDate() + ", " + strStartTime.getFullYear() + strTime + "</em>\n";
					strEvents += "\t<span>\n";
					strEvents += "\t\t" + strContent + "\n";
					strEvents += "\t</span>\n";
					strEvents += "</a>";
					strEvents += "<div class=\"clear\"></div>\n";
					
					
					if (strEvents != "") {
						$("#eventlistings").html(strEvents);
					} else {
						$("#eventlistings").html("<em>There currently are no upcoming events.</em>");
					}
				}
			} else {
				$("#eventlistings").html("<em>There currently are no upcoming events.</em>");
			}
		});	
	}
	
	
	if ($("#events").length > 0) {
		var arrMonths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"];	
		$.getJSON("http://www.google.com/calendar/feeds/frwdco@gmail.com/public/full?alt=json-in-script&callback=?&orderby=starttime&max-results=4&singleevents=true&sortorder=ascending&futureevents=true", function(data) {
			
			if (data.feed.entry != undefined) {
				var strEvents = "";
				var strTitle = "";
				var strStartTime;
				var strEventURL = "";
							
				for (var j = 0; j < 4; j++) {
					if (data.feed.entry[j] != undefined) {
						strTitle =  data.feed.entry[j].title.$t;
						
						if (strTitle.length > 41) {
							strTitle = strTitle.substr(0, 38) + "&#8230;";
						}
						
						strEventURL =  data.feed.entry[j].link[0].href;//$(this).find("link:first").attr("href");
						
						strStartTime = data.feed.entry[j].gd$when[0].startTime.split("T")[0].replace(/-/g, "/");//$(this).find("[nodeName=gd:when]").attr("startTime").split("T")[0].replace(/-/g, "/");
						strStartTime = new Date(strStartTime);
						
						
						strEvents += "<dt><a href=\"" + strEventURL + "\">" + arrMonths[strStartTime.getMonth()] + " <strong>" + strStartTime.getDate() + "</strong></a></dt>";
						strEvents += "<dd><a href=\"" + strEventURL + "\">" + strTitle + "</a></dd>";
						
						if (strEvents != "") {
							strEvents = "<dl>" + strEvents + "</dl>\n<div class=\"clear\"></div>";
							$("#events .content").html(strEvents);
						} else {
							$("#events .content").html("<em>There currently are no upcoming events.</em>");
						}
					}
				}
			} else {
				$("#events .content").html("<em>There currently are no upcoming events.</em>");
			}
		});		
	}
	
	if ($("#workholder").length > 0) {
		var intNextSlide = 1;
		var bolSlideTitle1 = true;
		function changeImg() {
			/*
			$("#workholder ul li").removeClass("active");
			$("#workholder ul li:eq(" + intNextSlide + ")").addClass("active");
			*/
			if (bolSlideTitle1) {
				bolSlideTitle1 = false;
				if ($.browser.msie) {
					$("#workholder h6:eq(1)").text($("#workholder ul li:eq(" + intNextSlide + ") a span").text()).show();
					$("#workholder h6:eq(0)").hide();
				} else {
					$("#workholder h6:eq(1)").text($("#workholder ul li:eq(" + intNextSlide + ") a span").text()).stop(true, false).fadeTo("def", 1, "easeOutSine");
					$("#workholder h6:eq(0)").stop(true, false).fadeOut("def", "easeOutSine");
				}
			} else {
				bolSlideTitle1 = true;
				if ($.browser.msie) {
					$("#workholder h6:eq(0)").text($("#workholder ul li:eq(" + intNextSlide + ") a span").text()).show();
					$("#workholder h6:eq(1)").hide();
				} else {
					$("#workholder h6:eq(0)").text($("#workholder ul li:eq(" + intNextSlide + ") a span").text()).stop(true, false).fadeTo("def", 1, "easeOutSine");
					$("#workholder h6:eq(1)").stop(true, false).fadeOut("def", "easeOutSine");
				}
			}
			$("#workholder ul li:not(:eq(" + intNextSlide + ")) a").animate({ backgroundColor: "#FFFFFF" }, "def", "easeOutSine");
			$("#workholder ul li:eq(" + intNextSlide + ") a").animate({ backgroundColor: "#000000" }, "def", "easeOutSine");
			$("#homework img:visible").stop(true, false).fadeOut("def", "easeOutSine");
			$("#homework img:eq(" + intNextSlide + ")").stop(true, false).fadeTo("def", 1, "easeOutSine");
			
			$("a.img").hide();
			$("a.img:eq(" + intNextSlide + ")").show();
			if (intNextSlide >= $("#homework img").length -1) {
				intNextSlide = 0;
			} else {
				intNextSlide++;
			}
			
			
		}
		var idSlideShow = setInterval(changeImg, 3500);
		
		
		$("#workholder ul li a").click(function() {
			intNextSlide = $(this).parent().index();
			changeImg();
			clearInterval(idSlideShow);
			idSlideShow = setInterval(changeImg, 3500);
			return false;
		});
	}
	
	if ($("#blog").length > 0) {
		if ($(".paginationPageNumber.activePage:contains('1')").length == 0) {
			$(".paginationControlNextPageSuffix").prepend("<a href=\"/news?currentPage=" + String(parseInt($(".paginationPageNumber.activePage").text()) - 1) + "\">&laquo; Newer Posts</a>&nbsp;");
		}
	}
	
	
	var intCurrentQuote = 0;
	if ($(".clients #divisions").length > 0) {
		function nextQuote() {
			$(".clients #divisions blockquote:not(:eq(" + intCurrentQuote + "))").stop(true, false).fadeOut("def", "easeOutSine");
			$(".clients #divisions blockquote:eq(" + intCurrentQuote + ")").stop(true, false).fadeTo("def", 1, "easeOutSine");
		}
		
		$(".clients #divisions blockquote:first").show();
		var idQuotes = setInterval(function() {
			if (intCurrentQuote >= $(".clients #divisions blockquote").length - 1) {
				intCurrentQuote = 0;
			} else {
				intCurrentQuote++;
			}
			nextQuote();
		}, 3800);
	}
	
	if ($(".operations").length > 0) {
		$(".operations").toggle(function() {
			$(".operationscontent").slideToggle();
			$(".operations").addClass("open");
			return false;
		}, function() {
			$(".operationscontent").slideToggle();
			$(".operations").removeClass("open");
			return false;
		});
	}
});
