/* BROWSER CHECK FUNCTIONS */

function Browser() {
  var ua, s, i;

  this.isIE    = false;  // Internet Explorer
  this.isNS    = false;  // Netscape
  this.isMac   = false;  // Macintosh
	this.isSafari = false;	// Safari
	this.isSafari10 = false;
  this.version = null;
	this.versionMinor = null;
	
  ua = navigator.userAgent;
 	
	s = "Safari";
	if ((i = ua.indexOf(s)) >= 0) {
    this.isSafari = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

	s = "MSIE";
	if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }
  
  s = "Macintosh";
  if ((i=ua.indexOf(s)) >= 0){
  	this.isMac = true;
	  return;
  }
  
  // Treat any other "Gecko" browser as NS 6.1.
  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }

}

/* Initialize Page */
var browser = new Browser();
var p_targetHeight = 0;

function GetTargetHeight(element, offsetBottom, minHeight) {
	if (p_targetHeight==0) {
		var offsetTop = getPageOffsetTop(element); 
		//alert("offsetTop: " + offsetTop);
		var myScreen = new Screen();
		var screenH	= myScreen.height;
		var targetHeight = screenH - offsetTop - offsetBottom;
		if (targetHeight <= minHeight) {
			targetHeight = minHeight;
		}
		//alert(targetHeight);			
		p_targetHeight = targetHeight;
	}
	return p_targetHeight;
}

function ShowContentBody() {
 /* Purpose: Set the Height of the Body element based on the window height
 ** Modification History: 
 */
 	var bodyElem = document.getElementById('ctrContentBody');
	if (bodyElem.style.visibility!="visible") {			
		
		/* Set these based on layout */
		var offsetBottom = 330;
		var minHeight = 200;
		
		var targetHeight = GetTargetHeight(bodyElem, offsetBottom, minHeight);
		if (bodyElem.style.height != targetHeight) {
			bodyElem.style.height = targetHeight;
		}
		bodyElem.style.visibility = "visible";
	} else {
		alert('visibility=' + bodyElem.style.visibility);
	}
}

function InitializePage() 
/* Page Initialization Scripts - called onLoad */
{	
	//ShowContentBody();
	correctPNG();
}

function correctPNG() 
 /* Purpose: Correctly handle PNG transparency in Win IE 5.5 or higher.
 ** Modification History: 
 ** 2005.07.13/LRR - Added "name" attribute to span tag for cross-browser compatibility.
 ** 2005.07.19/LRR - Changed quotes around title tag to double quotes to allow for single quotes in the alt text.
 */
	{
		if (browser.isIE&&browser.version>=5.5) {
		 for(var i=0; i<document.images.length; i++) {
				var img = document.images[i];
				var imgName = img.src.toUpperCase();
				if (imgName.substring(imgName.length-3, imgName.length) == "PNG") {
					 var imgID = (img.id) ? "id='" + img.id + "' name='" + img.id + "' " : "";
					 var imgClass = (img.className) ? "class='" + img.className + "' " : "";
					 var imgTitle = (img.title) ? "title=\"" + img.title + "\" " : "title=\"" + img.alt + "\" ";
					 var imgStyle = "display:inline-block" + img.style.cssText ;
					 //var imgSizingMethod 
					 if (img.align == "left") imgStyle = "float:left;" + imgStyle;
					 if (img.align == "right") imgStyle = "float:right;" + imgStyle;
					 if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle;	
					 var strNewHTML = "<span " + imgID + imgClass + imgTitle
					 + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
						 + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
					 + "(src=\'" + img.src + "\', sizingMethod='image');\"></span>" ;

					 //alert(strNewHTML);
					 img.outerHTML = strNewHTML;
					 i = i-1;
				 }
			 }
		 }
   }
	 
/* Image-swap Functions */
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
	/* Modification History: 
	** 2005.07.13/LRR - Modified to accommodate use of filters to handle png files in IE 
	*/
	var tmp = document.MM_sr[0];
		var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&(x.oSrc||x.oFilter);i++) { 
			if (x.oSrc) {
				x.src=x.oSrc;
			} else {
				if (x.oFilter) {
					x.style.filter=x.oFilter;
				}
			}
		}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
	/* Modification History: 
	** 2005.07.13/LRR - Modified to accommodate use of filters to handle png files in IE 
	*/
	var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; 
	for(i=0;i<(a.length-2);i+=3) {
		if ((x=MM_findObj(a[i]))!=null){
			document.MM_sr[j++]=x; 
		 	if (x.src) {
				x.oSrc=x.src; 
				x.src=a[i+2];
			} else {
				x.oFilter = x.style.filter;
				x.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'" + a[i+2] + "\')";
			}
		}
	}
}

/* SHOW RANDOM ELEMENT FUNCTIONS */
function GetRandomNumber(n) {
    // Return a random number between 0 and n
		return Math.round(Math.random()*n);	
}

function PickOne() {
	// Randomly select and return one of the incoming arguments
	if (PickOne.arguments.length > 0) {
		return arguments[GetRandomNumber(PickOne.arguments.length-1)];
	} else {
			return -1;
	}
}

function ShowElement(elemID) {
	var elem = document.getElementById(elemID);
	elem.style.display = "block";
}

function HideElement(elemID) {
	var elem = document.getElementById(elemID);
	elem.style.display = "none";
}

function SwapDiv(divPrefix, showNumber, ofCount) {
	/* Note that this function is 1-based, not 0 */
	var i;
	for(i=1;i<=ofCount;i++) {
		if (i==showNumber) {
			ShowElement(divPrefix + i);
		} else {
			HideElement(divPrefix + i);
		}
	}
}

/* MISC. FUNCTIONS */
function DoNothing() {
		//Do Nothing - used for empty target anchors
}

function clearTextBox(objTxtBox) {
	 if (objTxtBox.value == objTxtBox.defaultValue)
 {
         objTxtBox.value = "";
     }

}

function getPageOffsetLeft(el) {

  var x;

  // Return the x coordinate of an element relative to the page.

  x = el.offsetLeft;
  if (el.offsetParent != null)
    x += getPageOffsetLeft(el.offsetParent);

  return x;
}

function getPageOffsetTop(el) {

  var y;

  // Return the y coordinate of an element relative to the page.

  y = el.offsetTop;
  
  if (el.offsetParent != null)
  
    y += getPageOffsetTop(el.offsetParent);

  return y;
}

function alignElement(a, b) {
	/* Get the top/left coordinates from item a and apply them to item b */
	var elmA = MM_findObj(a);
	var elmB = MM_findObj(b);
	var x=getPageOffsetLeft(a);
  var y=getPageOffsetTop(a); 
	b.style.left = x + "px";
	b.style.top = y + "px";
}
	
function GetSelectedValue(frm, list) {
	/* Returns the value of the selected option from a select (list) element */
	var sel = eval("document." + frm + "." + list); 
	return sel.options[sel.selectedIndex].value;
}

function Window() {
	var winW = 800;
	var winH = 600;
	if (browser.version>3) {
		if (browser.isNS) {
  		winW = window.innerWidth-16;
  		winH = window.innerHeight-16;
 		}
 		if (navigator.appName.indexOf("Microsoft")!=-1) {
 			winW = document.body.offsetWidth-20;
  		winH = document.body.offsetHeight-20;
 		}
	}	
	this.height = winH;
	this.width = winW;
	return;
}

function Screen() {
	var screenW = 640;
	var screenH = 480;
	if (browser.version>3) {
	 screenW = screen.width;
	 screenH = screen.height;
	}
	else if (browser.version==3 && browser.isNS && navigator.javaEnabled())
	{
		 var jToolkit = java.awt.Toolkit.getDefaultToolkit();
		 var jScreenSize = jToolkit.getScreenSize();
		 screenW = jScreenSize.width;
		 screenH = jScreenSize.height;
	}
	this.width=screenW;
	this.height=screenH;
	return;
}

function URLDecode(psEncodeString) 
{
  // Create a regular expression to search all +s in the string
  var lsRegExp = /\+/g;
  // Return the decoded string
  return unescape(String(psEncodeString).replace(lsRegExp, " ")); 
}

function URLEncode(psEncodeString) 
{
  // Return the encoded string
  return escape(psEncodeString); 
}

// HtmlDecode http://lab.msdn.microsoft.com/annotations/htmldecode.js 

//   client side version of the useful Server.HtmlDecode method 

//   takes one string (encoded) and returns another (decoded) 

function HtmlDecode(s) 

{ 
      var out = ""; 

      if (s==null) return; 

      var l = s.length; 

      for (var i=0; i<l; i++) 

      { 

            var ch = s.charAt(i); 

            if (ch == '&') 

            { 

                  var semicolonIndex = s.indexOf(';', i+1); 

            if (semicolonIndex > 0) 

            { 

                        var entity = s.substring(i + 1, semicolonIndex); 

                        if (entity.length > 1 && entity.charAt(0) == '#') 

                        { 

                              if (entity.charAt(1) == 'x' || entity.charAt(1) == 'X') 

                                    ch = String.fromCharCode(eval('0'+entity.substring(1))); 

                              else 

                                    ch = String.fromCharCode(eval(entity.substring(1))); 

                        } 

                   		else 

                      	{ 

                              switch (entity) 

                              { 

                                    case 'apos': ch = String.fromCharCode(0x0027); break; 
									
									case 'quot': ch = String.fromCharCode(0x0022); break; 

                                    case 'amp': ch = String.fromCharCode(0x0026); break; 

                                    case 'lt': ch = String.fromCharCode(0x003c); break; 

                                    case 'gt': ch = String.fromCharCode(0x003e); break; 

                                    case 'nbsp': ch = String.fromCharCode(0x00a0); break; 

                                    case 'iexcl': ch = String.fromCharCode(0x00a1); break; 

                                    case 'cent': ch = String.fromCharCode(0x00a2); break; 

                                    case 'pound': ch = String.fromCharCode(0x00a3); break; 

                                    case 'curren': ch = String.fromCharCode(0x00a4); break; 

                                    case 'yen': ch = String.fromCharCode(0x00a5); break; 

                                    case 'brvbar': ch = String.fromCharCode(0x00a6); break; 

                                    case 'sect': ch = String.fromCharCode(0x00a7); break; 

                                    case 'uml': ch = String.fromCharCode(0x00a8); break; 

                                    case 'copy': ch = String.fromCharCode(0x00a9); break; 

                                    case 'ordf': ch = String.fromCharCode(0x00aa); break; 

                                    case 'laquo': ch = String.fromCharCode(0x00ab); break; 

                                    case 'not': ch = String.fromCharCode(0x00ac); break; 

                                    case 'shy': ch = String.fromCharCode(0x00ad); break; 

                                    case 'reg': ch = String.fromCharCode(0x00ae); break; 

                                    case 'macr': ch = String.fromCharCode(0x00af); break; 

                                    case 'deg': ch = String.fromCharCode(0x00b0); break; 

                                    case 'plusmn': ch = String.fromCharCode(0x00b1); break; 

                                    case 'sup2': ch = String.fromCharCode(0x00b2); break; 

                                    case 'sup3': ch = String.fromCharCode(0x00b3); break; 

                                    case 'acute': ch = String.fromCharCode(0x00b4); break; 

                                    case 'micro': ch = String.fromCharCode(0x00b5); break; 

                                    case 'para': ch = String.fromCharCode(0x00b6); break; 

                                    case 'middot': ch = String.fromCharCode(0x00b7); break; 

                                    case 'cedil': ch = String.fromCharCode(0x00b8); break; 

                                    case 'sup1': ch = String.fromCharCode(0x00b9); break; 

                                    case 'ordm': ch = String.fromCharCode(0x00ba); break; 

                                    case 'raquo': ch = String.fromCharCode(0x00bb); break; 

                                    case 'frac14': ch = String.fromCharCode(0x00bc); break; 

                                    case 'frac12': ch = String.fromCharCode(0x00bd); break; 

                                    case 'frac34': ch = String.fromCharCode(0x00be); break; 

                                    case 'iquest': ch = String.fromCharCode(0x00bf); break; 

                                    case 'Agrave': ch = String.fromCharCode(0x00c0); break; 

                                    case 'Aacute': ch = String.fromCharCode(0x00c1); break; 

                                    case 'Acirc': ch = String.fromCharCode(0x00c2); break; 

                                    case 'Atilde': ch = String.fromCharCode(0x00c3); break; 

                                    case 'Auml': ch = String.fromCharCode(0x00c4); break; 

                                    case 'Aring': ch = String.fromCharCode(0x00c5); break; 

                                    case 'AElig': ch = String.fromCharCode(0x00c6); break; 

                                    case 'Ccedil': ch = String.fromCharCode(0x00c7); break; 

                                    case 'Egrave': ch = String.fromCharCode(0x00c8); break; 

                                    case 'Eacute': ch = String.fromCharCode(0x00c9); break; 

                                    case 'Ecirc': ch = String.fromCharCode(0x00ca); break; 

                                    case 'Euml': ch = String.fromCharCode(0x00cb); break; 

                                    case 'Igrave': ch = String.fromCharCode(0x00cc); break; 

                                    case 'Iacute': ch = String.fromCharCode(0x00cd); break; 

                                    case 'Icirc': ch = String.fromCharCode(0x00ce ); break; 

                                    case 'Iuml': ch = String.fromCharCode(0x00cf); break; 

                                    case 'ETH': ch = String.fromCharCode(0x00d0); break; 

                                    case 'Ntilde': ch = String.fromCharCode(0x00d1); break; 

                                    case 'Ograve': ch = String.fromCharCode(0x00d2); break; 

                                    case 'Oacute': ch = String.fromCharCode(0x00d3); break; 

                                    case 'Ocirc': ch = String.fromCharCode(0x00d4); break; 

                                    case 'Otilde': ch = String.fromCharCode(0x00d5); break; 

                                    case 'Ouml': ch = String.fromCharCode(0x00d6); break; 

                                    case 'times': ch = String.fromCharCode(0x00d7); break; 

                                    case 'Oslash': ch = String.fromCharCode(0x00d8); break; 

                                    case 'Ugrave': ch = String.fromCharCode(0x00d9); break; 

                                    case 'Uacute': ch = String.fromCharCode(0x00da); break; 

                                    case 'Ucirc': ch = String.fromCharCode(0x00db); break; 

                                    case 'Uuml': ch = String.fromCharCode(0x00dc); break; 

                                    case 'Yacute': ch = String.fromCharCode(0x00dd); break; 

                                    case 'THORN': ch = String.fromCharCode(0x00de); break; 

                                    case 'szlig': ch = String.fromCharCode(0x00df); break; 

                                    case 'agrave': ch = String.fromCharCode(0x00e0); break; 

                                    case 'aacute': ch = String.fromCharCode(0x00e1); break; 

                                    case 'acirc': ch = String.fromCharCode(0x00e2); break; 

                                    case 'atilde': ch = String.fromCharCode(0x00e3); break; 

                                    case 'auml': ch = String.fromCharCode(0x00e4); break; 

                                    case 'aring': ch = String.fromCharCode(0x00e5); break; 

                                    case 'aelig': ch = String.fromCharCode(0x00e6); break; 

                                    case 'ccedil': ch = String.fromCharCode(0x00e7); break; 

                                    case 'egrave': ch = String.fromCharCode(0x00e8); break; 

                                    case 'eacute': ch = String.fromCharCode(0x00e9); break; 

                                    case 'ecirc': ch = String.fromCharCode(0x00ea); break; 

                                    case 'euml': ch = String.fromCharCode(0x00eb); break; 

                                    case 'igrave': ch = String.fromCharCode(0x00ec); break; 

                                    case 'iacute': ch = String.fromCharCode(0x00ed); break; 

                                    case 'icirc': ch = String.fromCharCode(0x00ee); break; 

                                    case 'iuml': ch = String.fromCharCode(0x00ef); break; 

                                    case 'eth': ch = String.fromCharCode(0x00f0); break; 

                                    case 'ntilde': ch = String.fromCharCode(0x00f1); break; 

                                    case 'ograve': ch = String.fromCharCode(0x00f2); break; 

                                    case 'oacute': ch = String.fromCharCode(0x00f3); break; 

                                    case 'ocirc': ch = String.fromCharCode(0x00f4); break; 

                                    case 'otilde': ch = String.fromCharCode(0x00f5); break; 

                                    case 'ouml': ch = String.fromCharCode(0x00f6); break; 

                                    case 'divide': ch = String.fromCharCode(0x00f7); break; 

                                    case 'oslash': ch = String.fromCharCode(0x00f8); break; 

                                    case 'ugrave': ch = String.fromCharCode(0x00f9); break; 

                                    case 'uacute': ch = String.fromCharCode(0x00fa); break; 

                                    case 'ucirc': ch = String.fromCharCode(0x00fb); break; 

                                    case 'uuml': ch = String.fromCharCode(0x00fc); break; 

                                    case 'yacute': ch = String.fromCharCode(0x00fd); break; 

                                    case 'thorn': ch = String.fromCharCode(0x00fe); break; 

                                    case 'yuml': ch = String.fromCharCode(0x00ff); break; 

                                    case 'OElig': ch = String.fromCharCode(0x0152); break; 

                                    case 'oelig': ch = String.fromCharCode(0x0153); break; 

                                    case 'Scaron': ch = String.fromCharCode(0x0160); break; 

                                    case 'scaron': ch = String.fromCharCode(0x0161); break; 

                                    case 'Yuml': ch = String.fromCharCode(0x0178); break; 

                                    case 'fnof': ch = String.fromCharCode(0x0192); break; 

                                    case 'circ': ch = String.fromCharCode(0x02c6); break; 

                                    case 'tilde': ch = String.fromCharCode(0x02dc); break; 

                                    case 'Alpha': ch = String.fromCharCode(0x0391); break; 

                                    case 'Beta': ch = String.fromCharCode(0x0392); break; 

                                    case 'Gamma': ch = String.fromCharCode(0x0393); break; 

                                    case 'Delta': ch = String.fromCharCode(0x0394); break; 

                                    case 'Epsilon': ch = String.fromCharCode(0x0395); break; 

                                    case 'Zeta': ch = String.fromCharCode(0x0396); break; 

                                    case 'Eta': ch = String.fromCharCode(0x0397); break; 

                                    case 'Theta': ch = String.fromCharCode(0x0398); break; 

                                    case 'Iota': ch = String.fromCharCode(0x0399); break; 

                                    case 'Kappa': ch = String.fromCharCode(0x039a); break; 

                                    case 'Lambda': ch = String.fromCharCode(0x039b); break; 

                                    case 'Mu': ch = String.fromCharCode(0x039c); break; 

                                    case 'Nu': ch = String.fromCharCode(0x039d); break; 

                                    case 'Xi': ch = String.fromCharCode(0x039e); break; 

                                    case 'Omicron': ch = String.fromCharCode(0x039f); break; 

                                    case 'Pi': ch = String.fromCharCode(0x03a0); break; 

                                    case ' Rho ': ch = String.fromCharCode(0x03a1); break; 

                                    case 'Sigma': ch = String.fromCharCode(0x03a3); break; 

                                    case 'Tau': ch = String.fromCharCode(0x03a4); break; 

                                    case 'Upsilon': ch = String.fromCharCode(0x03a5); break; 

                                    case 'Phi': ch = String.fromCharCode(0x03a6); break; 

                                    case 'Chi': ch = String.fromCharCode(0x03a7); break; 

                                    case 'Psi': ch = String.fromCharCode(0x03a8); break; 

                                    case 'Omega': ch = String.fromCharCode(0x03a9); break; 

                                    case 'alpha': ch = String.fromCharCode(0x03b1); break; 

                                    case 'beta': ch = String.fromCharCode(0x03b2); break; 

                                    case 'gamma': ch = String.fromCharCode(0x03b3); break; 

                                    case 'delta': ch = String.fromCharCode(0x03b4); break; 

                                    case 'epsilon': ch = String.fromCharCode(0x03b5); break; 

                                    case 'zeta': ch = String.fromCharCode(0x03b6); break; 

                                    case 'eta': ch = String.fromCharCode(0x03b7); break; 

                                    case 'theta': ch = String.fromCharCode(0x03b8); break; 

                                    case 'iota': ch = String.fromCharCode(0x03b9); break; 

                                    case 'kappa': ch = String.fromCharCode(0x03ba); break; 

                                    case 'lambda': ch = String.fromCharCode(0x03bb); break; 

                                    case 'mu': ch = String.fromCharCode(0x03bc); break; 

                                    case 'nu': ch = String.fromCharCode(0x03bd); break; 

                                    case 'xi': ch = String.fromCharCode(0x03be); break; 

                                    case 'omicron': ch = String.fromCharCode(0x03bf); break; 

                                    case 'pi': ch = String.fromCharCode(0x03c0); break; 

                                    case 'rho': ch = String.fromCharCode(0x03c1); break; 

                                    case 'sigmaf': ch = String.fromCharCode(0x03c2); break; 

                                    case 'sigma': ch = String.fromCharCode(0x03c3); break; 

                                    case 'tau': ch = String.fromCharCode(0x03c4); break; 

                                    case 'upsilon': ch = String.fromCharCode(0x03c5); break; 

                                    case 'phi': ch = String.fromCharCode(0x03c6); break; 

                                    case 'chi': ch = String.fromCharCode(0x03c7); break; 

                                    case 'psi': ch = String.fromCharCode(0x03c8); break; 

                                    case 'omega': ch = String.fromCharCode(0x03c9); break; 

                                    case 'thetasym': ch = String.fromCharCode(0x03d1); break; 

                                    case 'upsih': ch = String.fromCharCode(0x03d2); break; 

                                    case 'piv': ch = String.fromCharCode(0x03d6); break; 

                                    case 'ensp': ch = String.fromCharCode(0x2002); break; 

                                    case 'emsp': ch = String.fromCharCode(0x2003); break; 

                                    case 'thinsp': ch = String.fromCharCode(0x2009); break; 

                                    case 'zwnj': ch = String.fromCharCode(0x200c); break; 

                                    case 'zwj': ch = String.fromCharCode(0x200d); break; 

                                    case 'lrm': ch = String.fromCharCode(0x200e); break; 

                                    case 'rlm': ch = String.fromCharCode(0x200f); break; 

                                    case 'ndash': ch = String.fromCharCode(0x2013); break; 

                                    case 'mdash': ch = String.fromCharCode(0x2014); break; 

                                    case 'lsquo': ch = String.fromCharCode(0x2018); break; 

                                    case 'rsquo': ch = String.fromCharCode(0x2019); break; 

                                    case 'sbquo': ch = String.fromCharCode(0x201a); break; 

                                    case 'ldquo': ch = String.fromCharCode(0x201c); break; 

                                    case 'rdquo': ch = String.fromCharCode(0x201d); break; 

                                    case 'bdquo': ch = String.fromCharCode(0x201e); break; 

                                    case 'dagger': ch = String.fromCharCode(0x2020); break; 

                                    case 'Dagger': ch = String.fromCharCode(0x2021); break; 

                                    case 'bull': ch = String.fromCharCode(0x2022); break; 

                                    case 'hellip': ch = String.fromCharCode(0x2026); break; 

                                    case 'permil': ch = String.fromCharCode(0x2030); break; 

                                    case 'prime': ch = String.fromCharCode(0x2032); break; 

                                    case 'Prime': ch = String.fromCharCode(0x2033); break; 

                                    case 'lsaquo': ch = String.fromCharCode(0x2039); break; 

                                    case 'rsaquo': ch = String.fromCharCode(0x203a); break; 

                                    case 'oline': ch = String.fromCharCode(0x203e); break; 

                                    case 'frasl': ch = String.fromCharCode(0x2044); break; 

                                    case 'euro': ch = String.fromCharCode(0x20ac); break; 

                                    case 'image': ch = String.fromCharCode(0x2111); break; 

                                    case 'weierp': ch = String.fromCharCode(0x2118); break; 

                                    case 'real': ch = String.fromCharCode(0x211c); break; 

                                    case 'trade': ch = String.fromCharCode(0x2122); break; 

                                    case 'alefsym': ch = String.fromCharCode(0x2135); break; 

                                    case 'larr': ch = String.fromCharCode(0x2190); break; 

                                    case 'uarr': ch = String.fromCharCode(0x2191); break; 

                                    case 'rarr': ch = String.fromCharCode(0x2192); break; 

                                    case 'darr': ch = String.fromCharCode(0x2193); break; 

                                    case 'harr': ch = String.fromCharCode(0x2194); break; 

                                    case 'crarr': ch = String.fromCharCode(0x21b5); break; 

                                    case 'lArr': ch = String.fromCharCode(0x21d0); break; 

                                    case 'uArr': ch = String.fromCharCode(0x21d1); break; 

                                    case 'rArr': ch = String.fromCharCode(0x21d2); break; 

                                    case 'dArr': ch = String.fromCharCode(0x21d3); break; 

                                    case 'hArr': ch = String.fromCharCode(0x21d4); break; 

                                    case 'forall': ch = String.fromCharCode(0x2200); break; 

                                    case 'part': ch = String.fromCharCode(0x2202); break; 

                                    case 'exist': ch = String.fromCharCode(0x2203); break; 

                                    case 'empty': ch = String.fromCharCode(0x2205); break; 

                                    case 'nabla': ch = String.fromCharCode(0x2207); break; 

                                    case 'isin': ch = String.fromCharCode(0x2208); break; 

                                    case 'notin': ch = String.fromCharCode(0x2209); break; 

                                    case 'ni': ch = String.fromCharCode(0x220b); break; 

                                    case 'prod': ch = String.fromCharCode(0x220f); break; 

                                    case 'sum': ch = String.fromCharCode(0x2211); break; 

                                    case 'minus': ch = String.fromCharCode(0x2212); break; 

                                    case 'lowast': ch = String.fromCharCode(0x2217); break; 

                                    case 'radic': ch = String.fromCharCode(0x221a); break; 

                                    case 'prop': ch = String.fromCharCode(0x221d); break; 

                                    case 'infin': ch = String.fromCharCode(0x221e); break; 

                                    case 'ang': ch = String.fromCharCode(0x2220); break; 

                                    case 'and': ch = String.fromCharCode(0x2227); break; 

                                    case 'or': ch = String.fromCharCode(0x2228); break; 

                                    case 'cap': ch = String.fromCharCode(0x2229); break; 

                                    case 'cup': ch = String.fromCharCode(0x222a); break; 

                                    case 'int': ch = String.fromCharCode(0x222b); break; 

                                    case 'there4': ch = String.fromCharCode(0x2234); break; 

                                    case 'sim': ch = String.fromCharCode(0x223c); break; 

                                    case 'cong': ch = String.fromCharCode(0x2245); break; 

                                    case 'asymp': ch = String.fromCharCode(0x2248); break; 

                                    case 'ne': ch = String.fromCharCode(0x2260); break; 

                                    case 'equiv': ch = String.fromCharCode(0x2261); break; 

                                    case 'le': ch = String.fromCharCode(0x2264); break; 

                                    case 'ge': ch = String.fromCharCode(0x2265); break; 

                                    case 'sub': ch = String.fromCharCode(0x2282); break; 

                                    case 'sup': ch = String.fromCharCode(0x2283); break; 

                                    case 'nsub': ch = String.fromCharCode(0x2284); break; 

                                    case 'sube': ch = String.fromCharCode(0x2286); break; 

                                    case 'supe': ch = String.fromCharCode(0x2287); break; 

                                    case 'oplus': ch = String.fromCharCode(0x2295); break; 

                                    case 'otimes': ch = String.fromCharCode(0x2297); break; 

                                    case 'perp': ch = String.fromCharCode(0x22a5); break; 

                                    case 'sdot': ch = String.fromCharCode(0x22c5); break; 

                                    case 'lceil': ch = String.fromCharCode(0x2308); break; 

                                    case 'rceil': ch = String.fromCharCode(0x2309); break; 

                                    case 'lfloor': ch = String.fromCharCode(0x230a); break; 

                                    case 'rfloor': ch = String.fromCharCode(0x230b); break; 

                                    case 'lang': ch = String.fromCharCode(0x2329); break; 

                                    case 'rang': ch = String.fromCharCode(0x232a); break; 

                                    case 'loz': ch = String.fromCharCode(0x25ca); break; 

                                    case 'spades': ch = String.fromCharCode(0x2660); break; 

                                    case 'clubs': ch = String.fromCharCode(0x2663); break; 

                                    case 'hearts': ch = String.fromCharCode(0x2665); break; 

                                    case 'diams': ch = String.fromCharCode(0x2666); break; 

                                    default: ch = ''; break; 

                              } 

                        } 

                        i = semicolonIndex; 

                  } 

            } 

            out += ch; 
      } 
      return out; 

} 

