var requests_queue = new Array();var requests_current = 0;var xmlhttp_requests = new Array();var xmlhttp_targets = new Array();var xmlhttp_param = new Array();var xmlhttp_execute_after = new Array();var xmlhttp_execute_after_cond = new Array();var xmlhttp_data = new Array();function switch_cat(xid,target){	var data = {		xid:xid,		target:target	};	xmlhttp_request('catalog',data);}function show_cat_content (xid,target){	var data = {		xid:xid,		target:target	};	xmlhttp_request('cat_category_content',data);}function switch_img(xid,target,div_id){	var data = {		xid:xid,		target:target	};	xmlhttp_request(div_id,data);}function srv_request(id,component,request_type,data,silent,execute_after, conditionous){	if(!data) data = {};	data.request_type = request_type;	data.component = component;	xmlhttp_request(id,data,silent,execute_after,conditionous);}function xmlhttp_create(){	var xmlhttp;	try {		// Firefox, Opera 8.0+, Safari		xmlhttp = new XMLHttpRequest();	}	catch (e) {		// Internet Explorer		try {			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");		} 		catch (e) {			try {				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");			} 			catch (e) {				return false;			}		}	}	return xmlhttp;}function xmlhttp_request(id, data, silent, eval_function, conditionous) {	var req_id = id;	req_id += "-" + ( (Math.random()*Math.random()) * 1000000 );	if(xmlhttp_requests[req_id] = xmlhttp_create()) {		var o = document.getElementById(id);		xmlhttp_targets[req_id] = o?o:false;		xmlhttp_data[req_id] = 'id='+id;		xmlhttp_data[req_id] += '&ajax=1';		xmlhttp_param[req_id] = {silent:(silent?true:false),sync:true};		xmlhttp_execute_after[req_id] = eval_function?eval_function:'';		xmlhttp_execute_after_cond[req_id] = conditionous;				if (typeof(data) == 'object') {			for (key in data) {				if (typeof(data[key]) == 'object') {					for (subkey in data[key]) {						xmlhttp_data[req_id] += '&' + key + '[]=' + data[key][subkey];					}				}				else 					xmlhttp_data[req_id] += '&' + key + '=' + data[key];			}		}		if(requests_queue.length>0){			var flag = false;		}		else {			var flag = true;			requests_queue[requests_current] = req_id;		}		xmlhttp_request_send(req_id, flag);	}}function xmlhttp_request_send(id, gogogo_flag) {	if(gogogo_flag){		xmlhttp_requests[id].open('post', 'catalog/parser.php', true);		xmlhttp_requests[id].setRequestHeader("Content-Type", "application/x-www-form-urlencoded");		xmlhttp_requests[id].setRequestHeader("Content-Length", xmlhttp_data[id].length);		xmlhttp_requests[id].onreadystatechange = xmlhttp_request_statechanged;		xmlhttp_requests[id].send(xmlhttp_data[id]);	}	else {		var last = requests_queue.length;		requests_queue[last] = id;	}}function xmlhttp_request_statechanged() {	var i, t, p, text, len = 0, value, param;	for (id in xmlhttp_requests) {		len ++;		switch (xmlhttp_requests[id].readyState) {			case 1:				if(document.getElementById('ajaxtip')) {					//ajaxtip.html('Loading...');					//ajaxtip.show();				}								if(xmlhttp_param[id].silent) 					{/*keep it silent*/}				else {					xmlhttp_targets[id].innerHTML = 'Запрос к базе данных...';}								break;			case 2:				if(xmlhttp_param[id].silent) 					{/*keep it silent*/}				else {					xmlhttp_targets[id].innerHTML = 'Запрос отослан...';}				break;			case 3:				if(xmlhttp_param[id].silent) 					{/*keep it silent*/}				else {					xmlhttp_targets[id].innerHTML = 'Получаю данные...';}				break;			case 4:				if(xmlhttp_param[id].silent) 					{/*keep it silent*/}				else {					xmlhttp_targets[id].innerHTML = '';}				if (xmlhttp_targets[id] && xmlhttp_requests[id].responseText) {					text = xmlhttp_requests[id].responseText;					p = text.indexOf('#__SPLIT__#');					if(p >= 0) {						var meta = text.substr(p+11);						text = text.substr(0,p);						re = /([\w]+)=([\w\+\-]+)/g;						re_results = new Array();						var counter = 0;						var tmp_ar = new Array();						while(tmp_ar = re.exec(meta)) {							re_results[counter] = tmp_ar;							counter++;						}						for(i = 0; i<counter; i++) {							param = re_results[i][1];							value = re_results[i][2];							switch(param) {								case 'id':									if(value=='null') xmlhttp_targets[id].id = '';									else xmlhttp_targets[id].id = value;									break;								case 'class':									xmlhttp_targets[id].className = value;									break;							}						}					}					xmlhttp_targets[id].innerHTML = text;				}								delete (xmlhttp_targets[id]);				delete (xmlhttp_data[id]);				len--;				//ajaxtip.hide();				if(xmlhttp_execute_after[id]) eval(xmlhttp_execute_after[id]);								if(xmlhttp_execute_after_cond[id]) {					var ar = xmlhttp_execute_after_cond[id];					for(i in ar) {												if(i==xmlhttp_requests[id].responseText) {							eval(ar[i]);						}					}				}				delete (xmlhttp_requests[id]);								delete(xmlhttp_execute_after[id]);				delete (xmlhttp_param[id]);				//if(xmlhttp_param[id]['sync']==true) {				var last = requests_queue.length;				if(requests_current < last-1) {					xmlhttp_request_send(requests_queue[++requests_current], true);				}				else {					requests_queue = new Array();					requests_current = 0;				}				//}								break;		}	}}
