Team:Peking/jqueryplugins3

From 2010.igem.org

Revision as of 14:13, 19 September 2010 by Evamonlight (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

\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) } }