Team:WHU-China/Team/Gallary

From 2011.igem.org

(Difference between revisions)
Line 57: Line 57:
width:980px;
width:980px;
}
}
-
#screen {
+
#screen {
position: absolute;
position: absolute;
-
left: 10%;
+
top: 1%;
-
top: 10%;
+
left: 1%;
-
width: 80%;
+
width: 98%;
-
height: 80%;
+
height: 98%;
background: #000;
background: #000;
 +
color: #fff;
}
}
-
#screen img {
+
#screen div {
position: absolute;
position: absolute;
 +
overflow: hidden;
cursor: pointer;
cursor: pointer;
-
visibility: hidden;
 
-
width: 0px;
 
-
height: 0px;
 
}
}
-
#screen .tvover {
+
#screen img {
-
border: solid #876;
+
position: absolute;
-
opacity: 1;
+
width: 100%;
-
filter: alpha(opacity=100);
+
height: 100%;
}
}
-
#screen .tvout {
+
#screen .label {
-
border: solid #fff;
+
position: absolute;
-
opacity: 0.7;
+
color: #FFF;
-
}
+
background: #000;
-
#bankImages {
+
font-family: arial;
-
display: none;
+
white-space: no-wrap;
}
}
-
 
</style>
</style>
<script type="text/javascript">
<script type="text/javascript">
-
var Library = {};
+
// ================================
-
Library.ease = function () {
+
// DHTML mini library
-
this.target = 0;
+
// Gerard Ferrandez - January 2007
-
this.position = 0;
+
// http://www.dhteumeuleu.com
-
this.move = function (target, speed)
+
// ================================
-
{
+
 
-
this.position += (target - this.position) * speed;
+
id = function(o) {
 +
return document.getElementById(o);
 +
}
 +
 
 +
px = function (x) {
 +
return ''.concat(Math.round(x), 'px');
 +
}
 +
 
 +
pxLeft = function(o) {
 +
for (var x = 0; o != null; o = o.offsetParent) x += o.offsetLeft;
 +
return x;
 +
}
 +
 
 +
pxTop = function(o) {
 +
for (var x = 0; o != null; o = o.offsetParent) x += o.offsetTop;
 +
return x;
 +
}
 +
 
 +
/* ==== DOM 2 add event ==== */
 +
addEvent = function (o, e, f) {
 +
var r = false;
 +
if (window.addEventListener) {
 +
o.addEventListener(e, f, false);
 +
r = true;
 +
} else if (window.attachEvent) {
 +
r = o.attachEvent('on' + e, f);
}
}
 +
return r;
}
}
 +
</script>
 +
<script type="text/javascript">
 +
// ========================================================
 +
//            ====== Javascript Slideshow ======
 +
// script written by Gerard Ferrandez - December 31, 2006
 +
// http://www.dhteumeuleu.com/
 +
// ========================================================
-
var tv = {
+
var diap = {
-
/* ==== variables ==== */
+
/////////////////////////////////
-
O : [],
+
BR : 3,    // border size in px
-
screen : {},
+
ZR : .75,  // zoom ratio
-
grid : {
+
SP : .1,    // speed
-
size      : 4,  // 4x4 grid
+
/////////////////////////////////
-
borderSize : 6, // borders size
+
V : false,
-
zoomed    : false
+
S : false,
 +
G : true,
 +
 
 +
resize : function () {
 +
/* ==== window resize event ==== */
 +
diap.nw = diap.scr.offsetWidth;
 +
diap.nh = diap.scr.offsetHeight;
 +
diap.nwu = (diap.nw * diap.ZR);
 +
diap.nhu = (diap.nh * diap.ZR);
 +
diap.nwt = Math.floor((diap.nw * (1 - diap.ZR) * .5) / (diap.NX - 1)) - diap.BR;
 +
diap.nht = Math.floor((diap.nh * (1 - diap.ZR) * .5) / (diap.NY - 1)) - diap.BR;
 +
diap.rc = 255 / ((diap.nw / diap.NX) - diap.nwt);
 +
if (diap.N) {
 +
diap.setPosition();
 +
if (!diap.G) diap.delLabels();
 +
}
},
},
-
angle : {
+
 
-
x : new Library.ease(),
+
setPosition : function () {
-
y : new Library.ease()
+
/* ==== calculate image target position  ==== */
 +
var k = 0;
 +
var y = this.S ? this.BR + Math.floor((this.NY - this.Y - 1) * (this.nht + this.BR)) : 0;
 +
for (var j = 0; j < this.NY; j++) {
 +
var x = this.S ? this.BR + Math.floor((this.NX - this.X - 1) * (this.nwt + this.BR)) : 0;
 +
for (var i = 0; i < this.NX; i++) {
 +
var o = this.spa[k++];
 +
o.y1 = y;
 +
o.x1 = x;
 +
o.w1 = this.S ? (o == this.S ? this.nwu - this.BR : this.nwt) : Math.ceil(this.nw / this.NX) - this.BR;
 +
o.h1 = this.S ? (o == this.S ? this.nhu - this.BR : this.nht) : Math.ceil(this.nh / this.NY) - this.BR;
 +
x += this.S ? ((this.X == i) ? this.nwu : this.nwt + this.BR) : Math.ceil(this.nw / this.NX);
 +
}
 +
y += this.S ? ((this.Y == j) ? this.nhu : this.nht + this.BR) : Math.ceil(this.nh / this.NY);
 +
}
},
},
-
camera : {
+
 
-
x    : new Library.ease(),
+
delLabels : function () {
-
y    : new Library.ease(),
+
/* ==== remove texts ==== */
-
zoom : new Library.ease(),
+
for ( var i = 0; i < diap.N; i++) {
-
focalLength : 750 // camera Focal Length
+
var o = diap.spa[i];
 +
if (o.T) diap.scr.removeChild(o.T);
 +
o.T = false;
 +
}
},
},
-
/* ==== init script ==== */
+
run : function () {
-
init : function ()
+
/* ==== main loop ==== */
-
{
+
for ( var i = 0; i < diap.N; i++) diap.spa[i].move();
-
this.screen.obj = document.getElementById('screen');
+
setTimeout(diap.run, 16);
-
var img = document.getElementById('bankImages').getElementsByTagName('img');
+
},
-
this.screen.obj.onselectstart = function () { return false; }
+
 
-
this.screen.obj.ondrag        = function () { return false; }
+
init : function (container, NX, NY, path, images) {
-
/* ==== create images grid ==== */
+
/* ==== initialize script ==== */
-
var ni = 0;
+
this.scr = id(container);
-
var n = (tv.grid.size / 2) - .5;
+
if (!this.scr || NX * NY != images.length) { alert('ID-10-T error...'); return false; }
-
for (var y = -n; y <= n; y++)
+
this.NX = NX;
-
{
+
this.NY = NY;
-
for (var x = -n; x <= n; x++)
+
this.spa = {};
-
{
+
this.resize();
-
/* ==== create HTML image element ==== */
+
var k = 0;
-
var o = document.createElement('img');
+
for (var y = 0; y < this.NY; y++) {
-
var i = img[(ni++) % img.length];
+
for (var x = 0; x < this.NX; x++) {
-
o.className = 'tvout';
+
/* ==== create HTML elements ==== */
-
o.src = i.src;
+
var s = this.spa[k] = document.createElement('div');
-
tv.screen.obj.appendChild(o);
+
s.img = document.createElement('img');
-
/* ==== 3D coordinates ==== */
+
 
-
o.point3D = {
+
/* ==== opacity optimized function ==== */
-
x  : x,
+
s.img.setOpacity = function (alpha) {
-
y  : y,
+
if (alpha < 0) alpha = 0; else if (alpha > 100) alpha = 100;
-
z  : new Library.ease()
+
if (alpha == 100) {
-
};
+
/* ==== speed opt - remove IE filter ==== */
-
/* ==== push object ==== */
+
this.style.visibility = 'visible';
-
o.point2D = {};
+
this.style.filter = '';
-
o.ratioImage = 1;
+
this.style.opacity = 1;
-
tv.O.push(o);
+
return 100;
-
/* ==== on mouse over event ==== */
+
} else if (alpha == 0) {
-
o.onmouseover = function ()
+
/* ==== hide image, remove opacity ==== */
-
{
+
this.style.visibility = 'hidden';
-
if (!tv.grid.zoomed)
+
this.style.filter = '';
-
{
+
this.style.opacity = 0;
-
if (tv.o)
+
return 0;
-
{
+
}
-
/* ==== mouse out ==== */
+
if (this.filters) {
-
tv.o.point3D.z.target = 0;
+
/* ==== IE filter ==== */
-
tv.o.className = 'tvout';
+
if (!this.filters.alpha) this.style.filter = 'alpha(opacity=' + alpha + ')';
 +
else this.filters.alpha.opacity = alpha;
 +
/* ==== CSS opacity ==== */
 +
} else this.style.opacity = alpha * .01;
 +
return alpha;
 +
}
 +
s.img.src = id('loading').src;
 +
s.appendChild(s.img);
 +
this.scr.appendChild(s);
 +
 
 +
/* ==== pre-load image ==== */
 +
s.pre = new Image();
 +
s.pre.obj = s;
 +
s.pre.onload = function() { this.obj.img.src = this.src; }
 +
s.pre.src = path + images[k][0];
 +
 
 +
/* ==== set image variables ==== */
 +
s.= x;
 +
s.= y;
 +
s.x0 = x * (this.nw / this.NX) + (this.nw / this.NX) / 2;
 +
s.y0 = y * (this.nh / this.NY) + (this.nh / this.NY) / 2;;
 +
s.x1 = x * (this.nw / this.NX);
 +
s.y1 = y * (this.nh / this.NY);
 +
s.w0 = 0;
 +
s.h0 = 0;
 +
s.w1 = 0;
 +
s.h1 = 0;
 +
s.V  = 0;
 +
s.t  = images[k][1];
 +
s.T  = false;
 +
 
 +
/* ==== function move image ==== */
 +
s.move = function() {
 +
/* ==== position images ==== */
 +
this.style.left  = px(this.x0 += (this.x1 - this.x0) * diap.SP);
 +
this.style.top    = px(this.y0 += (this.y1 - this.y0) * diap.SP);
 +
this.style.width  = px(this.w0 += (this.w1 - this.w0) * diap.SP);
 +
this.style.height = px(this.h0 += (this.h1 - this.h0) * diap.SP);
 +
if (this != diap.S) {
 +
/* ==== set image background color ==== */
 +
if (Math.abs(this.w1 - this.w0) > 1) {
 +
var c = (!diap.G && this.V > 0) ? 255 : 16 + Math.round(255 - diap.rc * (this.w0 - diap.nwt));
 +
this.style.background = 'RGB('.concat(c, ',', c, ',', c, ')');
 +
}
 +
if (this == diap.V) {
 +
/* ==== on mouseover: fade in ==== */
 +
if (this.V < 100) this.img.setOpacity(this.V += 5);
 +
} else {
 +
/* ==== fade out ==== */
 +
if (this.V >= 0 && diap.G != this) this.img.setOpacity(this.V -= 2);
}
}
-
/* ==== mouse over ==== */
 
-
this.className = 'tvover';
 
-
this.point3D.z.target = -.5;
 
-
tv.o = this;
 
}
}
 +
/* ==== text effect ==== */
 +
if (this.T) this.dispLabel();
}
}
-
/* ==== on click event ==== */
+
 
-
o.onclick = function ()
+
/* ==== display text function (typewriter FX) ==== */
-
{
+
s.dispLabel = function() {
-
if (!tv.grid.zoomed)
+
if (diap.G || diap.S == this) {
-
{
+
/* ==== zoomed image ==== */
-
/* ==== zoom in ==== */
+
this.T.style.left  = px(this.x0);
-
tv.camera.x.target = this.point3D.x;
+
this.T.style.top  = px(this.y0);
-
tv.camera.y.target = this.point3D.y;
+
this.T.style.width = px(this.w0);
-
tv.camera.zoom.target = tv.screen.w * 1.25;
+
-
tv.grid.zoomed = this;
+
} else {
} else {
-
if (this == tv.grid.zoomed){
+
/* ==== calculate text position ==== */
-
/* ==== zoom out ==== */
+
var xt = diap.S.x0 + this.w0 + diap.BR;
-
tv.camera.x.target = 0;
+
if (this.y == diap.Y) {
-
tv.camera.y.target = 0;
+
this.T.style.top = px(this.y0 - this.f - diap.BR);
-
tv.camera.zoom.target = tv.screen.w / (tv.grid.size + .1);
+
if (this.y == 0) var xt = diap.S.x0;
-
tv.grid.zoomed = false;
+
} else this.T.style.top = px(this.y0 - (this.y <= diap.Y ? diap.BR : 0));
 +
if (this.x > diap.X) this.T.style.left = px(diap.S.w0 + diap.S.x0 - diap.nwu * .5);
 +
else this.T.style.left = px(xt);
 +
if (this != diap.V) {
 +
/* ==== text type out ==== */
 +
this.Tp--;
 +
this.T.innerHTML = this.t.substring(0, this.Tp);
 +
if (this.Tp < 1) {
 +
diap.scr.removeChild(this.T);
 +
this.T = false;
 +
}
 +
} else {
 +
if (this.Tp < this.t.length) {
 +
/* ==== text type in ==== */
 +
this.Tp++;
 +
this.T.innerHTML = this.t.substring(0, this.Tp);
 +
}
}
}
}
}
}
}
-
/* ==== 3D transform function ==== */
+
 
-
o.calc = function ()
+
/* ==== create text function ==== */
-
{
+
s.createLabel = function () {
-
/* ==== ease mouseover ==== */
+
this.T = document.createElement('div');
-
this.point3D.z.move(this.point3D.z.target, .5);
+
this.T.className = 'label';
-
/* ==== assign 3D coords ==== */
+
if (!diap.G && this.x > diap.X) this.T.style.textAlign = 'right';
-
var x = (this.point3D.x - tv.camera.x.position) * tv.camera.zoom.position;
+
this.f = 4 + Math.round(Math.sqrt(diap.nht * 2));
-
var y = (this.point3D.y - tv.camera.y.position) * tv.camera.zoom.position;
+
if(this == diap.S) {
-
var z = this.point3D.z.position * tv.camera.zoom.position;
+
this.f *= 2;
-
/* ==== perform rotations ==== */
+
this.T.style.background = 'none';
-
var xy = tv.angle.cx * y  - tv.angle.sx * z;
+
this.T.style.textAlign = 'center';
-
var xz = tv.angle.sx * y  + tv.angle.cx * z;
+
-
var yz = tv.angle.cy * xz - tv.angle.sy * x;
+
-
var yx = tv.angle.sy * xz + tv.angle.cy * x;
+
-
/* ==== 2D transformation ==== */
+
-
this.point2D.scale = tv.camera.focalLength / (tv.camera.focalLength + yz);
+
-
this.point2D.x = yx * this.point2D.scale;
+
-
this.point2D.y = xy * this.point2D.scale;
+
-
this.point2D.w = Math.round(
+
-
                  Math.max(
+
-
                    0,
+
-
                    this.point2D.scale * tv.camera.zoom.position * .8
+
-
                  )
+
-
                );
+
-
/* ==== image size ratio ==== */
+
-
if (this.ratioImage > 1)
+
-
this.point2D.h = Math.round(this.point2D.w / this.ratioImage);
+
-
else
+
-
{
+
-
this.point2D.h = this.point2D.w;
+
-
this.point2D.w = Math.round(this.point2D.h * this.ratioImage);
+
}
}
 +
this.T.style.fontSize = ''.concat(this.f, 'px');
 +
this.T.innerHTML  = this.t;
 +
this.T.style.left = px(-1000);
 +
this.T.style.width = px(diap.nwu * .5);
 +
this.T.style.height = px(this.f + 3);
 +
this.Tp = 0;
 +
diap.scr.appendChild(this.T);
}
}
-
/* ==== rendering ==== */
+
 
-
o.draw = function ()
+
/* ==== on mouse over event ==== */
-
{
+
s.onmouseover = function() {
-
if (this.complete)
+
if (diap.S != this && diap.G != this) {
-
{
+
/* ==== display image ==== */
-
/* ==== paranoid image load ==== */
+
this.img.setOpacity(100);
-
if (!this.loaded)
+
this.V = this.img.setOpacity(20);
-
{
+
}
-
if (!this.img)
+
/* ==== create text ==== */
-
{
+
if (!this.T) this.createLabel();
-
/* ==== create internal image ==== */
+
diap.V = this;
-
this.img = new Image();
+
}
-
this.img.src = this.src;
+
 
-
}
+
/* ==== on click event ==== */
-
if (this.img.complete)
+
s.onclick = function() {
-
{
+
/* ==== memorize selected image ==== */
-
/* ==== get width / height ratio ==== */
+
diap.X = this.x;
-
this.style.visibility = 'visible';
+
diap.Y = this.y;
-
this.ratioImage = this.img.width / this.img.height;
+
diap.V = false;
-
this.loaded = true;
+
diap.G = false;
-
this.img = false;
+
this.V = this.img.setOpacity(100);
-
}
+
diap.delLabels();
-
}
+
if (diap.S == this) {
-
/* ==== HTML rendering ==== */
+
/* ==== zoom out - grid mode on ==== */
-
this.style.left = Math.round(
+
diap.S = false;
-
                    this.point2D.x * this.point2D.scale +
+
diap.G = this;
-
                    tv.screen.w - this.point2D.w * .5
+
for (var i = 0; i < diap.N; i++) diap.spa[i].createLabel();
-
                  ) + 'px';
+
} else {
-
this.style.top  = Math.round(
+
/* ==== zoom in ==== */
-
                    this.point2D.y * this.point2D.scale +
+
diap.S = this;
-
                    tv.screen.h - this.point2D.h * .5
+
this.createLabel();
-
                  ) + 'px';
+
-
this.style.width  = this.point2D.w + 'px';
+
-
this.style.height = this.point2D.h + 'px';
+
-
this.style.borderWidth = Math.round(
+
-
                          Math.max(
+
-
                            this.point2D.w,
+
-
                            this.point2D.h
+
-
                          ) * tv.grid.borderSize * .01
+
-
                        ) + 'px';
+
-
this.style.zIndex = Math.floor(this.point2D.scale * 100);
+
}
}
 +
diap.setPosition();
}
}
 +
s.createLabel();
 +
s.ondblclick = s.onclick;
 +
s.ondrag = function () { return false; }
 +
k++;
}
}
}
}
-
/* ==== start script ==== */
+
this.N = NX * NY;
-
tv.resize();
+
/* ==== add resize event ==== */
-
mouse.y = tv.screen.y + tv.screen.h;
+
this.resize();
-
mouse.x = tv.screen.x + tv.screen.w;
+
addEvent(window, 'resize', diap.resize);
-
tv.run();
+
/* ==== start main loop ==== */
-
},
+
this.run();
-
 
+
-
/* ==== resize window ==== */
+
-
resize : function ()
+
-
{
+
-
var o = tv.screen.obj;
+
-
tv.screen.w = o.offsetWidth / 2;
+
-
tv.screen.h = o.offsetHeight / 2;
+
-
tv.camera.zoom.target = tv.screen.w / (tv.grid.size + .1);
+
-
for (tv.screen.x = 0, tv.screen.y = 0; o != null; o = o.offsetParent)
+
-
{
+
-
tv.screen.x += o.offsetLeft;
+
-
tv.screen.y += o.offsetTop;
+
-
}
+
-
},
+
-
 
+
-
/* ==== main loop ==== */
+
-
run : function ()
+
-
{
+
-
/* ==== motion ease ==== */
+
-
tv.angle.x.move(-(mouse.y - tv.screen.h - tv.screen.y) * .0025, .1);
+
-
tv.angle.y.move( (mouse.x - tv.screen.w - tv.screen.x) * .0025, .1);
+
-
tv.camera.x.move(tv.camera.x.target, tv.grid.zoomed ? .25 : .025);
+
-
tv.camera.y.move(tv.camera.y.target, tv.grid.zoomed ? .25 : .025);
+
-
tv.camera.zoom.move(tv.camera.zoom.target, .05);
+
-
/* ==== angles sin and cos ==== */
+
-
tv.angle.cx = Math.cos(tv.angle.x.position);
+
-
tv.angle.sx = Math.sin(tv.angle.x.position);
+
-
tv.angle.cy = Math.cos(tv.angle.y.position);
+
-
tv.angle.sy = Math.sin(tv.angle.y.position);
+
-
/* ==== loop through all images ==== */
+
-
for (var i = 0, o; o = tv.O[i]; i++)
+
-
{
+
-
o.calc();
+
-
o.draw();
+
-
}
+
-
/* ==== loop ==== */
+
-
setTimeout(tv.run, 32);
+
}
}
}
}
-
/* ==== global mouse position ==== */
+
/* ==== create diaporama ==== */
-
var mouse = {
+
onload = function () {
-
x : 0,
+
/* ==== container, X, T, path, [image.src, text] ==== */
-
y : 0
+
diap.init("screen", 4, 4, "", [
-
}
+
["https://static.igem.org/mediawiki/2011/e/e6/Whu-1.jpg", "His little voodoo was a success"],
-
document.onmousemove = function(e)
+
["https://static.igem.org/mediawiki/2011/e/e6/Whu-1.jpg", "She arrived from nowhere"],
-
{
+
["https://static.igem.org/mediawiki/2011/e/e6/Whu-1.jpg", "as cute as she could be"],
-
if (window.event) e = window.event;
+
["https://static.igem.org/mediawiki/2011/e/e6/Whu-1.jpg", "It was a night of full moon"],
-
mouse.x = e.clientX;
+
["https://static.igem.org/mediawiki/2011/e/e6/Whu-1.jpg", "It didn't take him anytime to fall in love"],
-
mouse.y = e.clientY;
+
["https://static.igem.org/mediawiki/2011/e/e6/Whu-1.jpg", "He had been certain of his success"],
-
return false;
+
["https://static.igem.org/mediawiki/2011/e/e6/Whu-1.jpg", "In a few days after"],
 +
["https://static.igem.org/mediawiki/2011/e/e6/Whu-1.jpg", "All the tools were in place"],
 +
["https://static.igem.org/mediawiki/2011/e/e6/Whu-1.jpg", "The girl left a note..."],
 +
["https://static.igem.org/mediawiki/2011/e/e6/Whu-1.jpg", "...saying she had left home"],
 +
["https://static.igem.org/mediawiki/2011/e/e6/Whu-1.jpg", "揝o what抯 with the panic??"],
 +
["https://static.igem.org/mediawiki/2011/e/e6/Whu-1.jpg", "Tears for fears"],
 +
["https://static.igem.org/mediawiki/2011/e/e6/Whu-1.jpg", "A light in the dark"],
 +
["https://static.igem.org/mediawiki/2011/e/e6/Whu-1.jpg", "Flashes of pain and hope"],
 +
["https://static.igem.org/mediawiki/2011/e/e6/Whu-1.jpg", "If only we could capture..."],
 +
["https://static.igem.org/mediawiki/2011/e/e6/Whu-1.jpg", "...the beauty of autumn"]
 +
]);
}
}
-
 
</script>
</script>
Line 365: Line 443:
<div id="screen">
<div id="screen">
</div>
</div>
-
<div id="bankImages">
+
<img id="loading" alt="" src="or11.jpg" style="visibility: hidden">
-
<img alt="" src="/wiki/images/e/e6/Whu-1.jpg">
+
-
<img alt="" src="/wiki/images/e/e6/Whu-1.jpg">
+
-
<img alt="" src="/wiki/images/e/e6/Whu-1.jpg">
+
-
<img alt="" src="/wiki/images/e/e6/Whu-1.jpg">
+
-
<img alt="" src="/wiki/images/e/e6/Whu-1.jpg">
+
-
<img alt="" src="/wiki/images/e/e6/Whu-1.jpg">
+
-
<img alt="" src="/wiki/images/e/e6/Whu-1.jpg">
+
-
<img alt="" src="/wiki/images/e/e6/Whu-1.jpg">
+
-
<img alt="" src="/wiki/images/e/e6/Whu-1.jpg">
+
-
<img alt="" src="/wiki/images/e/e6/Whu-1.jpg">
+
-
<img alt="" src="/wiki/images/e/e6/Whu-1.jpg">
+
-
<img alt="" src="/wiki/images/e/e6/Whu-1.jpg">
+
-
<img alt="" src="/wiki/images/e/e6/Whu-1.jpg">
+
-
<img alt="" src="/wiki/images/e/e6/Whu-1.jpg">
+
-
<img alt="" src="/wiki/images/e/e6/Whu-1.jpg">
+
-
<img alt="" src="/wiki/images/e/e6/Whu-1.jpg"> </div>
+
-
<script type="text/javascript">
+
-
/* ==== start script ==== */
+
-
onresize = tv.resize;
+
-
tv.init();
+
-
</script>
+

Revision as of 08:05, 2 October 2011

Count Down

days

hours

minutes

seconds

Visitor

Retrieved from "http://2011.igem.org/Team:WHU-China/Team/Gallary"