﻿/// <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://resources.disaboomjobs.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.KeywordsReplaceText = "ex: nurse, accountant, programmer, etc.";
jQuery.DSBO.LocationReplaceText = "ex: Denver, CO";

jQuery(function() {
	// feedback
	var feedback = jQuery('.feedback');
	feedback.animate({ opacity: 0.0 }, 3000, "linear", function() {
		feedback.remove();
	});

	// search button
	$('#searchbutton').click(function(e) {
		$('#searchform').submit();
		return false;
	});

	// search form
	$('#searchform').find("input").each(function(i, el) {
		$(el).keypress(function(e) {
			if (e.which === 13) {
				$('#searchform').submit();
				e.preventDefault();
				return false;
			}
		});
	});

	// replacement text
	$('div.searchbar').find('#keywords').replacementText($.DSBO.KeywordsReplaceText);
	$('div.searchbar').find('#location').replacementText($.DSBO.LocationReplaceText);
	$('#searchform').submit(function(e) {
		var keywords = $('div.searchbar').find('#keywords');
		if (keywords.val() === $.DSBO.KeywordsReplaceText) {
			keywords.val("");
		}

		var location = $('div.searchbar').find('#location');
		if (location.val() === $.DSBO.LocationReplaceText) {
			location.val("");
		}
	});
});

