//Preloading images BEFORE page is done loading
//USE: $.preLoadImages("/image-path.gif");
(function($) {
	var cache = [];
	$.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);

(function($) {
	$.fn.focusBlur = function(textVal) {
		
		return this.each(function(i, ele) {
			$(ele).focus(function() {
				if(this.value == textVal) {
					this.value = "";
				}
			});
			$(ele).blur(function() {
				if(this.value == "") {
					this.value = textVal;
				}
			});
		});
	};
})(jQuery);

(function($) {
	var cache = [];
	$.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);

(function($) {
	
	$.fn.carousel = function(options) {
		var dontSpazzClick = false;
		var config = {
			cImages: "#home #banner",
			cText: "#carousel_text ul li",
			cTriggers: "#carousel_text ol a",
			autoStart: false
		};
		var opts = $.extend({}, config, options);
		var count = $('img', opts.cImages).length < $(opts.cText).length ? $('img', opts.cImages).length : $(opts.cText).length;
		var autoRotate;
		
		var gotoIndex = function(i, isAuto) {
			dontSpazzClick = true;
			
			//Finds the set that is being viewed
			var oldIndex = $(opts.cTriggers).index($(opts.cTriggers + '.on'));
			
			//Hides old image
			$(opts.cImages).stop().fadeOut('slow', function() {
				//Switches in new image and shows the div again
				$(opts.cImages).css("background-image", "url("+$('img:eq('+i+')', opts.cImages).attr('src')+")").fadeIn('fast', function() {
					dontSpazzClick = false;
				
					if(isAuto === true) {
						autoRotate = (i + 1) < count ? setTimeout(function() { gotoIndex((i + 1), true); }, 8000) : setTimeout(function() { gotoIndex((0), true); }, 8000);
					}
				});
				//Button on state
				$(opts.cTriggers).eq(oldIndex)[0].className = "";
				$(opts.cTriggers).eq(i)[0].className = "on";
			});
			
			//Hides old text and shows new text
			$(opts.cText).eq(oldIndex).stop().fadeOut('normal', function() {
				$(opts.cText).eq(i).fadeIn();
			});
		};
		
		//Kick off
		if(opts.autoStart && !dontSpazzClick) {
			autoRotate = setTimeout(function() { gotoIndex(1, true); }, 8000);
		}
		$(opts.cImages).css("background-image", "url("+$('img:eq(0)', opts.cImages).attr('src')+")");
		$(opts.cText).eq(0).show();
		
		return this.each(function(i, ele) {
			$(ele).click(function() {
				clearTimeout(autoRotate);
				if(dontSpazzClick === false) {
					gotoIndex(i, false);
				}
				return false;
			});
		});
	};
	
})(jQuery);

var switchEvent = function() {
	
	var showItem = function(i) {
		$('li:eq('+i+')', '#retreats').addClass('on');
	};
	
	$('a', '.arrows').each(function(i, ele) {
		$(ele).click(function() {
			var oldIndex = $('li', '#retreats').index($('.on', '#retreats'));
			$('li:eq('+oldIndex+')', '#retreats').removeClass();
			
			if(i == 0) {
				oldIndex > 0 && oldIndex < $('li', '#retreats').length ? showItem(oldIndex - 1) : showItem($('li', '#retreats').length - 1);
			} else {
				oldIndex < $('li', '#retreats').length -1 ? showItem(oldIndex + 1) : showItem(0);
			}

			return false;
		});
	});
};

$(document).ready(function() {
	if ($.browser.msie && parseInt($.browser.version, 10) == 6) {
		//Main Navigation Dropdown - adds over class to li for IE6 only
		$("#header li").not('.on').hover(function(e) {
			//Sets the dropdown width
			var thewidth = $(this).width();
			$(this).find('.dropdown').width(thewidth);
			
			this.className = "over";
		}, function() {
			this.className = "";
		});
	}
	
	$(".text_input").focusBlur("Enter your email address");
	$('#carousel_text ol a').carousel({ autoStart: true });
	switchEvent();
	
	if($("#processing").length) {
		$("input[name='commit']", ".general_form").click(function() {
			$(this).before($("#processing").html()).hide();
		});
	}
	
	if($("#errorExplanation").length) {
		$('html, body').animate({scrollTop: 447}, 'fast');
	}
	
	$("input[name='submit']", "#join_form").click(function() {
		$(".text_input", "#join_form").val().toLowerCase() == "enter your email address" ? $(".text_input", "#join_form").val('') : $('#join_form').parent().submit();
	});
	
	var gallerySpazzing = false;
	$('a', '.thumbs').click(function() {
		var imgSrc = $(this).find('img').attr('src').replace('/thumbs/', '/main/');
		var clicked = $(this);
		
		if(!gallerySpazzing) {
			gallerySpazzing = true;
			$('.on', '.gallery').stop().fadeOut('normal', function() {
				$(this).removeClass('on')
				$('img', '.gallery').each(function(i, ele) {
					if($(this).attr('src') == imgSrc) {
						$(ele).fadeIn('fast').addClass('on');
					}
				});
				$('.on', '.thumbs').removeClass('on');
				clicked.addClass('on');
				gallerySpazzing = false;
			});
		}
		return false;
	});
});