private void RegisterClientScript()
{
string script = @"
function populateAttributeKey(nameControlId, keyControlId ) {
// if the attribute key hasn't been filled in yet, populate it with the attribute name minus whitespace
var keyControl = $('#' + keyControlId);
var keyValue = keyControl.val();
var reservedKeyJson = keyControl.closest('fieldset').find('.js-existing-key-names').val();
var reservedKeyNames = eval('(' + reservedKeyJson + ')');
if (keyValue == '') {
keyValue = $('#' + nameControlId).val().replace(/[^a-zA-Z0-9_.\-]/g, '');
var newKeyValue = keyValue;
var i = 1;
while ($.inArray(newKeyValue, reservedKeyNames) >= 0) {
newKeyValue = keyValue + i++;
}
keyControl.val(newKeyValue);
}
}
function validateKey(sender, args) {
var keyControl = $('#' + sender.controltovalidate);
var reservedKeyJson = keyControl.closest('fieldset').find('.js-existing-key-names').val();
var reservedKeyNames = eval('(' + reservedKeyJson + ')');
args.IsValid = ( $.inArray( keyControl.val(), reservedKeyNames ) < 0 && ! keyControl.val().match(/[^a-zA-Z0-9_.\-]/g) );
}
";
ScriptManager.RegisterStartupScript( this, this.GetType(), "AttributeEditor", script, true );
}