function DomHelper()
{
  this.findTagsByAttribute = dhFindTagsByAttribute;
  this.enable = dhEnable;
  this.disable = dhDisable;
  this.get     = dhGet;
  this.populate = dhPopulate;
  this.append = dhAppend;
  this.prepend = dhPrepend;
  this.hide = dhHide;
  this.show = dhShow;
  this.executeJavascript = dhExecuteJavascript;
  this.debug = dhDebug;
  this.addOnLoadEvent = dhAddOnLoadEvent;
  this.jquerySubmit = dhJQuerySubmit;
  this.jqueryPost = dhJQueryPost;
  this.getComputedStyleElement = dhGetComputedStyleElement;
  this.swapClass = dhSwapClass;
  this.getScript = dhGetScript;
  
  function dhSwapClass(id,toRemove,toAdd)
  {
    jQuery("#"+id).removeClass(toRemove);
    jQuery("#"+id).addClass(toAdd);
  }
  
  function dhGetComputedStyleElement(x,styleProp)
  {
    if( x )
    {
      if (x.currentStyle)
        var y = x.currentStyle[styleProp];
      else if (window.getComputedStyle)
        var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
      return y;
    }
  }
  
  function dhAddOnLoadEvent(func) 
  { 
    var oldonload = window.onload; 
    if (typeof window.onload != 'function') 
    { 
      window.onload = func; 
    } 
    else 
    { 
      window.onload = function() 
      { 
        if (oldonload) 
        { 
          oldonload(); 
        } 
        func(); 
      } 
    } 
  } 

  function dhFindTagsByAttribute( name, value, nameTwo  )
  {
    var toReturn = Array();
    var allTags = document.getElementsByTagName('*');
    for (var x=0; x < allTags.length; x++)
    {
      if(!value && allTags[x].getAttribute(name) || value && allTags[x].getAttribute(name) == value)
      {
        toReturn[toReturn.length] = allTags[x];
      }
    }
    if( nameTwo )
    {
      var originalArray = toReturn;
      toReturn = Array();
      for( var x = 0; x < originalArray.length; x++ )
      {
        if( originalArray[x].getAttribute(nameTwo) )
        {
          toReturn[toReturn.length] = originalArray[x];
        }
      }
    }
    
    return toReturn;
  }
  
  function dhDisable(elementID)
  {
    try
    {
      get(elementID).disabled = true;
    }
    catch(e)
    {
      this.debug(e);;
    }
  }


  function dhEnable(elementID)
  {
    try
    {
      get(elementID).disabled = false;
    }
    catch(e)
    {
      this.debug(e);;
    }
  }

  function dhDebug(e)
  {
    var s = e+ " ";
    for( x in e )
    {
      s += "\n " + x + ": " + eval("e."+x);
    }
    
    //alert(s);
  }
    
  function dhExecuteJavascript(resultDiv)
  {
    try
    {
      var result = document.getElementById(resultDiv);
      if( result )
      {
        var allTags = result.getElementsByTagName('script');
        for (var x=0; x < allTags.length; x++)
        {
          var element = allTags[x];
          if( element.innerHTML.length > 1 )
          {
            eval(element.innerHTML);
          }
          
        }
      }
    }
    catch(e)
    {
      this.debug(e);;
    }
  }

  function dhGet(elementID)
  {
    return document.getElementById(elementID);
  }


  function dhHide(elementID)
  {
    try
    {
      document.getElementById(elementID).style.display="none";
    }
    catch(e)
    {
      this.debug(e);;
    }
  }

  function dhShow(elementID)
  {
    try
    {
      document.getElementById(elementID).style.display="block";
    }
    catch(e)
    {
      this.debug(e);;
    }
  }

  function dhPopulate(elementID, contents)
  {
    try
    {
      document.getElementById(elementID).innerHTML=contents;
    }
    catch(e)
    {
      this.debug(e);;
    }
  }

  function dhPrepend(elementID, contents)
  {
    try
    {
      document.getElementById(elementID).innerHTML = contents + document.getElementById(elementID).innerHTML;
    }
    catch(e)
    {
      this.debug(e);;
    }
  }

  function dhAppend(elementID, contents)
  {
    try
    {
      document.getElementById(elementID).innerHTML = document.getElementById(elementID).innerHTML + contents;
    }
    catch(e)
    {
      this.debug(e);;
    }
  }
  
  function dhJQueryPost(formID, callBack)
  {
    var formData  = jQuery("#"+formID).serialize();
    var form      = document.getElementById(formID);
    var action    = form.action;
    jQuery.post(action, formData, callBack);
  }
  
  function dhJQuerySubmit(url, formID)
  {
    var formData = jQuery("#"+formID).serialize();
    jQuery.getScript(url + "?"+formData);
  }
  
  function dhGetScript(url)
  {
    jQuery.getScript(url);
  }
  
}
var domHelper = new DomHelper();

