From 2010.igem.org
\n\
',
/*MSIE*/ ////////////////////////////////////////////////////////////////////////////////////////
/*MSIE*/ //// function converts css percentage values to ie-proprietary css "expressions" it is
/*MSIE*/ //// necessary because standards-challenged browsers (ie6) don't support height by
/*MSIE*/ //// percentage, but do by "expression". pass it a css string and it then converts it,
/*MSIE*/ //// if the rendering engine is ie6. For standards-capable browsers, it just passes
/*MSIE*/ //// the unedited css on. Yet another example of MSIE littering the web with crap code.
/*MSIE*/ ////////////////////////////////////////////////////////////////////////////////////////
/*MSIE*/ procStyles : function(STRstyle) {
/*MSIE*/ // if MSIE6, then process
/*MSIE*/ if (jQuery.browser.msie && jQuery.browser.version == '6.0') {
/*MSIE*/ // regex to id percentage values in the styling strings
/*MSIE*/ var RGXcentVal = /\d{1,3}\%{1}/g;
/*MSIE*/ // split stying into arrays split by percentage values
/*MSIE*/ var ARRcentVals = STRstyle.match(RGXcentVal);
/*MSIE*/ var ARRcutCents = STRstyle.split(RGXcentVal);
/*MSIE*/ if(ARRcentVals) {
/*MSIE*/ // create an empty string to build new styling into
/*MSIE*/ var STRnewStyle = '';
/*MSIE*/ // loop through percent values, convert to expressions and reassemble arrays into new styling string
/*MSIE*/ for (var i=0; i0) ? 'expression(this.parentNode.'+offsetProp+'*0.' + NUMthisVal + ' + \'px\')' : '0px';
/*MSIE*/ STRnewStyle += ARRcutCents[i] + ARRcentVals[i];
/*MSIE*/ }
/*MSIE*/ // add remaining string length to new styling string?
/*MSIE*/ if (ARRcutCents.length > ARRcentVals.length) { STRnewStyle += ARRcutCents[ARRcutCents.length-1]; }
/*MSIE*/ // substitute new styling string for old styling
/*MSIE*/ STRstyle = STRnewStyle;
/*MSIE*/ }
/*MSIE*/ }
/*MSIE*/ // return the appropriate stying string.
/*MSIE*/ return STRstyle;
/*MSIE*/ }
};
////////////////////////////////////////////////////////////////////////////////////////////
//// plugin for adding/removing quadcorner markup/styling and settings
////////////////////////////////////////////////////////////////////////////////////////////
jQuery.fn.setQuadBg = function(OBJsettings) {
DOMparentObj = this;
var ARRcornerClasses = ['rndCornersTopLeft', 'rndCornersTopRight', 'rndCornersBottomLeft', 'rndCornersBottomRight'];
var STRcornerMarkup = '';
var STRcontWrapMarkup = '';
if (OBJsettings == 'remove') {
var wrapperDom = DOMparentObj.find('div.rndCornersContentWrapper');
if (wrapperDom.length) {
// move actual content elements to original parent (unwrap)
wrapperDom.children().each(function(){
jQuery(this).remove().appendTo(DOMparentObj);
});
// remove all IMMEDIATE injected markup (don't screw up nested elements, alter only the target).
DOMparentObj.children().each(function() {
var thisChild = jQuery(this);
if (
thisChild.hasClass('rndCornersContentWrapper') ||
thisChild.hasClass('rndCornersTopLeft') ||
thisChild.hasClass('rndCornersTopRight') ||
thisChild.hasClass('rndCornersBottomLeft') ||
thisChild.hasClass('rndCornersBottomRight')
) {
thisChild.remove();
}
});
}
}
if (typeof(OBJsettings) == 'object') {
// classify the parent container
DOMparentObj.addClass('railCornerParentContainer');
// unless otherwise indicated, remove the backup background image.
if (!OBJsettings.keepBg) { DOMparentObj.css('backgroundImage', 'none'); }
// wrap the original content in its own div
DOMparentObj.contents().wrapAll(STRcontWrapMarkup);
/*MSIE*/ // do we neeed special handholding for ie6 png support
/*MSIE*/ var helpIeNotSuck = (jQuery.browser.msie && jQuery.browser.version == '6.0');
for (var i=0; i
', STRthisClass);
/*MSIE*/ if (helpIeNotSuck && thisImgIsPng) {
/*MSIE*/ STRthisCornerMarkup = STRthisCornerMarkup.replace('','
');
/*MSIE*/ STRthisCornerMarkup = STRthisCornerMarkup.replace('', 'filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + OBJsettings.img + '\', sizingMethod=\'image\');');
/*MSIE*/ } else {
STRthisCornerMarkup = STRthisCornerMarkup.replace('', '');
STRthisCornerMarkup = STRthisCornerMarkup.replace('', thisImg);
/*MSIE*/ }
// perform offfset enforcement if specified
var STRthisStyle = '';
if (OBJsettings.biasL || OBJsettings.biasT) {
// assert horizontal bias
if(OBJsettings.biasL) {
if (/Left$/.test(STRthisClass)) {
STRthisStyle += 'width:'+OBJsettings.biasL+'%;left:'+0+'%;';
} else {
STRthisStyle += 'width:'+(100-parseInt(OBJsettings.biasL))+'%;left:'+OBJsettings.biasL+'%;';
}
}
// assert horizontal bias
if(OBJsettings.biasT) {
if (/^rndCornersTop/.test(STRthisClass)) {
STRthisStyle += 'height:'+OBJsettings.biasT+'%;top:'+0+'%;';
} else {
STRthisStyle += 'height:'+(100-parseInt(OBJsettings.biasT))+'%;top:'+OBJsettings.biasT+'%;';
}
}
}
STRthisCornerMarkup = STRthisCornerMarkup.replace('', quadBg.procStyles(STRthisStyle));
STRthisCornerMarkup = STRthisCornerMarkup.replace(' style=""', '');
// prepend element
DOMparentObj.prepend(STRthisCornerMarkup);
}
/*MSIE*/ // post process png images for IE
/*MSIE*/ if (helpIeNotSuck) {
/*MSIE*/ var setImgSize = function(imgSrc) {
/*MSIE*/ var imgFile = imgSrc.match(/[^\/]+\.\w+$/);
/*MSIE*/ var loaderImg = document.createElement('img');
/*MSIE*/ loaderImg.onload = function() {
/*MSIE*/ jQuery('img.rndCornersImg[srcjQuery='+imgFile+']').each(function(){
/*MSIE*/ jQuery(this).css({width: this.offsetWidth + 'px', height: this.offsetHeight + 'px', visibility: 'visible'});
/*MSIE*/ jQuery(this).attr('src', quadBg.STRblankGifSrc);
/*MSIE*/ });
/*MSIE*/ this.parentNode.removeChild(this);
/*MSIE*/ };
/*MSIE*/ loaderImg = document.getElementsByTagName('body')[0].appendChild(loaderImg);
/*MSIE*/ loaderImg.style.visibility = 'hidden';
/*MSIE*/ loaderImg.src = imgSrc;
/*MSIE*/ };
/*MSIE*/ setImgSize(OBJsettings.img);
/*MSIE*/ }
}
// return jquery
return DOMparentObj;
};
////////////////////////////////////////////////////////////////////////////////////////////
//// plugin applies quadcorner markup/styling via CSS (within "this" context).
////////////////////////////////////////////////////////////////////////////////////////////
jQuery.fn.applyCssQuadBg = function() {
this.find('*').each(function(){
// decorate iterated element
var element = $(this);
// determine if element has CSS background, containing the querystring keyword
var hasQuadBg = (
(
element.css('background') &&
/[\?\&]qcImg\=/.test(element.css('background'))
) || (
element.css('background-image') &&
/[\?\&]qcImg\=/.test(element.css('background-image'))
)
);
// if the element styling indicates a corner image, apply it appropriately
if (hasQuadBg) {
// get the complete css propery string applicable. longhand trunmps shorthand
var cssStr = element.css('background-image') || element.css('background');
// strip the css string down to the url property alone
var imgStr = cssStr.split('url(')[1].split(')')[0].replace('"','').replace('\'','');
// get the base image location
var baseImg = imgStr.split('#')[0].split('?')[0];
// construct object to pass constructor info on to the processing function.
var cnrSpecs = {};
// get the default image
cnrSpecs.img = imgStr.split(/[\?\&]qcImg\=/)[1].split('&')[0];
// get the top left image override, if there is one.
cnrSpecs.imgTL = (/[\?\&]qcImgTL\=[^\&]+/.test(imgStr)) ? imgStr.match(/[\?\&]qcImgTL\=[^\&]+/)[0].split('=')[1] : null;
// get the top right image override, if there is one.
cnrSpecs.imgTR = (/[\?\&]qcImgTR\=[^\&]+/.test(imgStr)) ? imgStr.match(/[\?\&]qcImgTR\=[^\&]+/)[0].split('=')[1] : null;
// get the bottom right image override, if there is one.
cnrSpecs.imgBR = (/[\?\&]qcImgBR\=[^\&]+/.test(imgStr)) ? imgStr.match(/[\?\&]qcImgBR\=[^\&]+/)[0].split('=')[1] : null;
// get the bottom left image override, if there is one.
cnrSpecs.imgBL = (/[\?\&]qcImgTL\=[^\&]+/.test(imgStr)) ? imgStr.match(/[\?\&]qcImgTL\=[^\&]+/)[0].split('=')[1] : null;
// get left biasing
cnrSpecs.biasL = (/[\?\&](qcBiasL|qcBiasR)\=\d+/.test(imgStr)) ? ((/[\?\&]qcBiasL\=\d+/.test(imgStr)) ? imgStr.match(/[\?\&]qcBiasL\=\d+/)[0].split('=')[1] : 100 - imgStr.match(/[\?\&]qcBiasR\=\d+/)[0].split('=')[1]) : null;
// get top biasing
cnrSpecs.biasT = (/[\?\&](qcBiasT|qcBiasB)\=\d+/.test(imgStr)) ? ((/[\?\&]qcBiasT\=\d+/.test(imgStr)) ? imgStr.match(/[\?\&]qcBiasT\=\d+/)[0].split('=')[1] : 100 - imgStr.match(/[\?\&]qcBiasB\=\d+/)[0].split('=')[1]) : null;
// detemerine whether or not to keep the original background styling
cnrSpecs.keepBg = !!(/[\?\&]qcKeepBg\=true/.test(imgStr));
// process all image properties for correct pathing
for (var i in cnrSpecs) { if (i.indexOf('img') != -1 && cnrSpecs[i]) { cnrSpecs[i] = (/^\.\/|^\./.test(cnrSpecs[i])) ? cnrSpecs[i] : (baseImg.substring(0, baseImg.lastIndexOf('/'))+'/'+cnrSpecs[i]); } }
}
element.setQuadBg(cnrSpecs);
});
};
////////////////////////////////////////////////////////////////////////////////////////////
//// plugin provides quadcorners-safe (nondestructive) HTML method, like $().html().
////////////////////////////////////////////////////////////////////////////////////////////
jQuery.fn.HTML = function(arg) {
// if element contains a quadcorners content wrapper as an immediate child, shift target element, to it.
var target = (this.children('div.rndCornersContentWrapper').length) ? $(this.children('div.rndCornersContentWrapper')[0]) : this;
// if new HTML has been specified, make sure it gets processed for any quadCorner styling automatically.
if (arg) {
// first - insert the innerhtml.
target.html(arg);
// second, apply quadCorners throughout element contents (on a delay or styling is ignored).
setTimeout(
function() {
target.applyCssQuadBg();
},
10
);
}
// finally, return the completed markup.
return target.html(arg);
};
jQuery(document).ready(function() { jQuery('body').applyCssQuadBg(); });
////////////////////////////////////////////////////////////////////////////////////////////
//// write in supporting inline styles.
////////////////////////////////////////////////////////////////////////////////////////////
/*MSIE*/ document.write(quadBg.procStyles(quadBg.STRinlineStyling));
})();
/**
* Cookie plugin
*
* Copyright (c) 2006 Klaus Hartl (stilbuero.de)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/
/**
* Create a cookie with the given name and value and other optional parameters.
*
* @example $.cookie('the_cookie', 'the_value');
* @desc Set the value of a cookie.
* @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
* @desc Create a cookie with all available options.
* @example $.cookie('the_cookie', 'the_value');
* @desc Create a session cookie.
* @example $.cookie('the_cookie', null);
* @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
* used when the cookie was set.
*
* @param String name The name of the cookie.
* @param String value The value of the cookie.
* @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
* @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
* If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
* If set to null or omitted, the cookie will be a session cookie and will not be retained
* when the the browser exits.
* @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
* @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
* @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
* require a secure protocol (like HTTPS).
* @type undefined
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/
/**
* Get the value of a cookie with the given name.
*
* @example $.cookie('the_cookie');
* @desc Get the value of a cookie.
*
* @param String name The name of the cookie.
* @return The value of the cookie.
* @type String
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/
jQuery.cookie = function(name, value, options) {
if (typeof value != 'undefined') { // name and value given, set cookie
options = options || {};
if (value === null) {
value = '';
options.expires = -1;
}
var expires = '';
if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
var date;
if (typeof options.expires == 'number') {
date = new Date();
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
} else {
date = options.expires;
}
expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
}
// CAUTION: Needed to parenthesize options.path and options.domain
// in the following expressions, otherwise they evaluate to undefined
// in the packed version for some reason...
var path = options.path ? '; path=' + (options.path) : '';
var domain = options.domain ? '; domain=' + (options.domain) : '';
var secure = options.secure ? '; secure' : '';
document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
} else { // only name given, get cookie
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
};
////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
//// ////
//// TITLE: modal.js lightbox/overlay script ////
//// ////
//// AUTHOR: Jose Cao-Garcia ////
//// ////
////////////////////////////////////////////////////////////////////////////////////////////////
//// ////
//// Copyright 2009 Jose Cao-Garcia ////
//// ////
//// This work is licensed under the Creative Commons Attribution-Share Alike 3.0 ////
//// United States License. To view a copy of this license, visit ////
//// http://creativecommons.org/licenses/by-sa/3.0/us/ or send a letter to Creative ////
//// Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. ////
//// ////
////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
/////// ///////
/////// SITE MODAL WINDOW OBJECT ///////
/////// - showing/hiding of modal window. ///////
/////// - retrieval of innerHTML markup. ///////
/////// - initialization ///////
/////// ///////
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
document.writeln('\
\
');
var modal = {
////////////////////////////////////////////////////////
//// markup, used for creating the modal structure
////////////////////////////////////////////////////////
markup : '\
',
////////////////////////////////////////////////////////
//// global properties - null values get initialized later
////////////////////////////////////////////////////////
initialized : false,
domObj : null,
isActive : null,
location : null,
duration : 500,
////////////////////////////////////////////////////////
//// linkage method
////////////////////////////////////////////////////////
enter : function(content) {
// make sure we are initialized
modal.init();
modal.update(content);
modal.show();
},
////////////////////////////////////////////////////////
//// shows the modal, leavings its contents unchanged
////////////////////////////////////////////////////////
show : function() {
// show modal if inactive.
if (!modal.isActive) {
var originalViewportWidth = $('body').get(0).offsetWidth;
// show
$('html').addClass('modal');
var scrollBarWidth = $('body').get(0).offsetWidth - originalViewportWidth;
$('body').eq(0).css({width: originalViewportWidth+'px'});
// fade in
$('#modal .modalInsertedContent').css({opacity:0}).animate({opacity:1}, modal.duration);
$('#modal div#modalBG').css({opacity:0}).animate({opacity:0.8}, modal.duration);
// set status
modal.isActive = true;
}
},
////////////////////////////////////////////////////////
//// updates modals contents
////////////////////////////////////////////////////////
update : function(content) {
// change content if new content.
if (modal.location != content) {
modal.clear();
// set locaton flags
modal.location = content;
// set up modal
$('#modal div#modalCT').html(content);
var content = $('#modal div#modalCT').find('*').get(0);
var content = $('#modal div#modalCT').get(0).removeChild(content);
content = $('#modal div#modalPositioner').get(0).appendChild(content);
$(content).addClass('modalInsertedContent');
}
},
////////////////////////////////////////////////////////
//// closes and restores modal to original state
////////////////////////////////////////////////////////
exit : function() {
modal.hide();
modal.clear();
},
////////////////////////////////////////////////////////
//// closes the modal, leavings its contents unchanged
////////////////////////////////////////////////////////
hide : function() {
if (modal.isActive) {
// fade in
$('#modal .modalInsertedContent').animate({opacity:0}, modal.duration);
$('#modal div#modalBG').animate({opacity:0}, modal.duration, function(){$('html').removeClass('modal'); $('body').eq(0).css({width: null}); });
// set status
modal.isActive = false;
}
// clear modal if there are flash movies involved
if ($('#modal').find('embed, object').length) {
modal.clear();
}
},
////////////////////////////////////////////////////////
//// clears the modals contents.
////////////////////////////////////////////////////////
clear : function() {
if ($('#modal .modalInsertedContent').length) {
$('#modal div#modalPositioner').get(0).removeChild($('#modal div#modalPositioner .modalInsertedContent').get(0));
$('#modal div#modalBG').html('');
modal.location = null;
}
},
////////////////////////////////////////////////////////
//// initialization method
////////////////////////////////////////////////////////
init : function() {
if (!modal.initialized) {
// create the modal shade element
var tempDiv = document.createElement('div');
$(tempDiv).html(modal.markup)
tempDiv = tempDiv.removeChild($(tempDiv).find('*').get(0));
document.getElementsByTagName('body')[0].appendChild(tempDiv);
// tool out the object
modal.domObj = $($('#modal')[0]);
modal.isActive = $('html').hasClass('modal');
$('#modal div#modalPositioner').click(
function(event) {
if (event.target.id == 'modalPositioner') {
modal.hide();
}
}
);
$('#modal div#modalBG').css({opacity:0});
modal.initialized = true;
}
}
}
/**
* @author Aaron.Lisman
*/
Site.Page = {
PreInit: function() {
this.InitTombStonesModules();
},
InitTombStonesModules: function(){
// reset margins
$(".moduleBucket-center-threeAccross div:eq(2)").css("marginRight",0)
}
}