/**
 * addEvent written by Dean Edwards, 2005
 * with input from Tino Zijdel
 *
 * http://dean.edwards.name/weblog/2005/10/add-event/
 **/
function addEvent(element, type, handler) {
  // assign each event handler a unique ID
  if (!handler.$$guid) handler.$$guid = addEvent.guid++;
  // create a hash table of event types for the element
  if (!element.events) element.events = {};
  // create a hash table of event handlers for each element/event pair
  var handlers = element.events[type];
  if (!handlers) {
    handlers = element.events[type] = {};
    // store the existing event handler (if there is one)
    if (element["on" + type]) {
      handlers[0] = element["on" + type];
    }
  }
  // store the event handler in the hash table
  handlers[handler.$$guid] = handler;
  // assign a global event handler to do all the work
  element["on" + type] = handleEvent;
}

// a counter used to create unique IDs
addEvent.guid = 1;

function removeEvent(element, type, handler) {
  // delete the event handler from the hash table
  if (element.events && element.events[type]) {
    delete element.events[type][handler.$$guid];
  }
}

function handleEvent(event) {
  var returnValue = true;
  // grab the event object (IE uses a global event object)
  event = event || fixEvent(window.event);
  // get a reference to the hash table of event handlers
  var handlers = this.events[event.type];
  // execute each event handler
  for (var i in handlers) {
    this.$$handleEvent = handlers[i];
    if (this.$$handleEvent(event) === false) {
      returnValue = false;
    }
  }
  return returnValue;
}

function fixEvent(event) {
  // add W3C standard event methods
  event.preventDefault = fixEvent.preventDefault;
  event.stopPropagation = fixEvent.stopPropagation;
  return event;
}

fixEvent.preventDefault = function() {
  this.returnValue = false;
}

fixEvent.stopPropagation = function() {
  this.cancelBubble = true;
}

// end from Dean Edwards

/**
 * Creates an Element for insertion into the DOM tree.
 * From http://simon.incutio.com/archive/2003/06/15/javascriptWithXML
 *
 * @param element the element type to be created.
 *        e.g. ul (no angle brackets)
 **/
function createElement(element) {
  if (typeof document.createElementNS != 'undefined') {
    return document.createElementNS('http://www.w3.org/1999/xhtml', element);
  }
  if (typeof document.createElement != 'undefined') {
    return document.createElement(element);
  }
  return false;
}

/**
 * "targ" is the element which caused this function to be called
 * from http://www.quirksmode.org/js/events_properties.html
 **/
function getEventTarget(e) {
  var targ;
  if (!e) {
    e = window.event;
  }
  if (e.target) {
    targ = e.target;
  } else if (e.srcElement) {
    targ = e.srcElement;
  }
  if (targ.nodeType == 3) { // defeat Safari bug
    targ = targ.parentNode;
  }
  
  return targ;
}

// cookie control from quirksmode.org
function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return "";
}

function getParam( name ) {
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

function ge(e){return document.getElementById(e)}

function getElementsByClassName (searchClass,tag) {
  var classElements = new Array();
  if ( tag == null )
    tag = '*';
  var els = document.getElementsByTagName(tag);
  var elsLen = els.length;
  var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
  for (i = 0, j = 0; i < elsLen; i++) {
    if ( pattern.test(els[i].className) ) {
      classElements[j] = els[i];
      j++;
    }
  }
  return classElements;
}

if (!document.getElementsByClassName) {
  document.getElementsByClassName = getElementsByClassName;
}

// Empties a select list
function ClearSelect (s) {
  for (var i = 0; i < s.options.length; i++) {
    s.options[i] = null;
  }
  if (s.options.length != 0) {
    ClearSelect (s);
  }
}

// Adds a value to a select list
function Append2Select(s, val,text) {
  s.options[s.options.length] = new Option (text, val);
}

// open external links (for forums really) in a new tab/window
function externalLinks() {
  if (!document.getElementsByTagName) return;
  var anchors = document.getElementsByTagName("a");
  for (var i=0; i<anchors.length; i++) {
    var anchor = anchors[i];
    if (anchor.getAttribute("rel") && anchor.getAttribute("rel").match("\\bexternal\\b")) {
      anchor.target = "_blank";
    }
  }
}

function togglevis (target) {
  if (!target.id) {
    target = document.getElementById(target);
  }
  if (!target.id)
    return;

  if (target.style.display == 'none' || target.style.display == '') {
    target.style.display = 'block';
  } else  {
    target.style.display = 'none';
  }
}

function clearTmp() {
  var obj = document.getElementById('tmpItemFrm');
  var trig = document.getElementById('temporaryIDforshowTmp');
  if (trig) trig.id = '';
  obj.style.display = 'none';
  obj.innerHTML = '';
}

function showTmp(e) {
  var maxX;
  var maxY;
  var obj = document.getElementById('tmpItemFrm');
  obj.style.position = "absolute";
  obj.style.display = "block";
  var evt = e || window.event;
  if (!evt) return;
  if (e) {
    e.target.title = '';
    e.target.id = 'temporaryIDforshowTmp';
  }
  
  if (document.all&&!window.opera) { 
    if (document.documentElement) {
      maxX = document.documentElement.clientWidth + document.documentElement.scrollLeft;
      maxY = document.documentElement.clientHeight + document.documentElement.scrollTop;
      y = evt.clientY + document.documentElement.scrollTop;
      x = evt.clientX + document.documentElement.scrollLeft ;
    } else {
      y = evt.clientY + document.body.scrollTop;
      x = evt.clientX + document.body.scrollLeft;
    }
  } else {
    if (document.body.scrollTop) {
      maxX = window.innerWidth + document.body.scrollLeft;
      maxY = window.innerHeight + document.body.scrollTop;
    } else {
      maxX = window.innerWidth + document.documentElement.scrollLeft;
      maxY = window.innerHeight + document.documentElement.scrollTop;
    }
    y = evt.pageY;
    x = evt.pageX;
  }

  var divW = parseInt(obj.offsetWidth);
  var divH = parseInt(obj.offsetHeight);
  divW = divW ? divW : 400;
  divH = divH ? divH : 100;
  if (maxX && maxY) {
    while (x + divW > (maxX - 10) && x > 0) {
      x = x - (divW + 10);
      obj.style.left = x + 5 +"px";
    }
    while (y + divH > (maxY - 10) && y > 0) {
      y = y - 1;
      obj.style.top = y +"px";
    }
  }
  obj.style.left = x + 16 +"px";
  obj.style.top = y + 16 + "px";
//    document.title = "X:" + x + " MaxX:" + maxX + " divX:" + divW + " y:" + y + " MaxY:" + maxY + " DivY:" + divH;
}

function reloadMsg (id,rs) {
  Ajakz.target = "msg" + id;
  Ajakz.onload = Ajakz.loadTarget;
  Ajakz.loadTargetHook = function () {document.getElementById(Ajakz.target).className = '';}
  Ajakz.Run('/fcluster/mrate3.pl?mid=' + id + ';style=' + rs);
  return false;
}

function rateMsg (id,w,rs) {
  Ajakz.target = "msg" + id;
  Ajakz.onload = Ajakz.loadTarget;
  Ajakz.loadTargetHook = function () {document.getElementById(Ajakz.target).className = '';}
  var editReason = '';
  if (w == 'l') {
    editReason = prompt('Reason for Lock?');
  }
  Ajakz.Run('/fcluster/mrate3.pl?mid=' + id + ';w=' + w + ';style=' + rs + ';edit_reason=' + editReason);
  return false;
}

function rateNews (id,w) {
  Ajakz.target = "news" + id;
  Ajakz.onload = Ajakz.loadTarget;
  Ajakz.loadTargetHook = function () {document.getElementById(Ajakz.target).className = '';}
  Ajakz.Run('/cgi-bin/news_rate.pl?story_id=' + id + ';w=' + w);
  return false;
}

function loadfile(target,file) {
  Ajakz.target = target;
  Ajakz.onload = Ajakz.loadTarget;
  Ajakz.Run(file);
}

function doPic(id,w,h) {
  Ajakz.target = 'ssMain';
  Ajakz.onload = Ajakz.loadTarget;
  Ajakz.w = w;
  Ajakz.h = h;
  Ajakz.loadTargetHook = function (t) {var ow = t.offsetWidth;var oh = t.offsetHeight;if (ow < Ajakz.w) { t.style.left = Ajakz.w - ow + 'px';ow = Ajakz.w;}if (oh < Ajakz.h) { oh = Ajakz.h + 24;} t.style.width = ow + 'px';}
  Ajakz.Run('/Im/imagelinks?id=' + id);
}

function showImg () {
  var id = this.id.toString();
  var iid = id.match(/(\d+)/);
  if (iid[1]) {
    clearTmp();
    Ajakz.target = 'tmpItemFrm';
    Ajakz.onload = Ajakz.loadTarget;
    Ajakz.Run('/Im/imageonly?id=' + iid[1]);
  }
}

Ajakz = {
 file: undefined,
 onload: undefined,
 Ajakz: undefined,
 target: undefined,
 targetElement: undefined,
 loadTargetHook: undefined,
 req: undefined,
 
 Run: function (url) { 
    url = url ? url : Ajakz.file;
    if (window.XMLHttpRequest) { // Non-IE browsers
      Ajakz.req = new XMLHttpRequest();
      Ajakz.req.onreadystatechange = Ajakz.onload;
      try {
        Ajakz.req.open("GET", url, true);
      } catch (e) {
        //      alert(e);
      }
      Ajakz.req.send(null);
    } else if (window.ActiveXObject) { // IE
      Ajakz.req = new ActiveXObject("Microsoft.XMLHTTP");
      if (Ajakz.req) {
        Ajakz.req.onreadystatechange = Ajakz.onload;
        Ajakz.req.open("GET", url, true);
        Ajakz.req.send();
      }
    }
  },
 loadTarget: function () {
    if (Ajakz.req.readyState == 4) {
      if (Ajakz.req.status == 200) {
        var target;
        if (typeof Ajakz.target == 'string') {
          target = document.getElementById(Ajakz.target);
        } else {
          target = Ajakz.target;
        }
        target.innerHTML = Ajakz.req.responseText;
        if (Ajakz.loadTargetHook) {
          Ajakz.loadTargetHook(target);
        }
      }
    }
  }
}

function fadeIn (id) {
  var o = document.getElementById(id);
  if (o.fadeIn) window.clearInterval(o.fadeIn);
  var step = 0;
  o.fadeIn = window.setInterval(
    function() {
      o.style.opacity = step * .05;
      step++;
      if (step >= 100) window.clearInterval(o.fadeIn);
    }, 3);
}

addEvent(window,'load',externalLinks);

function restoreads () {
  var b = ge('bannerMain');
  var t = ge('towerRt');
  var c = ge('ad300');
  var c2 = ge('cubeAd');
  if (b) b.style.visibility = 'visible';
  if (t) t.style.visibility = 'visible';
  if (c) c.style.visibility = 'visible';
  if (c2) c2.style.visibility = 'visible';
}

function hideads () {
  var b = ge('bannerMain');
  var t = ge('towerRt');
  var c = ge('ad300');
  var c2 = ge('cubeAd');
  if (b) b.style.visibility = 'hidden'; 
  if (t) t.style.visibility = 'hidden';
  if (c) c.style.visibility = 'hidden';
  if (c2) c2.style.visibility = 'hidden';
}

addEvent(window,'load',doNetMenu);

function doNetMenu () {
  if (ge('netm')) {
    addEvent(document.getElementById('netm'),'mouseout',restoreads);
    addEvent(document.getElementById('netm'),'mouseover',hideads);
  }
}

function storeSel (dest) {
  if (dest.createTextRange)
    dest.caretPos = document.selection.createRange().duplicate();
}

function doTag (dest, stag, etag, dtext) {
  if (document.selection) {

    var orig;
    if (window.opera) {
      orig = dest.value;
    } else {
      orig = dest.value.replace(/\r\n/g, "\n");
    }

    var r = document.selection.createRange();
    var t = r.text;

    if (t) {
      newval = stag + t + etag;
    } else {
      newval = stag + dtext + etag;
    }

    if (dest.createTextRange && dest.caretPos) {
      var caretPos = dest.caretPos;
      caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? newval + ' ' : newval;
    } else {
      dest.value = dest.value + newval;
    }

    if (r.parentElement() != dest) {
      dest.focus();
      return;
    }

    var changed;
    if (window.opera) {
      changed = dest.value;
    } else {
      changed = dest.value.replace(/\r\n/g, "\n");
    }
    for (var diff = 0; diff < orig.length; diff++) {
      if (orig.charAt(diff) != changed.charAt(diff)) break;
    }

    dest.focus();
    var r2 = dest.createTextRange();
    r2.moveStart('character', -dest.value.length);
    r2.moveEnd('character', -dest.value.length);
    r2.moveStart('character', diff + stag.length);
    r2.moveEnd('character', newval.length - stag.length - etag.length);
    r2.select();
  } else {
    var startpos = dest.selectionStart;
    var endpos = dest.selectionEnd;
    var scrollTop = dest.scrollTop;

    var t = (dest.value).substring(dest.selectionStart,dest.selectionEnd);
    if (t) {
      if (t.charAt(t.length - 1) == ' ') {
        t = t.substring(0, t.length - 1);
        endpos--;
      }

      newval = stag + t + etag;
    } else {
      newval = stag + dtext + etag;
    }

    dest.value = dest.value.substring(0,startpos) + newval + dest.value.substring(endpos, dest.value.length);
    dest.focus();
    if (t) {
      dest.selectionStart = startpos + newval.length;;
      dest.selectionEnd = dest.selectionStart;
    } else {
      dest.selectionStart = startpos + stag.length;
      dest.selectionEnd = dest.selectionStart + dtext.length;
    }
    dest.scrollTop = scrollTop;
  }
}

function tablistview (l,nohash) {
  var cns = l.parentNode.parentNode.parentNode.childNodes;
  var t = l.id.replace(/_tab$/, "");
  if (!nohash) document.location.hash = t;
  for (var i = 0; i < cns.length; i++) {
    if (cns[i].tagName == "DIV" && cns[i].className != "clear") {
      cns[i].style.display = "none";
    }
  }

  var lis = l.parentNode.parentNode.childNodes;
  for (var x = 0; x < lis.length; x++) {
    if (lis[x].tagName == "LI") {
      lis[x].className = "";
    }
  }

  l.parentNode.className = "current";
  ge(t + "_t").style.display = "";
}

function tagchange(te, tag, change, cat, id, threshold, count, url, weight) {
  Ajakz.target = te;
  Ajakz.onload = Ajakz.loadTarget;
  tag = tag.replace('&','_AND_');
  var tagger = '/cgi-bin/tag.pl?tag=' + tag + '&change=' + change + '&cat=' + cat + '&id=' + id;
  tagger += '&threshold=' + threshold + '&count=' + count;
  if (url != '') {
    tagger += '&url=' + url;
  }
  if (weight != undefined) {
    tagger += '&weight=' + weight;
  }
  Ajakz.Run(tagger);

  return false;
}

var inputid = 0;
function tagaddclick(ae, cat, id, threshold, count, url, weight) {
  ae.innerHTML = '<form style="display: inline;" onSubmit="return tagchange(this.parentNode.parentNode,this.tag.value,\'add\',\'' + cat + '\',\'' +
    id + '\',' + threshold + ',' + count + ',\'' + url + '\',' + weight +
    ');"><input type="text" name="tag" size="14" maxlength="80" id="tmpInput' + inputid +'" style="padding:0;vertical-align:middle"/></form>';
  document.getElementById('tmpInput'+ inputid).focus();
  inputid++;
  return false;
}

function showalltags(te, cat, id, url) {
  Ajakz.target = te;
  Ajakz.onload = Ajakz.loadTarget;
  var tagger = '/cgi-bin/tag.pl?count=999&threshold=-10&cat=' + cat + '&id=' + id;
  if (url != '') {
    tagger += '&url=' + url;
  }
  Ajakz.Run(tagger);

  return false;
}

function copylink(t, text) {
  if (window.clipboardData) {
    window.clipboardData.setData('Text', text);
  } else {
    document.clipboard.saveEdit(text);
  }
  t.innerHTML = "Link Copied";
}

if (navigator.userAgent.search("MSIE 6") > -1) {
  wtHover = function() {
    var wtEl = document.getElementById("wtools");
    if (wtEl) {
      wtEl.onmouseover=function() { this.className+=" wthover"; }
      wtEl.onmouseout=function() { this.className=this.className.replace(new RegExp("wthover"), ""); }
    }
  }
  if (window.attachEvent) window.attachEvent("onload", wtHover);
}

function togglecont() {
  var cont = document.getElementById("wikicont");
  cont.style.display = cont.style.display == "block" ? "none" : "block";
  var ct = document.getElementById("wikict");
  ct.innerHTML = ct.innerHTML == "hide" ? "show" : "hide";
}

function zamDialogue(c,t,f) {
  if (!ge('jsbox')) {
    var b = document.createElement('div');
    b.id = 'jsbox';
    document.body.insertBefore(b, document.body.childNodes[0]);
  }
  t = t ? '<h1>'+t+'</h1>' : '';
  f = f ? '<button onclick="if ('+f+' != false) zamDialogueClose();">OK</button> &nbsp; <button onclick="zamDialogueClose()">Cancel</button>' : '<button onclick="zamDialogueClose()">Close</button>';
  ge('jsbox').innerHTML = '<div id="dialogue-screen"></div><div id="dialogue"><div id="dialogue-cont"><div class="cont">'+t+c+'<div id="dialogue-bottom">'+f+'</div></div><div id="dialogue-shadow"></div></div></div>';
}

function zamDialogueClose() {
  var b = ge('jsbox');
  if (b) b.parentNode.removeChild(b);
}

function toggleCollapsible (t) {
  if (t.className == 'toggle-collapse') {
    $(t).parent().next().slideToggle('fast');
    t.className='toggle-expand';
  } else {
    $(t).parent().next().slideToggle('fast');
    t.className='toggle-collapse';
  }
}

function addToMenu(t,c) {
  t = t.search('<a') < 0 ? '<a class="no-href">'+t+'</a>' : t;
  var txt = '<li class="has-sub last-child" onmouseover="hideads()" onmouseout="restoreads()">'+t;
  if (c) {
    txt += '<div><em></em><var></var><strong></strong><ul>';
    for (var i=0; i < c.length; i++) {
      c[i] = c[i].search('<a') < 0 ? '<a class="no-href">'+c[i]+'</a>' : c[i];
      txt += '<li>'+c[i]+'</li>';
    }
    txt += '</ul></div>';
  }
  txt += '</li>';
  $('#menu_horiz > li:last-child').removeClass('last-child');
  $('#menu_horiz').append(txt);
  $('#menu_horiz > li:last-child li:first-child').addClass('first-child');
  $('#menu_horiz > li:last-child li:last-child').addClass('last-child');
}

function notifybodymargin() {
  document.getElementsByTagName("body")[0].style.marginTop = ge("notifications").offsetHeight + 'px';
}

function deletenote(el) {
  var e = el;
  while (e.parentNode.id != 'notifications') {
    e = e.parentNode;
  }
  e.parentNode.removeChild(e);
  notifybodymargin();
}

function toggleRecentVisitors() {
  if (ge('who_recent').style.display == 'none') {
    ge('who_recent').style.display = 'inline';
    var mrv=ge('msgRecentVisitors-collapsed');
    mrv.style.cssFloat='none';
    mrv.style.styleFloat='none';
    mrv.style.margin='0 0 10px 0';
    mrv.className='mform';
    mrv.id='msgRecentVisitors';
  } else {
    ge('who_recent').style.display = 'none';
    var mrv=ge('msgRecentVisitors');
    mrv.style.cssFloat='right';
    mrv.style.styleFloat='right';
    mrv.style.margin='0 0 0 10px';
    mrv.className='';
    mrv.id='msgRecentVisitors-collapsed';
  }
}

function menuCollapse(t) {
  var hide = 1;
  t = t.parentNode;
  if (t.className.search('collapse') > -1) {
    t.className = t.className.replace(/\b ?collapse\b/, '');
    hide = 0;
  } else {
    t.className += ' collapse';
  }
  var lis = ge('menu_vert').getElementsByTagName('li');
  for (var i=0; i<lis.length; i++) {
    if (t == lis[i]) {
      saveNewMenu(i,hide);
    }
  }
}

var hideMenu = 0;
function menuToggle(a) {
  if (ge('mctl').innerHTML != 'Show Menu' || a == "hide") {
    document.getElementsByTagName('body')[0].className += ' hideMenu';
    ge('mctl').innerHTML = 'Show Menu';
    hideMenu = 1;
  } else {
    var body = document.getElementsByTagName('body')[0];
    body.className = body.className.replace(/\b ?hideMenu\b/, '');
    ge('mctl').innerHTML = 'Hide Menu';
    hideMenu = 0;
  }
  saveNewMenu(-1,hideMenu);
}

function saveNewMenu (index,value) {
  var menu = readCookie("vertMenuState");
  var opts = menu.split(',');
  var kp = new Array;
  kp[0] = index +":" + value;
  for (var i=0;i < opts.length; i++) {
    var nv = opts[i].split(':');
    if (nv[0] && nv[0] != index) {
      kp.push(opts[i]);
    }
  }
  createCookie("vertMenuState",kp.join(','),300);
}

function doMenu () {
  var menu = readCookie("vertMenuState").split(',');
  var lis = ge('menu_vert').getElementsByTagName('li');
  for (var i=0;i < menu.length; i++) {
    var nv = menu[i].split(':');
    if (nv[0] == -1) {
      if (nv[1] == 1) {
        hideMenu = 1;
        menuToggle('hide');
      }
    } else if (nv[1] == 1) {
      lis[nv[0]].className += ' collapse';
    }
  } 
}

function standardNav() {
  $('#menu_tabbed > li.has-sub > a').click(function () {standardNavClick(this.parentNode);return false});
  $('#menu_tabbed > li.has-sub').removeClass('has-sub');
  $('#menu_tabbed > li > div > ul > li.has-sub').hover(hideads, restoreads);

  $('#menu_tabbed > li > div > em').remove();
  $('#menu_tabbed > li > div > var').remove();
  $('#menu_tabbed > li > div > strong').remove();

  $('#network').hover(hideads, restoreads);
}

function standardNavClick(e) {
  if (e.className.search('cur') < 0) {
    $('#menu_tabbed > li').removeClass('cur');
    e.className += ' cur';
  } else if (e.childNodes[0].href) {
    location.href = e.childNodes[0].href;
  }
}

function standardHeightCheck(goal,p) {
  var col = ge('col-right');
  if (col) {
    var main = ge('col-main');
    if (col.offsetHeight > main.offsetHeight) {
      main.style.minHeight = col.offsetHeight+'px';
    }
  }

  var b = document.body;
  var m = b.style.marginTop.replace('px','');
  var h = 0;
  if (typeof(window.innerHeight) == 'number') { //Non-IE
    h = window.innerHeight;
  } else if (document.documentElement && document.documentElement.clientHeight) { //IE
    h = document.documentElement.clientHeight;
  }
  if (b.offsetHeight + p < goal && b.offsetHeight + p < h) {
    b.style.minHeight = (h > goal + p + m ? goal : h - p - m)+'px';
  } else if (b.offsetHeight + p > goal && b.offsetHeight + p < h) {
    b.style.minHeight = (goal - p) + 'px';
  } else {
    b.style.minHeight = 'auto';
  }
}

function heightCheck() {
  document.body.style.minHeight='';
  standardHeightCheck(0,0);
}

function warnIE() {
  document.write('<div id="warn-ie"><b>Warning:</b> We are dropping support for your browser (IE6). Please upgrade to a modern browser such as <a href="http://www.getfirefox.com/" target="_blank">Firefox</a> or <a href="http://www.google.com/chrome" target="_blank">Google Chrome</a>.</div>');
}

function setupFeedPreview () {
  var t = ge('featured_title');
  var d = ge('featured_desc');
  t.onkeydown = feedPreview;
  t.onkeyup = feedPreview;
  d.onkeydown = feedPreview;
  d.onkeyup = feedPreview;
  feedPreview();
}

function feedPreview() {
  var t = ge('featured_title').value;
  var d = ge('featured_desc').value;
  var p = ge('news-feed-recent');
  if (t && d) {
    p.className = '';
    p.innerHTML = '<ul><li><b><a href="javascript:;">'+t+'</a></b>'+d+'</li></ul>';
  } else {
    p.className = 'inactive';
    p.innerHTML = '';
  }
}
