AN OVERBROAD PATENT ON online advertisements being displayed on a webpage based on a timer - This application from Yahoo! Inc seeks to patent the idea of...Displaying a primary advertisement on a first web page, initiating a timer to measure a first predetermined time period for which the primary advertisement is displayed, detecting a user reaction, and switching the primary advertisement with a second advertisement based on the user responses.! 10 minutes of your time can help narrow US patent applications before they become patents. Follow @askpatents on twitter to help.

QUESTION - Have you seen anything that was published before 12/21/2010 that discusses:

Changing advertisements on a webpage based on user's responses and expiration of a timer

If so, please submit evidence of prior art as an answer to this question. We welcome multiple answers from the same individual.

EXTRA CREDIT - User responses may be expiration of the first time period, detecting user interaction with the first web page, lack of detection of user interaction with the primary advertisement, etc.

TITLE: Switching advertisements on a webpage based on the timer and the user responses

Summary: [Translated from Legalese into English] Displaying a primary advertisement on a first web page, initiating a timer to measure a first predetermined time period for which the primary advertisement is displayed, switching the primary advertisement with a second advertisement based on responses such as expiration of the first predetermined time period, detecting user interaction with the first web page, lack of detection of user interaction with the primary advertisement. Further, receiving a request to recall the primary advertisement after the switching has occurred, and switching the secondary advertisement with the primary advertisement.

A computer-implemented method for placing online advertisements on a display of a computer device coupled to a communication network, the method comprising:

Displaying a primary advertisement on at least a portion of a first web page on the display;

Initiating a timer to measure a first predetermined period of time that the first web page is displayed;

Responsive to

(i) Expiration of the first predetermined period of time,

(ii) Detecting user interaction with the first web page, and

(iii) Lack of detection of user interaction with the primary advertisement, switching the primary advertisement to display a secondary advertisement on the portion of the first web page on the display;

Receiving a request to recall the primary advertisement after the switching has occurred; and

Switching the secondary advertisement with the primary advertisement.

In English this means:

A method comprising:

Displaying a primary advertisement on a first web page;

Initiating a timer to measure a first time period for which the primary advertisement is displayed;

Switching the primary advertisement with a secondary advertisement based on:

3a. Expiration of the first time period,

3b. Detecting a user interaction with the first web page, and

3c. Detecting that user is not interacting with the primary advertisement;

Receiving a request to recall the primary advertisement after the switching has occurred; and

Switching the secondary advertisement with the primary advertisement.

Good prior art would be evidence of a system that did each and every one of these steps prior to 12/21/2010

You're probably aware of ten pieces of art that meet this criteria already... separately, the applicant is claiming The primary and secondary advertisements are targeted advertisements that are tailored to a user, an identified location, and a current time of day

"This free JavaScript supports an unlimited number of banners, the ability to refresh (change) the ads every n milliseconds, where n is an interval you set, as well as the facility to specify a banner or set of banners for rotation at a particular location, or have them rotate randomly. You can set an expiry date for a banner as well, where a particular banner is removed from display after a certain date. Different sets of banners can also be assigned to different parts of your web page, and the script is able to avoid displaying the same banner in different spots on the same page. You can set the sizes of the banners (overriding the default size for the banner), cause the links for each banner to open either in the same window/tab or a new browser window/tab, etc. The script is released under the GNU General Public License, which means that it's open source. " -2009

/**
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
--------------------------------------------------------------------
Simple banner rotator. Version: 1.4.0
Download and support: http://www.spyka.net
(c) Copyright 2008, 2009 spyka Web Group
For full documentation: http://www.spyka.net/docs/simple-banner-rotator
For support: http://www.spyka.net/forums
**/
// EDIT FROM HERE
///////////////////////////////////////////////////////////////////////////////////
/**
Script settings
**/
var settings = {
'force_size': 0, // if set to 1 all banners will be resized to the width and height in the next to settings
'img_width': 468, // width to resize all banners to, only takes effect if above is 1
'img_height': 60, // height to resize all banners to, only takes effect if above is 1
'refresh_time': 5000, // the seconds between refreshs of the banners - use 0 to disable
'refresh_max': 100, // maximum number of refreshs on each page load
'duplicate_banners': 0, // keep as 0 to make sure the same banner won't show on the same page. will only take effect
// if show_banners(); is used more than once. You must make sure you have enough banners to fill
// all the slots else the browser may freeze or give a stack overflow error
'location_prefix': 'adLocation-', // The prefix of the IDs of the <div> which wraps the banners - this div is generated dynamically.
// a number will be added on the end of this string. adLocation- was used by default before version 1.4.x
'location_class': 'swb', // A class to add to all of the <div>s which wrap the banners, ideal to use for styling banners - use .swb img in your CSS
'window': '_self', // Window to open links in, _self = current, _blank = new. Use _top if in a frame!
'default_ad_loc': 'default' // The default adLocation. This is assigned to any banners not given an adLocation in the below banner list
// There is no real reason to need to change this
}
/**
Banners
**/
// banner list syntax: new banner(website_name, website_url, banner_url, show_until_date, adlocation), DATE FORMAT: dd/mm/yyyy
// if you're not using adlocations just leave it empty like '' as in the last example here
// to make sure a banner is always rotating, just set the date far into the future, i.e. year 3000
var banners = [
new banner('AwesomeStyles', 'http://www.awesomestyles.com', 'images/4.jpg', '30/04/2019', 'bottom'),
new banner('Just Free Templates', 'http://www.justfreetemplates.com', 'images/5.jpg', '10/04/2019', 'bottom'),
new banner('Flashden', 'http://www.flashden.net/?ref=spykawg', 'images/3.jpg', '30/04/2019', 'top'),
new banner('ThemeForest', 'http://www.themeforest.net/?ref=spykawg', 'images/2.jpg', '10/04/2019', 'top'),
new banner('GraphicRiver', 'http://www.graphicriver.net/?ref=spykawg', 'images/1.jpg', '30/04/2019', 'top'),
new banner('Dreamhost', 'http://www.dreamhost.com/r.cgi?259541', 'images/6.gif', '30/04/2019', '')
]
// There is no need to edit below here
///////////////////////////////////////////////////////////////////////////////////
var used=0;var location_counter=0;var refresh_counter=1;var map=new Array();function banner(a,b,c,d,e){this.name=a;this.url=b;this.image=c;this.date=d;this.active=1;this.oid=0;if(e!=''){this.loc=e}else{this.loc=settings.default_ad_loc}}function show_banners(a){location_counter=location_counter+1;if(a!=''&&a!=undefined){map[location_counter]=a}else{map[location_counter]=settings.default_ad_loc}var b='<div id="'+settings.location_prefix+location_counter+'" class="'+settings.location_class+'"></div>';document.write(b);display_banners(location_counter)}function display_banners(a){var b=new Array();if(a==''||!a||a<0){return}var c=banners.length;if((c==used)&&settings.duplicate_banners==0){return}for(i=0;i<(banners.length);i++){banners[i].oid=i;if((banners[i].loc==map[a])&&(banners[i].active==1)){b.push(banners[i])}}var d=Math.floor(Math.random()*b.length);var e=b[d];var f=(settings.force_size==1)?' width="'+settings.img_width+'" height="'+settings.img_height+'"':'';var g='<a href="'+e.url+'" title="'+e.name+'" target="'+settings.window+'"><img border="0" src="'+e.image+'"'+f+' alt="'+e.name+'" /></a>';var h=new Date();var j=e.date;j=j.split('/',3);var k=new Date();k.setFullYear(parseInt(j[2]),parseInt(j[1])-1,parseInt(j[0]));if((h<k)&&e.active==1){var l=document.getElementById(settings.location_prefix+a);if(l==null){alert('spyka Webmaster banner rotator\nError: adLocation doesn\'t exist!')}else{l.innerHTML=g;if(settings.duplicate_banners==0){banners[e.oid].active=0;used++}return}}else{display_banners(a)}return}function refresh_banners(){if((refresh_counter==settings.refresh_max)||settings.refresh_time<1){clearInterval(banner_refresh)}used=0;for(j=0;j<(banners.length);j++){banners[j].active=1}for(j=1;j<(location_counter+1);j++){display_banners(j)}refresh_counter++}var banner_refresh=window.setInterval(refresh_banners,settings.refresh_time);