get paid to paste

Letters JavaScript

// JavaScript for letters
// vars
var letterSpeed = 0.1; // letter moves pixels per milisecond

// Triggered when the mouse is moved
var cursorX;
var cursorY;
document.onmousemove = function(e){
    cursorX = e.pageX;
    cursorY = e.pageY;
}

// Triggered when a key is typed anywhere
var deleteMode = false;
var autoMode = false;
var lastCh = "A";
function keyTyped(e) {
	var ch = String.fromCharCode(e.keyCode).toUpperCase();
	if(!/[^a-zA-Z0-9]/.test(ch) && ch != '') {
		spawnLetter(ch);
		lastCh = ch;
	} else if(ch == " ")
		rapeButton()
	else if(e.keyCode == 27)
		clearButton()
	else if(e.keyCode == 16)
		modeButton();
	else if(e.keyCode == 17)
		spawnerButton();
}

function mouseMoved() {
	if(autoMode)
		spawnLetter(lastCh);
}

// Letter spawning

function spawnLetter(l) {
	spawnLetterAtPoint(l, cursorX, cursorY);
}

function spawnLetterAtPoint(l, x, y) {
	var div = document.createElement("div");
	div.onmouseover = function() {
		if(!deleteMode)
			letterMouseover(div)
		else
			letterDestroy(div);
	};
	div.className = 'letter';
	div.innerHTML = l;
	div.style.left = x + 'px';
	div.style.top = (y + 20) + 'px';
	document.body.appendChild(div);
	letterFall(div);
	$(div).promise().done(function() { $(div).animate({ 
			color: "black",
		}, 1000); });
	return div;
}

function getPixelMoveDuration(distance) {
	return Math.round(distance / letterSpeed);
}

function letterFall(div) {
	var newPixelY = $(window).height() - $(div).height();
	var duration2 = getPixelMoveDuration(newPixelY - cursorY);
	$(div).stop().animate({ 
			top: newPixelY + "px",
		}, {
			duration: duration2,
			easing: "easeOutBounce"
		});
}

function letterMouseover(div) {
	var distance = $(div).height() + 50;
	var distanceHorizontal = (cursorX - ( parseInt($(div).css('left')) + Math.round($(div).width() / 2) ) ) * 3;
	var duration2 = getPixelMoveDuration(distance);
	$(div).stop().animate({ 
			top: "-=" + distance + "px",
			left: "-=" + distanceHorizontal + "px",
			fontSize: "+=20%",
			color: "red",
		}, {
			duration: duration2,
			easing: "easeOutBack"
		});
	$(div).promise().done(function() { 
			letterFall(div);
			$(div).promise().done(function() { $(div).stop().animate({ 
					color: "black",
				}, 1000); });
		});
}

function letterDestroy(div) {
	var newPixelY = -10 - $(div).height();
	var duration2 = getPixelMoveDuration(parseInt($(div).css('top')) - newPixelY) / 5;
	$(div).stop().animate({ 
			top: newPixelY + "px",
			color: "green",
		}, duration2);
	$(div).promise().done(function() { 
			document.body.removeChild(div);
		});
}

function clearButton() {
	for(i in document.body.getElementsByTagName("*")) {
		e = document.body.getElementsByTagName("*")[i];
		if(e.className == "letter")
			letterDestroy(e);
	}
}

function modeButton() {
	deleteMode = !deleteMode;
	if(deleteMode)
		document.getElementById("modeButton").value = "Turn OFF delete mode (Shift)"
	else
		document.getElementById("modeButton").value = "Turn on delete mode (Shift)";
}

function spawnerButton() {
	autoMode = !autoMode;
	if(autoMode)
		document.getElementById("spawnerButton").value = "Turn OFF auto drop (Ctrl)"
	else
		document.getElementById("spawnerButton").value = "Turn on auto drop (Ctrl)";
}

function rapeButton() {
	div = spawnLetterAtPoint(lastCh, 0, 0);
	for(var x = $(div).width(); x < $(window).width(); x += $(div).width()) {
		spawnLetterAtPoint(lastCh, x, 0);
	}
}

Pasted: Mar 16, 2013, 10:24:20 pm
Views: 23