﻿/**********************************/
/*        Author: David DC.       */ 
/*        Date: 11/06/2008        */
/**********************************/

// SET THE CLIENTID OF THE DROPDOWNBOX CONTROL !!!
var controlid = "ctl00_cntPlhMainPlaceholder_siteSearch_ddbCategories";
var imagesFolder = "/Controls/DropDownBox/images/";

var DropDownBox = {
    ID : "",

    ASP_ControlID : "",
    
    Get : function(){
        return $(this.ID);
    },
    
    Click : function(){       
        Label.ToggleBg();
        Panel.Toggle(); 
        Panel.SetDimensions();
        Overlay.Toggle();   
        Panel.ControlWheelScrolling();
    }
};

var Panel = {
    ID : "",
    
    Get : function(){
        return $(this.ID);
    },  

    Toggle : function(){
        var o = this.Get();
        if(o.style.display != 'none')
            this.SetDisplay("none");
        else
            this.SetDisplay("block");
    },     
        
    SetDisplay : function(d){
        var o = this.Get();
        o.style.display = d;
    }, 
    
    SetDimensions : function(){
        var t = Table.Get(), p = this.Get();
        p.style.width = "1000px";               
        var w = t.offsetWidth, h = t.offsetHeight;
        (w<140)? w=140 : w;
        if(h>300){ h=300; w+=17; }       
        p.style.height = h;        
        p.style.width = w; 
        
    },
    
    ControlWheelScrolling : function(){   
        var o = this.Get();     
        hookEvent(o, 'mousewheel', MouseWheel);
    }
};

var Table = {
    ID : "", 
    
    Get : function(){
        return $(this.ID);
    }                    
};

var Label = {
    ID : "",
    
    Get : function(){
        return $(this.ID);
    },
    
    ToggleBg : function(){
        var o = this.Get();
        if(o.style.backgroundImage != "url("+imagesFolder+"drop_on.gif)")
            o.style.backgroundImage = "url("+imagesFolder+"drop_on.gif)";
        else
            o.style.backgroundImage = "url("+imagesFolder+"drop.gif)";
        
    }
};

var Overlay = {
    ID : "",
    
    Get : function(){
        return $(this.ID);        
    },
    
    Toggle : function(){
        var o = this.Get();
        if(o.style.display != 'none')
            this.SetDisplay("none");
        else
            this.SetDisplay("block");
    }, 
    
    SetDisplay : function(d){
        var o = this.Get();
        o.style.display = d;
    }, 
    
    Click : function(){
        DropDownBox.Click();
    }
};

function $(id)
{
    return document.getElementById(id);
}

function hookEvent(element, eventName, callback)
{
  if(typeof(element) == "string")
    element = document.getElementById(element);
  if(element == null)
    return;
  if(element.addEventListener)
  {
    if(eventName == 'mousewheel')
    {
      element.addEventListener('DOMMouseScroll',
        callback, false); 
    }
    element.addEventListener(eventName, callback, false);
  }
  else if(element.attachEvent)
    element.attachEvent("on" + eventName, callback);
}

function unhookEvent(element, eventName, callback)
{
  if(typeof(element) == "string")
    element = document.getElementById(element);
  if(element == null)
    return;
  if(element.removeEventListener)
  {
    if(eventName == 'mousewheel')
    {
      element.removeEventListener('DOMMouseScroll',
        callback, false); 
    }
    element.removeEventListener(eventName, callback, false);
  }
  else if(element.detachEvent)
    element.detachEvent("on" + eventName, callback);
}

function cancelEvent(e)
{
  e = e ? e : window.event;
  if(e.stopPropagation)
    e.stopPropagation();
  if(e.preventDefault)
    e.preventDefault();
  e.cancelBubble = true;
  e.cancel = true;
  e.returnValue = false;
  return false;
}

function MouseWheel(e)
{
  e = e ? e : window.event;
  var raw = e.detail ? e.detail : e.wheelDelta;
  var normal = e.detail ? e.detail * -1 : e.wheelDelta / 40;
  Panel.Get().scrollTop += (raw*5);
  cancelEvent(e);
}

DropDownBox.ASP_ControlID = controlid + "_";
DropDownBox.ID = "DropDownBox";
Panel.ID = "DropDownBox_Panel";
Label.ID = "DropDownBox_Label";
Table.ID = DropDownBox.ASP_ControlID + "chbList";
Overlay.ID = "DropDownBox_Overlay"

