<%@ page import="org.jivesoftware.admin.LdapUserProfile" %>
<%@ page import="org.jivesoftware.admin.LdapUserTester" %>
<%@ page import="org.jivesoftware.util.LocaleUtils" %>
<%@ page import="org.jivesoftware.util.Log" %>
<%@ page import="org.jivesoftware.util.ParamUtils" %>
<%@ page import="org.jivesoftware.openfire.ldap.LdapManager" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Map" %>

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>

<%
    String errorDetail = null;
    Map<String, String> attributes = null;

    Map<String, String> settings = (Map<String, String>) session.getAttribute("ldapSettings");
    Map<String, String> userSettings = (Map<String, String>) session.getAttribute("ldapUserSettings");
    LdapUserProfile vCardSettings = (LdapUserProfile) session.getAttribute("ldapVCardBean");
    int userIndex = ParamUtils.getIntParameter(request, "userIndex", -1);
    if (settings != null && userSettings != null && vCardSettings != null) {
        LdapManager manager = new LdapManager(settings);
        manager.setUsernameField(userSettings.get("ldap.usernameField"));
        manager.setSearchFilter(userSettings.get("ldap.searchFilter"));

        // Build the tester with the recreated LdapManager and vcard mapping information
        LdapUserTester tester = new LdapUserTester(manager, vCardSettings);
        List<String> usernames = new ArrayList<String>();
        try {
            usernames = tester.getSample(40);
        }
        catch (Exception e) {
            // Inform user that an error occurred while trying to get users data
            errorDetail = LocaleUtils.getLocalizedString("setup.ldap.test.error-loading-sample");
            Log.error("Error occurred while trying to get users data from LDAP", e);
        }
        if (usernames.isEmpty()) {
            // Inform user that no users were found
            errorDetail = LocaleUtils.getLocalizedString("setup.ldap.user.test.users-not-found");
        } else {
            // Pick a user from the sample list of users
            userIndex = userIndex + 1;
            if (usernames.size() <= userIndex) {
                userIndex = 0;
            }
            // Get attributes for selected user
            attributes = tester.getAttributes(usernames.get(userIndex));
        }
    }
    else {
        // Information was not found in the HTTP Session. Internal error?
        errorDetail = LocaleUtils.getLocalizedString("setup.ldap.user.test.internal-server-error");
    }
%>
<html>
<head>
<meta name="decorator" content="none"/>
</head>
<body>
<script type="text/javascript" language="javascript" src="../js/tooltips/domTT.js"></script>
<script type="text/javascript" language="javascript" src="../js/tooltips/domLib.js"></script>
<style type="text/css">
#lightbox{
	top: 20%;
	margin-top: -20px;
	}

.jive-testPanel {
	margin-top: -100px;
	}
html>body .jive-testPanel {
	margin-top: 0px;
	}
</style>

<!-- BEGIN connection settings test panel -->
<div class="jive-testPanel">
	<div class="jive-testPanel-content">

		<div align="right" class="jive-testPanel-close">
			<a href="#" class="lbAction" rel="deactivate"><fmt:message key="setup.ldap.server.test.close" /></a>
		</div>


		<h2><fmt:message key="setup.ldap.server.test.title" />: <span><fmt:message key="setup.ldap.user_mapping" /></span></h2>

		<!--<h4 class="jive-testSuccess">Success!</h4>-->
		<!-- <h4 class="jive-testError">Error</h4> -->

		<p><fmt:message key="setup.ldap.user.vcard.test.description" /></p>

		<div class="jive-testpanel-vcard">
            <% if (attributes != null) { %>
            <table width="331" border="0" cellpadding="0" cellspacing="1" class="jive-testTable-vcard" style="margin-right: 5px;">
				<tr>
					<td colspan="2" class="jive-testpanel-vcard-header"><fmt:message key="setup.ldap.user.vcard.personal" /></td>
				</tr>
				<tr>
                    <% String value = attributes.get(LdapUserTester.NAME);
                       boolean failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label" width="20%"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.name" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.EMAIL);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.email" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.NICKNAME);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.nickname" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.BIRTHDAY);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.birthday" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
					<td colspan="2"></td>
				</tr>
				<tr>
					<td colspan="2" class="jive-testpanel-vcard-header"><fmt:message key="setup.ldap.user.vcard.home" /></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.HOME_STREET);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.street" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.HOME_CITY);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.city" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.HOME_STATE);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.state" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.HOME_ZIP);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.pcode" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.HOME_COUNTRY);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.country" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.HOME_PHONE);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.phone" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.HOME_MOBILE);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.mobile" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.HOME_FAX);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.fax" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>

				<tr>
                    <% value = attributes.get(LdapUserTester.HOME_PAGER);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.pager" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
			</table>

			<table width="331" border="0" cellpadding="0" cellspacing="1" class="jive-testTable-vcard">
				<tr>
					<td colspan="2" class="jive-testpanel-vcard-header"><fmt:message key="setup.ldap.user.vcard.business" /></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.BUSINESS_STREET);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label" width="20%"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.street" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.BUSINESS_CITY);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.city" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.BUSINESS_STATE);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.state" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.BUSINESS_ZIP);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.pcode" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.BUSINESS_COUNTRY);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.country" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.BUSINESS_JOB_TITLE);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.title" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.BUSINESS_DEPARTMENT);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.department" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.BUSINESS_PHONE);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.phone" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.BUSINESS_MOBILE);
                        failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.mobile" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.BUSINESS_FAX);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.fax" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
                    <% value = attributes.get(LdapUserTester.BUSINESS_PAGER);
                       failed = value != null && value.contains("{");
                    %>
					<td class="jive-testpanel-vcard-label"><%= value != null ? "<strong>" : ""%><fmt:message key="setup.ldap.user.vcard.pager" />:<%= value != null ? "</strong>" : ""%></td>
                    <td class="jive-testpanel-vcard-value"><%= failed || value == null? "" : value%></td>
				</tr>
				<tr>
					<td colspan="2" class="jive-testpanel-vcard-next">
						<a href="<%= ParamUtils.getParameter(request, "currentPage")%>?test=true&serverType=<%= ParamUtils.getParameter(request, "serverType")%>&userIndex=<%=userIndex%>"><fmt:message key="setup.ldap.user.vcard.test.random" /></a>
					</td>
				</tr>
			</table>
            <% } else { %>
            <h4 class="jive-testError"><fmt:message key="setup.ldap.server.test.status-error" /></h4>
            <p><%= errorDetail %></p>
            <% } %>
		</div>

	</div>
</div>


</body>
</html>
