/* * Thickbox 2.1 - jQuery plugin for displaying content in a box above the page * * Copyright (c) 2006, 2007 Cody Lindley (http://www.codylindley.com) * * Licensed under the MIT License: * http://www.opensource.org/licenses/mit-license.php */ // on page load call TB_init $(document).ready(TB_init); // add thickbox to href elements that have a class of .thickbox function TB_init(){ $("a.thickbox").click(function(event){ // stop default behaviour event.preventDefault(); // remove click border this.blur(); // get caption: either title or name attribute var caption=this.title || this.name || ""; // get rel attribute for image groups var group=this.rel || false; // display the box for the elements href TB_show(caption, this.href, group); });} // called when the user clicks on a thickbox link function TB_show(caption, url, rel) { // create iframe, overlay and box if non-existent if ( !$("#TB_HideSelect").length ) {$("body").append("
"); $("#TB_overlay").click(TB_remove);} // TODO replace or check if event is already assigned $(window).scroll(TB_position); // TODO replace TB_overlaySize(); // TODO create loader only once, hide and show on demand $("body").append(""); TB_load_position(); // check if a query string is involved var baseURL=url.match(/(.+)?/)[1] || url; // regex to check if a href refers to an image var imageURL=/\.(jpe?g|png|gif|bmp)/gi; // check for images if ( baseURL.match(imageURL) ) { var dummy={ caption: "", url: "", html: "" }; var prev=dummy, next=dummy, imageCount=""; // if an image group is given if ( rel ) { function getInfo(image, id, label) {return {caption: image.title, url: image.href, html: " " + label + ""}} // find the anchors that point to the group var imageGroup=$("a[@rel="+rel+"]").get(); var foundSelf=false; // loop through the anchors, looking for ourself, saving information about previous and next image for (var i=0; i < imageGroup.length; i++) { var image=imageGroup[i]; var urlTypeTemp=image.href.match(imageURL); // look for ourself if ( image.href == url ) {foundSelf=true;imageCount="Image " + (i + 1) + " of "+ (imageGroup.length); } else {// when we found ourself, the current is the next image if ( foundSelf ) {next=getInfo(image, "next", "Next >");// stop searching break; } else {// didn't find ourself yet, so this may be the one before ourself prev=getInfo(image, "prev", "< Prev");}}}} imgPreloader=new Image(); imgPreloader.onload=function() { imgPreloader.onload=null; // Resizing large images var pagesize=TB_getPageSize(); var x=pagesize[0] - 150; var y=pagesize[1] - 150; var imageWidth=imgPreloader.width; var imageHeight=imgPreloader.height; if (imageWidth > x) {imageHeight=imageHeight * (x / imageWidth); imageWidth=x; if (imageHeight > y) {imageWidth=imageWidth * (y / imageHeight); imageHeight=y;}} else if (imageHeight > y) { imageWidth=imageWidth * (y / imageHeight); imageHeight=y; if (imageWidth > x) { imageHeight=imageHeight * (x / imageWidth); imageWidth=x;}} // End Resizing // TODO don't use globals TB_WIDTH=imageWidth + 30; TB_HEIGHT=imageHeight + 60; // TODO empty window content instead $("#TB_window").append("" + ""); $("#TB_closeWindowButton").click(TB_remove); function buildClickHandler(image) { return function() {$("#TB_window").remove(); $("body").append(""); TB_show(image.caption, image.url, rel); return false;};} var goPrev=buildClickHandler(prev); var goNext=buildClickHandler(next); if ( prev.html ) { $("#TB_prev").click(goPrev);} if ( next.html ) {$("#TB_next").click(goNext);} // TODO use jQuery, maybe with event fix plugin, or just get the necessary parts of it document.onkeydown=function(e) { if (e == null) { // ie keycode=event.keyCode; } else { // mozilla keycode=e.which;} switch(keycode) {case 27: TB_remove(); break; case 190: if( next.html ) { document.onkeydown=null; goNext();} break; case 188: if( prev.html ) { document.onkeydown=null; goPrev();} break;}} // TODO don't remove loader etc., just hide and show later TB_position(); $("#TB_load").remove(); $("#TB_ImageOff").click(TB_remove); // for safari using css instead of show // TODO is that necessary? can't test safari $("#TB_window").css({display:"block"});} imgPreloader.src=url;} else { //code to show html pages var queryString=url.match(/\?(.+)/)[1]; var params=TB_parseQuery( queryString ); TB_WIDTH=(params['width']*1) + 30; TB_HEIGHT=(params['height']*1) + 40; var ajaxContentW=TB_WIDTH - 30, ajaxContentH=TB_HEIGHT - 45; if(url.indexOf('TB_iframe') != -1){ urlNoQuery=url.split('TB_'); $("#TB_window").append("