package page.info.michaelgardiner;


import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;

import org.wikiwebserver.core.WareHouse;
import org.wikiwebserver.handler.http.HTTPException;
import org.wikiwebserver.handler.http.interfaces.HTTPResponder;
import org.wikiwebserver.html.HTMLHelper.ContainerType;

import page.config.SiteTemplatedPage;

import static org.wikiwebserver.html.HTMLHelper.*;

public class Index extends SiteTemplatedPage implements HTTPResponder {
    
    public void generate() throws HTTPException {
    	
    	String host = getRequest().getHeaders().getFirst("Host");
    	if (host != null && !host.endsWith("michaelgardiner.info")) {
            throw new HTTPException(301,
                    "www.michaelgardiner.info preferred", 
                    "http://www.michaelgardiner.info/");             
    	}
        
        setTitle("Michael John Gardiner");
        String[] keywords =  { "Michael John Gardiner", "Michael Gardiner", "Michael J Gardiner", 
                               "Mike Gardiner", "Michael", "Gardiner" };
        setKeywords(Arrays.asList(keywords));
        
        addResourceRoot("/templates/info/michaelgardiner/");
        addCSSLink("profile.css");
        
        String meImage = image("mgardiner_small.jpg", "Michael John Gardiner", "id='profileImage'"); 
        
        String src = WareHouse.getUrlPathForClass(page.image.Email.class)
                   + "?email=mike-at-wikiwebserver-dot-org&size=12";
        
        String emailImage = image(src, "Bot proof email", "id='emailImage'");        
        
        Calendar birthday = Calendar.getInstance();
        birthday.set(1980, Calendar.DECEMBER, 26);        

        append(h(1, "Profile")  + meImage +
                div("profile", 
                    h(2, "id='name'", "Dr Michael John Gardiner PhD BSc Hons") +
                    detail("Email:", emailImage)) +
                    cleardiv());
        
        append(h(2, "Occupation") +
        		p(ul(new String[] {"MD & CEO " + a("http://www.jads.co.uk/", "JADS Limited"),
        		"CTO " + a("http://www.cg2solutions.co.uk/", "CG2 Solutions Limited")})));           
        
        append(h(2, "Education") +
                div("education", 
                    detail("PhD Electronic Engineering", "University of Kent (2002-2006)") +
                    detail("BSC Computer Science", "University of Kent (1999-2002)") +
                    detail("A levels", "Thomas Mills High School, Framlingham, Suffolk (1997-1999)") +
                    detail("GCSEs", "Debenham High School, Debenham, Suffolk (1992-1997)")) +
                    cleardiv());

    }
    
    private static int getAge(Calendar birthday) {
        Calendar today = Calendar.getInstance();
        today.setTime(new Date());
        
        Calendar lastBirthday = Calendar.getInstance();
        lastBirthday.set(today.get(Calendar.YEAR),
                         birthday.get(Calendar.MONTH),
                         birthday.get(Calendar.DAY_OF_MONTH));
        
        if (today.before(lastBirthday)) {
            lastBirthday.add(Calendar.YEAR, -1);
        }
        return lastBirthday.get(Calendar.YEAR) - birthday.get(Calendar.YEAR);
    }   
    
    private String detail(String key, String value) {
        return div(ContainerType.CLASS, "info", 
                   div(ContainerType.CLASS, "key", key) +
                   div(ContainerType.CLASS, "value", value));
    }
}
