/**
 * Loads bbCode preview
 * @param Element editor
 * @param Element editorCnt
 * @param Boolean raw_enabled
 * @param Boolean new_window
 */
function bbcode_preview_main(editor, editorCnt, raw_enabled, new_window) {
	var dims = editorCnt.getDimensions();
	var previewActive = true;
	var preview = new Element('div', {'class': 'editor_preview'})
		.setStyle({
			width: dims.width + 'px',
			height: dims.height + 'px',
			position: 'absolute'});
	var closeLink = new Element('a', {href: '#', 'class': 'editor_close'})
		.observe('click', function(e) {
			e.stop();
			previewActive = false;
			preview.remove();
			editorCnt.setStyle({visibility: ''});
		})
		.update('Przerwij');
	var textCnt = new Element('span').update('Wczytywanie podglądu...');
	var previewCnt = new Element('div', {'class': 'editor_preview_cnt'})
		.insert(textCnt);
	var previewParent = new Element('div', {'class': 'editor_preview_parent'})
		.insert(previewCnt);
	preview.insert(closeLink)
		.insert(previewParent);

	editorCnt.insert({before: preview});
	var top = closeLink.getHeight()+3;
	previewParent.setStyle({
		position: 'absolute',
		overflow: 'auto',
		top: top+'px',
		width: '100%',
		height: (dims.height-top)+'px'});
	editorCnt.setStyle({visibility: 'hidden'});

	new Ajax.Request(bbcode_parser_url + '?allow_raw=' + raw_enabled + (new_window ? '&full=1' : ''), {
		method: 'post',
		postBody: Form.Element.serialize(editor),
		onSuccess: function(request){
			if (!previewActive) {
				return;
			}
			if (new_window) {
				preview.remove();
				editorCnt.setStyle({visibility: ''});
				var width = 500;
				var height = 300;
				var previewWindow = window.open('', 'previewWindow', 'menubar=no,' +
					'location=no,resizable=yes,scrollbars=yes,status=yes,width=' +
					width +	',height=' + height + ',top=100,left=50');
				previewWindow.document.body.innerHTML = request.responseText;
			} else {
				textCnt.update(request.responseText);
			}
		},
		onFailure: function(request) {
			if (!previewActive) {
				return;
			}
			textCnt.update('Nie można wczytać podglądu: brak połączenia z serwerem');
		},
		onComplete: function() {
			if (!previewActive) {
				return;
			}
			closeLink.update('Powrót do edycji');
		}
	});
}

/**
 * Shows shortcuts list
 */
function bbcode_shortcuts_main(editor, editorCnt, keylist) {
	var text = 'Skróty klawiszowe\n';
	keylist.each(function(pair) {
		text = text + '\nCTRL + ' + pair.key + '\t\t' + pair.value;
	});
	alert(text);
}

editorCallbacks.set('preview', bbcode_preview_main);
editorCallbacks.set('shortcuts', bbcode_shortcuts_main);

