function InitDrops(key) {
	var obj = document.getElementById('ProfessionDrop_' + key);
	var s = '';
	
	if (obj) {
		s += '<option value=\"0\">Any Profession</option>';
		for(var key1 in Traits) {
			var Trait = Traits[key1];
			var x2 = "";
			
			if (Trait.TraitCatID == 1) {
				if (Trait.check) {
					x2 = "selected=\"selected\"";
				}
				s += '<option value=\"' + Trait.id + '\" '+x2+'>' + Trait.D2 + '</option>';
			}
		}
		s = '<select id="Profession" class="box1select" name="Profession" onchange=\"UpdateProfession(\''+ key +'\');\">' + s + '</select>';
	}
	obj.innerHTML = s;	
	PlanVisibility();
	DisplayTree(key);
}


///////////////////////////////////////////


function UpdateTrait(obj,key) {
	var t = null;
	
	for(var i=0;i<obj.options.length;i++) {
		var o = obj.options[i];
		var x = o.value;
		
		t = Traits[o.value];
		if (t) {
			t.check = 0;
		}
	}

	t = Traits[obj.value];
	
	if (t) {
		t.check = 1;
	}
	PlanVisibility();
	DisplayTree(key);
}


function PlanVisibility() {
	for(var key in Traits) {
		Traits[key].visible = 0;
	}

	for(var key in Traits) {
		var Trait = Traits[key];
		if (Trait.check == 1) {
			if (Trait.children) {		
	    		var le= Trait.children.length;
	            for(var i=0;i<le;i++) {
	            	var ChildID = Trait.children[i];
	            	var ChildTrait = Traits[ChildID];
            		Traits[ChildID].visible = 1;
				}
			}
		}				
	}
}	


function UpdateProfession(key2) {
	var Prof = document.getElementById("Profession");
	var Profession = Prof.value;
    
    if (Profession == 0) {
        var dln = document.getElementById('ProviderLocDocName');
        if (dln) { dln.style.display = 'block'; }
    } else {
        var dln = document.getElementById('ProviderLocDocName');
        if (dln) { dln.style.display = 'none'; }
    }

	// turn everything off
	for(var key in Traits) {
		var Trait = Traits[key];	
		Trait.visible = 0;
		Trait.check = 0;
	}

	if (Traits[Profession]) {
		Traits[Profession].check = 1;
	}
	PlanVisibility();
	DisplayTree(key2);		
}



function DisplayTree(key2) {
	var arr = new Array();
	arr["2"] = new Array();
	arr["3"] = new Array();
	arr["4"] = new Array();
	arr["5"] = new Array();

	for(var key in Traits) {
		var Trait = Traits[key];
		
		if (Trait.TraitCatID > 1) {
			if (Trait.visible == 1) {
				// add it to the display list.
				var html_box = "";
				if (Trait.TraitGroup) {
					html_box += Trait.TraitGroup + "|";
				}
				else {
					html_box += "|";
				}
								
				html_box += "<option value=\""+key+"\"";
				if (Trait.check) {
					html_box += "selected";
				}
				html_box += " >";
				
				var td = Trait.Trait;
				if (Trait.D2) {
            		td = Trait.D2;
            	}
				html_box += td;
				html_box += "</option>";

				var sort = Trait.TraitCatID;
				if (sort == 5) { sort = 4; }
				var t= arr[sort];
				var x = t.length;
				t[x+1] = html_box;
			}
		}
	}
	DisplayBox( arr[2], "Specialty", key2 );
	DisplayBox( arr[3], "Procedure", key2);
	DisplayBox( arr[4], "SubSpecialty", key2);
}

function isString() {
    if (typeof arguments[0] == 'string') return true;
    if (typeof arguments[0] == 'object') {  
        var criterion = arguments[0].constructor.toString().match(/string/i);  
        return (criterion != null);  
    }
    return false;
}
 
function DisplayBox(arr, target, key2) {
	var sbox = document.getElementById(target+"Box_"+key2);
	var sdiv = document.getElementById(target+"Div_"+key2);
	var sout = "";
	
	var xcount = 0;
	var lastgroup = '';
	
	for(var key in arr) {
		var s = arr[key];
		if (isString(s)) {
    		var vo = s.split("|");
    		
    		var group = vo[0];
    		var line = vo[1];
    		
    		if (group != lastgroup) {
    			if (lastgroup != '') {
    				sout += '</optgroup>';
    			}
    			sout += '<optgroup label=\"'+group+'\">';
    			lastgroup = group;
    		}
    		sout += line;
    		xcount++;
        }
	}
	if (lastgroup != '') {
		sout += '</optgroup>';
	}
	
	if (sbox && sdiv) {
		if (xcount > 0) {
			sout = "<option value=\"0\">Any</option>"+sout;
			sout = "<select name=\""+target+"\" id=\""+target+"\" class=\"box1select\" onchange=\"UpdateTrait(this,'"+key2+"');\">" + sout + "</select>";
			sbox.innerHTML = sout;
			sdiv.style.display='block';
		}
		else {
			sbox.innerHTML = "";
			sdiv.style.display='none';
		}
	}
}
