var box_new_tooltip = {
	obj : null,
	aObj : [],
	permanent : null,
	_timeout_id : null,
	is_upgrade : false,
	show_preview : function(p, url, params) {
		if (!params)
			params = {};
		box_new_tooltip.hide();
		var oPos = Common_Global.get_object_position(p);
		var object = $(
				'<div class="box_thumbnail_tip"><div class="box_thumbnail_arr"></div></div>')
				.css( {
					'top' : oPos.y,
					'left' : oPos.x
				}).get(0);
		var left = params['left'] ? params['left'] : -17;
		var top = params['top'] ? params['top'] : -32;
		object = document.body.appendChild(object);
		left = left + oPos.x - object.offsetWidth;
		top = top + oPos.y;
		if (left < 1 || params['on_top']) {
			$(object).addClass('box_thumbnail_tip_down');
			left = oPos.x - 5;
			top -= 80;
		}
		if (params.force_frame) {
			$('<div class="thumbnail_forced_frame"></div>').appendTo(object);
		}
		$(object).css( {
			'top' : top,
			'left' : left,
			'background' : '#fff url(' + url + ') center center no-repeat',
			'display' : 'block',
			'visibility' : 'visible'
		});
		box_new_tooltip.obj = object;
		box_new_tooltip.permanent = false;
	},
	show : function(p, text, title, params) {
		params = params || {};
		if (box_new_tooltip.obj && !params.multiple_tips)
			box_new_tooltip.hide();
		var oPos = Common_Global.get_object_position(p);
		if (!params)
			params = {};
		if (oPos.x < 216 && params['right']) {
			params['right'] = 0;
			if (params['to_top_if_not_fit']) {
				params['top'] = params['to_top_if_not_fit'];
			}
		}
		if (params.id) {
			if (oPos.x > 216)
				params.right = true;
			var src = $('#upgrade_' + params.id);
			if (!src.length)
				return;
			var tmp = src.attr('title').split(' : ');
			title = tmp[0];
			text = src.html()
					+ '<br/><br/>'
					+ '<a href="'
					+ script_url
					+ 'ref/upsell_'
					+ params.id
					+ '" onmousedown="box_event.send(1);window.location=this.href">Upgrade now</a>';
			box_new_tooltip.params = params;
		}
		var j_element = $('<div class="box_new_tooltip2"><div class="head">'
				+ title + '</div><div class="text">' + text
				+ '</div><div class="arrow"><!----></div></div>');
		var arrow_classes;
		if (params['right']) {
			arrow_classes = 'img_right';
		} else if (params['left_arrow']) {
			arrow_classes = 'img_left';
		} else if (params['invert']) {
			arrow_classes = 'img img_up';
		} else {
			arrow_classes = 'img';
		}
		j_element.find('div.arrow').addClass(arrow_classes);
		object = document.body.appendChild(j_element.get(0));
		var left, top;
		if (params['right']) {
			left = params['left'] ? params['left'] : -17;
			top = params['top'] ? params['top'] : -32;
			left = left + oPos.x - object.offsetWidth;
			top = top + oPos.y - object.offsetHeight + object.offsetHeight;
		} else if (params['left_arrow']) {
			left = params['left'] ? params['left'] : 237;
			top = params['top'] ? params['top'] : -32;
			left = left + oPos.x - object.offsetWidth;
			top = top + oPos.y - object.offsetHeight + object.offsetHeight;
		} else if (params['invert']) {
			left = params['left'] ? params['left'] : -10;
			top = params['top'] ? params['top'] : +35;
			left = left + oPos.x;
			top = top + oPos.y - object.offsetHeight + object.offsetHeight;
		} else {
			left = params['left'] ? params['left'] : -10;
			top = params['top'] ? params['top'] : -13;
			left = left + oPos.x;
			top = top + oPos.y - object.offsetHeight;
		}
		if (parseInt(left) < 0)
			left = 0;
		j_element.css( {
			left : left,
			top : top,
			visibility : 'visible'
		});
		if (!params.multiple_tips) {
			if (params.show_delay) {
				j_element.hide();
				setTimeout(function() {
					j_element.show()
				}, params.show_delay);
			} else {
				j_element.show();
			}
			box_new_tooltip.obj = object;
		} else {
			j_element.hide().fadeIn("slow");
			box_new_tooltip.aObj.push(object);
		}
		if (params.id || params.keep) {
			j_element.hover(function() {
				if (!box_new_tooltip._timeout_id)
					return;
				clearTimeout(box_new_tooltip._timeout_id);
				box_new_tooltip._timeout_id = null;
				if (!params.keep && Canvas.get().current_folder) {
					var menu = Canvas.get().menu;
					if (!menu._timeout_id)
						return;
					clearTimeout(menu._timeout_id);
					menu._timeout_id = null;
				}
			}, function() {
				box_new_tooltip.delayed_hide();
				if (params.keep)
					return;
				box_event.set_action('');
				if (Canvas.get().current_folder) {
					var menu = Canvas.get().menu;
					menu._timeout_id = setTimeout(function() {
						menu.hide();
					}, 500);
				}
			});
			box_new_tooltip.is_upgrade = true;
		}
		box_new_tooltip.permanent = false;
		if (params.id && box_event) {
			setTimeout(
					function() {
						if (box_new_tooltip.obj != null
								&& box_new_tooltip.is_upgrade) {
							box_event
									.set_action('Upgrade ' + params.id + ' - Tooltip');
						}
					}, 1000);
		}
	},
	hide : function(params) {
		var params = params || {};
		if (box_new_tooltip.permanent && params.keep_permanent)
			return;
		if (box_new_tooltip.obj != null) {
			document.body.removeChild(box_new_tooltip.obj);
			box_new_tooltip.obj = null;
			if (box_new_tooltip.is_upgrade && typeof (box_event) != 'undefined') {
				var tooltip_action = box_event.action;
				setTimeout(function() {
					if (box_new_tooltip.obj == null) {
						var after_tooltip_action = '';
						if (tooltip_action != box_event.action) {
							after_tooltip_action = box_event.action;
							box_event.set_action(tooltip_action);
						}
						var event_category = box_event.category;
						box_event.send(0);
						box_event.set_category(event_category);
						box_event.set_action(after_tooltip_action);
					}
				}, 0);
			}
		}
		if (box_new_tooltip.aObj.length > 0) {
			for ( var i in box_new_tooltip.aObj) {
				$(box_new_tooltip.aObj[i]).fadeOut("normal");
			}
		}
		if (box_new_tooltip._timeout_id) {
			clearTimeout(box_new_tooltip._timeout_id);
			box_new_tooltip._timeout_id = null;
		}
		box_new_tooltip.is_upgrade = false;
	},
	delayed_hide : function() {
		if (box_new_tooltip._timeout_id)
			clearTimeout(box_new_tooltip._timeout_id);
		box_new_tooltip._timeout_id = setTimeout(function() {
			box_new_tooltip.hide();
		}, 500);
	},
	remove_obj : function(i) {
		document.body.removeChild(box_new_tooltip.aObj[i]);
		box_new_tooltip.aObj[i] = null;
		var f = 0;
		for ( var i in box_new_tooltip.aObj) {
			if (box_new_tooltip.aObj[i] != null) {
				f = 1;
				break;
			}
		}
		if (!f)
			box_new_tooltip.aObj = [];
	}
}
