//constructor
//========================================================
function pDAFSelectClass() 
//========================================================
{

}

//========================================================
pDAFSelectClass.prototype = 
//========================================================
{
  updateDependentSelects : function (aParentSelect, aDependentIDs)
  {
    if (aParentSelect)
    {
      // selected value of the parent select
      var sParentValue = aParentSelect.options[aParentSelect.selectedIndex].value;
  
      for (var nIndex in aDependentIDs)
      {
        var sDependentID = aDependentIDs[nIndex];
        var aDependent = jphloc.ge(sDependentID);
        if (aDependent)
        {
          sajax_do_call(null, 
                        "pDAFSelect.getUpdatedDependent", 
                        {callback:pDAFSelect.updateDependentCallback, extra_data:[sDependentID]},
                        [sDependentID, sParentValue]);    
        }
      }
    }
  },

  updateDependentCallback : function (sResultXHTMLSniplet, extra_data)
  {
    var sID = extra_data[0];
    var aDependent = jphloc.ge(sID);
    if (aDependent)
    {
      sResultXHTMLSniplet = sajax_clean_result(sResultXHTMLSniplet);
      var aNewElem = jphloc.outerHTML(aDependent, sResultXHTMLSniplet);
      if (typeof(aNewElem.onchange) == "function")
        aNewElem.onchange();
    }
  },
  
  correctSelectStyles : function (aSelect)
  {
    if (aSelect)
    {
      aSelectJQ = $(aSelect);
      var aSelectedOptionJQ = aSelectJQ.find("option:selected");
      if (aSelectedOptionJQ)
      {
        var aAddedClasses = aSelect.getAttribute("addedClasses");
        if (aAddedClasses)
        {
          aSelectJQ.removeClass(aAddedClasses);
        }
        var aClassesToAdd = aSelectedOptionJQ.attr("class");
        aSelectJQ.addClass(aClassesToAdd);
        aSelect.setAttribute("addedClasses", aClassesToAdd);
      }
    }
  },
  
  correctSelectStylesAsync : function (aSelect)
  {
    window.setTimeout(function (){ pDAFSelect.correctSelectStyles(aSelect);}, 1);
  }
}

/*
(function($) {
  // Mark elements as enabled or disabled
  $.fn.correctSelectStyle = function() {
    return this.each( function() {
      alert(this);
    });
  };
})(jQuery);

*/

//If DOM tree parsed completely...
$( function() {
  // for all selects, we apply the styles of the currently selected option to the select
  $("select").each(function(index) {
    pDAFSelect.correctSelectStyles($(this).context);
  });
  //$("select").correctSelectStyle();
  });

var pDAFSelect = window.pDAFSelect = new pDAFSelectClass();

