function init_common() {
	makebutton($('logout_button').observe('click', logout));

	//XXX: this does not seem to work.
	Ajax.Responders.register({
		onFailure: function() {
			alert('Failure talking to server');
		}
	});
}

function logout() {
	document.location.href='/admin/logout.php'; 
}

/* xslt */
function transform(xml, xsl) {
	// takes an xml object and an xsl object and outputs resulting html object.
        if (window.ActiveXObject) {
			var html = xml.transformNode(xsl);
		} else if (window.XMLHttpRequest) { 
				var xsltProcessor = new XSLTProcessor();
                var xslStylesheet = xsl.responseXML;
                xsltProcessor.importStylesheet(xslStylesheet);
                var html = xsltProcessor.transformToFragment(xml, document);
        }
        return html;
		
}

function load_xsl(file) {
	// loads xsl file from server.
        if (window.ActiveXObject) {
                // Load XSL
                var xsl = new ActiveXObject("Microsoft.XMLDOM");
                xsl.async = false;
                xsl.load(file);
        } else if (window.XMLHttpRequest) { 
                // load the xslt file, example1.xsl
                var xsl = new XMLHttpRequest();
                xsl.open("GET", file, false);
                xsl.send(null);
        }
        return xsl;
}

function insert(id, html) {
	// inserts transformation result into page.
	$(id).innerHTML = '';
	if (window.ActiveXObject) {
		$(id).innerHTML = html;
	} else if (window.XMLHttpRequest) { 
		$(id).appendChild(html);
	}
}

/* messagse */
function show_messages(xml) {
	var xsl = load_xsl('/admin/common/messages.xsl');
	var html = transform(xml, xsl);
	if (xml.getElementsByTagName('msg').length > 0 || xml.getElementsByTagName('err').length > 0 || xml.getElementsByTagName('result').length > 0) {
		insert('messages', html);
		$('messages').style.display = 'block';
		$('messages').focus();
	}
}

function show_form_errors(formid, xml) {
	// clear old errors
	var fe = $$('div.form_error');
	for (var i = 0; i < fe.length; i++)
		fe[i].remove();

	var err = xml.getElementsByTagName('form_errors');

	// are there any form errors?
	if (err.length == 0)
		return;
	else
		err = err[0].childNodes;

	var form = $(formid);
	
	// insert error messages
	for (var i = 0; i < err.length; i++) {
		var div = document.createElement('div');
		div.appendChild(document.createTextNode(err[i].firstChild.nodeValue));
		div.className='form_error'; 
		form.select('*[name="' + err[i].tagName + '"]')[0].parentNode.appendChild(div);
	}
}

function is_result(xml) {
	if (xml.getElementsByTagName('result').length == 1)
		return true;
	else
		return false;
}

function hide_messages() {
	$('messages').style.display = 'none';
}

/* css buttons */
function makebutton(obj) {
		obj.onmousedown=press;
		obj.onmouseup=unpress;
		obj.onmouseout=unpress;
}

function unset_waiting(btn) { 
	btn.className='css_button'; 
} 

function set_waiting(btn) { 
	btn.className='css_button_disabled'; 
} 

function press() {
	this.className='css_button_pressed';
}

function unpress() {
	this.className='css_button';
}

