var tabs = [
			 {tab:'tabAll',      id: 0,  	header: 'tbhAll', desc: 'All messages'},
			 {tab:'tabGeneral',  id: 1,  	header: 'tbhGeneral', desc: 'Latest comments'},
             {tab:'tabNews',     id: 2,     header: 'tbhNews', desc: 'Latest News'},
             {tab:'tabQuestion', id: 4, 	header: 'tbhQuestion', desc: 'Latest Questions'},
             {tab:'tabJoke',     id: 16,    header: 'tbhJoke', desc: 'Latest Jokes'},
			 {tab:'tabAnswer',   id: 17,    header: 'tbhAnswer', desc: 'Latest Answers'}
            ];

// Current active tab
var activetab = null;

//Load status
var progressmsg = ""//<img align=absmiddle src='_layouts/images/loading.gif' />";

// Show Selected Tab
// Arguments :
//  header : selected tab header object
//  selectedTab : Selected tab name 
function showTab(selectedTab)
{
	setCookie("LoungeTab", selectedTab, 1000, "/", "", false);
	
    // Show only the selected Tab 
    activetab = document.getElementById(tabs[selectedTab].tab);
    activetab.style.display = "block";
    
    // Hide all tabs 
    for(i=0; i<tabs.length ; i++)
    {
        var tabBlock = document.getElementById(tabs[i].tab);
        if (tabBlock != activetab)
			tabBlock.style.display= "none";
    }

    //Activate the current selected header
    var header = document.getElementById(tabs[selectedTab].header);
    var headers = header.parentNode.getElementsByTagName("a");
    for(i=0; i<headers.length ; i++)
    {
        headers[i].style.backgroundColor = "";
    }
    
    header.style.backgroundColor= "#EFFFD2"; 
    header.blur();  // otherwise a focus rect is drawn 
    
    activetab.style.display = 'block';
    // check tab data is already loaded or not
    if (activetab.innerHTML == "")
    {
        activetab.innerHTML = progressmsg;
        getTabContent(selectedTab)
    }
}

function getCookie( name ) {
  var start = document.cookie.indexOf( name + "=" );
  var len = start + name.length + 1;
  if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
    return null;
  }
  if ( start == -1 ) return null;
  var end = document.cookie.indexOf( ";", len );
  if ( end == -1 ) end = document.cookie.length;
  return unescape( document.cookie.substring( len, end ) );
}

function setCookie( name, value, expires, path, domain, secure ) {
  var today = new Date();
  today.setTime( today.getTime() );
  if ( expires ) {
    expires = expires * 1000 * 60 * 60 * 24;
  }
  var expires_date = new Date( today.getTime() + (expires) );
  document.cookie = name+"="+escape( value ) +
    ( ( expires ) ? ";expires="+expires_date.toGMTString() : "" ) + //expires.toGMTString()
    ( ( path ) ? ";path=" + path : "" ) +
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ( ( secure ) ? ";secure" : "" );
}

function deleteCookie( name, path, domain ) {
  if ( getCookie( name ) ) document.cookie = name + "=" +
    ( ( path ) ? ";path=" + path : "") +
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}


// request object  
var req;

//Method to create XmlHttp object based on browser
function createXmlHttp()
{
    if(window.XMLHttpRequest) 
    {
	    try { req = new XMLHttpRequest(); }
        catch(e) {req = false; }
    }    
    else if(window.ActiveXObject)
    {
   	    try { req = new ActiveXObject("Msxml2.XMLHTTP"); } 
  	    catch(e)
  	    {
    	    try { req = new ActiveXObject("Microsoft.XMLHTTP"); } 
    	    catch(e) { req = false; }
	    }   
    }
} 
  
// Get tab content asynchronosly 
// Arguments :       
//    selectedTab : Selected tab  
function getTabContent(selectedTab)
{
    createXmlHttp();
    if(req)
    {
		req.onreadystatechange = processResponse;
		req.open("GET", "/script/comments/GetTopMessages.aspx?tab=" + selectedTab.toString() + 
						"&msgtyp=" + tabs[selectedTab].id,  true);
		req.send(null);
    }

    return false;
 }
 
 // Method to be called on Asynchronous call back 
 function processResponse()
 {
    if(req.readyState == 4)
    {
        if(req.status == 200)
        {
            var retval   = req.responseText;
            if (retval != '')
            {
				var tabIndex = retval.substring(0,1);
				var objTab   = document.getElementById(tabs[tabIndex].tab);
				var list     = retval.substring(1);
				if (objTab)
				{
					objTab.innerHTML = (list != '')? list : 
					               "<br /><br />No messages found<br /><br /><br />";
					objTab.innerHTML = '<b>' + tabs[tabIndex].desc + ':</b><br />' + objTab.innerHTML;
				}	  
			}
        }
        else
        {
            //activetab.innerHTML = "<br />Unable to retrieve messages";
            //alert("Error retrieving data!" );
        }
    }
 }


var Selected = "";

var AdTime = new Date();


// Ensures the expanded message appears reasonably close to where 
// it should appear: on screen, and if possible, under the mouse cursor.
function SwitchMessage(e)
{
   if ( !e ) e = window.event;
   var target = e.target ? e.target : e.srcElement;

   // is it a post?
   while ( target && target.id != 'DynMessLink' )
      target = target.parentNode;
   if ( !target || target.id != 'DynMessLink' )
      return;

   if (Selected)
   {
      var body = document.getElementById(Selected + "_h1");
      if (body)
         body.style.display = 'none';
      var head = document.getElementById(Selected + "_h0");
      if (head)
         head.bgColor = '#ABD12E';
   }

   if (Selected == target.name) // just collapse
      Selected="";
   else
   {
      Selected = target.name;
      var body = document.getElementById(Selected + "_h1");
      if (body)
      {
         if (body.style.display=='none')
            body.style.display='';
         else
            body.style.display = 'none';
      }
      var head = document.getElementById(Selected + "_h0");
      if (head)
         head.bgColor = '#ABD12E';

      if ( body && head && body.style.display != 'none' )
      {
         // the bit that keeps the post on-screen and under the cursor
         //var dif = (getRealPos(head, "Top") + head.offsetHeight/2) - (document.body.scrollTop+e.clientY);
         //document.body.scrollTop += dif;
         document.body.scrollTop = getRealPos(head, "Top") - document.body.clientHeight/10;
         EnsureMessageVisible(target.name, true);
      }
   }

   if ( e.preventDefault )
      e.preventDefault();
   else
      e.returnValue = false;
   return false;
}

// does its best to make a message visible on-screen (vs. scrolled off somewhere).
function EnsureMessageVisible(msgID, bShowTop) {
   var msgHeader = document.getElementById(msgID + "_h0");
   var msgBody = document.getElementById(msgID + "_h1");

   // determine scroll position of top and bottom
   var scrollContainer = document.body;
   var top = getRealPos(msgHeader, 'Top');
   var bottom = getRealPos(msgBody, 'Top') + msgBody.offsetHeight;

   // if not already visible, scroll to make it so
   if ( scrollContainer.scrollTop > top && !bShowTop)
      scrollContainer.scrollTop = top - document.body.clientHeight/10;
   if ( scrollContainer.scrollTop+scrollContainer.clientHeight < bottom )
      scrollContainer.scrollTop = bottom-scrollContainer.clientHeight;
   if ( scrollContainer.scrollTop > top && bShowTop)
      scrollContainer.scrollTop = top - document.body.clientHeight/10;
}

// utility
function getRealPos(i,which)
{
   iPos = 0
   while (i!=null)
   {
      iPos += i["offset" + which];
      i = i.offsetParent;
   }
   return iPos
}


