function submitRegistrationForm(requestUrl, redirectUrl) {
	$('reg_btn_id').disabled = true;
	
	new Ajax.Request(requestUrl,
    {
    	method:'post',
    	parameters: $('regform').serialize(true),
    	onSuccess: function(transport) {
    			var response = transport.responseText.evalJSON();
    			
    			if (!response.status) { // validation failed
     				var first = 1;
					var keys = Object.keys(response.errors);
					
					$('reg_btn_id').disabled = false;
     				
     				for (var i=0; i < keys.length; i++) {
     					var id = keys[i];
						var message = response.errors[id]; 
     					
     					if (message) {
     						$('id_' + id).addClassName('error').update(message).setStyle({display: 'block'});
     						$('f'+id).setStyle({border: '1px solid #ff0000'});
  							
  							if (first) { 
  								$('f'+id).focus();
  								first = 0;
  							}
     					} else {
  							$('id_'+id).update('').setStyle({display: 'none'});
  							$('f'+id).setStyle({border: '1px solid #bcbcbc'});
  						}
     				}
					
    			} else {
     				window.location = response.redirectUrl;	
    			}  				
    		},
    	onFailure: function(){ alert('Can\'t connect to the server.'); }    			
    });
    	
}

/**
 *
 */
function changeCountryZones(requestUrl) {
	new Ajax.Request(requestUrl,
   	{
   		method:'post',
   		parameters: 'countryId='+$('dd_countries').options[$('dd_countries').selectedIndex].value,
   		onSuccess: function(transport) {
      				var response = transport.responseText.evalJSON();
      				
      				// remove all options
      				$('cont_zones').removeChild($('dd_zones'));
      				if (response.zones.length == 0) {
      					var newel = document.createElement('input');
      					newel.type='text';
      					newel.className = 'text';
      				} else {
      					var newel = document.createElement('select');
      				}
      				newel.id='dd_zones';
      				newel.name='f[zone]';
      				$('cont_zones').appendChild(newel);
      				
      				// add new if exists
      				for (var ii=0; ii<response.zones.length; ii++) {
      					var elOptNew = new Option((unescape(response.zones[ii].zoneName)).replace(/\+/g,' '), response.zones[ii].zoneId);
      						
      					try {
    						$('dd_zones').add(elOptNew, null); // standards compliant; doesn't work in IE
  						} catch(ex) {
    						$('dd_zones').add(elOptNew); // IE only
  						}
      				}   				
    			},
   			onFailure: function(){ alert('Can\'t connect to the server.') }    			
    });
	
}

/**
 * 
 */
function oConfirm(msg) {
	return confirm(msg);
} 

/**
 * Dataset list
 */
function toggleAnalysesList(datasetId, url) {
	var shortList = 'short_list_'+datasetId;
	var fullList = 'full_list_'+datasetId;
	if ($(fullList).visible()) {
		$(shortList).show();
		$(fullList).hide();
		$('tgl_an').update('more...');
	} else {
		new Ajax.Updater(fullList, url);
		$(shortList).hide();
		$(fullList).show();
		$('tgl_an').update('hide');
	}
}