(function($){
	$.fn.curriculumDDLB = function(options) {
		var defaults = {
			linkPage:false,
			levelNum:false,
			grade:true,
			dept:true,
			ddlbHeight:20,
			deptWidth:228,
			gradeWidth:177,
			errorMessage:"<span style='color:#ff0000;'>Curriculum is currently unavailable</span>",
			firstOption:"- select -",
			callback:null
		},
			options = $.extend(defaults, options);

		return this.each(function() {
			var $obj = $(this), departments = new Array(), grades = new Array(), counter = 0;
			if(options.linkPage && options.levelNum){
				$.ajax({
					type: "GET",
					url: "/xml/ac_both_xml.asp?level="+options.levelNum,
					dataType: "xml",
					success: function(xml) {
						$(xml).find("dept").each(function(){
							departments[counter++] = { title: $(this).find("name").text(), id: $(this).find("id").text() };
						});
						counter = 0;
						$(xml).find("grade").each(function(){
							grades[counter++] = { title: $(this).find("name").text(), id: $(this).find("id").text() };
						});
					},
					error: function(request,tStatus,eThrown){
						$obj.html(options.errorMessage);
						if(window.console && window.console.firebug){ console.log("curriculum dropdown plugin error: request='"+request+"', tStatus='"+tStatus+"', eThrown='"+eThrown+"'"); }
					},
					complete: function(){
						if(options.dept){
							$deptSelect = $("<select>").addClass("acDept").css({"height":options.ddlbHeight+"px", width:options.deptWidth+"px"});
							$("<option>").addClass("blankOption").attr("value","0,0").html(options.firstOption).appendTo($deptSelect);
							$("<option>").addClass("blankOption").attr("value","0,0").html("<!-- -->").appendTo($deptSelect);
							for(var i in departments){ $("<option>").addClass("deptOption").attr("value",departments[i].id).html(departments[i].title).appendTo($deptSelect); }
							$deptSelect.change(function(){ window.location = "/podium/default.aspx?t="+options.linkPage+"&acid="+$("option:selected", this).val(); }).appendTo($obj);
						}
						if(options.grade){
							$gradeSelect = $("<select>").addClass("acGrade").css({"height":options.ddlbHeight+"px", width:options.gradeWidth+"px"});
							$("<option>").addClass("blankOption").attr("value","0,0").html(options.firstOption).appendTo($gradeSelect);
							$("<option>").addClass("blankOption").attr("value","0,0").html("<!-- -->").appendTo($gradeSelect);
							for(var i in grades){ $("<option>").addClass("gradeOption").attr("value",grades[i].id).html(grades[i].title).appendTo($gradeSelect); }
							$gradeSelect.change(function(){ window.location = "/podium/default.aspx?t="+options.linkPage+"&acid="+$("option:selected", this).val(); }).appendTo($obj);
						}
						if($.isFunction(options.callback)){ options.callback(); }
					}
				});
			}else{
				$obj.html(options.errorMessage);
				if(window.console && window.console.firebug){ console.log("linkPage and levelNum must be supplied"); }
			}
		});
	};
})(jQuery);
