// JavaScript Document
// ricoDragAndDropCustomDropZone.js
// Search Bubbler prototype

var CustomDropzone = Class.create();

CustomDropzone.prototype = (new Rico.Dropzone()).extend( {

   initialize: function( htmlElement, header ) {
      this.htmlElement  = $(htmlElement);
      this.header       = $(header);
      this.absoluteRect = null;
      this.acceptedObjects = [];

      this.offset = navigator.userAgent.toLowerCase().indexOf("msie") >= 0 ? 0 : 1;
   },

   activate: function() {
      new Rico.Effect.FadeTo( this.htmlElement, .5, 250, 4 );
   },

   deactivate: function() {
      new Rico.Effect.FadeTo( this.htmlElement, 1, 250, 4 );
   },

   showHover: function() {
      if ( this.showingHover )
         return;
      this.header.style.color = "#000000";
      new Rico.Effect.FadeTo( this.htmlElement, .1, 250, 4 );
      this.showingHover = true;
   },

   hideHover: function() {
      if ( !this.showingHover )
         return;
      this.header.style.color = "#5b5b5b";
      new Rico.Effect.FadeTo( this.htmlElement, .5, 250, 4 );
      this.showingHover = false;
   },

   accept: function(draggableObjects) {

      n = draggableObjects.length;
      for ( var i = 0 ; i < n ; i++ ) {
         this._insertUnsorted(draggableObjects[i]);
        refineResults(this.htmlElement.id, draggableObjects[i].name);
        }
    },

   canAccept: function(draggableObjects) {
     // for ( var i = 0 ; i < draggableObjects.length ; i++ ) {
     //    if ( draggableObjects[i].type != "Custom" )
     //       return false;
     //    var firstChar = draggableObjects[i].name.substring(0,1).toLowerCase();
     //    if ( firstChar < this.from || firstChar > this.to )
     //       return false;
     // }

      return true;
   },

   _newdrag: function ( i, name) {
     var div = document.createElement("div");
     
      new Insertion.Top( div, "<span id='" + this.header.id + i + "' class='nameSpan'>" + name + "</span>" );
      
      return div;
   //var sp = document.createElement("span");
   //sp.id = this.header.id + i;
   //sp.innerHtml = name;
   //sp.setAttribute('class','nameSpan');
   //sp.setAttribute('style','border:3px solid #ffffee;background-color:#E0DDB5');
   //return sp;
   },

   _insertSorted: function( aDraggable ) {
      var theGUI = aDraggable.getDroppedGUI();
      var thisName = aDraggable.name;
      var position = this._getInsertPosition(aDraggable);
      theGUI = this._newdrag(this.acceptedObjects.length, thisName);
      
      if ( position == "append" )
         this.htmlElement.appendChild(theGUI);
      else
         this.htmlElement.insertBefore( theGUI, this.htmlElement.childNodes[position+this.offset]  );
      dndMgr.registerDraggable( new CustomDraggable($(this.header.id + this.acceptedObjects.length), thisName) );
      this.acceptedObjects[ this.acceptedObjects.length ] = aDraggable.name;
      this.acceptedObjects.sort();
                
      },
      
  _insertUnsorted: function( aDraggable ) {
      var theGUI = aDraggable.getDroppedGUI();
      var thisName = aDraggable.name;
      
      theGUI = this._newdrag(this.acceptedObjects.length, thisName);
      
      //document.getElementById('tagscell').innerHTML =
      this.htmlElement.appendChild(theGUI);
      dndMgr.registerDraggable( new CustomDraggable($(this.header.id + this.acceptedObjects.length), thisName) );
      this.acceptedObjects[ this.acceptedObjects.length ] = aDraggable.name;
      //this.acceptedObjects.sort();
                
      },
   _getInsertPosition: function(aDraggable) {
      for( var i = 0 ; i < this.acceptedObjects.length ; i++ )
         if ( aDraggable.name < this.acceptedObjects[i] ) {
            return i;
         }
       return "append";
   }

} );
