var pCache;
var jsonCache;

jQuery.fn.directory = function(settings) {
	settings = jQuery.extend({
		 input:'#ldapin',
		 form:'#search-form',
		 results:'#result',
		 container:'#content',
		 jslibdir:'../lib'
	}, settings);		
	
	return this.each(function (i) {
  	
  	$("<script src=\""+ settings.jslibdir +"/jquery.dimensions.pack.js\" type=\"text/javascript\"></script>").appendTo("head");
  	$("<script src=\""+ settings.jslibdir +"/jquery.simplemodal.js\" type=\"text/javascript\"></script>").appendTo("head");	
	
    $(settings.form).submit( function(){
    	$('#wait').show();
    	val = $(settings.input).val();
			pLink = "http://it.udmercy.edu/directory/go.pdf?search=(|(givenName$*"+val+"*)(sn$*"+val+"*)(cn$*"+val+"*)(mail$*"+val+"*)(title$*"+val+"*)(ou$*"+val+"*)(businessCategory$*"+val+"*)(displayName$*"+val+"*)(telephoneNumber$*"+val+"*))";  	
			$("#prlink").attr("href", pLink);
      $.jSearch( val );	
     	return false;
  	}); 
		
		$("<table id=\"rt\">").attr("width", "100%").appendTo(settings.results);
		$("<tr><td width=\"50%\" id=\"rc\"></td><td id=\"print\" align=\"right\" width=\"50%\"><a id=\"prlink\" href=\"#\"><imgr src=\"images/ic_print.gif\" />Print</a></td></tr>").appendTo("#rt")
		$("<tr><td id=\"rw\" colspan=\"2\"></td></tr>").appendTo("#rt");
 		$("<table id=\"dr\" class=\"tablesorter\">").appendTo('#rw');
 		$("<thead id=\"dh\"><tr><th class=\"header\">Name</th><th class=\"header\">Department</th><th class=\"header\">Telephone</th><th class=\"header\">Email</th></tr></thead>").appendTo('#dr');
		$("<tbody id=\"db\"></tbody>").appendTo('#dr');
		$("<tr><td></td><td></td><td></td><td></td></tr>").appendTo("#db");
 		$("<tfoot id=\"df\"><tr><th class=\"header\">Name</th><th class=\"header\">Department</th><th class=\"header\">Telephone</th><th class=\"header\">Email</th></tr></tfoot>").appendTo('#dr');
 		
		pos = $(settings.container).position();
    wWidth = (($(settings.container).width()/2) - 30) + pos.top;
   	wHeight = (($(settings.container).height()/2) - 30) + pos.left;

    $("<div id=\"wait\" style=\"display:none\"></div>").appendTo("body").css("left", wWidth).css("top", wHeight);
		$("<div id=\"modal\" style=\"display:none\"></div>").appendTo("body"); 		

	});
};


jQuery.jSearch = function(term, type) {
  		$.getJSON("http://it.udmercy.edu/directory/json/"+term+"?jsoncallback=?",
    		function(data){
        	$.each(data.result, function(i,item){
        		if ( i == 3 ) return false;
        	});
     	}); 
};

	function ldap(data) {
    	jsonCache = data;
      c = 0;
  		$.each(jsonCache, function(i,item){
		  	$('#db').empty();
       	$.each(item, function(x,y){ 
        	c++;
        	resultRow(y); 
      	});
			});                   		

			if (c == 1) {
				pCache = data;
      	$('#modal').modal();  
                  	
        $.each(jsonCache, function(i,item){
        	$.each(item, function(x,y){ 
          	showPerson(y.uid, pCache);
         	});
       	});                  	                	
    	}						
    	$('#wait').hide();                 	
		}
		
		function resultRow(person) {
    	$("<tr><td><a href=\"#\" class=\"inres\" id=\""+sVal(person.uid)+"\">"+sVal(person.sn)+","+sVal(person.givenName)+"</a></td><td>"+sVal(person.ou)+"</td><td>"+sVal(person.telephoneNumber)+"</td><td>"+sVal(person.mail)+"</td></tr>").appendTo('#db');
      $("#"+person.uid).click( function() {
      		showPerson($(this).attr("id"), jsonCache);
      });
		}
                
		function sVal(val, multi) {
    	if (val == null) return "";
                	
 			if (val.constructor.toString().indexOf("Array") != -1) {
   			if (multi) {
   				var rt = "";
   				$.each(val, function() { 
   					rt+=this;
   					rt+="<br />";
   				});
   				val = rt;
   			} else {
   				val = val[0];
   			}
   		}
                
      if (val == 'undefined') return "";
      	return val;
		}		
		
		function showPerson(uid, cache) {
    	$.modal.close();
      $('#modal').modal();                
      $.each(cache, function(i,item){
      	$.each(item, function(x,y){ 
        	if (y.uid == uid) {
          	var pHtml = "<table cellpadding=\"1\" cellspacing=\"0\" border=\"0\" width=\"100%\">" +
							"<tr bgcolor=\"#003399\">" +
							"<td><h2>"+sVal(y.sn)+", "+sVal(y.givenName)+" "+sVal(y.initials)+"</h2></td><td><h2>"+sVal(y.o)+"</h2></td></tr>" +
							"<tr><td colspan=\"2\">"+sVal(y.title)+"</td></tr>"+
							"<tr><td colspan=\"2\"><a id=\""+sVal(y.ou)+"\" class=\"ou\" href=\"#\">"+sVal(y.ou)+"</a></td></tr>" +
							"<tr><td colspan=\"2\">"+sVal(y.businessCategory)+"</td></tr></table><br />" +
							"<table cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" border=\"0\">" +
							"<tr><td valign=\"top\" width=\"25%\"><b>Email Address</b></td><td valign=\"top\" align=\"left\" width=\"75%\">"+sVal(y.mail, true)+"<br />"+sVal(y.mailAlias, true)+"</td></tr>"+
							"<tr><td valign=\"top\" width=\"25%\"><b>Telephone</b></td><td valign=\"top\" align=\"left\" width=\"75%\">"+sVal(y.telephoneNumber, true)+"</td></tr>" +		
							"<tr><td valign=\"top\" width=\"25%\"><b>Cell Phone</b></td><td valign=\"top\" align=\"left\" width=\"75%\"></td></tr>" +
							"<tr><td valign=\"top\" width=\"25%\"><b>Pager</b></td><td valign=\"top\" align=\"left\" width=\"75%\"></td></tr>" +
							"<tr><td valign=\"top\" width=\"25%\"><b>Fax</b></td><td valign=\"top\" align=\"left\" width=\"75%\">"+sVal(y.facsimileTelephoneNumber)+"</td></tr>" +	
							"<tr><td valign=\"top\" width=\"25%\"><b>Office</b></td><td valign=\"top\" align=\"left\" width=\"75%\">"+sVal(y.physicalDeliveryOfficeName)+"</td></tr>" +																
							"<tr><td valign=\"top\" width=\"25%\"><b>Supervisor</b></td><td valign=\"top\" align=\"left\" width=\"75%\"><a class=\"manager\" href=\"#\" id=\""+sVal(y.managerEmail)+"\">"+sVal(y.managerName)+"</a></td></tr>" +																
							"<tr><td valign=\"top\" width=\"25%\"><b>Web URL</b></td><td valign=\"top\" align=\"left\" width=\"75%\">"+sVal(y.URL)+"</td></tr>" +		
							"<tr><td valign=\"top\" width=\"25%\"><b>Campus</b></td><td valign=\"top\" align=\"left\" width=\"75%\">"+sVal(y.udmcampus)+"</td></tr>" +																																
							"<tr><td valign=\"top\" width=\"25%\"><b>Mailing Address</b></td><td valign=\"top\" align=\"left\" width=\"75%\">"+sVal(y.o)+"<br />"+sVal(y.physicalDeliveryOfficeName)+"<br />"+sVal(y.postalAddress)+"<br />"+sVal(y.l)+", "+sVal(y.st)+" "+sVal(y.postalCode)+"</td></tr>" +																																									
							"</table>";																											
                    				
         		$('#modal').empty();
                    				
            $( pHtml ).appendTo($('#modal'));
                    			
            $(".manager").click(function() {          
            		$('#wait').show();
            		$.jSearch( $(this).attr("id") );
            		showPerson( $(this).attr("id"), pCache);    						
              	return false;
            });
            
            $(".ou").click(function() {
            		$.modal.close();
            		$('#wait').show();
            		$.jSearch( $(this).attr("id") );				
              	return false;
            });
            
					}
       	});
     	});
     }	