function popup(path, width, height, feat, dontcenter) {
	if (!width)
	    width = 300;
	if (!height)
	    height = 300;
	    
 	if (navigator.appName.indexOf('Microsoft') >= 0 && navigator.appVersion.indexOf('Mac') >= 0) {
	 width -= 10; height -= 0;
	}
 	if (navigator.appName.indexOf('Navigator') >= 0 && navigator.appVersion.indexOf('Mac') >= 0 && navigator.appVersion.indexOf('4.') >= 0) {
	  width -= 2;
	}
	if (feat == "full")
		feat = "toolbar=1,location=1,status=1,menubar=1,resizable=1,scrollbars=1";
	else 
		feat = "width="+width+",height="+height+(feat ? ","+feat : "");
	if (!dontcenter) 
		feat = "left="+(screen.width/2-width/2)+",top="+(screen.height/2-height/2) + ","+feat;
  	var win = window.open(path, width+"x"+height, feat);
	win.focus();
}

function UnCryptMailto(s, shift) {
  var n=0;
  var r="";
  for(var i=0;i<s.length;i++) {
    n=s.charCodeAt(i);
    if (n>=8364) {n = 128;}
      r += String.fromCharCode(n-(shift));
  }
  return r;
}

function linkTo_UnCryptMailto(s, shift) {
  location.href=UnCryptMailto(s, shift);
}

/*
 * (c) 2008-9 Jason Frame
 * Auxiliary element code based on work by pjesi (http://wtf.hax.is/)
 */
(function ($) {

	/**
	 * Initialise input hints on all matched inputs.
	 *
	 * Usage examples:
	 *
	 * Add hints to all inputs with the 'title' attribute set:
	 *   $('input[title],textarea[title]').inputHint();
     *
     * Add hints to all matched elements, grabbing the hint text from each element's
     * adjacent <kbd/> tag:
     *   $('input').inputHint({using: '+ kbd'});
	 *
	 * Options keys:
	 *  using: jQuery selector locating element containing hint text, relative to
	 *         the input currently being considered.
	 *  hintAttr - tag attribute containing hint text. Default: 'title'
	 *  hintClass - CSS class to apply to inputs with active hints. Default: 'hint'
	 */
	$.fn.inputHint = function(options) {

		options = $.extend({hintClass: 'hint', hintAttr: 'title'}, options || {});

		function hintFor(element) {
			var h;
			if (options.using && (h = $(options.using, element)).length > 0) {
				return h.text();
			} else {
				return $(element).attr(options.hintAttr) || '';
			}
		}

		function showHint() {
			if ($(this).val() == '') {
				$(this).addClass(options.hintClass).val(hintFor(this));
			}
		}

		function removeHint() {
			if ($(this).hasClass(options.hintClass)) $(this).removeClass(options.hintClass).val('');
		}

		this.filter(function() { return !!hintFor(this); })
			.focus(removeHint).blur(showHint).blur();

        this.each(function() {
            var self = this;
            $(this).parents('form').submit(function() { removeHint.apply(self); });
        });

		return this.end(); // undo filter

	};

})(jQuery);
