//Snow - <a href="http://www.btinternet.com/~kurt.grigg/javascript" >http://www.btinternet.com/~kurt.grigg/javascript</a>
if ((document.getElementById) &&
window.addEventListener || window.attachEvent){
(function(){
//Configure here.
var num = 5; //Number of flakes
var timer = 30; //setTimeout speed. Varies on different comps
//End.
var y = [];
var x = [];
var fall = [];
var theFlakes = [];
var sfs = [];
var step = [];
var currStep = [];
var h,w,r;
var d = document;
var pix = "px";
var domWw = (typeof window.innerWidth == "number");
var domSy = (typeof window.pageYOffset == "number");
var idx = d.getElementsByTagName('div').length;
if (d.documentElement.style &&
typeof d.documentElement.style.MozOpacity == "string")
num = 12;
for (i = 0; i < num; i++){
sfs[i] = Math.round(1 + Math.random() * 1);
document.write('<div id="flake'+(idx+i)+'" style="position:absolute;top:0px;left:0px;width:'
+sfs[i]+'px;height:'+sfs[i]+'px;background-color:#ffffff;font-size:'+sfs[i]+'px"></div>');
currStep[i] = 0;
fall[i] = (sfs[i] == 1)?
Math.round(2 + Math.random() * 2): Math.round(3 + Math.random() * 2);
step[i] = (sfs[i] == 1)?
0.05 + Math.random() * 0.1 : 0.05 + Math.random() * 0.05 ;
}
if (domWw) r = window;
else{
if (d.documentElement &&
typeof d.documentElement.clientWidth == "number" &&
d.documentElement.clientWidth != 0)
r = d.documentElement;
else{
if (d.body &&
typeof d.body.clientWidth == "number")
r = d.body;
}
}
function winsize(){
var oh,sy,ow,sx,rh,rw;
if (domWw){
if (d.documentElement && d.defaultView &&
typeof d.defaultView.scrollMaxY == "number"){
oh = d.documentElement.offsetHeight;
sy = d.defaultView.scrollMaxY;
ow = d.documentElement.offsetWidth;
sx = d.defaultView.scrollMaxX;
rh = oh-sy;
rw = ow-sx;
}
else{
rh = r.innerHeight;
rw = r.innerWidth;
}
h = rh - 2;
w = rw - 2;
}
else{
h = r.clientHeight - 2;
w = r.clientWidth - 2;
}
}
function scrl(yx){
var y,x;
if (domSy){
y = r.pageYOffset;
x = r.pageXOffset;
}
else{
y = r.scrollTop;
x = r.scrollLeft;
}
return (yx == 0)?y:x;
}
function snow(){
var dy,dx;
for (i = 0; i < num; i++){
dy = fall[i];
dx = fall[i] * Math.cos(currStep[i]);
y[i]+=dy;
x[i]+=dx;
if (x[i] >= w || y[i] >= h){
y[i] = -10;
x[i] = Math.round(Math.random() * w);
fall[i] = (sfs[i] == 1)?
Math.round(2 + Math.random() * 2): Math.round(3 + Math.random() * 2);
step[i] = (sfs[i] == 1)?
0.05 + Math.random() * 0.1 : 0.05 + Math.random() * 0.05 ;
}
theFlakes[i].top = y[i] + scrl(0) + pix;
theFlakes[i].left = x[i] + scrl(1) + pix;
currStep[i]+=step[i];
}
setTimeout(snow,timer);
}
function init(){
winsize();
for (i = 0; i < num; i++){
theFlakes[i] = document.getElementById("flake"+(idx+i)).style;
y[i] = Math.round(Math.random()*h);
x[i] = Math.round(Math.random()*w);
}
snow();
}
if (window.addEventListener){
window.addEventListener("resize",winsize,false);
window.addEventListener("load",init,false);
}
else if (window.attachEvent){
window.attachEvent("onresize",winsize);
window.attachEvent("onload",init);
}
})();
}//End.
Tag Archive for js
Snow JS Script
Class (instanceof Class)
function Class (ns) {
this.toString = function () { return ns; };
}
Class.def = function (ns, ctx) {
var c = window;
var ns = ns.split('.');
for (var i = 0, ix = ns.length - 1; i < ix; i++)
c = c[ns[i]] instanceof Object ? c[ns[i]] : c[ns[i]] = {};
if (!(ctx.init instanceof Function)) ctx.init = function () {};
c = c[ns[i]] = function () { this.constructor.apply(this, arguments); };
c.prototype = new Class(ns.join('.'));
c.prototype.constructor = ctx.init;
for (var key in ctx) if (ctx.hasOwnProperty(key)) {
if (key != 'init') c.prototype[key] = ctx[key];
}
return c;
};
Category: Uncategorized |
Tags: js
alert with Force Quit
window.alert = function (msg) {
if (!confirm(msg)) throw new Error('Force Quit');
};
Category: Uncategorized |
Tags: js
uniqid
uniqid = (function () {
var id = 0; return function () { return id++; };
})();
Category: Uncategorized |
Tags: js
distance
function distance (x1, y1, x2, y2) {
var dx = x2 - x1;
var dy = y2 - y1;
return Math.sqrt(dx * dx + dy * dy);
}
Category: Uncategorized |
Tags: js
$n
function $n (n) {
return (typeof(n) == 'number') ? new Number(n) : NaN;
}
Category: Uncategorized |
Tags: js
ref
String.prototype.ref = function () {
for (var args = [], i = 0; i < arguments.length; i++)
args.push('arguments[' + i + ']');
if (window[this] && window[this] instanceof Function)
return eval('(new window.' + this + '(' + args.join(',') + '))');
throw new Error('Function window.' + this + ' does not exist.');
};
Category: Uncategorized |
Tags: js
IE 6 Transparent PNG Fix – SuperSleight
var supersleight = function() {
var root = false;
var applyPositioning = true;
// Path to a transparent GIF image
var shim = 'x.gif';
// RegExp to match above GIF image name
var shim_pattern = /x.gif$/i;
var fnLoadPngs = function() {
if (root) {
root = document.getElementById(root);
}else{
root = document;
}
for (var i = root.all.length - 1, obj = null; (obj = root.all[i]); i--) {
// background pngs
if (obj.currentStyle.backgroundImage.match(/.png/i) !== null) {
bg_fnFixPng(obj);
}
// image elements
if (obj.tagName=='IMG' && obj.src.match(/.png$/i) !== null){
el_fnFixPng(obj);
}
// apply position to 'active' elements
if (applyPositioning && (obj.tagName=='A' || obj.tagName=='INPUT') && obj.style.position === ''){
obj.style.position = 'relative';
}
}
};
var bg_fnFixPng = function(obj) {
var mode = 'scale';
var bg = obj.currentStyle.backgroundImage;
var src = bg.substring(5,bg.length-2);
if (obj.currentStyle.backgroundRepeat == 'no-repeat') {
mode = 'crop';
}
obj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='" + mode + "')";
obj.style.backgroundImage = 'url('+shim+')';
};
var el_fnFixPng = function(img) {
var src = img.src;
img.style.width = img.width + "px";
img.style.height = img.height + "px";
img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')";
img.src = shim;
};
var addLoadEvent = function(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
};
}
};
return {
init: function() {
addLoadEvent(fnLoadPngs);
},
limitTo: function(el) {
root = el;
},
run: function() {
fnLoadPngs();
}
};
}();
// limit to part of the page ... pass an ID to limitTo:
// supersleight.limitTo('header');
supersleight.init();
Object.prototype.length (Firefox only)
Object.prototype.__defineGetter__('length', function () {
var cnt = 0;
for (var i in this) {
if (this.hasOwnProperty(i)) cnt++;
}
return cnt;
});
Category: Uncategorized |
Tags: js
Object.prototype.list (Firefox only)
Object.prototype.__defineGetter__('list', function (dep) {
var r = [];
var ind = '';
var dep = (typeof(dep) == 'number') ? ++dep : 0;
for (var i = 0; i < dep; i++) { ind += ' '; }
for (var i in this) {
if (this.hasOwnProperty(i)) {
var is_obj = (typeof(this[i]) == 'object');
r.push(ind + i + ': ');
r.push(is_obj ? '' : this[i]);
r.push('
');
r.push(is_obj ? arguments.callee.apply(this[i], [dep]) : '');
}
}
return r.join('');
});
Category: Uncategorized |
Tags: js