﻿/// <reference path="jquery-1.3.2-vsdoc.js" />

/*
	Updates to this file must be run through the compressor at:
	http://javascriptcompressor.com/
	save the output to dsbo.min.js
*/

/*global $, jQuery, window, document, confirm, fileref */

jQuery.Namespace = {
	Register: function() {
		var a = arguments, o = null, i, j, d;
		for (i = 0; i < a.length; i = i + 1) {
			d = a[i].split(".");
			o = window;
			for (j = 0; j < d.length; j = j + 1) {
				o[d[j]] = o[d[j]] || {};
				o = o[d[j]];
			}
		}
		return o;
	}
};

jQuery.Namespace.Register('jQuery.DSBO');

jQuery.DSBO.Confirm = function(msg) {
	if (confirm(msg)) {
		return true;
	}
	else {
		return false;
	}
};

jQuery.DSBO.EventTarget = function(event) {
	var target;
	if (!event) {
		event = window.event;
	}
	if (event.target) {
		target = event.target;
	}
	else if (event.srcElement) {
		target = event.srcElement;
	}

	// defeat Safari bug
	if (target.nodeType == 3) {
		target = target.parentNode;
	}

	return target;
};

jQuery.DSBO.WhichKey = function(event) {
	var code;
	if (!event) {
		event = window.event;
	}

	if (event.keyCode) {
		code = event.keyCode;
	}
	else if (event.which) {
		code = event.which;
	}

	var character = String.fromCharCode(code);
	return character;
};

jQuery.DSBO.LoadPopupPage = function(container, url, spinner) {
	var content = $('#facebox').find('.content');
	if (content.html() === "") {
		content.append($('<div></div>').attr('id', container));
	}

	if (spinner !== undefined) {
		var newSpinner = spinner.clone();
		content.append(newSpinner);
		newSpinner.show();
	}

	$($.format('#{0}', container)).html(
		$.getHTML(url)
	);

	if (spinner !== undefined) {
		$('#facebox').find('#spinner').remove();
	}

	// resize
	var popupWidth = $('#facebox').width();
	var docWidth = $(document).width();
	$('#facebox').css('left', $.format("{0}px", (docWidth / 2) - (popupWidth / 2)));
};

jQuery.DSBO.LoadResource = function(src) {
	var isJS = (src.substring(src.length - 2).toLowerCase() === "js");
	var isCSS = (src.substring(src.length - 3).toLowerCase() === "css");

	var resource = null;
	if (isJS) {
		resource = $('<script></script>').attr({
			type: 'text/javascript',
			src: src
		});
		$('head').append(resource);
	}
	else if (isCSS) {
		resource = $('<link />').attr({
			rel: 'stylesheet',
			type: 'text/css',
			media: 'screen',
			href: src
		});
		$('head').append(fileref);
	}
};

jQuery.DSBO.ResourceImage = function(src, htmlAttributes) {
	if (src.indexOf("~") === 0) {
		src = src.replace('~', 'http://static.disaboom.com/images');
	}
	var img = $('<img />').attr('src', src);
	img.attr(htmlAttributes);
	return img;
};

jQuery.DSBO.GetFormValue = function(element) {
	if (element.tagName === "TEXTAREA") {
		return $(element).text();
	}
	else {
		if (element.tagName === "SELECT") {
			var value = "";
			var options = $(element).find('option');
			for (var i = 0; i < options.length; i++) {
				value += $(options[i]).val();
				if (i < (options.length - 1)) {
					value += ",";
				}
			}
			return value;
		}
		else {
			return $(element).val();
		}
	}
};

jQuery.DSBO.CreateCookie = function(name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		var expires = "; expires=" + date.toGMTString();
	}
	else var expires = "";
	document.cookie = name + "=" + value + expires + "; path=/";
};

jQuery.DSBO.ReadCookie = function(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for (var i = 0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0) == ' ') c = c.substring(1, c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
	}
	return null;
};

jQuery.DSBO.EraseCookie = function(name) {
	jQuery.DSBO.CreateCookie(name, "", -1);
};

jQuery.DSBO.IsArray = function(obj) {
	return (obj.constructor === Array);
}

jQuery.fn.replacementText = function(text) {
	var input = $(this);
	if (input.val() === "" || input.val() === text) {
		if (!input.hasClass('example-text')) { input.addClass('example-text'); }
		input.val(text);
	}
	this.focus(function() {
		if ($.trim(input.val()) === text) {
			if (input.hasClass('example-text')) { input.removeClass('example-text'); }
			input.val('');
		}
	});
	this.blur(function() {
		if ($.trim(input.val()) === '') {
			if (!input.hasClass('example-text')) { input.addClass('example-text'); }
			input.val(text);
		}
	});
};

jQuery.fn.contains = function(value) {
	var i = this.length;
	while (i--) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
}

jQuery.fn.stripHTML = function() {
	// What a tag looks like
	var matchTag = /<(?:.|\s)*?>/g;
	
	// Replace the tag
	return this.replace(matchTag, "");
};

jQuery.DSBO.SearchReplaceText = "search disaboom.com";
jQuery.DSBO.NewsletterReplaceText = "enter email address";

(function($) {
	$(document).ready(function(e) {
		// feedback
		var feedback = jQuery('.feedback');
		feedback.animate({ opacity: 0.0 }, 3000, "linear", function() {
			feedback.remove();
		});

		// search
		$('#searchbutton').click(function(e) {
			$('#searchform').submit();
			return false;
		});

		// submit search on <enter>
		$('#searchForm').find("input").each(function(i, el) {
			$(el).keypress(function(e) {
				if (e.which === 13) {
					$('#searchForm').submit();
					e.preventDefault();
					return false;
				}
			});
		});

		// search replacement text
		$('#searchForm').find('#Query').replacementText($.DSBO.SearchReplaceText);
		$('#searchForm').submit(function(e) {
			var keywords = $('#searchForm').find('#Query');
			if (keywords.val() === $.DSBO.SearchReplaceText) {
				keywords.val("");
			}
		});

		// submit newsletter on <enter>
		$('#newsletterForm').find("input").each(function(i, el) {
			$(el).keypress(function(e) {
				if (e.which === 13) {
					$('#newsletterForm').submit();
					e.preventDefault();
					return false;
				}
			});
		});

		// newsletter replacement text
		$('#newsletterForm').find('#Email').replacementText($.DSBO.NewsletterReplaceText);
		$('#newsletterForm').submit(function(e) {
			var email = $('#newsletterForm').find('#Email');
			if (email.val() === $.DSBO.NewsletterReplaceText) {
				email.val("");
			}
		});
		$('#newsletterForm').find('#SignUp').click(function(e) {
			$('#newsletterForm').submit();
			return false;
		});

		// scalable buttons
		if (!($.browser.msie && $.browser.version.substr(0, 1) < 7)) {
			$('.btn').each(function() {
				var b = $(this);
				var txt = b.text() || b.val();
				var href = b.attr('href') || "";
				if (this.tagName === "BUTTON" || (this.tagName === "INPUT" && $(this).attr('type').toLowerCase() === "submit")) {
					b = $('<a>').insertAfter(this).addClass(this.className).attr('id', this.id);
					b.click(function(e) {
						var form = $(this).parents('form');
						form.submit();
					});
					$(this).remove();
				}
				b.text('').prepend(
					'<i></i>'
				).append(
					$('<span></span>').text(txt).append(
						'<i></i><span></span>'
					)
				).css({ cursor: 'pointer' });
				if (href !== "") {
					b.attr('href', href);
				}
			});
		}

		// btn2
		$('.btn2').click(function(e) {
			var form = $(this).parents('form');
			form.submit();
		});
	});
})(jQuery);
