Codebase.load("http://codebase.gd-ks.com/js/Style.js");

var Element={
   
   destroy: function(el)
      {
         while(el.firstChild)
         {
            var temp=Element.extend(el.firstChild);
            
            if(typeof(temp.destroy)=="function")
               temp.destroy();
         }
      
         el.parentNode.removeChild(el);
         delete el;
      },
   
   /*
       3 paramater options:
          1. 2 parameters, property/value pairs.  Non-camelized properties will be camelized. (fastest, single property)
          2. 1 parameter, Style object(pre camelized) with property/value pairs, semi-colon delimiter (fastest, multi-property) -----> could add extra conditional for non-camelized
          3. 1 parameter, Style definition string (slowest, single or multi)
          
   */
   toggleDisplay: function(el)
      {
         var tempDisplay;
         
         switch(el.tagName)
         {
            case "DIV" : tempDisplay="block";
               break;
            case "SPAN" : tempDisplay="inline";
               break;
            case "TABLE" : tempDisplay="table";
               break;
            case "TR" : tempDisplay="table-row";
               break;
            case "TD" : tempDisplay="table-cell";
               break;
            default : tempDisplay="block";
         }
         
         el.style.display=(el.style.display=="none" ? tempDisplay : "none");
      },
  
   toggleVisibility: function(el)
      {
         el.style.visibility=(el.style.visibility=="" || el.style.visibility=="visible" ? "hidden" : "visible");
      },
      
   disableSelection: function(el)
      {
         el.style.MozUserSelect="none";
         el.style.KhtmlUserSelect="none";
         el.unselectable="on";
      },
       
   enableSelection: function(el)
      {
         el.style.MozUserSelect="";
         el.style.KhtmlUserSelect="";
         el.unselectable="off";
      },
      
   center: function(el)
      {
         return Style.setAttributes(el, {"position":"fixed", 
                                         "top":((window.innerHeight ? window.innerHeight : (document.documentElement.clientHeight ? document.documentElement.clientHeight : (document.body ? document.body.clientHeight : 0)))/2-Element.getHeight(el)/2 + "px"), 
                                         "left":((window.innerWidth ? window.innerWidth : (document.documentElement.clientWidth ? document.documentElement.clientWidth : (document.body ? document.body.clientWidth : 0)))/2-Element.getWidth(el)/2 + "px")});
      },
      
   _getBorderWidthObj: function(el)
      {
         var _el=el;
         
         var t=((Browser.isOpera || Browser.isFF) ? parseInt(_el.style.borderTopWidth) : (Browser.isSafari ? parseInt(_el.style.getPropertyValue("border-top-width")) : parseInt(_el.style.border)));
         var l=((Browser.isOpera || Browser.isFF) ? parseInt(_el.style.borderLeftWidth) : (Browser.isSafari ? parseInt(_el.style.getPropertyValue("border-left-width")) : parseInt(_el.style.border)));
         var b=((Browser.isOpera || Browser.isFF) ? parseInt(_el.style.borderBottomWidth) : (Browser.isSafari ? parseInt(_el.style.getPropertyValue("border-bottom-width")) : parseInt(_el.style.border)));
         var r=((Browser.isOpera || Browser.isFF) ? parseInt(_el.style.borderRightWidth) : (Browser.isSafari ? parseInt(_el.style.getPropertyValue("border-right-width")) : parseInt(_el.style.border)));
         
         return {top: t,
                 left: l,
                 bottom: b,
                 right: r};
         
      },
      
   getInnerLeft: function(el)
      {
         var borderLeftWidth=Element._getBorderWidthObj(el).left;
         
         return Element.getLeft(el)+borderLeftWidth;
      },
      
   getInnerTop: function(el)
      {
         var borderTopWidth=Element._getBorderWidthObj(el).top;
         
         return Element.getTop(el)+borderTopWidth;
      },
      
   getInnerWidth: function(el)
      {
         var borderLeftWidth=Element._getBorderWidthObj(el).left;
         var borderRightWidth=Element._getBorderWidthObj(el).right;
         
         return Element.getWidth(el)-borderLeftWidth-borderRightWidth;
      },
      
   getInnerHeight: function(el)
      {
         var borderTopWidth=Element._getBorderWidthObj(el).top;
         var borderBottomWidth=Element._getBorderWidthObj(el).bottom;
         
         return Element.getHeight(el)-borderTopWidth-borderBottomWidth;
      },
      
   getLeft: function(el)
      {
         elem=el;
         
         var currentLeft=0;
         if(elem.offsetParent)
         {
            while(elem.offsetParent)
            {
               currentLeft+=elem.offsetLeft;
               elem=elem.offsetParent;
            }
         }
         else if(elem.x)
         {
            currentLeft+=elem.x;
         }
         
         return currentLeft;
      },
   
   getTop: function(el)
      {
         var currentTop=0;
         
         elem=el;

         if(elem.offsetParent)
         {
            while(elem.offsetParent)
            {
               currentTop+=elem.offsetTop;
               elem=elem.offsetParent;
            }
         }
         else if(elem.y)
         {
            currentTop+=elem.y;
         }

         return currentTop;
      },
      
   getWidth: function(el)
      {
         return el.offsetWidth;
      },
      
   getHeight: function(el)
      {
         return el.offsetHeight;
      },
  
   addClassName: function(el, tempClassName)
      {
         if(!Element.classNameExists(el, tempClassName))
         {
            el.className+=" " + tempClassName;
            
            return true;
         }
         return false;
      },

   removeClassName: function(el, tempClassName)
      {
         return (Element.replaceClassName(el, tempClassName, ""));
      },
  
   replaceClassName: function(el, oldClassName, newClassName)
      {
         if(Element.classNameExists(el, oldClassName))
         {
            el.className=el.className.replace(oldClassName, newClassName);

            return true;
         }

         return false;
      },

   classNameExists: function(el, tempClassName)
      {
         var classArray=el.className.split(" ");

         for(var i=0; i<classArray.length; i++)
            if(new RegExp("(^|\\s)" + tempClassName + "(\\s|$)").test(classArray[i]))
               return true;

         return false;
      }
};

//Object.extend(window, {resizeInnerTo: function(w, h){ el.resizeTo(w, h); el.resizeTo(w+(w-el.document.body.clientWidth), h+(h-el.document.body.clientHeight)); }});