var vars = new Object;
var funcs = new Object;

function abAjax (action, loader_id, loader_num, params, func, pid) {
	if (!loader_num) loader_num = 1;
	var loader_ = 0;
	if (loader_id && $('#'+loader_id).length) {
		loader_ = 1;
		loader_inner = $('#'+loader_id).html();
		$('#'+loader_id).html('');
		loader_val = $('#'+loader_id).val();
		$('#'+loader_id).val('');
		loader_bg = $('#'+loader_id).css('background');
		$('#'+loader_id).css('background','url(/_des2/imgs/preloader_'+loader_num+'.gif) no-repeat 50% 50%');
	}
	var dt=new Date;
	var stamp=parseInt(dt.getTime()/1000);
	$.ajax({type:"POST",url:"/_backend/"+action+"/?AbAjaxRequest="+stamp,data:params,dataType:"json",success:function(json){if(json.dt!=stamp)return false;process(json);func&&func(json.success,json.result,json.message)}});
	function process (json) {
		if (json.precode) eval(json.precode);
		if (json.vars) for (var i in json.vars) if (json.vars[i].renew || !vars[i]) vars[i] = json.vars[i].value;
		if (json.dom) for (var id in json.dom) { _createDOM(id, json.dom[id]); }
		if (json.funcs) for (var i in json.funcs) if (!funcs[i]) funcs[i] = json.funcs[i];
		if (json.html && pid) {
			if (json.html.clear) $('#'+pid).empty();
			$('#'+pid).append(json.html.text);
		}
		if (json.postcode) eval(json.postcode);
		if (json.message && !func) show_message(json.message[json.success], json.success);
		if (loader_) {
			if (loader_val) $('#'+loader_id).val(loader_val);
			if (loader_inner) $('#'+loader_id).html(loader_inner);
			$('#'+loader_id).css('background',loader_bg);
		}
	}
}

function _createDOM (id, dom, pid) {
	if (pid) {
		if (dom._tag) {
			var newElem = document.createElement(dom._tag);
			newElem.setAttribute('id',id);
			$('#'+pid).append(newElem);
		} else {
			return false;
		}
	} else {
		if (dom._delete) $('#'+id).remove();
		if (dom._after && $('#'+dom._after) && dom._tag) {
			if ($('#'+id)) {	//	перемещаем
				$('#'+id).appendTo("#"+dom._after); 
			} else {		//	создаем новый
				var newElem = document.createElement(dom._tag);
				newElem.setAttribute('id',id);
				$('#'+dom._after).after(newElem);
			}
		}
		if (dom._clear) $('#'+id).empty();
	}
	if (dom._attr) {
		for (var i in dom._attr._delete) $('#'+id).removeAttr(dom._attr._delete[i]);
		for (var i in dom._attr._set) $('#'+id).attr(i, dom._attr._set[i]);
	}
	if (dom._text) $('#'+id).html($('#'+id).html()+dom._text);
	if (dom._events) {
		for (var i in dom._events._delete) $('#'+id).die(dom._events._delete[i]);
		for (var i in dom._events._set) $('#'+id).bind(i, function(){eval(dom._events._set[i])});
	}
	if (dom._childs) {
		for (var cid in dom._childs) _createDOM(cid, dom._childs[cid], id);
	}
}

function obj(a) {return document.getElementById(a);}
function RemoveMe(o) {if(o&&typeof(o)=='string')o=obj(o);if(o)o.parentNode.removeChild(o);}
function _createElement(tag,attrs,txt){
	if (!tag) { return false;}
	newElem = document.createElement(tag);
	if (attrs) {
		attrsArray = attrs.split('|');
		maxi = attrsArray.length/2;
		for (i=0;i<maxi;i++) {
			newElem.setAttribute(attrsArray[i*2],attrsArray[i*2+1]);
			newElem[attrsArray[i*2]] = attrsArray[i*2+1];
		}
	}
	if (txt) { newElem.innerHTML = txt;}	
	return newElem;
}

/*
$(document).ready(function(){

});
*/

function test1 (suc, res, mes) {
	alert(mes);
}

