
var updateExampleUrl = function(param) {
  return function(e) {
    var el = new Element(e.target);
    var new_uri = $('example-uri').get('text');
    var regex = new RegExp('&(<b>)?' + param + '=[^&]+(<\/b>)?');
    if(regex.test(new_uri)) {
      if(el.getProperty('value')) 
        new_uri = new_uri.replace(regex, '&<b>' + param + '=' + el.getProperty('value') + '</b>');
      else
        new_uri = new_uri.replace(regex, '');
    } else if(el.getProperty('value')) {
      new_uri += '&<b>' + param + '=' + el.getProperty('value') + '</b>';
    }
    $('example-uri').set('html', new_uri.replace('?', '<br/>?'));
  };
}

var formatResponse = function(text, format) {
  if(text.indexOf('<') == 0) {
    return text.replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/\n/g, '<br/>').replace(/\t/g, '&nbsp;&nbsp;');
  } else {
    return text.replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/\n/g, '<br/>').replace(/\t/g, '&nbsp;&nbsp;');
  }
}


window.addEvent('domready', function() {
  var f;
  if(f = $('example-form')) {
    f.setProperty('target', '_blank');

    f.getElements('SELECT').each(function(elem) {
      elem.addEvent('change', updateExampleUrl(elem.getProperty('name')));
      elem.addEvent('keyup', updateExampleUrl(elem.getProperty('name')));
    });

    f.getElements('INPUT').each(function(elem) {
      if(elem.getProperty('type') != 'text') return;

      elem.addEvent('change', updateExampleUrl(elem.getProperty('name')));
      elem.addEvent('keyup', updateExampleUrl(elem.getProperty('name')));
    });

    f.addEvent('submit', function(e) {
      var ev = new Event(e);
      ev.stop();

      $('example-response').empty().addClass('response-loading');

      f.get('send').addEvent('success', function(response_text) {

        response_text = formatResponse(response_text);

        $('example-response').removeClass('response-loading');

        $('example-response').set('html', response_text);
        // $('example-response').addClass('brush: xml; font-size: 80%');
        // SyntaxHighlighter.highlight();

        var query = '?' + f.toQueryString().substring(0,80) + '...';
        $('example-response-footer').set('html','Service URI: <a href="/opencollection/api/?' + f.toQueryString() + '" target="_blank">' + query + '</a></p>');

      });
      f.send();
    });
  }
});
