function getInternetExplorerVersion() {
	var rv = -1;
	if (navigator.appName == 'Microsoft Internet Explorer') {
		var ua = navigator.userAgent;
		var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
		if (re.exec(ua) != null) {
			rv = parseFloat( RegExp.$1 );
		}
	}
	return rv;
}

var IE = getInternetExplorerVersion();

var speed = 500;
var activeSlide = 0;
var t;

var vP = "";
var transitionEnd = "transitionEnd";
if ($.browser.webkit) {
	vP = "-webkit-";
	transitionEnd = "webkitTransitionEnd";
} else if ($.browser.msie) {
	vP = "-ms-";
	transitionEnd = "msTransitionEnd";	
} else if ($.browser.mozilla) {
	vP = "-moz-";
	transitionEnd = "transitionend";
} else if ($.browser.opera) {
	vP = "-o-";
	transitionEnd = "OTransitionEnd";
}

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

//jQuery.preLoadImages();

function animate(object, cssProperties, callback, ms) {
	if (!ms) {
		ms = speed;
	}
	
	if (Modernizr.csstransitions) {
		object.css(vP+"transition", "all "+ms+"ms ease-in-out");
		
		object.css(cssProperties);

		if ($.isFunction(callback)) {

			object.bind(transitionEnd,function(){
				object.unbind(transitionEnd);
				callback();
			});

			/*
			window.setTimeout(function() {
				callback();
			}, ms);
			*/
		}
		
	} else {
		if ($.isFunction(callback)) {		
			object.animate(cssProperties, ms, callback);
		} else {
			object.animate(cssProperties, ms);			
		}
	}
}

function slide(newslide, sliderWidth, slideElem) {	
	if (Modernizr.csstransforms && Modernizr.csstransitions) {
		var cssArgs = {};
		cssArgs[vP+"transform"] = "translate("+newslide*-sliderWidth+"px,0px)";
	
		animate($(slideElem),cssArgs);
	} else {
		animate($(slideElem),{"left":newslide*-sliderWidth+"px"});			
	}	
}

function checkArrows(activeSlide, numSlides) {
	if (activeSlide == 0) {
		$(".left_arrow").hide();		
	} else {
		$(".left_arrow").fadeIn();
	}
	if (activeSlide == numSlides - 1) {
		$(".right_arrow").hide();		
	} else {
		$(".right_arrow").fadeIn();
	}
}

$(document).ready(function() {
	// Front page slider
	
	var sliderWidth = $("#slide1").width();
	
	if (!!sliderWidth){
		var num_slides = 4;
		
		$("#controls div").bind('click touch', function(){
	       	activeSlide = $(this).attr("class").split(' ')[0].replace("slide", "") - 1;
			$("#controls div").removeClass("active");
			$(this).addClass("active");

			slide(activeSlide, sliderWidth, "#slide_container");

		});
		function autoSlide(){
			activeSlide++;
			if (activeSlide >= num_slides) {
				activeSlide = 0;
			}
			$("#controls div").removeClass("active");
			$("#controls .slide"+(activeSlide+1)).addClass("active");
			slide(activeSlide, sliderWidth, "#slide_container");
		}
		function startTimer() {
			t = setInterval(autoSlide,5000);
		}
		function stopTimer() {
			clearInterval(t);
		}
		startTimer();
		
		$("#controls div").click(function(){
			stopTimer();
		});		
		
	}

	// Custom projects slider
	
	var cSliderWidth = $("#container").width() - 10;
	var numSlides = 2;
	var cActiveSlide = 0;

	checkArrows(cActiveSlide, numSlides);
			
	$(".left_arrow").bind('click touch', function(){
		if (cActiveSlide - 1 >= 0) {
			cActiveSlide--;
			slide(cActiveSlide, cSliderWidth, "#sliding_bit");		
		}
		checkArrows(cActiveSlide, numSlides);
	});
	
	$(".right_arrow").bind('click touch', function(){		
		if (cActiveSlide + 1 < numSlides) {
			cActiveSlide++;
			slide(cActiveSlide, cSliderWidth, "#sliding_bit");		
		}	
		checkArrows(cActiveSlide, numSlides);			
	});
	
	// Nav fix for pointer-events
	
	if ($("#nav_curve").css("pointer-events") !== "none" || IE) {	
		$("nav ul").addClass("nav_original").clone().insertAfter($("#nav_curve")).addClass("nav_copy").removeClass("nav_original");
	
		$("nav ul li a").hover(function(){
			$(".nav_original ."+$(this).attr("class").split(' ')[0]).addClass("hover");
		}, function(){
			$(".nav_original a").removeClass("hover");
		});		
	}

	// Accordion
	
	$("#accordion div:not(.active) ul").css({"height":"0"});
	
	$("#accordion h2:not(.active)").click(function(){
		$("#accordion div").removeClass('active');
		$(this).parents("div").addClass('active');		
		
		animate($("#accordion ul"), {"height":"0"});
		animate($(this).siblings("ul"), {"height":"80px"});
		
	});
});
