Jquery 1.4 is quite a bit faster than what we have now (plus Firebug keeps throwing errors at me regarding the current cs-cart js), so I think this is a good move.
One issue that I would like to see improved is with the implementation of the Jquery Tooltip plugin and it's affect on CSS usage in CS-Cart.
Currently, the dropdown menus for select boxes such as the currency selector, or the sorting options (Sort by: Price, Name, etc) are absolutely positioned via inline CSS from the top left corner of the ENTIRE BROWSER WINDOW !!!
This is such an incredibly terrible way of doing things because it means you CAN NOT give any container element (such as the central column) a CSS position value of anything other than "static" (the default) because then
it's top left corner becomes the new central axis for positioning the dropdowns, even though those coordinates are still being calculated from the top left corner of the entire window. So then the popup gets positioned incorrectly.
Consider the following html:
<body>
<div id="container">
<div id="header">logo nav etc</div>
<div id="content">
<div class="central-column">
<div class="right">
Sort by: <a class="sort-asc">Popularity</a>
<div id="select_wrap_sort_by" class="select-popup cm-popup-box hidden">
<ul class="cm-select-list">
<li>Default</li>
<li>Name</li>
<li>Price</li>
<li>Popularity</li>
<li>Bestselling</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</body>
The way things are now, if the "Sort By" selector (which is floated to the right by it's parent div), calculated to be positioned 250px from the top of the window and 1250px from the left edge of the browser window, is clicked on to choose a different sorting option, then the unorded list that gets "popped up" will have the following INLINE CSS added to it: style="display:block; position:absolute; top:250px; left:1250px;" (or something similar).
The reason this is bad is because any container that the popup happens to be within, CAN NOT have its CSS position set to anything other than "static", which is the default setting.
If the div.central-column is calculated to be positioned 170px from the top of the window and 560px from the left edge of the browser window (because it is pushed down by the header, and pushed to the left by a sidebar and the fact that the site is centered in the browser window), and you set it's CSS position to "relative", then the "Sort by" popup will get positioned an additional 170px down the page and 560px to the right, meaning it will end up being 420px from the top of the window and a whopping 1810px from the left edge of the browser window (off the screen for my monitor).
The reason this happens is because
setting an element's position to "absolute" will position it from the top left corner of the first parent element with a position attribute set to anything other than "static".
So not only can you NOT set the position attribute for a container like div.central-column (because you will bugger up the popup positions), but you can NOT absolutely position ANYTHING AT ALL, unless you also want to calculate it's position from the top left corner of the entire browser window (meaning yo uhave to use javscript instead of CSS)!!! Because in order to absolutely position something within a container, you have to set that container's position to something other than "static".
As far as I'm concerned, this is either a serious deep lack of comprehension of CSS, or an intentional plot to obfuscate the development of custom cs-cart themes, thus securing a steady stream of paying customization projects for the developers of cs-cart because others are unable to implement otherwise simple changes. Hay, what rant isn't complete without a good conspiracy theory thrown in?
Anyways, the solution ended up being easy once I was able to trace what was going on...
If you throw a wrapper div around the select box and the link that activates it, then you can EASILY calculate the position of this parent div from the top left corner of the screen (same as what is being done now for the popup), but then calculate the offset for the popup relative to the parent div instead of the entire window. Now just set the parent div's position to relative, and that's it. Your popups are positioned correctly, the javascript can still determine if the dropdown will extend past the screen boundaries and adjust it's position accordingly, and most importantly, you haven't disabled the ability to set CSS positions for other elements.
This only requires one extra div container in the html (or the use of an appropriately positioned parent, like div.right in the example above) and as far as I remember, only a few extra lines (5 or 6?) of javascript within core.js.
Why this wasn't done from the start is completely mind boggling to me.
The CSS positions attribute is a fundamental element for manipulating the layout of a webpage and should not have been rendered useless as it has in CS-Cart.
imho