var funcSuccess	= function(xmlResponse,button,successHook){
	var	message		= $('message',xmlResponse).text();
	var	location	= $('location',xmlResponse).text();
	if (message)
	{
		$.modal('<div>'+message+'<br /><button class="positive" onClick="$.modal.close();"><img src="'+button.image+'" />'+button.text+'</button></div>',{
			overlayCss: { backgroundColor: '#000', cursor: 'wait' },
			containerCss: { width: '600', height: '400', backgroundColor: '#fff', padding: '20px', textAlign: 'center' },
			onClose: function(){
				if (successHook)
					successHook();
				if (location)
					window.location = location;
				$.modal.close();
			}
		});
	}
	else
	{
		if (location)
			window.location = location;
	}
};

var	funcError	= function(xmlResponse,button){
	var	errorMessage	= '';
	$('error',xmlResponse).each(function(id) {
		error 			= $('error',xmlResponse).get(id);
		name			= $('name',error).text();
		value			= $('value',error).text();
		errorMessage	+= value+'<br />';
	});
	if (errorMessage=='')
		errorMessage	= $('message',xmlResponse).text();

	$.modal('<div>'+errorMessage+'<br /><button class="negative" onClick="$.modal.close();"><img src="'+button.image+'" />'+button.text+'</button></div>',{
		overlayCss: { backgroundColor: '#000', cursor: 'wait' },
		containerCss: { width: '600', height: '400', backgroundColor: '#fff', padding: '20px', textAlign: 'center' }
	});
}

jQuery.fn.link = function(options){
	options = jQuery.extend({
		url: false,
		success: funcSuccess,
		successHook: false,
		error: funcError,
		button: { image: '/img/icons/tick.png', text: 'Ok' },
		data: ''	//	"name=John&location=Boston"
	}, options);

	var	url	= options.url?options.url:$(this).attr('href');
	var	responseHandler = function(xmlResponse){	//	status: 1 = ok, 2 = errors
		if($('status',xmlResponse).text() == '1')
			options.success(xmlResponse,options.button,options.successHook);
		else if ($('status',xmlResponse).text() == '2')
			options.error(xmlResponse,options.button);
		return	false;
	};
	var errorHandler = function(){
		alert('AJAX error');
	};
	$.ajax({
		type: 'POST',
		dataType: 'xml',
		cache: false,
		url: url,
		data: options.data,
		success: responseHandler,
		error: errorHandler
	});
	return	false;
}

jQuery.fn.form = function(options){		//	AJAX форма с редиректом
	options = jQuery.extend({
		success: funcSuccess,
		successHook: false,
		error: funcError,
		button: { image: '/img/icons/tick.png', text: 'Закрыть' },
		tinymce: false,
		codepress: false
	}, options);
	var	responseHandler = function(xmlResponse){	//	status: 1 = ok, 2 = errors
		if($('status',xmlResponse).text() == '1')
			options.success(xmlResponse,options.button,options.successHook);
		else if ($('status',xmlResponse).text() == '2')
			options.error(xmlResponse,options.button);
		return	false;
	};
	var errorHandler = function(){
		alert('AJAX error');
	};
	if (options.tinymce)
	{
		$(this).submit(function(){
			tinyMCE.triggerSave();
			$(this).ajaxSubmit({ success: responseHandler, error: errorHandler, async: true, type:'POST', dataType: 'xml' });
			return	false;
		});
	}
	else if (options.codepress)
	{
		$(this).submit(function(){
			eval('var content = '+options.codepress+'.getCode();');
			$('#'+options.codepress+'_content').val(content);
			$(this).ajaxSubmit({ success: responseHandler, error: errorHandler, async: true, type:'POST', dataType: 'xml' });
			return	false;
		});
	}
	else
		$(this).ajaxForm({ success: responseHandler, error: errorHandler, async: true, type:'POST', dataType: 'xml' });
};

/*
	By default all forms with class 'ajaxform' are ajax forms
*/
$(document).ready(function(){
	$('form.ajaxform').each(function(){
		$(this).form();
	});
});