/*
 * jquery.qtip. The jQuery tooltip plugin
 *
 * Copyright (c) 2009 Craig Thompson
 * http://craigsworks.com
 *
 * Licensed under MIT
 * http://www.opensource.org/licenses/mit-license.php
 *
 * Launch  : February 2009
 * Version : 1.0.0-rc3
 * Released: Tuesday 12th May, 2009 - 00:00
 * Debug: jquery.qtip.debug.js
 */
( function(f) {
	f.fn.qtip = function(B, u) {
		var y, t, A, s, x, w, v, z;
		if (typeof B == "string") {
			if (typeof f(this).data("qtip") !== "object") {
				f.fn.qtip.log.error.call(self, 1,
						f.fn.qtip.constants.NO_TOOLTIP_PRESENT, false)
			}
			if (B == "api") {
				return f(this).data("qtip").interfaces[f(this).data("qtip").current]
			} else {
				if (B == "interfaces") {
					return f(this).data("qtip").interfaces
				}
			}
		} else {
			if (!B) {
				B = {}
			}
			if (typeof B.content !== "object"
					|| (B.content.jquery && B.content.length > 0)) {
				B.content = {
					text :B.content
				}
			}
			if (typeof B.content.title !== "object") {
				B.content.title = {
					text :B.content.title
				}
			}
			if (typeof B.position !== "object") {
				B.position = {
					corner :B.position
				}
			}
			if (typeof B.position.corner !== "object") {
				B.position.corner = {
					target :B.position.corner,
					tooltip :B.position.corner
				}
			}
			if (typeof B.show !== "object") {
				B.show = {
					when :B.show
				}
			}
			if (typeof B.show.when !== "object") {
				B.show.when = {
					event :B.show.when
				}
			}
			if (typeof B.show.effect !== "object") {
				B.show.effect = {
					type :B.show.effect
				}
			}
			if (typeof B.hide !== "object") {
				B.hide = {
					when :B.hide
				}
			}
			if (typeof B.hide.when !== "object") {
				B.hide.when = {
					event :B.hide.when
				}
			}
			if (typeof B.hide.effect !== "object") {
				B.hide.effect = {
					type :B.hide.effect
				}
			}
			if (typeof B.style !== "object") {
				B.style = {
					name :B.style
				}
			}
			B.style = c(B.style);
			s = f.extend(true, {}, f.fn.qtip.defaults, B);
			s.style = a.call( {
				options :s
			}, s.style);
			s.user = f.extend(true, {}, B)
		}
		return f(this)
				.each(
						function() {
							if (typeof B == "string") {
								w = B.toLowerCase();
								A = f(this).qtip("interfaces");
								if (typeof A == "object") {
									if (u === true && w == "destroy") {
										while (A.length > 0) {
											A[A.length - 1].destroy()
										}
									} else {
										if (u !== true) {
											A = [ f(this).qtip("api") ]
										}
										for (y = 0; y < A.length; y++) {
											if (w == "destroy") {
												A[y].destroy()
											} else {
												if (A[y].status.rendered === true) {
													if (w == "show") {
														A[y].show()
													} else {
														if (w == "hide") {
															A[y].hide()
														} else {
															if (w == "focus") {
																A[y].focus()
															} else {
																if (w == "disable") {
																	A[y]
																			.disable(true)
																} else {
																	if (w == "enable") {
																		A[y]
																				.disable(false)
																	}
																}
															}
														}
													}
												}
											}
										}
									}
								}
							} else {
								v = f.extend(true, {}, s);
								v.hide.effect.length = s.hide.effect.length;
								v.show.effect.length = s.show.effect.length;
								if (v.position.container === false) {
									v.position.container = f(document.body)
								}
								if (v.position.target === false) {
									v.position.target = f(this)
								}
								if (v.show.when.target === false) {
									v.show.when.target = f(this)
								}
								if (v.hide.when.target === false) {
									v.hide.when.target = f(this)
								}
								t = f.fn.qtip.interfaces.length;
								for (y = 0; y < t; y++) {
									if (typeof f.fn.qtip.interfaces[y] == "undefined") {
										t = y;
										break
									}
								}
								x = new d(f(this), v, t);
								f.fn.qtip.interfaces[t] = x;
								if (typeof f(this).data("qtip") == "object") {
									if (typeof f(this).attr("qtip") === "undefined") {
										f(this).data("qtip").current = f(this)
												.data("qtip").interfaces.length
									}
									f(this).data("qtip").interfaces.push(x)
								} else {
									f(this).data("qtip", {
										current :0,
										interfaces : [ x ]
									})
								}
								if (v.content.prerender === false
										&& v.show.when.event !== false
										&& v.show.ready !== true) {
									v.show.when.target
											.bind(
													v.show.when.event
															+ ".qtip-" + t
															+ "-create",
													{
														qtip :t
													},
													function(C) {
														z = f.fn.qtip.interfaces[C.data.qtip];
														z.options.show.when.target
																.unbind(z.options.show.when.event
																		+ ".qtip-"
																		+ C.data.qtip
																		+ "-create");
														z.cache.mouse = {
															x :C.pageX,
															y :C.pageY
														};
														p.call(z);
														z.options.show.when.target
																.trigger(z.options.show.when.event)
													})
								} else {
									x.cache.mouse = {
										x :v.show.when.target.offset().left,
										y :v.show.when.target.offset().top
									};
									p.call(x)
								}
							}
						})
	};
	function d(u, t, v) {
		var s = this;
		s.id = v;
		s.options = t;
		s.status = {
			animated :false,
			rendered :false,
			disabled :false,
			focused :false
		};
		s.elements = {
			target :u.addClass(s.options.style.classes.target),
			tooltip :null,
			wrapper :null,
			content :null,
			contentWrapper :null,
			title :null,
			button :null,
			tip :null,
			bgiframe :null
		};
		s.cache = {
			mouse : {},
			position : {},
			toggle :0
		};
		s.timers = {};
		f
				.extend(
						s,
						s.options.api,
						{
							show : function(y) {
								var x, z;
								if (!s.status.rendered) {
									return f.fn.qtip.log.error
											.call(
													s,
													2,
													f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,
													"show")
								}
								if (s.elements.tooltip.css("display") !== "none") {
									return s
								}
								s.elements.tooltip.stop(true, false);
								x = s.beforeShow.call(s, y);
								if (x === false) {
									return s
								}
								function w() {
									if (s.options.position.type !== "static") {
										s.focus()
									}
									s.onShow.call(s, y);
									if (f.browser.msie) {
										s.elements.tooltip.get(0).style
												.removeAttribute("filter")
									}
								}
								s.cache.toggle = 1;
								if (s.options.position.type !== "static") {
									s.updatePosition(y,
											(s.options.show.effect.length > 0))
								}
								if (typeof s.options.show.solo == "object") {
									z = f(s.options.show.solo)
								} else {
									if (s.options.show.solo === true) {
										z = f("div.qtip").not(
												s.elements.tooltip)
									}
								}
								if (z) {
									z
											.each( function() {
												if (f(this).qtip("api").status.rendered === true) {
													f(this).qtip("api").hide()
												}
											})
								}
								if (typeof s.options.show.effect.type == "function") {
									s.options.show.effect.type.call(
											s.elements.tooltip,
											s.options.show.effect.length);
									s.elements.tooltip.queue( function() {
										w();
										f(this).dequeue()
									})
								} else {
									switch (s.options.show.effect.type
											.toLowerCase()) {
									case "fade":
										s.elements.tooltip
												.fadeIn(
														s.options.show.effect.length,
														w);
										break;
									case "slide":
										s.elements.tooltip
												.slideDown(
														s.options.show.effect.length,
														function() {
															w();
															if (s.options.position.type !== "static") {
																s
																		.updatePosition(
																				y,
																				true)
															}
														});
										break;
									case "grow":
										s.elements.tooltip
												.show(
														s.options.show.effect.length,
														w);
										break;
									default:
										s.elements.tooltip.show(null, w);
										break
									}
									s.elements.tooltip
											.addClass(s.options.style.classes.active)
								}
								return f.fn.qtip.log.error
										.call(
												s,
												1,
												f.fn.qtip.constants.EVENT_SHOWN,
												"show")
							},
							hide : function(y) {
								var x;
								if (!s.status.rendered) {
									return f.fn.qtip.log.error
											.call(
													s,
													2,
													f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,
													"hide")
								} else {
									if (s.elements.tooltip.css("display") === "none") {
										return s
									}
								}
								clearTimeout(s.timers.show);
								s.elements.tooltip.stop(true, false);
								x = s.beforeHide.call(s, y);
								if (x === false) {
									return s
								}
								function w() {
									s.onHide.call(s, y)
								}
								s.cache.toggle = 0;
								if (typeof s.options.hide.effect.type == "function") {
									s.options.hide.effect.type.call(
											s.elements.tooltip,
											s.options.hide.effect.length);
									s.elements.tooltip.queue( function() {
										w();
										f(this).dequeue()
									})
								} else {
									switch (s.options.hide.effect.type
											.toLowerCase()) {
									case "fade":
										s.elements.tooltip
												.fadeOut(
														s.options.hide.effect.length,
														w);
										break;
									case "slide":
										s.elements.tooltip
												.slideUp(
														s.options.hide.effect.length,
														w);
										break;
									case "grow":
										s.elements.tooltip
												.hide(
														s.options.hide.effect.length,
														w);
										break;
									default:
										s.elements.tooltip.hide(null, w);
										break
									}
									s.elements.tooltip
											.removeClass(s.options.style.classes.active)
								}
								return f.fn.qtip.log.error.call(s, 1,
										f.fn.qtip.constants.EVENT_HIDDEN,
										"hide")
							},
							updatePosition : function(w, x) {
								var C, G, L, J, H, E, y, I, B, D, K, A, F, z;
								if (!s.status.rendered) {
									return f.fn.qtip.log.error
											.call(
													s,
													2,
													f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,
													"updatePosition")
								} else {
									if (s.options.position.type == "static") {
										return f.fn.qtip.log.error
												.call(
														s,
														1,
														f.fn.qtip.constants.CANNOT_POSITION_STATIC,
														"updatePosition")
									}
								}
								G = {
									position : {
										left :0,
										top :0
									},
									dimensions : {
										height :0,
										width :0
									},
									corner :s.options.position.corner.target
								};
								L = {
									position :s.getPosition(),
									dimensions :s.getDimensions(),
									corner :s.options.position.corner.tooltip
								};
								if (s.options.position.target !== "mouse") {
									if (s.options.position.target.get(0).nodeName
											.toLowerCase() == "area") {
										J = s.options.position.target.attr(
												"coords").split(",");
										for (C = 0; C < J.length; C++) {
											J[C] = parseInt(J[C])
										}
										H = s.options.position.target.parent(
												"map").attr("name");
										E = f('img[usemap="#' + H + '"]:first')
												.offset();
										G.position = {
											left :Math.floor(E.left + J[0]),
											top :Math.floor(E.top + J[1])
										};
										switch (s.options.position.target.attr(
												"shape").toLowerCase()) {
										case "rect":
											G.dimensions = {
												width :Math.ceil(Math.abs(J[2]
														- J[0])),
												height :Math.ceil(Math.abs(J[3]
														- J[1]))
											};
											break;
										case "circle":
											G.dimensions = {
												width :J[2] + 1,
												height :J[2] + 1
											};
											break;
										case "poly":
											G.dimensions = {
												width :J[0],
												height :J[1]
											};
											for (C = 0; C < J.length; C++) {
												if (C % 2 == 0) {
													if (J[C] > G.dimensions.width) {
														G.dimensions.width = J[C]
													}
													if (J[C] < J[0]) {
														G.position.left = Math
																.floor(E.left
																		+ J[C])
													}
												} else {
													if (J[C] > G.dimensions.height) {
														G.dimensions.height = J[C]
													}
													if (J[C] < J[1]) {
														G.position.top = Math
																.floor(E.top
																		+ J[C])
													}
												}
											}
											G.dimensions.width = G.dimensions.width
													- (G.position.left - E.left);
											G.dimensions.height = G.dimensions.height
													- (G.position.top - E.top);
											break;
										default:
											return f.fn.qtip.log.error
													.call(
															s,
															4,
															f.fn.qtip.constants.INVALID_AREA_SHAPE,
															"updatePosition");
											break
										}
										G.dimensions.width -= 2;
										G.dimensions.height -= 2
									} else {
										if (s.options.position.target
												.add(document.body).length === 1) {
											G.position = {
												left :f(document).scrollLeft(),
												top :f(document).scrollTop()
											};
											G.dimensions = {
												height :f(window).height(),
												width :f(window).width()
											}
										} else {
											if (typeof s.options.position.target
													.attr("qtip") !== "undefined") {
												G.position = s.options.position.target
														.qtip("api").cache.position
											} else {
												G.position = s.options.position.target
														.offset()
											}
											G.dimensions = {
												height :s.options.position.target
														.outerHeight(),
												width :s.options.position.target
														.outerWidth()
											}
										}
									}
									y = f.extend( {}, G.position);
									if (G.corner.search(/right/i) !== -1) {
										y.left += G.dimensions.width
									}
									if (G.corner.search(/bottom/i) !== -1) {
										y.top += G.dimensions.height
									}
									if (G.corner
											.search(/((top|bottom)Middle)|center/) !== -1) {
										y.left += (G.dimensions.width / 2)
									}
									if (G.corner
											.search(/((left|right)Middle)|center/) !== -1) {
										y.top += (G.dimensions.height / 2)
									}
								} else {
									G.position = y = {
										left :s.cache.mouse.x,
										top :s.cache.mouse.y
									};
									G.dimensions = {
										height :1,
										width :1
									}
								}
								if (L.corner.search(/right/i) !== -1) {
									y.left -= L.dimensions.width
								}
								if (L.corner.search(/bottom/i) !== -1) {
									y.top -= L.dimensions.height
								}
								if (L.corner
										.search(/((top|bottom)Middle)|center/) !== -1) {
									y.left -= (L.dimensions.width / 2)
								}
								if (L.corner
										.search(/((left|right)Middle)|center/) !== -1) {
									y.top -= (L.dimensions.height / 2)
								}
								I = (f.browser.msie) ? 1 : 0;
								B = (f.browser.msie && parseInt(f.browser.version
										.charAt(0)) === 6) ? 1 : 0;
								if (s.options.style.border.radius > 0) {
									if (L.corner.search(/Left/) !== -1) {
										y.left -= s.options.style.border.radius
									} else {
										if (L.corner.search(/Right/) !== -1) {
											y.left += s.options.style.border.radius
										}
									}
									if (L.corner.search(/Top/) !== -1) {
										y.top -= s.options.style.border.radius
									} else {
										if (L.corner.search(/Bottom/) !== -1) {
											y.top += s.options.style.border.radius
										}
									}
								}
								if (I) {
									if (L.corner.search(/top/) !== -1) {
										y.top -= I
									} else {
										if (L.corner.search(/bottom/) !== -1) {
											y.top += I
										}
									}
									if (L.corner.search(/left/) !== -1) {
										y.left -= I
									} else {
										if (L.corner.search(/right/) !== -1) {
											y.left += I
										}
									}
									if (L.corner
											.search(/leftMiddle|rightMiddle/) !== -1) {
										y.top -= 1
									}
								}
								if (s.options.position.adjust.screen === true) {
									y = o.call(s, y, G, L)
								}
								if (s.options.position.target === "mouse"
										&& s.options.position.adjust.mouse === true) {
									if (s.options.position.adjust.screen === true
											&& s.elements.tip) {
										K = s.elements.tip.attr("rel")
									} else {
										K = s.options.position.corner.tooltip
									}
									y.left += (K.search(/right/i) !== -1) ? -6
											: 6;
									y.top += (K.search(/bottom/i) !== -1) ? -6
											: 6
								}
								if (!s.elements.bgiframe
										&& f.browser.msie
										&& parseInt(f.browser.version.charAt(0)) == 6) {
									f("select, object")
											.each(
													function() {
														A = f(this).offset();
														A.bottom = A.top
																+ f(this)
																		.height();
														A.right = A.left
																+ f(this)
																		.width();
														if (y.top
																+ L.dimensions.height >= A.top
																&& y.left
																		+ L.dimensions.width >= A.left) {
															k.call(s)
														}
													})
								}
								y.left += s.options.position.adjust.x;
								y.top += s.options.position.adjust.y;
								F = s.getPosition();
								if (y.left != F.left || y.top != F.top) {
									z = s.beforePositionUpdate.call(s, w);
									if (z === false) {
										return s
									}
									s.cache.position = y;
									if (x === true) {
										s.status.animated = true;
										s.elements.tooltip.animate(y, 200,
												"swing", function() {
													s.status.animated = false
												})
									} else {
										s.elements.tooltip.css(y)
									}
									s.onPositionUpdate.call(s, w);
									if (typeof w !== "undefined" && w.type
											&& w.type !== "mousemove") {
										f.fn.qtip.log.error
												.call(
														s,
														1,
														f.fn.qtip.constants.EVENT_POSITION_UPDATED,
														"updatePosition")
									}
								}
								return s
							},
							updateWidth : function(w) {
								var x;
								if (!s.status.rendered) {
									return f.fn.qtip.log.error
											.call(
													s,
													2,
													f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,
													"updateWidth")
								} else {
									if (w && typeof w !== "number") {
										return f.fn.qtip.log.error
												.call(
														s,
														2,
														"newWidth must be of type number",
														"updateWidth")
									}
								}
								x = s.elements.contentWrapper.siblings().add(
										s.elements.tip).add(s.elements.button);
								if (!w) {
									if (typeof s.options.style.width.value == "number") {
										w = s.options.style.width.value
									} else {
										s.elements.tooltip.css( {
											width :"auto"
										});
										x.hide();
										if (f.browser.msie) {
											s.elements.wrapper.add(
													s.elements.contentWrapper
															.children()).css( {
												zoom :"normal"
											})
										}
										w = s.getDimensions().width + 1;
										if (!s.options.style.width.value) {
											if (w > s.options.style.width.max) {
												w = s.options.style.width.max
											}
											if (w < s.options.style.width.min) {
												w = s.options.style.width.min
											}
										}
									}
								}
								if (w % 2 !== 0) {
									w -= 1
								}
								s.elements.tooltip.width(w);
								x.show();
								if (s.options.style.border.radius) {
									s.elements.tooltip
											.find(".qtip-betweenCorners")
											.each(
													function(y) {
														f(this)
																.width(
																		w
																				- (s.options.style.border.radius * 2))
													})
								}
								if (f.browser.msie) {
									s.elements.wrapper.add(
											s.elements.contentWrapper
													.children()).css( {
										zoom :"1"
									});
									s.elements.wrapper.width(w);
									if (s.elements.bgiframe) {
										s.elements.bgiframe.width(w).height(
												s.getDimensions.height)
									}
								}
								return f.fn.qtip.log.error
										.call(
												s,
												1,
												f.fn.qtip.constants.EVENT_WIDTH_UPDATED,
												"updateWidth")
							},
							updateStyle : function(w) {
								var z, A, x, y, B;
								if (!s.status.rendered) {
									return f.fn.qtip.log.error
											.call(
													s,
													2,
													f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,
													"updateStyle")
								} else {
									if (typeof w !== "string"
											|| !f.fn.qtip.styles[w]) {
										return f.fn.qtip.log.error
												.call(
														s,
														2,
														f.fn.qtip.constants.STYLE_NOT_DEFINED,
														"updateStyle")
									}
								}
								s.options.style = a.call(s,
										f.fn.qtip.styles[w],
										s.options.user.style);
								s.elements.content.css(q(s.options.style));
								if (s.options.content.title.text !== false) {
									s.elements.title.css(q(
											s.options.style.title, true))
								}
								s.elements.contentWrapper.css( {
									borderColor :s.options.style.border.color
								});
								if (s.options.style.tip.corner !== false) {
									if (f("<canvas>").get(0).getContext) {
										z = s.elements.tooltip
												.find(".qtip-tip canvas:first");
										x = z.get(0).getContext("2d");
										x.clearRect(0, 0, 300, 300);
										y = z.parent("div[rel]:first").attr(
												"rel");
										B = b(y,
												s.options.style.tip.size.width,
												s.options.style.tip.size.height);
										h
												.call(
														s,
														z,
														B,
														s.options.style.tip.color
																|| s.options.style.border.color)
									} else {
										if (f.browser.msie) {
											z = s.elements.tooltip
													.find('.qtip-tip [nodeName="shape"]');
											z
													.attr(
															"fillcolor",
															s.options.style.tip.color
																	|| s.options.style.border.color)
										}
									}
								}
								if (s.options.style.border.radius > 0) {
									s.elements.tooltip
											.find(".qtip-betweenCorners")
											.css(
													{
														backgroundColor :s.options.style.border.color
													});
									if (f("<canvas>").get(0).getContext) {
										A = g(s.options.style.border.radius);
										s.elements.tooltip
												.find(".qtip-wrapper canvas")
												.each(
														function() {
															x = f(this)
																	.get(0)
																	.getContext(
																			"2d");
															x.clearRect(0, 0,
																	300, 300);
															y = f(this)
																	.parent(
																			"div[rel]:first")
																	.attr("rel");
															r
																	.call(
																			s,
																			f(this),
																			A[y],
																			s.options.style.border.radius,
																			s.options.style.border.color)
														})
									} else {
										if (f.browser.msie) {
											s.elements.tooltip
													.find(
															'.qtip-wrapper [nodeName="arc"]')
													.each(
															function() {
																f(this)
																		.attr(
																				"fillcolor",
																				s.options.style.border.color)
															})
										}
									}
								}
								return f.fn.qtip.log.error
										.call(
												s,
												1,
												f.fn.qtip.constants.EVENT_STYLE_UPDATED,
												"updateStyle")
							},
							updateContent : function(A, y) {
								var z, x, w;
								if (!s.status.rendered) {
									return f.fn.qtip.log.error
											.call(
													s,
													2,
													f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,
													"updateContent")
								} else {
									if (!A) {
										return f.fn.qtip.log.error
												.call(
														s,
														2,
														f.fn.qtip.constants.NO_CONTENT_PROVIDED,
														"updateContent")
									}
								}
								z = s.beforeContentUpdate.call(s, A);
								if (typeof z == "string") {
									A = z
								} else {
									if (z === false) {
										return
									}
								}
								if (f.browser.msie) {
									s.elements.contentWrapper.children().css( {
										zoom :"normal"
									})
								}
								if (A.jquery && A.length > 0) {
									A.clone(true).appendTo(s.elements.content)
											.show()
								} else {
									s.elements.content.html(A)
								}
								x = s.elements.content
										.find("img[complete=false]");
								if (x.length > 0) {
									w = 0;
									x.each( function(C) {
										f(
												'<img src="' + f(this).attr(
														"src") + '" />').load(
												function() {
													if (++w == x.length) {
														B()
													}
												})
									})
								} else {
									B()
								}
								function B() {
									s.updateWidth();
									if (y !== false) {
										if (s.options.position.type !== "static") {
											s.updatePosition(s.elements.tooltip
													.is(":visible"), true)
										}
										if (s.options.style.tip.corner !== false) {
											n.call(s)
										}
									}
								}
								s.onContentUpdate.call(s);
								return f.fn.qtip.log.error
										.call(
												s,
												1,
												f.fn.qtip.constants.EVENT_CONTENT_UPDATED,
												"loadContent")
							},
							loadContent : function(w, z, A) {
								var y;
								if (!s.status.rendered) {
									return f.fn.qtip.log.error
											.call(
													s,
													2,
													f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,
													"loadContent")
								}
								y = s.beforeContentLoad.call(s);
								if (y === false) {
									return s
								}
								if (A == "post") {
									f.post(w, z, x)
								} else {
									f.get(w, z, x)
								}
								function x(B) {
									s.onContentLoad.call(s);
									f.fn.qtip.log.error
											.call(
													s,
													1,
													f.fn.qtip.constants.EVENT_CONTENT_LOADED,
													"loadContent");
									s.updateContent(B)
								}
								return s
							},
							updateTitle : function(w) {
								if (!s.status.rendered) {
									return f.fn.qtip.log.error
											.call(
													s,
													2,
													f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,
													"updateTitle")
								} else {
									if (!w) {
										return f.fn.qtip.log.error
												.call(
														s,
														2,
														f.fn.qtip.constants.NO_CONTENT_PROVIDED,
														"updateTitle")
									}
								}
								returned = s.beforeTitleUpdate.call(s);
								if (returned === false) {
									return s
								}
								if (s.elements.button) {
									s.elements.button = s.elements.button
											.clone(true)
								}
								s.elements.title.html(w);
								if (s.elements.button) {
									s.elements.title.prepend(s.elements.button)
								}
								s.onTitleUpdate.call(s);
								return f.fn.qtip.log.error
										.call(
												s,
												1,
												f.fn.qtip.constants.EVENT_TITLE_UPDATED,
												"updateTitle")
							},
							focus : function(A) {
								var y, x, w, z;
								if (!s.status.rendered) {
									return f.fn.qtip.log.error
											.call(
													s,
													2,
													f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,
													"focus")
								} else {
									if (s.options.position.type == "static") {
										return f.fn.qtip.log.error
												.call(
														s,
														1,
														f.fn.qtip.constants.CANNOT_FOCUS_STATIC,
														"focus")
									}
								}
								y = parseInt(s.elements.tooltip.css("z-index"));
								x = 6000 + f("div.qtip[qtip]").length - 1;
								if (!s.status.focused && y !== x) {
									z = s.beforeFocus.call(s, A);
									if (z === false) {
										return s
									}
									f("div.qtip[qtip]")
											.not(s.elements.tooltip)
											.each(
													function() {
														if (f(this).qtip("api").status.rendered === true) {
															w = parseInt(f(this)
																	.css(
																			"z-index"));
															if (typeof w == "number"
																	&& w > -1) {
																f(this)
																		.css(
																				{
																					zIndex :parseInt(f(
																							this)
																							.css(
																									"z-index")) - 1
																				})
															}
															f(this).qtip("api").status.focused = false
														}
													});
									s.elements.tooltip.css( {
										zIndex :x
									});
									s.status.focused = true;
									s.onFocus.call(s, A);
									f.fn.qtip.log.error.call(s, 1,
											f.fn.qtip.constants.EVENT_FOCUSED,
											"focus")
								}
								return s
							},
							disable : function(w) {
								if (!s.status.rendered) {
									return f.fn.qtip.log.error
											.call(
													s,
													2,
													f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,
													"disable")
								}
								if (w) {
									if (!s.status.disabled) {
										s.status.disabled = true;
										f.fn.qtip.log.error
												.call(
														s,
														1,
														f.fn.qtip.constants.EVENT_DISABLED,
														"disable")
									} else {
										f.fn.qtip.log.error
												.call(
														s,
														1,
														f.fn.qtip.constants.TOOLTIP_ALREADY_DISABLED,
														"disable")
									}
								} else {
									if (s.status.disabled) {
										s.status.disabled = false;
										f.fn.qtip.log.error
												.call(
														s,
														1,
														f.fn.qtip.constants.EVENT_ENABLED,
														"disable")
									} else {
										f.fn.qtip.log.error
												.call(
														s,
														1,
														f.fn.qtip.constants.TOOLTIP_ALREADY_ENABLED,
														"disable")
									}
								}
								return s
							},
							destroy : function() {
								var w, x, y;
								x = s.beforeDestroy.call(s);
								if (x === false) {
									return s
								}
								if (s.status.rendered) {
									s.options.show.when.target.unbind(
											"mousemove.qtip", s.updatePosition);
									s.options.show.when.target.unbind(
											"mouseout.qtip", s.hide);
									s.options.show.when.target
											.unbind(s.options.show.when.event
													+ ".qtip");
									s.options.hide.when.target
											.unbind(s.options.hide.when.event
													+ ".qtip");
									s.elements.tooltip
											.unbind(s.options.hide.when.event
													+ ".qtip");
									s.elements.tooltip.unbind("mouseover.qtip",
											s.focus);
									s.elements.tooltip.remove()
								} else {
									s.options.show.when.target
											.unbind(s.options.show.when.event
													+ ".qtip-create")
								}
								if (typeof s.elements.target.data("qtip") == "object") {
									y = s.elements.target.data("qtip").interfaces;
									if (typeof y == "object" && y.length > 0) {
										for (w = 0; w < y.length - 1; w++) {
											if (y[w].id == s.id) {
												y.splice(w, 1)
											}
										}
									}
								}
								delete f.fn.qtip.interfaces[s.id];
								if (typeof y == "object" && y.length > 0) {
									s.elements.target.data("qtip").current = y.length - 1
								} else {
									s.elements.target.removeData("qtip")
								}
								s.onDestroy.call(s);
								f.fn.qtip.log.error.call(s, 1,
										f.fn.qtip.constants.EVENT_DESTROYED,
										"destroy");
								return s.elements.target
							},
							getPosition : function() {
								var w, x;
								if (!s.status.rendered) {
									return f.fn.qtip.log.error
											.call(
													s,
													2,
													f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,
													"getPosition")
								}
								w = (s.elements.tooltip.css("display") !== "none") ? false
										: true;
								if (w) {
									s.elements.tooltip.css( {
										visiblity :"hidden"
									}).show()
								}
								x = s.elements.tooltip.offset();
								if (w) {
									s.elements.tooltip.css( {
										visiblity :"visible"
									}).hide()
								}
								return x
							},
							getDimensions : function() {
								var w, x;
								if (!s.status.rendered) {
									return f.fn.qtip.log.error
											.call(
													s,
													2,
													f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,
													"getDimensions")
								}
								w = (!s.elements.tooltip.is(":visible")) ? true
										: false;
								if (w) {
									s.elements.tooltip.css( {
										visiblity :"hidden"
									}).show()
								}
								x = {
									height :s.elements.tooltip.outerHeight(),
									width :s.elements.tooltip.outerWidth()
								};
								if (w) {
									s.elements.tooltip.css( {
										visiblity :"visible"
									}).hide()
								}
								return x
							}
						})
	}
	function p() {
		var s, w, u, t, v, y, x;
		s = this;
		s.beforeRender.call(s);
		s.status.rendered = true;
		s.elements.tooltip = '<div qtip="'
				+ s.id
				+ '" class="qtip '
				+ (s.options.style.classes.tooltip || s.options.style)
				+ '"style="display:none; -moz-border-radius:0; -webkit-border-radius:0; border-radius:0;position:'
				+ s.options.position.type
				+ ';">  <div class="qtip-wrapper" style="position:relative; right:50px; overflow:hidden; text-align:left;">    <div class="qtip-contentWrapper" style="overflow:hidden;">       <div class="qtip-content '
				+ s.options.style.classes.content
				+ '"></div></div></div></div>';
		s.elements.tooltip = f(s.elements.tooltip);
		s.elements.tooltip.appendTo(s.options.position.container);
		s.elements.tooltip.data("qtip", {
			current :0,
			interfaces : [ s ]
		});
		s.elements.wrapper = s.elements.tooltip.children("div:first");
		s.elements.contentWrapper = s.elements.wrapper.children("div:first")
				.css( {
					background :s.options.style.background
				});
		s.elements.content = s.elements.contentWrapper.children("div:first")
				.css(q(s.options.style));
		if (f.browser.msie) {
			s.elements.wrapper.add(s.elements.content).css( {
				zoom :1
			})
		}
		if (s.options.hide.when.event == "unfocus") {
			s.elements.tooltip.attr("unfocus", true)
		}
		if (typeof s.options.style.width.value == "number") {
			s.updateWidth()
		}
		if (f("<canvas>").get(0).getContext || f.browser.msie) {
			if (s.options.style.border.radius > 0) {
				m.call(s)
			} else {
				s.elements.contentWrapper.css( {
					border :s.options.style.border.width + "px solid "
							+ s.options.style.border.color
				})
			}
			if (s.options.style.tip.corner !== false) {
				e.call(s)
			}
		} else {
			s.elements.contentWrapper.css( {
				border :s.options.style.border.width + "px solid "
						+ s.options.style.border.color
			});
			s.options.style.border.radius = 0;
			s.options.style.tip.corner = false;
			f.fn.qtip.log.error.call(s, 2,
					f.fn.qtip.constants.CANVAS_VML_NOT_SUPPORTED, "render")
		}
		if ((typeof s.options.content.text == "string" && s.options.content.text.length > 0)
				|| (s.options.content.text.jquery && s.options.content.text.length > 0)) {
			u = s.options.content.text
		} else {
			if (typeof s.elements.target.attr("title") == "string"
					&& s.elements.target.attr("title").length > 0) {
				u = s.elements.target.attr("title").replace("\\n", "<br />");
				s.elements.target.attr("title", "")
			} else {
				if (typeof s.elements.target.attr("alt") == "string"
						&& s.elements.target.attr("alt").length > 0) {
					u = s.elements.target.attr("alt").replace("\\n", "<br />");
					s.elements.target.attr("alt", "")
				} else {
					u = " ";
					f.fn.qtip.log.error.call(s, 1,
							f.fn.qtip.constants.NO_VALID_CONTENT, "render")
				}
			}
		}
		if (s.options.content.title.text !== false) {
			j.call(s)
		}
		s.updateContent(u);
		l.call(s);
		if (s.options.show.ready === true) {
			s.show()
		}
		if (s.options.content.url !== false) {
			t = s.options.content.url;
			v = s.options.content.data;
			y = s.options.content.method || "get";
			s.loadContent(t, v, y)
		}
		s.onRender.call(s);
		f.fn.qtip.log.error.call(s, 1, f.fn.qtip.constants.EVENT_RENDERED,
				"render")
	}
	function m() {
		var F, z, t, B, x, E, u, G, D, y, w, C, A, s, v;
		F = this;
		F.elements.wrapper.find(".qtip-borderBottom, .qtip-borderTop").remove();
		t = F.options.style.border.width;
		B = F.options.style.border.radius;
		x = F.options.style.border.color || F.options.style.tip.color;
		E = g(B);
		u = {};
		for (z in E) {
			u[z] = '<div rel="' + z + '" style="'
					+ ((z.search(/Left/) !== -1) ? "left" : "right")
					+ ":0; position:absolute; height:" + B + "px; width:" + B
					+ 'px; overflow:hidden; line-height:0.1px; font-size:1px">';
			if (f("<canvas>").get(0).getContext) {
				u[z] += '<canvas height="' + B + '" width="' + B
						+ '" style="vertical-align: top"></canvas>'
			} else {
				if (f.browser.msie) {
					G = B * 2 + 3;
					u[z] += '<v:arc stroked="false" fillcolor="'
							+ x
							+ '" startangle="'
							+ E[z][0]
							+ '" endangle="'
							+ E[z][1]
							+ '" style="width:'
							+ G
							+ "px; height:"
							+ G
							+ "px; margin-top:"
							+ ((z.search(/bottom/) !== -1) ? -2 : -1)
							+ "px; margin-left:"
							+ ((z.search(/Right/) !== -1) ? E[z][2] - 3.5 : -1)
							+ 'px; vertical-align:top; display:inline-block; behavior:url(#default#VML)"></v:arc>'
				}
			}
			u[z] += "</div>"
		}
		D = F.getDimensions().width - (Math.max(t, B) * 2);
		y = '<div class="qtip-betweenCorners" style="height:' + B
				+ "px; width:" + D + "px; overflow:hidden; background-color:"
				+ x + '; line-height:0.1px; font-size:1px;">';
		w = '<div class="qtip-borderTop" dir="ltr" style="height:' + B
				+ "px; margin-left:" + B
				+ 'px; line-height:0.1px; font-size:1px; padding:0;">'
				+ u.topLeft + u.topRight + y;
		F.elements.wrapper.prepend(w);
		C = '<div class="qtip-borderBottom" dir="ltr" style="height:' + B
				+ "px; margin-left:" + B
				+ 'px; line-height:0.1px; font-size:1px; padding:0;">'
				+ u.bottomLeft + u.bottomRight + y;
		F.elements.wrapper.append(C);
		if (f("<canvas>").get(0).getContext) {
			F.elements.wrapper.find("canvas").each( function() {
				A = E[f(this).parent("[rel]:first").attr("rel")];
				r.call(F, f(this), A, B, x)
			})
		} else {
			if (f.browser.msie) {
				F.elements.tooltip
						.append('<v:image style="behavior:url(#default#VML);"></v:image>')
			}
		}
		s = Math.max(B, (B + (t - B)));
		v = Math.max(t - B, 0);
		F.elements.contentWrapper.css( {
			border :"0px solid " + x,
			borderWidth :v + "px " + s + "px"
		})
	}
	function r(u, w, s, t) {
		var v = u.get(0).getContext("2d");
		v.fillStyle = t;
		v.beginPath();
		v.arc(w[0], w[1], s, 0, Math.PI * 2, false);
		v.fill()
	}
	function e(v) {
		var t, s, x, u, w;
		t = this;
		if (t.elements.tip !== null) {
			t.elements.tip.remove()
		}
		s = t.options.style.tip.color || t.options.style.border.color;
		if (t.options.style.tip.corner === false) {
			return
		} else {
			if (!v) {
				v = t.options.style.tip.corner
			}
		}
		x = b(v, t.options.style.tip.size.width,
				t.options.style.tip.size.height);
		t.elements.tip = '<div class="' + t.options.style.classes.tip
				+ '" dir="ltr" rel="' + v
				+ '" style="position:absolute;height:'
				+ t.options.style.tip.size.height + "px; width:"
				+ t.options.style.tip.size.width
				+ 'px; margin:0 auto; line-height:0.1px; font-size:1px;">';
		if (f("<canvas>").get(0).getContext) {
			t.elements.tip += '<canvas height="'
					+ t.options.style.tip.size.height + '" width="'
					+ t.options.style.tip.size.width + '"></canvas>'
		} else {
			if (f.browser.msie) {
				u = t.options.style.tip.size.width + ","
						+ t.options.style.tip.size.height;
				w = "m" + x[0][0] + "," + x[0][1];
				w += " l" + x[1][0] + "," + x[1][1];
				w += " " + x[2][0] + "," + x[2][1];
				w += " xe";
				t.elements.tip += '<v:shape fillcolor="'
						+ s
						+ '" stroked="false" filled="true" path="'
						+ w
						+ '" coordsize="'
						+ u
						+ '" style="width:'
						+ t.options.style.tip.size.width
						+ "px; height:"
						+ t.options.style.tip.size.height
						+ "px; line-height:0.1px; display:inline-block; behavior:url(#default#VML); vertical-align:"
						+ ((v.search(/top/) !== -1) ? "bottom" : "top")
						+ '"></v:shape>';
				t.elements.tip += '<v:image style="behavior:url(#default#VML);"></v:image>';
				t.elements.contentWrapper.css("position", "relative")
			}
		}
		t.elements.tooltip.prepend(t.elements.tip + "</div>");
		t.elements.tip = t.elements.tooltip.find(
				"." + t.options.style.classes.tip).eq(0);
		if (f("<canvas>").get(0).getContext) {
			h.call(t, t.elements.tip.find("canvas:first"), x, s)
		}
		if (v.search(/top/) !== -1 && f.browser.msie
				&& parseInt(f.browser.version.charAt(0)) === 6) {
			t.elements.tip.css( {
				marginTop :-4
			})
		}
		n.call(t, v)
	}
	function h(t, v, s) {
		var u = t.get(0).getContext("2d");
		u.fillStyle = s;
		u.beginPath();
		u.moveTo(v[0][0], v[0][1]);
		u.lineTo(v[1][0], v[1][1]);
		u.lineTo(v[2][0], v[2][1]);
		u.fill()
	}
	function n(u) {
		var t, w, s, x, v;
		t = this;
		if (t.options.style.tip.corner === false || !t.elements.tip) {
			return
		}
		if (!u) {
			u = t.elements.tip.attr("rel")
		}
		w = positionAdjust = (f.browser.msie) ? 1 : 0;
		t.elements.tip.css(u.match(/left|right|top|bottom/)[0], 0);
		if (u.search(/top|bottom/) !== -1) {
			if (f.browser.msie) {
				if (parseInt(f.browser.version.charAt(0)) === 6) {
					positionAdjust = (u.search(/top/) !== -1) ? -3 : 1
				} else {
					positionAdjust = (u.search(/top/) !== -1) ? 1 : 2
				}
			}
			if (u.search(/Middle/) !== -1) {
				t.elements.tip.css( {
					left :"50%",
					marginLeft :-(t.options.style.tip.size.width / 2)
				})
			} else {
				if (u.search(/Left/) !== -1) {
					t.elements.tip.css( {
						left :t.options.style.border.radius - w
					})
				} else {
					if (u.search(/Right/) !== -1) {
						t.elements.tip.css( {
							right :t.options.style.border.radius + w
						})
					}
				}
			}
			if (u.search(/top/) !== -1) {
				t.elements.tip.css( {
					top :-positionAdjust
				})
			} else {
				t.elements.tip.css( {
					bottom :positionAdjust
				})
			}
		} else {
			if (u.search(/left|right/) !== -1) {
				if (f.browser.msie) {
					positionAdjust = (parseInt(f.browser.version.charAt(0)) === 6) ? 1
							: ((u.search(/left/) !== -1) ? 1 : 2)
				}
				if (u.search(/Middle/) !== -1) {
					t.elements.tip.css( {
						top :"50%",
						marginTop :-(t.options.style.tip.size.height / 2)
					})
				} else {
					if (u.search(/Top/) !== -1) {
						t.elements.tip.css( {
							top :t.options.style.border.radius - w
						})
					} else {
						if (u.search(/Bottom/) !== -1) {
							t.elements.tip.css( {
								bottom :t.options.style.border.radius + w
							})
						}
					}
				}
				if (u.search(/left/) !== -1) {
					t.elements.tip.css( {
						left :-positionAdjust
					})
				} else {
					t.elements.tip.css( {
						right :positionAdjust
					})
				}
			}
		}
		s = "padding-" + u.match(/left|right|top|bottom/)[0];
		x = t.options.style.tip.size[(s.search(/left|right/) !== -1) ? "width"
				: "height"];
		t.elements.tooltip.css("padding", 0);
		t.elements.tooltip.css(s, x);
		if (f.browser.msie && parseInt(f.browser.version.charAt(0)) == 6) {
			v = parseInt(t.elements.tip.css("margin-top")) || 0;
			v += parseInt(t.elements.content.css("margin-top")) || 0;
			t.elements.tip.css( {
				marginTop :v
			})
		}
	}
	function j() {
		var s = this;
		if (s.elements.title !== null) {
			s.elements.title.remove()
		}
		s.elements.title = f(
				'<div class="' + s.options.style.classes.title + '">').css(
				q(s.options.style.title, true)).css( {
			zoom :(f.browser.msie) ? 1 : 0
		}).prependTo(s.elements.contentWrapper);
		if (s.options.content.title.text) {
			s.updateTitle.call(s, s.options.content.title.text)
		}
		if (s.options.content.title.button !== false
				&& typeof s.options.content.title.button == "string") {
			s.elements.button = f(
					'<a class="' + s.options.style.classes.button + '" style="float:right; position: relative"></a>')
					.css(q(s.options.style.button, true)).html(
							s.options.content.title.button).prependTo(
							s.elements.title).click( function(t) {
						if (!s.status.disabled) {
							s.hide(t)
						}
					})
		}
	}
	function l() {
		var t, v, u, s;
		t = this;
		v = t.options.show.when.target;
		u = t.options.hide.when.target;
		if (t.options.hide.fixed) {
			u = u.add(t.elements.tooltip)
		}
		if (t.options.hide.when.event == "inactive") {
			s = [ "click", "dblclick", "mousedown", "mouseup", "mousemove",
					"mouseout", "mouseenter", "mouseleave", "mouseover" ];
			function y(z) {
				if (t.status.disabled === true) {
					return
				}
				clearTimeout(t.timers.inactive);
				t.timers.inactive = setTimeout( function() {
					f(s).each( function() {
						u.unbind(this + ".qtip-inactive");
						t.elements.content.unbind(this + ".qtip-inactive")
					});
					t.hide(z)
				}, t.options.hide.delay)
			}
		} else {
			if (t.options.hide.fixed === true) {
				t.elements.tooltip.bind("mouseover.qtip", function() {
					if (t.status.disabled === true) {
						return
					}
					clearTimeout(t.timers.hide)
				})
			}
		}
		function x(z) {
			if (t.status.disabled === true) {
				return
			}
			if (t.options.hide.when.event == "inactive") {
				f(s).each( function() {
					u.bind(this + ".qtip-inactive", y);
					t.elements.content.bind(this + ".qtip-inactive", y)
				});
				y()
			}
			clearTimeout(t.timers.show);
			clearTimeout(t.timers.hide);
			t.timers.show = setTimeout( function() {
				t.show(z)
			}, t.options.show.delay)
		}
		function w(z) {
			if (t.status.disabled === true) {
				return
			}
			if (t.options.hide.fixed === true
					&& t.options.hide.when.event.search(/mouse(out|leave)/i) !== -1
					&& f(z.relatedTarget).parents("div.qtip[qtip]").length > 0) {
				z.stopPropagation();
				z.preventDefault();
				clearTimeout(t.timers.hide);
				return false
			}
			clearTimeout(t.timers.show);
			clearTimeout(t.timers.hide);
			t.elements.tooltip.stop(true, true);
			t.timers.hide = setTimeout( function() {
				t.hide(z)
			}, t.options.hide.delay)
		}
		if ((t.options.show.when.target.add(t.options.hide.when.target).length === 1
				&& t.options.show.when.event == t.options.hide.when.event && t.options.hide.when.event !== "inactive")
				|| t.options.hide.when.event == "unfocus") {
			t.cache.toggle = 0;
			v.bind(t.options.show.when.event + ".qtip", function(z) {
				if (t.cache.toggle == 0) {
					x(z)
				} else {
					w(z)
				}
			})
		} else {
			v.bind(t.options.show.when.event + ".qtip", x);
			if (t.options.hide.when.event !== "inactive") {
				u.bind(t.options.hide.when.event + ".qtip", w)
			}
		}
		if (t.options.position.type.search(/(fixed|absolute)/) !== -1) {
			t.elements.tooltip.bind("mouseover.qtip", t.focus)
		}
		if (t.options.position.target === "mouse"
				&& t.options.position.type !== "static") {
			v.bind("mousemove.qtip", function(z) {
				t.cache.mouse = {
					x :z.pageX,
					y :z.pageY
				};
				if (t.status.disabled === false
						&& t.options.position.adjust.mouse === true
						&& t.options.position.type !== "static"
						&& t.elements.tooltip.css("display") !== "none") {
					t.updatePosition(z)
				}
			})
		}
	}
	function o(u, v, A) {
		var z, s, x, y, t, w;
		z = this;
		if (A.corner == "center") {
			return v.position
		}
		s = f.extend( {}, u);
		y = {
			x :false,
			y :false
		};
		t = {
			left :(s.left < f.fn.qtip.cache.screen.scroll.left),
			right :(s.left + A.dimensions.width + 2 >= f.fn.qtip.cache.screen.width
					+ f.fn.qtip.cache.screen.scroll.left),
			top :(s.top < f.fn.qtip.cache.screen.scroll.top),
			bottom :(s.top + A.dimensions.height + 2 >= f.fn.qtip.cache.screen.height
					+ f.fn.qtip.cache.screen.scroll.top)
		};
		x = {
			left :(t.left && (A.corner.search(/right/i) != -1 || (A.corner
					.search(/right/i) == -1 && !t.right))),
			right :(t.right && (A.corner.search(/left/i) != -1 || (A.corner
					.search(/left/i) == -1 && !t.left))),
			top :(t.top && A.corner.search(/top/i) == -1),
			bottom :(t.bottom && A.corner.search(/bottom/i) == -1)
		};
		if (x.left) {
			if (z.options.position.target !== "mouse") {
				s.left = v.position.left + v.dimensions.width
			} else {
				s.left = z.cache.mouse.x
			}
			y.x = "Left"
		} else {
			if (x.right) {
				if (z.options.position.target !== "mouse") {
					s.left = v.position.left - A.dimensions.width
				} else {
					s.left = z.cache.mouse.x - A.dimensions.width
				}
				y.x = "Right"
			}
		}
		if (x.top) {
			if (z.options.position.target !== "mouse") {
				s.top = v.position.top + v.dimensions.height
			} else {
				s.top = z.cache.mouse.y
			}
			y.y = "top"
		} else {
			if (x.bottom) {
				if (z.options.position.target !== "mouse") {
					s.top = v.position.top - A.dimensions.height
				} else {
					s.top = z.cache.mouse.y - A.dimensions.height
				}
				y.y = "bottom"
			}
		}
		if (s.left < 0) {
			s.left = u.left;
			y.x = false
		}
		if (s.top < 0) {
			s.top = u.top;
			y.y = false
		}
		if (z.options.style.tip.corner !== false) {
			s.corner = new String(A.corner);
			if (y.x !== false) {
				s.corner = s.corner.replace(/Left|Right|Middle/, y.x)
			}
			if (y.y !== false) {
				s.corner = s.corner.replace(/top|bottom/, y.y)
			}
			if (s.corner !== z.elements.tip.attr("rel")) {
				e.call(z, s.corner)
			}
		}
		return s
	}
	function q(u, t) {
		var v, s;
		v = f.extend(true, {}, u);
		for (s in v) {
			if (t === true && s.search(/(tip|classes)/i) !== -1) {
				delete v[s]
			} else {
				if (!t
						&& s.search(/(width|border|tip|title|classes|user)/i) !== -1) {
					delete v[s]
				}
			}
		}
		return v
	}
	function c(s) {
		if (typeof s.tip !== "object") {
			s.tip = {
				corner :s.tip
			}
		}
		if (typeof s.tip.size !== "object") {
			s.tip.size = {
				width :s.tip.size,
				height :s.tip.size
			}
		}
		if (typeof s.border !== "object") {
			s.border = {
				width :s.border
			}
		}
		if (typeof s.width !== "object") {
			s.width = {
				value :s.width
			}
		}
		if (typeof s.width.max == "string") {
			s.width.max = parseInt(s.width.max.replace(/([0-9]+)/i, "$1"))
		}
		if (typeof s.width.min == "string") {
			s.width.min = parseInt(s.width.min.replace(/([0-9]+)/i, "$1"))
		}
		if (typeof s.tip.size.x == "number") {
			s.tip.size.width = s.tip.size.x;
			delete s.tip.size.x
		}
		if (typeof s.tip.size.y == "number") {
			s.tip.size.height = s.tip.size.y;
			delete s.tip.size.y
		}
		return s
	}
	function a() {
		var s, t, u, x, v, w;
		s = this;
		u = [ true, {} ];
		for (t = 0; t < arguments.length; t++) {
			u.push(arguments[t])
		}
		x = [ f.extend.apply(f, u) ];
		while (typeof x[0].name == "string") {
			x.unshift(c(f.fn.qtip.styles[x[0].name]))
		}
		x.unshift(true, {
			classes : {
				tooltip :"qtip-" + (arguments[0].name || "defaults")
			}
		}, f.fn.qtip.styles.defaults);
		v = f.extend.apply(f, x);
		w = (f.browser.msie) ? 1 : 0;
		v.tip.size.width += w;
		v.tip.size.height += w;
		if (v.tip.size.width % 2 > 0) {
			v.tip.size.width += 1
		}
		if (v.tip.size.height % 2 > 0) {
			v.tip.size.height += 1
		}
		if (v.tip.corner === true) {
			v.tip.corner = (s.options.position.corner.tooltip === "center") ? false
					: s.options.position.corner.tooltip
		}
		return v
	}
	function b(v, u, t) {
		var s = {
			bottomRight : [ [ 0, 0 ], [ u, t ], [ u, 0 ] ],
			bottomLeft : [ [ 0, 0 ], [ u, 0 ], [ 0, t ] ],
			topRight : [ [ 0, t ], [ u, 0 ], [ u, t ] ],
			topLeft : [ [ 0, 0 ], [ 0, t ], [ u, t ] ],
			topMiddle : [ [ 0, t ], [ u / 2, 0 ], [ u, t ] ],
			bottomMiddle : [ [ 0, 0 ], [ u, 0 ], [ u / 2, t ] ],
			rightMiddle : [ [ 0, 0 ], [ u, t / 2 ], [ 0, t ] ],
			leftMiddle : [ [ u, 0 ], [ u, t ], [ 0, t / 2 ] ]
		};
		s.leftTop = s.bottomRight;
		s.rightTop = s.bottomLeft;
		s.leftBottom = s.topRight;
		s.rightBottom = s.topLeft;
		return s[v]
	}
	function g(s) {
		var t;
		if (f("<canvas>").get(0).getContext) {
			t = {
				topLeft : [ s, s ],
				topRight : [ 0, s ],
				bottomLeft : [ s, 0 ],
				bottomRight : [ 0, 0 ]
			}
		} else {
			if (f.browser.msie) {
				t = {
					topLeft : [ -90, 90, 0 ],
					topRight : [ -90, 90, -s ],
					bottomLeft : [ 90, 270, 0 ],
					bottomRight : [ 90, 270, -s ]
				}
			}
		}
		return t
	}
	function k() {
		var s, t, u;
		s = this;
		u = s.getDimensions();
		t = '<iframe class="qtip-bgiframe" frameborder="0" tabindex="-1" src="javascript:false" style="display:block; position:absolute; z-index:-1; filter:alpha(opacity=\'0\'); border: 1px solid red; height:'
				+ u.height + "px; width:" + u.width + 'px" />';
		s.elements.bgiframe = s.elements.wrapper.prepend(t).children(
				".qtip-bgiframe:first")
	}
	f(document)
			.ready(
					function() {
						f.fn.qtip.cache = {
							screen : {
								scroll : {
									left :f(window).scrollLeft(),
									top :f(window).scrollTop()
								},
								width :f(window).width(),
								height :f(window).height()
							}
						};
						var s;
						f(window)
								.bind(
										"resize scroll",
										function(t) {
											clearTimeout(s);
											s = setTimeout(
													function() {
														if (t.type === "scroll") {
															f.fn.qtip.cache.screen.scroll = {
																left :f(window)
																		.scrollLeft(),
																top :f(window)
																		.scrollTop()
															}
														} else {
															f.fn.qtip.cache.screen.width = f(
																	window)
																	.width();
															f.fn.qtip.cache.screen.height = f(
																	window)
																	.height()
														}
														for (i = 0; i < f.fn.qtip.interfaces.length; i++) {
															var u = f.fn.qtip.interfaces[i];
															if (u.status.rendered === true
																	&& (u.options.position.type !== "static"
																			|| u.options.position.adjust.scroll
																			&& t.type === "scroll" || u.options.position.adjust.resize
																			&& t.type === "resize")) {
																u
																		.updatePosition(
																				t,
																				true)
															}
														}
													}, 100)
										});
						f(document)
								.bind(
										"mousedown.qtip",
										function(t) {
											if (f(t.target).parents("div.qtip").length === 0) {
												f(".qtip[unfocus]")
														.each(
																function() {
																	var u = f(
																			this)
																			.qtip(
																					"api");
																	if (f(this)
																			.is(
																					":visible")
																			&& !u.status.disabled
																			&& f(
																					t.target)
																					.add(
																							u.elements.target).length > 1) {
																		u
																				.hide(t)
																	}
																})
											}
										})
					});
	f.fn.qtip.interfaces = [];
	f.fn.qtip.log = {
		error : function() {
			return this
		}
	};
	f.fn.qtip.constants = {};
	f.fn.qtip.defaults = {
		content : {
			prerender :false,
			text :false,
			url :false,
			data :null,
			title : {
				text :false,
				button :false
			}
		},
		position : {
			target :false,
			corner : {
				target :"bottomRight",
				tooltip :"topLeft"
			},
			adjust : {
				x :0,
				y :0,
				mouse :true,
				screen :false,
				scroll :true,
				resize :true
			},
			type :"absolute",
			container :false
		},
		show : {
			when : {
				target :false,
				event :"mouseover"
			},
			effect : {
				type :"fade",
				length :100
			},
			delay :140,
			solo :false,
			ready :false
		},
		hide : {
			when : {
				target :false,
				event :"mouseout"
			},
			effect : {
				type :"fade",
				length :100
			},
			delay :0,
			fixed :false
		},
		api : {
			beforeRender : function() {
			},
			onRender : function() {
			},
			beforePositionUpdate : function() {
			},
			onPositionUpdate : function() {
			},
			beforeShow : function() {
			},
			onShow : function() {
			},
			beforeHide : function() {
			},
			onHide : function() {
			},
			beforeContentUpdate : function() {
			},
			onContentUpdate : function() {
			},
			beforeContentLoad : function() {
			},
			onContentLoad : function() {
			},
			beforeTitleUpdate : function() {
			},
			onTitleUpdate : function() {
			},
			beforeDestroy : function() {
			},
			onDestroy : function() {
			},
			beforeFocus : function() {
			},
			onFocus : function() {
			}
		}
	};
	f.fn.qtip.styles = {
		defaults : {
			background :"white",
			color :"#111",
			overflow :"hidden",
			textAlign :"left",
			width : {
				min :0,
				max :250
			},
			padding :"5px 9px",
			border : {
				width :1,
				radius :0,
				color :"#d3d3d3"
			},
			tip : {
				corner :false,
				color :false,
				size : {
					width :13,
					height :13
				},
				opacity :1
			},
			title : {
				background :"#e1e1e1",
				fontWeight :"bold",
				padding :"7px 12px"
			},
			button : {
				cursor :"pointer"
			},
			classes : {
				target :"",
				tip :"qtip-tip",
				title :"qtip-title",
				button :"qtip-button",
				content :"qtip-content",
				active :"qtip-active"
			}
		},
		cream : {
			border : {
				width :3,
				radius :0,
				color :"#F9E98E"
			},
			title : {
				background :"#F0DE7D",
				color :"#A27D35"
			},
			background :"#FBF7AA",
			color :"#A27D35",
			classes : {
				tooltip :"qtip-cream"
			}
		},
		light : {
			border : {
				width :3,
				radius :0,
				color :"#E2E2E2"
			},
			title : {
				background :"#f1f1f1",
				color :"#454545"
			},
			background :"white",
			color :"#454545",
			classes : {
				tooltip :"qtip-light"
			}
		},
		dark : {
			border : {
				width :3,
				radius :0,
				color :"#303030"
			},
			title : {
				background :"#404040",
				color :"#f3f3f3"
			},
			background :"#505050",
			color :"#f3f3f3",
			classes : {
				tooltip :"qtip-dark"
			}
		},
		red : {
			border : {
				width :3,
				radius :0,
				color :"#CE6F6F"
			},
			title : {
				background :"#f28279",
				color :"#9C2F2F"
			},
			background :"#F79992",
			color :"#9C2F2F",
			classes : {
				tooltip :"qtip-red"
			}
		},
		green : {
			border : {
				width :3,
				radius :0,
				color :"#A9DB66"
			},
			title : {
				background :"#b9db8c",
				color :"#58792E"
			},
			background :"#CDE6AC",
			color :"#58792E",
			classes : {
				tooltip :"qtip-green"
			}
		},
		blue : {
			border : {
				width :3,
				radius :0,
				color :"#ADD9ED"
			},
			title : {
				background :"#D0E9F5",
				color :"#5E99BD"
			},
			background :"#E5F6FE",
			color :"#4D9FBF",
			classes : {
				tooltip :"qtip-blue"
			}
		}
	}
})(jQuery);