function openWebService(webServiceId, styleSheet) {
	var loadedStyleSheet;
	if (wsLoadedStyleSheets.length > 0) {
		while (loadedStyleSheet = wsLoadedStyleSheets.pop()) {
			unloadStyleSheet(loadedStyleSheet);
		}
	}
	if (styleSheet) {
		var ssFilename = styleSheet;
	} else {
		var ssFilename = '/styles/' + webServiceId + '.css';
	}
	if (!isStyleSheetLoaded(ssFilename)) {
		loadStyleSheet(ssFilename);
		wsLoadedStyleSheets.push(ssFilename);
	}

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

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

function executeWebService(webServiceId) {
	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));
		}
	}

	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();
