function SniffBrowser() 
{
   var ua = navigator.userAgent.toLowerCase(); 
   var isOpera       = (ua.indexOf('opera') != -1); 
   var isFireFox	 = (ua.indexOf('firefox') != -1); 
   var isIE          = (ua.indexOf('msie') != -1 && !isOpera && (ua.indexOf('webtv') == -1) );
   var versionMinor = parseFloat(navigator.appVersion); 
   
   if (isIE && (versionMinor >= 4))
   {
      versionMinor = parseFloat( ua.substring( ua.indexOf('msie ') + 5 ) );
   }   
   var versionMajor = parseInt(versionMinor); 
   var isIE5up = (isIE && versionMajor >= 5);
   
   if (ua.indexOf('msn') > 0)
   {
		return("msn explorer");
   }
   
   if(isIE5up)
   {
	return("IE5up");
   }
   else if (isFireFox)
   {
    return ("FireFox");
   }
   else
   {
	return("other");
   }
}

/// dynamic feature table
function featureObj(vimg, vtitle, vtext) 
{
	this.img = vimg;
	this.title = vtitle;
	this.text = vtext;
}

var gIsFireFox = (SniffBrowser() == "FireFox");

featureObj.prototype.Display=function(oRow, imgWidth, textWidth)
{
	var imgCell = null;
	var textCell = null;
	var innerImg = '<img src="' + this.img + '" alt="" border=0 />';
	var innerText = '<div class=headerSmallTable>' + unescape(this.title) + '</div><div>' + unescape(this.text) + '</div>';
	oRow.valign="top";
	if (gIsFireFox)
	{
		imgCell = document.createElement('td');
		textCell = document.createElement('td');		
	}
	else
	{
		imgCell = oRow.insertCell();
		textCell = oRow.insertCell();
	}	

	imgCell.width=imgWidth;
	imgCell.innerHTML = innerImg;
	imgCell.valign="top";
	textCell.width=textWidth;
	textCell.innerHTML = innerText;
	textCell.valign="top";

	if (gIsFireFox)
	{
		oRow.appendChild(imgCell);		
		oRow.appendChild(textCell);
	}	
}

function displayFeatures(oTable, featureLst)
{
	var numItems = featureLst.length;
	var numRows = (numItems % 2) ?  ((numItems+1) / 2) : (numItems / 2);
	var j = 0;
	for (i=0; i<numRows;i++)
	{				
		var oRow = null;
		if (gIsFireFox)
			oRow = document.createElement("tr");
		else
			oRow = oTable.insertRow();
		if (j<numItems)
			featureLst[j++].Display(oRow, "40", "45%");
		if (j<numItems)
			featureLst[j++].Display(oRow, "40", "45%");
		
		if (gIsFireFox)
			oTable.appendChild(oRow);
	}
}

// dynamic language list
function langObj(vlang, vlink)
{
	this.lang = vlang;
	this.link = vlink;
}
langObj.prototype.Display=function(oRow)
{
	// what is content
	var innerLangTd = '<ul><li>';
	if (this.link !=null && this.link != "" && this.link != "undefined")
		innerLangTd += '<a href="' + this.link + '">' + this.lang + '</a></li></ul>\n';
	else
		innerLangTd += this.lang + '\n';
	
	var langTd = null;
	if (gIsFireFox)
		langTd = document.createElement('td');	
	else
		langTd = oRow.insertCell();
	
	langTd.style.fontSize="100%";
	langTd.innerHTML=innerLangTd;
	
	if (gIsFireFox)
		oRow.appendChild(langTd);
}
langObj.prototype.DisplaySingleLang=function(langTd)
{	
    // what is content
	var innerLangTd = '<li>';
	if (this.link !=null && this.link != "" && this.link != "undefined")
		innerLangTd += '<a href="' + this.link + '">' + this.lang + '</a></li>\n';
	else
		innerLangTd += this.lang + '\n';
		
	langTd.innerHTML += innerLangTd;
	
}
function displayLanguages(oTable, langList)
{
	var numItems = langList.length;
	var numRows = (numItems % 2) ?  ((numItems+1) / 2) : (numItems / 2);
	var j = 0;

    // single row
	if (gIsFireFox)
		oRow = document.createElement("tr");
	else
		oRow = oTable.insertRow();
		
	// two colomns
	var langTd1 = null;
	var langTd2 = null;
	if (gIsFireFox)
	{
		langTd1 = document.createElement('td');	
		langTd2 = document.createElement('td');	
    }
	else
	{
		langTd1 = oRow.insertCell();
		langTd2 = oRow.insertCell();
	}
	
	langTd1.style.fontSize="100%";
	langTd2.style.fontSize="100%";
	langTd1.innerHTML="<ul>\n";
	langTd2.innerHTML="<ul>\n";
	
	var i=0;
	for (i=0; i<numRows;i++)
	{		
	    langList[j++].DisplaySingleLang(langTd1);
	}
	
	for (; i<numItems;i++)
	{		
	    langList[j++].DisplaySingleLang(langTd2);
	}
	
	langTd1.innerHTML+="</ul>\n";
	langTd2.innerHTML+="</ul>\n";
	
	
	if (gIsFireFox)
	{
		oRow.appendChild(langTd1);
		oRow.appendChild(langTd2);
	}
	
	if (gIsFireFox)
		oTable.appendChild(oRow);
}