function ajax_start()
{
		var XMLHttpRequestObject = false; 
		if (window.XMLHttpRequest)
		{
			XMLHttpRequestObject = new XMLHttpRequest();
		}
		else if (window.ActiveXObject)
		{
			XMLHttpRequestObject = new ActiveXObject('Microsoft.XMLHTTP');
		}	
		return XMLHttpRequestObject;
}
function display_ajax_html(page, args, div_id, XMLHttpRequestObject, callback, callback_args, args2)
{
	if(XMLHttpRequestObject)
	{
		var params = args;

		XMLHttpRequestObject.open('POST', '/ajax.php?do='+page, true); 
		XMLHttpRequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		XMLHttpRequestObject.onreadystatechange = function() 
			{ 
				if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
					{ 
						if(callback)
							callback(XMLHttpRequestObject.responseText, callback_args, args2);
						else
							document.getElementById(div_id).innerHTML = XMLHttpRequestObject.responseText;

					} 
			} 
		XMLHttpRequestObject.send(params); 
	}
}
function post_comment(eid, type)
{
	if(!type)
		type = 'exchange';
	//Post it
	document.getElementById('comment_submit').innerHTML = 'loading...';
	XMLHttpRequestObject = ajax_start();
	var comment = urlEncode(document.getElementById('new_comment').value);
	display_ajax_html('post_comment', '&comment='+comment+'&eid='+eid+'&type='+type, '', XMLHttpRequestObject, add_comment, eid);	
}
function add_comment(json, id)
{
	var parent = document.getElementById('comments');
	//Parse the json
	var json_array = eval('(' + json + ')');
	if(json_array['success'])
	{
		//Add the new comment to top
		document.getElementById('comments').innerHTML = json_array['message'] + document.getElementById('comments').innerHTML;
		//Highlight it
		var cid = json_array['cid'];
		$("#new_comment_"+cid).effect("highlight", {}, 2000);
	}
	else
	{
		//Error, output it
		document.getElementById('post_comment').innerHTML = json_array['error'] + document.getElementById('post_comment').innerHTML;
	}
	//Get rid of loading msg
	document.getElementById('comment_submit').innerHTML = "<input type='submit' value='Add' onclick='post_comment("+id+");'/>";
}
function verify_site(site, old)
{
	document.getElementById('verify').innerHTML = 'loading...';
	XMLHttpRequestObject = ajax_start();
	if(!old)
		display_ajax_html('verify_site', '&key='+site, '', XMLHttpRequestObject, show_verify);		
	else
		display_ajax_html('verify_old_site', '&key='+site, '', XMLHttpRequestObject, show_verify);				
}
function show_verify(json)
{
	document.getElementById('verify').innerHTML = json;
}
function new_promo(id)
{
	//Add a new promotion for exchanges
	document.getElementById('submit').innerHTML = 'loading...';
	XMLHttpRequestObject = ajax_start();
	//Encode it all
	var text = urlEncode(document.getElementById('text').value);
	var start = urlEncode(document.getElementById('start').value+document.getElementById('start_time').value);
	var end = urlEncode(document.getElementById('end').value+document.getElementById('end_time').value);
	display_ajax_html('new_promo', '&text='+text+'&start='+start+'&end='+end+'&id='+id, '', XMLHttpRequestObject, promo_callback, id);		
}
function promo_callback(json, id)
{
	//decode json
	var json_array = eval('(' + json + ')');
	if(json_array['success'])
	{
		//success
		$("#add_new").hide();
		//Add new row
		insert_row(json);
		$("#new_button").show();
	}
	else
	{
		//error
		for(var i in json_array)
		{
			document.getElementById(i+'_message').innerHTML = json_array[i];
		}
	}
	//Change load link back
	document.getElementById('submit').innerHTML = "<input type='submit' value='Add' onclick=\"new_promo("+id+");\"/> <a href='javascript:void(0);' onclick='$(\"#add_new\").hide();'>Cancel</a>";
}
function delete_promo(eid, id)
{
	document.getElementById('delete_'+id).innerHTML = 'loading...';
	var ans = confirm("Are you sure you want to delete this promo?");
	if(ans)
	{
		XMLHttpRequestObject = ajax_start();
		display_ajax_html('delete_promo', '&id='+id+'&eid='+eid, '', XMLHttpRequestObject, removeRow, id);	
	}
	else
	{
		document.getElementById('delete_'+id).innerHTML = "<a href='javascript:void(0)' onclick='delete_promo("+eid+", "+id+");'>Delete</a>";
	}
}
function urlEncode(str)
{
	return str.replace("&", "%26");
}
function insert_row(json)
{	
	var table = document.getElementById('tbody');
    var row = document.createElement("tr");

	var json_array = eval('(' + json + ')');	
	for(var i in json_array)
	{
		if(i != 'id' && i != 'success')
		{
			//Create tds
			var td = document.createElement("td");
			td.id = i;
	     	row.appendChild(td);
	     	var index = i;
     	}
	}
    
	row.id = 'new_row_'+json_array['id'];

    
    table.insertBefore(row, table.firstChild);
    //Update tds
	for(var i in json_array)
	{
		if(i != 'success' && i != 'id')
		{
    		document.getElementById(i).innerHTML = json_array[i];
    		//Highlight
    		$("#"+i).effect('highlight', {}, 2000);
		}
    }
}
function removeRow(json, id) 
{
	var json_array = eval('(' + json + ')');
	var id = json_array['id'];

	var tr = document.getElementById(id);
	if (tr) 
	{
		if (tr.nodeName == 'TR') 
		{
			var tbl = tr; // Look up the hierarchy for TABLE
			while (tbl != document && tbl.nodeName != 'TBODY')
			{
				tbl = tbl.parentNode;
			}
			if (tbl && tbl.nodeName == 'TBODY') 
			{
				while (tr.hasChildNodes()) 
				{
					tr.removeChild( tr.lastChild );
				}
			var Parent = tr.parentNode;
			tr.parentNode.removeChild( tr );
			}
			//Insert filler if none left
			if(id != 'filler')
			{
				nodeNum = Parent.childNodes.length; 
				if(nodeNum == 2)
				{
					//var text = "You don't have any promos.";
					//insert_filler(Parent.id, text);
				}
			}
	    } 
	    else 
	    {
	 		//alert( 'Specified document element is not a TR. id=' + id );
	    }
	} 
	else 
	{
		//alert( 'Specified document element is not found. id=' + id );
	}
}