function ajax(url,params,target,cache,onload_function)
{
    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();
	    if(onload_function)
	    	eval(onload_function);
        }
    }
    // 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)
{
    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).
    ajax_obj.open(null, '/ajax/image/_/'+id, true);
    // Send data to backend.
    ajax_obj.send( null );
};

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

function light_box_show(uri,content)
{
	loading_finished();
	var anchor = A({'title': content, 'href': uri, 'rel': 'lytebox'});
	myLytebox.start(anchor, false, false);
	return false;
}

function add_to_bookmark(a) {
	if(window.opera&&window.print) {
		var mbm=a;
		mbm.setAttribute("rel","sidebar");
		mbm.setAttribute("title",document.title);
		mbm.setAttribute("href",window.location.href);
		mbm.click();
	}
	else if(window.sidebar) {
		window.sidebar.addPanel(document.title,window.location.href,"");
	}
	else if(window.external) {
		window.external.AddFavorite(window.location.href, document.title);
	}
}

function setHome(ob) {
	if(tt_ie) {
		ob.style.behavior='url(#default#homepage)'; 
		ob.setHomePage(document.location); 
	}
}

function add_to_basket(url) {
	ajax(url,null,null,false);
}

function add_to_basket_done(url) {
	ajax(url,null,document.getElementById('basket_preview'),false);
}

function delete_from_basket(obj,url) {
	obj_to_remove=obj.parentNode.parentNode;
	goods_id=obj_to_remove.id.replace('basket_line_','');
	document.getElementById('basket_price_sum').innerHTML=parseInt(document.getElementById('basket_price_sum').innerHTML)-parseInt(document.getElementById('basket_price_'+goods_id).innerHTML);
	obj_to_remove.parentNode.removeChild(obj_to_remove);
	if(document.getElementById('basket_item_photo_'+goods_id)) {
		document.getElementById('basket_item_photo_'+goods_id).parentNode.removeChild(document.getElementById('basket_item_photo_'+goods_id));
	}
	ajax(url,null,null,false);
}
function switch_photo_popup(photo_id,display_mode) {
	if(document.getElementById('basket_item_photo_'+photo_id)) {
		document.getElementById('basket_item_photo_'+photo_id).style.display=display_mode;
	}
}

