BerkiGEM2007 WikiPlaying2

From 2007.igem.org

(Difference between revisions)
 
(119 intermediate revisions not shown)
Line 1: Line 1:
<html>
<html>
-
 
<head>
<head>
-
<script type="text/javascript">
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
 
+
<title>Untitled Document</title>
-
var Spry;
+
-
if (!Spry) Spry = {};
+
-
if (!Spry.Widget) Spry.Widget = {};
+
-
 
+
-
Spry.Widget.Accordion = function(element, opts)
+
-
{
+
-
this.element = this.getElement(element);
+
-
this.defaultPanel = 0;
+
-
this.hoverClass = "AccordionPanelTabHover";
+
-
this.openClass = "AccordionPanelOpen";
+
-
this.closedClass = "AccordionPanelClosed";
+
-
this.focusedClass = "AccordionFocused";
+
-
this.enableAnimation = true;
+
-
this.enableKeyboardNavigation = true;
+
-
this.currentPanel = null;
+
-
this.animator = null;
+
-
this.hasFocus = null;
+
-
this.duration = 500;
+
-
 
+
-
this.previousPanelKeyCode = Spry.Widget.Accordion.KEY_UP;
+
-
this.nextPanelKeyCode = Spry.Widget.Accordion.KEY_DOWN;
+
-
 
+
-
this.useFixedPanelHeights = true;
+
-
this.fixedPanelHeight = 0;
+
-
 
+
-
Spry.Widget.Accordion.setOptions(this, opts, true);
+
-
 
+
-
// Unfortunately in some browsers like Safari, the Stylesheets our
+
-
// page depends on may not have been loaded at the time we are called.
+
-
// This means we have to defer attaching our behaviors until after the
+
-
// onload event fires, since some of our behaviors rely on dimensions
+
-
// specified in the CSS.
+
-
 
+
-
if (Spry.Widget.Accordion.onloadDidFire)
+
-
this.attachBehaviors();
+
-
else
+
-
Spry.Widget.Accordion.loadQueue.push(this);
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.onloadDidFire = false;
+
-
Spry.Widget.Accordion.loadQueue = [];
+
-
 
+
-
Spry.Widget.Accordion.addLoadListener = function(handler)
+
-
{
+
-
if (typeof window.addEventListener != 'undefined')
+
-
window.addEventListener('load', handler, false);
+
-
else if (typeof document.addEventListener != 'undefined')
+
-
document.addEventListener('load', handler, false);
+
-
else if (typeof window.attachEvent != 'undefined')
+
-
window.attachEvent('onload', handler);
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.processLoadQueue = function(handler)
+
-
{
+
-
Spry.Widget.Accordion.onloadDidFire = true;
+
-
var q = Spry.Widget.Accordion.loadQueue;
+
-
var qlen = q.length;
+
-
for (var i = 0; i < qlen; i++)
+
-
q[i].attachBehaviors();
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.addLoadListener(Spry.Widget.Accordion.processLoadQueue);
+
-
 
+
-
Spry.Widget.Accordion.prototype.getElement = function(ele)
+
-
{
+
-
if (ele && typeof ele == "string")
+
-
return document.getElementById(ele);
+
-
return ele;
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.addClassName = function(ele, className)
+
-
{
+
-
if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) != -1))
+
-
return;
+
-
ele.className += (ele.className ? " " : "") + className;
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.removeClassName = function(ele, className)
+
-
{
+
-
if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) == -1))
+
-
return;
+
-
ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.setOptions = function(obj, optionsObj, ignoreUndefinedProps)
+
-
{
+
-
if (!optionsObj)
+
-
return;
+
-
for (var optionName in optionsObj)
+
-
{
+
-
if (ignoreUndefinedProps && optionsObj[optionName] == undefined)
+
-
continue;
+
-
obj[optionName] = optionsObj[optionName];
+
-
}
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.onPanelTabMouseOver = function(panel)
+
-
{
+
-
if (panel)
+
-
this.addClassName(this.getPanelTab(panel), this.hoverClass);
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.onPanelTabMouseOut = function(panel)
+
-
{
+
-
if (panel)
+
-
this.removeClassName(this.getPanelTab(panel), this.hoverClass);
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.openPanel = function(panel)
+
-
{
+
-
var panelA = this.currentPanel;
+
-
var panelB = panel;
+
-
+
-
if (!panelB || panelA == panelB)
+
-
return;
+
-
 
+
-
var contentA;
+
-
if( panelA )
+
-
contentA = this.getPanelContent(panelA);
+
-
var contentB = this.getPanelContent(panelB);
+
-
 
+
-
if (! contentB)
+
-
return;
+
-
 
+
-
if (this.useFixedPanelHeights && !this.fixedPanelHeight)
+
-
{
+
-
this.fixedPanelHeight = (contentA.offsetHeight) ? contentA.offsetHeight : contentA.scrollHeight;
+
-
}
+
-
 
+
-
if (this.enableAnimation)
+
-
{
+
-
if (this.animator)
+
-
this.animator.stop();
+
-
this.animator = new Spry.Widget.Accordion.PanelAnimator(this, panelB, { duration: this.duration });
+
-
this.animator.start();
+
-
}
+
-
else
+
-
{
+
-
if(contentA)
+
-
contentA.style.height = "0px";
+
-
contentB.style.height = (this.useFixedPanelHeights ? this.fixedPanelHeight : contentB.scrollHeight) + "px";
+
-
}
+
-
 
+
-
if(panelA)
+
-
{
+
-
this.removeClassName(panelA, this.openClass);
+
-
this.addClassName(panelA, this.closedClass);
+
-
}
+
-
 
+
-
this.removeClassName(panelB, this.closedClass);
+
-
this.addClassName(panelB, this.openClass);
+
-
 
+
-
this.currentPanel = panelB;
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.openNextPanel = function()
+
-
{
+
-
var panels = this.getPanels();
+
-
var curPanelIndex = this.getCurrentPanelIndex();
+
-
+
-
if( panels && curPanelIndex >= 0 && (curPanelIndex+1) < panels.length )
+
-
this.openPanel(panels[curPanelIndex+1]);
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.openPreviousPanel = function()
+
-
{
+
-
var panels = this.getPanels();
+
-
var curPanelIndex = this.getCurrentPanelIndex();
+
-
+
-
if( panels && curPanelIndex > 0 && curPanelIndex < panels.length )
+
-
this.openPanel(panels[curPanelIndex-1]);
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.openFirstPanel = function()
+
-
{
+
-
var panels = this.getPanels();
+
-
if( panels )
+
-
this.openPanel(panels[0]);
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.openLastPanel = function()
+
-
{
+
-
var panels = this.getPanels();
+
-
if( panels )
+
-
this.openPanel(panels[panels.length-1]);
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.onPanelClick = function(panel)
+
-
{
+
-
// if (this.enableKeyboardNavigation)
+
-
// this.element.focus();
+
-
if (panel != this.currentPanel)
+
-
this.openPanel(panel);
+
-
this.focus();
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.onFocus = function(e)
+
-
{
+
-
// this.element.focus();
+
-
this.hasFocus = true;
+
-
this.addClassName(this.element, this.focusedClass);
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.onBlur = function(e)
+
-
{
+
-
// this.element.blur();
+
-
this.hasFocus = false;
+
-
this.removeClassName(this.element, this.focusedClass);
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.KEY_UP = 38;
+
-
Spry.Widget.Accordion.KEY_DOWN = 40;
+
-
 
+
-
Spry.Widget.Accordion.prototype.onKeyDown = function(e)
+
-
{
+
-
var key = e.keyCode;
+
-
if (!this.hasFocus || (key != this.previousPanelKeyCode && key != this.nextPanelKeyCode))
+
-
return true;
+
-
+
-
var panels = this.getPanels();
+
-
if (!panels || panels.length < 1)
+
-
return false;
+
-
var currentPanel = this.currentPanel ? this.currentPanel : panels[0];
+
-
var nextPanel = (key == this.nextPanelKeyCode) ? currentPanel.nextSibling : currentPanel.previousSibling;
+
-
+
-
while (nextPanel)
+
-
{
+
-
if (nextPanel.nodeType == 1 /* Node.ELEMENT_NODE */)
+
-
break;
+
-
nextPanel = (key == this.nextPanelKeyCode) ? nextPanel.nextSibling : nextPanel.previousSibling;
+
-
}
+
-
+
-
if (nextPanel && currentPanel != nextPanel)
+
-
this.openPanel(nextPanel);
+
-
 
+
-
if (e.stopPropagation)
+
-
e.stopPropagation();
+
-
if (e.preventDefault)
+
-
e.preventDefault();
+
-
 
+
-
return false;
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.attachPanelHandlers = function(panel)
+
-
{
+
-
if (!panel)
+
-
return;
+
-
 
+
-
var tab = this.getPanelTab(panel);
+
-
 
+
-
if (tab)
+
-
{
+
-
var self = this;
+
-
Spry.Widget.Accordion.addEventListener(tab, "click", function(e) { return self.onPanelClick(panel); }, false);
+
-
Spry.Widget.Accordion.addEventListener(tab, "mouseover", function(e) { return self.onPanelTabMouseOver(panel); }, false);
+
-
Spry.Widget.Accordion.addEventListener(tab, "mouseout", function(e) { return self.onPanelTabMouseOut(panel); }, false);
+
-
}
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.addEventListener = function(element, eventType, handler, capture)
+
-
{
+
-
try
+
-
{
+
-
if (element.addEventListener)
+
-
element.addEventListener(eventType, handler, capture);
+
-
else if (element.attachEvent)
+
-
element.attachEvent("on" + eventType, handler);
+
-
}
+
-
catch (e) {}
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.initPanel = function(panel, isDefault)
+
-
{
+
-
var content = this.getPanelContent(panel);
+
-
if (isDefault)
+
-
{
+
-
this.currentPanel = panel;
+
-
this.removeClassName(panel, this.closedClass);
+
-
this.addClassName(panel, this.openClass);
+
-
}
+
-
else
+
-
{
+
-
this.removeClassName(panel, this.openClass);
+
-
this.addClassName(panel, this.closedClass);
+
-
content.style.height = "0px";
+
-
}
+
-
+
-
this.attachPanelHandlers(panel);
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.attachBehaviors = function()
+
-
{
+
-
var panels = this.getPanels();
+
-
for (var i = 0; i < panels.length; i++)
+
-
{
+
-
this.initPanel(panels[i], i == this.defaultPanel);
+
-
}
+
-
 
+
-
if (this.enableKeyboardNavigation)
+
-
{
+
-
// XXX: IE doesn't allow the setting of tabindex dynamically. This means we can't
+
-
// rely on adding the tabindex attribute if it is missing to enable keyboard navigation
+
-
// by default.
+
-
 
+
-
var tabIndexAttr = this.element.attributes.getNamedItem("tabindex");
+
-
// if (!tabIndexAttr) this.element.tabindex = 0;
+
-
if (tabIndexAttr)
+
-
{
+
-
var self = this;
+
-
Spry.Widget.Accordion.addEventListener(this.element, "focus", function(e) { return self.onFocus(e); }, false);
+
-
Spry.Widget.Accordion.addEventListener(this.element, "blur", function(e) { return self.onBlur(e); }, false);
+
-
Spry.Widget.Accordion.addEventListener(this.element, "keydown", function(e) { return self.onKeyDown(e); }, false);
+
-
}
+
-
}
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.getPanels = function()
+
-
{
+
-
return this.getElementChildren(this.element);
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.getCurrentPanel = function()
+
-
{
+
-
return this.currentPanel;
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.getCurrentPanelIndex = function()
+
-
{
+
-
var panels = this.getPanels();
+
-
for( var i = 0 ; i < panels.length; i++ )
+
-
{
+
-
if( this.currentPanel == panels[i] )
+
-
return i;
+
-
}
+
-
return 0;
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.getPanelTab = function(panel)
+
-
{
+
-
if (!panel)
+
-
return null;
+
-
return this.getElementChildren(panel)[0];
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.getPanelContent = function(panel)
+
-
{
+
-
if (!panel)
+
-
return null;
+
-
return this.getElementChildren(panel)[1];
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.getElementChildren = function(element)
+
-
{
+
-
var children = [];
+
-
var child = element.firstChild;
+
-
while (child)
+
-
{
+
-
if (child.nodeType == 1 /* Node.ELEMENT_NODE */)
+
-
children.push(child);
+
-
child = child.nextSibling;
+
-
}
+
-
return children;
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.prototype.focus = function()
+
-
{
+
-
if (this.element && this.element.focus)
+
-
this.element.focus();
+
-
};
+
-
 
+
-
 
+
-
Spry.Widget.Accordion.PanelAnimator = function(accordion, panel, opts)
+
-
{
+
-
this.timer = null;
+
-
this.interval = 0;
+
-
this.stepCount = 0;
+
-
 
+
-
this.fps = 0;
+
-
this.steps = 10;
+
-
this.duration = 500;
+
-
this.onComplete = null;
+
-
 
+
-
this.panel = panel;
+
-
this.panelToOpen = accordion.getElement(panel);
+
-
this.panelData = [];
+
-
 
+
-
Spry.Widget.Accordion.setOptions(this, opts, true);
+
-
 
+
-
 
+
-
// If caller specified speed in terms of frames per second,
+
-
// convert them into steps.
+
-
 
+
-
if (this.fps > 0)
+
-
{
+
-
this.interval = Math.floor(1000 / this.fps);
+
-
this.steps = parseInt((this.duration + (this.interval - 1)) / this.interval);
+
-
}
+
-
else if (this.steps > 0)
+
-
this.interval = this.duration / this.steps;
+
-
 
+
-
// Set up the array of panels we want to animate.
+
-
 
+
-
var panels = accordion.getPanels();
+
-
for (var i = 0; i < panels.length; i++)
+
-
{
+
-
var p = panels[i];
+
-
var c = accordion.getPanelContent(p);
+
-
if (c)
+
-
{
+
-
var h = c.offsetHeight;
+
-
if (h == undefined)
+
-
h = 0;
+
-
if (p == panel || h > 0)
+
-
{
+
-
var obj = new Object;
+
-
obj.panel = p;
+
-
obj.content = c;
+
-
obj.fromHeight = h;
+
-
obj.toHeight = (p == panel) ? (accordion.useFixedPanelHeights ? accordion.fixedPanelHeight : c.scrollHeight) : 0;
+
-
obj.increment = (obj.toHeight - obj.fromHeight) / this.steps;
+
-
obj.overflow = c.style.overflow;
+
-
this.panelData.push(obj);
+
-
 
+
-
c.style.overflow = "hidden";
+
-
c.style.height = h + "px";
+
-
}
+
-
}
+
-
}
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.PanelAnimator.prototype.start = function()
+
-
{
+
-
var self = this;
+
-
this.timer = setTimeout(function() { self.stepAnimation(); }, this.interval);
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.PanelAnimator.prototype.stop = function()
+
-
{
+
-
if (this.timer)
+
-
{
+
-
clearTimeout(this.timer);
+
-
 
+
-
// If we're killing the timer, restore the overflow
+
-
// properties on the panels we were animating!
+
-
 
+
-
if (this.stepCount < this.steps)
+
-
{
+
-
for (i = 0; i < this.panelData.length; i++)
+
-
{
+
-
obj = this.panelData[i];
+
-
obj.content.style.overflow = obj.overflow;
+
-
}
+
-
}
+
-
}
+
-
 
+
-
this.timer = null;
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.PanelAnimator.prototype.stepAnimation = function()
+
-
{
+
-
++this.stepCount;
+
-
 
+
-
this.animate();
+
-
 
+
-
if (this.stepCount < this.steps)
+
-
this.start();
+
-
else if (this.onComplete)
+
-
this.onComplete();
+
-
};
+
-
 
+
-
Spry.Widget.Accordion.PanelAnimator.prototype.animate = function()
+
-
{
+
-
var i, obj;
+
-
 
+
-
if (this.stepCount >= this.steps)
+
-
{
+
-
for (i = 0; i < this.panelData.length; i++)
+
-
{
+
-
obj = this.panelData[i];
+
-
if (obj.panel != this.panel)
+
-
obj.content.style.height = "0px";
+
-
obj.content.style.overflow = obj.overflow;
+
-
obj.content.style.height = obj.toHeight + "px";
+
-
}
+
-
}
+
-
else
+
-
{
+
-
for (i = 0; i < this.panelData.length; i++)
+
-
{
+
-
obj = this.panelData[i];
+
-
obj.fromHeight += obj.increment;
+
-
obj.content.style.height = obj.fromHeight + "px";
+
-
}
+
-
}
+
-
};
+
-
 
+
-
 
+
-
</script>
+
-
</head>
+
-
 
+
<style type="text/css">
<style type="text/css">
-
 
+
<!--
-
.Accordion {
+
#apDiv1 {
-
border-left: solid 1px gray;
+
position:absolute;
-
border-right: solid 1px black;
+
left:2.5%;
-
border-bottom: solid 1px gray;
+
top:50px;
-
overflow: hidden;
+
width:95%;
 +
height:90%;
 +
z-index:1;
 +
background-color: #FFFFFF;
}
}
-
 
+
body {
-
.AccordionPanel {
+
background-image: url();
-
margin: 0px;
+
background-color: #FFFFFF;
-
padding: 0px;
+
background-repeat: repeat;
}
}
-
 
+
a:link {
-
.AccordionPanelTab {
+
color: #FF0000;
-
background-color: #CCCCCC;
+
-
border-top: solid 1px black;
+
-
border-bottom: solid 1px gray;
+
-
margin: 0px;
+
-
padding: 2px;
+
-
cursor: pointer;
+
-
-moz-user-select: none;
+
-
-khtml-user-select: none;
+
}
}
-
 
+
a:visited {
-
.AccordionPanelContent {
+
color: #990000;
-
overflow: auto;
+
-
margin: 0px;
+
-
padding: 0px;
+
-
height: 200px;
+
}
}
-
 
+
a:hover {
-
.AccordionPanelOpen .AccordionPanelTab {
+
color: #FF0000;
-
background-color: #EEEEEE;
+
}
}
-
 
+
a:active {
-
.AccordionPanelTabHover {
+
color: #FF0000;
-
color: #555555;
+
}
}
-
.AccordionPanelOpen .AccordionPanelTabHover {
+
h1,h2,h3,h4,h5,h6 {
-
color: #555555;
+
font-weight: bold;
}
}
-
 
+
h1 {
-
.AccordionFocused .AccordionPanelTab {
+
font-size: xx-large;
-
background-color: #3399FF;
+
color: #000000;
}
}
-
 
+
h2 {
-
.AccordionFocused .AccordionPanelOpen .AccordionPanelTab {
+
font-size: x-large;
-
background-color: #33CCFF;
+
color: #000000;
}
}
-
 
+
h3 {
 +
font-size: large;
 +
color: #000000;
 +
}
 +
-->
</style>
</style>
 +
</head>
-
 
+
<body>
-
<div id="Accordion1" class="Accordion" tabindex="0">
+
<div align="center">
-
   <div class="AccordionPanel">
+
   <p><a href="https://2007.igem.org/Berkeley_UC">&lt;&lt;&lt; Return to UC Berkeley iGEM 2007 </a></p>
-
    <div class="AccordionPanelTab">Label 1</div>
+
   <p><a href="https://2007.igem.org/Berkeley_Individual_Contributions">&lt;&lt;Previous Section: Individual Contributions</a> | <a href="https://2007.igem.org/BerkiGEM2007_Resources">Next Section: Team Resources&gt;&gt;</a></p>
-
    <div class="AccordionPanelContent">Content 1</div>
+
-
  </div>
+
-
   <div class="AccordionPanel">
+
-
    <div class="AccordionPanelTab">Label 2</div>
+
-
    <div class="AccordionPanelContent">Content 2</div>
+
-
  </div>
+
</div>
</div>
-
<script type="text/javascript">
+
<h1 align="center">Team Notebooks</h1>
-
<!--
+
<div>
-
var Accordion1 = new Spry.Widget.Accordion("Accordion1");
+
  <h3>Team Notebooks</h3>
-
//-->
+
</div>
-
</script>
+
<hr>
-
 
+
<p><br>
-
 
+
    <a href="https://2007.igem.org/John_Dueber_Notebook" title="John Dueber Notebook"> John Dueber's Notebook</a><br>
 +
    <a href="https://2007.igem.org/Christopher_Anderson_Notebook" title="Christopher Anderson Notebook"> Christopher Anderson's Notebook</a><br>
 +
    <a href="https://2007.igem.org/Farnaz_Nowroozi_Notebook" title="Farnaz Nowroozi Notebook"> Farnaz Nowroozi's Notebook</a><br>
 +
    <a href="https://2007.igem.org/Amin_Hajimorad_Notebook" title="Amin Hajimorad Notebook"> Amin Hajimorad's Notebook</a><br>
 +
    <a href="https://2007.igem.org/Rickey_Bonds_Notebook" title="Rickey Bonds Notebook"> Rickey Bonds' Notebook</a><br>
 +
</p>
 +
<p><br>
 +
    <em>Keep your wiki notebooks,  sequencing/construction logs, and the registry updated!</em> </p>
 +
<p><br>
 +
    <a href="https://2007.igem.org/Arthur_Yu_Notebook" title="Arthur Yu Notebook"> Arthur Yu's 1337 Notebook</a><br>
 +
    <a href="https://2007.igem.org/Austin_Day_Notebook" title="Austin Day Notebook"> Austin Day's Notebook</a><br>
 +
    <a href="https://2007.igem.org/David_Tulga_Notebook" title="David Tulga Notebook"> David Tulga's Notebook</a><br>
 +
    <a href="https://2007.igem.org/Kristin_Doan_Notebook" title="Kristin Doan Notebook"> Kristin Doan's Notebook</a><br>
 +
    <a href="https://2007.igem.org/Samantha_Liang_Notebook" title="Samantha Liang Notebook"> Samantha's Notebook (June - July 19, 2007</a><br>
 +
    <a href="https://2007.igem.org/Samantha_Liang_Notebook2" title="Samantha Liang Notebook2"> Samantha's Notebook (July 20, 2007 - present)</a><br>
 +
    <a href="https://2007.igem.org/Vaibhavi_Umesh_Notebook" title="Vaibhavi Umesh Notebook"> Vaibhavi Umesh's Notebook</a><br>
 +
    <a href="https://2007.igem.org/Kristin_Fuller_Notebook" title="Kristin Fuller Notebook"> Kristin Fuller's Notebook</a><br>
 +
</p>
 +
<p><br>
 +
    <a href="https://2007.igem.org/Vincent_Parker_Notebook" title="Vincent Parker Notebook"> Vincent Parker's Notebook</a><br>
 +
    <a href="https://2007.igem.org/Nhu_Nguyen_Notebook" title="Nhu Nguyen Notebook"> Nhu Nguyen's Notebook</a><br>
 +
  <a href="https://2007.igem.org/Hannah_Cole_Notebook" title="Hannah Cole Notebook"> Hannah Cole's Notebook</a></p>
 +
<p>&nbsp;</p>
 +
<p align="justify">&nbsp;</p>
 +
</body>
</html>
</html>

Latest revision as of 23:07, 26 October 2007

Untitled Document

<<< Return to UC Berkeley iGEM 2007

<<Previous Section: Individual Contributions | Next Section: Team Resources>>

Team Notebooks

Team Notebooks



John Dueber's Notebook
Christopher Anderson's Notebook
Farnaz Nowroozi's Notebook
Amin Hajimorad's Notebook
Rickey Bonds' Notebook


Keep your wiki notebooks, sequencing/construction logs, and the registry updated!


Arthur Yu's 1337 Notebook
Austin Day's Notebook
David Tulga's Notebook
Kristin Doan's Notebook
Samantha's Notebook (June - July 19, 2007
Samantha's Notebook (July 20, 2007 - present)
Vaibhavi Umesh's Notebook
Kristin Fuller's Notebook


Vincent Parker's Notebook
Nhu Nguyen's Notebook
Hannah Cole's Notebook