/*
* Thickbox 3.1 - One Box To Rule Them All.
* By Cody Lindley (http://www.codylindley.com)
* Copyright (c) 2007 cody lindley
* Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
*/

/* Attention -- Do not edit this file directly FOR DESIGN PURPOSES!
If you need to specify the size/width of #TB_Window, add an onclick event to your element and pass in a class name.

Ex: tb_show('caption','file.aspx?height=400&width=300&modal=true;','imageGroupName','className',true,'differentLoader.gif')

Or, you can specify the height/width in your query string and let ThickBox handle it for you! You
may also pass className in the query string to allow customization of your modal window via your own stylesheet.

Ex: <a href="#TB_inline?width=400&height=300&modal=true&className=TermsModal&inlineId=hiddenTermsDiv">Show Terms</a>

Values should not be hardcoded in this file or the ThickBox css file!! **THESE ARE GLOBAL FILES**

The current support for Flash (so it does not sit on top of the modal window) is to either:
1. Wrap your Flash content in a DIV called "FlashFile" or "FlashImg" (LEGACY support for old LoginPopin.js -- AVOID THIS!)
2. Add wmode=transparent (or opaque depending on flash) to both PARAM of the Flash Object AS WELL as an attribute in the EMBED tag. (DO THIS!)
*/

var protocol = (("https:" == document.location.protocol) ? "https://" : "http://");
var host = document.location.hostname;
var tb_pathToImage = protocol + host + "/images/loadingAnimation.gif";
/*!!!!!!!!!!!!!!!!! edit below this line at your own risk !!!!!!!!!!!!!!!!!!!!!!!*/
//on page load call tb_init
$(document).ready(function () {
	tb_init('a.thickbox, area.thickbox, input.thickbox'); //pass where to apply thickbox
	imgLoader = new Image(); // preload image
	imgLoader.src = tb_pathToImage;
});
//add thickbox to href & area elements that have a class of .thickbox
function tb_init(domChunk) {
	$(domChunk).click(function () {
		var t = this.title || this.name || null;
		var a = this.href || this.alt;
		var g = this.rel || false;
		tb_show(t, a, g);
		this.blur();
		return false;
	});
}
function tb_show(caption, url, imageGroup, className, preventEsc, loader) {//function called when the user clicks on a thickbox link
	imgLoader.src = loader || imgLoader.src
	className = className || undefined;
	preventEsc = preventEsc || undefined;
	try {
		if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
			$("body", "html").css({ height: "100%", width: "100%" });
			$("html").css("overflow", "hidden");
			if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
				$("body").append("<iframe id='TB_HideSelect' src=\"javascript:'<html></html>';\"></iframe><div id='TB_overlay'></div><div id='TB_window' " + (function (className) { if (className != undefined) { return 'class="' + className + '"' } else { return 'style=""' } })(className) + "></div>");
				$("#TB_overlay").click(tb_remove);
			}
		} else {//all others

			if (document.getElementById("TB_overlay") === null) {
				$("body").append("<div id='TB_overlay'></div><div id='TB_window' " + (function (className) { if (className != undefined) { return 'class="' + className + '"' } else { return 'style=""' } })(className) + "></div>");
				$("#TB_overlay").click(tb_remove);
			}
		}
		if (tb_detectMacXFF()) {
			$("#TB_overlay").addClass("TB_overlayMacFFBGHack"); //use png overlay so hide flash
		} else {
			$("#TB_overlay").addClass("TB_overlayBG"); //use background and opacity
		}

		if (caption === null) { caption = ""; }
		$("body").append("<div id='TB_load'><img src='" + imgLoader.src + "' /></div>"); //add loader to the page
		$('#TB_load').show(); //show loader

		var baseURL;
		if (url.indexOf("?") !== -1) { //ff there is a query string involved
			baseURL = url.substr(0, url.indexOf("?"));
		} else {
			baseURL = url;
		}

		var urlString = /\.jpg|\.jpeg|\.png|\.gif|\.html|\.htm|\.php|\.cfm|\.asp|\.aspx|\.jsp|\.jst|\.rb|\.txt/g;
		var urlType = baseURL.toLowerCase().match(urlString);

		if (urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp') {//code to show images

			TB_PrevCaption = "";
			TB_PrevURL = "";
			TB_PrevHTML = "";
			TB_NextCaption = "";
			TB_NextURL = "";
			TB_NextHTML = "";
			TB_imageCount = "";
			TB_FoundURL = false;
			if (imageGroup) {
				TB_TempArray = $("a[@rel=" + imageGroup + "]").get();
				for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML === "")); TB_Counter++) {
					var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString);
					if (!(TB_TempArray[TB_Counter].href == url)) {
						if (TB_FoundURL) {
							TB_NextCaption = TB_TempArray[TB_Counter].title;
							TB_NextURL = TB_TempArray[TB_Counter].href;
							TB_NextHTML = "<span id='TB_next'>&nbsp;&nbsp;<a href='#'>Next &gt;</a></span>";
						} else {
							TB_PrevCaption = TB_TempArray[TB_Counter].title;
							TB_PrevURL = TB_TempArray[TB_Counter].href;
							TB_PrevHTML = "<span id='TB_prev'>&nbsp;&nbsp;<a href='#'>&lt; Prev</a></span>";
						}
					} else {
						TB_FoundURL = true;
						TB_imageCount = "Image " + (TB_Counter + 1) + " of " + (TB_TempArray.length);
					}
				}
			}
			imgPreloader = new Image();
			imgPreloader.onload = function () {
				imgPreloader.onload = null;

				// Resizing large images - orginal by Christian Montoya edited by me.
				var pagesize = tb_getPageSize();
				var x = pagesize[0] - 150;
				var y = pagesize[1] - 150;
				var imageWidth = imgPreloader.width;
				var imageHeight = imgPreloader.height;
				if (imageWidth > x) {
					imageHeight = imageHeight * (x / imageWidth);
					imageWidth = x;
					if (imageHeight > y) {
						imageWidth = imageWidth * (y / imageHeight);
						imageHeight = y;
					}
				} else if (imageHeight > y) {
					imageWidth = imageWidth * (y / imageHeight);
					imageHeight = y;
					if (imageWidth > x) {
						imageHeight = imageHeight * (x / imageWidth);
						imageWidth = x;
					}
				}
				// End Resizing

				TB_WIDTH = imageWidth + 30;
				TB_HEIGHT = imageHeight + 60;
				$("#TB_window").append("<a href='' id='TB_ImageOff' title='Close'><img id='TB_Image' src='" + url + "' width='" + imageWidth + "' height='" + imageHeight + "' alt='" + caption + "'/></a>" + "<div id='TB_caption'>" + caption + "<div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div>");

				$("#TB_closeWindowButton").click(tb_remove);

				if (!(TB_PrevHTML === "")) {
					function goPrev() {
						if ($(document).unbind("click", goPrev)) { $(document).unbind("click", goPrev); }
						$("#TB_window").remove();
						$("body").append("<div id='TB_window'></div>");
						tb_show(TB_PrevCaption, TB_PrevURL, imageGroup);
						return false;
					}
					$("#TB_prev").click(goPrev);
				}

				if (!(TB_NextHTML === "")) {
					function goNext() {
						$("#TB_window").remove();
						$("body").append("<div id='TB_window'></div>");
						tb_show(TB_NextCaption, TB_NextURL, imageGroup);
						return false;
					}
					$("#TB_next").click(goNext);

				}
				document.onkeydown = function (e) {
					if (e == null) { // ie
						keycode = event.keyCode;
					} else { // mozilla
						keycode = e.which;
					}
					if ((keycode == 27) && (preventEsc != true)) { // close
						tb_remove();
					} else if (keycode == 190) { // display previous image
						if (!(TB_NextHTML == "")) {
							document.onkeydown = "";
							goNext();
						}
					} else if (keycode == 188) { // display next image
						if (!(TB_PrevHTML == "")) {
							document.onkeydown = "";
							goPrev();
						}
					}
				};

				tb_position();
				$("#TB_load").remove();
				$("#TB_ImageOff").click(tb_remove);
				$("#TB_window").css({ display: "block" }); //for safari using css instead of show
			};

			imgPreloader.src = url;
		} else {//code to show html
			var queryString = url.replace(/^[^\?]+\??/, '');
			var params = tb_parseQuery(queryString);
			if ((params['preventEsc'] != undefined) && (params['preventEsc'] != true)) { preventEsc = true }
			TB_WIDTH = (params['width'] * 1) + 30 || 630; //defaults to 630 if no paramaters were added to URL
			TB_HEIGHT = (params['height'] * 1) + 40 || 440; //defaults to 440 if no paramaters were added to URL
			ajaxContentW = TB_WIDTH - 30;
			ajaxContentH = TB_HEIGHT - 45;
			if (url.indexOf('TB_iframe') != -1) {// either iframe or ajax window
				urlNoQuery = url.split('TB_');
				$("#TB_iframeContent").remove();
				if (params['modal'] != "true") {//iframe no modal
					$("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>" + caption + "</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a> or Esc Key</div></div><iframe frameborder='0' hspace='0' src='" + urlNoQuery[0] + "' id='TB_iframeContent' name='TB_iframeContent" + Math.round(Math.random() * 1000) + "' onload='tb_showIframe()' style='width:" + (ajaxContentW + 29) + "px;height:" + (ajaxContentH + 17) + "px;' > </iframe>");
				} else {//iframe modal
					$("#TB_overlay").unbind();
					$("#TB_window").append("<iframe frameborder='0' hspace='0' src='" + urlNoQuery[0] + "' id='TB_iframeContent' name='TB_iframeContent" + Math.round(Math.random() * 1000) + "' onload='tb_showIframe()' style='width:" + (ajaxContentW + 29) + "px;height:" + (ajaxContentH + 17) + "px;'> </iframe>");
				}
			} else {// not an iframe, ajax
				if ($("#TB_window").css("display") != "block") {
					if (params['modal'] != "true") {//ajax no modal
						$("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>" + caption + "</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>close</a> or Esc Key</div></div><div id='TB_ajaxContent' style='width:" + ajaxContentW + "px;height:" + ajaxContentH + "px'></div>");
					} else {//ajax modal
						$("#TB_overlay").unbind();
						$("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:" + ajaxContentW + "px;height:" + ajaxContentH + "px;'></div>");
					}
				} else {//this means the window is already up, we are just loading new content via ajax
					$("#TB_ajaxContent")[0].style.width = ajaxContentW + "px";
					$("#TB_ajaxContent")[0].style.height = ajaxContentH + "px";
					$("#TB_ajaxContent")[0].scrollTop = 0;
					$("#TB_ajaxWindowTitle").html(caption);
				}
			}
			$("#TB_closeWindowButton").click(tb_remove);

			if (url.indexOf('TB_inline') != -1) {
				$("#TB_ajaxContent").append($('#' + params['inlineId']).children());
				$("#TB_window").unload(function () {
					$('#' + params['inlineId']).append($("#TB_ajaxContent").children()); // move elements back when you're finished
				});
				tb_position();
				setTimeout('$("#TB_load").remove()', 10);
				$("#TB_window").css({ display: "block" });
				(function (className) {
					if (className.arg != undefined) { $("#TB_window").attr("class", className.arg) }
					else if (className.inline != undefined) { $("#TB_window").attr("class", className.inline) }
					else { return }
				})({ arg: className, inline: params['className'] })
			} else if (url.indexOf('TB_iframe') != -1) {
				tb_position();
				if ($.browser.safari) {//safari needs help because it will not fire iframe onload
					setTimeout('$("#TB_load").remove()', 10);
					$("#TB_window").css({ display: "block" });
					(function (className) {
						if (className.arg != undefined) { $("#TB_window").attr("class", className.arg) }
						else if (className.inline != undefined) { $("#TB_window").attr("class", className.inline) }
						else { return }
					})({ arg: className, inline: params['className'] })
				}
			} else {
				$("#TB_ajaxContent").load(url += "&random=" + (new Date().getTime()), function () {//to do a post change this load method
					tb_position();
					setTimeout('$("#TB_load").remove()', 10);
					tb_init("#TB_ajaxContent a.thickbox");
					$("#TB_window").css({ display: "block" });
					(function (className) {
						if (className.arg != undefined) { $("#TB_window").attr("class", className.arg) }
						else if (className.inline != undefined) { $("#TB_window").attr("class", className.inline) }
						else { return }
					})({ arg: className, inline: params['className'] })
				});
				if (!params['modal']) {
				}

			}
			document.onkeyup = function (e) {
				if (e == null) { // ie
					keycode = event.keyCode;
				} else { // mozilla
					keycode = e.which;
				}
				if ((keycode == 27) && (preventEsc != true)) { // close
					tb_remove();
				}
			};
		}

	} catch (e) {
		// errors suppressed
	}
	try {
		/* Due to Flash sitting on top of the DOM when wmode=transparent/opaque is not present, we will hide it */
		tb_flashHandler('hide')
	} catch (e) {
		// flash file not on page
	}

}
//helper functions below
function tb_showIframe() {
	$("#TB_load").remove();
	$("#TB_window").css({ display: "block" });
}
function tb_remove() {
	$("#TB_imageOff").unbind("click");
	$("#TB_closeWindowButton").unbind("click");
	$("#TB_window").fadeOut("fast", function () { $('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove(); });
	$("#TB_load").remove();
	if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
		$("body", "html").css({ height: "auto", width: "auto" });
		$("html").css("overflow", "");
	}
	document.onkeydown = "";
	document.onkeyup = "";
	return false;

	try {
		tb_flashHandler('show')
	} catch (e) {
		// suppress errors
	}
}
function tb_position() {
	$("#TB_window").css({ marginLeft: '-' + parseInt((TB_WIDTH / 2), 10) + 'px', width: TB_WIDTH + 'px' });
	if (!(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
		$("#TB_window").css({ marginTop: '-' + parseInt((TB_HEIGHT / 2), 10) + 'px' });
	}
}
function tb_parseQuery(query) {
	var Params = {};
	if (!query) { return Params; } // return empty object
	var Pairs = query.split(/[;&]/);
	for (var i = 0; i < Pairs.length; i++) {
		var KeyVal = Pairs[i].split('=');
		if (!KeyVal || KeyVal.length != 2) { continue; }
		var key = unescape(KeyVal[0]);
		var val = unescape(KeyVal[1]);
		val = val.replace(/\+/g, ' ');
		Params[key] = val;
	}
	return Params;
}
function tb_getPageSize() {
	var de = document.documentElement;
	var w = window.innerWidth || self.innerWidth || (de && de.clientWidth) || document.body.clientWidth;
	var h = window.innerHeight || self.innerHeight || (de && de.clientHeight) || document.body.clientHeight;
	arrayPageSize = [w, h];
	return arrayPageSize;
}
function tb_detectMacXFF() {
	var userAgent = navigator.userAgent.toLowerCase();
	if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox') != -1) {
		return true;
	}
}
function tb_flashHandler(action) {
	eval('$("#FlashFile, #FlashImg").' + action + '()');
}
