
/* Common functions for all pages */

var img_loading = '<img src="/images/action_loading.gif" />';
var img_valid = '<img src="/images/action_valid.png" />';
var img_error = '<img src="/images/action_error.png" />';

function getAutocompleteElement(input,li) {
	var loc = $(li).getAttribute('value');
	if (loc) location.href = loc;
	else $(input).value = '';
}

function getElementId (input, li) {
	var id = $(li).getAttribute('value').split('/').pop();
	var target = $(input).readAttribute('id');
	$(target+'_id').value = id;
	$(input).value = $(li).firstChild.nodeValue;
	if ($('existing')) {
		$('existing').checked=true;
		showHideForm();
	}
}

function showHideForm (elt) {
	// if (!$('existing').checked) $('new').checked = true;
	if ($('new').checked) $('subform').show();
	else $('subform').hide();
	if ($('subform').visible()) if ($(elt)) $(elt).value = '';
}

function inline_validation(field,url,callback)
{
	var result = 'msg_' + field;
	if (!$(result)) {
		new Insertion.After($(field),'<span id="'+ result +'" class="inlinevalidation_result"></span>');
	}
	if ($F(field)) {
		new Ajax.Request(url, { 
			parameters: {value: $F(field), id: $F('id') },
			onLoading: function(){
				$(result).update(img_loading);
			},
			onSuccess: function(req){ 
				var code = rest_msg(req.responseXML);
				if (code == 'ok'){
					$(result).update(img_valid);
					$(field).removeClassName('error').addClassName('valid');
				} else { 
					$(result).update(img_error);
					Form.Element.activate(field).removeClassName('valid').addClassName('error');
				}
				// if (typeof(callback) == 'function') { callback(req); }
			},
			onFailure: function(req){
				display_msg(req.responseText,'error');
			}
		});	
	}
}

function rest_msg (xmldoc) {
	var msg = '';
	var status = xmldoc.getElementsByTagName('rsp')[0].getAttribute('stat');
  if (status == 'fail') {
		msg = xmldoc.getElementsByTagName('err')[0].getAttribute('msg');
		display_msg(msg,'error');
	} else if (status == 'ok'){
		msg = (xmldoc.getElementsByTagName('msg')[0])?xmldoc.getElementsByTagName('msg')[0].firstChild.nodeValue:'';
		if (msg) display_msg(msg,'valid');
	}
	return status;
}


function display_msg (txt,validator) {
	if (txt) {
		if (!validator) validator = 'neutral';
		$('msg').removeClassName('valid').removeClassName('error').removeClassName('warning');
		$('msg').update('<span>'+txt+'</span>').addClassName(validator).addClassName('msg');
		Effect.Appear($('msg'),{duration:.5}); 
		setTimeout("Effect.Fade($('msg'),{duration:.5});",4000);
	}
}

function filters(){
	if ($('filters')) {
		//$('filters').toggle();
		new Effect.toggle('filters','slide');
	}
	else display_msg('Not yet implemented...','warning');
}
