(function($){
	$.fn.facDir = function(options) {
		var defaults = {
			xml_path:"/xml/facDir/default.asp",
			deptHeader:"By Department:",
			deptFirstOption:"- Select Department -",
			yearHeader:"Select Year",
			doLetterAsSelect:0,
			letterHeader:"By Letter:",
			thumbnailWidth:72,
			useBio:1,
			bioButtonText:"Read Bio",
			callback:null
		};
		var options = $.extend(defaults, options);
		
		return this.each(function() {
			var	obj = $(this), sYear = new Array(), currentYearLabel = false;

			$.ajax({
				type: "GET",
				url: options.xml_path+"?sid="+JavaScriptSchoolID,
				dataType: "xml",
				success: function(xml) {
					var counter = 0;
					$(xml).find('item').each(function(){
						sYear[counter]= {
							curYear:$(this).attr("curYear"),
							begin:$(this).attr("begin"),
							end:$(this).attr("end"),
							label:$(this).text()
						};
						if($(this).attr("curYear")=="true"){ currentYearLabel = $(this).text(); }
						counter++;
					});
					sYear.reverse();
				},
				error: function(request,tStatus,eThrown){ if(window.console && window.console.firebug){ console.log("error on school year request: request='"+request+"', tStatus='"+tStatus+"', eThrown='"+eThrown+"'"); } },
				complete: function() {
					if(sYear.length>0 && currentYearLabel){
						
						var $deptContainer = $("<div>").attr("id","deptContainer");
							$("<div>").attr("id","selectDeptHeader").addClass("ddlbHeader").html(options.deptHeader).appendTo($deptContainer);
							var $selectDept = $("<select>").addClass("ddlb").attr("id","facDDLBdept");
								$("<option>").attr("value","0,0").html(options.deptFirstOption).appendTo($selectDept);
								$selectDept.getOptionsAcad({getYear:currentYearLabel}).getOptionsNacad({getYear:currentYearLabel}).change(changeSelect);
						setTimeout(function(){ $("<div>").attr("id","selectDeptContainer").html($selectDept).appendTo($deptContainer); },50);

						var $yearContainer = $("<div>").attr("id","yearContainer");
							$("<div>").attr("id","selectYearHeader").addClass("ddlbHeader").html(options.yearHeader).appendTo($yearContainer);
							var $selectYear = $("<select>").addClass("ddlb").attr("id","facDDLByear");
								for(i in sYear){ $("<option>").attr("value",sYear[i].label).html(sYear[i].label).appendTo($selectYear); };
							$("<div>").attr("id","selectYearContainer").html($selectYear).appendTo($yearContainer);

						var	$letterContainer = $("<div>").attr("id","letterContainer"),
							alpha = new Array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
						$("<div>").attr("id","letterHeader").html(options.letterHeader).appendTo($letterContainer);
						if(options.doLetterAsSelect>0){
							var $letterSelect = $("<select>").addClass("ddlb").attr("id","letterSelect");
							$("<option>").attr("value","0,0").html(" ").appendTo($letterSelect);
							for(var i=0; i<26; i++){ $("<option>").attr("value",alpha[i]).html(alpha[i]).appendTo($letterSelect); };
							$("<div>").attr("id","selectLetterContainer").html($letterSelect).appendTo($letterContainer);
						}else{
							var $letterUL = $("<ul>");
							for(var i=0; i<26; i++){
								var $letter = $("<a></a>")
									.attr("href","javascript:void(0);")
									.attr("id","letter_"+alpha[i])
									.addClass("letterLink")
									.html(alpha[i]);
								$("<li>").html($letter).appendTo($letterUL);
							};
							$letterContainer.append($letterUL);
						}

						$("<div>").attr("id","facStaff").append($deptContainer).append($yearContainer).append($letterContainer).appendTo(obj);
						$("<div>").attr("id","dataContainer").appendTo(obj);
						$("#facDDLByear").val(currentYearLabel);
						if(options.doLetterAsSelect>0){ $("#letterSelect").change(function(){byLetter($("option:selected", this))}); }
						else{ $(".letterLink").click(function(){byLetter($(this))}); }
					}
					else{ if(window.console && window.console.firebug){ console.log("facDir plugin error: no school years in array"); } }
					if($.isFunction(options.callback)){ options.callback(); }
				}
			});
		});
		function changeSelect(){
			if($("#facDDLBdept option:selected").val()!="0,0"){
				$("#dataContainer").getReturnSelect({department:(($("#facDDLBdept option:selected").val().split(",")[1]=="X")?$("#facDDLBdept option:selected").val().split(",")[0]:$("#facDDLBdept option:selected").html()),getYear:$("#facDDLByear option:selected").val(),nonAcademic:(($("#facDDLBdept option:selected").val().split(",")[1]=="X")?0:1),thumbnailWidth:options.thumbnailWidth,useBio:options.useBio,bioButtonText:options.bioButtonText});
			} else { $("#dataContainer").html(""); }
		};
		function byLetter(letterSelected){
			if(letterSelected.html()!=" "){
				$("#dataContainer").getReturnSelect({searchLetter:letterSelected.html(),getYear:$("#facDDLByear option:selected").val(),thumbnailWidth:options.thumbnailWidth,useBio:options.useBio,bioButtonText:options.bioButtonText});
			} else { $("#dataContainer").html(""); }
		};
	};
})(jQuery);

(function($){
	$.fn.getOptionsAcad = function(options) {
		var defaults = {
			xml_path:"/xml/facDir/default.asp",
			getYear:null,
			callback:null
		};
		var options = $.extend(defaults, options);
		
		return this.each(function() {
			var	obj = $(this), dataArray = new Array();
			$.ajax({
				type: "GET",
				url: options.xml_path+"?sid="+JavaScriptSchoolID+"&year='"+options.getYear+"'&nAdept=0",
				dataType: "xml",
				success: function(xml) {
					var counter = 0;
					$(xml).find('item').each(function(){
						dataArray[counter]= {
							dg_id:$(this).attr("dgid"),
							acadInd:$(this).attr("acadInd"),
							dg_name:$(this).text()
						};
						counter++;
					});
				},
				error: function(request,tStatus,eThrown){ if(window.console && window.console.firebug){ console.log("error on first academic select request: request='"+request+"', tStatus='"+tStatus+"', eThrown='"+eThrown+"'"); } },
				complete: function() {
					if(dataArray.length>0){
						var headerText = "Academic:";
						$("<option>").attr("value","0,0").html(" ").appendTo(obj);
						$("<option>").attr("value","0,0").addClass("stylized").html(headerText).appendTo(obj);
						for(i in dataArray){
							$("<option>")
								.attr("value",dataArray[i].dg_name+","+dataArray[i].dg_id)
								.html(dataArray[i].dg_name)
								.appendTo(obj);
						};
						obj.css("display","block");
					}
				}
			});
		});
	};
})(jQuery);

(function($){
	$.fn.getOptionsNacad = function(options) {
		var defaults = {
			xml_path:"/xml/facDir/default.asp",
			getYear:null,
			callback:null
		};
		var options = $.extend(defaults, options);
		
		return this.each(function() {
		
			var	obj = $(this), dataArray2 = new Array();
			$.ajax({
				type: "GET",
				url: options.xml_path+"?sid="+JavaScriptSchoolID+"&year='"+options.getYear+"'&nAdept=1",
				dataType: "xml",
				success: function(xml) {
					var counter = 0;
					$(xml).find('item').each(function(){
						dataArray2[counter]= {
							dg_id:$(this).attr("dgid"),
							acadInd:$(this).attr("acadInd"),
							dg_name:$(this).text()
						};
						counter++;
					});
				},
				error: function(request,tStatus,eThrown){ if(window.console && window.console.firebug){ console.log("error on first academic select request: request='"+request+"', tStatus='"+tStatus+"', eThrown='"+eThrown+"'"); } },
				complete: function() {
					if(dataArray2.length>0){
						var headerText = "Non-Academic:";
						$("<option>").attr("value","0,0").html(" ").appendTo(obj);
						$("<option>").attr("value","0,0").addClass("stylized").html(headerText).appendTo(obj);
						for(i in dataArray2){
							$("<option>")
								.attr("value",dataArray2[i].dg_id)
								.html(dataArray2[i].dg_name)
								.appendTo(obj);
						};
						obj.css("display","block");
					}
				}
			});
		});
	};
})(jQuery);

(function($){
	$.fn.getReturnSelect = function(options) {
		var defaults = {
			xml_path:"/xml/facDir/default.asp",
			department:null,
			getYear:null,
			nonAcademic:0,
			searchLetter:false,
			callback:null
		};
		var options = $.extend(defaults, options);
		
		
		return this.each(function() {
			var	obj = $(this), returnData = new Array(),
				queryString = (options.searchLetter)?"?sid="+JavaScriptSchoolID+"&dgname="+options.department+"&year='"+options.getYear+"'&letter="+options.searchLetter:"?sid="+JavaScriptSchoolID+"&dgname="+options.department+"&year='"+options.getYear+"'&nAdept=0";

			obj.html("<img id='ajaxLoading' src='/images/spinner.gif' height='25' border='0' alt='Loading...'>");

			$.ajax({
				type: "GET",
				url: options.xml_path+queryString,
				dataType: "xml",
				success: function(xml) {
					var counter = 0;
					$(xml).find('item').each(function(){
						var schoolInfo = "", deptInfo = "", lastOne = "";
						$(this).find('school').each(function(){ schoolInfo += $(this).text() + ", " + $(this).attr("degree") + "<br>"; });
						$(this).find('dept').each(function(){
							if(lastOne != $(this).text()){
								deptInfo += (deptInfo.length>0)?", ":"";
								deptInfo += $(this).text();
							}
							lastOne = $(this).text();
						});
						returnData[counter]= {
							staffID: $(this).attr("staffID"),
							fullName: $(this).find("name").text(),
							prefix: $(this).find("name").attr("prefix"),
							suffix: $(this).find("name").attr("suffix"),
							email: $(this).find('email').text(),
							gradYear: $(this).find("gradYear").text(),
							image: $(this).find("imageName").text(),
							jobTitle: $(this).find("job").text().replace(/&lt;br&gt;/g,"<br>"),
							appointed: $(this).find("job").attr("appointed"),
							phone: $(this).find("phone").text(),
							bio: $(this).find("bio").text(),
							school: schoolInfo,
							dept: deptInfo
						};
						counter++;
					});
				},
				error: function(request,tStatus,eThrown){ if(window.console && window.console.firebug){ console.log("error on first academic select request: request='"+request+"', tStatus='"+tStatus+"', eThrown='"+eThrown+"'"); } },
				complete: function() {
					var i = 0;
					if(returnData.length>0){
						var $ul = $("<ul>");
						for(i in returnData){
							var $li = $("<li>");
								if(returnData[i].image.length>0){
									$("<div>")
										.addClass("thumbnail")
										.html("<img src='/ftpimages/"+JavaScriptSchoolID+"/user/"+returnData[i].image+"' width='"+options.thumbnailWidth+"' alt='' border=''>")
										.appendTo($li);
								}
								$contentDiv = $("<div>").addClass("content");
									$("<a></a>")
										.attr("href","javascript:void(0)")
										.attr("emailAdd",returnData[i].email)
										.click(function(){ if($(this).attr("emailAdd").length>0){ sendEmail($(this),$(this).attr("emailAdd")); } })
										.html(returnData[i].prefix + returnData[i].fullName + returnData[i].suffix + ((returnData[i].gradYear.length>0)?"&nbsp;'" + returnData[i].gradYear.substr(returnData[i].gradYear.length-2):""))
										.appendTo($contentDiv);
									$("<div>").addClass("job").html(returnData[i].jobTitle).appendTo($contentDiv);
									$("<div>").addClass("deparments").html("Department(s): " + returnData[i].dept).appendTo($contentDiv);
									$("<div>").addClass("education").html(returnData[i].school).appendTo($contentDiv);
									$("<div>").addClass("appoint").html(returnData[i].appointed).appendTo($contentDiv);
									$("<div>").addClass("phone").html(returnData[i].phone).appendTo($contentDiv);
								if(options.useBio && returnData[i].bio.length>0){
									$("<div>")
										.addClass("openBio")
										.addClass("bioButton")
										.css("cursor","pointer")
										.html(options.bioButtonText)
										.wrapInner("<span></span>")
										.click(function(){
											$(".userBio", $(this).parent()).show();
											$(".closeBio", $(this).parent()).show();
											$(this).hide();
										})
										.appendTo($contentDiv);
									$("<div>")
										.addClass("closeBio")
										.addClass("bioButton")
										.css({"display":"none", "cursor":"pointer"})
										.html("Close")
										.wrapInner("<span></span>")
										.click(function(){
											$(".userBio", $(this).parent()).hide();
											$(".openBio", $(this).parent()).show();
											$(this).hide();
										})
										.appendTo($contentDiv);
									$("<div>").css("clear","left").html("<!-- -->").appendTo($contentDiv);
									$("<div>").addClass("userBio").css("display","none").html(returnData[i].bio).appendTo($contentDiv);
								}
							$li.append($contentDiv).append($("<div>").css("clear","left").html("<!-- -->")).appendTo($ul);
						};
						obj.html($ul);
					} else { obj.html(""); $("<div>").addClass("noData").html("No Search Results").appendTo(obj); }
				}
			});
			function sendEmail(obj,address) {
				var aryAddress = new Array, mailTo = "";
				aryAddress = address.replace(/x/g, ',64').replace(/y/g, ',46').replace(/z/g, ',').split(',');
				for (var i=1; i<aryAddress.length; i++) { mailTo = mailTo + String.fromCharCode(aryAddress[i]); }
				obj.attr("href","mailto:"+mailTo);
			};
		});
	};
})(jQuery);
var scriptAuthor="t.vitali";