var req;
var timeoutz;
var blinker;

function do_request(url,post) {
    //alert('A POST!');
	clearTimeout(timeoutz);
    //if (req) req.abort();
//    req = false;

    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest) {
    	try {
			req = new XMLHttpRequest();
            //alert("You've got W3C");
        } catch(e) {
			req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }

	if(req) {
		req.open("POST", url, true);
        req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        req.onreadystatechange = processReqChange;
		req.send(post);
        
        timeoutz = setTimeout('add_error()',5000);
        blinker = setInterval('blink()', 500);
	}
}

function processReqChange()
{
    if (req.readyState == 4)
    {
        /*alert("Stuff:\n" + req.status + "\n" +
                req.getAllResponseHeaders() + "\n" + req.responseText);*/
        if (req.status == 200)
        {
            try{
                name = req.getResponseHeader('X-Rantboard-Name');
                post = req.getResponseHeader('X-Rantboard-Post');
            }
            catch (ex)
            {
                add_error();
                return;
            }
            clearForm();
            addEntry(name, post);
            
        }
        else if (req.status == 500)
        {
            add_error();
        }
        else if(req.status == 403)
        {
            clearInterval(blinker);
            clearTimeout(timeoutz);
            req.onreadystatechange = function(){};
            clearForm();
            alert('Sorry, you can only post four consecutive messages');
        }
        else
        {
            clearInterval(blinker);
            clearTimeout(timeoutz);
            req.onreadystatechange = function(){};
        }        
    }
}

function add_error()
{
    addEntry('Error', 'There was a problem posting');
    req.abort();
    req.onreadystatechange = function(){};
    window.location.reload( true );
}

function addEntry(name, post)
{
    clearInterval(blinker);
    clearTimeout(timeoutz);
    
    rantboardy = document.getElementById("rantboard");
    domEntry = document.createElement('div');
    domEntry.className = 'entry';

    domName = document.createElement('h3');
    domName.appendChild(document.createTextNode(name));
    domPost = document.createElement('p');
    domPost.appendChild(document.createTextNode(post));

    domEntry.appendChild(domName);
    domEntry.appendChild(domPost);

    rantboardy.insertBefore(domEntry, rantboardy.getElementsByTagName('form')[0]);

    d = rantboardy.getElementsByTagName('div');
    if (d.length > 8) rantboardy.removeChild(d[0]);
    
    rantboardy.getElementsByTagName('form')[0].style.borderStyle = 'dashed';
    
}

function postrant()
{
    name = document.getElementById('rant_title').value;
    post = document.getElementById('rant').value;
    
    if (typeof(name)!= undefined && typeof(post) != 'undefined' && name != '' && post != '')
        do_request('ignite/rantboard/post.php', "name=" + name + "&rant=" + post);
 
    return false;
}

function clearForm()
{
    try{
        document.getElementById('rant').value = '';
    }
    catch (ex) {}
}

function blink()
{
    frm = document.getElementById('rantboard').getElementsByTagName('form')[0];
    if (frm.style.borderStyleBottom == 'solid' || frm.style.borderStyle == 'solid solid solid solid') frm.style.borderStyle = 'dashed';
    else frm.style.borderStyle = 'solid';
}
