function errorHandler(xhr, ajaxOptions, thrownError) {
/*	alert(xhr + ' ' + xhr.readyState + ' ' + ajaxOptions + ' ' + thrownError);
	if (thrownError = "timeout") {
		alert("The request timed out, please resubmit");
	} else {
		alert("ERROR: " + thrownError);
	} */ 
	jQuery('#loader').hide(); // stop the loader in case there is a problem  
}

function load(url, modalOptions) {
    if(url.indexOf("?", 0) == -1){
       url = url + "?";
    }
    else{
       url = url + "&";
    }
    url = url + "logged=" + logged;
    
	var options;
	if (modalOptions)
		options = modalOptions;
	else {
		options = getDefaultModalOptions();
	}

	jQuery.ajax( {
		type :"get",
		url :url,
		dataType :"text",
		beforeSend : function() {
			jQuery('#loader').show();
		},
		timeout :60000,
		error :errorHandler,
		success : function(request) {
			jQuery('<div id="modal_stuff"/>').modal(options);
			jQuery('#modal_stuff').html(request);
			jQuery('#simplemodal-container').draggable({ scroll: false });
			jQuery('#loader').hide();
		}
	});
    try {
        var w_event = new WoopraEvent('Opening modal');
        w_event.setTracker(woopraTracker);
        w_event.addProperty('load', url);
        w_event.fire();
    } catch(n) {
     // fall through
    }
}

function ajaxLoad(submitOptions) {
	submitOptions.error = errorHandler;
	jQuery('#loader').show();
	var target = '#modal_stuff';
	if (!submitOptions.success)
		submitOptions.success = showResponse;
	if (submitOptions.target) {
		target = submitOptions.target;
		submitOptions.target = null;
	}
	jQuery(target).ajaxSubmit(submitOptions);
}

function doSubmit(form) {
	form.submit();
}

function showRequest(formData, jqForm, options) {
	var queryString = jQuery.param(formData);
	alert('About to submit: \n\n' + queryString);
	return true;
}

function showResponse(responseText, statusText) {
	jQuery('#modal_stuff').ready( function() {
		if (responseText) {
			jQuery('#modal_stuff').fadeIn('slow');
			jQuery('#modal_stuff').html(responseText);
		} else {
			jQuery.modal.close();
			window.location.reload();
		}
		jQuery('#loader').hide();
	});
}

function getDefaultModalOptions() {
	return {
		onClose : function(dialog) {
			beforeModalOpen();
			dialog.data.fadeOut('fast', function() {
				dialog.container.slideUp('fast', function() {
					dialog.overlay.fadeOut('fast', function() {
						jQuery.modal.close(); // must call this!
							jQuery('#loader').hide(); // just in case
							afterModalClose();
						});
				});
			});
		},
		onOpen : function(dialog) {
			dialog.overlay.fadeIn('fast', function() {
				dialog.container.slideDown('fast', function() {
					dialog.data.fadeIn('fast');
				});
			});
        }
	}
}

// TO BE OVERRID
function beforeModalOpen() {
	// EMPTY 
}
// TO BE OVERRID
function afterModalClose() {
	// EMPTY 
}
