// 0) { var next, prev, count; // Pre-fetch the next slide image(s) next = this.current; prev = this.current; count = 0; do { // Get the next and previous slide number // Loop past the ends of the slideshow if necessary if (++next >= this.slides.length) next = 0; if (--prev < 0) prev = this.slides.length - 1; // Preload the slide image this.slides[next].load(); this.slides[prev].load(); // Keep going until we have fetched // the designated number of slides } while (++count < this.prefetch); } } //-------------------------------------------------- this.goto_slide = function(n) { // This method jumpts to the slide number you specify. // If you use slide number -1, then it jumps to the last slide. // You can use this to make links that go to a specific slide, // or to go to the beginning or end of the slideshow. // Examples: // onClick="myslides.goto_slide(0)" // onClick="myslides.goto_slide(-1)" // onClick="myslides.goto_slide(5)" if (n == -1) { n = this.slides.length - 1;
} if (n < this.slides.length && n >= 0) { this.current = n; } this.update(); } //-------------------------------------------------- this.goto_random_slide = function(include_current) { // Picks a random slide (other than the current slide) and // displays it. // If the include_current parameter is true, // then // See also: shuffle() var i; // Make sure there is more than one slide if (this.slides.length > 1) { // Generate a random slide number, // but make sure it is not the current slide do { i = Math.floor(Math.random()*this.slides.length); } while (i == this.current); // Display the slide this.goto_slide(i); } } //-------------------------------------------------- this.next = function() { // This method advances to the next slide. // Increment the image number if (this.current < this.slides.length - 1) { this.current++; } else if (this.repeat) { this.current = 0; } this.update(); } //-------------------------------------------------- this.previous = function() { // This method goes
to the previous slide. // Decrement the image number if (this.current > 0) { this.current--; } else if (this.repeat) { this.current = this.slides.length - 1; } this.update(); } //-------------------------------------------------- this.shuffle = function() { // This method randomly shuffles the order of the slides. var i, i2, slides_copy, slides_randomized; // Create a copy of the array containing the slides // in sequential order slides_copy = new Array(); for (i = 0; i < this.slides.length; i++) { slides_copy[i] = this.slides[i]; } // Create a new array to contain the slides in random order slides_randomized = new Array(); // To populate the new array of slides in random order, // loop through the existing slides, picking a random // slide, removing it from the ordered list and adding it to // the random list. do { // Pick a random slide from those that remain i = Math.floor(Math.random()*slides_copy.length); // Add the slide to the end of the randomized array slides_randomized[
slides_randomized.length ] = slides_copy[i]; // Remove the slide from the sequential array, // so it cannot be chosen again for (i2 = i + 1; i2 < slides_copy.length; i2++) { slides_copy[i2 - 1] = slides_copy[i2]; } slides_copy.length--; // Keep going until we have removed all the slides } while (slides_copy.length); // Now set the slides to the randomized array this.slides = slides_randomized; } //-------------------------------------------------- this.get_text = function() { // This method returns the text of the current slide return(this.slides[ this.current ].text); } //-------------------------------------------------- this.get_all_text = function(before_slide, after_slide) { // Return the text for all of the slides. // For the text of each slide, add "before_slide" in front of the // text, and "after_slide" after the text. // For example: // document.write("
"); // document.write(s.get_all_text("
","\n")); // document.write("<\/ul>"); all_text = ""; // Loop through all the slides in the slideshow for (i=0; i < this.slides.length; i++) { slide = this.slides[i]; if (slide.text) { all_text += before_slide + slide.text + after_slide; } } return(all_text); } //-------------------------------------------------- this.display_text = function(text) { // Display the text for the current slide // If the "text" arg was not supplied (usually it isn't), // get the text from the slideshow if (!text) { text = this.slides[ this.current ].text; } // If a textarea has been specified, // then change the text displayed in it if (this.textarea && typeof this.textarea.value != 'undefined') { this.textarea.value = text; } // If a text id has been specified, // then change the contents of the HTML element if (this.textid) { r = this.getElementById(this.textid); if (!r) { return false; } if (typeof r.innerHTML == 'undefined') { return false; } // Update the text r.innerHTML = text; } }
//-------------------------------------------------- this.hotlink = function() { // This method calls the hotlink() method for the current slide. this.slides[ this.current ].hotlink(); } //-------------------------------------------------- this.save_position = function(cookiename) { // Saves the position of the slideshow in a cookie, // so when you return to this page, the position in the slideshow // won't be lost. if (!cookiename) { cookiename = this.name + '_slideshow'; } document.cookie = cookiename + '=' + this.current; } //-------------------------------------------------- this.restore_position = function(cookiename) { // If you previously called slideshow_save_position(), // returns the slideshow to the previous state. //Get cookie code by Shelley Powers if (!cookiename) { cookiename = this.name + '_slideshow'; } var search = cookiename + "="; if (document.cookie.length > 0) { offset = document.cookie.indexOf(search); // if cookie exists if (offset != -1) { offset +=
search.length; // set index of beginning of value end = document.cookie.indexOf(";", offset); // set index of end of cookie value if (end == -1) end = document.cookie.length; this.current = parseInt(unescape(document.cookie.substring(offset, end))); } } } //-------------------------------------------------- this.noscript = function() { // This method is not for use as part of your slideshow, // but you can call it to get a plain HTML version of the slideshow // images and text. // You should copy the HTML and put it within a NOSCRIPT element, to // give non-javascript browsers access to your slideshow information. // This also ensures that your slideshow text and images are indexed // by search engines. $html = "\n"; // Loop through all the slides in the slideshow for (i=0; i < this.slides.length; i++) { slide = this.slides[i]; $html += '
'; if (slide.link) { $html += ''; } $html += ''; if (slide.link) { $html += "<\/a>"; } if (slide.text) { $html += "
\n" + slide.text; } $html += "<\/P>" + "\n\n"; } // Make the HTML browser-safe $html = $html.replace(/\&/g, "&" ); $html = $html.replace(//g, ">" ); return('
' + $html + '
'); } //================================================== // Private methods //================================================== //-------------------------------------------------- this.loop = function() { // This method is for internal use only. // This method gets called automatically by a JavaScript timeout. // It advances to the next slide, then sets the next timeout. // If the next slide image has not completed loading yet, // then do not advance to the next slide yet. // Make sure the next slide image has finished loading if (this.current < this.slides.length - 1) { next_slide = this.slides[this.current + 1]; if (next_slide.image.complete == null || next_slide.image.complete) { this.next(); } } else { // we're at the last slide this.next(); } // Keep playing the slideshow this.play( ); } //-------------------------------------------------- this.valid_image = function() { // Returns 1 if a valid image has been set for the slideshow if (!this.image) { return false; } else {
return true; } } //-------------------------------------------------- this.getElementById = function(element_id) { // This method returns the element corresponding to the id if (document.getElementById) { return document.getElementById(element_id); } else if (document.all) { return document.all[element_id]; } else if (document.layers) { return document.layers[element_id]; } else { return undefined; } } //================================================== // Deprecated methods // I don't recommend the use of the following methods, // but they are included for backward compatibility. // You can delete them if you don't need them. //================================================== //-------------------------------------------------- this.set_image = function(imageobject) { // This method is deprecated; you should use // the following code instead: // s.image = document.images.myimagename; // s.update(); if (!document.images) return; this.image = imageobject; }
//-------------------------------------------------- this.set_textarea = function(textareaobject) { // This method is deprecated; you should use // the following code instead: // s.textarea = document.form.textareaname; // s.update(); this.textarea = textareaobject; this.display_text(); } //-------------------------------------------------- this.set_textid = function(textidstr) { // This method is deprecated; you should use // the following code instead: // s.textid = "mytextid"; // s.update(); this.textid = textidstr; this.display_text(); } } // ]]> //
Past President Dave Boothby recenlty submitted a nunber of entries for the inclusion in the Nottingham and East Midlands Photographic Federation 2014 Exhibition.
He was delighted to have 8 of them accepted, with one of them being highly commended. This was 'Chaffinch with Nest Material' was entered into Natural History Prints . Dave took this shot locally at Far Ings using a canon 500ml with tripod.
Other acceptances were..