		function url_encode(url) {
			return escape(url).replace(/\//g,'%2F').replace(/\+/g,'%2B');
			
		}
		function addToFavorites(url, title) {
			if (!title) title = $('#page_title > h1').text();
			if (window.sidebar) { // Mozilla Firefox Bookmark
				window.sidebar.addPanel(title, url,"");
			} 
			else if( window.external ) { // IE Favorite
				window.external.AddFavorite( url, title); 
			}
			else if(window.opera && window.print) { // Opera Hotlist
				return true; 
			}
		}
		function addToFacebook(url, title) {
			if (!title) title = $('#page_title > h1').text();
			location.href='http://www.facebook.com/sharer.php?u='+url_encode(url)+'&t='+url_encode(title);
		}
		function check_keys(e, keys) {
			e = e || window.event;
			var key = e.which || e.keyCode;
			return jQuery.inArray(e.keyCode, keys) >= 0;
		}
		
		function get_hightest_index() {
			var maxZ = Math.max.apply(null,$.map($('body > *'), function(e,n) {
				   if($(e).css('position')=='absolute')
						return parseInt($(e).css('z-index'))||1 ;
				   })
			);
			return maxZ;
		}
		
		function open_dialog(url, options, invoker) {
			$('body').append(object =
				$('<div class="dialogWindow">'+
						'<div class="menu"><a class="close" href="javascript: void(0)" onclick="close_dialog(this)"></a></div>'+
						'<div class="content"></div>'+
					'</div>'
				));
			
			$(object).css({
				opacity: 0, 
				top: $(invoker).offset().top,
				left: $(invoker).offset().left,
				zIndex: get_hightest_index(),
				display: "block"
			});
			
			if (url) {
				$('.content', object).load(url, options, function() {
					$(object).corner("10px").animate({
						top: $(invoker).offset().top + Math.min(0, $(document).scrollTop() + $(window).height() -  ($(invoker).offset().top +$(object).outerHeight() +5)),
						left: $(invoker).offset().left + Math.min(0, $(document).scrollLeft() + $(window).width() -  ($(invoker).offset().left +$(object).outerWidth() + 5)),
						opacity: 1
					},
					500, 
					'swing',
					function () {
						$(object).draggable({handle:'div.menu'});
					});
				});
			}
			else {
				$('.content', object).html(options.content);
				$(object).corner("10px").animate({
					top: $(document).scrollTop() + ($(window).height() - $(object).outerHeight())/2,
					left: $(document).scrollLeft() + ($(window).width() -  $(object).outerWidth()) /2,
					opacity: 1
					},
					500, 
					'swing',
					function () {
						$(object).draggable({handle:'div.menu'});
					});
			}
		}
		
		function close_dialog(invoker) {
			$(invoker).parents('.dialogWindow').fadeOut("slow", function() {
				$(this).remove();
			})
		}
		function check_required_fields(form) {
			var names = '';
			if ($("TR.required INPUT[value=], INPUT.required[value=]", form).size()<=0) return true;
			$("TR.required INPUT[value=], INPUT.required[value=]", form).each(function() { 
				if (!$(this).val()) names += (names ? ', ' : '') +$(this).parents('TR.required').find('TH').text();
			});
			if (names) {
				alert(LANG_TEXTS['err_empty_required_fields'] + ' [' +names+']');
				return false; 
			}
			return true;	
		}
		
		jQuery.fn.outerHTML = function() {
			return $('<div>').append( this.eq(0).clone() ).html();
		};


