var xmlhttp = null;
var inuse = 0;

function getTransport() {
  if (inuse) return false;
  inuse = 1;
  if (xmlhttp) return xmlhttp;

  try {
    xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
    return xmlhttp;
  } catch (e) {
    xmlhttp = null;
  }

  try {
    xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    return xmlhttp;
  } catch (e) {
    xmlhttp = null;
  }

  try {
    xmlhttp = new XMLHttpRequest();
    return xmlhttp;
  } catch (e) {
    xmlhttp = null;
  }

  inuse = 0;
  return false;
}

function releaseTransport() {
  inuse = 0;
}

function callURL(url, callback) {
    var transport = getTransport();

    if (transport) {
        transport.open("GET",url,true);
        transport.onreadystatechange = function() {
            if (transport.readyState == 4) {
                var text = transport.responseText;
                eval(callback + '(text)');
                releaseTransport();
            }
        }
        transport.send('');
        return true;
    } else {
        return false;
    }
}

var current_hilight = null;

function hilightRow(row_id) {
    if (current_hilight) {
        document.getElementById(current_hilight).style.backgroundColor = '';
    }

    if (row_id) {
        document.getElementById(row_id).style.backgroundColor = '#EEF';
    }

    current_hilight = row_id;
}

function showBuddies() {
    var address_book = document.getElementById('address-book');
    var addr_button = document.getElementById('addrbtn');
    address_book.style.display='block';
    document.msgform.to_username.focus();
    return false;
}

function hideBuddies() {
    var address_book = document.getElementById('address-book');
    address_book.style.display='none';
    return false;
}
    
function setBuddy(buddy) {
    document.msgform.to_username.value = buddy;
    hideBuddies();
    document.msgform.subject.focus();
    return false;
}

function swap_image(image, filename) {
    image.src = '/Images/' + filename;
}

function afterVote(responseText) {
    var msg_id = parseInt(responseText);
    var loading = document.getElementById('msg-' + msg_id + '-saving');
    loading.src = blank.src;
}

var plus_hilight = new Image();
var plus_normal = new Image();
var minus_hilight = new Image();
var minus_normal = new Image();
var active = new Image();
var blank = new Image();

function fetchImages() {
    plus_hilight.src = '/Images/plus_hilight.gif';
    plus_normal.src = '/Images/plus_gray.gif';
    minus_hilight.src = '/Images/minus_hilight.gif';
    minus_normal.src = '/Images/minus_gray.gif';
    active.src = '/Images/loading.gif';
    blank.src = '/Images/spacer.gif';
}

function vote(message_id, vote) {
    var url = '/forum.py?action=vote&msg_id=' + message_id + '&vote=' + vote;
    var loading = document.getElementById('msg-' + message_id + '-saving');

    if (loading.src != active.src) {
        loading.src = active.src;
    }

    if (!callURL(url,'afterVote')) {
        window.setTimeout("vote(" + message_id + "," + vote + ")", 300);
    }
   
    var plus = document.getElementById('msg-' + message_id + '-plus');
    var minus = document.getElementById('msg-' + message_id + '-minus');

    plus.onclick = function(){};
    plus.onmouseover = function(){};
    plus.onmouseout = function(){};
    plus.style.cursor = 'default';

    minus.onclick = function(){};
    minus.onmouseover = function(){};
    minus.onmouseout = function(){};
    minus.style.cursor = 'default';
    
    if (vote > 0) {
        plus.src = plus_hilight.src;
        minus.src = minus_normal.src;
    } else {
        plus.src = plus_normal.src;
        minus.src = minus_hilight.src;
    }
}

function showMessage(message_id) {
    $('msg-hide-box-' + message_id).hide();
    new Effect.Appear('msg-body-box-' + message_id);
}

