//-- Preload images to cure the browser flickering issue
if (document.images) {
	var aryImages = new Array(
		"/images/spacer.gif",
		"/images/bt_ad1_over.jpg",
		"/images/bt_ad2_over.jpg",
		"/images/bt_ad3_over.jpg",
		"/images/btn_orange.png"
	);
	var aryPreload = new Array();
	for (var img = 0; img < aryImages.length; img++) {
		aryPreload[img] = new Image();
		aryPreload[img].src = aryImages[img];
	}
}

//-- Opens links with the "external" rel attribute in a new window (CSS Compliant)
function initLinks() {
	if (document.getElementsByTagName) {
		var a = document.getElementsByTagName("A");
		for (var i=0; i<a.length; i++) {
			if (a[i].getAttribute("href") && a[i].getAttribute("rel") == "external") {
				a[i].target = "_blank";
			}
		}
	}
}

function mouseCoords(ev) {
	if (ev.pageX || ev.pageY) {
		return { x:ev.pageX, y:ev.pageY };
	}
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop - document.body.clientTop
	};
}

var tooltipTarget = null;
function moveTooltip(ev) {
	if (tooltipTarget != null) {
		ev = ev || window.event;
		var mousePos = mouseCoords(ev);
		tooltipTarget.style.left = (mousePos.x - 220).toString() + "px";
		tooltipTarget.style.top = (mousePos.y - 15).toString() + "px";
		tooltipTarget.style.display = "block";
	}
}

function showTooltip(id, ev) {
	var tooltip = document.getElementById(id);
	if (tooltip) {
		tooltipTarget = tooltip;
		ev = ev || window.event;
		var mousePos = mouseCoords(ev);
		tooltip.style.left = (mousePos.x - 220).toString() + "px";
		tooltip.style.top = (mousePos.y - 15).toString() + "px";
		tooltip.style.display = "block";
	}
}

function hideTooltip(id) {
	tooltipTarget = null;
	var tooltip = document.getElementById(id);
	if (tooltip) tooltip.style.display = "none";
}

function formatPhone(field, event) {
	if (field.value.replace(/^\s+|\s+$/g, "") == "") {
		return true;
	}
	event = event || window.event;
	code = event.which || event.keyCode;
	//-- ignore backspace, tab, shift, ctrl, home, end, arrows, del
	var aryCodes = [ 8, 9, 16, 17, 35, 36, 37, 38, 39, 46 ];
	if (!aryCodes.contains(code)) {
		if (field.value.match(/^[01]?\s?\(\d{1,2}$/) ||
			field.value.match(/^[01]?\s?\(\d{3}\)\s\d{1,2}$/) ||
			field.value.match(/^[01]?\s?\(\d{3}\)\s\d{3}-\d{1,4}$/) || 
			field.value.match(/^[01]?\s?\(\d{3}\)\s\d{3}-\d{4}\s[x]{1}\s[\d]{1,5}$/)
		) {
			return true;
		}
		var proceed = true;
		if (proceed) proceed = !field.value.match(/^([01])\s$/);
		if (proceed) proceed = !field.value.match(/^([01]?\s?)(\()$/);
		if (proceed) proceed = !field.value.match(/^([01]?\s?)(\([0-9]{3}\))\s$/);
		if (proceed) proceed = !field.value.match(/^([01]?\s?)(\([0-9]{3}\))\s([0-9]{3})\-$/);
		if (proceed) proceed = !field.value.match(/^([01]?\s?)(\([0-9]{3}\))\s([0-9]{3})\-([0-9]{4})([ex\s])$/);
		if (proceed) {
			var temp = field.value.replace(/[^0-9]/g, "");
			var cursor = temp.length;
			var prefix = temp.replace(/^([01]?)([0-9]*)$/, "$1").length;
			temp = temp.replace(/^([01]?)([0-9]{0,3})([0-9]{0,3})([0-9]{0,4})([0-9]*)$/, "$1 ($2) $3-$4 x $5");
			if (cursor < (11+prefix)) temp = temp.replace(/\s*x\s*$/, "");
			if (cursor < (6+prefix)) temp = temp.replace(/\-\s*$/, "");
			if (cursor < (3+prefix)) temp = temp.replace(/\)\s*$/, "");
			if (cursor < (1+prefix)) temp = temp.replace(/\s\(*$/, "");
			if (!cursor) temp = "";
			if (cursor > (15+prefix)) temp = temp.substring(0,temp.length-(cursor-(15+prefix)));
			temp = temp.replace(/^\s+|\s+$/g, "");
			field.value = temp;
		} else {
			if (field.value.match(/^([01]?\s?)(\([0-9]{3}\))\s([0-9]{3})\-([0-9]{4})([ex\s])$/)) {
				field.value = field.value.replace(/([ex\s])$/, " x ");
			} else {
				field.value = field.value;
			}
		}
		field.focus();
	}
	return true;
}

function formatZipCode(field, event) {
	if (field.value.replace(/^\s+|\s+$/g, "") == "") {
		return true;
	}
	event = event || window.event;
	code = event.which || event.keyCode;
	//-- ignore backspace, tab, shift, ctrl, home, end, arrows, del
	var aryCodes = [ 8, 9, 16, 17, 35, 36, 37, 38, 39, 46 ];
	if (!aryCodes.contains(code)) {
		if (!field.value.match(/^[0-9]*$/)) {
			field.value = field.value.replace(/[^0-9]/g, "");
		}
		if (field.value.replace(/^\s*|\s*$/) != "") {
			if (!field.value.match(/^([0-9]{1,5})$/)) {
				field.value = field.value.replace(/([0-9]{1,5})([0-9]*)$/, "$1");
			}
		}
	}
	return true;
}

function isValidDate(strValue) {
	var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/;
	if (!objRegExp.test(strValue)) {
		return false;
	} else {
		var strSeparator = strValue.replace(objRegExp, "$1");
		var arrayDate = strValue.split(strSeparator);
		if (arrayDate[0].length == 1) arrayDate[0] = "0" + arrayDate[0];
		var arrayLookup = {
			'01' : 31, '03' : 31,
			'04' : 30, '05' : 31,
			'06' : 30, '07' : 31,
			'08' : 31, '09' : 30,
			'10' : 31, '11' : 30,
			'12' : 31
		}
		var intDay = parseInt(arrayDate[1],10);
		if (arrayLookup[arrayDate[0]] != null) {
			if (intDay <= arrayLookup[arrayDate[0]] && intDay != 0) {
				return true;
			}
		}
		var intMonth = parseInt(arrayDate[0],10);
		if (intMonth == 2) {
			var intYear = parseInt(arrayDate[2]);
			if (intDay > 0 && intDay < 29) {
				return true;
			} else if (intDay == 29) {
				if ((intYear % 4 == 0) && (intYear % 100 != 0) || (intYear % 400 == 0)) {
					return true;
				}
			}
		}
	}
	return false;
}

Array.prototype.contains = function(obj) {
	var i = this.length;
	while (i--) {
		if (this[i] === obj) {
			return true;
		}
	}
	return false;
}

//-- Initialize all required elements
/*
function init() {
	initLinks();
}
if (window.attachEvent) window.attachEvent("onload", init);
else window.onload = function() { init(); }
*/

$(document).ready(function(){
	$("a.colorbox").click(function(){
		if (this.rel)
			$("a[rel='" + this.rel + "']").colorbox();
		else
			$(this).colorbox();
	});
	imgLoader = new Image();
	imgLoader.src = "/images/cb_loading.gif";
});