

var requester = null;
var spinner_element = null;
var delete_url = '';
var delete_children = '';

function deleteClicked(url, entry_type, del_children, spinner_id)
{
	// Store the parameters
	delete_url = url;
	delete_children = del_children;

	// Display the confirmation dialog box
	var promptText = 'Are you sure you want to delete this ' + entry_type + '?';
	displayDialog(promptText, 400, 60, true, 'doDelete();', true, '');

	// Dont follow the link
	return false;
}

function doDelete() 
{
	// Check for running connections
	if (requester != null && requester.readyState != 0 && requester.readyState != 4)
	{
		requester.abort();
	}

	try 
	{
		requester = new XMLHttpRequest();
	}

	catch (error) 
	{
		try
		{
			requester = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (error)
		{
			requester = null;
			return false;
		}
	}

	// Set up the callback
	requester.onreadystatechange = requesterReadyStateChange;

	// Open the request
	requester.open("POST", delete_url, true);

	// POSTed parameters
	var params = "caller=ajax_delete&delete_children=" + delete_children;

	// Make sure we send the proper header information along with the request
	requester.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	requester.setRequestHeader("Content-length", params.length);
	requester.setRequestHeader("Connection", "close");

	// Send the request
	requester.send(params);

	return true;
}

function requesterReadyStateChange() 
{ 
	// If XMLHR object has finished retrieving the data
	if (requester.readyState == 4)
	{
		// If the data was retrieved successfully
		if (requester.status == 200) 
		{
			displayDialog(requester.responseText, 400, 60, true, 'window.location.reload();', false, '');
		}
		// IE returns a status code of 0 on some occasions, so ignore this case
		else if (requester.status != 0)
		{
			alert("There was an error while retrieving the URL: " + requester.statusText); 
		}

		// Hide the spinner
		if(spinner_element)
		{
			spinner_element.style.display = 'none';
		}
	}

	return true;
}

function displayDialog(text, width, height, okButton, okButtonCallback, cancelButton, cancelButtonCallback)
{
	// Get the document body tag
	var oBody = document.getElementsByTagName('body')[0];

	// Delete any previously used dialog box
	var oldDialog = document.getElementById('box');
	if(oldDialog)
	{
		oldDialog.innerHTML = '';
		oBody.removeChild(oldDialog);
	}

	// Insert the dialog box into the body if not already present

		// Create a div 
		var oOuterDiv = document.createElement('div');
		oOuterDiv.setAttribute('id', 'box');
		oOuterDiv.setAttribute('class', 'dialog');
		oOuterDiv.style.display = 'none';

			// Create another div inside
			var oInnerDiv = document.createElement('div');
			oInnerDiv.style.textAlign = 'right';
			oInnerDiv.style.backgroundImage = 'url(\'/_images/assets/warning.png\')';
			oInnerDiv.style.backgroundPosition = 'left center';
			oInnerDiv.style.backgroundRepeat = 'no-repeat';
			oOuterDiv.appendChild(oInnerDiv);

				// Create a span inside that
				var oSpan = document.createElement('span');
				oSpan.setAttribute('id', 'txt');
				oSpan.innerHTML = text;
				oInnerDiv.appendChild(oSpan);

				// Followed by a few breaks
				oInnerDiv.appendChild(document.createElement('br'));
				oInnerDiv.appendChild(document.createElement('br'));

				// Create another span to contain the buttons
				oSpan = document.createElement('span');

					if(okButton)
					{
						// Followed by an OK button
						var oOKButton = document.createElement('button');
						oOKButton.setAttribute('onclick', 'hm(\'box\');' + okButtonCallback);
						oOKButton.style.marginRight = '10px';
						oOKButton.style.width = '80px';
						oOKButton.innerHTML = 'OK';
						oSpan.appendChild(oOKButton);
					}

					if(cancelButton)
					{
						// Followed by a Cancel button
						var oCancelButton = document.createElement('button');
						oCancelButton.setAttribute('onclick', 'hm(\'box\');' + cancelButtonCallback);
						oCancelButton.style.width = '80px';
						oCancelButton.innerHTML = 'Cancel';
						oSpan.appendChild(oCancelButton);
					}

				oInnerDiv.appendChild(oSpan);

		// Add the whole lot into the body
		oBody.appendChild(oOuterDiv);

	// Display the dialog
	sm('box', width, height);
}

// Modal Dialog Box
// copyright 8th July 2006 by Stephen Chapman
// http://javascript.about.com/
// permission to use this Javascript on your web page is granted
// provided that all of the code in this script (including these
// comments) is used without any alteration
function pageWidth()
{
	return window.innerWidth != null? window.innerWidth: document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth:document.body != null? document.body.clientWidth:null;
}

function pageHeight()
{
	return window.innerHeight != null? window.innerHeight: document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight:document.body != null? document.body.clientHeight:null;
}

function posLeft()
{
	return typeof window.pageXOffset != 'undefined' ? window.pageXOffset:document.documentElement && document.documentElement.scrollLeft? document.documentElement.scrollLeft:document.body.scrollLeft? document.body.scrollLeft:0;
}

function posTop()
{
	return typeof window.pageYOffset != 'undefined' ? window.pageYOffset:document.documentElement && document.documentElement.scrollTop? document.documentElement.scrollTop: document.body.scrollTop?document.body.scrollTop:0;
}

function $(x)
{
	return document.getElementById(x);
}

function scrollFix()
{
	var obol=$('ol');
	obol.style.top=posTop()+'px';
	obol.style.left=posLeft()+'px';
}

function sizeFix()
{
	var obol=$('ol');
	obol.style.height=pageHeight()+'px';
	obol.style.width=pageWidth()+'px';
}

function kp(e)
{
	ky=e?e.which:event.keyCode;
	if(ky==88||ky==120) hm();
	return false;
}

function inf(h)
{
	tag=document.getElementsByTagName('select');
	for(i=tag.length-1;i>=0;i--)tag[i].style.visibility=h;

	tag=document.getElementsByTagName('iframe');
	for(i=tag.length-1;i>=0;i--)tag[i].style.visibility=h;

	tag=document.getElementsByTagName('object');
	for(i=tag.length-1;i>=0;i--)tag[i].style.visibility=h;
}

function sm(obl, wd, ht)
{
	var h='hidden';
	var b='block';
	var p='px';
	var obol=$('ol');

	var obbxd = $('mbd');
	obbxd.innerHTML = $(obl).innerHTML;

	obol.style.height=pageHeight()+p;
	obol.style.width=pageWidth()+p;
	obol.style.top=posTop()+p;
	obol.style.left=posLeft()+p;
	obol.style.display=b;

	var tp=posTop()+((pageHeight()-ht)/2)-12;
	var lt=posLeft()+((pageWidth()-wd)/2)-12;

	var obbx=$('mbox');
	obbx.style.top=(tp<0?0:tp)+p;
	obbx.style.left=(lt<0?0:lt)+p;
	obbx.style.width=wd+p;
	obbx.style.height=ht+p;
	inf(h);
	obbx.style.display=b;

	return false;
}

function hm()
{
	var v='visible';
	var n='none';

	$('ol').style.display=n;
	$('mbox').style.display=n;
	inf(v);
	document.onkeypress='';
}

function initmb()
{
	var ab='absolute';
	var n='none';
	var obody=document.getElementsByTagName('body')[0];
	var frag=document.createDocumentFragment();

	var obol=document.createElement('div');
	obol.setAttribute('id','ol');
	obol.style.display=n;
	obol.style.position=ab;
	obol.style.top=0;
	obol.style.left=0;
	obol.style.zIndex=998;
	obol.style.width='100%';
	frag.appendChild(obol);

	var obbx=document.createElement('div');
	obbx.setAttribute('id','mbox');
	obbx.style.display=n;
	obbx.style.position=ab;
	obbx.style.zIndex=999;

	var obl=document.createElement('span');
	obbx.appendChild(obl);

	var obbxd=document.createElement('div');
	obbxd.setAttribute('id','mbd');
	obl.appendChild(obbxd);

	frag.insertBefore(obbx,obol.nextSibling);

	obody.insertBefore(frag,obody.firstChild);

	window.onscroll = scrollFix;
	window.onresize = sizeFix;
}

window.onload = initmb;
