/* -*- java -*-
/* <!-- compression status: disabled --> (this is for http compression) */
/*




*/
var $ = function(ID) { 
  var item = document.getElementById(ID); 
  if (arguments == 2)
  	item = item.getElementsByTagName(arguments[1]);
  return item;
}

function openLogsPopup(url, width, height) {
  window.open(url,'_blank', 'toolbar=0,location=0,directories=0,menubar=0,status=0,scrollbars=1,width='+width+',height='+height+'\'');
}

function sendMessageOnKeyPress(e, url, field) {
  e = e || window.event;
  if (13 == (e.which ? e.which : e.keyCode)) {
  	sendNewMessage(url, field);
  	return false;
  }
}

function getXmlHttpRequest(ajaxobject) {
  var ajaxobject = null;
  if ( window.XMLHttpRequest ) {
    // Objet XmlHttpRequest pour les moteurs GECKO
    ajaxobject = new XMLHttpRequest();
  } else if ( window.ActiveXObject ) {
    // Objet XmlHttpRequest pour Internet Explorer
    ajaxobject = new ActiveXObject('Microsoft.XMLHTTP');
  } else {
    // Navigateur non-compatible
    ajaxobject = null;
  }
  return ajaxobject
}
 
timeout = null;
var refreshChat = function(xhReq) {
    var data = xhReq.responseText.split("\t");

    if (onlyUpdate) {
      	userList.innerHTML = data[0]; 
    		msgList.innerHTML += data[1];
  } else {
    		userList.innerHTML = data[0]; 
      	msgList.innerHTML = data[1];
  }
}
function ajaxStateChange(xhReq) {
  if ((xhReq.readyState != 4) || (xhReq.status > 299 || xhReq.status < 200) || (editing && !onlyUpdate))
        	return false;
  
    	var go_scroll = null;
  	total_height = msgList.scrollTop + chat_height + 50;
    	if ((total_height > msgList.scrollHeight) || !timeout)
        	go_scroll = true;
  
    	refreshChat(xhReq); 	
  
    	// scroll to bottom only if user is not scrolling higher in window
    	if (go_scroll != null) 
    		msgList.scrollTop = msgList.scrollHeight;
}
function updateChat() {
    var xhReq = getXmlHttpRequest();

    if (msgList.lastChild)
      lastID = msgList.lastChild.id;   
    window.status = ajax_url + (onlyUpdate ? "?lastID=" + lastID : "");
    xhReq.open('GET', ajax_url + (onlyUpdate ? "?lastID=" + lastID : ""), true);    
    xhReq.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    xhReq.onreadystatechange = function() { ajaxStateChange(xhReq); };
    xhReq.send(null);
    timeout = setTimeout( function() { updateChat(); }, interval); 
}
 
function sendNewMessage(url, field) {
    var query = 'messageToSend=' + encodeURIComponent(field.value);
    try {
      field.value = '';
    	field.focus();
  } catch (e) {}
    ajaxobject = getXmlHttpRequest();
    ajaxobject.open('POST', url, false);
    // set request headers
    ajaxobject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    ajaxobject.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    // send message
    ajaxobject.send(query);
    editing = false;
    updateChat();
}

editing = false;
function editMessage(e) {
  editing = true;
  e = e || window.event;
  target = e.target || e.srcElement;
  if (target.type == "checkbox") {
  	editing = true;
  	return;
  }
  if (target.id == "chat-window") return;	
  if (target.parentNode.firstChild.nodeName == "LABEL")
  	target = target.parentNode;
  if (target.firstChild.nodeName != "LABEL")
  	return;

  	chkbox = target.getElementsByTagName("INPUT")[0];
  	chkbox.checked = true;
  	input = document.createElement("TEXTAREA");
  	input.appendChild(document.createTextNode(target.lastChild.data));
  	if (target.nextSibling)
  		target.parentNode.insertBefore(input, target.nextSibling);
  	else
  		target.parentNode.appendChild(input);
  	input.onblur = function() {
  		chkbox.value = input.value;
  		target.lastChild.data = input.value;
  		target.parentNode.removeChild(input);
  	}
  	input.focus();
}
function toggleCheckbox(e) {
  e = e || window.event;
  target = e.target || e.srcElement;
  if (target.type != "checkbox")
  	return;
  editing = true;
  target.value = target.parentNode.lastChild.data;	
}
 
function getSelectedItems(item) {
    //item is expected to be 'moderation-listing'
    var request = '';
    item = document.getElementById(item);
    input_childs = item.getElementsByTagName('input');
    for (i=0;i<input_childs.length;i++) {
        input = input_childs[i];
        if (input.checked) {
       	request += 'messages.id:records=' + encodeURIComponent(input.name) + '&';        
  	    request += 'messages.content:records=' + encodeURIComponent(input.value) + '&';
  	}
    }
    return request;
}

function simpleAjaxRequest(url) {
    var ajaxobject = getXmlHttpRequest();
    ajaxobject.open('GET', url, false);
    // set request headers
    ajaxobject.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    //
    ajaxobject.send(null);
    editing = false;
    updateChat();
}

function simplePostRequest(url, query) {
    var ajaxobject = getXmlHttpRequest();
    ajaxobject.open('POST', url, false);
    // set request headers
    ajaxobject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    ajaxobject.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    //
    ajaxobject.send(query);
    editing = false;
    updateChat();
}

function logout(url) {
    var xhReq = getXmlHttpRequest();
    xhReq.open('GET', url, true);
    xhReq.send(null);
}
