/* Copyright 2009 AllSnooker.Ru */

var http = new Array;
var completed = new Array;

function loadXMLDoc(url) {
	if (window.XMLHttpRequest) {
		var i = http.length;

		var request = new XMLHttpRequest();
		request.onreadystatechange = processReqChange;
		request.open("GET", url, true);
		request.send(null);

		http[i] = request;
	} else if (window.ActiveXObject) {
		var i = http.length;
		var request2;

		try {
			request2 = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {
			try {
				request2 = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) { }
		}

		if (request2) {
			request2.onreadystatechange = processReqChange;
			request2.open("GET", url, true);
			request2.send();

			http[i] = request2;
		}
	}
}

function processReqChange() {
	for (var i=0; i < http.length; i++) {
		if (completed[i] || !http[i])
			continue;

		if (http[i].readyState == 4) {
			if (http[i].status == 200) {
				completed[i] = 1;
				var response  = http[i].responseXML.documentElement;
				var method = response.getElementsByTagName('method')[0].firstChild.data;
				var request = response.getElementsByTagName('request')[0];
				var result = response.getElementsByTagName('result')[0];
				eval(method + '(request, result)');
			}
		}
	}
}

var info_top = 0;
var info_top_counter = 0;
function pos_top_right(obj) {
	if (info_top_counter == 0)
		info_top = 0;
	if (window.navigator.appName.match(/Explorer/i)) {
		obj.style.left = document.body.scrollLeft + document.body.clientWidth - obj.clientWidth + 'px';
		obj.style.width = document.body.scrollLeft + document.body.clientWidth + 'px';
		obj.style.top = document.body.scrollTop + info_top + 'px';
	} else if (window.navigator.appName.match(/Opera/i)) {
		obj.style.left = document.documentElement.scrollLeft + window.innerWidth - obj.clientWidth + 'px';
		obj.style.top = document.documentElement.scrollTop + info_top + 'px';
	} else {
		obj.style.left = window.scrollX + document.documentElement.clientWidth - obj.clientWidth - 20 + 'px';
		obj.style.width = window.scrollX + document.documentElement.clientWidth - obj.offsetLeft + 'px';
		obj.style.top = window.scrollY + info_top + 'px';
	}
	info_top = info_top + obj.offsetHeight;
	info_top_counter++;
}

function show_status(txt, ms) {
	var div = document.createElement('div');
	div.className = 'float';
	div.innerHTML = txt;
	div.style.backgroundColor = '#CCFFCC';
	document.body.appendChild(div);

	pos_top_right(div);
	fade_bg(div, ms || 200, 'remove', 'info_top_counter');
}

function show_error(txt, ms) {
	var div = document.createElement('div');
	div.className = 'float';
	div.innerHTML = txt;
	div.style.backgroundColor = '#FFCCCC';
	document.body.appendChild(div);

	pos_top_right(div);
	fade_bg(div, ms || 200, 'remove', 'info_top_counter');
}

function fade(obj, ms, fs, fe, remove) {
	var ie_opacity = fs * 100;
	var dir = fe > fs ? 'show' : 'fade';

	if (window.navigator.appName.match(/Explorer/i)) {
		obj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=100)";
	} else {
		obj.style.opacity = fs;
	}

	var fade_intl;
	var fade_ptr = function() {
		if (!obj)
			return;

		if (window.navigator.appName.match(/Explorer/i)) {
			ie_opacity = dir == 'show' ? ie_opacity + 5 : ie_opacity - 5;
			if ((dir == 'fade' && ie_opacity <= (fe*100)) || (dir == 'show' && ie_opacity >= (fe*100))) {
				window.clearInterval(fade_intl);
				if (remove)
					obj.parentNode.removeChild(obj);
			} else {
				if (obj.tagName.toLowerCase() == 'tr') {
					for (var i=0; i < obj.childNodes.length; i++) {
						obj.childNodes[i].style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + ie_opacity + ")";
					}
				} else {
					obj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + ie_opacity + ")";
				}
			}
		} else {
			var opacity = dir == 'show' ? eval(obj.style.opacity) + 0.05 : eval(obj.style.opacity) - 0.05;
			if ((dir == 'fade' && opacity <= fe) || (dir == 'show' && opacity >= fe)) {
				window.clearInterval(fade_intl);
				if (remove)
					obj.parentNode.removeChild(obj);
			} else {
				obj.style.opacity = opacity;
			}
		}
	}
	fade_intl = window.setInterval(fade_ptr, ms || 100);
}

function fade_bg(obj, ms, remove, top_offset_counter) {
	var fade_intl;
	var fade_ptr = function() {
		if (!obj)
			return;

		var step = 4;
		var re = /rgb\((\d+), (\d+), (\d+)\)/i;
		var re2 = /#(..)(..)(..)$/;
		var r,g,b;
		if (m = re.exec(obj.style.backgroundColor)) {
			r = eval(m[1]);
			g = eval(m[2]);
			b = eval(m[3]);
		} else if (m = re2.exec(obj.style.backgroundColor)) {
			r = eval('0x' + m[1]);
			g = eval('0x' + m[2]);
			b = eval('0x' + m[3]);
		}

		if (r != null && g != null && b != null) {
			r = r+step < 256 ? r+step : 255;
			g = g+step < 256 ? g+step : 255;
			b = b+step < 256 ? b+step : 255;
			obj.style.backgroundColor = '#' + r.toString(16) + g.toString(16) + b.toString(16);

			if (r == 255 && g == 255 && b == 255) {
				window.clearInterval(fade_intl);
				if (remove) {
					obj.parentNode.removeChild(obj);
					if (top_offset_counter) {
						eval(top_offset_counter + '--');
					}
				}
			}
		}
	}
	fade_intl = window.setInterval(fade_ptr, ms || 100);
}

