function loadmodal(obj){
	obj.wsl = $(window).scrollLeft();
	obj.wst = $(window).scrollTop();
    obj.success = function(data){
		var o = obj;
		addmodal(data, o);
	};
	$.ajax(obj);
}

function addmodal(data, o){
	$('body').append('<div class="modal">'+data+'</div>');
	var h = $('.modal').children().first().attr('offsetHeight');
	var w = $('.modal').children().first().attr('offsetWidth');
	if( typeof(o.wsl) == 'undefined' ){
		o.wsl = $(window).scrollLeft();
	}
	if( typeof(o.wst) == 'undefined' ){
		o.wst = $(window).scrollTop();
	}
	var left = ($(window).width()-w)/2+o.wsl;
	var top = ($(window).height()-h)/2+o.wst;
	$('.modal').css('top', top+'px');
	$('.modal').css('left', left+'px');
	$(window).scrollLeft(o.wsl);
	$(window).scrollTop(o.wst);
	$('.modal').keydown(function(e){
		var ret = true;
		if( e.keyCode == 27 ){
			cancelmodal(this);
			ret = false;
		}
		return(ret);
	});
	if( o.focus ){	
		$('#'+o.focus).focus();
	}
	if( o.init ){
		o.init();
	}
}

function cancelmodal(obj){
	$(obj).remove();
}

function cancelmodalbutton(obj){
	cancelmodal(($(obj).parents('.modal')));
}

function f_scrollLeft() {
	return f_filterResults (
		window.pageXOffset ? window.pageXOffset : 0,
		document.documentElement ? document.documentElement.scrollLeft : 0,
		document.body ? document.body.scrollLeft : 0
	);
}
function f_scrollTop() {
	return f_filterResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}

function f_filterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}
