// JavaScript Document
$(document).ready(JT_init);
function JT_init() {
	$("a.jTip").hover(function() {
		JT_show(this.href, this.id, this.name)
	}, function() {
		$('#JT').remove()
	}).click(function() {
		return false
	});
}
function JT_show(url, linkId, title) {
	if (title == false)
		title = "&nbsp;";
	var de = document.documentElement;
	var w = self.innerWidth || (de && de.clientWidth)
			|| document.body.clientWidth;
	var hasArea = w - getAbsoluteLeft(linkId);
	var clickElementy = getAbsoluteTop(linkId) - 3;
	var queryString = url.replace(/^[^\?]+\??/, '');
	var params = parseQuery(queryString);
	if (params['width'] === undefined) {
		params['width'] = 250
	}
	;
	if (params['link'] !== undefined) {
		$('#' + linkId).bind('click', function() {
			window.location = params['link']
		});
		$('#' + linkId).css('cursor', 'pointer');
	}
	if (hasArea > ((params['width'] * 1) + 75)) {
		$("body")
				.append(
						"<div id='JT' style='width:"
								+ params['width']
								* 1
								+ "px'><div id='JT_arrow_left'></div><div id='JT_close_left'>"
								+ title
								+ "</div><div id='JT_copy'><div class='JT_loader'><div></div></div>");
		var arrowOffset = getElementWidth(linkId) + 11;
		var clickElementx = getAbsoluteLeft(linkId) + arrowOffset;
	} else {
		$("body")
				.append(
						"<div id='JT' style='width:"
								+ params['width']
								* 1
								+ "px'><div id='JT_arrow_right' style='left:"
								+ ((params['width'] * 1) + 1)
								+ "px'></div><div id='JT_close_right'>"
								+ title
								+ "</div><div id='JT_copy'><div class='JT_loader'><div></div></div>");
		var clickElementx = getAbsoluteLeft(linkId)
				- ((params['width'] * 1) + 15);
	}
	$('#JT').css( {
		left : clickElementx + "px",
		top : clickElementy + "px"
	});
	$('#JT').show();
	$('#JT_copy').load(url);
}
function getElementWidth(objectId) {
	x = document.getElementById(objectId);
	return x.offsetWidth;
}
function getAbsoluteLeft(objectId) {
	o = document.getElementById(objectId)
	oLeft = o.offsetLeft
	while (o.offsetParent != null) {
		oParent = o.offsetParent
		oLeft += oParent.offsetLeft
		o = oParent
	}
	return oLeft
}
function getAbsoluteTop(objectId) {
	o = document.getElementById(objectId)
	oTop = o.offsetTop
	while (o.offsetParent != null) {
		oParent = o.offsetParent
		oTop += oParent.offsetTop
		o = oParent
	}
	return oTop
}
function parseQuery(query) {
	var Params = new Object();
	if (!query)
		return Params;
	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 blockEvents(evt) {
	if (evt.target) {
		evt.preventDefault();
	} else {
		evt.returnValue = false;
	}
}

(function(jQuery) {
	var self = null;
	jQuery.fn.autogrow = function(o) {
		return this.each(function() {
			new jQuery.autogrow(this, o);
		});
	};
	jQuery.autogrow = function(e, o) {
		this.options = o || {};
		this.dummy = null;
		this.interval = null;
		this.line_height = this.options.lineHeight
				|| parseInt(jQuery(e).css('line-height'));
		this.min_height = this.options.minHeight
				|| parseInt(jQuery(e).css('min-height'));
		this.max_height = this.options.maxHeight
				|| parseInt(jQuery(e).css('max-height'));
		;
		this.textarea = jQuery(e);
		if (this.line_height == NaN)
			this.line_height = 0;
		this.init();
	};
	jQuery.autogrow.fn = jQuery.autogrow.prototype = {
		autogrow : '1.2.2'
	};
	jQuery.autogrow.fn.extend = jQuery.autogrow.extend = jQuery.extend;
	jQuery.autogrow.fn
			.extend( {
				init : function() {
					var self = this;
					this.textarea.css( {
						overflow : 'hidden',
						display : 'block'
					});
					this.textarea.bind('focus', function() {
						self.startExpand()
					}).bind('blur', function() {
						self.stopExpand()
					});
					this.checkExpand();
				},
				startExpand : function() {
					var self = this;
					this.interval = window.setInterval(function() {
						self.checkExpand()
					}, 400);
				},
				stopExpand : function() {
					clearInterval(this.interval);
				},
				checkExpand : function() {
					if (this.dummy == null) {
						this.dummy = jQuery('<div></div>');
						this.dummy.css( {
							'font-size' : this.textarea.css('font-size'),
							'font-family' : this.textarea.css('font-family'),
							'width' : this.textarea.css('width'),
							'padding' : this.textarea.css('padding'),
							'line-height' : this.line_height + 'px',
							'overflow-x' : 'hidden',
							'position' : 'absolute',
							'top' : 0,
							'left' : -9999
						}).appendTo('body');
					}
					var html = this.textarea.val().replace(/(<|>)/g, '');
					if ($.browser.msie) {
						html = html.replace(/\n/g, '<BR>new');
					} else {
						html = html.replace(/\n/g, '<br>new');
					}
					if (this.dummy.html() != html) {
						this.dummy.html(html);
						if (this.max_height > 0
								&& (this.dummy.height() + this.line_height > this.max_height)) {
							this.textarea.css('overflow-y', 'auto');
						} else {
							this.textarea.css('overflow-y', 'hidden');
							if (this.textarea.height() < this.dummy.height()
									+ this.line_height
									|| (this.dummy.height() < this.textarea
											.height())) {
								this.textarea
										.animate(
												{
													height : (this.dummy
															.height() + this.line_height)
															+ 'px'
												}, 100);
							}
						}
					}
				}
			});
})(jQuery);

(function($) {
	$.fn.idleTimeout = function(options) {
		var defaults = {
			//inactivity : 900000,
			inactivity : 86400000,
			noconfirm : 60000,
			sessionAlive : 86400000,
			redirect_url : 'http://www.tut.com/theclub/index.php?handler=login&action=do_logout&auto=1',
			click_reset : true,
			alive_url : 'http://www.tut.com/theclub/index.php?handler=login&action=ajax_alive',
			logout_url : ''
		}
		var opts = $.extend(defaults, options);
		var liveTimeout, confTimeout, sessionTimeout;
		//console.log(opts);
		var start_liveTimeout = function() {
			clearTimeout(liveTimeout);
			clearTimeout(confTimeout);
			liveTimeout = setTimeout(logout, opts.inactivity);
			if (opts.sessionAlive) {
				clearTimeout(sessionTimeout);
				sessionTimeout = setTimeout(keep_session, opts.sessionAlive);
			}
		}
		var logout = function() {
			confTimeout = setTimeout(redirect, opts.noconfirm);
			$('#logout_warning').dialog( {
				buttons : {
					"Stay Logged In" : function() {
						stay_logged_in();
						$(this).dialog('close');
					}
				},
				modal : true,
				title : 'Auto Logout'
			});
			$('#logout_warning').dialog("open");
		}
		var redirect = function() {
			if (opts.logout_url) {
				$.get(opts.logout_url);
			}
			window.location.href = opts.redirect_url;
		}
		var stay_logged_in = function(el) {
			start_liveTimeout();
			if (opts.alive_url) {
				$.get(opts.alive_url);
			}
		}
		var keep_session = function() {
			$.get(opts.alive_url);
			clearTimeout(sessionTimeout);
			sessionTimeout = setTimeout(keep_session, opts.sessionAlive);
		}
		return this.each(function() {
			obj = $(this);
			start_liveTimeout();
			if (opts.click_reset) {
				$(document).bind('click', start_liveTimeout);
			}
			if (opts.sessionAlive) {
				keep_session();
			}
		});
	};
})(jQuery);