﻿//  Standard Prototypes  -----------------------------------------------------//

String.prototype.trim = function() {
	return this.replace(/^\s*/, "").replace(/\s*$/, "");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s*/, "");
}
String.prototype.rtrim = function(str, chars) {
	return this.replace(/\s*$/, "");
}


//  AbsorbedScript Namespaces  -----------------------------------------------//

AbsorbedScript = {}
AbsorbedScript.Content = {}
AbsorbedScript.Animation = {}


//  AbsorbedScript.Content - FormatTimeStamp Function  -----------------------//

AbsorbedScript.Content.FormatTimeStamp = function(timestamp) {
	var ls_return = ""

	if (timestamp != "") {
		var timesplit = timestamp.split(",");
		var date_ddd  = timesplit[0].substring(0, 3);
		var date_mmm  = timesplit[1].split(" ")[1].substring(0, 3);
		var date_dd   = timesplit[1].split(" ")[2].trim();
		var date_yyyy = timesplit[2].trim();

		ls_return = date_mmm + " " + date_dd + " " + date_yyyy + " • " + date_ddd;
	}

	return ls_return;
}


//  AbsorbedScript.Content - SetupShowcase Function  -------------------------//

AbsorbedScript.Content.SetupShowcase = function() {
	if ($("#showcase-content #showcase-1 .slide").length > 1) {
		var SlideShow1 = new AbsorbedScript.Animation.HorizontalSlideShow('showcase-1', 7000);
	}

	if ($("#showcase-content #showcase-2 .slide").length > 1) {
		var SlideShow2 = new AbsorbedScript.Animation.VerticalSlideShow('showcase-2', 7000);
	}

	$("#showcase-content img[longdesc]").fullsize();
	$("#showcase-content a:not(a[href^='" + blog_url + "'])").attr("target", "_blank");
}


//  AbsorbedScript.Content - SetupPost Function  -----------------------------//

AbsorbedScript.Content.SetupPost = function(post_id, blog_page_type, blog_url) {
	if (blog_page_type != "item") {
		$("#post-" + post_id + " .post-body .full-post:last").replaceWith("<p style='text-align: left;'>. &nbsp; . &nbsp; .</p>");
	}

	$("#post-" + post_id + " .post-body img[longdesc]").fullsize();
	$("#post-" + post_id + " .post-body a:not(a[href^='" + blog_url + "'])").attr("target", "_blank");
	$("#post-" + post_id + " .post-body p.book-links a.publisher-link img").attr("title", "Find out more at the publisher's site");
	$("#post-" + post_id + " .post-body p.book-links a.goodreads-link img").attr("title", "Find out more at Goodreads.com");
	$("#post-" + post_id + " .post-body p.book-links a.librarything-link img").attr("title", "Find out more at LibraryThing.com");
	$("#post-" + post_id + " .post-body p.book-links a.shelfari-link img").attr("title", "Find out more at Shelfari.com");
}


//  AbsorbedScript.Content - FormatTimeStamp Function  -----------------------//

AbsorbedScript.Content.SetupSidePanel = function() {
	$("#page-detail-content .side-panel img[longdesc]").fullsize();
	$("#page-detail-content .side-panel a:not(a[href^='" + blog_url + "'])").attr("target", "_blank");
}


//  AbsorbedScript.Animation - HorizontalSlideShow Class  --------------------//

AbsorbedScript.Animation.HorizontalSlideShow = function(as_object_id, ai_slide_delay) {

	//  Local Variables  -------------------------------------------------------//

	var io_self = this;
	var io_slide_frame;
	var io_slide_roll;

	var ii_interval_id;
	var ii_slide_width;
	var ii_slide_min_left

	//  Properties  ------------------------------------------------------------//

	this.ObjectId = as_object_id;
	this.SlideDelay = (ai_slide_delay) ? ai_slide_delay : 5000;

	//  Triggers  --------------------------------------------------------------//

	$(document).ready(initialize);

	//  Local Functions  -------------------------------------------------------//

	function initialize() {
		io_slide_frame = $("#" + io_self.ObjectId + " .slide-frame");
		io_slide_frame.css("overflow", "hidden");

		io_slide_roll = $("#" + io_self.ObjectId + " .slide-roll");
		io_slide_roll.css("overflow", "hidden");
		io_slide_roll.css("position", "absolute");
		io_slide_roll.css("left", 0);

		io_self.Start();
	}

	function move() {
		var ls_slide_old_left = io_slide_roll.css("left");
		var li_slide_new_left = ((ls_slide_old_left == "auto") ? 0 : parseInt(ls_slide_old_left, 10)) - ii_slide_width;

		if (li_slide_new_left < ii_slide_min_left) {
			io_slide_roll.animate({ "left": 0 }, 250);
		} else {
			io_slide_roll.animate({ "left": li_slide_new_left }, 250);
		}
	}

	//  Methods  ----------------------------------------------------------------//

	this.Start = function() {
		var lo_slide_array = $("#" + io_self.ObjectId + " .slide");
		var li_slide_count = lo_slide_array.length;

		if (li_slide_count > 0) {
			var li_slide_width = parseInt(lo_slide_array.css("width"), 10) +
													 parseInt(lo_slide_array.css("marginLeft"), 10) +
													 parseInt(lo_slide_array.css("marginRight"), 10);
													 parseInt(lo_slide_array.css("paddingLeft"), 10) +
													 parseInt(lo_slide_array.css("paddingRight"), 10);
			var li_slide_roll_width = (li_slide_count * li_slide_width);

			io_slide_roll.css("width", li_slide_roll_width);

			ii_slide_width = li_slide_width;
			ii_slide_min_left = parseInt(io_slide_frame.css("width"), 10) - li_slide_roll_width;

			ii_interval_id = setInterval(move, io_self.SlideDelay);
		}
	}

	this.Stop = function() {
		clearInterval(ii_interval_id);
	}
}


//  AbsorbedScript.Animation - VerticalSlideShow Class  --------------------//

AbsorbedScript.Animation.VerticalSlideShow = function(as_object_id, ai_slide_delay) {

	//  Local Variables  -------------------------------------------------------//

	var io_self = this;
	var io_slide_frame;
	var io_slide_roll;

	var ii_interval_id;
	var ii_slide_height;
	var ii_slide_min_top

	//  Properties  ------------------------------------------------------------//

	this.ObjectId = as_object_id;
	this.SlideDelay = (ai_slide_delay) ? ai_slide_delay : 5000;

	//  Triggers  --------------------------------------------------------------//

	$(document).ready(initialize);

	//  Local Functions  -------------------------------------------------------//

	function initialize() {
		io_slide_frame = $("#" + io_self.ObjectId + " .slide-frame");
		io_slide_frame.css("overflow", "hidden");

		io_slide_roll = $("#" + io_self.ObjectId + " .slide-roll");
		io_slide_roll.css("overflow", "hidden");
		io_slide_roll.css("position", "absolute");
		io_slide_roll.css("top", 0);

		io_self.Start();
	}

	function move() {
		var ls_slide_old_top = io_slide_roll.css("top");
		var li_slide_new_top = ((ls_slide_old_top == "auto") ? 0 : parseInt(ls_slide_old_top, 10)) - ii_slide_height;

		if (li_slide_new_top < ii_slide_min_top) {
			io_slide_roll.animate({ "top": 0 }, 250);
		} else {
			io_slide_roll.animate({ "top": li_slide_new_top }, 250);
		}
	}

	//  Methods  ----------------------------------------------------------------//

	this.Start = function() {
		var lo_slide_array = $("#" + io_self.ObjectId + " .slide");
		var li_slide_count = lo_slide_array.length;

		if (li_slide_count > 0) {
			var li_slide_height = parseInt(lo_slide_array.css("height"), 10) +
														parseInt(lo_slide_array.css("marginTop"), 10) +
														parseInt(lo_slide_array.css("marginBottom"), 10);
														parseInt(lo_slide_array.css("paddingTop"), 10) +
														parseInt(lo_slide_array.css("paddingBottom"), 10);
			var li_slide_roll_height = (li_slide_count * li_slide_height);

			io_slide_roll.css("height", li_slide_roll_height);

			ii_slide_height = li_slide_height;
			ii_slide_min_top = parseInt(io_slide_frame.css("height"), 10) - li_slide_roll_height;

			ii_interval_id = setInterval(move, io_self.SlideDelay);
		}
	}

	this.Stop = function() {
		clearInterval(ii_interval_id);
	}
}