/**
 * "iRotted" image rotator
 * @author Avery Brooks, brooks@radicalmedia.com
 * @copyright 2008
 */ 

var iRotted = {
	"cookieName" : "iRottedLast=",
    "myFileName" : "iRotted.js",
    "myTarget" : "#quotes",
    "baseURL" : "",
    "lastImage" : 0,
    "images" : [],
    "interval" : 8000,
    "rotateSpeed" : 300,
    "mainCSS" : {
        "width": 353,
        "height": 88,
        "overflow": "hidden",
        "margin": 0,
        "padding": 0 
    },
    "childCSS" : {
        "width": 353,
        "height": 88,
        "display": "block",
        "margin": 0,
        "padding": 0,
		"position": "relative",
        "overflow": "hidden"
    }
}

$.fn.iRottedInit = function(myPath, myImages) {

		var cookieName = iRotted.cookieName;
		var mycookies = document.cookie;
		var start = mycookies.indexOf(cookieName);
		var end = 0;
		var startImage = 0;
		var imageList = Array();

		if (start != -1) {
			start += cookieName.length;
			end = mycookies.indexOf(";",start);
			if (end == -1) end = mycookies.length;
			var startImage = parseInt(mycookies.substring(start,end));
		}
		if (startImage > 0) {
			for (var i = startImage; i < myImages.length; i++) imageList.push(myImages[i]);
			for (var i = 0; i < startImage; i++) imageList.push(myImages[i]);
		} else {
			var imageList = myImages;
		}

		iRotted.lastImage = startImage;
		iRotted.myTarget = $(this);
		if (myImages) iRotted.images = imageList;
		// This is used to load "params" from the script tags that asked for "me" to be loaded
		if (!myPath) {
			$("script").each(
				function() {
					var s = new String($(this).attr("src"));
					if (s.indexOf(iRotted.myFileName + "?") > -1) {
						// get the domain away from our params
						var splitURL = s.split(iRotted.myFileName + "?");
						// get queryString
						var queryString = new String(splitURL[1]);
						// here we could loop, but I only have one thing on the mind here
						var params = queryString.split("=");
						if (params[0] == "baseurl") {
							var baseurl = new String(params[1]);
							// one of these -> ":"
							baseurl = baseurl.replace(/%3A/,":");
							// maybe ... 10 of these max -> "/"
							var i = 0;
							while (baseurl.match(/%2F/) && i < 10) {
								baseurl = baseurl.replace(/%2F/,"/");
								i++;
							}
							iRotted.baseURL = baseurl;
						}
					}
				}
			);
		} else {
			iRotted.baseURL = myPath;
		}
		$(iRotted.myTarget).makeRotator(iRotted);
		setTimeout("rotate()",iRotted.interval);
		return $(this);
}

/**
 * make a vertically scrolling image rotator
 */
$.fn.makeRotator = function(rot) {
	$(this).adoptCSS(rot.mainCSS);
	for (var i = 0; i < rot.images.length; i++) {
		var nextImage = $("<img>")
			.attr("src",rot.baseURL + rot.images[i])
			.attr("id","img"+i)
			.css("position","absolute")
			.css("bottom",0);
		$("<div/>")
			.adoptCSS(rot.childCSS)
			.append(nextImage)
			.appendTo(this);
		
	}
	return $(this);
}

/**
 * rotate a list of objects
 */
$.fn.rotateObj = function(rotateSpeed) {
	$(this).slideUp(
		rotateSpeed,
		function() {
			$(this)
				.css("display","block")
				.appendTo($(this).parent());
		}
	);
}

/**
 * grab CSS from a JSON object
 */
$.fn.adoptCSS = function(CSSasJSON) {
	for (var i in CSSasJSON) $(this).css(i,CSSasJSON[i]);
	return $(this);
}

function rotate() {
	var Expires = new Date();
	Expires.setHours(Expires.getHours() + 1);
	iRotted.lastImage = (iRotted.lastImage + 1 > iRotted.images.length) ? 0 : iRotted.lastImage + 1;
	document.cookie = iRotted.cookieName + iRotted.lastImage + "; expires=" + Expires.toGMTString();
	$("#quotes > div:first-child").rotateObj(iRotted.rotateSpeed);
	setTimeout("rotate()", iRotted.interval);
}
