var ModalDialogWindow;
var ModalDialogInterval;
var ModalDialog = new Object;

ModalDialog.value = '';
ModalDialog.eventhandler = '';

function refresh_page()
{
	document.location.replace(document.location.href);
}

function ModalDialogMaintainFocus()
{
	try
	{
		if (ModalDialogWindow.closed)
		{
			window.clearInterval(ModalDialogInterval);
			eval(ModalDialog.eventhandler);
			return;
		}

//			ModalDialogWindow.focus();
	}
	catch (everything)
	{

	}
}

function ModalDialogRemoveWatch()
{
	ModalDialog.value = '';
	ModalDialog.eventhandler = '';
}

function ModalDialogShow(page_to_show, do_refresh)
{
	var do_refresh = (do_refresh == null) ? true : do_refresh;

	ModalDialogRemoveWatch();

	if(do_refresh === true)
	{
		ModalDialog.eventhandler = "refresh_page()";
	}

	var args='width=800,height=610,left=325,top=300,toolbar=0,';
	args += 'location=0,status=0,menubar=0,scrollbars=1,resizable=0'; 

	ModalDialogWindow=window.open("","",args);
	ModalDialogWindow.document.open('');
	ModalDialogWindow.document.location = page_to_show;
	ModalDialogWindow.document.close();
	ModalDialogWindow.focus();
	ModalDialogInterval = window.setInterval("ModalDialogMaintainFocus()", 5);
}











/*
 * Original from: http://brainerror.net/scripts/javascript/blendtrans/demo.html
 *
 * Edits by ASC:
 *   - Removed unnecessary OO code that caused MSIE to choke
 *   - Added pause between setting bg image and setting opacity to zero to
 *     prevent MSIE image flash
 *   - Increased opacity check argument to 103 for completely smooth fade
 *
 */

//find next image
function nextImage(o) {
    do o = o.nextSibling;
    while(o && o.tagName != 'IMG');
    return o;
}

//find first image inside an element
function firstChildImage(o) {
    
    o = o.firstChild;
        
    while(o && o.tagName != 'IMG') {
        o = o.nextSibling;
    }
    
    return o;
}

//set the opacity of an element to a specified value
function setOpacity(obj, o) {

    obj.style.opacity = (o / 100);
    obj.style.MozOpacity = (o / 100);
    obj.style.KhtmlOpacity = (o / 100);
    obj.style.filter = 'alpha(opacity=' + o + ')';
}

//make image invisible and set next one as current image
function getNextImage(image) {
	
    if (next = nextImage(image)) {
	image.style.display = 'none';
	image.style.zIndex = 0;

	next.style.display = 'block';
	next.style.zIndex = 100;

    } else {
	//if there is not a next image, get the first image again
	next = firstChildImage(image.parentNode);
    }

    return next;
}

//set default values for parameters and starting image
function blendImages(id, speed, pause, caption) {

    if(speed == null) {
        speed = 30;
    }
    
    if(pause == null) {
        pause = 1500;
    }

    var blend = document.getElementById(id);

    var image = firstChildImage(blend);

    startBlending(image, speed, pause, caption);
}

//make image a block-element and set the caption
function startBlending(image, speed, pause, caption) {

    image.style.display = 'block';

    if(caption != null) {
	document.getElementById(caption).innerHTML = image.alt;
    }

    continueFadeImage(image, 0, speed, pause, caption);
}

// ASC: copied from http://www.sean.co.uk/a/webdesign/javascriptdelay.shtm
function pausecomp(millis) {
    var date = new Date();
    var curDate = null;

    do { curDate = new Date(); }
    while(curDate-date < millis);
} 

//set an increased opacity and check if the image is done blending
function continueFadeImage(image, opacity, speed, pause, caption) {

    opacity = opacity + 3;

    if (opacity < 103) {

	setTimeout(function() {fadeImage(image, opacity, speed, pause, caption)}, speed);

    } else {
	//if the image is done, set it to the background and make it transparent
	image.parentNode.style.backgroundImage = "url("+image.src+")";

	// ASC: pause 1sec here to prevent MSIE image flash ...
	var paws=pause-1000;
	if (paws < 0 ) {
		paws = 0;
	}
	pausecomp(1000);

	setOpacity(image,0);
	//get the next image and start blending it again
	image = getNextImage(image);
	setTimeout(function() {startBlending(image, speed, pause, caption)}, paws);		
    }
}

//set the opacity to a new value and continue the fading
function fadeImage(image, opacity, speed, pause, caption) {
    setOpacity(image,opacity);
    continueFadeImage(image, opacity, speed, pause, caption);
}


function change_text(table, set, result, where, equals){
	var popup = document.getElementById('popup_container');
	
	popup.style.visibility = "visible";
	
	document.getElementById('popup_table').value = table;
	document.getElementById('popup_set').value = set;
	document.getElementById('popup_result').value = result;
	document.getElementById('popup_where').value = where;
	document.getElementById('popup_equals').value = equals;
	
}

function change_textarea(table, set, result, where, equals){
	var popup = document.getElementById('popup_html_container');
	
	//remove if editor active
	if (tinyMCE.getInstanceById('popup_html_result')) {
		tinyMCE.execCommand('mceFocus', false, 'popup_html_result');
		tinyMCE.execCommand('mceRemoveControl', false, 'popup_html_result');
		tinyMCE.triggerSave();
	}
	
	//show popup
	popup.style.visibility = "visible";
	
	result_field = document.getElementById(result).value;
	
	//populate fields
	document.getElementById('popup_html_table').value = table;
	document.getElementById('popup_html_set').value = set;
	document.getElementById('popup_html_result').value = result_field;
	document.getElementById('popup_html_where').value = where;
	document.getElementById('popup_html_equals').value = equals;
	
	//re-initialise editor with new content
	tinyMCE.execCommand('mceAddControl', false, 'popup_html_result');
	tinyMCE.execCommand('mceFocus', false, 'popup_html_result');
	tinyMCE.triggerSave();
	
}

function edit_page(id){
	var popup = document.getElementById('popup_container');
	element = document.getElementById(id);
	
	//remove if editor active
	if (tinyMCE.getInstanceById(id)) {
		tinyMCE.execCommand('mceFocus', false, id);
		tinyMCE.execCommand('mceRemoveControl', false, id);
		tinyMCE.triggerSave();
	}
	
	//show popup
	popup.style.visibility = "visible";
	
	//re-initialise editor with new content
	tinyMCE.execCommand('mceAddControl', false, id);
	tinyMCE.execCommand('mceFocus', false, id);
	tinyMCE.triggerSave();
	
}

function close_popup(id,editor_id){
	var popup = document.getElementById(id);
	
	if (tinyMCE.getInstanceById(editor_id)) {
                tinyMCE.execCommand('mceFocus', false, editor_id);
                tinyMCE.execCommand('mceRemoveControl', false, editor_id);
                tinyMCE.triggerSave();
        }


	popup.style.visibility = "hidden";
}

