1n=navigator;nua=n.userAgent;if((nua.indexOf("Safari")!=-1)&&(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1]<525)){exit}if(window.location.hash){window.location.href=window.location.hash.substring(1)}window.dhtmlHistory.create({toJSON:function(a){return Object.toJSON(a)},fromJSON:function(a){return a.evalJSON()}});function dynamic_history_change(a){if(window.location.hash){ajax_link(decodeURI(a))}else{window.location=window.location}}function createCookie(c,d,e){if(e){var b=new Date();b.setTime(b.getTime()+(e*24*60*60*1000));var a="; expires="+b.toGMTString()}else{var a=""}document.cookie=c+"="+d+a+"; path=/"}function readCookie(b){var e=b+"=";var a=document.cookie.split(";");for(var d=0;d<a.length;d++){var f=a[d];while(f.charAt(0)==" "){f=f.substring(1,f.length)}if(f.indexOf(e)==0){return f.substring(e.length,f.length)}}return null}function eraseCookie(a){createCookie(a,"",-1)}Event.observe(window,"load",function(){redraw();preload()});function redraw(){var a=$("page");var b=a.style.display;a.style.display="none";a.style.display=b}Event.observe(window,"dom:loaded",function(){dhtmlHistory.initialize();dhtmlHistory.addListener(dynamic_history_change)});function intra_link(a){new Effect.ScrollTo(a,{duration:0.4})}function quicksearch_onfocus(a){Element.extend(a);if(a.value=="Search photos"){a.value="";a.removeClassName("tip")}}function quicksearch_onblur(a){Element.extend(a);if(a.value==""){a.value="Search photos";a.addClassName("tip")}}function photocart_product_size(a){new Ajax.InPlaceCollectionEditor(a,"/photocart/size",{collection:["Small poster (12x18â³) â $48.90","Medium poster (16x24â³) â $65.90","Large poster (20x30â³) â $81.90","Extra large poster (30x45â³) â $122.90","Large canvas (20x30â³) â $245.90","Extra large canvas (30x45â³) â $368.90"],ajaxOptions:{method:"post"},okControl:"button",cancelControl:"button",okText:"ok",cancelText:"cancel",submitOnBlur:"true",formClassName:"photocart-product-size-form",highlightcolor:"#5c665d",highlightendcolor:"#454c45"})}var closedInfoText="+ show tags...";var openedInfoText="â hide tags...";function photoMoreInfo_onclick(a){Element.extend(a);if(a.innerHTML==closedInfoText){openMoreInfo(a)}else{if(a.innerHTML==openedInfoText){closeMoreInfo(a)}}}var infoBoxOpenedCookie="infoBoxOpened";function openMoreInfo(a){Element.extend(a);a.innerHTML=openedInfoText;new Effect.BlindDown(a.next(".photo-infoBox"),{duration:0.4});createCookie(infoBoxOpenedCookie,"true",90)}function closeMoreInfo(a){Element.extend(a);a.innerHTML=closedInfoText;new Effect.BlindUp(a.next(".photo-infoBox"),{duration:0.4});createCookie(infoBoxOpenedCookie,"false",90)}function initializeInfoBox(){opened=(readCookie(infoBoxOpenedCookie)=="true");infoBoxControls=$$(".photo-infoBoxControl");infoBoxControls.each(function(a){if(opened){a.next(".photo-infoBox").show();a.innerHTML=openedInfoText}else{a.next(".photo-infoBox").hide();a.innerHTML=closedInfoText}})}function set_slideshow(a){a.index=0;a.preload=new Array(a.elements.length);document.onload=slideshow(a)} 2// The slideshow works by resizing and fading in and out 3 canvases (image 3// elements): 4// - A canvas for the current photo 5// - A canvas for the next photo 6// - A canvas for giving a size to the whole slideshow 7 8function slideshow(parameters) { 9 var current_index = parameters.index; 10 var next_index = (current_index+1) % parameters.elements.length; 11 var current_element = parameters.elements[current_index]; 12 var next_element = parameters.elements[next_index]; 13 14 //âââââââââââââââââââââ 15 // Load the first image 16 17 if (parameters.preload[current_index] == null) { 18 parameters.preload[current_index] = new Image(); 19 parameters.preload[current_index].src = current_element.source; 20 } 21 22 //ââââââââââââââââââââââââââââââââââââ 23 // Preload the next image if necessary 24 25 if (parameters.preload[next_index] == null) { 26 // Preload the next image if necessary 27 parameters.preload[next_index] = new Image(); 28 parameters.preload[next_index].src = next_element.source; 29 } 30 31 //ââââââââââââââââââââââââââââââââââââ 32 // Query the different elements to use 33 34 var base = document.getElementById(parameters.base);
35 var canvas0 = document.getElementById("home-spotlight-slideshow-canvas0"); 36 var canvas1 = document.getElementById("home-spotlight-slideshow-canvas1"); 37 var size_canvas = document.getElementById("home-spotlight-slideshow-size-canvas"); 38 39 //âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 40 // First time initialization; the base element is not yet present 41 42 if (base == null) { 43 setTimeout(function() {slideshow(parameters);}, parameters.period * 1000); 44 return; 45 } 46 47 //âââââââââââââââââââ 48 // Set the hyper-link 49 50 base.href = next_element.link; 51 52 //âââââââââââââââââââââââââââââââââ 53 // Initialize canvases if necessary 54 55 if (!canvas0) { 56 canvas0 = base.appendChild(document.createElement('div')); 57 canvas0.id = "home-spotlight-slideshow-canvas0"; 58 canvas0.style.backgroundRepeat = "no-repeat"; 59 canvas0.style.backgroundSize = "cover"; 60 } 61 62 if (!canvas1) { 63 canvas1 = base.appendChild(document.createElement('div')); 64 canvas1.id = "home-spotlight-slideshow-canvas1"; 65 canvas1.style.backgroundRepeat = "no-repeat"; 66 canvas1.style.backgroundSize = "cover"; 67 } 68 69 if (!size_canvas) { 70 images = base.getElementsByTagName("img") 71 if (images.length == 0) { 72 size_canvas = base.appendChild(new Image()); 73 } else { 74 size_canvas = images[0]; 75 } 76 size_canvas.id = "home-spotlight-slideshow-size-canvas"; 77 size_canvas.src = current_element.source; 78 } 79 80 //ââââââââââââââ 81 // Find canvases 82 83 if (!parameters.canvas_index) { 84 parameters.canvas_index = 0; 85 } 86 87 var current_canvas_index = parameters.canvas_index; 88 var next_canvas_index = (current_canvas_index+1) % 2; 89 90 var current_canvas; 91 var next_canvas; 92 if (current_canvas_index == 0) { 93 current_canvas = canvas0; 94 next_canvas = canvas1; 95 } else { 96 current_canvas = canvas1; 97 next_canvas = canvas0; 98 } 99 100 var current_canvas_image = parameters.preload[current_index]; 101 var next_canvas_image = parameters.preload[next_index]; 102 103 //âââââââââââââââââââââââââââââ 104 // Set the image URLs as needed 105 106 current_canvas.style.backgroundImage = "url(\'" + current_element.source + "\')"; 107 next_canvas.style.backgroundImage = "url(\'" + next_element.source + "\')"; 108 109 //âââââââââââââââââââââââââââââââââ 110 // Initialize canvases if necessary 111 112 current_width = base.clientWidth; 113 current_height = Math.floor(current_width * current_canvas_image.naturalHeight / current_canvas_image.naturalWidth); 114 115 next_width = base.clientWidth; 116 next_height = Math.floor(next_width * next_canvas_image.naturalHeight / next_canvas_image.naturalWidth); 117 118 current_canvas.style.position = "absolute"; 119 current_canvas.style.top = "0px"; 120 current_canvas.style.left = "0px"; 121 current_canvas.style.width = current_width.toString() + "px"; 122 current_canvas.style.height = current_height.toString() + "px"; 123 124 next_canvas.style.position = "absolute"; 125 next_canvas.style.top = "0px"; 126 next_canvas.style.left = "0px"; 127 next_canvas.style.width = current_width.toString() + "px"; 128 next_canvas.style.height = current_height.toString() + "px"; 129 130 size_canvas.style.visibility = "hidden"; 131 size_canvas.style.width = current_width.toString() + "px"; 132 size_canvas.style.height = current_height.toString() + "px"; 133 size_canvas.src = next_element.source; 134 135 new Effect.Parallel([new Effect.Appear(next_canvas, {sync: true}), 136 new Effect.Fade(current_canvas, {sync: true}), 137 new Effect.Morph( size_canvas, {style: {height: next_height.toString() + "px"}, sync: true}), 138 new Effect.Morph(current_canvas, {style: {height: next_height.toString() + "px"}, sync: true}), 139 new Effect.Morph( next_canvas, {style: {height: next_height.toString() + "px"}, sync: true})], 140 {duration: 0.7, 141 afterFinish: function () { 142 size_canvas.style.width = "100%"; 143 size_canvas.style.height = "auto"; 144 current_canvas.style.width = "100%"; 145 current_canvas.style.height = "100%"; 146 next_canvas.style.width = "100%"; 147 next_canvas.style.height = "100%"; 148 } 149 }); 150 151 //ââââââââââââââââââââââââââ 152 // Increment loop parameters 153 154 parameters.canvas_index = next_canvas_index; 155 parameters.index = next_index; 156 157 //ââââââââââââââââââââââââââââââââââââââââââââââ 158 // Setup a callback to itself for next iteration 159 160 setTimeout(function() {slideshow(parameters);}, parameters.period * 1000); 161} 162var cacheSize=30;var cache=new Array();var cacheKeys=new Array();var cacheIndex=0;function put_cache(a,b){cacheIndex=cacheIndex+1%cacheSize;cacheKeys[a]=cacheIndex;cache[cacheIndex]=b}function get_cache(a){return cache[cacheKeys[a]]}function preload(){$$("#page .preload").each(function(a){var b=new Ajax.Updater("preload-buffer",a.href+"/Ajax",{method:"get",evalScripts:true,onComplete:function(c){if(b.success()){put_cache(a.pathname,$("preload-buffer").innerHTML)}}})})}Ajax.Request.prototype.abort=function(){this.transport.onreadystatechange=Prototype.emptyFunction;this.transport.abort();Ajax.activeRequestCount--};var ajaxUpdater=null;
162function ajax_link(a){if(a==""){return}if(ajaxUpdater!=null){ajaxUpdater.abort();ajaxUpdater=null;clear_ajax_queue();Effect.Fade("ajax-loading-indicator",{duration:0.3,queue:{scope:"ajax-loading-indicator"}})}var b=get_cache(encodeURI(a));if(b){$("content").innerHTML=b;initializeInfoBox();dhtmlHistory.add(encodeURI(a));clear_ajax_queue();Effect.Fade("ajax-loading-indicator",{duration:0.3,queue:{scope:"ajax-loading-indicator"}});preload()}else{ajaxUpdater=new Ajax.Updater("content",a+"/Ajax",{method:"get",evalScripts:true,onLoading:function(c){clear_ajax_queue();Effect.Appear("ajax-loading-indicator",{duration:1.5,delay:1,queue:{scope:"ajax-loading-indicator"}})},onSuccess:function(c){clear_ajax_queue();Effect.Fade("ajax-loading-indicator",{duration:0.3,queue:{scope:"ajax-loading-indicator"}});dhtmlHistory.add(encodeURI(a))},onComplete:function(c){clear_ajax_queue();Effect.Fade("ajax-loading-indicator",{duration:0.3,queue:{scope:"ajax-loading-indicator"}});preload()}})}}function clear_ajax_queue(){var a=Effect.Queues.get("ajax-loading-indicator");a.each(function(b){b.cancel()})}function purchase_link(b){Element.extend(b);var a=b.next(".buyBox");Element.extend(a);if(b.hasClassName("popup-buyBox-link_selected")){hidePopupBuyBox(b,a)}else{showPopupBuyBox(b,a)}}function hidePopupBuyBox(b,a){Element.extend(b);Element.extend(a);a.hide();b.removeClassName("popup-buyBox-link_selected");a.removeClassName("popup-buyBox-buyBox_selected");a.stopObserving("click",propagationStopper)}function showPopupBuyBox(b,a){Element.extend(b);Element.extend(a);a.show();b.addClassName("popup-buyBox-link_selected");a.addClassName("popup-buyBox-buyBox_selected");var c={link:b,box:a};c.boundHider=hider.bindAsEventListener(c);$(document).observe("click",c.boundHider);a.observe("click",propagationStopper)}function hider(a){hidePopupBuyBox(this.link,this.box);$(document).stopObserving("click",this.boundHider)}function propagationStopper(a){a.stopPropagation()};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.