		top.currentCall = 0;
		
		jQuery(document).ready(
			function() {
				jQuery('a').click(
					function() {
						jQuery('#spinner').css('display','block');					
					}
				)
			}
		);

		function post2div(url, div, data) {
			spinner(true);
			data['div'] = div;
			data['json'] = 'true';
			var currentTime = new Date();
			data['time'] = currentTime.getTime();
			top.currentCall++;
			data['currentCall'] = top.currentCall;

			jQuery.post(url, data, getreply);
		}

		
		function getreply(rawdata) {
			if ((rawdata.substring(0, 1) != '{') && (rawdata.substring(0, 1) != '[')) {
				// geen echte json teruggekregen
				//mainerror('<h1>Error</h1><h2>No valid reply from server:</h2><xmp>' + rawdata + '</xmp>');
				mainerror('<h1>Error</h1><P style="cursor: pointer;" onClick="jQuery(\'#errormessage\').css(\'display\',\'block\');">The server returned an error. Please try again. </p><span id="errormessage" style="display: none; color: red;"><xmp>' + rawdata + '</xmp></span>');
			} else {
				var result = parseJson(rawdata);
//				mainerror ("<p>got valid reply " + result['currentCall']  + "</p><xmp>" + rawdata + "</xmp>");
				if ((result['currentCall'] >= top.currentCall) ||  (result['forced'] == 'true')) {
//					mainerror ("<p>using reply " + result['currentCall']  + "</p><xmp>" + rawdata + "</xmp>");
					if (result['prescript']) {
						eval(result['prescript']); // bevat eventuele javascript code die van te voren moet worden uitgevoerd
					}
					if (jQuery('#' + result['div']).length > 0) {
						jQuery('#' + result['div']).empty().append(result['html']).find('a').click(
							function() {
								jQuery('#spinner').css('display','block');					
							}
						);
					} else {
						jQuery('body').append('<div id=\''+ result['div'] + '\'>' + result['html'] + '</div>').find('a').click(
							function() {
								jQuery('#spinner').css('display','block');					
							}
						);				
					}
					if (result['javascript']) {
						eval(result['javascript']); // bevat eventuele javascript code die na afloop moet worden uitgevoerd
					}
					jQuery('form').submit(
						function() {
							jQuery('#spinner').css('display','block');					
						}
					)

				} else {
					alert('dropping server response for call ' + result['currentCall']);

				} 
			}
			spinner(false);
 		}

		function spinner(aan) {
			if (aan) {
				jQuery('#spinner').css('display','block');
			} else {
				jQuery('#spinner').fadeOut();
			}
		}
		function parseJson(data) {
			if ((data.substring(0, 1) != '{') && (data.substring(0, 1) != '[')) {
    				return { status: 0, data: data.length ? data : 'Unspecified error' };
  			}
  			return eval('(' + data + ');');
		};

		
 		function mainerror (error) {
				jQuery('#mainerror').remove();
				jQuery('body').append('<div id="mainerror"></div>');
				jQuery('#mainerror').empty().append(error + '<span class="close button right" style="margin-top: 30px;" onClick="jQuery(\'#mainerror\').remove();">close</span>');
				//{ zIndex: 99999, title: 'eror', modal: true, buttons: { "Ok": function() { $(this).dialog("close"); } } }
				//timerid = setTimeout('jQuery(\'#mainerror\').remove();', 15000);
 		
 		}

/* function createWindow(window_id) {
	if (jQuery('#' + window_id).length == 0) {
		jQuery('body').append('			<div id="window_' + window_id + '" class="containerPlus resizable draggable {left:100, top:100, width:800, height:500, buttons:\'m,c\', skin:\'white\'}" ' + 
'				<div class="no"><div class="ne"><div class="n">' + window_id + '</div></div> ' + 
'					<div class="o"><div class="e"><div class="c"> ' + 
'						<div class="mbcontainercontent"> ' +
'						<span id="' + window_id + '"></span> ' + 
'						</div> ' + 
'					</div></div></div> ' + 
'					<div > ' + 
'					<div class="so"><div class="se"><div class="s"></div></div></div> ' + 
'					</div> ' + 
'				</div> ' + 
'			</div>');
		jQuery(function(){
			jQuery(".containerPlus").buildContainers({
				containment:"document",
			});
		});
		// center:
		jQuery('#window_editor').css('left','50%').css('margin-left','-' + jQuery('#window_editor').css('width').replace('px', '') / 2  + 'px').css('top','100px');
		

	}
}

*/
