// Javascript for presenting servers news
// at the sliding out layer defined individually for each server.
//
// Classes are defined in cchmc.css file.
//
// Author:
// Aleksey Porollo, PhD
//   Research Assistant Professor at
//     University of Cincinnati
//   Faculty Affiliate at
//     Cincinnati Children's Hospital Medical Center (CCHMC)
//
// Last update: September 2008

var news_time_ref = 'no';
var news_max_height = 300;
var news_cur_server = '';
var news_ie_browser = IEBrowser();

var op_div = (news_ie_browser) ? 'filter: alpha(opacity=0);' : '';

document.write('\
<div id="news_div"\
     style="position: absolute;\
            top: 0px; height: 0px;\
            left: 0px; width: 100%;\
            margin-left: auto; margin-right: auto;\
            background-color: #E0E0E0;\
            border: 1px solid #000000;\
            padding: 5px;\
            z-index: 15;\
            ' + op_div + '\
            display: none">\
<table style="width: 100%; margin-left: auto; margin-right: auto;" border="0" cellpadding="0" cellspacing="0">\
<tr style="height: 20px">\
  <td nowrap style="padding-left: 10px"><a href="javascript:HideNews()" class="menu">Close news</a></td>\
  <th nowrap style="text-align: right; padding-right: 10px"><a href="javascript:HideNews()" class="menu" title="Close news window">X</a></th>\
</tr>\
<tr>\
  <td id="news_box" colspan="2" style="text-align: center"></td>	\
</tr>\
</table>\
</div>\
\
');

function ShowNews(server) {
    if (news_cur_server) return;

    news_cur_server = server;
    var div = document.getElementById('news_div');

    if (news_ie_browser)
      div.filters.alpha.opacity = 0;
    else
      div.style.opacity = 0;

    var curXY = getScrollXY();
//    div.style.top = parseInt(document.body.clientHeight) + 
//                    parseInt(curXY[1]) - news_max_height - 20 + 'px';
    div.style.top = parseInt(curXY[1]) + 20 + 'px';
    div.style.height = news_max_height + 'px';
    div.style.display = 'block';

    if (news_time_ref != 'no') return;
    news_time_ref = setInterval("ChangePanel(5)", 30);
}

function HideNews() {
    if (!news_cur_server) return;
    var div = document.getElementById('news_div');

    if (news_time_ref != 'no') return;
    news_time_ref = setInterval("ChangePanel(-5)", 30);
}

function ChangePanel(inc) {
    var div = document.getElementById('news_div');
    // open panel
    if (inc > 0) {
        var op = (news_ie_browser) ? div.filters.alpha.opacity : div.style.opacity * 100;
	if (op + inc >= 100) {
	    clearInterval(news_time_ref);
	    news_time_ref = 'no';
    
	    document.getElementById('news_box').innerHTML =
	      '<iframe src="http://sable.cchmc.org/cgi-bin/news.cgi?Server=' +
              news_cur_server +
              '" style="height: 270px; width: 800px"></iframe>';

	    return;
	}
	
	if (news_ie_browser)
	    div.filters.alpha.opacity += inc;
	else
	    div.style.opacity = (op + inc) / 100;
    }
    // hide panel
    if (inc < 0) {
        var op = (news_ie_browser) ? div.filters.alpha.opacity : div.style.opacity * 100;
	if (op + inc <= 0) {
	    clearInterval(news_time_ref);
	    news_time_ref = 'no';
	    news_cur_server = '';
	    
	    div.style.display = 'none';
	    div.style.height = 0;
	    div.style.top = 0;
	    document.getElementById('news_box').innerHTML = '';
	    
	    return;
	}
	
	if (news_ie_browser)
	    div.filters.alpha.opacity += inc;
	else
	    div.style.opacity = (op + inc) / 100;
    }
}

function IEBrowser() {
    return (navigator.appName.indexOf('Microsoft') != -1) ? 1 : 0;
}

function getScrollXY() {
    var scrOfX = 0, scrOfY = 0;
    if (typeof(window.pageYOffset) == 'number') {
        // Netscape compliant
        scrOfY = window.pageYOffset;
        scrOfX = window.pageXOffset;
    } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
        // DOM compliant
        scrOfY = document.body.scrollTop;
        scrOfX = document.body.scrollLeft;
    } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
        // IE6 standards compliant mode
        scrOfY = document.documentElement.scrollTop;
        scrOfX = document.documentElement.scrollLeft;
    }

    return [scrOfX, scrOfY];
}
