function ajax_request_optional(options) {

	var settings = {
		url : '',
		param : '',
		block : '',
		method : 'post'
	};

	settings.onComplete = function(originalRequest) {
		ajax_setInnerHTML(settings.block, originalRequest.responseText);
		ajax_setStyleDisplay('ajaxLoad','none');
		init_triggers();
	};

	settings.onLoading = function() {
		ajax_setStyleDisplay('ajaxLoad','block');
	};

	for(var key in options) settings[key] = options[key];

	return new Ajax.Request(settings.url, {
		method: settings.method,
		parameters : settings.param,
		onComplete: settings.onComplete,
		onLoading: settings.onLoading
	});

}

function ajax_slide_toogle(id, prefix){
	return;
}

function ajax_setStyleTop(name,top)
{
	if (ajax_getObject(name)) {
		ajax_getObject(name).style.top = top;
	}
}
function ajax_setStyleDisplay(name,style)
{
	if (ajax_getObject(name)) {
		ajax_getObject(name).style.display = style;
	}
}

function ajax_getObject(name) {
	return $(name);
}

function ajax_objectExists(name){
	return ajax_getObject(name);
}

function ajax_getIdOfObject(obj){
	if (typeof(obj) == 'object') return obj.id;
	else  return obj;
}

function ajax_getValue(name) {
	var obj = ajax_getObject(name);
	return obj.value;
}

function ajax_setValue(name, value) {
	var obj = ajax_getObject(name);
	obj.value = value;
}

function ajax_getInnerHTML(name) {
	var obj = ajax_getObject(name);
	return obj.innerHTML;
}

function ajax_setInnerHTML(name, value) {
	var obj = ajax_getObject(name);
	obj.innerHTML = value;
}

function ajax_getClassName(name) {
	var obj = ajax_getObject(name);
	return obj.ClassName;
}

function ajax_getStyleParam(name, param){
	var obj = ajax_getObject(name);
	return obj.style[param];
}

function ajax_setClassName(name,value)
{
	var obj = ajax_getObject(name);
	obj.className = value;
}

function ajax_update(ajaxFile, param, block) {
	//alert(ajaxFile + ' - ' + param + ' - ' + block);
	return ajax_request_optional({
		url : ajaxFile,
		param : param,
		block : block
	});
}

function set_shoping_cart_count(count){
	if (ajax_objectExists('shopping_cart_count')){
		ajax_setInnerHTML('shopping_cart_count', count);
	}
}

function set_shoping_cart_amount(amount){
	if (ajax_objectExists('shopping_cart_amount')){
		ajax_setInnerHTML('shopping_cart_amount', amount);
	}
}

function ajax_update_shopping_cart(ajaxFile, param, tableName, block) {
	return ajax_request_optional({
			url : ajaxFile,
			param : param,
			onComplete : function(originalRequest){
				if (text_found(originalRequest.responseText, 'close_popup_basket')){
					ajax_setInnerHTML(block, '');
					set_shoping_cart_count(0);
					set_shoping_cart_amount(0.0);
					popup_close();
				} else {
					ajax_setInnerHTML(block, originalRequest.responseText);
					set_shoping_cart_count(ajax_getValue('shopping_cart_count_value'));
					set_shoping_cart_amount(ajax_getValue('shopping_cart_amount_value'));
					popup_show();
				}
				ajax_setStyleDisplay('ajaxLoad','none');
				init_triggers();
			}
	});
}

function ajax_update_add_tender(idTender, form) {
	var pars = 'id=' + idTender + '&' + getParameters(form);
	var block_form = 'tenders_order_form';
	var block_orders = 'tenders_orders';

	return ajax_request_optional({
			url : '/order-tenders/add.ajax',
			param : pars,
			onComplete : function(originalRequest){
				ajax_setInnerHTML(block_form, originalRequest.responseText);
				ajax_request_optional({
					url : '/tenderOrders-' + idTender + '/page-1.ajax',
					onComplete : function(originalRequest2){
						ajax_setInnerHTML(block_orders, originalRequest2.responseText);
						scrollJump('tenders_orders');
						ajax_setStyleDisplay('ajaxLoad', 'none');
					}
				});
				init_triggers();
			}
	});
}

function ajax_reload(url, param) {
	return ajax_request_optional({
			url : url,
			param : param,
			onComplete : function(originalRequest) {
				ajax_setStyleDisplay('ajaxLoad','none');
				document.location.reload();
				init_triggers();
			}
	});
}

function addFotos(ajaxFile, tableFoto, i, alias) {
	if (
			(ajax_getObject('text'+ alias + '_' + tableFoto + '_' + i) == null)
			|| (
				(ajax_getObject('text'+ alias + '_' + tableFoto + '_' + i) != null)
				&& (ajax_getValue('text'+ alias + '_' + tableFoto + '_' + i) == '')
			)
		) {
		alert('Не выбрано ни одного файла');
	}
	else {
		var addFoto = 'add'+ alias + '_' + tableFoto + '_' + i;
		var value = ajax_getObject(addFoto);
		var req = new JsHttpRequest();
		var errors = 'errors'+ alias + '_' + tableFoto + '_' + i;
		var show = 'show'+ alias + '_' + tableFoto + '_' + i;
		req.onreadystatechange = function() {
			if (req.readyState == 4) {
				ajax_setInnerHTML(errors, req.responseJS);
				ajax_setInnerHTML(show, req.responseText);
				if (ajax_getObject('ajaxLoad')) ajax_setStyleDisplay('ajaxLoad', 'none');
				ajax_setValue('text'+ alias + '_' + tableFoto + '_' + i,  '');
			}
			if (req.readyState == 1) {
				if (ajax_getObject('ajaxLoad')) {ajax_setStyleDisplay('ajaxLoad', 'block');}
			}
			init_triggers();
		}
		var pars = '?blockFotos=' + show;
		req.open(null, ajaxFile + pars, true);
		req.send( { fotoFile: value } );
	}

}

function deleteFoto(table, idFoto, blockFoto) {
	return ajax_request_optional({
		url : '/operationFotos/' + table + '/delete-' + idFoto + '/list.ajax',
		param: 'blockFoto=' + blockFoto,
		onComplete: function(originalRequest) {
			block = ajax_getObject(blockFoto);
			block.innerHTML = originalRequest.responseText;
			//eval(str_replace('{BLOCK}', 'block', originalRequest.responseText));
			if (ajax_getObject('ajaxLoad')) {ajax_setStyleDisplay('ajaxLoad', 'none');}
			init_triggers();
		}
	});
}


function formAjaxRequestAB(ajaxFile, form, block, action) {
	var pars = '';
	var parsForm = getParameters(form);
	if (parsForm != '') {
		if (pars != '') pars = pars + '&';
		pars = pars + parsForm;
	}

	return ajax_request_optional({
			param : pars,
			block : block,
			url : ajaxFile,
			onComplete: function(originalRequest) {
				switch (action) {
					case 'update':
						ajax_setInnerHTML(block, originalRequest.responseText);
						var results = ajax_getObject('result');
						if (results!=undefined && results.length!=0) {
							results[0].scrollIntoView();
						}
						break;
					case 'runResult':
						eval(str_replace('{BLOCK}', 'block', originalRequest.responseText));
					break;
				}
				if (ajax_getObject('ajaxLoad')) {ajax_setStyleDisplay('ajaxLoad', 'none');}
				init_triggers();
			}
	});

}

function ajax_scrollJump(blockName){

	if (blockName == '_top'){
		window.scrollTo(0,0);
	} else {
		var block = ajax_getObject(blockName);
		if (block) block.scrollIntoView();
	}

}

function str2JSON(str){
	str = trim(str);
	return str.evalJSON(true);
}

function init_triggers(){
}

function ajax_setHtmlInBlocks(tegName, atributeName, atributeValue, value) {
}

