function open_tab(tab_id, window_id, url)
{
	var tmp = tab_id.split("_");
	var j = 1;
	while(document.getElementById(tmp[0]+'_'+j))
	{
		document.getElementById(tmp[0]+'_'+j).className = 'tab_normal';
		j++;
	}
	document.getElementById(tab_id).className = 'tab_selected';

	open_window(window_id, url);
}

function open_window(window_id, url)
{
	document.getElementById(window_id).style.display = 'block';
	show_state(window_id);
	
	if(document.getElementById(window_id).style.top != '' && document.getElementById(window_id).style.top != undefined)
	{
		var y_offset = document.getElementById(window_id).style.top;
		y_offset = y_offset.substr(0, y_offset.length-2);
		document.getElementById(window_id).style.top = y_offset/1 + document.body.scrollTop + 'px';
	}

	document.getElementById(window_id + '_body').src = url;
}

function close_window(window_id)
{
	document.getElementById(window_id).style.display = 'none';
	hide_state(window_id);
	
	if(document.getElementById(window_id).style.top != '' && document.getElementById(window_id).style.top != undefined)
	{
		var y_offset = document.getElementById(window_id).style.top;
		y_offset = y_offset.substr(0, y_offset.length-2);
		document.getElementById(window_id).style.top = y_offset/1 - document.body.scrollTop + 'px';
	}
	
	document.getElementById(window_id + '_body').src = "";
}

function show_state(window_id)
{
	if(document.getElementById(window_id + '_state'))
	{
		document.getElementById(window_id + '_state').style.display = 'block';
	}
}

function hide_state(window_id)
{
	if(document.getElementById(window_id + '_state'))
	{
		document.getElementById(window_id + '_state').style.display = 'none';
	}
}

function make_post_request(window_id, request_url, parser_function)
{
	if(window_id != '' && window_id != undefined && request_url != '' && request_url != undefined)
	{
		post_data = request_url.split('?');
		request_url = post_data[0];
		post_data = post_data[1];
		
		if(parser_function == '' || parser_function == undefined)
		{
			parser_function = 'parse_response_text';
		}
	
		var http_request = false;
		
		if(window.XMLHttpRequest)
		{
			http_request = new XMLHttpRequest();
			http_request.overrideMimeType('text/xml');
		}
		else if(window.ActiveXObject)
		{
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
		}

		if(!http_request)
		{
            return false;
        }
	
		http_request.onreadystatechange = function() {
			if(http_request.readyState == 4)
			{
				document.getElementById(window_id + '_state').style.display = 'none';
				eval(parser_function + '(http_request, window_id);');
			}
			else
			{
				document.getElementById(window_id + '_state').style.display = 'block';
			}
		};
		http_request.open('POST', request_url, true);
		http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		http_request.send(post_data);
	}
	else
	{
		alert('ERROR! Wrong parameters passed for \"make_post_request\" function');
	}
}

function parse_response_text(http_request, window_id)
{
	if(http_request != undefined && window_id != '' && window_id != undefined)
	{
		if(http_request.status == 200)
		{
			var tmp_content = http_request.responseText;
			document.getElementById(window_id + '_content').innerHTML = tmp_content;
		}
		else
		{
			document.getElementById(window_id + '_content').innerHTML = '...';
		}
	}
	else
	{
		alert('ERROR! Wrong parameters passed for \"parse_result_text\" function');
	}
}

function form_to_string(form_id)
{
	if(form_id != '' && form_id != undefined)
	{
		var result = '';
		var form_element;
		var previous_element = '';
	
		for(i=0; i<form_id.elements.length; i++)
		{
			form_element = form_id.elements[i];
	
			switch(form_element.type)
			{
				case 'text':
				case 'hidden':
				case 'password':
				case 'textarea':
				case 'select-one':
					result += form_element.name + '=' + escape(form_element.value) + '&';
					previous_element = '';
					break;
				case 'radio':
					if(form_element.checked)
					{
						result += form_element.name + '=' + escape(form_element.value) + '&';
					}
					previous_element = '';
					break;
				case 'checkbox':
					if(form_element.checked)
					{
						if(form_element.name == previous_element)
						{
							result = result.substr(0, result.length-1);
							result += '|' + escape(form_element.value) + '&';
						}
						else
						{
							result += form_element.name + '=' + escape(form_element.value) + '&';
						}
						previous_element = form_element.name;
					}
					break;
			}
		}
		result = result.substr(0, result.length-1);
		return result;
	}
	else
	{
		alert('ERROR! Wrong parameters passed for \"form_to_string\" function');
	}
}
