Abstract:
Method of customizing the appearance of a web page by dragging and dropping objects from one location on the web page to a new location. This method enables the content of web pages to be easily customized by users. The dragged object can be any portion of the HTML web page (text, hyperlinks, forms, images, tables, or other HTML components). The object is immediately displayed in the new location. The new location of the object can be (a) saved temporarily for the current user, (b) saved permanently for the current user, or (c) saved for all users that view that web page.

Description:
FIELD OF THE INVENTION  
         [0001]    The present invention relates generally web pages, and more particularly to an innovative method and system for allowing users to rearrange the content of a web page by dragging and dropping objects within the web page, and having that object remain in the new location for some period of time. The new location of the objects can be saved temporarily or permanently for the current user, or saved for all users of that web page. This invention enables user of the web page to easily and extensively customize the page.  
         BACKGROUND OF THE INVENTION  
         [0002]    The Internet is a worldwide system of computer networks—a network of networks in which users at any one computer can, if is has permission, get information from any other computer. Intranets are similar services that are available on private local area networks (LANs). The World Wide Web (WWW) and similar private architectures provide a “web” of interconnected documents, called “web pages” on intranets and the internet.  
           [0003]    Web pages are typically made up of HyperText Markup Language (HTML) tags displaying HTML source files containing the headings, data, text, footings and hyperlinks to other web pages. An HTML document includes a hierarchical set of markup elements; most elements have a start tag, followed by content, followed by an end tag. The content is a combination of text and nested markup tags. HTML tags, which are enclosed in angle brackets (‘&lt;’ and ‘&gt;’), indicate how the document is structured and how to display the document, as well as destinations and labels for hypertext links. There are tags for markup elements such as titles and headers, text attributes such as bold, italic, lists, paragraph boundaries, links to other documents or other parts of the same document, in-line graphic images, and for many other features. Javascript provides a way to include programs, which are downloaded in a Web page, enabling the user to change some page properties. More information about javascript and the Java programming language may be found in Java in a Nutshell by David Flanagan, published by O&#39;Reilly &amp; Associates .COPYRGT.1996.  
           [0004]    Web server software languages such as Active Server Pages (ASP), Java Server Pages (JSP), or ColdFusion are software languages that are executed on the web server. They provide a method for determining what content to serve to the client computer. These languages also provide interfaces to the web server resources, such as files or databases stored on the server. Such software languages also provide methods of sending, retrieving, and processing information sent to and from web pages.  
         SUMMARY OF THE INVENTION  
         [0005]    Defined objects on a web page may be dragged and dropped to different locations on the web page with the mouse. The dragged object can be any portion of the HTML web page (text, hyperlinks, forms, images, tables, or other HTML content).  
           [0006]    The object is displayed while it is being dragged, and is immediately displayed in the new location when dropped. The new location of the object can be saved so that next time the web page is viewed, the object is displayed in the new location. The object is able to be moved (or dragged) by the user to a new location anywhere on the web page. The new location of the object may be (a) saved temporarily for the current user, (b) saved permanently for the current user, or (c) saved for all users that view that web page.  
           [0007]    A draggable object on a web page may be any HTML content on the page. Images can be dragged directly with this method, if the image is not hyperlinked to another location. Non-images and images with hyperlinks currently require a small target image that the mouse can “grab” to drag the entire object.  
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0008]    [0008]FIG. 1 is a view of the web page prior to user moving objects.  
         [0009]    [0009]FIG. 2 is a view of the same web page after user has moved objects.  
         [0010]    [0010]FIG. 3 is a flowchart that illustrates the logical steps for the implementation of dragging and dropping an object on a web page.  
         [0011]    [0011]FIG. 4 is sample javascript for the mouse down event.  
         [0012]    [0012]FIG. 5 is sample javascript for the mouse move event.  
         [0013]    [0013]FIG. 6 is sample javascript for the mouse up event.  
         [0014]    [0014]FIG. 7 is sample javascript to catch the mousedown, mousemove, and mouseup events.  
         [0015]    [0015]FIG. 8 is sample Active Server Pages code for a Snap-To-Grid.  
         [0016]    [0016]FIG. 9 is sample Active Server Pages code to track the location of 5 objects, and save the location of the objects as cookies.  
         [0017]    [0017]FIG. 10 is sample HTML/Active Server Pages code for a draggable object.  
         [0018]    [0018]FIG. 11 is sample Active Server Pages code to track the location of 6 objects on a web page, and save the location of the objects on the server.  
         [0019]    [0019]FIG. 12 is the entire Demo4.asp sample file.  
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0020]    The present invention enables a user to drag and drop defined objects on a web page to a different location on the web page, The new location of the object may be (a) saved temporarily for the current user, (b) saved permanently for the current user, or (c) saved for all users that view that web page. An object may be any combination of HTML code displayed to the user such as, formatted text, forms, hyperlinks, tables, or images. An object is defined with the HTML &lt;div&gt;tag.  
         [0021]    [0021]FIG. 1 shows the sample web page “Demo4.asp” as it is displayed when initially loaded in a web browser. There are multiple objects on the page that may be dragged and dropped to new locations by the user. An image may be dragged directly with the mouse with this invention. The large image of the question mark in FIG. 1 can be dragged and dropped directly with the mouse. Some HTML code cannot currently be dragged directly with the mouse due to the current leimtations of HTML and javascript. Some HTML code requires interaction with the mouse, such as hyperlinked images. Because of this, some objects on the web page require a target image that can be dragged. The target images in FIG. 1 are displayed as circular images at the top left of each object. When the target inage is dragged, all of the HTML code defined within that object is dragged. Future implementations of HTML and javascript may allow these objects to be dragged directly without requiring a target image.  
         [0022]    [0022]FIG. 2 displays the same web page after the user has dragged and dropped several objects to new locations on the web page with the mouse. Note that the objects may overlap before or after the user moves them. Also note that the objects may contain HTML code that interacts with the mouse, such as hyperlinks or forms.  
         [0023]    The dragging and dropping of the objects within the web page is accomplished by tracking the mouse events with javascript. FIG. 3 shows the general flow of the javascript mouse event functions. Javascript is used to listen for the MouseDown, MouseMove, and MouseUp events, as shown in FIG. 7. When any of those mouse events occur, specific javascript functions are executed. The javascript functions for the MouseDown, MouseMove, and MouseUp events are shown in FIG. 4, FIG. 5, and FIG. 6. The javascript functions for the mouse events specifically check for objects that are defined as movable on the page. This approach ensures that the functions are only executed for objects that are defined as draggable with the &lt;div&gt;tag, and other HTML code such as hyperlinks or forms that also utilize the mouse, still function properly for the user.  
         [0024]    After the object is dragged and dropped by the user, the new location of the object is either:  
         [0025]    (a) Saved temporarily for the current user. Only the current user sees the new locations of the objects. The objects only remain in the new locations for that user until the web page is reloaded (or refreshed). The objects will revert to their original location if the web page is re-opened or refreshed.  
         [0026]    (b) Saved only for that user. The changes made to the location of the objects on the page are displayed only the user that made the change. Only the user that moved the objects will see the objects in the new locations. The objects will remain in the new locations for that user even if the page is reloaded (or refreshed). Different users are able to arrange the objects differently; each user only sees his/her own changes, not the changes of other users. The object location can be saved in a user profile with web browser cookies. If the new object location is saved as a cookie, then only the user of that web browser will see the new location, and each user of the web site can independently change the location of the same object. This allows different users of the same web page to customize the view of the page by rearranging objects on the page. FIG. 9 shows sample Active Server Pages code to save the location of the objects as cookies in the users browser.  
         [0027]    (c) Saved for all users that view that web page. The changes made to the location of the objects on the page are displayed to all users that view the web page. The object location can be saved in a database or file on the server. FIG. 11 shows sample Active Server Pages code to save the location of the objects as a file on the web server.  
         [0028]    [0028]FIG. 10 shows HTML sample code for a moveable object. The HTML &lt;div&gt; tag is used to define the object. All of the HTML code between the begining &lt;div&gt; tag and the ending &lt;/div&gt; tag is draggable with the mouse in this invention. The HTML code within the &lt;div&gt; tags could contain formatted text, images, tables, forms, or other HTML code. An HTML form could include any of the available form elements such as buttons, text boxes, drop down lists, or check boxes.  
         [0029]    Since the draggable object in FIG. 10 is text, the &lt;div&gt; tag must be include a target image that the mouse can grab to drag the text: &lt;img src=“dds.gif” border=“0”&gt; This image included in the &lt;div&gt; tag allows the user to grab that image and drag the entire content of the &lt;div&gt; tag. Note that the target image must be contained within the &lt;div&gt; tag, and also must not be contained within a table or form. Images within the &lt;div&gt; tag that are within a table or form are not recognized as draggable objects in the current versions of HTML and javascript.  
         [0030]    The object name, X location, and Y location of the object is specified within the &lt;div&gt; tag. The HTML &lt;div&gt; tag may also include tags that define other attributes of the object, such as background color, height, and width. The layering order of the objects (commonly known as z-order) defines what object is displayed on top if the objects overlap. The z-order can be easily defined within each object by changing the “z-index” tag in the &lt;div&gt; tag. Objects with higher z-index values are displayed on top of objects with lower z-index values if the objects overlap. This allows certain objects to always remain on top if the objects overlap. Note that the z-order does not currently work for certain HTML elements, such as form dropdown lists, which always remain on top. This is a limitation of current HTML and javascript code.  
         [0031]    A Snap-To-Grid can be implemented to assist the user with lining up objects on the web page after they are moved. If the Snap-To-Grid is used, the location of dropped objects will be changes slightly to line up with the closest grid coordinates. If the Snap-To-Grid is not implemented, the objects will be placed exactly where the user drops them. A SnapToGrid value of 1 pixel is the equivalent of turning the grid off. Sample code for implementing a Snap-To-Grid is displayed in FIG. 8. The “SnapToGrid” grid variable determines how close together the grid coordinates are located.  
         [0032]    [0032]FIG. 12 shows the entire Demo4.asp sample code file. This sample code file is a combination of Active Server Pages, HTML, and javascript. This code demonstrates a variety of this inventions functionality:  
         [0033]    Dragging and dropping of text objects.  
         [0034]    Dragging and dropping of image objects.  
         [0035]    Dragging and dropping of table objects.  
         [0036]    Dragging and dropping of functional hyperlink objects.  
         [0037]    Dragging and dropping of functional form objects.  
         [0038]    Mixing of draggable and non-draggable objects on a page.  
         [0039]    User-updateable Snap-To-Grid.  
         [0040]    Z-Order updates so the last dropped object is always on top of other objects.  
         [0041]    Saving the objects location and z-order in a server-side file.  
         [0042]    Although the foregoing invention has been described in some detail for purposes of clarity of understanding, it will be apparent that certain changes and modifications may be practiced within the scope of the appended claims. It should be noted that there are many alternative ways of implementing both the process and apparatus of the present invention. It is therefore intended that the following appended claims be interpreted as including all such alterations, permutations, and equivalents as fail within the spirit and scope of the present invention.