/*
 * Glide v1.2 
 *
 * Copyright (C) 2008 Lauren Herda
 * All rights reserved.
 *
 */

(function($){
	$.fn.glide = function(options) {
		var defaults = {
			kind: "double",
			direction: "lr", /* rr, rl, lr, ll */
			dist1: 200, /* an absolute value */
			dist2: 200, /* an absolute value */
			headingClass: "glide_heading",
			subheadClass: "glide_subhead",
			splitter: ":",
			speed: 3000,
			easing: ""
		};
		
		var options = $.extend(defaults, options);
		
		return this.each(function() {
			obj = $(this);
			var body = obj.html();
			var splitLoc = body.indexOf(options.splitter);
			var heading = $.trim(body.substring(0, splitLoc));
			var subhead = $.trim(body.substring(splitLoc + 1, body.length));
			if(options.kind == "double") {
				obj.html('<div><span class="'+ options.headingClass +'">' + heading + '</span></div><div><span class="'+ options.subheadClass +'">' + subhead + '</span></div>');
				renderGlider(options, obj);
			} else if (options.kind == "single") {
				obj.html('<span class="'+ options.headingClass +'">' + heading + '</span> <span class="'+ options.subheadClass +'">' + subhead + '</span>');
				renderGlider(options, obj);
			} else return;
			$("." + options.headingClass).css("position", "relative");
			$("." + options.subheadClass).css("position", "relative");
		});
	}
	
	function renderGlider(options, obj) {
		switch(options.direction) {
			
			case "ll":
			var fulltime = options.speed;
			var animtime = 2 * (options.speed / 3);
			var waittime = options.speed / 3;
			$("." + options.headingClass, obj).css({ left: options.dist1, opacity: 0 }).animate({ left: "0", opacity: 1 }, animtime, options.easing);
			$("." + options.subheadClass, obj).css({ left: options.dist2, opacity: 0 }).animate({ opacity: 0 }, waittime).animate({ left: "0", opacity: 1 }, animtime, options.easing);
			break;
			
			case "rl":
			$("." + options.headingClass, obj).css({ right: options.dist1, opacity: 0 }).animate({ right: "0", opacity: 1 }, options.speed, options.easing);
			$("." + options.subheadClass, obj).css({ left: options.dist2, opacity: 0 }).animate({ left: "0", opacity: 1 }, options.speed, options.easing);
			break;
			
			case "lr":
			$("." + options.headingClass, obj).css({ left: options.dist1, opacity: 0 }).animate({ left: "0", opacity: 1 }, options.speed, options.easing);
			$("." + options.subheadClass, obj).css({ right: options.dist2, opacity: 0 }).animate({ right: "0", opacity: 1 }, options.speed, options.easing);
			break;
			
			case "rr":
			var fulltime = options.speed;
			var animtime = 2 * (options.speed / 3);
			var waittime = options.speed / 3;
			$("." + options.headingClass, obj).css({ right: options.dist1, opacity: 0 }).animate({ right: "0", opacity: 1 }, animtime, options.easing);
			$("." + options.subheadClass, obj).css({ right: options.dist2, opacity: 0 }).animate({ opacity: 0 }, waittime).animate({ right: "0", opacity: 1 }, animtime, options.easing);
			break;
			
			default:
			$("." + options.headingClass, obj).css({ left: options.dist1, opacity: 0 }).animate({ left: "0", opacity: 1 }, options.speed, options.easing);
			$("." + options.subheadClass, obj).css({ right: options.dist2, opacity: 0 }).animate({ right: "0", opacity: 1 }, options.speed, options.easing);
			
		}
	}
	
})(jQuery);