Hey programmer, Hopefully, you have all upgraded to Surebert 4.0 which was a major change. Below is an overview of what problems you might run into upgrading pre surebert 4.0 code to surebert 4.0+ code.
--Paul Visco

RELEASE NOTES FOR SUREBERT 4.0 - 11/27/07

CHANGES MOST LIKELY TO CAUSE INCOMPATIBILITY

  1. removed use of sb.element .nodeName property in the object constructor, use o.tag
  2. no more new sb.element('div'); use object argument
    new sb.element({tag : 'div'});
  3. sb.objects.alert is now only in developer.js as you should never be using it in production
  4. moved sb.forms methods for dealing with textreas into sb.forms.textarea - /forms/textarea.js. so you would include like this
    sb.include('forms.textarea');
    and use like this sb.forms.textarea.allowTabs('#myTextArea');
    
  5. moved sb.styleSheet and sb.styleSheets to sb.css.styleSheet
    sb.include('css.styleSheet');
    var mySheet= new sb.css.styleSheet('http://estrip.org/test.css');
    
  6. sb.dom.onready and sb.dom.timeout now sb.dom.onReady and sb.dom.onTimeout
  7. all sb.sticker calls now sb.flashGate, it makes more sense now that the "flash sticker" is no longer a visible sticker - Thanks JOn Kiddy for the name

Other Changes

  1. sb.slider is now sb.widget.slider
  2. moved many features into external modules that can be used by including e.g.
    sb.include('arrays.inject');
    moved the following sb.arrays methods into their own files under /arrays avg, copy, empty, inject, max, min, mostCommon, natsort, random, range, reduce, regex, remove, shuffle, sum, unique, iterate (cycle, first, last, prev, next, pointer, current)
  3. moved all of javascript 1.5 array protoypes forEach, map, filter, some, every, indexOf, lastIndexOf into /arrays/js_1.5 and made it so they autoload with include in browsers that do not have them by default (ie and opera). They are in safari and firefox by default.
  4. all ie6 specific code was moved to ie6.js
  5. Removed the following aliases which just were for backwards compatibility with v2.0
    sb.browser.pngFixBg = sb.ie6.pngFixBg;
    sb.browser.pngFix = sb.ie6.pngFix;
  6. sb.browser.scrollPos is now sb.browser.getScrollPosition
    //add alias back if you want
    sb.browser.scrollPos = sb.browser.getScrollPosition;
    
  7. removed remaining globals. Add them yourself if you want them. The only globas now are $, s$
    previous global that were removed, add them back as desired in your own code
    var ajax = sb.ajax;
    var events = sb.events;
    var forget= sb.cookies.forget;
    var recall= sb.cookies.recall;
    var remove = sb.dom.remove;
    var replace = sb.dom.replace;
    var remember= sb.cookies.remember;
    var txt = sb.dom.txt;
    var typeOf = sb.typeOf
    
  8. if you are using $_GET you must load browser.$_GET
    sb.include('browser.$_GET');
  9. sb.element.prototype.opacity() no longer returns the opacity, it can just be used to set it e.g. sb.element.prototype.opacity(0.3) as before but the value can be accessed in {sb.element}.style.opacity
  10. moved all sb.functions stuff into surebert/functions for include
  11. removed sb.effects.prefab effects now include element.prototypes for effects
    sb.include('element.prototype.quiver');
    $('#myDiv').quiver();
    
  12. //use sb.objects.infuse or global sb.objects.infuse(from, to);
    removed sb.objects.importProperties
    removed sb.objects.importPropertiesAsPrototypes
    removed sb.objects.importPrototypesAsProperties
  13. removed sb.browser.win Mix you own window.open function on a per app basis
  14. sb.browser.$_GET, sb.browser.removeSelection, sb.browser.scrollTo into /browser
  15. removed sb.browser.os - used to be max, linux, or win. It was overkill considering these values are avaiable as part of the window object. Just match test window.navigator.userAgent if you want to know.
    e.g. if(window.navigator.userAgent.match(/linux/i)){
    //do something
    }
  16. got rid of sb.element.xy, just use sb.element.mv(x,y,z) without the z
  17. removed the follwing alias, if you want them set them up yourself
    sb.nodeList.prototype.addClass = sb.nodeList.prototype.addClassName;
    sb.nodeList.prototype.attr = sb.nodeList.prototype.setAttribute;
    sb.nodeList.prototype.removeClass = sb.nodeList.prototype.removeClassName;
    
  18. removed "each" alias to Array.protototype.forEach, add it back if you want it
    Array.prototype.each = Array.prototype.forEach;
  19. moved sb.cookies into its own file, include for use
  20. sb.dom.onready is now sb.dom.onReady and the onready method of its object argument is now also onReady instead of onready. Notice capitalization
  21. removed sb.persistentData. Use sb.cookies for cookie storage or sb.sharedObject for flash storage. Because of this sb.textBling now includes sb.flashGate
  22. //moved the following into /events
    sb.events.wheelDirection now in sb.events.getWheelDirection(e);
    sb.events.keys now in sb.events.keys(e);
  23. sb.pngFix just skips hidden images now instead of reporting error
  24. rewrote faster sb.strings.isNumeric()

BUG FIXES

  1. Embed elements now work properly with s$ or $. They previously were not because the javascript typeof an embed element is function in sf and ff instead of object for some reason.
  2. $ now correctly works again with dom elements that have mutliple classNames
  3. surebert flashGate now doesn't cause margin top problem in first element on the page in IE

Known Issues

  1. sb.events.relatedTarget checks for erroneous related targets on mouseout, mouseover events. Still not reliable in firefox with input nodes. If it throws an error now it returns the event target instead. Just don't use it with inputs.

New Features

  1. ie6.js is loaded automatically if you are using ie6 e.g.
  2. //must have css background like this
    background-image:url('../media/shadow.png');
    sb.ie6.pngFixBg('#myDiv'); //this one is not recursive
    
    sb.ie6.pngFix('#control_panel');
    
  3. surebert was broken down into more modular libraries that can be loaded as needed using their path as an argument
    sb.include('arrays.inject');
  4. Individual {module}.js files must conatin the object they are named afer. e.g. sb.colors.js must contain sb.colors. The file can contain other classes but when using the sb.include(); it checks to see if the object is already loaded before included
    e.g. this will only load sb.colors once, if it detects that the sb.colors objecthas been evaluated.
    sb.include('colors');

    There is an array that holds all included files
    alert(sb.included);
  5. send all includes and sb.load ajax calls to sb.consol for debugging
    sb.loadDebug =1;
  6. got rid of sb.ajax.onfetch, call fetch from a function instead ofr just cal another function at the same time as calling fetch()
  7. added better debugging to sb.ajax via sb.consol - ajax responses are blue
  8. got rid of t.onmillisec
  9. add sb.ajax.prototype.timeout - the timeout in milliseconds before it aborts
  10. sb.ajax.prototype.data can be a hash in which the value get encodeURIComponent encoded
  11. Got rid of ajax.prototype.format = send, just use normal ajax call without handler. Send used to specify an ajax call that had no return.
  12. the data property of the ajax object should/can now be an object
    var aj=new sb.ajax({
    	
    	data : {
    		c : 'yes',
    		day : 'monday'
    	},
    	url : '../_development/notes.txt',
    	debug : 1
    }).fetch();
    
  13. target and related target now return sb.s$
  14. Added easy iteration to arrays sb.arrays.cycle(), sb.arrays.pointer, sb.arrays.rewind(), sb.arrays.first(), sb.arrays.last(), sb.arrays.next(), sb.arrays.prev();
    var a = [0,1,2,3,4,5,6];
    window.setInterval(function(){
    	document.title = a.cycle();
    }, 1000);
    
  15. get the Y position of an element based onthe top, left of the element
    sb.element.prototype.getY();
  16. get the X position of an element based onthe top, left of the element
    sb.element.prototype.getX();
  17. clears any position data set with javascript
    sb.element.prototype.clearPosition();
  18. sb.widget.sortList - used to make sortable lists
  19. sb.widget.swapList - used to make swappable lists
  20. sb.strings.typoFix - 'teh dog'.typeoFix() returns 'the dog'
  21. sb.js added support for safari 3, iphone and ipod touch detection to sb.browser
  22. sb.element.prototype.quiver
  23. sb.element.prototype.addToolTip
  24. sb.element.prototype.fade
  25. sb.element.prototype.makeDraggable
  26. sb.element.prototype.resizeTo
  27. sb.element.prototype.markText
  28. sb.utils.monitor for monitoring the avaiablibilty of urls
  29. added sb.sticker.getBandwidth using flash, see sb.sticker
    var div = new sb.element({
    	tag : 'div',
    	innerHTML : 'dd',
    	styles : {
    		backgroundColor : 'red',
    		width : '0px',
    		height : '20px'	
    	}
    });
    
    div.appendTo('body');
    
    
    sb.bandwidthTest = {
    	
    	/**
    	begin = 45596
    	kbps = 3185
    	size = 45596
    	*/
    	onComplete : function(o){
    		sb.consol.dump(o);
    	},
    	
    	/*
    	kb = 45.596
    	time = 100
    	*/
    	onProgress: function(o){
    		sb.consol.dump(o);
    		
    		div.style.width = (Math.round(o.kb)*10)+'px';
    	}
    };
    
    sb.onFlashGateLoad.push(function(){
    	sb.sticker.getBandwidth();
    });
    
  30. new sound check feature
    sb.include('sticker');
    sb.soundCheck();
    
  31. added sb.Array.prototype.reduce.js and sb.Array.prototype.reduceRight.js in /arrays
  32. Added consol onlog method, passes the string that would have otherwise been sent to the consol. This way you can implement your own consol system
    sb.consol.onlog = function(str){
    	alert(str);
    }
  33. cssRules to css/rules.js