function SortJSONStruct(aryStruct)
{
	if(aryStruct.length > 0)
	{
		for(var i=0; i<aryStruct.length; i++)
			SortJSONStruct(aryStruct[i].Kids);
		
		aryStruct.sort(SortByNameASC);
	}
}

function SortByNameASC(a, b)
{
	if(a.Name > b.Name) return 1;
	if(a.Name < b.Name) return -1;
	return 0;
}

function DrawStateListing(SpanID, aryStates)
{
	var aHTML = new Array();
	
	aHTML.push('<table cellspacing="0" cellpadding="1" border="0">');
	aHTML.push('<tr>');
	for(var i=0; i<aryStates.length; i++)
	{
		if(i % 4 == 0 && i != 0) aHTML.push('</tr>\n<tr>');
		aHTML.push('<td><input type="checkbox" name="State" id="State'+aryStates[i].ID+'" value="'+aryStates[i].ID+'" onclick="BoxClicked(this);"></td>');
		aHTML.push('<td><label for="State'+aryStates[i].ID+'">'+aryStates[i].Name+'</label></td>');
	}
	aHTML.push('</tr>');
	aHTML.push('</table>');
	
	GetTag(SpanID).innerHTML = aHTML.join('\n');
}

function DrawCityMSA(objRef)
{
	var bState = false;
	
	if(!objRef.checked) return;
	
	for(var i=0; i<aryRoot.length; i++)
		if(GetTag('State'+aryRoot[i].ID).checked) {
			bState = true;
			break;
		}
	
	if(!bState)
	{
		alert("You must select atleast one state.");
		objRef.checked = !objRef.checked;
		return;
	}
	
	var aHTML = new Array();
	
	aHTML.push('<table width="90%" cellspacing="0" cellpadding="0" border="0">');
	aHTML.push('<tr>');
	aHTML.push('<td width="50%"><strong>Cities</strong><br><br></td>');
	aHTML.push('<td width="50%"><strong>MSAs</strong><br><br></td>');
	aHTML.push('</tr>');
	aHTML.push('<tr valign="top">');
	aHTML.push('<td>');
	for(x in aryCity) {
		aHTML.push('<strong>'+sdParentIDs[x]+'</strong>');
		aHTML.push('<table cellspacing="0" cellpadding="1" border="0">');
		for(var i=0; i<aryCity[x].length; i++)
			aHTML.push('<tr><td><input type="checkbox" name="CityMSA" id="CityMSA'+aryCity[x][i].ID+'" value="'+aryCity[x][i].ID+'"></td>' + 
				'<td><label for="CityMSA'+aryCity[x][i].ID+'">'+aryCity[x][i].Name+'</label></td></tr>');
		aHTML.push('</table><br>');	
	}
	aHTML.push('</td>');
	aHTML.push('<td>'); 
	
	for(x in aryMSA) {
		aHTML.push('<strong>'+sdParentIDs[x]+'</strong>');
		aHTML.push('<table cellspacing="0" cellpadding="1" border="0">');	
		for(var i=0; i<aryMSA[x].length; i++)
			aHTML.push('<tr><td width="15"><input type="checkbox" name="CityMSA" id="CityMSA'+aryMSA[x][i].ID+'" value="'+aryMSA[x][i].ID+'"></td>' + 
				'<td><label for="CityMSA'+aryMSA[x][i].ID+'">'+aryMSA[x][i].Name+'</label></td></tr>');
		aHTML.push('</table><br>');	
	}
	aHTML.push('</td>'); 
	aHTML.push('</tr>');
	aHTML.push('</table>');
	
	GetTag("MSACityList").innerHTML = aHTML.join('\n');
	GetTag("MSACityBox").style.display = 'block';
}

function CloseCityMSA()
{
	GetTag("MSACityBox").style.display = 'none';
}

var bChecked = false;
function CheckAllBoxes(fldName)
{
	var field;
	if(bChecked)
		for(var i=0; i<aryRoot.length; i++) {
			field = GetTag(fldName+aryRoot[i].ID);
			field.checked = false;
			BoxClicked(field);
		}
	else
		for(var i=0; i<aryRoot.length; i++) {
			field = GetTag(fldName+aryRoot[i].ID);
			field.checked = true;
			BoxClicked(field);
		}			
	bChecked = !bChecked;
}

function BoxClicked(obj)
{
	var cat = new Object();
	var catID = parseInt(obj.value);
	
	for(var i=0; i<aryRoot.length; i++)
		if(catID == aryRoot[i].ID) {
			cat = aryRoot[i];
			break;
		}
	
	if(obj.checked)
		for(var x=0; x<cat.Kids.length; x++) {
			eval('ary'+cat.Kids[x].Name+'['+cat.Kids[x].ID+'] = cat.Kids['+x+'].Kids;');
			sdParentIDs[cat.Kids[x].ID] = cat.Name;
		}
	else
		for(var x=0; x<cat.Kids.length; x++) {
			eval('delete ary'+cat.Kids[x].Name+'['+cat.Kids[x].ID+'];');
			sdParentIDs[cat.Kids[x].ID] = cat.Name;
		}
	
	GetTag("CityMSAFilter").checked = false;		
}

function GetSubIDs(aryCat)
{
	var str = sep = '';
	for(var i=0; i<aryCat.length; i++)
	{
		str += sep + aryCat[i].ID;
		if(aryCat[i].Kids.length > 0)
			str += ',' + GetSubIDs(aryCat[i].Kids);
		sep = ','
	}
	return str;	
}
