A patent I wrote.  Also located here and elsewhere, of course.

SYSTEM AND METHOD FOR ENHANCING INTERACTIVE WEB-BROWSING EXPERIENCE

Inventors:  Joseph Frazier
Agents:  ORRICK, HERRINGTON & SUTCLIFFE, LLP;IP PROSECUTION DEPARTMENT
Assignees:
Origin: IRVINE, CA US
IPC8 Class: AG06F954FI
USPC Class: 719311


Abstract:

The system and method provides enhanced interactive web-browsing through multiple websites and supporting multiple application formats. An application presents the end-user with the ability to quickly (e.g., by a one-click operation) jump to a desired website no matter which and how many websites are concurrently activated. In addition to enhancing the end-users web-browsing experience, the application provides a platform with the ability to dynamically and contextually present suggestions and advertisements to the end-user.

Claims:

1. A method for exchanging data with a server comprising:providing a launch script stored on a server;providing on an end-user computer an executable application capable of obtaining the launch script from the server:injecting and executing the launch script on each of a plurality of web browsers running on the end-user computer such that the executable application can access a rich-media function through which an operator of the end-user computer can obtain data and perform on-line activities;communicating the operator's on-line activities to the remote server; andproviding, through the executable application, a plurality of suggestions to the operator based on the operator's on-line activities.

2. The method as set forth in claim 1 wherein the launch script includes a library of utilities.

3. The method as set forth in claim 1 wherein the rich media includes a dynamic cascading menu system through which the operator can select and access one or more websites.

4. A data exchange communication system comprising:a server having a memory that stores a launch script and an end-user computer connected to the server via a network, the end-user computer comprising an executable application capable of obtaining the launch script from the server and injecting and executing the launch script on each of a plurality of web browsers running on the end-user computer such that the executable application renders a rich-media through which an operator of the end-user computer can obtain data and perform on-line activities, and wherein the executable application communicates the operator's on-line activities to the server and provides a plurality of suggestions to the operator based on the operator's on-line activities.

Description:

RELATED APPLICATION

[0001]This claims priority under 35 U.S.C. § 119 from U.S. provisional patent application Ser. No. 60/965,336, filed Aug. 17, 2007 entitled "System and Method for Enhancing Interactive Web-Browsing Experience," which application is incorporated by reference here for its full disclosure.

BACKGROUND

[0002]With the rapid increase in the number and variety of websites and their application formats, the efficiency of browsing multiple websites has decreased proportionately. Conventional web-browsing systems did not fulfill the full potential of the web browser's ability to provide useful suggestions and advertisements to end-users. The present invention aims to solve the above inadequacies by providing a system and method for enhancing the interactive web-browsing experience.

SUMMARY

[0003]One aspect of the present invention provides a method for exchanging data with a server including providing a launch script stored on a local server. The method includes providing on an end user computer an executable application capable of obtaining the launch script from the server. The method injects and executes the launch script on each of a plurality of web browsers running on the end-user computer such that the executable application can access a rich-media function through which an operator of the end-user computer can obtain data and perform on-line activities. The operator's on-line activities are communicated to the remote server. The executable application provides a plurality of suggestions to the operator based on the operator's on-line activities.

[0004]Another aspect of the present invention provides a data exchange communication system comprising a server having a memory that stores a launch script and an end-user computer connected to the server via a network. The end-user computer comprises an executable application capable of obtaining the launch script from the server and injecting and executing the launch script on each of a plurality of web-browsers running on the end-user computer such that the executable application renders a rich-media through which the operator of the end-user computer can obtain data and perform on-line activities. The executable application communicates the operator's on-line activities to the server and provides a plurality of suggestions to the operator based on the operator's on-line activities.

BRIEF DESCRIPTION OF THE DRAWING

[0005]FIG. 1 is a flow chart of one embodiment of a web-browser extension according to the present invention.

[0006]FIG. 2 is a flow chart of one embodiment of a data exchange communication system according to the present invention.

[0007]FIG. 3 is a flow chart of one embodiment of a method for bypassing a local firewall according to the present invention.

[0008]It should be noted that the Figures are only intended to facilitate the description of the preferred embodiments of the present invention. The figures do not illustrate every aspect of the present invention and do not limit the scope of the invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0009]Aspects of the present invention provide systems and methods that enhance the end-user's web-browsing experience. In one embodiment of the present invention, an application that enhances the end-users' web-browsing experience includes a rich-media function, for example a built-in information feeder in an RSS format, directly into the web-browser's web-pages. The rich-media function may be composed of HTML, CSS, graphics, JavaScript, flash and any other technology that is interpretable via a web browser. Generally, rich media is a technology that provides interactivity or multi-media to a user through the web. Such an application presents the end-user with the ability to quickly (e.g., by a one-click operation) jump to a desired website no matter which and how many websites are concurrently activated. In addition to enhancing the end-user's web-browsing experience, implementations of aspects of the present invention may provide a platform with the ability to dynamically and contextually present suggestions and advertisements to the end-user.

[0010]Boomerang Architecture:

[0011]The "Boomerang" is a stand-alone executable application or web-browser extension which establishes a "data exchange communication system" between web-browsers and Boomerang servers. It is designed to inject into and initiate execution of JavaScript code in web-browsers. The JavaScript code that is injected into the web-browser is referred to as the "Boomerang launch script." Upon execution of the Boomerang launch script, the launch script then determines what is to be displayed to the end-user. The launch script can use the Boomerang "data exchange communication system" to retrieve, set and save settings, execute more JavaScript code, and open windows and message boxes. FIG. 1 shows a framework for execution of commands, functions and scripts within the Boomerang executable application or web-browser extension.

[0012]Preferably, the Boomerang executable application causes the browser to display the appearance or "skin" of the Boomerang environment and, through the execution of a rich-media function, to provide the end user with a set of enhanced browsing functions. The instantiation of the Boomerang environment may, for example, be a bar or region within a browser to indicate where an end-user can access the Boomerang functionality. The set of enhanced browsing functions may include one or more sets of dynamic cascading menus, which are context sensitive and provide context derived navigation suggestions. For example, a bar implementation of the Boomerang functionality may provide a number of different menus such as "news", "sports" and "search" that appear only when activated, for example, by having a mouse pointer dragged over the bar or area from which the cascading menu appears. The Boomerang environment may also provide a news feed or directed advertisement, or both as desired, with the advertisement preferably selected based on context such as a URL history and the news feed customized to the end-user's selections or history.

[0013]In a further enhancement to the browser functionality, the Boomerang application may detect when an end-user performs a search and detect the subject matter of the search. Based on the subject matter of the search, the remote server may provide directed advertisement or other web content based on the contents or context of the search subject matter. This would be a supplement to the search functionality and preferably would be displayed within the browser alongside the results of the conventional search engine. For example, the supplemental search results might be displayed in a region along the right or left hand edge of the browser.

[0014]Boomerang Launch Script:

[0015]In one embodiment of the present invention, hard coded into the Boomerang are two URLs to "Boomerang launch scripts." The "Boomerang launch scripts" are injected into a web browser to instantiate the Boomerang "data exchange communication system." The first launch script is referred to as HTTP_LAUNCH_SCRIPT and is executed inside a web-browser when the web-browser is visiting a non-secure or unencrypted web-page. The second launch script is referred to as HTTPS_LAUNCH_SCRIPT and is used when the web-browser is visiting a web-page that is encrypted using the HTTPS Secure Socket Layer protocol for communication. The Boomerang launch scripts can be stored on a remote server and can be accessed via their URLs. Because the launch scripts are on a remote server, modifications to the "Boomerang launch script" can be made at anytime by the software developers of the Boomerang who have access to the launch scripts. Modifications to the launch scripts immediately affect all end users upon the next page-load or when their web-browser requests a new copy of the launch script (which is on every page load unless the particular web-browser has temporarily cached the launch script for efficiency).

[0016]Boomerang Launch Script Architecture:

[0017]In one embodiment of the present invention, the Boomerang launch script is written in JavaScript and is organized into two main sections. The first section is a library of utilities that are used by the Boomerang to perform various tasks. The launch script utilities section is extensible because it is located on a remote server and is sourced remotely via the Boomerang data exchange communication system upon instantiation. Therefore this section of the application can be modified based upon the needs of the users of the application and without the necessity of an additional download of the Boomerang application by the end-user.

[0018]The second section instantiates the Boomerang's initial manifestation to the end-user based upon the current "language" and "skin" combination retrieved from the end-user's settings. The second section is also responsible for reporting activity back to the server and introducing any necessary event hooks into the web-browser. The second section may be easily modified by the Boomerang software developers and is extensible in the same fashion as the first section of the Boomerang launch script.

[0019]Boomerang Launch Script Variables:

[0020]var boomerang_ddx={ } [0021]An associative array of name/value pairs (also commonly referred to as a hash table or a dictionary). This variable holds the settings that are stored in the separate Boomerang application, and is the primary means for the Boomerang application to communicate to the HTTP(S)_LAUNCH_SCRIPT. [0022]boomerang_ddx[`lang`]=`en`; or boomerang_ddx.lang specifies the current language to be used. [0023]boomerang_ddx[`skin`]=`metal`; or boomerang_ddx.skin specifies the current skin to be loaded by the Boomerang.

[0024]var minimum_boomerang_version=20060822; [0025]Contains the minimum version for which this current Boomerang HTTP(S)_LAUNCH_SCRIPT is designed. If the Boomerang application reports an older version than the one provided there then the Boomerang automatically goes into a mode where it displays to the end user a prompt and easy instructions to download the most current version of the Boomerang application.

[0026]var boomerang_root_http="http://www.example.com/boomerang/"; [0027]The root URL for the Boomerang to use when referencing files on the Boomerang server, and is intended for primarily HTTP transactions.

[0028]var boomerang_root_https="https://www.example.com/boomerang/"; [0029]The root URL for the Boomerang to use when referencing files on the Boomerang server, and is intended primarily for HTTPS "secure" transactions.

[0030]var boomerang_ssl_on=(document.location.href.indexOf("https://")==0 ? true:false); [0031]Holds the Boolean value "true or false" which indicates if the current web transaction is using the HTTPS SSL secure encrypted transmission method.

[0032]var boomerang_root_url=(boomerang_ssl_on ? boomerang_root_https:bommerang_root_http); [0033]The root URL to be used during the current transaction. This switches between the boomerang_root_https value and the boomerang_root_http value automatically depending on the current web transmission type (HTTPS or HTTP).

[0034]var boomerang_search_suggest_css=boomerang_root_url+"search_suggest.- css"; //changethis . . . in search_suggest.php [0035]A URL to the cascading style sheet to be loaded when the "Boomerang search suggest" is activated.

[0036]var boomerang_skin=''; [0037]Contains the current "skin" to be loaded by the Boomerang.

[0038]var boomermenu_system=null; [0039]A JavaScript function object which contains the reference to the Boomerang's dynamic cascading menu system.

[0040]var boomerang_draw_height=0; [0041]Contains the height in pixels of the current Boomerang skin that will be rendered by the web-browser.

[0042]var domain_level--3 (boomerang_ddx[`affiliate_username`]==''∥typeof(boomerrang_ddx.a- ffiliate_username)==`undefined` ? `www`:boomerang_ddx[`affiliate_username`]); [0043]Contains the username of the affiliate who is responsible for soliciting the download of the current installation of the Boomerang application on any particular end user's computer.

[0044]var boomerang_browser=(navigator.appName==`Microsoft Internet Explorer` ? `ie`:`netscape`); [0045]Specifies which web-browser is in use. The Boomerang currently supports the following web-browsers: Internet Explorer 6 and 7 for Windows and Firefox 1.2 or greater on both the Windows and Macintosh (OS X) platforms.

[0046]var boomerang_platform=(navigator.platform.indexOf("Mac")>=0 ? "Mac": (navigator.platform.indexOF("Win")>=0 ? "Win": navigator.platform)); [0047]Specifies the current computer platform in use by the end user. The Boomerang currently supports the following computer platforms: Microsoft Window (98, Me. NT, XP, etc.) and Macintosh OS X.

[0048]var boomerang_debug_mode=false; [0049]A Boolean value used to determine if the Boomerang HTTP(S)_LAUNCH_SCRIPT should be executing code that is not meant to be ran when being used by the general public. This is a value that can be set to "true" if the current GUID is one which identifies the Boomerang of an application developer of the Boomerang software system. This is a useful feature to be used when developing additional functionality into the HTTP(S)_LAUNCH_SCRIPT, because it allows sections of the Boomerang code to be worked on without the worry of interfering with the end-user's browsing experience.

TABLE-US-00001 [0049]var boomer_searchsuggest_triggers = Array( `http://www.google.com/search?`, `http://www.google.es/search?` , `http://search.yahoo.com/search?`, `http://es.search.yahoo.com/search?` , `http://search.msn.com/results.aspx?` , `http://search.live.com/results.aspx?` , `http://www.ask.com/web?`, `http://es.ask.com/web?` , `http://www.altavista.com/web/results?`, `http://es.altavista.com/web/results?` , `http://search.lycos.com/?`, `http://buscador.lycos.es/?` , `http://www.alltheweb.com/search?` , `http://www.hotbot.com/index.php?` );

[0050]An array that contains a list of URLs which when visited causes the Boomerang to activate the Boomerang search suggest system.

[0051]Boomerang Launch Script Utilities Detail:

[0052]function boomerang_ddx_lock(lock_bool) [0053]this locks and unlocks the Boomerang ddx system which is a "packet drop" system that is used to communicate back to the Boomerang application. [0054]lock_bool is a Boolean variable that may be either true or false. True locks the system and false unlocks the system.

[0055]function boomerang_ddx_command(cmd_str, name_str, value_str) [0056]This is the function that is used to issue commands back to the Boomerang application.

[0057]Command String Format: command|name|value{grave over ( )} [0058]The command string is a concatenation of the above 3 values which are separated by the pipe character "|". The first element of the command string (referred to as "command" in the command string format specifier above) is a command identifier which instructs the Boomerang application on how to handle the name and value pair which follows as the next two elements. All command strings must end with the back-tic character "{grave over ( )}".

[0059]Detailed Process: [0060]1. Obtain the element pointer to the html div tag which is identified by the id-string "boomerang_ddx_content".

[0061]2. Create the command string to be concatenated to the current values which are stored in the <div> identified by the value "boomerang_ddx_content".

[0062]3. Escape the command string so there are no conflicting values.

[0063]a. Replace the pipe characters "|" by the literal string "[pipe]"

[0064]b. Replace the back-tic characters "{grave over ( )}" by the literal string "[backtic]"

[0065]4. Lock the Boomerang <ddx> system via the function boomerang_ddx_lock( ) [0066]5. Concatenate the full command string to the innerText of the boomerang_ddx_content html div.

[0067]6. Unlock the Boomerang <ddx> system via the function boomerang_ddx_lock( )

[0068]function boomerang_tracking_url(URL_str, campaign_code) [0069]Returns the URL used to report usage back to the Boomerang server. This allows the Boomerang serve to track URLs accessed by an operator through the Boomerang service.

[0070]function boomerang_execute_when (condition_function, execute_function, how_many_attempts) [0071]This is a utility function used to keep code execution concurrent based upon a set condition. For instance, the Boomerang has the ability to load JavaScript libraries from remote servers (i.e. the Boomerang menu system). This function allows the execution of a block of code only after a condition is satisfied and in this example that condition would be the loading status of the requested library JavaScript being set to completely loaded.

[0072]function boomerang_call_js (id_str, src_url) [0073]This is a utility function used to include and execute a remote JavaScript file programmatically.

[0074]function boomerang_attach_css (id_str, src_url) [0075]This is a utility function which is used to attach a remote cascading style sheet dynamically and programmatically.

[0076]function boomerang_openwin (the URL, w, h) [0077]A utility to open up a simple chromeless popup window. A chromeless popup window is a web-browser window that has no status bar, navigator bar, scroll bars, etc.

[0078]function boomerang_get_datestring( ) [0079]Gets a string used to uniquely identify the current date. Format: YYYY-MM-DD function boomerang_refresh( ) [0080]Reloads the current web-page.

[0081]function ewmedia_banner_rotator( ) [0082]Initiates the advertisement banner rotation system.

[0083]function ewmedia_set_rotator_timer( ) [0084]Used to set the JavaScript timer for the ad banner rotation system.

[0085]function boomerang_submit_user_data( ) [0086]Used to report back to the Boomerang server once per day only. This function reports back the GUID and affiliate_username.

[0087]function boomerang_cost_per_action( ) [0088]Used to detect cost-per-action sales and report sales events back to the Boomerang server. The data collected by this report is used to compute commissions which are paid out to the affiliate who distributed the particular Boomerang to the end-user.

[0089]function boomerang_upgrade_notice( ) [0090]Displays a notice to the end user that their Boomerang is out of date and provides them with instructions on how to download and install the most recent version of the Boomerang.

[0091]function boomerang_is_searchsuggest_triggered( ) [0092]Checks the current web-browser URL to see if it is contained in the boomer_searchsuggest_triggers variable and if it is then this function returns true, otherwise the function returns false.

[0093]function boomerang_daily_trigger( ) [0094]Returns "true" once per day, otherwise it returns "false".

[0095]function boomerang_add_net_hash(net_hash_str) [0096]net hashes are the keys to website notifications. They are unique identifiers which are used to automatically authenticate a user to a website which is affiliated with the Boomerang in some way (e.g., StayRelated.com). [0097]net-hashes are comma separated (no commas on the front or back) [0098]they are contained in boomerang_ddx.net_hashes

[0099]function boomerang_do_notifications( ) [0100]Checks with the Boomerang server to see if news is available from affiliated web-sites (e.g., StayRelated.com). If news is available this system discretely displays the news to the end user. As an example the Boomerang checks with StayRelated.com to see if any of the current user's friends or family have birthdays in the near future, and if so it then reports that back to the end user.

[0101]function boomerang_draw_boomerang(skin, lang) [0102]Loads and displays in the web-browser the specified skin and language combination.

[0103]Detailed Process:

[0104]1. Run the function boomerang_skin_cleanup( ) if it exists. This function is specified in the separate skin files.

[0105]2. Save the current language and skin status into the <ddx> system which reports back to the Boomerang application to be stored.

[0106]3. Load the Boomerang dynamic cascading menu system based upon the specified language.

[0107]Use the function boomerang_call_js( ) to load and execute the specified skin file.

[0108]a. Set all links in the skin which point to eWorld sites to include the affiliates username as the 3rd level part of the domain name.

[0109]b. Run the function boomerang_skin_init( ) if it exists. This function is specified in the separate skin files.

[0110]c. If the Boomerang search suggest system is loaded make sure it is positioned at the correct height.

[0111]d. When the skin file is loaded instruct the web-browser to render it to the current web-page.

[0112]Boomerang Launch Script Instantiation Process:

[0113]Detailed Process:

[0114]1. Check for and report cost-per-action indicators (i.e. if something was purchased on a web-site that is affiliated with the Boomerang).

[0115]2. Submit usage data back to the Boomerang server once per day only (just GUID and affiliate_username).

[0116]3. Make sure specified eWorld sites have the affiliate_username as the 3rd level domain if they are the current site being visited.

[0117]4. Check for live pay-per view event payment page, and if they have already paid then forward them to the streaming video page.

[0118]5. Check if the Boomerang should be hidden. Halt execution if the Boomerang should be hidden.

[0119]6. Load the Boomerang dynamic cascading menu system.

[0120]7. Use the function boomerang_draw_boomerang( ) to instruct the web-browser to display the Boomerang graphics and html from the specified language and skin file.

[0121]8. Check if search suggest is triggered, and if so then call the search suggest JavaScript from the Boomerang server.

[0122]Data Exchange Communication System:

[0123]The data exchange communication system is a protocol system that is designed to facilitate communication between the Boomerang application and the "Boomerang launch script" which is run by the web browser's JavaScript interpreter. FIGS. 2 and 3 show schematically the communication channels used for the data exchange communication system. FIG. 2 shows the normal and encrypted communication channels for one instance of the data exchange communication system. FIG. 3 shows the normal and encrypted communication channels when there is the further complication of a firewall on the local computer system.

DEFINITIONS

[0124]GUID: Globally Unique Identifier. This is a value so large that the likelihood of two Boomerangs containing the same value is incredibly small. GUIDs are a commonly occurring tool used to uniquely identify data-sets.

[0125]HTTP_LAUNCH_SCRIPT: The script (or URL of the script) that establishes the Boomerang's JavaScript in the current web-browser's web-page. This instance is for non-encrypted communication.

[0126]HTTPS_LAUNCH_SCRIPT: The script (or URL of the script) that establishes the Boomerang's JavaScript in the current web-browser's web-page. This instance is for encrypted HTTPS (SSL) communication.

[0127]HTTP(S)_LAUNCH_SCRIPT: This represents the HTTP_LAUNCH_SCRIPT or the HTTPS_LAUNCH_SCRIPT depending on the current encryption status of current web-page.

[0128]<ddx>: Boomerang Data Exchange Communication System. This symbol represents the "packet drop" communication system responsible for communicating from the web-browser's JavaScript (established by the HTTP(S)_LAUNCH_SCRIPT) to the Boomerang. [0129]this system consists of two hidden HTML tags <div id="boomerang_ddx_content"> encrypted command string</div> and <div id="boomerag_ddx_lock"> true or false to prevent synchronization issues</div>.

[0130]Note this is a "packet-drop" system. Boomerang ddx commands are put into the inner HTML of this HTML tag and are polled by the Boomerang application.

[0131]ddx[ ]: This is the JavaScript associative array which contains the values that are communicated from the Boomerang application. This is also referred to as variable boomerang_ddx or associative array boomerang_ddx[ ] in this document.

[0132]Solution for Preventing Remote Usurpation of Boomerang Javascript System:

[0133]Necessity for solution: Because the Boomerang's launch script runs in the same thread as the web-browser's JavaScript it is necessary to prevent the possibility of remote web-pages (which could potentially be aware of the Boomerang's JavaScript system) from communicating to the Boomerang application and saving settings to the Boomerang application via the <ddx> packet-drop system.

[0134]When the Boomerang application instantiates the Boomerang system in the web-browser by running the Boomerang HTTP(S)_LAUNCH_SCRIPT it passes via the query string three random variable length symmetrical encryption keys, two "id" strings, and the version of the current Boomerang application. These six values are concatenated together via the pipe character into a single string. The resulting concatenated string is then encrypted via an RSA asymmetrical public key (i.e., public/private key system). The remote Boomerang server securely holds the RSA asymmetrical private key.

[0135]The six values passed to the HTTP(S)_LAUNCH_SCRIPT:

[0136](Note: key 1, key 2, key 3, id string 1, and id string 2 all change upon every execution of the Boomerang application). [0137]key 1: Symmetrical encryption value for the <ddx> system. [0138]key 2: Symmetrical encryption key for the HTTP(S)_LAUNCH_SCRIPT's variable names and values. [0139]key 3: Symmetrical encryption key for the HTTP(S)_LAUNCH_SCRIPT's function names. [0140]id string 1: This is the alternate value for the id of the HTML element which contains the encrypted command string for the <ddx> system. [0141]id string 2: This is the alternate value for the id of the HTML element which contains the lock status of the <ddx> system. [0142]version: This is the version of the current Boomerang application.

[0143]ASYMMETRICAL CYPHER=RSA(key 1|key 2|key 3|id string 1|id string 2| version)

[0144]The Boomerang application contains the RSA asymmetrical public encryption key which is used to encrypt the above asymmetrical cypher.

[0145]The remote HTTP(S)_LAUNCH_SCRIPT is generated via a remote server-side CGI application (e.g. PHP) which is referenced by the web-browser as if it were a JavaScript file.

[0146]This remote server-side CGI application contains the RSA asymmetrical private key which is used to decrypt the asymmetrical cypher that is passed to the application via the query string.

[0147]The remote server-side CGI application, when executing, dynamically replaces all variable name-value pairs with cyphers generated via "key 2".

[0148]The remote server-side CGI application when executing dynamically replaces all function names with cyphers generated via "key 3".

[0149]The HTTP(S)_LAUNCH_SCRIPT then uses "key 1" to securely communicate back to the Boomerang application via the <ddx> packet drop system.

Example

[0150]<div id="id string 1" style="display:none;"> encrypted command string</div>

[0151]<div id="id string 2" style="display:none;"> true or false to prevent synchronization issues</div>

[0152]Notice: The modified function names and variable name-value pairs make it extremely unlikely that a remote web-page could bypass this security system and communicate to the Boomerang application. Also note that the symmetrical keys "key 1, key 2, and key 3" are variable length and change every time the Boomerang application is executed. In addition to this security measure the symmetrical keys are held private because of the RSA asymmetrical encryption that is used when submitting them to the remote server-side CGI application which generates the HTTP(S)_LAUNCH_SCRIPT.

[0153]The invention is susceptible to various modifications and alternative forms, and specific examples thereof have been shown by way of example in the specification and drawings. It should be understood, however, that the invention is not to be limited to the particular forms or methods disclosed, but to the contrary, the invention is to cover all modifications, equivalents, and alternatives.
Joseph Frazier | Create Your Badge

This page has been visited 3,376 times since November 18th, 2009

This is an ApogeeInvent Dynamic Website