var edt_bg_clr="#ffffff";

var avans_domain_init = function( callback_url, fields, domainId, loadingId ) {

	var loading = $('#' + loadingId);
	var domain = $('#' + domainId);

	var updateData = function( ev_obj ){

	  var obj = $(this);

		// Show loading indicator
		loading.show();

		// Prepare post-parameters
		var params = {};
		for ( var i in fields ) {

			var field = $('#' + i);

			// Gets current select value
			params[ fields[i] ] = field.val();

			// Disable select till values not loaded
			if ( field.is( 'select' ) )
				field.attr('disabled', true);
		} // for

    // Store 'is_init' if loaded first
    if ( !ev_obj )
      params['domain_id'] = domain.val();

		// Request data from server
		$.ajax( {
      'url': callback_url, 'type' : 'POST', 'dataType' : 'json',
      'data' : params,
	    'success' : function( data ) {

		    // store current avans_domain.id
		    domain.val( data.current.domain_id );

		    // Generate select values
		    for ( var i in fields ) {
			    var field = $('#' + i);
			    if ( field.is( 'select' ) ) {
				    var html = [];
				    var el_key = fields[i];
				    $.each( data[el_key], function( key, value) {
					    html.push('<option value="' + key + '"' + (key == data.current[el_key] ? ' selected="selected"' : '') + '>' + value + '</option>');
				    });

				    field.html( html.join(''));

				    // Turn select off back
				    field.attr('disabled', false);
			    } // if
		    }  // for

		    // Hide loading indicator
		    loading.hide();
      }, // success

      // Error handler
	    'error' : function( data, status ) {
			  // Generate select values
			  for (var i in fields) {
				  var field = $('#' + i);
				  if (field.is('select')) {
					  // Turn select off back
					  field.attr('disabled', false);
				  } // if
			  } // for

		    loading.hide();
	    } // error
	   } ); // ajax

	};

	// Set handler 'onchange'
	for (var i in fields) {
		$('#' + i).change(updateData);
	}

	// Refresh data on load
	updateData(null);
}
