WO2009073007A1 - Netvariables in a recursive browser system - Google Patents

Netvariables in a recursive browser system Download PDF

Info

Publication number
WO2009073007A1
WO2009073007A1 PCT/US2007/024954 US2007024954W WO2009073007A1 WO 2009073007 A1 WO2009073007 A1 WO 2009073007A1 US 2007024954 W US2007024954 W US 2007024954W WO 2009073007 A1 WO2009073007 A1 WO 2009073007A1
Authority
WO
WIPO (PCT)
Prior art keywords
netvariable
span
recursive
value
web browser
Prior art date
Application number
PCT/US2007/024954
Other languages
French (fr)
Inventor
Joseph Pally
Original Assignee
Zcubes, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zcubes, Inc. filed Critical Zcubes, Inc.
Priority to PCT/US2007/024954 priority Critical patent/WO2009073007A1/en
Publication of WO2009073007A1 publication Critical patent/WO2009073007A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/954Navigation, e.g. using categorised browsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2216/00Indexing scheme relating to additional aspects of information retrieval not explicitly covered by G06F16/00 and subgroups
    • G06F2216/15Synchronised browsing

Definitions

  • the present invention relates generally to the fields of computer technology and web browser systems. More specifically, the present invention provides a system and method to integrate media and to manipulate content within a recursive browser environment.
  • the Web To browse or surf the World Wide Web (the Web) is the fastest and most popular method of obtaining information today.
  • current web browsers are primarily read only with little interactive capability.
  • the Internet is to "go to and visit" and not part of the experience.
  • a user's experience on the Internet is a temporal series of URLs visited.
  • group collaboration on the Web requires user authentication and is generally site specific.
  • the present invention is deficient in systems and methods to display, manipulate and/or create content in a recursive browser environment.
  • the present invention fulfills this long-standing need and desire in the art.
  • the present invention is directed to a recursive web browser system.
  • the recursive browser system comprises a computer having a processor and a recursive web browser configured to recursively display in a browser window thereof one or more recursive webpages therein and a network connection to one or more other computers comprising a network.
  • the recursive web browser system comprises a computer memory coupled to the processor storing at least one netvariable associated with a complete Uniform Resource Locator (URL) address and includes storing instructions adapted to be executed by the processor to manipulate the netvariable(s) or content therein and a means for retrieving or storing the netvariables onto the computer or the other computer(s) over the network.
  • URL Uniform Resource Locator
  • the present invention is directed to related recursive web browser systems further including, independently, executable instructions stored in the computer memory to create one or more netvariables and means for launching one or more user-requested actions executable on the netvariable(s).
  • the present invention also is directed to a recursive web browser.
  • the recursive web browser comprises a recursive browser window configured to recursively display one or more recursive webpages, means for accessing a computer memory coupled to a processor and storing at least one netvariable as described herein and instructions adapted to be executed by the processor to manipulate the netvariable(s) or content therein, and means for launching one or more user- requested actions executable on the netvariable(s).
  • the present invention is directed to a related recursive web browser further comprising a network connection to one or more computers comprising a network and means for retrieving the netvariables from or storing the netvariables onto the one or more computers.
  • the present invention is directed to another related recursive web browser in which the computer memory further stores executable instructions to create one or more netvariables.
  • the present invention is directed further to a method for retrieving webpage content.
  • the method comprises providing the recursive web browser system described herein and selecting one or more netvariables each corresponding to a complete Uniform Resource Locator (URL) address from a computer memory storing the same.
  • the selected netvariable(s) are mapped to the corresponding complete URLs and the webpage content associated with the URL(s) is retrieved and displayed in a recursive browser page or window.
  • the present invention is directed to a related method further comprising the independent steps of creating one or more netvariables and, optionally, of storing the same.
  • the present invention is directed to another related method further comprising implementing the netvariable as a collaborative page or window shared by two or more computers over the network and, optionally, changing content within the collaborative page or window thereby creating another netvariable containing the same therewithin and synchronizing the change to the content with other computers having access thereto.
  • the present invention is directed to yet another related method further comprising applying an action parameter to the netvariable.
  • the present invention is directed further still to computer program product having a memory and a plurality of netvariables being stored in the memory.
  • the computer program product memory further storing a method of retrieving webpage content. The method comprises mapping a selected netvariable to a corresponding complete URL and retrieving web page content associated with the URL(s) and displaying the retrieved content in a recursive browser page or window.
  • the present invention is directed to related computer program products storing methods further comprising, independently, the steps described herein.
  • Figures 1A-1B are flowcharts of the steps to add content to the Net Clipboard (Figure IA) and to retrieve content from the Net Clipboard ( Figure IB) utilizing netvariables in a recursive browser environment.
  • Figure 2 is a flowchart of the steps to Chat utilizing netvariables in a recursive browser environment.
  • Figure 3 is a flowchart of the steps to participate in a NetDiscussion Room utilizing netvariables in a recursive browser environment.
  • a recursive web browser system comprising a computer having a processor and a recursive web browser configured to recursively display in a browser window thereof one or more recursive webpages therein; a network connection to one or more other computers comprising a network; a computer memory coupled to the processor storing at least one netvariable associated with a complete Uniform Resource Locator (URL) address, including storing instructions adapted to be executed by the processor to manipulate the netvariable(s) or content therein; and means for retrieving or storing the netvariables onto the computer or the other computer(s) over the network.
  • URL Uniform Resource Locator
  • the recursive web browser further comprises means for launching one or more user-requested actions executable on the netvariable(s).
  • a particular example of the means for launching a user-requested action is an action bar within a recursive browser window or an address bar located in a browser platform associated with the recursive web browser which triggers the action bar.
  • Exemplary actions are effective to create a net variable, to get a netvariable, to set a netvariable, to cache a netvariable, or to change a value of a netvariable.
  • a change of a value may comprise a value increment, a value decrement or an automatic update of a value from another source.
  • the computer memory of the recursive web browser further may include executable instructions to create one or more netvariables.
  • the netvariable may comprise an assigned name and value pair.
  • the netvariable further may comprise a user passcode.
  • the netvariables or one or more changes thereto may be stored in a memory cache or on a hard disk.
  • the netvariable may contain content comprising text, URL links, images, or a combination thereof or one or more ZCubes comprising the same.
  • the netvariable may be implemented as a collaborative page or window shared by two or more computers over the network.
  • the collaborative page may be assigned a unique identifier to restrict user(s) access thereto.
  • a drag/drop action or creation of content within the page or window may create another netvariable therewithin containing the dropped or created content. Further to these actions a change to the content within a collaborative page or window may be synchronized with other computers having access thereto.
  • a recursive web browser comprising a recursive browser window configured to recursively display one or more recursive webpages; means for accessing a computer memory coupled to a processor and storing at least one netvariable described supra and instructions adapted to be executed by the processor to manipulate the netvariable(s) or content therein; and means for launching one or more user- requested actions executable on the netvariable(s).
  • the recursive web browser may comprise a network connection to one or more computers comprising a network and means for retrieving the netvariables from or storing the netvariables onto the one or more computers.
  • the computer memory further may store executable instructions to create one or more netvariables.
  • the means for launching one or more user-requested actions is an action bar within a recursive browser window or an address bar located in a browser platform associated with the recursive web browser which triggers the action bar. The actions are as described supra.
  • a method for retrieving webpage content comprising providing the recursive web browser system described supra; selecting one or more netvariables each corresponding to a complete Uniform Resource Locator (URL) address from a computer memory storing the same; mapping the selected netvariable(s) to the corresponding complete URLs; and retrieving webpage content associated with the URL(s) and displaying the retrieved content in a recursive browser page or window.
  • URL Uniform Resource Locator
  • the method may comprise creating one or more netvariables. Further still, the method optionally may comprise storing the created netvariable(s) in the computer memory.
  • the computer memory may comprise one or more computers networked within the recursive browser system.
  • the method may comprise implementing the netvariable as a collaborative page or window shared by two or more computers over the network.
  • the method optionally, further may comprise assigning a unique identifier to the collaborative page to restrict user(s) access thereto.
  • the method may comprise changing content within the collaborative page or window thereby creating another netvariable containing the same therewithin.
  • the method optionally, further may comprise synchronizing the change to the content with other computers having access thereto.
  • the method may comprise applying an action parameter to the netvariable. Exemplary action parameters are effective to create a net variable, to get a netvariable, to set a netvariable, to cache a netvariable, or to change a value of a netvariable.
  • a change in value may comprise incrementing a value, decrementing a value, or updating automatically a value from another source.
  • a computer program product having a memory, a plurality of netvariables being stored in the memory, the memory further storing a method of retrieving webpage content comprising the steps of mapping a selected netvariable to a corresponding complete URL; and retrieving web page content associated with the URL(s) and displaying the retrieved content in a recursive browser page or window.
  • the stored method may comprise further method steps as described supra.
  • the netvariables and action parameters applied thereto are as described supra.
  • the implementation of netvariables as collabortive pages or windows and the specific implementations thereof are as described supra.
  • the term “a” or “an” may mean one or more.
  • the words “a” or “an” when used in conjunction with the word “comprising”, the words “a” or “an” may mean one or more than one.
  • another or “other” may mean at least a second or more of the same or different claim element of components thereof.
  • the term(s) "recursive browser” or “zBrowser” refers to a browser that uses existing browsers to enhance their functionality and to provide 3 dimensional multipart full browser functionality to improve browser experience.
  • the term “Action Bar” refers to a targeting bar, which may be the conventional URL bar, that can also be triggered from html or :href calls invoking, e.g., one or more web actions, web sites, web services, or action triggers.
  • ZCube refers to a collection of one or more ZBoxes contained within a ZPage or recursive webpage where a "ZBox” is a part of a ZPage that contains an html object(s), for example, but not limited to, images, scripts, Shockwave, and a recursive browser. ZBoxes are copyable and individually and selectively formattable with drag-drop of style text.
  • "ZPage” or "recursive webpage” is a container of one or more ZCubes/zBoxes that encompasses logic to display, edit, move, browse, rotate, hide, animate, and run scripts within the recursive browser.
  • ZBox and "ZCube” are interchangeable.
  • a ZCube may be made from templates that are stored in a gallery. The ZCube may be moved/rotated over a user-defined path and then may be animated. A ZCube can be made "read only”. A ZCube may have push pins added to it or comprise other pointers. A ZCube may be in multiple layers.
  • ZCube world refers to one or more sets of ZCube collections displayed under one context to the user.
  • a ZCube world may contain ZPages.
  • ZPaint refers to an extension of Zebra, an application which enables manipulation or modification of the contents of a ZCube, to color or paint graphical objects on a webpage.
  • Netvariable refers to a Java servlet that provides data persistency for user defined variables on a web server. NetVariable supports two action modes, SET and CACHE, as described herein.
  • variables i.e., netvariables
  • Netvariables may be created, the content within a netvariable may be created, added, deleted, otherwise changed, queried, or shared. Effectively, netvariables can function as the Internet's global memory and can be used to remember anything.
  • the recursive web browser system comprises at least a computer memory methods and applications, etc. stored therein which are effective to control, manipulate or modify content within a networkable recursive browser environment.
  • the recursive web browser or ZBrowser comprises an Action Bar within the recursive browser window or page or recursive webpage as an entry point for any retrievable URL or executable action trigger within the recursive browser environment.
  • the ZBrowser is enabled to recursively display one or more zPages within the browser window whether containing content or blank.
  • a user may interact or create within a ZPage or recursive webpage or may open one or more ZCubes within ZPage(s) or recursive webpages and retrieve or create content therein.
  • the Action Bar is effective to trigger an action applied to a netvariable, as discussed herein.
  • a web address or other web content associated with the address, etc. can be given a name and a value pair to create the netvariable.
  • a user may increment or decrement these values.
  • a user may attach a passcode/password while creating the netvariable.
  • a passcode may be required to retrieve the value from the server.
  • Netvariables may be created, viewed, updated, added, or removed from a server.
  • netvariables may be stored inside netvariables and may be retrieved and utilized, including as shared content, as desired by one or more users.
  • Netvariables may be cached in server memory for speed and are not persisted in hard media.
  • An example of cached netvariables is the messages communicated among collaborators.
  • user-friendly netvariable names may replace the standard URLs, as they are used today.
  • a user may build a form and set the action to /NetVariable.
  • post can be used so that parameters are not limited to the URL length.
  • the netvariables may be called with parameters directly. Only "ACTION" is a required parameter.
  • a parameter may be any key/value pair and a user may include as many netvariables pairs as wanted. Furthermore, a value of a netvariable may be updated automatically from another source.
  • NetVariable supports the action modes SET and CACHE.
  • SET the variables are saved to disk as key/value pairs.
  • the actions SET, GET, INCREMENT, and DECREMENT are acceptable in the SET mode.
  • CACHE caches the key/value pairs in the memory of the web server with the last updated timestamp.
  • the actions CACHE, GETCACHE, and PERSIST are acceptable in the CACHE mode.
  • the user may access NetVariable by the NetID and the key.
  • NetVariable has the list of reserved words used in user requests, for example, but not limited to, Get, Set, Increment and Decrement.
  • NetHelper is a helper class containing methods for read/write NetVariables.
  • CacheVariable has the data structure for a single in-memory cached NetVariable containing name, value and timestamp.
  • CacheVariableList is a data structure implemented using LinkedList for caching CacheVariables. Elements are sorted by timestamp in the CacheVariable objects.
  • NetVariable is the main servlet class to handle user requests. Init initializes the servlet and reads the properties file, either cached or set. Destroy destroys the servlet after persisting the cache variables which have the the persist flag set to true. DoGet posts, for example, a request or a response. DoPost creates the object action of the class ActionUtil. Also, for all key value pairs, DoPost performs the correct action based on the parameters. In addition, in DoPost, details of the actions are given in the class ActionHandler.
  • the ActionHandler is an inner class inside NetVariable that processes user requests. ACTION will get/set, increment/decrement, encrypt/decrypt or lock/unlock variables. AFTERTIME with get the newly cached variables after the given timestamp. LASTX [what is its function?]. NETID gets and/or specifies the ID or usercode of a NetVariable. Data will be saved/retrieved to/from the shared file if NETID is not specified. NETPASSWORD gets the password of a NetVariable and specifies the NetPassword, if provided. ADD PARAMETER adds the parameter's key/value pair. Using GET retrieves all the netvariables associated with the NETID. If no NetID is given, shared netvariables will be retrieved. SET will set a net variable and the updated value will be saved to the file associated with the NETID. If no NetID is given, shared netvariables will be updated
  • the standard Internet http protocol and IP address are omitted. It would be well- known to one of ordinary skill in the art to include the http and IP address protocols with proper path indicators and to name netvariable files as desired.
  • Reference code, including pseudo code, for NetVariables is provided.
  • the code public class NetVariable extends HttpServlet for the NetVariable class.
  • the code public void init() throws a ServletException to initialize the servlet and public void destroy () destroys the servlet.
  • the code public void doPost() calls an Action Class, i.e., ACTION, AFTERTIME, LASTX, NETID, and NETPASSWORD with appropriate parameters as provided herein.
  • a user may put a webpage under a variable name.
  • "SomeOne ' sWebpage” wi l l map to the appropri ate U RL, e . g . , website.com/ getvariable?name SomeOne's Webpage, and retrieve the content of the webpage. This precludes the user from having to enter some-one.com/webpage.htm etc.
  • This information is stored in the server in an html file. Access may be restricted with a passcode. For example, a netvariable defined to store the number of visitors to a website can be retrieved by anyone with authorized access for monitoring and updating purposes.
  • netvariables may be saved on a server, they may be used to create shared programs accessible by many users. For example, a list of all counties in the United States may be stored by the U.S. Government in a netvariable such as USGov.ListOfCounties which gives an html list of all the county names, etc. Any user simply references the netvariable name, instead of going to a search engine, searching, pulling the list of websites, and surfing the various websites to locate the information.
  • Other non-limiting shared programs may store maps, currency exchange rates, and stock information can be called or plugged-in easily when stored in netvariables.
  • the present invention also provides implementations of Netvariables, such as, but not limited to NetClipboard or a NetMemory and Collaborative ZCubes or Collaborative ZSpaces.
  • Netvariables such as, but not limited to NetClipboard or a NetMemory and Collaborative ZCubes or Collaborative ZSpaces.
  • a window called the NetClipboard is utilized by users to store/retrieve/delete information. Text, URL links, images, or a combination of these or a ZCube containing the same can be dragged/dropped into a page which is defined as a NetClipboard.
  • a unique identifier may be created for this NetClipboard.
  • the dragging/dropping action triggers the creation of a new variable inside the NetClipboard, which may be a collection for the specific user instance.
  • the NetClipboard can function as an independent module that is used by any website to remember information clipped from websites. The information so captured is stored on a hard disk or in the memory of the Netvariables server.
  • ZCubes can be marked as Collaborative ZCubes or Collaborative ZSpaces.
  • any change to the contents of the ZCube is stored into a NetVariable which is then queried using a QJax call by other clients to synchronize.
  • ZPaint can also collaborate using the same technique by storing changes on the Paint/WhiteBoard/Blackboard, including changes to hand drawn or handwritten content, into a Netvariable that is then synchronized with other clients. This may be used to create Live Blog Mechanisms, Shared Whiteboard, ZChat, NetDiscussion Rooms, etc. over a thin recursive browser.
  • ZCubes and ZPaint are as defined herein and are futher exemplified in U.S. Serial No. 1 1/521 ,160 entitled System for Controlling Objects in a Recursive Browser System to Pally, filed on September 14, 2006, that is incorporated herein in its entirety.
  • a NetPage is created with a UNID in which to type the messages to each other.
  • Each person can put in and/or view the content of the NetPage simultaneously, enabling exchange of information.
  • a NetPage may be created for a discussion topic and anyone who wants to participate in the discussion can open this NetPage and participate as described for the 'Chat' implementation.
  • Discussion topics may be categorized, including subtopics, in a conventional manner.
  • a NetDiscussion uses a conceptual channel which may contain any information, such as, but not limited to, chat, a movie, pictures, text, etc., which is viewable by all participants in the channel.
  • two group participants wish to engage in private chat, they can create a NetPage with a UNID unique to their names, as discussed for the "Chat" implementation, separate from the group NetPage.
  • a private chat can be implemented within the group NetPage.
  • the invention provides a number of advantages and uses.
  • Figure IA is a flowchart illustrating the addition of content to a NetClipboard.
  • a netvariable is declared at step 110.
  • a check is made to determine if the declared netvariable exists at step 120. If No, a unique identifier (UNID) is created at step 130. If yes, the content of the declared netvariable is displayed at step 135.
  • the content for either step 130 or 135 becomes a new netvariable and is added to the NetClipboard 150.
  • Figure I B is a flowchart illustrating the retrieval of content from a NetClipboard.
  • a request is made to retrieve the netvariable at step 160 from the NetClipboard 150.
  • it must be determined whether the netvariable is available. If No, the unavailablity is displayed as a message at step 180 and the process stops at step 190. If Yes, an option is chosen at step 170.
  • Options, which appear as tabs in the NetClipboard may include, although are not limited to, dragging/dropping the netvariable into the browser window at step 172, copying the content of the netvariable at step 174 or deleting the netvariable at step 176.
  • FIG. 2 is a flowchart of the steps to create and/or participate in an Internet Chat between two users via netvariables.
  • both users participate by accepting the names each other uses at step 210.
  • a check must be made to determine if a NetPage 230 exists for those names. If No, then step 250 creates a Net page via netvariables as discussed herein which is succeeded by step 260 whereupon messages posted on the NetPage 230 during the Chat session are accepted, stored and displayed. If Yes, the user(s) proceed directly to step 260.
  • a decision is made whether the Chat seesion should stop. If Yes, the Chat session ends at step 280. If No, the two users continue to participate as described in step 260.
  • Figure 3 is a flowchart of the steps to create and/or participate in a NetDiscussion Room via netvariables. Similarly to the process in Fig. 2 and starting at step 300 one or more users participate by accepting the discussion channel at step 310. First, a check must be made at step 320 to determine if the NetDiscussion Channel 330 exists. If No, then step 350 creates a NetDiscussion Channel 330 via netvariables as discussed herein which is succeeded by step 360 whereupon messages posted over the NetDiscussion Channel 330 in the NetDiscussion Room are accepted, stored and displayed. If Yes, the user(s) proceed directly to step 360. At step 370 a decision is made whether a user wishes to stop participating in the discussion.
  • step 380 If Yes, the group discussion stops for that user at step 380. If No, the user continues to participate as described in step 360.
  • the present invention is well adapted to carry out the objects and obtain the ends and advantages inherent herein.
  • the present examples, along with the methods, procedures, systems, and/or applications described herein are presently representative of preferred embodiments, are exemplary and are not intended as limitations on the scope of the invention. Changes therein and other uses will occur to those skilled in the art which are encompassed within the spirit of the invention as defined by the scope of the claims.
  • Tables 1, 2, 3, and 4 provide the source code for the recursive browser system, the zCubes or Zbox, Handwriting, and Netvariables, respectively. Portions of the source code for zCubes and handwriting are identical and not repeated in each Table.
  • zCubes includes the code for the recursive browser system and handwriting includes the code for the recursive browser system and for zCubes.
  • the Tables contain an indicator where these particular source codes should be inserted.
  • case 1 return(document.all("zCubesPanelDiv”).outerHTML); case 2: return(document.all("SearchBoxSpace”).outerHTML); case 3: return(document.all("zCubesOtherPanelDiv”).outerHTML); case 4: return(document.all("DanySpace”).outerHTML); case 5: return(document.all("banners”).outerHTML); ⁇ ⁇
  • AddContentCodeAndExpand(' ⁇ % ThisServer%>/../Gallery/mypopup.htm');blur(); ">Gallery ⁇ /span>
  • SomeLink GoBrowseAndSearchLine(SomeText, SomeLookupArray[i][0], SomeLookupArrayfi]fll, SomeLookupArray[ ⁇ ]r2
  • , SomeLookupArrayri]f3]); if (SomeLink ! "")
  • SearchBoxFrame. location SomeLocation; RaiseObject(SearchBoxSpace);
  • Table 2 zCubes Insert Recursive Browser Code /* HOMELOG_AE.JS •/ var lastX; var lastY; var AdjustX; var AdjustY; function onmousedownHandlerMoverO
  • SomeOriginalSourceElement window.event.srcElement; //alert(SomeOriginalSourceElement.outerHTML);
  • var LeftChange (document.body.scrollLeft+window. event.x-ox+ AdjustX) - SomeObjectToMove.style.pixelLeft;
  • var TopChange (document.body.scrollTop+window. event.y-oy+ AdjustY) - SomeObjectToMove.style.pixelTop;
  • sourceElementControl sourceElementControl. parentElement; ⁇
  • BoxSteps BoxSteps + 1 ;
  • varNewContent window.clipboardData.getData(Text')+ document.all (SomeSpaceContent). innerHTML; return( window. clipboardData.setData('Text',NewContent));
  • NewY NewY + 25; ⁇
  • .DrawControlButton. value "Click to stop”;
  • MapSelectionlmagelndexToElementCO MapSelectionlmagelndexToElementCO
  • document.formsfOJ.DrawControlButton. value "Click to draw”
  • ⁇ ⁇ function SetDefaultSelectionlmageSelectedCThisShapelmage
  • ThisShapelmage.className "SelectionlmageSelected”; ⁇ function BrowseSelectionlmages(ThisShapelmage)
  • DrawTarget.style.zIndex 101 ;//This will be dynamically generated and on top of the current max layers
  • DrawTarget.style.background "peachpuff”
  • DrawTarget.style.position “absolute”
  • DrawTarget.style.left “Opx”
  • DrawTarget.style.width document.body.offsetWidth
  • DrawTarget.style.height document.body.offsetHeight
  • DrawTarget.insertAdjacentHTMLC'BeforeEnd VMLCode With Wrapper
  • DrawTarget.onmousemove Generate RegularShape
  • DrawTarget.insertAdjacentHTMLC'BeforeEnd VMLCode With Wrapper
  • DrawTarget.onmousemove GenerateRegularShape
  • DrawTarget.onmouseup EndDraw; break; case "oval”: NumberOfVMLSahpes++;
  • DrawTarget.onmousemove GenerateRegularShape;
  • DrawTarget.onmousemove GeneratePolyLineWithoutNewPoint
  • DrawTarget.onmousedown GeneratePolyLineWithNewPoint
  • document.body.ondblclick EndDraw
  • DrawTarget.onmousemove GenerateRegularShape;
  • DrawTarget.onmouseup EndDraw; break; default: // Draw freeline by default
  • DrawTarget.onmousemove GenerateFreeShape
  • DrawTarget.onmouseup EndDraw; break
  • VMLCode VMLCode.replace('e"> ⁇ /v:shape>',event.clientX+','event.clientY+'e”> ⁇ /v:shape>');
  • VMLCode VMLCode.replace('e"> ⁇ x + ',' + y + ' e">');
  • VMLShapeElement.outerHTML VMLCode
  • VMLShape.outerHTML VMLShape.outerHTML.replace('e"x/v:shape>', event. clientX +','+event.clientY +'e"> ⁇ /v:shape>');
  • VMLShapeElement.style.left x + "px"; ⁇
  • VMLShapeElement.style.width width + "px”
  • VMLShapeElement.style.height height + "px”
  • ShapeName parent.docurnent.forrnsfOl.ShapeSelection.optionsLparent.document. formsfO].ShapeSelection.selectedIndex].text;
  • ShapeName "freeline”; // default shape
  • var x event.clientX - DrawTarget.style.pixelLeft
  • var y event.clientY - DrawTarget.style.pixelTop
  • varVMLShapeElement document.getElementById("VMLShape"+NumberOfVML Shapes)
  • var VMLCode VMLShapeElement.outerHTML; if (AddPointFlag) // Add a point to the last
  • VMLCode VMLCode.replace('e"> ⁇ x + ',' + y + ' e">');
  • VMLCodeSplitArray VMLCode.split('path');
  • NewVMLCode VMLCodeSplitArray[0];
  • NewVMLCode + 'path'
  • NewVMLCode + CoordinatesArray
  • NewVMLCode + x + ',' + y + ' e"x/v:shape>'; // If everything is expected
  • VMLCode NewVMLCode
  • VMLShapeElement.outerHTML VMLCode
  • DrawTarget.className "garni”; AttachEvents(DrawTarget);
  • ShapeName parent.document.formslOl.ShapeSelection.optionsrparent.document. forms[0].ShapeSelection.selectedIndexl.text;
  • DebugDiv.innerText ShapeName; ⁇ catch (e)//when the parent window or draw shape selection area does not exist or does not behave properly
  • ShapeName "freeline”; // default shape
  • DrawTarget.onmousedown onmousedownSelectorHandler; // Direct event to the right event handler onmousedownSelectorHandler() ;
  • ThisVMLShapeWapper.onmousemove null
  • ThisVMLShapeWapper.onmouseup null
  • ConcurrentHashMap tempMap NetHelper.readNetVariablesFromFile(fileName); persistantNetVariables.put(this. NetID, tempMap); ⁇ if (cachedNetVariables Not Contains NetID)) // Read the persisted Cache to memory
  • CacheVariableList tempList NetHelper. ReadCacheVariablesFromFile (cacheFileName); cachedNetVariables.put(NetID, tempList);
  • Lock NetVariable //make it read only unless the unlock key is provided
  • ConcurrentHashMap tempMap (ConcurrentHashMap) persistantNetVariables.get(Net ⁇ D); result.append(NetHelper.netVariableToString(tempMap, true));
  • ConcurrentHashMap tempMap (ConcurrentHashMap) persistantNetVariables.get(Net ⁇ D);
  • Enumeration keys Params.keys(); // For all the elements of the keys
  • ⁇ tempList (CacheVariableList) cachedNetVariables. get(Net ⁇ D);
  • CacheVariable cache Var new CacheVariable(new GregorianCalendar(), key.toStringO, Params.get(key).toStringO); tempList.addVariable(cacheVar); ⁇ ⁇ if (cachedNetVariables contains (NetID)) ⁇
  • CacheVariableList tempList (CacheVariableList) cachedNetVariables.get(Net ⁇ D); ⁇

Abstract

Provided herein is a recursive web browser system including a recursive web browser, a network connection, a processor, and a computer memory storing one or more netvariables and executable instructions to manipulate the netvariables or content therein. Also provided is a method for retrieving web content using netvariables in the recursive web browser system. Further provided is a computer program product, including a memory, on which is stored a plurality of netvariables and the methods for retrieving and using web content.

Description

NETVARIABLES IN A RECURSIVE BROWSER SYSTEM
BACKGROUND OF THE INVENTION
Field of the Invention The present invention relates generally to the fields of computer technology and web browser systems. More specifically, the present invention provides a system and method to integrate media and to manipulate content within a recursive browser environment.
Description of the Related Art The Internet is arguably the most important innovation of the computer generation.
To browse or surf the World Wide Web (the Web) is the fastest and most popular method of obtaining information today. However, current web browsers are primarily read only with little interactive capability. The Internet is to "go to and visit" and not part of the experience. A user's experience on the Internet is a temporal series of URLs visited. Furthermore, group collaboration on the Web requires user authentication and is generally site specific.
In addition most users are interested only in snippets of a web site they visit. However, a user must open a word processing, drawing or similar application or access another website to utilize or build on these snippets, if desired, or, for example, to create a document or image de novo. Browsers lack the ability to integrate different types of media according to user preferences. Selective access is missing. A live web is not close to being a reality.
Creating a new browser to address these problems is not an easy solution. It is estimated that a new browser release can cost from $10 million to $100 million. In addition the development and release processes are extremely time consuming. As such, one solution is to use the browser itself to expand browser functionalities. Thus, there is a significant need in the art for improvements in the area of user- driven experiences. Specifically, the present invention is deficient in systems and methods to display, manipulate and/or create content in a recursive browser environment. The present invention fulfills this long-standing need and desire in the art. SUMMARY OF THE INVENTION
The present invention is directed to a recursive web browser system. The recursive browser system comprises a computer having a processor and a recursive web browser configured to recursively display in a browser window thereof one or more recursive webpages therein and a network connection to one or more other computers comprising a network. Also, the recursive web browser system comprises a computer memory coupled to the processor storing at least one netvariable associated with a complete Uniform Resource Locator (URL) address and includes storing instructions adapted to be executed by the processor to manipulate the netvariable(s) or content therein and a means for retrieving or storing the netvariables onto the computer or the other computer(s) over the network. The present invention is directed to related recursive web browser systems further including, independently, executable instructions stored in the computer memory to create one or more netvariables and means for launching one or more user-requested actions executable on the netvariable(s). The present invention also is directed to a recursive web browser. The recursive web browser comprises a recursive browser window configured to recursively display one or more recursive webpages, means for accessing a computer memory coupled to a processor and storing at least one netvariable as described herein and instructions adapted to be executed by the processor to manipulate the netvariable(s) or content therein, and means for launching one or more user- requested actions executable on the netvariable(s). The present invention is directed to a related recursive web browser further comprising a network connection to one or more computers comprising a network and means for retrieving the netvariables from or storing the netvariables onto the one or more computers. The present invention is directed to another related recursive web browser in which the computer memory further stores executable instructions to create one or more netvariables.
The present invention is directed further to a method for retrieving webpage content. The method comprises providing the recursive web browser system described herein and selecting one or more netvariables each corresponding to a complete Uniform Resource Locator (URL) address from a computer memory storing the same. The selected netvariable(s) are mapped to the corresponding complete URLs and the webpage content associated with the URL(s) is retrieved and displayed in a recursive browser page or window. The present invention is directed to a related method further comprising the independent steps of creating one or more netvariables and, optionally, of storing the same.
The present invention is directed to another related method further comprising implementing the netvariable as a collaborative page or window shared by two or more computers over the network and, optionally, changing content within the collaborative page or window thereby creating another netvariable containing the same therewithin and synchronizing the change to the content with other computers having access thereto. The present invention is directed to yet another related method further comprising applying an action parameter to the netvariable.
The present invention is directed further still to computer program product having a memory and a plurality of netvariables being stored in the memory. The computer program product memory further storing a method of retrieving webpage content. The method comprises mapping a selected netvariable to a corresponding complete URL and retrieving web page content associated with the URL(s) and displaying the retrieved content in a recursive browser page or window. The present invention is directed to related computer program products storing methods further comprising, independently, the steps described herein.
Other and further aspects, features and advantages of the present invention will be apparent from the following description of the presently preferred embodiments of the invention. These embodiments are given for the purpose of disclosure.
BRIEF DESCRIPTION OF THE DRAWINGS
So that the matter in which the above-recited features, advantages and objects of the invention, as well as others which will become clear, are attained and can be understood in detail, more particular descriptions of the invention briefly summarized above may be had by reference to certain embodiments thereof which are illustrated in the appended drawings. These drawings form a part of the specification. It is to be noted, however, that the appended drawings illustrate preferred embodiments of the invention and therefore are not to be considered limiting in their scope.
Figures 1A-1B are flowcharts of the steps to add content to the Net Clipboard (Figure IA) and to retrieve content from the Net Clipboard (Figure IB) utilizing netvariables in a recursive browser environment.
Figure 2 is a flowchart of the steps to Chat utilizing netvariables in a recursive browser environment.
Figure 3 is a flowchart of the steps to participate in a NetDiscussion Room utilizing netvariables in a recursive browser environment.
DETAILED DESCRIPTION OF THE INVENTION
In one embodiment of the present invention there is provided a recursive web browser system, comprising a computer having a processor and a recursive web browser configured to recursively display in a browser window thereof one or more recursive webpages therein; a network connection to one or more other computers comprising a network; a computer memory coupled to the processor storing at least one netvariable associated with a complete Uniform Resource Locator (URL) address, including storing instructions adapted to be executed by the processor to manipulate the netvariable(s) or content therein; and means for retrieving or storing the netvariables onto the computer or the other computer(s) over the network. Further to this embodiment the recursive web browser further comprises means for launching one or more user-requested actions executable on the netvariable(s). A particular example of the means for launching a user-requested action is an action bar within a recursive browser window or an address bar located in a browser platform associated with the recursive web browser which triggers the action bar. Exemplary actions are effective to create a net variable, to get a netvariable, to set a netvariable, to cache a netvariable, or to change a value of a netvariable. Particularly, a change of a value may comprise a value increment, a value decrement or an automatic update of a value from another source.
In all aspects of these embodiments the computer memory of the recursive web browser further may include executable instructions to create one or more netvariables. Also the netvariable may comprise an assigned name and value pair. Optionally, the netvariable further may comprise a user passcode. In addition the netvariables or one or more changes thereto may be stored in a memory cache or on a hard disk. Furthermore, the netvariable may contain content comprising text, URL links, images, or a combination thereof or one or more ZCubes comprising the same. In a particular aspect the netvariable may be implemented as a collaborative page or window shared by two or more computers over the network. Optionally, the collaborative page may be assigned a unique identifier to restrict user(s) access thereto. Also, a drag/drop action or creation of content within the page or window may create another netvariable therewithin containing the dropped or created content. Further to these actions a change to the content within a collaborative page or window may be synchronized with other computers having access thereto.
Examples of collaboration within the page may be chatting, messaging, a group discussion or other sharing of content contained within the collaborative web page. In these examples the content is stored only in cache memory. An example of collaboration within a window is a clipboard. In another embodiment of the present invention there is provided a recursive web browser, comprising a recursive browser window configured to recursively display one or more recursive webpages; means for accessing a computer memory coupled to a processor and storing at least one netvariable described supra and instructions adapted to be executed by the processor to manipulate the netvariable(s) or content therein; and means for launching one or more user- requested actions executable on the netvariable(s). Further to this embodiment, the recursive web browser may comprise a network connection to one or more computers comprising a network and means for retrieving the netvariables from or storing the netvariables onto the one or more computers. Also, in both embodiments the computer memory further may store executable instructions to create one or more netvariables. In addition the means for launching one or more user-requested actions is an action bar within a recursive browser window or an address bar located in a browser platform associated with the recursive web browser which triggers the action bar. The actions are as described supra.
In yet another embodiment of the present invention there is provided a method for retrieving webpage content, comprising providing the recursive web browser system described supra; selecting one or more netvariables each corresponding to a complete Uniform Resource Locator (URL) address from a computer memory storing the same; mapping the selected netvariable(s) to the corresponding complete URLs; and retrieving webpage content associated with the URL(s) and displaying the retrieved content in a recursive browser page or window.
Further to this embodiment the method may comprise creating one or more netvariables. Further still, the method optionally may comprise storing the created netvariable(s) in the computer memory. In one example the computer memory may comprise one or more computers networked within the recursive browser system.
In another further embodiment the method may comprise implementing the netvariable as a collaborative page or window shared by two or more computers over the network. The method, optionally, further may comprise assigning a unique identifier to the collaborative page to restrict user(s) access thereto. Further still, the method may comprise changing content within the collaborative page or window thereby creating another netvariable containing the same therewithin. The method, optionally, further may comprise synchronizing the change to the content with other computers having access thereto. In yet another further embodiment the method may comprise applying an action parameter to the netvariable. Exemplary action parameters are effective to create a net variable, to get a netvariable, to set a netvariable, to cache a netvariable, or to change a value of a netvariable. As described supra, a change in value may comprise incrementing a value, decrementing a value, or updating automatically a value from another source. In yet another embodiment of the present invention there is provided a computer program product having a memory, a plurality of netvariables being stored in the memory, the memory further storing a method of retrieving webpage content comprising the steps of mapping a selected netvariable to a corresponding complete URL; and retrieving web page content associated with the URL(s) and displaying the retrieved content in a recursive browser page or window. In further embodiments the stored method may comprise further method steps as described supra. Also, the netvariables and action parameters applied thereto are as described supra. Furthermore, the implementation of netvariables as collabortive pages or windows and the specific implementations thereof are as described supra.
As used herein, the term "a" or "an" may mean one or more. As used herein in the claim(s), when used in conjunction with the word "comprising", the words "a" or "an" may mean one or more than one. As used herein "another" or "other" may mean at least a second or more of the same or different claim element of components thereof.
As used herein, the term(s) "recursive browser" or "zBrowser" refers to a browser that uses existing browsers to enhance their functionality and to provide 3 dimensional multipart full browser functionality to improve browser experience. As used herein, the term "Action Bar" refers to a targeting bar, which may be the conventional URL bar, that can also be triggered from html or :href calls invoking, e.g., one or more web actions, web sites, web services, or action triggers.
As used herein, the term(s) "ZCube" refers to a collection of one or more ZBoxes contained within a ZPage or recursive webpage where a "ZBox" is a part of a ZPage that contains an html object(s), for example, but not limited to, images, scripts, Shockwave, and a recursive browser. ZBoxes are copyable and individually and selectively formattable with drag-drop of style text. "ZPage" or "recursive webpage" is a container of one or more ZCubes/zBoxes that encompasses logic to display, edit, move, browse, rotate, hide, animate, and run scripts within the recursive browser. Unless specifically indicated otherwise the terms "ZBox" and "ZCube" are interchangeable. A ZCube may be made from templates that are stored in a gallery. The ZCube may be moved/rotated over a user-defined path and then may be animated. A ZCube can be made "read only". A ZCube may have push pins added to it or comprise other pointers. A ZCube may be in multiple layers.
As used herein, the term(s) "ZCube world" refers to one or more sets of ZCube collections displayed under one context to the user. A ZCube world may contain ZPages.
As used herein, the term "ZPaint" refers to an extension of Zebra, an application which enables manipulation or modification of the contents of a ZCube, to color or paint graphical objects on a webpage.
As used herein, the term "netvariable" refers to a Java servlet that provides data persistency for user defined variables on a web server. NetVariable supports two action modes, SET and CACHE, as described herein.
Provided herein are systems, methods, and computer program products by which, in an Internet environment, variables, i.e., netvariables, are defined, stored in either memory or physical storage and recalled as required in the Internet environment, including a recursive browser environment. Netvariables, inter alia, may be created, the content within a netvariable may be created, added, deleted, otherwise changed, queried, or shared. Effectively, netvariables can function as the Internet's global memory and can be used to remember anything.
The recursive web browser system comprises at least a computer memory methods and applications, etc. stored therein which are effective to control, manipulate or modify content within a networkable recursive browser environment. The recursive web browser or ZBrowser comprises an Action Bar within the recursive browser window or page or recursive webpage as an entry point for any retrievable URL or executable action trigger within the recursive browser environment. The ZBrowser is enabled to recursively display one or more zPages within the browser window whether containing content or blank. Furthermore, using the Action Bar, a user may interact or create within a ZPage or recursive webpage or may open one or more ZCubes within ZPage(s) or recursive webpages and retrieve or create content therein. Thus, the Action Bar is effective to trigger an action applied to a netvariable, as discussed herein.
Particularly, within the recursive browser environment a web address or other web content associated with the address, etc. can be given a name and a value pair to create the netvariable. Upon request, a user may increment or decrement these values. In addition, optionally, a user may attach a passcode/password while creating the netvariable. A passcode may be required to retrieve the value from the server. Netvariables may be created, viewed, updated, added, or removed from a server.
Also any content, including html files, images, text, etc. may be stored inside netvariables and may be retrieved and utilized, including as shared content, as desired by one or more users. Netvariables may be cached in server memory for speed and are not persisted in hard media. An example of cached netvariables is the messages communicated among collaborators. Thus, it is contemplated that user-friendly netvariable names may replace the standard URLs, as they are used today.
To use netvariables, a user may build a form and set the action to /NetVariable. "post" can be used so that parameters are not limited to the URL length. Alternatively, the netvariables may be called with parameters directly. Only "ACTION" is a required parameter. A parameter may be any key/value pair and a user may include as many netvariables pairs as wanted. Furthermore, a value of a netvariable may be updated automatically from another source.
More particularly, NetVariable supports the action modes SET and CACHE. With SET, the variables are saved to disk as key/value pairs. The actions SET, GET, INCREMENT, and DECREMENT are acceptable in the SET mode. CACHE caches the key/value pairs in the memory of the web server with the last updated timestamp. The actions CACHE, GETCACHE, and PERSIST are acceptable in the CACHE mode. In both action modes, the user may access NetVariable by the NetID and the key. The NetVariable has the format http://myserver.domain.com/NetVariable?NETID=user_net_id&ACTION=action_code& parameter=value&key 1 =value 1 &key2=value2... &key_n=value_n. Six classes are defined in NetVariable. NetConstant has the list of reserved words used in user requests, for example, but not limited to, Get, Set, Increment and Decrement. NetHelper is a helper class containing methods for read/write NetVariables. CacheVariable has the data structure for a single in-memory cached NetVariable containing name, value and timestamp. CacheVariableList is a data structure implemented using LinkedList for caching CacheVariables. Elements are sorted by timestamp in the CacheVariable objects.
Also, NetVariable is the main servlet class to handle user requests. Init initializes the servlet and reads the properties file, either cached or set. Destroy destroys the servlet after persisting the cache variables which have the the persist flag set to true. DoGet posts, for example, a request or a response. DoPost creates the object action of the class ActionUtil. Also, for all key value pairs, DoPost performs the correct action based on the parameters. In addition, in DoPost, details of the actions are given in the class ActionHandler.
The ActionHandler is an inner class inside NetVariable that processes user requests. ACTION will get/set, increment/decrement, encrypt/decrypt or lock/unlock variables. AFTERTIME with get the newly cached variables after the given timestamp. LASTX [what is its function?]. NETID gets and/or specifies the ID or usercode of a NetVariable. Data will be saved/retrieved to/from the shared file if NETID is not specified. NETPASSWORD gets the password of a NetVariable and specifies the NetPassword, if provided. ADD PARAMETER adds the parameter's key/value pair. Using GET retrieves all the netvariables associated with the NETID. If no NetID is given, shared netvariables will be retrieved. SET will set a net variable and the updated value will be saved to the file associated with the NETID. If no NetID is given, shared netvariables will be updated
Using INCREMENT will increment the variable specified by the parameters, i.e., key=incrementBy. For example, if "keyl=2&action=INCREMENT" is submitted with the request and keyl's value is 3 on the server, the updated value keyl=5 will be saved. Using DECREMENT will decrement the variable specified by the parameters, i.e., key=decrementBy. For example, if "keyl=2&action=DECREMENT" is submitted with the request and keyl's value is 3 on the server, the updated value key 1=1 will be saved. In the following non-limiting examples exemplifying the use of NetVariables and parameter values the standard Internet http protocol and IP address are omitted. It would be well- known to one of ordinary skill in the art to include the http and IP address protocols with proper path indicators and to name netvariable files as desired.
To update or set someone 's netvariables, /NetVariable?test= my+first+test+string&first=l&second=2&NETID=someone&action=set may be used. To update the shared cache, which is not saved to the file, e. g. , for chat, /NetVariable?action=cache&chat=hello may be used. To get all the net variables in someone's file, /NetVariable?NETID=someone&action=get may be used. To get the value of "second", NetVariable?second=&NETID=someone&action=get may be used. To get all the net variables in the shared file, /NetVariable?action=get. Also, to decrement a counter, /Netvariable? second= l &NETID= someone&action=decrement may be used. If the counter is not found on the server, it is set to 0. To increment a counter, /Net Variable?second=3&NETID=someone&action=increment may be used.
Reference code, including pseudo code, for NetVariables is provided. The code public class NetVariable extends HttpServlet for the NetVariable class. The code public void init() throws a ServletException to initialize the servlet and public void destroy () destroys the servlet. The code public void doPost() calls an Action Class, i.e., ACTION, AFTERTIME, LASTX, NETID, and NETPASSWORD with appropriate parameters as provided herein.
For the purposes of this and other examples "Some One" or "someone" generically represents any user's, group's or person's name or other identifier and "website" generically represents a named website associated with the netvariable. Also, as previously described the standard Internet http protocol and www address is omitted from the URL.
A user may put a webpage under a variable name. In a nonlimiting example "SomeOne ' sWebpage" wi l l map to the appropri ate U RL, e . g . , website.com/ getvariable?name=SomeOne's Webpage, and retrieve the content of the webpage. This precludes the user from having to enter some-one.com/webpage.htm etc.
In another nonlimiting example, a netvariable may be assigned to some piece of information, for example, someone's age. That is, SomeOne.Age=33 is a netvariable whose value can be changed or updated to 34 next year. Thus, anyone interested in SomeOne's age will refer to this variable and use it. This information is stored in the server in an html file. Access may be restricted with a passcode. For example, a netvariable defined to store the number of visitors to a website can be retrieved by anyone with authorized access for monitoring and updating purposes.
As netvariables may be saved on a server, they may be used to create shared programs accessible by many users. For example, a list of all counties in the United States may be stored by the U.S. Government in a netvariable such as USGov.ListOfCounties which gives an html list of all the county names, etc. Any user simply references the netvariable name, instead of going to a search engine, searching, pulling the list of websites, and surfing the various websites to locate the information. Other non-limiting shared programs may store maps, currency exchange rates, and stock information can be called or plugged-in easily when stored in netvariables.
The present invention also provides implementations of Netvariables, such as, but not limited to NetClipboard or a NetMemory and Collaborative ZCubes or Collaborative ZSpaces. For example, a window called the NetClipboard is utilized by users to store/retrieve/delete information. Text, URL links, images, or a combination of these or a ZCube containing the same can be dragged/dropped into a page which is defined as a NetClipboard. A unique identifier (UNID) may be created for this NetClipboard. The dragging/dropping action triggers the creation of a new variable inside the NetClipboard, which may be a collection for the specific user instance. This can then later be listed, queried, copied back to ZSpace, or deleted. The NetClipboard can function as an independent module that is used by any website to remember information clipped from websites. The information so captured is stored on a hard disk or in the memory of the Netvariables server.
Also, some ZCubes can be marked as Collaborative ZCubes or Collaborative ZSpaces. Within these, any change to the contents of the ZCube is stored into a NetVariable which is then queried using a QJax call by other clients to synchronize. ZPaint can also collaborate using the same technique by storing changes on the Paint/WhiteBoard/Blackboard, including changes to hand drawn or handwritten content, into a Netvariable that is then synchronized with other clients. This may be used to create Live Blog Mechanisms, Shared Whiteboard, ZChat, NetDiscussion Rooms, etc. over a thin recursive browser. ZCubes and ZPaint are as defined herein and are futher exemplified in U.S. Serial No. 1 1/521 ,160 entitled System for Controlling Objects in a Recursive Browser System to Pally, filed on September 14, 2006, that is incorporated herein in its entirety.
For example, if two people want to chat, a NetPage is created with a UNID in which to type the messages to each other. Each person can put in and/or view the content of the NetPage simultaneously, enabling exchange of information.
For example, if person A wants to chat with person B, their names are accepted and a NetPage is created with a UNID using a combination of their names. So if person A starts the chat, the NetPage is created immediately and when person B comes in, s/he can see the contents of the NetPage created by person A. At this point, they can exchange information between them using the same NetPage. These NetPages and messages may be stored in cache memory and those present for more than 15 minutes are deleted.
In a related implementation a NetPage may be created for a discussion topic and anyone who wants to participate in the discussion can open this NetPage and participate as described for the 'Chat' implementation. Discussion topics may be categorized, including subtopics, in a conventional manner. A NetDiscussion uses a conceptual channel which may contain any information, such as, but not limited to, chat, a movie, pictures, text, etc., which is viewable by all participants in the channel. In addition if two group participants wish to engage in private chat, they can create a NetPage with a UNID unique to their names, as discussed for the "Chat" implementation, separate from the group NetPage. Alternatively, it is contemplated that a private chat can be implemented within the group NetPage. As described herein, the invention provides a number of advantages and uses.
Embodiments of the present invention are better described below with reference to the Figures, however, such description or reference is not meant to limit the present invention in any fashion.
The embodiments and variations described in detail herein are to be interpreted by the appended claims and equivalents thereof.
Figure IA is a flowchart illustrating the addition of content to a NetClipboard. Starting at 100 a netvariable is declared at step 110. A check is made to determine if the declared netvariable exists at step 120. If No, a unique identifier (UNID) is created at step 130. If yes, the content of the declared netvariable is displayed at step 135. At step 140, the content for either step 130 or 135 becomes a new netvariable and is added to the NetClipboard 150.
With continued reference to Fig. IA, Figure I B is a flowchart illustrating the retrieval of content from a NetClipboard. Starting at 100, a request is made to retrieve the netvariable at step 160 from the NetClipboard 150. At step 165 it must be determined whether the netvariable is available. If No, the unavailablity is displayed as a message at step 180 and the process stops at step 190. If Yes, an option is chosen at step 170. Options, which appear as tabs in the NetClipboard, may include, although are not limited to, dragging/dropping the netvariable into the browser window at step 172, copying the content of the netvariable at step 174 or deleting the netvariable at step 176.
Figure 2 is a flowchart of the steps to create and/or participate in an Internet Chat between two users via netvariables. Starting at step 200, both users participate by accepting the names each other uses at step 210. Then, at step 220 a check must be made to determine if a NetPage 230 exists for those names. If No, then step 250 creates a Net page via netvariables as discussed herein which is succeeded by step 260 whereupon messages posted on the NetPage 230 during the Chat session are accepted, stored and displayed. If Yes, the user(s) proceed directly to step 260. At step 270 a decision is made whether the Chat seesion should stop. If Yes, the Chat session ends at step 280. If No, the two users continue to participate as described in step 260.
Figure 3 is a flowchart of the steps to create and/or participate in a NetDiscussion Room via netvariables. Similarly to the process in Fig. 2 and starting at step 300 one or more users participate by accepting the discussion channel at step 310. First, a check must be made at step 320 to determine if the NetDiscussion Channel 330 exists. If No, then step 350 creates a NetDiscussion Channel 330 via netvariables as discussed herein which is succeeded by step 360 whereupon messages posted over the NetDiscussion Channel 330 in the NetDiscussion Room are accepted, stored and displayed. If Yes, the user(s) proceed directly to step 360. At step 370 a decision is made whether a user wishes to stop participating in the discussion. If Yes, the group discussion stops for that user at step 380. If No, the user continues to participate as described in step 360. One skilled in the art will appreciate readily that the present invention is well adapted to carry out the objects and obtain the ends and advantages inherent herein. The present examples, along with the methods, procedures, systems, and/or applications described herein are presently representative of preferred embodiments, are exemplary and are not intended as limitations on the scope of the invention. Changes therein and other uses will occur to those skilled in the art which are encompassed within the spirit of the invention as defined by the scope of the claims.
Tables 1, 2, 3, and 4 provide the source code for the recursive browser system, the zCubes or Zbox, Handwriting, and Netvariables, respectively. Portions of the source code for zCubes and handwriting are identical and not repeated in each Table. For example, zCubes includes the code for the recursive browser system and handwriting includes the code for the recursive browser system and for zCubes. The Tables contain an indicator where these particular source codes should be inserted.
Table 1: Recursive Browser /* Recursive Browser Code */ /* zcubes.aspx */
<scri pt 1 anguage= "ja vascri pt " src= " . Vi ncl ude/scri pts/uti 1 j s "></scri pt> <script language="javascript" src="../include/scripts/Lookups.js"></script> <script language="javascript" src="../include/scripts/homelog_ae.js"x/script> <script language="javascript" src="../include/scripts/homelog_ae_ii.js"x/script> <script language="javascript" src="../include/scripts/rss.js"x/script> <LINK href="../include/bocsitelog.css" type= "text/ess" rel="stylesheet"> <bodyonload="DoFirst();"onclick="onClickEventHandler()"onbeforeunload= "CheckAndCloseO;" onkeyup="CatchKey() ; " onscroll = " MovePanel () ; " > <div id="bg" unselectable="on" style="zoom: 1.0;background-color:Gainsboro;position: absolute;left:Opx;top:Opx;height: 100%;width: 100%;" ondragenter= " UponDragEnter() " ondragover="GetEventCancelIed()" ondragleave="UponDragLeave()" ondrop="UponDrop()" ondblclick="GetIncomingData();" > <div id="gets" style="visibility:hidden;display:none;">
<iframe name="getsframe" id="getsframe" src="zcompsmain.aspx"x/iframe></div> </body> </html>
/* zcompsmain.aspx */ <script language="javascript"> function GetMe(Somelndex) { switch (Somelndex)
{ case 1: return(document.all("zCubesPanelDiv").outerHTML); case 2: return(document.all("SearchBoxSpace").outerHTML); case 3: return(document.all("zCubesOtherPanelDiv").outerHTML); case 4: return(document.all("DanySpace").outerHTML); case 5: return(document.all("banners").outerHTML); } }
</script> </head>
<body onload="parent.DoFirstSetup();">
<div id="me">
<div id="DanySpace" unselectable="on" class="gami" style="zoom: l;visibility:visible;display:none;background-color: white; positioniabsolutejleftiSOpxjtopi lOOpxiheight^όOpxiwidth^όOpxjvertical-align: top;padding: 10px;border:0px solid white;cursor:hand;" title="DanySpace" ondblclick="ShowBarSwitch('DanySpaceBar');GetEventCancelled();" onmouseenter="ShowBar('DanySpaceBar', true);" onmouseleave="ShowBar('DanySpaceBar', false);" onclick="if(window.event.ctrlKey!=true){ClearSelectedZBoxes();
AddToSelectedZBoxes('DanySpace') ; } " ondrop="TryToMergeStyle('Dany');GetEventCancelled();" >
<div id="DanySpaceHeader" class="likemenu" ALIGN="center" contenteditable="true" onmousedown="GetEventCancelled();"
STYLE="position:absolute;zoom: 1.0;top:-30px;height:30px; visibility:hidden;display:none;font-weight:bold;width: 100%;background- color:lightsteelblue; font-face: Anal;"
> Dany
</div>
<div id="DanySpaceCover" STYLE="height:250px;width:250px;" style="background-color:ghostwhite;overflow:hidden;cursor:default;">
<div id="DanySpaceContent" ALIGN="left" STYLE="zoom: 1.0;overflow-x:auto;overflow- y:auto;height: 100%;width: 100%;background-color:ghostwhite; font-face: Arial; filteriprogid^XImageTransform.Microsoft.ShadowCcolo^'^OOOOO', Direction= 135, Strength=2);filter:progid:DXImageTransform.Microsoft.Alpha( Opacity=100);" ondblclick="QuickEdit('Dany', true);" onchange="RegisterChange('Dany');" >
</div> </div> <div id="DanySpaceFooter" class="likemenu" ALIGN="left" contenteditable="true" onmousedown="GetEventCancelled();"
STYLE="position:absolute;zoom: 1.0;height:30px;visibility:hidden;display:none;font- weight:bold;width: 100%;background-color:lightsteelblue; font-face: Arial;"
> </div>
<divid="DanySpaceBar" unselectable="on" contenteditable="false" style="position:absolute;visibility:hidden;height:3px;background-color:ghostwhite; top:0px;left:-100px;width: 100px;height: 100%;display:inline;padding:5pt; filteπprogid: DXImageTransform.Microsoft.AIpha(opacity=50);" onmouseenter="Highlight();" onmouseleave="Lowlight();" >
<a name="DanySpaceTab">&nbsp</a>
<span id="DanySpaceStoreLabel" unselectable="on" style="align:right;display:none;visibility:hidden;" xinput id="DanySpaceStore" type="hidden" value=" "/xinput id="DanySpaceEventStore" type="hidden" value= " "/xi nputid=" Dany SpaceServer FiI eS tore" ty pe= " hi dden " val ue= " "/x/span>
<!— span id="DanyCloseLabel" style="align:right;" onclick="DestroySpace('DanySpace');" onmousedown="GetEventCancelled(); ">Close</span~>
<span id="DanySpaceDragLabel" unselectable="on" style="align:right;display:block;" xa href=""ondragstart="CopyAndDragBox ('DanySpaceContent');">Drag</ax/span>
<span id="DanySpaceControls" unselectable="on" style="align:right;display:block;" >
<nobr>
<span style="text-align:right;display: inline;color:black" onclick="GoSmaller(document.all('DanySpace'))" title="Smaller">[-]
</span>
<span style="text-align:right; display:inline;color: black" onclick="GoBigger(document.all('DanySpace'))" title="Bigger">[+l
</span> <span style="text-align:right;display: inline;color: black" onclick="GoBiggest(document.all('DanySpace'))" title="Full">[Λ] </span>
<span style="text-align:right;display: inline;color:black" onclick="GoAway(document.all('DanySpace'))" title="Delete">[xJ </span>
</nobr> </span>
<span style="align:right;display:block;" unselectable="on" onmousedown="GetEventCancelled();"> </span> <span id="DanySpaceLiveLabel" unselectable="on" style="align:right;display:block;" onclick="ServerSaveZNote('DanySpace');" onmousedown="GetEventCancelled();">Live</span>
<span id="DanySpaceAddPaste" unselectable="on" style="align:right;display:block;" onclick="AddPaste('DanySpaceContent');" onmousedown="GetEventCancelled();">AddPaste</span>
<span id="DanySpaceEditLabel" unselectable="on" style="align:right;display:block;" onclick="QuickEdit('Dany', false);" onmousedown= " GetEven tCancel led() ; ">Edi t</span>
<span id="DanySpaceHeaderLabel" unselectable="on" style="align:right;display:block;" onclick="ShowCubeHeader('DanySpace');" onmousedo wn= " GetEventCancel 1 ed() ; ">Header</span>
<span id="DanySpaceHeaderLabel" unselectable="on" style="align:right;display:block;" onclick="ShowCubeFooter('DanySpace');" onmousedown="GetEventCancelled();">Footer</span> <span id="DanySpaceFitLabel" unselectable="on" style="align:right;display:block;" onclick="ZFit('Dany');">Fit</span>
<!— span id="DanySpaceInLay" style="align:right;display:block;" onclick="Inlay('DanySpaceContent');" onmousedown= "GetEventCancel led() ; ">InLay</span--> <span style="align:right;display:block;" unselectable="on" onmousedown="GetEventCancelled();"> </span>
<span id="DanySpaceInLayWithMove" unselectable="on" style="align:right;display:block;" onclick="InlayWithMove('DanySpaceContent');" onmousedown="GetEventCancelled();">InLay</span> <span id="DanySpaceInLayWithMove" unselectable="on" style="align:right;display:block;" onclick="HideBox('Dany');" onmousedown="GetEventCancelled();">Hide</span> <span id="DanySpaceConvertToEvaluate" unselectable="on" style="align:right;display:block;" onclick="ExpandToSource('DanySpaceContent');" onmousedown="GetEventCancel led() ; ">Expand</span>
<span id="DanySpaceDivideImages" unselectable="on" style="align:right;display:block;" onclick="ExpandMedia('DanySpaceContent')" onmousedown="GetEventCancel led() ; ">Media</span>
<span id="DanySpaceHTML" unselectable="on" style="align:right;display:block;" onclick="ShowSource('DanySpaceContent', true);" onmousedown="GetEventCancelled();">HTML</span> <span id="DanySpaceOuterHTML" unselectable="on" style="align:right;display:block;" onclick="ShowSource('DanySpaceContent', false);" onmousedown="GetEventCancelled();">HTMLX</span>
<span id="DanySpaceConvertToSource" unselectable="on" style="align:right;display:block;" onclick="EditHTML('DanySpaceContent');" onmousedown="GetEventCancelled();">HTMLEdit</span>
<span id="DanySpaceApplyProperty" unselectable="on" style="align:right;display:block;" onclick=" CallZBoxEditor('<%=ThisServer%> ','DanySpaceContent');" onmousedown="GetEventCancelled();">EditFont</span>
<span style="align:right;display:block;" unselectable="on" onmousedown="GetEventCancelled();"> </span>
<span id="DanySpaceDouble" unselectable="on" style="align:right;display:block;" onclick="MultiplyContent('DanySpaceContent');" onmousedown="GetEventCancelled();">Double</span>
<!~span id="DanySpaceHide" style="align:right;display:block;" onclick="ShowBar('DanySpaceBar', false);" onmousedown="GetEventCancelled();">HideBar</span~>
<span style="align:right;display:block;" unselectable="on" onmousedown="GetEventCancelled();"> </span>
<span id="DanySpaceGetLink" unselectable="on" style="align:right;display:block;" onclick="GetLinkToClipboard('DanySpaceTab')" onmousedown="GetEventCancelled();">BoxLink</span>
<span id="DanySpaceCalculate" unselectable="on" style="align:right;display:block;" onclick="CalculateBox('DanySpace')" onmousedown= " GetEventCancel led() ;">Run</span> <span style="align:right;display:block;" unselectable="on" onmousedown="GetEventCancelled();"> </span>
<!~span id="DanySpaceRSS" style="align:right;display:block; " onclick="ProcessRSSContent('DanySpaceContent')" onmousedown= "GetEventCancelled();">RSS</span--> <span id="DanySpaceZoomPlus" unselectable="on" style="align:right;display:block;" onclick="ZoomPlus('DanySpaceContent');" onmousedown="GetEventCancelled();">Zoom</span>
<span id="DanySpaceZoomMinus" unselectable="on" style="align:right;display:block;" onclick="ZoomMinus('DanySpaceContent');" onmousedown="GetEventCancelled();">UnZoom</span> <span id="DanySpaceZoomVariable" unselectable="on" style="align:right;display:block;" onclick="ZoomVariable('DanySpaceContent');" onmousedown="GetEventCancelled();">Zoom</span>
<span style="align:right;display:block;" unselectable="on" onmousedown="GetEventCancelled();"> — </span>
<span id="DanySpaceCopy" unselectable="on" style="align:right;display:block;" onclick="CopyBox('DanySpaceContent')" onmousedown="GetEventCancelled();">Copy</span>
<span id="DanySpaceCloseLabeIl " unselectable="on" style="align:right;display:block;" onclick="DestroySpace('DanySpace');" onmousedown="GetEventCancelled();">Delete</span>
</div> </div> <!-- style="position:absolute;visibility:visible;" --> <div class="gami" id="zCubesPanelDiv" style="position:absolute;left:0;top: 10; width: 1000px;z-index: 1 ;padding:5px;border:0px solid white;">
<div class="zCubesPanel" >
<span unselectable= "on " onmousedown="document.al I ('SenderText') .style. width='600px';" onmouseout="document.all('SenderText').style.width='100px';"> <span unselectable="on">
<input type="button" id="GoButton" onclick= "SendToSearchAndShow(document.all('SenderText').value);blur();" value="Go" />
</span>
<LABEL FOR="SenderText" ACCESSKEY=" 1 " unselectable="on" >:</LABEL>
<input id="SenderText" ACCESSKEY="G" type="text" value= "http://www.***.com" onkeydown="DoEnterKey() " onkeyup="DoCalc()" style=" width: lOOpx;"
/> </span>
<span unselectable="on" style="position:absolute;visibility:visible;height: Spxjbackground-color^hostwhitejtop^pxjleft^lOOpxjwidth^OOpxjheighti lOO^&idisplay: inline;padding:5pt;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);" >
<span id="EvalBox" style="position:absolute;background-color: silver;overflow:auto;" title="Use the Power Calculator! Type in a math expression in the box to the left to evaluate it dynamically !">[=]</spanx/nobr>
</span> <br>
<span unselectable="on"> <span class="zCubesButton" onclick="document.all('bg'). style. zoom=document.aIl('bg').style.zoom*2.0;blur();">++</span>
<span class="zCubesButton" onclick="document.all('bg'). style. zoom=document.all('bg').style.zoom/2.0;blur();">— </span>
</span> <span>
<span class="zCubesButton" onclick="history.go(-l);blur(); * GetEventCancelled();">Back</span> </span>
<span>
<span class="zCubesButton" onclick="history.go(l);blur(); ">Forward</span>
</span> <span>
<span class="zCubesButton" onclick="ShowAllBorders(true); blur();">Show</span>
</span> <span> <span class="zCubesButton" onclick="ShowAllBorders(false); blur();">Hide</span>
</span> <span>
<span class="zCubesButton" onclick="TileDivs(SelectedZBoxes, 2);blur();">Tile</span>
</span> <span>
<span class="zCubesButton" onclick="CascadeDivs (SelectedZBoxes);blur();">Cascade</span> </span>
<span>
<span class="zCubesButton" onclick="javascript:
MoveTo(AddContentCodeAndExpand('<%=ThisServer%>/Effects/colors.htm'), 200, 200,550,625);blur();">Colors</span> </span>
<span>
<span class="zCubesButton" onclick="javascript: CallZBoxEditor ('<%=ThisServer%>');blur();">ZBoxEditor</span>
</span> <span> <span class="zCubesButton" onclick="javascript:
MoveTo(AddContentCodeAndExpand('<%=ThisServer%>/Clock/Clock.htm'), 200, 200,550,625);blur();">Clock</span>
</span> <span>
<span class="zCubesButton" onclick="ShowBlog(); blur();">ZBlogs</span>
</span> <span> <span class="zCubesButton" id='ZBlogNameSpace' style=
"display:none;visibility:hidden" xinput id="ZBlogName" type="text" value=""/x/span>
</span> <span>
<span class="zCubesButton" id='ZBlogCreate' onclick= "ServerSaveDoc(l,'Blog');blur();" style='display:none;visibility:hidden'>Create</span>
</span>
<br> <span>
<span class="zCubesButton" unselectable="on" id="_CreateZNote" onclick="CreateNewZBoxWithPaste();GetEventCancelled();b]ur();" />z-Paste</span>
<input type="button" ACCESSKEY="Z" onclick= "_CreateZNote.click();" width="lpx" height="lpx">
<span class="zCubesButton" onclick="DoNew();blur();" />z-Note </span> </span>
<span>
<span class="zCubesButton" onclick="SaveDoc();blur();" />Save< /span>
</span> <span>
<span class="zCubesButton" onclick="ClearAHBoxes();blur();" />Clean</span>
</span> <span> <span class="zCubesButton" onclick= "javascript:
AddContentCodeAndExpand('<%=ThisServer%>/../Gallery/mypopup.htm');blur(); ">Gallery</span>
</span> <span> <span class="zCubesButton" onclick="javascript: AddContentCodeAndExpand('<%=ThisServer%>/tempgallery.htm');blur();">Test</span>
</span> <span>
<!-INPUT TYPE=button VALUE="ServerSave" onclick= "ServerSaveDoc();blur();"-->
<INPUT TYPE=text id="ThisFileName" VALUE=""> <div style="visibility:hidden;display:none;">
<form name="PostTextToServer" action= "http://216.165.209.213/zsave/createfile.cgi" target="SearchBoxFrame" method="POST">
<textarea name="data" rows="20" cols="80"> </textarea>
<input type="submit" value="Save Data"> <input type="reset">
</form> </div> <%
Dim TypeLi b = Server.CreateObject("Scriptlet.TypeLib") Dim GetGuid = TypeLib.Guid
%>
<span class="zCubesButton" onclick= "ServerSaveDoc (0,'<%=GetGuid %>');blur();">Publish</span>
</span> <span>
<span class="zCubesButton" onclick= "MoveTo
(AddContentCodeAndExpand('<%=SaveServer%>/zboxFileuploader/AUImage_Default. aspx?from=<%=ThisServer%>/',true), 200, 200,850,575);blur();">Upload</span>
</span> <span>
<span class="zCubesButton" onclick="ToggleShow ( 'zCubesOtherPanel Di v') ;bl ur(); ">Other</span>
</span>
<span id="ResubmitForm"> <INPUT id="SendContentToServer" TYPE="button" VALUE=
"Live!" onclick="document.all('bgcontent').value=bg.outerHTML; SendTextToServer. submit();blur();"></INPUT>
<div style="visibility:hidden;display:none;"> <FORM name="SendTextToServer" action= "<%=ThisServer%>/zcubes.aspx" method="post">
<INPUT type= "hidden" id="thisfilenametostore" name= "thisfilenametostore"xBR> <INPUT type="hidden" id="bgcontent" name=
"bgcontent"><BR>
<INPUT type="submit" value="Live!"> </FORM> </div> </span>
<span>
<span class="zCubesButton" onclick= "AdvancedPanel. style. visibility='visibIe';AdvancedPanel.style.display='block';blur();">Advanced</span>
<div id=" AdvancedPanel" style="visibility:hidden;display:none;"> <span>
<span class="zCubesButton" onclick= "AdvancedPanel. style. visibility='hidden';AdvancedPanel.style.display='none';blur()">Hide</span>
</span>
<span> <input type="button" ACCESSKEY="N" onclick=
"_NewWindowControl.click();" value=""/>
<span id="_NewWindowControl" class="zCubesButton" onclick="javascript:SendToSearchOut(SenderText.value);blur();">New Browser</span>
</span> <span>
<span id="_ShowBrowser" class="zCubesButton" onclick="javascript:SendToSearchOut(SenderText.value);blur();">Show Browser</span>
<input type="button" ACCESSKEY="S" onclick= "_ShowBrowser.click();" value=""/> </span>
<span>
<span class="zCubesButton" onclick= "StripWindow(); blur() ; ">F1 oat</span>
</span> <span>
<span class="zCubesButton" onclick="UnStripWindow(); blur();">UnFloat</span>
</span> <span> <span class="zCubesButton" onclick="fnGo(); blur();">Home</spanxIE:HOMEPAGE ID="oHomePage" />
</span> <span> <span class="zCubesButton" onclick="MakeSecureFrame
(true);blur();">Out</span>
</span> <span>
<span class="zCubesButton" onclick="MakeSecureFrame (false);blur();">In</span>
</span> <!--span>
<span class="zCubesButton" onclick="DrawLines(); blur();">Line</span> </span>
<span>
<span class="zCubesButton" onclick="NewDoc(); blur();">New Doc</span>
</span> <span>
<span class="zCubesButton" onclick= "alert ( AddContentCodeAndActivate('a=2;b=3;a+b;', 'javascript'));blur();">Make Code</span>
</span-> <span> <!-document.alI('emailcontent') value=EmailDoc();alert
('submitting' + document.all ('emailcontent').value);SendEmailFromServer.submit();~>
<span id='ZEmailSendControls' >
<FORM name="SendEmailFromServer" action= "<%=ThisServer%>/Email.aspx" method="post"> Title:<INPUT type="text" id="emailtitle" name="emailtitle">
From:<INPUT type="text" id="fromemail" name= "fromemail">
To:<INPUT type="text" id="toemail" name="toemail" > <span onclick=''ShowMoreEmail();blur();">...</span> <span class="zCubesButton" id='ZEmailMoreOptions' style="display:none;visibility:hidden" >
Cc:<INPUT type="text" id="toemailCc" name= "toemailCc">
Bcc:<INPUT type="text" id="toemailBcc" name= "toemailBcc">
<span onclick="HideMoreEmail();blur();"xfont size= " 1 "><«/font></span>
</span> <span class="zCubesButton" id='ZEmailemailcontent' style="display:none;visibility:hidden" >
<INPUT type="hidden" id="emailcontent" name= "emailcontent">
<INPUT type="submit" value=""> </span>
</FORM>
<INPUT id="SendContentByEmail" TYPE=button VALUE= "Send Email" onclick="EmailDoc();blur();"x/INPUT>
</span> <FORM name="SendFromEmail" action=
"http://delta/zboxdev/liveblogs/zcubes.aspx" method="post">
<span class="zCubesButton" id= 'ZEmailHidden' style="display:none;visibility:hidden" >
<textarea name= " hi ddenEmai 1 Content" type="hidden" value=" 1 " rows=" 1 " cols=" 1 "> </textarea>
</span>
<span class="zCubesButton" id= 'ZEmail Make Like' style="display:none;visibility:hidden" >
<1NPUT id="SendFromEmail2" TYPE=submit VALUE="Make live" ></INPUT>
</span> </F0RM> </span> </div> </span>
</div> </div> <div id="SearchBoxSpace" class="gami" style="position:absolute;left:350px;top: 150px;height:500px;width:800px;padding- left:Opx;padding-right:Opx;padding-bottom:Opx;visibility:hidden;display:none;border: Opx solid #ffffff;text-decoration: none;font-weight:bold;font-color:black;">
<div id="SearchBox" UNSELECTABLE class="likemenu" style="background- color:silver;color:white;cursor:hand;width: 100%">
<table border="0px" cellspacing=θ cellpadding=θ width="100%"> <tr> <td align="left" width="80%"title="Move this window by clicking and dragging this area. The information displayed in this window may could from external/third-party websites and applications." >
<span style="text-align:left;width: 100%;display: inline;color:black">WWW</span>
</td>
<td align="right" width="20%" onmousedown="">
<span style="text-align:right;display:inline;color: black" onclick="GoSmaller(SearchBoxSpace)" onmousedown="MouseDown()" title="Click - to make smaller">[-] </span> <span style="text-align:right;display:inline;color: black" onclick="GoBigger(SearchBoxSpace)" onmousedown="MouseDown()" title="Click + to make bigger">[+] </span>
<span style="text-align:right;display:inline;color: black" onclick="GoBiggest(SearchBoxSpace)" onmousedown="MouseDown()" title="Click Λ to make full">[Λ] </span> <span style="text-align:right;display:inline;color: black" onclick="GoAway(SearchBoxSpace)" onmousedown="MouseDown()" title="Click x to close">[xj </span> </nobr> </td> </tr>
</table> </div> <div id="SearchBoxContainer" style="width: 100%;height: 100%;">
<iframe id="SearchBoxFrame" name="SearchBoxFrame" src="" style="width: 100%;height: 100%;" style="background-color:silver;"></iframe>
</div>
<div class="likemenustatus" style="align:bottom;width: 100%;height: 10px;background-color:silver;" title="Resize this window by clicking and dragging this area"> <br/> </div> </div>
<div id="banners">
<v:shape id="ZCubesBanner" class="gami" style="LEFT: 100px; WIDTH: 1052px; POSITION: absolute; TOP: lOOpx; HEIGHT: 807px" coordsize = "1052,807" filled = "f" strokecolor = "red" strokeweight = ".75pt" path = " ml 38, 134, 1138,134,138,133,138,132,138,131,138,130,138,129,138,127,138,125,138,124,138,122,138, 121,138,119,138,1 18,138,117,138,116,138,1 17,139,1 18,141 ,120,142,121 ,144,122 145,123,147,123,149,123,152,123,154,123,157,123,159,123,162,123,163,121,166,120,169, 120,171,120,173,119,175,1 18,176,1 17,176,1 16,175,1 16,174,1 16,173,1 17,171,119 169,120,166,123,163,126,159,130,155,135,151 ,141 ,147,145,142,152,138,156,132,163,127, 168,123,174,120,178,1 19,183,116,185,1 14,187,113,189,1 12,189,112,191 ,112,192
112,194,112,195,1 12,196,112,195,1 12,194,112,192,1 12,190,1 12,188,113,186,1 14,185,114, 183,115,182,117,182,119,181,121,181 ,123,181,125,181 ,126,181,127,181,129,181 132,182,136,184,140,187,144,188,147,190,150,192,151 ,193,154,194,156,196,158,197,161, 199,163,200,164,200,165,200,166,200,167,198,168,197,169,195,169,193,169,191 169,188,169,186,169,184,169,182,169,180,170,179,170,178,170,177,170,176,271 ,147
1271,147,271,146,271,145,271 ,144,271,142,271,140,271 ,137,271,134,271 ,131,271 ,128,270, 125,268,121,267,119,266,118,264,116,261 ,1 16,259,1 15,257,1 15,256,1 15,254,115 252,115,250,117,248,117,246,1 19,243,121,242,123,239,126,238,128,236,130,236,133,234, 137,234, 140,234, 144,234, 149,234, 155 ,234, 160,234, 166,235 , 170,237, 174,239, 178 240,180,242,181,243,183,245,184,247,185,249,186,251 ,187,254,187,256,188,258,189,260, 189,262,189,265,189,268,189,269,189,271,188,272,186,274,183,277,180,279,177 280,173,282,167,284,163,285,157,286,153,288,147,289,143,290,140,292,137,293,135,293, 133,293,134,293,135,293,138,293,140,293,143,293,146,293,151,293,156,293,162 293,167,293,172,293,178,293,181 ,295,183,296,185,297,187,298,188,298,190,300,190,300, 191,301,191,302,191 ,304,189,306,188,307,187,309,186,310,183,312,181 ,314,178
316,175,318,171,322,166,325,160,328,156,330,152,331 ,150,333,148,333,147,333,146,333, 145,333,144,333,143,333,142,333,141,333,140,333,139,333,138,333,137,333,136 333,137,333,138,333,140,333,143,333,145,333,148,333,153,333,158,334,162,334,166,334, 169,335,172,336,174,337,177,337,179,337,181,337,183,337,185,337,187,337,190 337,192,338,194,339,195,339,196,339,197,340,197,340,196,341,196,343,195,344,194,346, 193,348,192,351,190,353,189,357,185,360,181 ,366,175,371 ,167,376,160,380,151 384,144,389,136,394,128,398,122,401 ,116,404,110,405,107,407,103,408,100,409,96,409, 93, 409,90,409,88,409,85,409,81,408,79,406,76,406,74,405,72,403,71 403,70,403,68,402,68,401,67,401,66,400,66,399,65,398,65,397,65,396,65,394,65,393,66, 392,67,390,68,390,69,388,70,388,71 ,387,73,386,74,386,75
385,78,384,81,384,84,384,88,383,92,383,99,383,104,383,1 1 1 ,383,1 18,383,124,383,130,384, 136,385,140,386,144,387,150,388,154,389,160,390,165,391,172,392,178 392,183,392,188,393,192,395,195,396,198,397,200,398,201,398,202,399,202,399,201,400, 200,401,198,403,197,405,195,406,193,409,191 ,410,189,413,185,414,182,415,179 416,175,417,172,417,169,417,167,417,164,417,162,417,160,416,157,416,156,415,154,414, 154,414,153,414,152,413,152,413,151 ,412,151 ,412,150,412,149,411,149,410,149 410,148,410,149,410,150,410,151 ,411 ,153,412,154,413,155,415,156,417,156,419,156,422, 157,425,157,427,157,431,157,434,157,438,156,442,155,445,153,448,152,452,151 455,149,458,147,460,144,464,143,467,141 ,470,139,472,138,474,137,475,137,476,136,476, 135,476,134,476, 133,475, 133,475, 132,474, 131 ,473, 131 ,472, 131 ,472, 130,471 , 130 470,129,469,129,468,128,467,128,466,128,464,128,463,128,462,128,461 ,128,460,129,459, 131,458,132,458,133,456,135,456,137,455,139,454,140,454,143,454,146,454,148 454, 151 ,454, 154,454, 157,454, 160,456, 162,456, 164,457, 165 ,458, 167,459, 169,459, 170,460, 172,461 ,174,461,175,462,177,463,178,463,179,464,180,465,181,466,182,467,182 469, 182,470, 182,471,181 ,474, 180,475 , 179,476, 179,478, 177,481 , 176,484, 173 ,487, 171 ,489, 167,492,163,495,158,500,152,505,146,508,139,51 1 ,134,513,132,515,129,516,128 518,126,518,125,519,125,520,125,520,124,519,124,518,124,517,124,515,124,513,125,511, 126,509,127,507,129,505,131 ,503,132,502,135,500,136,498,138,497,139,497,140 498,140,499,140,501,140,503,140,506,140,508,140,511,141 ,515,142,519,143,522,143,525, 145,527,146,530,147,531,149,532,150,533,152,534,154,535,156,537,158,538,160
538,163,540,166,541 ,168,542,170,542,171 ,542,172,542,173,542,174,541 ,174,540,174,538, 174,536,174,534,173,532,173,530,172,528,171,527,170,526,170,525,169,523,168 523,167,522,165,520,163,520,161,519,159,519,156,519,154,521,153,522,153,523,152,526, 152,527,152,529,152,531,152,533,154,534,155,535,156,535,159,536,161,536,164 536,166,536,169,536,171,536,172,535,172,535,171,534,171 ,534,170 e"xv:pathx/v:pathxv:fillx/v:fillxv:stroke></v:stroke>
<v:extrusion id="ZCubesBannerE" on = "t" type = "perspective" backdepth = "20px"x/v:extrusion>
</v:shape> <v:rect id="Cubel " class="gami" style="LEFT: 100;WIDTH:50;POSITION: absolute;TOP:550;HEIGHT:50" fillcolor="red">
<v:extrusion id="CubelE" on = "t" type = "perspective" backdepth = "50px"x/v: extrusion>
</v:rect> <v:rect id="Cube2" class="gami" style="LEFT: 150;WIDTH:50;POSITION: absolute;TOP:550;HEIGHT:50" fillcolor = "green">
<v:extrusion id="Cube2E" on = "t" type = "perspective" backdepth = "50px"x/v: extrusion>
</v:rect> <v:rect id="Cube3" class="gami" style="LEFT:200;WIDTH:50;POSITION: absolute; TOP:550;HEIGHT:50" fillcolor = "blue">
<v:extrusion id="Cube3E" on = "t" type = "perspective" backdepth = "50px"x/v: extrusion>
</v:rect> </div>
<div class="gami"id="zCubesOtherPanelDiv"style="position:absolute;visibility: hidden;display:none;left:28px;top: 11 lpx;width: 1200px;z-index: 1 ;border:5px solid white ">
<div class="zCubesOtherPanel" unselectable="on" onmousedown="GetEventCancelled();" > <input type= button value='Slide Show' onclick='DoSlideShow()'>
<input id="CallJSValue" type='text' value="2008">
<!-input type='button' onclick="MakeQJaxCalls('Calendar.js', 'MakeCodeExecute('+ V + CallURLValue.value + V +')')"-->
<input type='button' value= 'call calender JS' onclick="MakeQJaxCalls('GetMonth.js', 'MakeCodeExecute', CallJSValue. value )"> <input id="SomeResponseText" type=text value="Waiting"> <input type='button' value= 'call Opacity JS' onclick="MakeQJaxCalls('ChangeOpacity.js', 'MakeCodeExecute', CallJSValue. value )"> <input type='button' value= 'call TableCreate JS' onclick="MakeQJaxCalls(TableCreate.js', 'MakeCodeExecute', CallJSValue. value )">
<input id="WebServiceURLValue" type='text' value="http://teachatechie.com/GJTTWebServices/ZipCode.asmx/GetDistance?ZipCodel=77 450&ZipCode2=77042"> <input type='button' value = 'Call QJax WebService' onclick="MakeQJaxCalls(WebServiceURLValue.value, 'MakeCodeExecuteForWS')">
<!— input type='button' onclick="MakeQJaxCalls('ZBoxZoomIn.js', TestQJax('+ V + CallURLValue.value + V +')')"->
<!-input type='button' onclick="MakeQJaxCalls('ZBoxZoomIn.js', 'TestQJax', 'http://www.cnn.com');"—>
<input id="WebServiceURLValuel " type='text' value="http://www.cnn.com">
<input type='button' value = 'Call CNN' onclick= "MakeQJaxCalls (WebServiceURLValuel .value, 'ForTesting')">
<input type='button' value= 'call GetMonthWithEvent JS' onclick= "MakeQJaxCallsCGetMonthWithEvent.js1, 'MakeCodeExecute', CallJSValue.value )">
<div id='CNNBox'xdiv> </div> </div> </div> </body> </html>
/* LOOKUPS.JS */ var SomeLookupArray = new Array
( new ArrayCg.1, true, 'http://www.***.com/search?query=', "), new ArrayCm.', true, 'http://search.msn.com/results.aspx?q=', "), new ArrayCy.', true, 'http://search.yahoo.com/search?p=' , "), new ArrayCa.', true, 'http://www.amazon.com/gp/search/ref=nb_ss_gw/102- 4931566-3663363?url=search-alias%3Daps&field-keywords=', '&Go.x=0&Go.y=0'), new Array('e.', true, 'http://search.ebay.com/search/search. dll?from=R40&satitle=' , "), new ArrayCms.', true, 'http://www.msn.com' , "), new ArrayCmsn.', true, 'http://www.msn.com' , "), new ArrayCya.', true, 'http://www.yahoo.com' , "), new ArrayCmm.', true, 'http://msdn.microsoft.com' , "), new ArrayOmx.', true, 'https://mail. bitsofcode.com/exchange' , "), new ArrayCb.', true, 'http://www.bitsofcode.com' , "), new Array('we.', true, 'http://www.weather.com/' , "), //Weather new ArrayCamc.', true, 'http://www.amctheatres.com/' , "), //Theatre new ArrayCboc.', true, 'http://www.bitsofcode.com' , "), //Software new ArrayCms.', true, 'http://www.microsoft.com' , "), //Software new ArrayOam.', true, 'http://www.amazon.com' , "), //Shopping new ArrayCbb.', true, 'http://www.bestbuy.com/' , "), //Shopping new ArrayCcc.', true, 'http://www.circuitcity.com/' , "), //Shopping new ArrayCcu.', true, 'http://www.compusa.com/' , "), //Shopping new ArrayCe.', true, 'http://www.ebay.com' , "), //Shopping new Array('wal.', true, 'http://www.walmart.com/' , "), //Shopping new ArrayCa.', true, 'http://search.aol.com/' , "), //Search new Array('m.', true, 'http://search.msn.com/' , "), //Search new ArrayCg.', true, 'http://www.***.com' , "), //Search new ArrayCbn.', true, 'http://news.bbc.co.uk/' , "), //News new ArrayCgn.', true, 'http://news.***.com/' , "), //News new ArrayCyn.', true, 'http://news.yahoo.com/' , "), //News new Array('cnn.', true, 'http://www.cnn.com/' , "), //News new ArrayCnt.', true, 'http://www.nytimes.com/' , "), //News new ArrayCgm.', true, 'http://maps.***.com' , "), //Maps/Direction new ArrayCym.', true, 'http://maps.yahoo.com' , "), //Maps/Direction new Array('mq.', true, 'http://www.mapquest.com ' , "), //Maps/Direction new Array('mqd.', true, 'http://www.mapquest.com/directions/' , "),
//Maps/Direction new ArrayCym.', true, 'http://mail.yahoo.com' , "), //Mail new ArrayCh.', true, 'http://www.hotmail.com' , "), //Mail new ArrayCaol.', true, 'http://www.aol.com/' , "), //Featured new ArrayCbbc.', true, 'http://www.bbc.co.uk/7ok' , "), //Featured new ArrayCmsn.', true, 'http://www.msn.com' , "), //Featured new Array('ns.', true, 'http://www.netscape.com/' , "), //Featured new ArrayCy.', true, 'http://www.yahoo.com' , "), //Featured new ArrayCen.', true, 'http://en.wikipedia.org/wiki/Main_Page' , "), //Encyclopedia new ArrayCdow.', true, 'http://www.download.com/' , "), //downloads new ArrayCdi.', true, 'http://dictionary.cambridge.org/' , "), //Dictionary new ArrayC'al.', true, 'http://www.alamo.com/' , "), //Car Rentals new Array('ent.', true, 'http://www.enterprise.com/car_rental/' , "), //Car Rentals new Array('h.', true, 'http://www.justlisted.com' , ") //Buy a Home );
/* HOMELOG_AE.JS */ var BrowseHistory;
BrowseHistory=newArray("http://www. bitsofcode.com/bocedit/bitsof code/source/ homelite.aspx"); var SearchHistory;
SearchHistory= new ArrayO; function BTo(sp)
{
//SearchBoxFrame.location.replace(sp); SetSearchBoxFrame(sp);
BrowseHistory. push(sp); //self.setTimeout('ShowText()', 1000);
} function BToBack() { if(BrowseHistory.length >= 2)
{ var SomeURL;
//get the previous value from the stack. SomeURL = BrowseHistory.popO; if(SomeURL != ")
{
SomeURL = BrowseHistory.popO; if(SomeURL != ") {
BTo(SomeURL );
} } } } var NewGoToLocation= new Array; var AllSearchArray = new Array("m.","g.","y.","a.","e."); function SendToSearchAndShow(SomeText)
{ var iii; var iij; var XPosition=0; var YPosition=40; var NewWidth=350; var NewHeight=300; // Make this so that the lookupcodes work both ways - TASK TO DO. if(FindInString(SomeText,"*.")== true)
{ for(iii=0; iii < AllSearchArray.length; iii++)
{ var SearchStringForThisSite = AllSearchArrayfiii] +' '+
RemoveInString(SomeText, "*."); varSomeLx)cationToGoTo=GoFindBrowseLink(SearchStringForThisSite); if(SomeLocationToGoTo != "")
{ GoToLocation = SomeLocationToGoTo;
} else
{
GoToLocation = "http://www.***.com/search ?query=" + SomeText;
} NewGoToLocation[iii |=GoToLocation;
} var iix=0;
for(iij=0; iij < AllSearchArray.length; iij++)
{
MoveTo(AddContentCodeAndExpand(NewGoToLocationLiijl),XPosition, YPosition,NewWidth,NewHeight); if(iix==2)
{ XPosition = 0 YPosition += 400; iix=0;
} else
{
XPosition += 400; iix++;
} }
} else
{
ShowSearchBrowserWindowO; SendToSearch(SomeText);
} } function SendToSearch(SomeText)
{ SetSearchBoxFrame(FindSearch(SomeText));
} function FindSearch(SomeText)
{ var GoToLocation; GoToLocation = "http://www.***.com/search?query=" + "BitsOfCode"; if(SomeText == "")
{
GoToLocation = "http://www.***.com/search?query=" + "BitsOfCode";
} if(SomeText != "")
{ if(SomeText.indexOf("http://") == 0)
{
GoToLocation = SomeText; } else if(FindInString(SomeText,"w.")== true) {
SomeText= RemoveInString(SomeText, "w.") GoToLocation = "http://www." + SomeText + ".com";
} else
{ var SomeLocationToGoTo = GoFindBrowseLink(SomeText); if(SomeLocationToGoTo != "")
{ GoToLocation = SomeLocationToGoTo;
} else
{
GoToLocation = "http://www.***. com/search ?query=" + SomeText;
} } } return(GoTo Location) ; } function SendToSearchOut(SomeText)
{ popup(FindSearch(SomeText));
} function FindInString(SomeText,WhatToFind)
{ var WhatToFindTrimmed; var SomeSplitText ; var i; SomeSplitText = SomeText.split(' '); for(i=0;i<SomeSplitText.length;i++)
{ if(SomeSplitText[i] == WhatToFind)
{ return(true);
} } return(false);
} function RemoveInString(SomeText,WhatToFind) { var WhatToFindTrimmed; var SomeSplitText ; var i; var result = 0; var ReturnString = " " ;
SomeSplitText = SomeText.split(' '); for(i=0;i<SomeSplitText.length;i++)
{ if(SomeSplitText[iJ != WhatToFind) { if(i > 0)
{
ReturnString = ReturnString + " ";
} ReturnString = ReturnString + SomeSplitTextfi | ;
}
} return(ReturnString) ;
} function DoEnter()
{ if (event. keyCode== 13)
{ if(lastButton!=null) { document.all(lastButton).click();
} } } function DoEnterKeyO
{ if(event.keyCode== 13)
{ document.all('GoButton').click();
} } function ConductSearch()
{ lastButton=window.event.srcElement.id; SendToSearch(SenderText.value); } function ConductChat()
{ lastButton=window.event.srcElement.id; if(SenderText. value != ") {
SendText(SenderText.value);
SenderText.value=";
SenderText.focus();
} } function ConductMapO
{ lastButton=window.event.srcElement.id;
SendToMap(SenderText.value); } var StrippedWindow = false; function DoCalc()
{ try { if(ShowHintBox(SenderText.value) == false)
{ var SomeString = eval(SenderText. value); if(IsPossibleJS(SomeString) == false) { EvalBox.innerHTML=T + (SomeString) + 'J';
} else
{ EvalBox.innerHTML='[falseT;
} } } catch (e) {
EvalBox.innerHTML = "I=?]" } } function ShowHintBox(SomeString) { var SomeArray; var ik;
SomeArray = SomeString.split(" "); for(ik=0; ik < SomeArray.length; ik++) { if((SomeArray[ik].charAt(0)=='.')H(SomeArrayfik].charAt(SomeArray[ik].length-l)
{
//alert(SearchLookup(SomeArray[ik].substr(l,SomeArray[ikJ. length- 1))); EvalBox.innerHTML=(SearchLookup( SomeArray [ikj.substr(l, SomeArray
[ik].length-l)));
// Do the logic for Gobutton in case codes are with periods in front or end. return(true);
} } return(false);
} function CalculateBoxCSomelD)
{ return(eval(document.all(SomeID+ "Content").innerText)); } function GoTo(SomeUrl)
{ xm.location=url box. value; } function fnGo(){ oHomePage.navigateHomePageO; event.returnValue=false;
} function GoBack(SomeUrl)
{ xm.backO;
} function GoFront(SomeUrl) { xm.forwardO
} function GoFindBrowseLink(SomeText)
{ return(GetLink(SomeLookupArray,SomeText));
} function GetLink(SomeLookupArray,SomeText)
{ var i; for(i=0; i<SomeLookupArray. length; i++)
{ var SomeLink = "";
SomeLink = GoBrowseAndSearchLine(SomeText, SomeLookupArray[i][0], SomeLookupArrayfi]fll, SomeLookupArray[ϊ]r2|, SomeLookupArrayri]f3]); if (SomeLink != "")
{ return(SomeLink);
}
} returnC");
} function SetSearchBoxFrameCSomeLocation)
{ if(StrippedWindow == false)
{ if(IsVisibleBrowserWindow() == false)
{
ShowSearchBrowserWindow();
}
SearchBoxFrame. location = SomeLocation; RaiseObject(SearchBoxSpace);
} else
{ window.open(SomeLocation, 'SearchBoxFrame'); >
Table 2: zCubes Insert Recursive Browser Code /* HOMELOG_AE.JS •/ var lastX; var lastY; var AdjustX; var AdjustY; function onmousedownHandlerMoverO
{ document.selection.empty(); if(window.event.button == 2)
{
RightMouseButtonClicked = true;
} else
{
RightMouseButtonClicked = false;
} if(RightMouseButtonClicked == true) { return; // No gami.
} var SomeSrcElement; d = 0; //window.status = (window.event.srcElement.tagName);
//alert(window.event.srcElement.tagName); if((window.event.srcElement.tagName == "A") Il
(window.event.srcElement.tagName = "INPUT") Il
(window.event.srcElement.tagName == "SELECT") Il (window.event.srcElement.tagName == "TEXTAREA") Il
(window.event.srcElement.className == "zCubesButton") Il
(window.event.srcElement.className.indexOfC'mOl") > -1) Il
(window.event.srcElement.id.indexOf("Status") > -I))
{ window.event.returnValue = true; return; } if(MoveOnlyWithControlKey == true)
{ if(window.event.ctrlKey == false) { window.event.returnValue = true; d = 0; return;
} else
{
//MoveOptionControl. style. backgroundColor = 'white';
} } else
{
//MoveOptionControl. style.backgroundColor = 'white'; if(window.event.ctrlKey == true)
{ window.event.returnValue = true; d = 0; if(window.event.srcElement.className.toLowerCase() == "garni")
{
AddToSelectedZBoxes(window.event.srcElement.id); } return;
} } window.event.returnValue = false; if(d != 0)
{ window.event.returnValue = true; return;
} var SomeOriginalSourceElement; var SomeOri gi nal SourceElementCl ass ; SomeSrcElement = window. event.srcElement; if(SomeSrcElement == null)
{ window.event.returnValue = true; return;
}
SomeOriginalSourceElement = window.event.srcElement; //alert(SomeOriginalSourceElement.outerHTML);
SomeOriginalSourceElementClass = SomeSrcElement.className.toLowerCaseO; while(SomeSrcElement.className.toLowerCase() != "garni")
{ if(SomeSrcElement.id.indexOf("Content") > 0)
{ varSomeScrollComponent=SomeSrcElement.componentFromPoint( window. event.x, window.event.y); if (SomeScroll Component != "")
{ window.event.returnValue = true; d = 0; return;
} if(ZGet(GetBoxIndex(SomeSrcElement.id), "Editing") == "true")
{ window.event.returnValue = true; d = 0; return; } }
SomeSrcElement = SomeSrcElement.parentElement; if((SomeSrcElement.tagName=="A")ll(SomeSrcElement.tagName=="FONT")
H(SomeSrcElement.tagName == "IMG"))
{ return;
} } if(SomeSrcElement.className.toLowerCase() != "garni") { window.event.returnValue = true; return;
} if(SomeObjectToMove == null)
{
SomeObjectToMove = SomeSrcElement;
}
SomeObjectToMove. setCapture(); RaiseObject(SomeObjectToMove); d=l; ox=window.event.offsetX; oy=window.event.offsetY ;
//alert(window.event.offsetParent); var SomeDelta;
SomeDelta = 20; if(window.event.offsetY < 50)
{
SomeDelta = 20; }
//ZInfo("SomeOriginalSourceElementClass=='likernenustatus"', SomeOriginalSourceElementClass=='likemenustatus'); if((window.event.ctrlKey==false)&&((SomeOriginalSourceElementClass== 'likemenustatus')H((SomeObjectToMove.style. pixel Width-ox<SomeDelta)&& (SomeObjectToMove. style.pixelHeight -oy< SomeDelta))))
{
//RESIZING
//window. status=('Resize'+SomeOriginalSourceElementClass+SomeObjectToMove. style.pixel Width +":"+ox+":"+SomeObjectToMove.style.pixelHeight+":"+oy); //SomeObjectToMove. style.border d=2; lastX = window.event.clientX; lastY = window. event.clientY;
SomeObjectToMove. style.cursor = "SE-resize"; SetBorderOfObject(SomeObjectToMove, "resize");
} else //MOVING
AdjustX=SomeObjectToMove.style.pixelLeft-(document.body.scrollLeft+ window.event.x-ox); AdjustY=SomeObjectToMove.style.pixelTop-(document.body.scrollTop
+window.event.y-oy);
SomeObjectToMove.style.cursor = "hand"; SetBorderOfObjectCSomeObjectToMove, "move");
} } function onmousemoveHandlerMover()
{ if(window.event.button == 2)
{ RightMouseButtonClicked = true;
} else
{
RightMouseButtonClicked = false; }
jf(d==O) return; if(SomeObjectToMove == null) { return;
} if(MoveOnlyWithControlKey == true)
{ if(window.event.ctrlKey == false)
{
MoveOptionControl.style.fontWeight = 'bold'; MoveOptionControl.style.backgroundColor = 'red'; window.event.returnValue = true; d = 0; return; } } if(d == 1)
{ if((SelectedZBoxes.trim()=="")ll(IsInSelectedZBoxes(SomeObjectToMove.id)
== false))
{
ResizeBox(SomeObjectToMove.id,document.body.scrollLeft+window.event. x-ox+AdjustX, document.body.scrollTop+window.event.y-oy+ AdjustY, null, null) } else
{ var LeftChange = (document.body.scrollLeft+window. event.x-ox+ AdjustX) - SomeObjectToMove.style.pixelLeft; var TopChange = (document.body.scrollTop+window. event.y-oy+ AdjustY) - SomeObjectToMove.style.pixelTop;
ChangeSelectedObjects(LeftChange, TopChange, 0, 0); } } else if(d == 2)
{ var thisX = window.event.clientX; var thisY = window.event.clientY; if((SelectedZBoxes.trim()=="")ll(IsInSelectedZBoxes (SomeObjectToMove.id) == false))
{
ResizeBox(SomeObjectToMove.id,null,null, SomeObjectToMove. style.pixelWidth+(thisX-lastX),SomeObjectToMove.styIe.pixelHeight+(thisY-lastY));
} else
{
ChangeSelectedObjects(0, 0, (thisX - lastX), (thisY - lastY));
window. status="("+SomeObjectToMove. style. pixelLeft+":"+SomeObjectToMove. style.pixelTop+":"+SomeObjectToMove.style.pixelWidth+":"+SomeObjectToMove. style. pixel Height + ")
} lastX = thisX; lastY = thisY;
} window.status="("+SomeObjectToMove.style.pixelLeft+":"+SomeObjectToMove. style.pixelTop+":"+SomeObjectToMove.style.pixelWidth+":"+SomeObjectToMove.style. pixelHeight + ")"; if(event.shiftKey == true) {
ExpandBackground(); SomeObjectToMove.scrollIntoViewCfalse); } } function onmouseupHandlerMover()
{ if(window.event.button == 2)
{
RightMouseButtonClicked = true; } else
{
RightMouseButtonClicked = false;
} if(d=O) return; if(SomeObjectToMove == null)
{ return; } if(MoveOnlyWithControlKey == true)
{ if(window.event.ctrlKey == false)
{ MoveOptionControl.style.fontWeight = 'bold';
MoveOptionControl. style. backgroundColor = 'white'; window.event.returnValue = true; d = 0; return; } } if(d = l)
{ if((SelectedZBoxes.trim()=="")H(IsInSelectedZBoxes(SomeObjectToMove.id) == false)) {
ResizeBox(SomeObjectToMove.id,document.body.scrollLeft+window.event. x-ox+AdjustX,document.body.scrollTop+window.event.y-oy + AdjustY, null, null);
} else
{ var LeftChange=(document.body.scrollLeft+window.event. x-ox+AdjustX)-SomeObjectToMove.style.pixelLeft; varTopChange^document.body.scrollTop+window.event. y-oy+AdjustY)-SomeObjectToMove.style.pixelTop;
ChangeSelectedObjects(LeftChange , TopChange, 0, 0);
} } else if(d == 2) {
//window. status=SomeObjectToMove.styIe.pixelWidth+":"+SomeObjectToMove. style.pixelHeight;
} d=0; SomeObjectToMove.style.cursor = "hand";
SetBorderOfObjectCSomeObjectToMove, "none"); ExpandBackground(); if(SomeObjectToMove.style.pixelLeft>document.body.scrollLeft+document.body. clientWidth) {
SomeObjectToMove.scrollIntoViewCfalse); }
SomeObjectToMove.releaseCaptureO; //LowerObjectCSomeObjectToMove); SomeObjectToMove = null; } function onClickEventHandlerO
{
//d=0; var sourceElementControl = window.event.srcElement; if(window.event.srcElement.className.indexOf("m01") > -1)
{ while(sourceElementControl.tagName != "A")
{ sourceElementControl = sourceElementControl. parentElement; }
} else
{
// should not step through above body. while((sourceElementControl.tagName!= "A")&&(sourceElementControl. tagName != "BODY"))
{ sourceElementControl = sourceElementControl. parentElement;
} } if (sourceElementControl. tagName == "A")
{ if(sourceElementControl.href.indexOf("javascript:") == -1)
{ BTo(sourceEl ementControl . href) ; window.event.returnValue = false; GetEventCancelledO; } } } function ResizeBox(SomeBox, LeftValue, TopValue, WidthValue, HeightValue) {
Just resize.
} var BoxSteps=l ; //var ix=0; function DoNew()
{ var SomeNew Window; //ix = ix + 1 ; ix = FindNextEmptySpaceO;
SomeNew Window=GetStringReplaced(document.all("DanySpace").outerHTML, "Dany", (ix + "")); document.all("bg").insertAdjacentHTML('BeforeEnd', SomeNewWindow); document.all(ix+"Space").style.pixelLeft=document.all(ix+"Space").style.pixelLeft+ (20*BoxSteps); document.all(ix+"Space"). style. pixelTop=document.all(ix+"Space").style.pixelTop+ (20*BoxSteps); document.all(ix+"Space"). style. visibility=" visible" ; document.all(ix+"Space") style.display ="inline"; AttachEvents(document.all(ix+"Space")); if(BoxSteps >= 10)
{
BoxSteps = 1 ;
} else
{
BoxSteps = BoxSteps + 1 ;
}
RaiseObject(document.all(ix+"Space")); ZRaiseEvent(ix, "CHANGE_START"); return(ix+"Space");
} function ToggleEdit(SomeObjectId, SomeFeedbackld, Coverld, Barld)
{ var SomeObject = document.all(SomeObjectld); var SomeCoverObject = document.all(SomeObjectId.split("Content")|0J); var SomeFeedback = document.all(SomeFeedbackld); var SomeCover = document.all(Coverld); currentState = SomeObject.isContentEditable; newState = lcurrentState; SomeObject.contentEditable = newState; if(newState == true)
{
SomeCoverObject.style.border='5px ridge pink';
SomeCoverObject.style.padding='5px'; SomeCoverObject.style.backgroundColor="pink";
//DetachEvents(SomeCover);
AttachEventCancel lers(SomeCoverObj ect) ;
SomeFeedback.innerHTML='Done';
ShowBar(BarId, true); SomeObject.style.cursor = "text";
ZSet(SomeObjectId, "Editing", true);
ZRaiseEvent(SomeObjectId, "CHANGE_START");
} else {
SomeCoverObject.style.border='5px solid white'; SomeCoverObject.styIe.padding='5px'; SomeCoverObject.styIe.backgroundColor="white"; //AttachEvents(SomeCover); DetachEventCancellers(SomeCoverObject);
SomeFeedback.innerHTML='Edit'; ShowBar(BarId, false); SomeObject.style.cursor = "hand"; ZSet(SomeObjectId, "Editing", false); ZRaiseEvent(SomeObjectId, "CHANGE_END");
} } function CopyAndDragBox(SomeSpaceContent)
{ event.dataTransfer.setData("Text", document.all(SomeSpaceContent).innerHTML);
} function CopyBox(SomeSpaceContent)
{ returnCwindow.clipboardData.setDataCText', document.all(SomeSpaceContent). innerHTML)); } function CopyBoxPlus(SomeSpaceContent)
{ varNewContent=window.clipboardData.getData(Text')+ document.all (SomeSpaceContent). innerHTML; return( window. clipboardData.setData('Text',NewContent));
} function ZContentSet(ZBoxId, SomeContent)
{ var SomeBoxID = GetBoxIndex(ZBoxId); if(typeof SomeContent != "undefined")
{
ZRaiseEvent(SomeBoxID , "CHANGE_START"); document.all(SomeBoxID + "SpaceContent"). innerHTML = SomeContent;
} ZRaiseEvent(SomeBoxID , "CHANGE_END");
} var ToEvaluateLinkNumber = 0; var SomeRegularExpression ; function AddContentCode(SomeLink, AddWindowName) { if(SomeLink.s!ice(0,7) == "ZCUBES:")
{
// This is a restore. return; } var NewWindowName; var SomeLeftPosition; var SomeTopPosition; if(typeof AddWindowName == "undefined") {
AddWindowName = false; }
NewWindowName = ""; if(SomeLink == null)
{ return(NewWindowName);
} if(window.event != null)
{
SomeLeftPosition = window.event.x + document.body.scrollLeft; SomeTopPosition = window.event.y + document.body.scroIITop;
//alert(RightMouseButtonClicked); if((window.event.ctrlKey == true) Il (RightMouseButtonClicked == true))
{
//alertC'ControIPressed"); SetSearchBoxFrame(SomeLink); return(NewWindowName);
} } else {
SomeLeftPosition = 10;
SomeTopPosition = 10;
}
//alertC'Creating Box"); NewWindowName = DoNew(); document.all(ix+"Space").style.visibility = "visible"; document.all(ix+"Space").style.width = "250px"; document.all(ix+"Space").style.height= "15px"; document.all(ix+"Space").style.left= SomeLeftPosition ; document.all(ix+"Space").style.top = SomeTopPosition ; document.all(ix+"Space").contentEditable = false; if(AddWindowName == true)
{
SomeLink = SomeLink + "&box=" + NewWindowName; }
//document.all(ix+"Space").style.filter='progid:DXIrnageTransform. Microsoft. Alpha( Opacity=100)';
SomeLink = SomeLink.trim() SomeLink = GetlmageURL(SomeLink); if((IsStartsWith(SomeLink,"http://")==true)ll(IsStartsWith(SomeLink,11https://") ==true))
{
// DO FOR EACH TYPE OF FILE.
if((lsEndsWith(SomeLink,"jpg")==true)||(lsEndsWith(SomeLink,".jpeg"==true) ||(lsEndsWith(SomeLink,".gif)==true)||(lsEndsWith(SomeLink,".png")==true)) {
document.all(ix+"SpaceContent").innerHTML="<divstyle='overflow:auto;scroll: both;'><imgborder=O'src="'+SomeLink+"'width='100%'title="onclick='if(this.readyState ==V'uninitialized\"){this.title=\"Picture may not be at this address (or) the picture server may be too slow\";}'></imgx/div>";
ZFit(ix);
} else if(IsEndsWith(SomeLink, ".swf")==true) { document.all(ix+"SpaceContent").innerHTML= '<divstyle="overflow:auto;scroll:both;">'+
'<objectclassid="clsid:d27cdb6e-ae6d- 1 1 cf-96b8-444553540000"codebase= "http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version= 7,0,0,0" width="100%" height="100%" id="index" align="middle">' +
'<param name="allowScriptAccess" value="sameDomain" />' +
'<param name="movie" value="' + SomeLink + '" />' +
'<param name="menu" value="false" />' +
'<param name= "quality" value="autolow" />' + '<param name="wmode" value="opaque" />' +
'<param name="bgcolor" value= "#000000" />' +
'</object>' + '</div>';
} etc.
}
ZRaiseEvent(ix, "CHANGE_END"); return(NewWindowName);
}
/* HOMELOG_AE_II.JS */ function onmousedownSelectorHandler() { var SomeSrcElement; selectd = 0; if(window.event.srcElement == document.all("bg"))
{ selectd = 1 ;
ClearSelectedZBoxesO; // START CREATING MARKERS } } function onmousemoveSelectorHandler()
{ if(selectd==O) return; window.status=window.event.clientX + ":" + window.event.clientY; // TRACK IVIARKERS
} function onmouseupSelectorHandlerO
{ if(selectd==O) return;
// END MARKER AND FIGURE SELECTION }
} function AddToSelectedZBoxes(SomeZBoxName) {
} function ClearSelectedZBoxesO
{ } function ChangeSelectedObjects(LeftChange, TopChange, WidthChange, HeightChange)
{ } function IsInSelectedZBoxes(SomeZBoxName)
{ } function AlignSelectedZBoxes(SomeTags)
{
// THROUGH ZBOX ALGEBRA SET THE POSITIONING
} function GetListOfAttributes(SomeAttribute) {
} function SetListOfAttributes(SomeAttribute, SomeValue, Somelncrement)
{ } function FindAggregate(SomeString, SomeAggregateFunction)
{
// TO CALCULATE MIN, MAX, AVG, etc.
} functionApplyFunctionToBoxes(SomeSelectedZBoxes,SomeFunction,InsideFlag, IsGiveResult)
{
ApplyFunctionToSelectionBox(SomeFunction,InsideFlag,IsGiveResult,Some SelectedZBoxes);
} functionApplyFunctionToSelectionBox(SomeFunction,InsideFlag,IsGiveResult,Some SelectedZBoxes)
{
// THROUGH EVAL, EVAL THE SELECTION BOXES TO THIS FUNCTION
} function ApplyFunctionToSelection(SomeFunction)
{ return(ApplyFunctionToSelectionBox(SomeFunction, false, true));
} function ApplyFunctionToSelectionOnContent(SomeFunction) { return(ApplyFunctionToSelectionBox(SomeFunction, true, true)); } function Add()
{
ZALGEBRA - ADD TWO BOXES
} function MultiplyO
{
ZALGEBRA - MULTIPLY TWO BOXES
} function Divide() {
ZALGEBRA - DIVIDE BOX LINKS INTO NEW WINDOWS WITH EXPANSION while(i<length)
{
HtmlString="; for(j=0;j<DivideBy;j++)
{ if(a[i]==undefined)
{
HtmlString+="; } else { var SomeNewWindow = AddContentCodeAndExpandCaπi-href); MoveTo(SomeNew Window , NewX, NewY); NewX = NewX + 25;
NewY = NewY + 25; }
} } } Table 3: Handwriting
/* zCube Browser Code */
/* zcubes.aspx */
<xml: namespace ns="urn:schemas-microsoft-com:vml" prefix="v"/> <style type="text/css"> vV* { behavior: url(#default#VML);}
</style>
Insert recursive browser
Insert zcube browser /* DRAWBOARD.HTM */
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Drawing Board</title> <link rel="Stylesheet" href="DrawBoard.css" type="text/css" />
<script language="JavaScript"> function fnlnit()
{ document.all.DrawArea.style.height = DrawBoard.offsetHeight; } function fnResize()
{ document.all.DrawArea.style.height = DrawBoard.offsetHeight;
} var DrawFlag = false; var SelectionlmageSelected = null; function ToggleDrawStatus()
{ DrawFlag = IDrawFlag; if (DrawFlag)
{
EnableAll Selectionlmages(true) ;
//var AllShapelmages = ShapeImagesSelectionArea.all.tags("img"); var AllShapelmages = SelectionArea.all.tags("img"); SetDefaultSelectionlmageSelectedCAllShapelmageslO]);
MapSelectionlmagelndexToElement(l); //Default the selection to be the first one document.formslO|.DrawControlButton. value = "Click to stop";
} else
{ EnableAllSelectionlmages(false);
MapSelectionlmagelndexToElementCO); document.formsfOJ.DrawControlButton. value = "Click to draw"; } } function SetDefaultSelectionlmageSelectedCThisShapelmage)
{ if (IDrawFlag) return;
SelectionlmageSelected = ThisShapelmage;
ThisShapelmage.className = "SelectionlmageSelected"; } function BrowseSelectionlmages(ThisShapelmage)
{ if (IDrawFlag) return;
//var AllShapelmages = ShapeImagesSelectionArea.all.tags("img"); var AllShapelmages = SelectionArea.all.tags("img"); for(var i=0;i< AHShapelmages.length ; i++)
{ if (AllShapeImages[iJ != SelectionlmageSelected)
{ if (AHShapeImages[i] == ThisShapelmage)
{ AllShapeImages[il.className = "SelectionlmageMouseOver";
} else {
AUShapeImages|j].className = "SelectionlmageRegular";
} } } } function SwitchSelectionlmageCThisShapelmage) { if (! Draw Flag) return;
SelectionlmageSelected = ThisShapelmage;
//var AllShapelmages = ShapeImagesSelectionArea.all.tags("img"); var AllShapelmages = SelectionArea.all.tagsf'img"); for(var i=0;i< AllShapelmages.length ; i++)
{ if (AllShapelmagesfiJ != ThisShapelmage)
{ AllShapeImages|il.className = "SelectionlmageRegular";
} else
{
AUShapeImages[i].className = "SelectionlmageSelected"; varImageIndex=parseInt(AllShapeImagesfi |.attributes.getNamedItem("imageindex"). value)
MapSelectionlmagelndexToElement(Irnagelndex); } } } function EnableAUSelectionlmagesCEnableFlag)
{
SelectionlmageSelected = null;
//var AllShapelmages = ShapeImagesSelectionArea.all.tags("img"); var AllShapelmages = SelectionArea.aIl.tags("img"); for(var i=0;i< AllShapelmages.length ; i++)
{ if (EnableFIag)
{ AHShapeImages|il.className = "SelectionlmageRegular"; } else //Disable all images
{ AllShapeImages[i].className = "SelectionlmageDisabled";
} }
} function MapSelectionlmagelndexToElementCImagelndex)
{ varShapeName ="none";//This is the draw flag to be passed to the drawing area in a iframe var Editingθption="none" //This is the editing flag to be passed to the drawing area in a iframe if (Imagelndex <= 0)
{ document.forms[0].ShapeSelection. value = "-1 "; document.formsfOl.EditingSelection. value = "100"; return;
} if (Imagelndex > 100)
{ document.forms[01.ShapeSeIection. value = "0"; document.forms[01.EditingSelection. value = Imagelndex; return;
} document.forms[0].ShapeSelection. value = Imagelndex; document.forms[01.EditingSelection.value = "100";
/* switch(Imagelndex)
{ case 1 : ShapeName = "freeline"; break; case 2: ShapeName = "polyline"; break; case 3: ShapeName = "bezierline"; break; case 4: ShapeName = "rect"; break; case 5: ShapeName = "roundrect"; break; case 6: ShapeName = "oval"; break; case 7: ShapeName = "heart"; break; case 8: ShapeName = "star"; break; case 9: ShapeName = "triangle"; break; case 101: EditingOption = "select"; ShapeName = "editing"; break; case 102: EditingOption = "resize"; ShapeName = "editing"; break; case 103: EditingOption = "move"; ShapeName = "editing"; break; case 104: EditingOption = "make_stencil"; ShapeName = "editing"; break; case 105: EditingOption = "edit_polyline"; ShapeName = "editing"; break; case 106: EditingOption = "erase"; ShapeName = "editing"; break; default: break;
}
document.forms[0].ShapeSelection. value = ShapeName; document.fbrms[0].EditingSelection. value = EditingOption;
*/
} </script>
</head>
<body id="Body" scroll="no" onload="fnlnit()" onresize="fnResize()">
<table id="DrawBoard" border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody> <tr>
<td align="center" valign="top" style="background:peachpuff; width: 140px">
<form action=""> <br />
<inputtype="button"id="DrawControlButton"class="Button"value="ClicktoDraw" onclick="ToggleDrawStatus()" />
<br /xbr />
<!— Images for all available shapes -->
<!-- Important: Need to change javascript function MapShapelmageToSelection switch statement if the sequence of images being changed --> <div id="SelectionArea">
<div id="ShapeImagesSelectionArea" style="text-align:left;">
<imgsrc="Images/FreeLine.gif"alt="FreeLine"class="SelectionImageDisabled" imageindex="l "oninit="SetDefaultSelectionImageSelected(this)"onmouseover= "BrowseSelectionImages(this)"onclick="SwitchSelectionImage(this)"/> <imgsrc="Images/PolyLine.gif"alt="PolyLine"class="SelectionImageDisabIed" imageindex="2"onmouseover="BrowseSelectionImages(this)"onclick="SwitchSelection Image(this)"/>
<img src="Images/BezierLine.gif"alt="Bezier Line"cIass="SelectionImageDisabled" imageindex="3"onmouseover="BrowseSelectionImages(this)"onclick="SwitchSelection Image(this"/>
<imgsrc="Images/Rect.gif"alt="Rectangle"class="SelectionImageDisabled" imageindex="4"onmouseover="BrowseSelectionImages(this)"onclick="SwitchSelection Image(this)"/>
<imgsrc="Images/RoundRect.gif"alt="RoundRectangle"class="SelectionImage Disabled"imageindex="5"onmouseover="BrowseSelectionImages(this)"onclick= "SwitchSelectionImage(this)7>
<imgsrc="Images/Oval.gif"alt="Oval"class="SelectionImageDisabled" imageindex="6"onmouseover="BrowseSelectionImages(this)"onclick="SwitchSelection Image(this)7>
<imgsrc="Images/Heart.gif"alt="Heart"class="SelectionImageDisabled" imageindex="7"onmouseover="BrowseSelectionImages(this)"onclick="SwitchSelectionI mage(this)"/>
<imgsrc="Images/Star.gif"alt="Star"class="SelectionImageDisabled"imageindex="8"onmo useover="BrowseSelectionImages(this)"onclick="SwitchSelectionImage(this)"/>
<imgsrc="Images/Triangle.gif"alt="Triangle"class="SelectionImageDisabled" imageindex="9"onmouseover="BrowseSelectionImages(this)"onclick="SwitchSelection Image(this)7>
</div>
<div style="display:none"> — >
<!-- Hidden shape selection associated with shape images display and action above -> <div>
<select id="ShapeSelection" style="WIDTH: 100px">
<optionvalue="-l "selected="selected">none</option> <!— This option is the draw flag -->
<option value="0">editing</option> <option value=" 1 ">freeline</option>
<option value="2">polyline</option>
<option value="3">bezierline</option>
<option value="4">rect</option>
<option value="5">roundrect</option> <option value="6" >oval</option>
<option value="7" >heart</option>
<option value="8" >star</option>
<option value="9" >triangle</option> </select> </div>
<br />
<div id="EditingImagesSelectionArea" style="text-align:left;"> <imgsrc="Images/Select.gif"alt="Select"class="SelectionImageDisabled" imageindex="101 "onload="SetDefaultSelectionImageSelected(this)"onmouseover= "BrowseSelectionImages(this)"onclick="SwitchSelectionImage(this)"/>
<imgsrc="Images/Resize.gif'alt="Resize"class="SelectionImageDisabled" imageindex=" 102"onmouseover="BrowseSelectionImages(this)"onclick="SwitchSelection Image(this)7>
<imgsrc="Images/Move.gif"alt="Move"class="SelectionImageDisabled" imageindex="103"onmouseover="BrowseSelectionImages(this)"onclick="SwitchSelection Image(this)"/> <br />
<imgsrc="Images/MakeStencil.gif"alt="MakeStencil"class="SelectionImageDisabled" imageindex="104"onmouseover="BrowseSelectionImages(this)"onclick="SwitchSelectionI mage(this)"/>
<imgsrc="Images/EditPolyline.gif''alt="EditPolyline''class="SelectionImageDisabled" imageindex="105"onmouseover="BrowseSelectionImages(this)"onclick="SwitchSelection Image(this)"/>
<imgsrc="Images/Erase.gif"alt="Erase"class="SelectionImageDisabled" imageindex="106"onmouseover="BrowseSelectionImages(this)"onclick="SwitchSelection Image(this)"/> </div>
<!--
<div style="display:none">
— >
<!-- Hidden shape selection associated with shape images display and action above -> <div>
<select id="EditingSelection" style="WIDTH: 100px">
<option value="100 selected="selected">none</option> <!— This option is the editing flag -->
<option value="101 ">select</option> <option value="102">resize</option>
<option value="103">move</option> <option value=" 104">make_stencil</option> <option value=" 105">edit_polyline</option> <option value=" 106" >erase</option> </select>
</div> </div> </form> </td> <td align="center" valign="top" style="border:0"> <iframeid="DrawArea"name="DrawArea"src="DrawArea.htm"width=" 100%"frameborder ="0"scrolling="no"x/iframe>
</td>
<td align="center" valign="top" style="border:0">
<iframeid="DrawArea2"name="DrawArea2"src="DrawArea2.htm"width=" 100%"frameborder="0" scrolling="no"x/iframe>
</td> --> </ti>
</tbody>
</table>
</body>
</html> /* DRAWAREA.HTM */
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<title>Untitled Page</title> <style> v\:* { behavior: url(#default#VML); }
</style>
<script language="javascript" src="util.js"></script>
<script language="javascript" src="homeen.js"x/script> <script language="javascript" src="bocsiteae.js"x/script>
<script language="javascript" src="vmlselector.js"x/script>
<script language="javascript" type="text/javascript">
// <!CDATA[ var DrawStartFlag = false; var PolyLineDrawingFlag = false; var NumberOfVMLSahpes = 0; var DrawTarget = null; var OriginalX=0, OriginalY=0; function GenerateVMLCode(ShapeName) { if (DrawTarget == null)
{
// Generate a DrawTarget div on too of everything DrawTarget = document.createElement("div"); DrawTarget.id = "DrawTarget" ;
DrawTarget.style.zIndex = 101 ;//This will be dynamically generated and on top of the current max layers
DrawTarget.style.background = "peachpuff"; DrawTarget.style.position = "absolute"; DrawTarget.style.left = "Opx";
DrawTarget.style.top = "Opx";
DrawTarget.style.width = document.body.offsetWidth; DrawTarget.style.height = document.body.offsetHeight; document.body.appendChild(DrawTarget); }
DrawStartFlag = true; var VMLCode = null; var x = event.clientX - DrawTarget.style.pixelLeft; var y = event.clientY - DrawTarget.style.pixelTop; OriginalX = x;
OriginalY = y; /* var coordoriginX = 0; var coordoriginY = 0; var coordsizeX = DrawTarget.style.pixelWidth; var coordsizeY = DrawTarget.style.pixelHeight; var s='coordorigin=l"+coordoriginX+"+coordoriginY+'"coordsize='" coordsize+" +coordsizeY + "";
*/ //VMLCode ='<v:shape id="VMLShape' + NumberOfVMLSahpes + '" filled = "f" strokecolor = "black" ' + s + ' style="position:absolute;top:Opx;left:Opx;width:' + document.body.offsetWidth + 'px;height:' + document.body.offsetHeight + 'px" coordsize = "'+ document.body.offsetWidth+',' + document.body.offsetHeight + '"path ="m ' + x +',' + y +' 1 ' + x + ',' + y + ' e"></v:shape>'; switch(ShapeName)
{ case "freeline": NumberOfVMLSahpes++;
VMLCode = '<v:shape id="VMLShape' + NumberOfVMLSahpes + "' filled = "f" strokecolor = "black" style="position:absolute;top:Opx;left:Opx;width:' + document.body .offsetWidth + 'px;height:' + document.body .offsetHeight + 'px" coordsize ="' + document. body.offsetWidth +',' + document.body .offsetHeight +'" path ="m' + x +',' + y +' 1' + x + ',' + y + ' e"x/v:shape>';
VMLCode With Wrapper = '<span id="VMLShape' + NumberOfVMLSahpes + 'Wrapper" contenteditable= "false" onmousedown="StartEditMode(this)">' + VMLCode + '</span>'; // Wrap span element around VML element gives VML ability to accept events and actions such as move or delete
DrawTarget.insertAdjacentHTML("BeforeEnd", VMLCodeWith Wrapper); DrawTarget.onmousemove = Generate FreeShape; DrawTarget.onmouseup = EndDraw; break; case "rect":
NumberOfVMLSahpes++;
VMLCode = '<v:rect id="VMLShape' + NumberOfVMLSahpes + '"strokecolor = "black" style="position:absolute; left: ' + x + '; top: ' + y + '; width: lpx; height: lpx;"x/v:rect>'; VMLCodeWith Wrapper = '<span id="VMLShape' + NumberOfVMLSahpes +
'Wrapper" contenteditable="false" onmousedown="StartEditMode(this)">' + VMLCode + '</span>'; // Wrap span element around VML element gives VML ability to accept events and actions such as move or delete
DrawTarget.insertAdjacentHTMLC'BeforeEnd", VMLCode With Wrapper); DrawTarget.onmousemove = Generate RegularShape;
DrawTarget.onmouseup = EndDraw; break; case "roundrect": NumberOfVMLShapes++; VMLCode = '<v:roundrect id="VMLShape' + NumberOfVMLSahpes + '" strokecolor = "black" style="position:absolute; left: ' + x + '; top: ' + y + '; width: lpx; height: lpx;"x/v:roundrect>';
VMLCodeWith Wrapper = '<span id="VMLShape' + NumberOfVMLSahpes + 'Wrapper" contenteditable= "false" onmousedown="StartEditMode(this)">' + VMLCode + '</span>'; // Wrap span element around VML element gives VML ability to accept events and actions such as move or delete
DrawTarget.insertAdjacentHTMLC'BeforeEnd", VMLCode With Wrapper); DrawTarget.onmousemove = GenerateRegularShape; DrawTarget.onmouseup = EndDraw; break; case "oval": NumberOfVMLSahpes++;
VMLCode = '<v:oval id="VMLShape' + NumberOfVMLSahpes + "' strokecolor = "black" style="position:absolute; left: ' + x + '; top: ' + y + '; width: lpx;height: lpx;" ></v:oval>'; VMLCodeWithWrapper = '<span id="VMLShape' + NumberOfVMLSahpes +
'Wrapper" contenteditable="false" onmousedown="StartEditMode(this)">' + VMLCode + '</span>'; // Wrap span element around VML element gives VML ability to accept events and actions such as move or delete
DrawTarget.insertAdjacentHTML("BeforeEnd", VMLCodeWithWrapper); DrawTarget.onmousemove = GenerateRegularShape;
DrawTarget.onmouseup = EndDraw; break; case "polyline": if (IPolyLineDrawingFlag) {
NumberOfVMLShapes++;
VMLCode = '<v: shape id="VMLShape' + NumberOfVMLSahpes + "' filled = "f" strokecolor = "black" style="position:absolute;top:Opx;left:Opx;width:' + document. body.offsetWidth + 'px;height:' + document.body.offsetHeight + "px" coordsize ="' + document.body.offsetWidth + ',' + document.body.offsetHeight + '" path ="m' + x +',' + y +' I' + x + ','+ y + ' e"></v:shape>';
VMLCodeWithWrapper = '<span id="VMLShape' + NumberOfVMLSahpes + 'Wrapper" contenteditable="false" onmousedown="StartEditMode(this)">' + VMLCode + '</span>'; // Wrap span element around VML element gives VML ability to accept events and actions such as move or delete
DrawTarget.insertAdjacentHTMLC'BeforeEnd", VMLCodeWithWrapper); PolyLineDrawingFlag = true;
DrawTarget.onmousemove = GeneratePolyLineWithoutNewPoint; DrawTarget.onmousedown = GeneratePolyLineWithNewPoint; document.body.ondblclick = EndDraw;
} break; case "bezierline": break; case "heart": case "star": case "triangle": case "abc":
NumberOfVMLSahpes++; VMLCode = '<v:shape type="#' + ShapeName + "' id="VMLShape' + NumberOfV MLS napes + '" strokecolor = "black" style="position:absolute; left: ' + x + '; top:' + y + '; width: lpx; height: lpx;"></v:oval>';
VMLCodeWithWrapper = '<span id="VMLShape' + NumberOfVMLSahpes + 'Wrapper" contenteditable="false" onmousedown="StartEditMode(this)">' + VMLCode + '</span>'; // Wrap span element around VML element gives VML ability to accept events and actions such as move or delete
DrawTarget.insertAdjacentHTML("BeforeEnd", VMLCodeWithWrapper); DrawTarget.onmousemove = GenerateRegularShape; DrawTarget.onmouseup = EndDraw; break; default: // Draw freeline by default
VMLCode = '<v:shape id="VMLShape' + NumberOfVMLSahpes + '" filled = "f" strokecolor = "black" style="position:absolute;top:Opx;left:Opx;width:' + document.body. offsetWidth + 'px;height:' + document.body.offsetHeight + 'px" coordsize ="' + document. body .offsetWidth + ',' + document.body.offsetHeight + '" path ="m' + x +',' + y +' I' + x + ',' + y + ' e"></v:shape>';
VMLCodeWithWrapper = '<span id="VMLShape' + NumberOfVMLSahpes + 'Wrapper" contenteditable= "false" onmousedown="StartEditMode(this)">' + VMLCode + '</span>'; // Wrap span element around VML element gives VML ability to accept events and actions such as move or delete
//VMLCodeWithWrapper = kspan id="VMLShape' + NumberOfVMLSahpes + 'Wrapper" contenteditable="false" unselectable="on" onmousedown="StartEditMode(this)" >'+ VMLCode + '</span>'; // Wrap span element around VML element gives VML ability to accept events and actions such as move or delete DrawTarget.insertAdjacentHTMLC'BeforeEnd", VMLCodeWithWrapper);
DrawTarget.onmousemove = GenerateFreeShape; DrawTarget.onmouseup = EndDraw; break;
} //Debug
DebugDiv.innerText = DrawTarget.outerHTML;
} function GenerateFreeShape()
{ if (event.button != 1) return false; if (IDrawStartFlag) return false; var x = event.clientX - DrawTarget.style.pixelLeft; var y = event.clientY - DrawTarget.style.pixelTop; varVMLShapeElement=document.getElementById("VMLShape"+ NumberOf VMLShapes); var VMLCode = VMLShapeElement.outerHTML;
//VMLCode=VMLCode.replace('e"></v:shape>',event.clientX+','event.clientY+'e"> </v:shape>');
//Add a point
VMLCode = VMLCode.replace('e">\ x + ',' + y + ' e">');
VMLShapeElement.outerHTML = VMLCode;
//VMLShape.outerHTML =VMLShape.outerHTML.replace('e"x/v:shape>', event. clientX +','+event.clientY +'e"></v:shape>');
//document.body.insertAdjacentHTMLC'AfterBegin", '<p>my test mouse move</p>');
} function GenerateRegularShape()
{ if (event.button != 1) return false; if (IDrawStartFlag) return false; var x = event.clientX - DrawTarget.style.pixelLeft; var y = event.clientY - DrawTarget.style.pixelTop; var width, height; varVMLShapeElement=document.getElementById("VMLShape"+NumberOfVML Shapes); if ( x >= OriginalX) { width = x - OriginalX + 1 ;
} else
{ width = OriginalX - x + 1 ;
VMLShapeElement.style.left = x + "px"; }
if ( y >= OriginalY) { height = y - OriginalY + 1 ;
} else
{ height = OriginalY - y; VMLShapeElement.style.top = y + "px"; }
VMLShapeElement.style.width = width + "px"; VMLShapeElement.style.height = height + "px";
} function GeneratePolyLineWithoutNewPoint() // onmousemove { if (event.button != 1 ) return false; if (!DrawStartFlag) return false; GeneratePolyLine(false);
} function GeneratePolyLineWithNewPoint() // onmousedown for polyline
{ if (event.button != 1) return false;
// secondary onmousedown event handler needs to check Draw Flag as well ! var ShapeName = null; try
{ //ShapeName = parent.document.forms[O|.ShapeSelection. value;
ShapeName= parent.docurnent.forrnsfOl.ShapeSelection.optionsLparent.document. formsfO].ShapeSelection.selectedIndex].text;
} catch (e)//when the parent window or draw shape selection area does not exist or does not behave properly
{
ShapeName = "freeline"; // default shape
} var DrawFlag = false;//User has to specify explicitly if he/she wants to draw or not in the parent window
DrawFlag = (ShapeName != "none"); if (! DrawFlag) {
EndDraw(); return false;
} if(ShapeName!="polyline")//shape selection has been changed, need to give onmousedown back to original event handler and invoke the original handler
{
//Wrap up the polyline if there is no chance to detect finishing of polyline due to the selection change EndDraw(); var EditModeFlag = false; EditModeFlag = (ShapeName == "editing"); if (EditModeFlag)
{ DrawTarget.onmousedown = null ;
DrawTarget.onmousedown = onmousedownSelectorHandler;
// Direct event to the right event handler onmousedownSelectorHandlerO ;
} else
{ GenerateVMLCode(ShapeName);
} return true; }
// Now handles polyline mousedown events only if (IDrawStartFlag) return false;
GeneratePolyLine(true); } function GeneratePolyLine(AddPointFlag)
{ var x = event.clientX - DrawTarget.style.pixelLeft; var y = event.clientY - DrawTarget.style.pixelTop; varVMLShapeElement=document.getElementById("VMLShape"+NumberOfVML Shapes); var VMLCode = VMLShapeElement.outerHTML; if (AddPointFlag) // Add a point to the last
{ VMLCode = VMLCode.replace('e">\ x + ',' + y + ' e">');
} else // Change the last point
{ try
{ var VMLCodeSplitArray = null; var NewVMLCode = null;
VMLCodeSplitArray = VMLCode.split('path');
NewVMLCode = VMLCodeSplitArray[0];
NewVMLCode += 'path';
NewVMLCode += VMLCodeSplitArray[l ].split(T)[O]; NewVMLCode += '1';
CoordinatesArray = VMLCodeSplitArray [1 ].split(T)[ll.split(' e')[OJ.split(','); for (var i=0; i<CoordinatesArray.length-2; i++)
{ NewVMLCode += CoordinatesArray|i) + ','; }
NewVMLCode += x + ',' + y + ' e"x/v:shape>'; // If everything is expected
VMLCode = NewVMLCode;
} catch (e)
{
// Do nothing
} } VMLShapeElement.outerHTML = VMLCode;
} function EndDraw()
{
DrawStartFlag = false; PolyLineDrawingFlag = false;
// detach all other event handlers DrawTarget.onmousemove = null; DrawTarget.onmouseup = null; document.body.ondblclick = null;
// reassign onmousedown to its initial event handler once poline drawing is finished DrawTarget.onmousedown = canvas_onmousedown;
/*
DrawTarget.onmousemove = function()
{ return false; };
DrawTarget.onmouseup = function()
{ return false;
}; document.body.ondblclick = function()
{ return false;
};
*/ //Re-enable DrawTarget "garni" peoperty after drawing
/* if (DrawTarget != null)
{
DrawTarget.className = "garni"; AttachEvents(DrawTarget);
} */
//Debug
//alert(DrawTarget.outerHTML); } function canvas_onmousedown()
{ if (event. button != 1) return false; var ShapeName = null; try {
ShapeName= parent.document.formslOl.ShapeSelection.optionsrparent.document. forms[0].ShapeSelection.selectedIndexl.text;
//The next line works the same as above //ShapeName= parent.document.formslOl.ShapeSelection.optionslparent.document. forms[0].ShapeSelection.selectedIndex|. value;
//Debug
DebugDiv.innerText = ShapeName; } catch (e)//when the parent window or draw shape selection area does not exist or does not behave properly
{
ShapeName = "freeline"; // default shape
} //Check DrawFlag var DrawFlag = false//User has to specify explicitly if he/she wants to draw or not in the parent window
DrawFlag = (ShapeName != "none"); if (! DrawFlag) return false;
//Check EditingFlag to determin if in drawing mode or editing mode var EditModeFlag = false;
EditModeFlag = (ShapeName == "editing");
DrawTarget= document.getElementById("DrawTarget"); if (EditModeFlag) // Editing mode
{
// Assign the group selector event handler DrawTarget.onmousedown = null;
DrawTarget.onmousedown = onmousedownSelectorHandler; // Direct event to the right event handler onmousedownSelectorHandler() ;
} else // Drawing mode
{ DrawTarget.onmousedown = canvas_onmousedown;
GenerateVMLCode(ShapeName); } } function S tartEdi tMode(Thi s V M LS hape Wapper)
{ // This is the event handler for each individual vml shape varEditModeFlag=(parent.document.formsrθl.ShapeSelection.options[parent.document. forms[0].ShapeSelection.selectedIndexl.text == "editing"); if (lEditModeFlag) return false; // Editing mode varEditingOption=parent.document.formsrOJ.EditingSelection.options[parent.document. forms[0].EditingSelection.selectedIndex!.text;
//Move
//Resize
//event.cancelBubble = true; } /* function EndEditMode(ThisVMLShape Wapper)
{
ThisVMLShapeWapper.onmousemove = null; ThisVMLShapeWapper.onmouseup = null;
ThisVMLShapeWapper.onmousedown = StartEditMode; event.cancelBubble = true;
} function HandleEditing(ThisVMLShape Wapper) { var x = event.clientX - DrawTarget.style.pixelLeft; var y = event.clientY - DrawTarget.style.pixelTop; var width = event.srcElement.style.pixelWidth + x - OriginalX; var height = event.srcElement.style.pixelHeight + y - OriginalY; event.srcElement.style.pixel Width = (width>10)?width: 10; event.srcElement.style.pixelHeight = (hei ght> 10)?height: 10; eventxancelBubble = true;
} */ function window_onload() { GenerateStencilsO;
//"garni"
DoFirst();
} function GenerateStencilsO { }
// ]]> </script> </head>
<body style="background:peachpuff" scroll="no" onload="return window_onload()">
<divid="DebugDiv"style="background:gray;position:absolute;left:Opx; top:Opx; width:500px; height:500px; z-index:0">Lower Layer</div>
<divid="DrawTarget"unselectable="on"style="background:peachpuff;background-image: url('Images/GridLines.gif );position:absolute;left: 100px;top: 100px;width:500px; height: 500px; z-index: 100" onmousedown="return canvas_onmousedown()"x/div>
<!--
<v:shapeclass="gami"id=nrlstyle="LEFT:0px;WIDTH:787px;POSITlON:absolute;TOP: Opx; HEIGHT: 546px" coordsize = "787,546" filled = T ' strokecolor = "black" strokeweight =".75pt"path="m 122,931122,93,124,97,128,104,132,109,137,1 17,145,126,153,137,161,150, 171 , 164, 186, 182, 199, 197,21 1 ,21 1 ,224,228,236,243 ,245 ,254,255,263 ,263 ,271 ,269, 211, 21 A, 282,279,286281,289,283,291 e"></v:shape>
<v:oval class="gami"id=nrlstyle="LEFT:58px;WIDTH: 1 10px;POSITION:absolute;TOP: 73px; HEIGHT: 38px" coordsize = "21600,21600" filled = "f" strokecolor = "black" strokeweight = ".75pt"x/v:oval>
<v:oval class="gami"style="LEFT:200px;WIDTH: 1 10px;POSITION:absoIute;TOP:200px; HEIGHT: 38px" fillcolor="red"x/v:oval>
— >
</body> </html>
Table 4: Netvariableskey = ACTION)
{ action.CurrentAction = ActionValue; } else if (key = AFTERTIME)
{ try
{
action.afteiTimeStamp = Time Value; }
}
else if (key = LASTX))
{
action.lastX =LastXValue;
} else if (key = NETID))
{ action.NetID = NetIDValue
} else if (key = NETPASSWORD)) { action. NetPassword = NetPasswordValue;
} else if (key = LOCK))
{ Action. Lock = LockValue
} else if (key = UNLOCK))
{ Action.Unlock = UnlockValue } else
{ action.AddParameter= AddParameterValue;
}
if (ActionValue = GETKEY)) // Generates random key
{
String randomKey= NetID + Math.random(); return randomKey; } if (persistantNetVariables Not Contain NetID) // Read net variables to memory
{
ConcurrentHashMap tempMap = NetHelper.readNetVariablesFromFile(fileName); persistantNetVariables.put(this. NetID, tempMap); } if (cachedNetVariables Not Contains NetID)) // Read the persisted Cache to memory
{
CacheVariableList tempList = NetHelper. ReadCacheVariablesFromFile (cacheFileName); cachedNetVariables.put(NetID, tempList);
// remove the file after reading it into memory to avoid duplication of variables }
if( ActionValue = LOCK) {
Lock NetVariable //make it read only unless the unlock key is provided
} else if( ActionValue = UNLOCK)
{ Unlock NetVariable //make it free to edit
}
if (ActionValue = SET or INCREMENT or DECREMENT)
{ doSave = true;
} if ((Action = GET) and (persistantNetVariables Contains NetID)) {
// get or update the local cache
ConcurrentHashMap tempMap = (ConcurrentHashMap) persistantNetVariables.get(NetΙD); result.append(NetHelper.netVariableToString(tempMap, true));
if (result.lengthO == 0)
{ result.append(NetHelper.netVariableToString(tempMap, true));
} } else if (Action = SET or INCREMENT or DECREMENT)
{ ConcurrentHashMap tempMap = (ConcurrentHashMap) persistantNetVariables.get(NetΙD);
Enumeration keys = Params.keys(); // For all the elements of the keys
{ if (Key = TO_BE_DELETED))
{ tempMap.remove(key) ; } else if (Action = SET))
{ if key exists then replace else put ;
} else
{ count = Integer.parseInt(tempMap.get(key).toStringO); increment = Integer.parseInt(Params.get(key).toString()); if (Action = DECREMENT)) { replace(key, count - increment);
} else if (Action = INCREMENT))
{ replace(key, count + increment);
} } catch (Exception nume)
{ count = 0; if (Action = DECREMENT))
{ replace(key, count - increment);
} else if (Action = INCREMENT)) { replace(key, count + increment);
} } } persistantNetVariables.replace(NetID, tempMap);
} else if (Action = GETCACHE) AND cachedNetVariables Contains (NetID))
{
CacheVariableList cachedVariableList = (CacheVariableList) cachedNetVariables. get(NetΙD); if (afterTimeStamp != null)
{ result.append(cachedVariableList.getVariables(afterTimeStamp));
// Gets list of Variables after given time } else
{ result.append(cachedVariableList.getVariables(lastX)); Gets last X variables }
} else if (Action. = CACHE))
{
CacheVariableList tempList; if (cachedNetVariables Contains NetID))
{ tempList = (CacheVariableList) cachedNetVariables. get(NetΙD);
} else { tempList = new CacheVariableList();
}
Enumeration keys = Params.keys();
// For all the elements of the key { if ( key contains MAX_MESSAGES)
{ try { tempList.setMaxCacheMessage(Integer.parseInt(Params.get(key).toString()));
} } else if (key contains THREAD_TO_PERSIST))
{ try
{
Object persist = Params.get(key); boolean isPersis = persist == null Il persist.toString().equals("0") ? false : true; tempList.setPersist(isPersis); tempList.setPersistFileNameCcacheFolder + this.NetID + ".txt");
}
} else if (key contains MANDITORY_PURGE))
{ try {
Object purge = Params.get(key); boolean is Purge Manditory = purge == null Il purge.toString(). equals("0") ? false : true; tempList.setManditoryPurge(isPurgeManditory); }
} else
{
CacheVariable cache Var = new CacheVariable(new GregorianCalendar(), key.toStringO, Params.get(key).toStringO); tempList.addVariable(cacheVar); } } if (cachedNetVariables contains (NetID)) {
Replace Netld } else
{
Put Netld }
} else if (Action = PERSIST))
{
CacheVariableList tempList = (CacheVariableList) cachedNetVariables.get(NetΙD); {
NetHelper.persistVariables(tempList.getVariableList(), tempList. GetPersist FileNameO);
} } if (doSave)
{
File netFile = new File(fileName); if (netFile.existsO)
{ netFile.deleteO;
}
FileWriter writer = new FileWriter(fileName);
String updatedNetVariables = NetHelper.netVariableToString ((ConcurrentHashMap) persistantNetVariables.get(NetΙD), false); writer. write(updatedNetVariables);
} else
{
String myResult = result.toStringO; myResult = myResult.Iength() > 1 ? myResult.substring(O, myResult.length() -
1 ) : myResult; return myResult; }
} catch (IOException ioEx)
{ ioEx.printStackTraceO; return "Error accessing NetVariable file: " + ioEx.getMessage();
} catch (Exception ex)
{ ex.printStackTraceO; return "Error " + this.CurrentAction + " NetVariable : " + ex.getMessage(); } }

Claims

WHAT IS CLAIMED IS:
1. A recursive web browser system, comprising: a computer having a processor and a recursive web browser configured to recursively display in a browser window thereof one or more recursive webpages therein; a network connection to one or more other computers comprising a network; a computer memory coupled to the processor storing at least one netvariable associated with a complete Uniform Resource Locator (URL) address, including storing instructions adapted to be executed by the processor to manipulate the netvariable(s) or content therein; and means for retrieving or storing the netvariables onto the computer or the other computer(s) over the network.
2. The recursive web browser system of claim 1 , said computer memory further including executable instructions to create one or more netvariables.
3. The recursive web browser system of claim 1, further comprising means for launching one or more user-requested actions executable on the netvariable(s).
4. The recursive web browser system of claim 3, wherein the means for launching one or more user-requested actions is an action bar within a recursive browser window or an address bar located in a browser platform associated with the recursive web browser which triggers the action bar.
5. The recursive web browser system of claim 3, wherein the action is to create a net variable, to get a netvariable, to set a netvariable, to cache a netvariable, or to change a value of a netvariable.
6. The recursive web browser system of claim 5, wherein a change of a value comprises a value increment, a value decrement or an automatic update of a value from another source.
7. The recursive web browser system of claim 1, wherein the netvariable comprises an assigned name and a value pair.
8. The recursive web browser system of claim 7, wherein the netvariable further comprises a user passcode.
9. The recursive web browser system of claim 1 , wherein the netvariable contains content comprising text, URL links, images, or a combination thereof or one or more ZCubes comprising the same.
10. The recursive web browser system of claim 1 , wherein the netvariable is implemented as a collaborative page or window shared by two or more computers over the network.
11. The recursive web browser system of claim 10, wherein the collaborative page is assigned a unique identifier to restrict user(s) access thereto.
12. The recursive web browser system of claim 10, wherein a drag/drop action or creation of content within the page or window creates another netvariable therewithin containing the dropped or created content.
13. The recursive web browser system of claim 12, wherein a change to the content within a collaborative page or window is synchronized with other computers having access thereto.
14. The recursive web browser system of claim 10, wherein the collaboration within the page is chatting, messaging, a group discussion or other sharing of content contained within the collaborative web page.
15. The recursive web browser system of claim 14, wherein the content is stored only in cache memory.
16. The recursive web browser system of claim 10, wherein the collaboration within the window is a clipboard.
17. The recursive web browser system of claim 1 , wherein the netvariables or one or more changes thereto are stored in a memory cache or on a hard disk.
18. A recursive web browser, comprising: a recursive browser window configured to recursively display one or more recursive webpages; means for accessing a computer memory coupled to a processor and storing at least one netvariable of claim 1 and instructions adapted to be executed by the processor to manipulate the netvariable(s) or content therein; and means for launching one or more user-requested actions executable on the netvariable(s).
19. The recursive web browser of claim 18, further comprising: a network connection to one or more computers comprising a network; and means for retrieving the netvariables from or storing the netvariables onto the one or more computers.
20. The recursive web browser system of claim 18, said computer memory further storing executable instructions to create one or more netvariables.
21. The recursive web browser system of claim 18, wherein the means for launching one or more user-requested actions is an action bar within a recursive browser window or an address bar located in a browser platform associated with the recursive web browser which triggers the action bar.
22. The recursive web browser system of claim 21 , wherein the action is effective to create a net variable, to get a netvariable, to set a netvariable, to cache a netvariable, or to change a value of a netvariable.
23. The recursive web browser of claim 22, wherein a change of a value comprises a value increment, a value decrement or an automatic update of a value from another source
24. A method for retrieving webpage content, comprising: providing the recursive web browser system of claim 1 ; selecting one or more netvariables each corresponding to a complete Uniform
Resource Locator (URL) address from a computer memory storing the same; mapping the selected netvariable(s) to the corresponding complete URLs; and retrieving webpage content associated with the URL(s) and displaying the retrieved content in a recursive browser page or window.
25. The method of claim 24, further comprising: creating one or more netvariables.
26. The method of claim 25, further comprising storing the created netvariable(s) in the computer memory.
27. The method of claim 24, further comprising: implementing the netvariable as a collaborative page or window shared by two or more computers over the network.
28. The method of claim 27, further comprising: assigning a unique identifier to the collaborative page to restrict user(s) access thereto.
29. The method of claim 27, further comprising: changing content within the collaborative page or window thereby creating another netvariable containing the same therewithin.
30. The method of claim 29, further comprising: synchronizing the change to the content with other computers having access thereto.
31. The method of claim 24, further comprising: applying an action parameter to the netvariable.
32. The method of claim 31 , wherein the action parameter is effective to create a net variable, to get a netvariable, to set a netvariable, to cache a netvariable, or to change a value of a netvariable.
33. The method of claim 32, wherein a change in value comprises incrementing a value, decrementing a value, or updating automatically a value from another source.
34. The method of claim 24, wherein the computer memory comprises one or more computers networked within the recursive browser system.
35. A computer program product having a memory, a plurality of netvariables being stored in the memory, the memory further storing a method of retrieving webpage content comprising the steps of : mapping a selected netvariable to a corresponding complete URL; and retrieving web page content associated with the URL(s) and displaying the retrieved content in a recursive browser page or window.
36. The computer program product of claim 35, said stored method further comprising: creating one or more netvariables.
37. The computer program product of claim 35, said stored method further comprising: implementing a netvariable as a collaborative page or window shared by two or more computers over a network.
38. The computer program product of claim 37, said stored method further comprising: assigning a unique identifier to the collaborative page to restrict user(s) access thereto.
39. The computer program product of claim 37, said stored method further comprising: changing content within the collaborative page or window thereby creating another netvariable containing the same therewithin.
40. The computer program product of claim 39, said stored method further comprising: synchronizing the change to the content with other computers having access thereto over a network.
41. The computer program product of claim 37, wherein the collaboration within the page is chatting, messaging, a group discussion or other sharing of content contained within the collaborative web page.
42. The computer program product of claim 37, wherein the collaboration within the window is a clipboard.
43. The computer program product of claim 35, said stored method further comprising: applying an action parameter to the netvariable.
44. The computer program product of claim 43, wherein the action parameter is effective to create a net variable, to get a netvariable, to set a netvariable, to cache a netvariable, or to change a value of a netvariable.
45. The computer program product of claim 44, wherein a change of a value comprises a value increment, a value decrement or an automatic update of a value from another source.
46. The computer program product of claim 35, wherein the netvariable comprises a name and a value pair.
47. The computer program product of claim 46, wherein the netvariable further comprises a user passcode.
48. The computer program product of claim 35, wherein content within the netvariable is text, URL links, images, or a combination thereof or one or more ZCubes comprising the same.
PCT/US2007/024954 2007-12-06 2007-12-06 Netvariables in a recursive browser system WO2009073007A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2007/024954 WO2009073007A1 (en) 2007-12-06 2007-12-06 Netvariables in a recursive browser system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2007/024954 WO2009073007A1 (en) 2007-12-06 2007-12-06 Netvariables in a recursive browser system

Publications (1)

Publication Number Publication Date
WO2009073007A1 true WO2009073007A1 (en) 2009-06-11

Family

ID=40717997

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2007/024954 WO2009073007A1 (en) 2007-12-06 2007-12-06 Netvariables in a recursive browser system

Country Status (1)

Country Link
WO (1) WO2009073007A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010044810A1 (en) * 2000-02-08 2001-11-22 Michael Timmons System and method for dynamic content retrieval
US20020133550A1 (en) * 1998-03-30 2002-09-19 Electronic Data Systems Corporation, A Delaware Corporation System and method for an interactive knowledgebase
US6966066B1 (en) * 1999-06-30 2005-11-15 Microsoft Corporation Interactive television receiver unit browser that waits to send requests
US20060212514A1 (en) * 2005-03-17 2006-09-21 Yannick Saillet Method for the server side processing of user interactions with a web-browser
US7293239B2 (en) * 2003-12-10 2007-11-06 Microsoft Corporation Controlling access to protected data and assessment functions via browser redirection

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020133550A1 (en) * 1998-03-30 2002-09-19 Electronic Data Systems Corporation, A Delaware Corporation System and method for an interactive knowledgebase
US6966066B1 (en) * 1999-06-30 2005-11-15 Microsoft Corporation Interactive television receiver unit browser that waits to send requests
US20010044810A1 (en) * 2000-02-08 2001-11-22 Michael Timmons System and method for dynamic content retrieval
US7293239B2 (en) * 2003-12-10 2007-11-06 Microsoft Corporation Controlling access to protected data and assessment functions via browser redirection
US20060212514A1 (en) * 2005-03-17 2006-09-21 Yannick Saillet Method for the server side processing of user interactions with a web-browser

Similar Documents

Publication Publication Date Title
US10956531B2 (en) Dynamic generation of mobile web experience
US8365203B2 (en) Method for creating a native application for mobile communications device in real-time
JP5480892B2 (en) Advertisement presentation based on WEB page dialogue
US7840648B1 (en) Web-page authoring tool for automatic enrollment in advertising program
US9049258B2 (en) Systems and methods for anchoring content objects to structured documents
US8407576B1 (en) Situational web-based dashboard
US7805670B2 (en) Partial rendering of web pages
US20100313252A1 (en) System, method and apparatus for creating and using a virtual layer within a web browsing environment
US10387535B2 (en) System and method for selectively displaying web page elements
US20070239726A1 (en) Systems and methods of transforming data for web communities and web applications
US20070130518A1 (en) Method and apparatus for a personalized web page
US20060031751A1 (en) Method for creating editable web sites with increased performance &amp; stability
WO2008033530A2 (en) System for controlling objects in a recursive browser system
US20060026557A1 (en) Manipulating portlets
JP2010530589A (en) Integrated sharing of electronic documents
WO2008092079A2 (en) System, method and apparatus for selecting content from web sources and posting content to web logs
WO2004031882A2 (en) Method and apparatus for relaying session information from a portal server
US8117553B2 (en) Method and system to maintain a user interface context
KR20090061666A (en) Content feed user interface
US20080282150A1 (en) Finding important elements in pages that have changed
US20070283251A1 (en) Web-based experience editor in a recursive browser system and uses thereof
Griffin Foundations of Popfly: rapid mashup development
WO2009073007A1 (en) Netvariables in a recursive browser system
Hadlock jQuery Mobile: Develop and design
KR20020005364A (en) System and method for managing background of internet

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 07867642

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 07867642

Country of ref document: EP

Kind code of ref document: A1