function dynAuthorSelectSetup(){
	authorDyn = new authorDyn(xmlBoy);
}
function authorDyn (){
	this.xmlBoy = new xmlRequestBoy();
	this.allTargets = [];
	this.allControls = [];

	var select;
	var allSelects = document.getElementsByTagName('select');

	for (var i=0; i<allSelects.length; i++){
		select = allSelects[i];
		if (select.className && (' ' + select.className + ' ').indexOf(' dynamic_author_pulldown ') != -1){
			this.allTargets.push(select);
		}
		else if (select.className && (' ' + select.className + ' ').indexOf(' dynamic_author_pulldown_control ') != -1){
			this.allControls.push(select);
		}
	}

	if (this.allTargets.length != this.allControls.length){
		return;
		// bAd eRrOr silent death
	}

	for (var i=0; i<this.allControls.length; i++){
		select = this.allControls[i];

		var temp = i;
		if (select.addEventListener){
			select.addEventListener('change', function (){ authorDyn.changeHandle(temp)}, false);
		}
		else if (select.attachEvent){
			select.attachEvent( "onchange", function (){ authorDyn.changeHandle(temp)});
		}
	}
	for (var i=0; i<this.allTargets.length; i++){
		select = this.allTargets[i];

		var temp = i;
		if (select.addEventListener){
			select.addEventListener('change', function (){ authorDyn.authorSelect(temp)}, false);
		}
		else if (select.attachEvent){
			select.attachEvent( "onchange", function (){ authorDyn.authorSelect(temp)});
		}

		this.changeHandle(i);
	}
}
authorDyn.prototype.changeHandle = function (i){
	var target = this.allTargets[i];
	var control = this.allControls[i];

	while (target.length > 0){
		target.remove(0);
	}
	option = new Option('Retrieving data...', '');
	option.innerHTML = 'Retrieving data...';
	target.appendChild(option);

	this.updateTarget(target, control.value);
}
authorDyn.prototype.updateTarget = function (target, letter){
	target.disabled = true;
	
	this.xmlBoy.loadXMLDoc('/author/xml_lst.pperl?mode=a&letr=' + letter, this.authorReturn, [target] );
}
	
authorDyn.prototype.authorReturn = function (req, args){
	target = args[0];
	var option;

	target.disabled = false;

	target.innerHTML = '';

	var allAuthors = req.responseXML.getElementsByTagName('author');
	var authorID, authorName;

	//alert ('allAuthors is ' + allAuthors.length + ' long');
    //alert ('allAuthors is ' + req.responseText);

	for (var i=0; i<allAuthors.length; i++){
		authorID = allAuthors[i].getElementsByTagName("author_id")[0].firstChild.nodeValue;
		authorName = allAuthors[i].getElementsByTagName("author_name")[0].firstChild.nodeValue;

		option = document.createElement('option');
		option.innerHTML = authorName;
		option.value = authorID;

		target.appendChild(option);

	}
}

authorDyn.prototype.authorSelect = function (i){
	var target = this.allTargets[i];

	//alert ('you picked author id#' + target.value);
	//document.location = '/author/results.pperl?authorid=' + target.value;
}


if (window.addEventListener){
    window.addEventListener('load', function (){ dynAuthorSelectSetup()}, false);
}
else if (window.attachEvent){
    window.attachEvent( "onload", function (){ dynAuthorSelectSetup()});
}
