var default_index = -1;

addDOMLoadEvent = (function(){
    // create event function stack
    var load_events = [],
        load_timer,
        script,
        done,
        exec,
        old_onload,
        init = function () {
            done = true;

            // kill the timer
            clearInterval(load_timer);

            // execute each function in the stack in the order they were added
            while (exec = load_events.shift())
                exec();

            if (script) script.onreadystatechange = '';
        };

    return function (func) {
        // if the init function was already ran, just run this function now and stop
        if (done) return func();

        if (!load_events[0]) {
            // for Mozilla/Opera9
            if (document.addEventListener)
                document.addEventListener("DOMContentLoaded", init, false);

            // for Internet Explorer
            /*@cc_on @*/
            /*@if (@_win32)
                document.write("<script id=__ie_onload defer src=//0><\/scr"+"ipt>");
                script = document.getElementById("__ie_onload");
                script.onreadystatechange = function() {
                    if (this.readyState == "complete")
                        init(); // call the onload handler
                };
            /*@end @*/

            // for Safari
            if (/WebKit/i.test(navigator.userAgent)) { // sniff
                load_timer = setInterval(function() {
                    if (/loaded|complete/.test(document.readyState))
                        init(); // call the onload handler
                }, 10);
            }

            // for other browsers set the window.onload, but also execute the old window.onload
            old_onload = window.onload;
            window.onload = function() {
                init();
                if (old_onload) old_onload();
            };
        }

        load_events.push(func);
    }
})();


addDOMLoadEvent(onReady);

//do on ready
function onReady()
{
  do_showlevels(false); 
}

function add_level(levels,level,name,selectedlevels)
{
  pos = document.getElementById('dl').options.length
  if ((levels & level) != 0)
  {
    selectedlevels[selectedlevels.length] = level;
    document.getElementById('dl').options[pos] = new Option(name,level);
  }
}

function do_showlevels(ig_default_index)
{
	//if a list of levels exists
	if (document.getElementById('dl') != null)
	{
  	// remove old levels
	  while(document.getElementById('dl').options[0] != null) { document.getElementById('dl').options[0] = null }
		// get default index
		if (document.getElementById('active_level') != null)
		  default_index = document.getElementById('active_level').value
  
	  if ((document.getElementById('pid').selectedIndex == 0) && (default_index <= 0))
	  {
	    document.getElementById('dl').options[0] = new Option(" - All Degree Levels - ",'');
	    return
	  }
	    // get expected levels
	  levels = document.getElementById('pid').options[document.getElementById('pid').selectedIndex].attributes['levels'].value
  
	  document.getElementById('dl').options[0] = new Option(" - All Degree Levels - ",'');
	  selectedlevels = [0xFF]
	  add_level(levels,0x02,"Associate Degree",selectedlevels);
	  add_level(levels,0x04,"Bachelor Degree",selectedlevels);
	  add_level(levels,0x08,"Masters Degree",selectedlevels);
	  add_level(levels,0x10,"PhD Degree",selectedlevels);
	  add_level(levels,0x20,"Certification",selectedlevels);
	  add_level(levels,0x01,"HS Diploma",selectedlevels);
  
	  if (!ig_default_index)
	  {
	    for(i=1;i<selectedlevels.length;i++)
	      if (default_index == selectedlevels[i])
	      {
	        document.getElementById('dl').selectedIndex = i;
	      }
	  }
	}
}