function setOpacity(name, opacity) {
    var obj = document[name].style;
    obj.opacity = opacity;
    obj.MozOpacity = opacity;
    obj.KhtmlOpacity = opacity;
    obj.filter = "alpha(opacity=" + opacity*100 + ")";
}

function changeImg(name, url) {
    setOpacity(name, 0.3);
    document[name].src=url;
}

function restoreImg(name) {
    window.setTimeout('setOpacity(\''+name+'\', 1.0);', 50);
}

function hideAndShow(toHide, toShow)
{
    if(!document.getElementById) return true;

    document.getElementById(toHide).style.display="none";
    document.getElementById(toShow).style.display="";

    return false;
}

function show(toShow)
{
    if(!document.getElementById) return true;

    document.getElementById(toShow).style.display="";

    return false;
}

function hideAndShowAllClass(classToHide, classToShow)
{
    if(!document.getElementsByTagName) return true;

    var x = document.getElementsByTagName('span');
    for (var i=0;i<x.length;i++)
    {
	if (x[i].className == classToShow)
		x[i].style.display='';
	else if (x[i].className == classToHide)
		x[i].style.display='none';
    }

    return false;
}

function submitOnEnter(field, e)
{
    var keycode;
    if(window.event)
        keycode = window.event.keyCode;
    else if(e)
        keycode = e.which;
    else
        return true;

    if(keycode == 13) {
        field.form.submit();
        return false;
    } else {
        return true;
    }
}

var http_request = false;

function makeRequest(url) {

    http_request = false;
    
    if (window.XMLHttpRequest) { // Mozilla, Safari
	http_request = new XMLHttpRequest();
	if (http_request.overrideMimeType) {
	    http_request.overrideMimeType('text/xml');
	}
    } else if (window.ActiveXObject) { // IE
	try {
	    http_request = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	    try {
		http_request = new ActiveXObject("Microsoft.XMLHTTP");
	    } catch (e) {}
	}
    }
    
    if (!http_request) {
	alert('Giving up :( Cannot create an XMLHTTP instance');
	return false;
    }
    http_request.onreadystatechange = handleRequest;
    http_request.open('GET', url, true);
    http_request.send(null);
}

var commentfile = '';

function handleRequest() {
    if (http_request.readyState == 4) {
	if (http_request.status == 200) {
	    var xmlRes = http_request.responseXML;
	    var commentBody = xmlRes.getElementsByTagName('comment').item(0);
	    var idfld = xmlRes.getElementsByTagName('id').item(0);
	    elem = document.getElementById("comment" + idfld.firstChild.data);
	    elem.innerHTML = "<span ondblclick=\"changeComment("
		+ idfld.firstChild.data + ",this,\'" + commentfile
		+ "\');\" class=\"comment\">"
		+ commentBody.firstChild.data;
	} else {
	    alert('There was a problem saving the comment: '
		  + http_request.status);
	}
    }
}

function changeComment(nn,actual,commentloc) {
    commentfile = commentloc;
    elem = document.getElementById("comment" + nn);
    elem.innerHTML = "<textarea rows=\"4\" cols=\"80\" onblur=\"return saveBlur(this," + nn + ")\" >" + actual.innerHTML + "</textarea>";
    elem.firstChild.focus();
}

var urlBase = "/cgi-bin/save.pl?coded=";

function saveBlur(field, idfld) {
    // save and stop editing
    if (field.value!="") {
	field.value = field.value.replace("/\|/","");
	elem = document.getElementById("comment" + idfld);
	makeRequest(urlBase + escape("comment|" + idfld + "|"
				     + field.value + "|" + commentfile));
	elem.innerHTML = "<span ondblclick=\"changeComment(" + idfld
	    + ",this,\'" + commentfile + "\');\" class=\"comment\">" + field.value
	    + "</span><p id=progress" + idfld + ">Comment being saved...</p>";
	return false;
    } else {
	elem = document.getElementById("comment" + idfld);
	elem.innerHTML = "<span ondblclick=\"changeComment(" + idfld
	    + ",this,\'" + commentfile + "\');\" class=\"comment\"> I can't save nothing!</span><p id=progress>I can't save!</p>";
	return false;
    }
}

window.onload=function(){
  Nifty("div.porn");
  Nifty("div.comments");
  Nifty("div.traceback");
  Nifty("div.menu");
}
