/*  Prototype-ex: an extension of Prototype, an object-oriented Javascript library, version 1.0.1
 *  (c) 2005 Sam Stephenson <sam@conio.net>, M@ McCray <darthapo@gmail.com>
 *
 *  Prototype and Prototype-Ex is freely distributable under the terms of an MIT-style license. 
 *  For details, see http://prototype.conio.net/ and http://www.mattmccray.com
 */

Focus = {
   first: function( form ) {
      var f = $(form);
      for( var i=0; i<f.elements.length; i++ ) {
         var elem = f.elements[i];
         if( elem.type != 'hidden') {
            elem.focus();
            elem.select();
            break;
         }
      }
   }
};

Insert = {
   before_begin: function( dom, html ) {
      dom = $(dom);
      var r = dom.ownerDocument.createRange();
      r.setStartBefore(dom);
      var df = r.createContextualFragment( html );
      dom.parentNode.insertBefore( df, dom );
   },
   after_begin: function( dom, html ) {
      dom = $(dom);
      var r = dom.ownerDocument.createRange();
      r.selectNodeContents(dom);
      r.collapse(true);
      var df = r.createContextualFragment( html );
      dom.insertBefore(df, dom.firstChild );
   },
   before_end: function( dom, html ) {
      dom = $(dom);
      var r = dom.ownerDocument.createRange();
      r.selectNodeContents(dom);
      r.collapse(dom);
      var df = r.createContextualFragment( html );
      dom.appendChild( df );
   },
   after_end: function( dom, html ) {
      dom = $(dom);
      var r = dom.ownerDocument.createRange();
      r.setStartAfter(dom);
      var df = r.createContextualFragment( html );
      dom.parentNode.insertBefore(df, dom.nextSibling);
   }
};

Ajax.Updater.prototype.updateContent = function() {
   if( this.request.transport.prepend )
      Insert.after_begin( this.container, this.request.transport.responseText );   
   else if( this.request.transport.append )
      Insert.before_end( this.container, this.request.transport.responseText );   
   else
      this.container.innerHTML = this.request.transport.responseText;
        
    if (this.onComplete) this.onComplete(this.request);
 };

