function openWebService(webServiceId, theme, languageId) {
	var loadedStyleSheet;
	if (!theme) theme = 'default;'
	if (wsLoadedStyleSheets.length > 0) {
		while (loadedStyleSheet = wsLoadedStyleSheets.pop()) {
			unloadStyleSheet(loadedStyleSheet);
		}
	}

	var ssFilename = webServiceId + '.css';
	if (!isStyleSheetLoaded(ssFilename)) {
		loadStyleSheet(ssFilename, theme);
		wsLoadedStyleSheets.push(ssFilename);
	}

	if (!languageId) {
		var languageId = getLanguageIdFromURL(), params;
	}
	if (languageId) {
		params = 'lang=' + languageId;
	} else {
		params = '';
	}

	displayPopin('/' + webServiceId + '.php', params);
}

function executeWebService(webServiceId, lang) {
	var query = new Array(), form = $('popin').getElementsByTagName('form')[0];
	for (var i = 0; i < form.elements.length; i++) {
		if (form.elements[i].name != '') {
			query.push(encodeURIComponent(form.elements[i].name) + '=' + encodeURIComponent(form.elements[i].value));
		}
	}
	query.push(encodeURIComponent("lang") + '=' +encodeURIComponent(lang));

	if (window.XMLHttpRequest) {
		var request = new XMLHttpRequest();
		request.open( "POST", 'cmd-' + webServiceId + '.php?' + query.join('&'), true );
		var body = query.join('&');
		request.send( body );
		request.onreadystatechange = function() {
			var reply = request.responseText.parseJSON();
			if (reply.messages && (reply.messages.length > 0)) {
				window.alert(reply.messages.join('\n'));
			}
			if (Boolean(reply.result)) { hidePopin(); }
		}
	} else  {
		var request = new Ajax.Request(
				'cmd-' + webServiceId + '.php',
				{
					method: 'post',
					parameters: query.join('&'),
					onComplete: function(originalRequest) {
						var reply = originalRequest.responseText.parseJSON();
						if (reply.messages && (reply.messages.length > 0)) {
							window.alert(reply.messages.join('\n'));
						}
						if (Boolean(reply.result)) { hidePopin(); }
					}
				}
		);
	}
}

function getLanguageIdFromURL() {
	var params, matches;
	if (matches = document.location.search.match(/^\?(.+)$/)) {
		params = matches[1].split('&');
		for (var i = 0; i < params.length; i++) {
			matches = new Array();
			if (matches = params[i].match(/^([^=]+)=([^=]+)$/)) {
				if (matches[1].toLowerCase() == 'lang') {
					return matches[2].toLowerCase();
				}
			}
		}
	}
	return false;
}

var wsLoadedStyleSheets = new Array();
