blob: 36fcb2e12ce0b3d268793ea22a47674103ac7c35 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Boris Bokowski, IBM Corporation - initial API and implementation
*******************************************************************************/
window.onload = function() {documentLoaded=true;init();};
var zIndex = 10;
if (navigator.userAgent.indexOf("MSIE") == -1) {
browser = {
getX : function(event) {
return event.clientX + window.scrollX;
},
getY : function(event) {
return event.clientY + window.scrollY;
},
preventDefault : function(event) {
event.preventDefault();
},
addEventListener : function(eventName, listener) {
document.addEventListener(eventName, listener, true);
},
removeEventListener : function(eventName, listener) {
document.removeEventListener(eventName, listener, true);
},
getEventTarget : function(event) {
return event.target;
},
mousemove : "mousemove",
mouseup : "mouseup",
play:function(){},
stop:function(){}
};
} else {
browser = {
getX : function(event) {
return window.event.clientX + document.documentElement.scrollLeft
+ document.body.scrollLeft;
},
getY : function(event) {
return window.event.clientY + document.documentElement.scrollTop
+ document.body.scrollTop;
},
preventDefault : function(event) {
window.event.cancelBubble = true;
window.event.returnValue = false;
},
addEventListener : function(eventName, listener) {
document.attachEvent(eventName, listener);
},
removeEventListener : function(eventName, listener) {
document.detachEvent(eventName, listener);
},
getEventTarget : function(event) {
return window.event.srcElement;
},
mousemove : "onmousemove",
mouseup : "onmouseup",
play:function(){},
stop:function(){}
};
}
var dragging = false;
function handleDragStart(event) {
dragging = true;
var target = browser.getEventTarget(event);
var startX = browser.getX(event);
var startY = browser.getY(event);
var targetX = parseInt(target.style.left, 10);
var targetY = parseInt(target.style.top, 10);
target.style.zIndex = ++zIndex;
function handleMove(event) {
var mouseX = browser.getX(event);
var mouseY = browser.getY(event);
target.style.left = (targetX + (mouseX - startX)) + "px";
target.style.top = (targetY + (mouseY - startY)) + "px";
browser.preventDefault(event);
}
function handleUp(event) {
browser.removeEventListener(browser.mousemove, handleMove);
browser.removeEventListener(browser.mouseup, handleUp);
dragging = false;
}
browser.addEventListener(browser.mousemove, handleMove);
browser.addEventListener(browser.mouseup, handleUp);
browser.preventDefault(event);
}
function wiggle(target) {
if (target.wiggling) {
return;
}
target.wiggling = true;
var changeFactor = 0.0;
var changeOffset = 4;
var targetX = parseInt(target.style.left, 10);
var targetY = parseInt(target.style.top, 10);
var width = target.width;
var height = target.height;
target.width = width * (1.0 + 2 * changeFactor) + 2 * changeOffset;
target.height = height * (1.0 + 2 * changeFactor) + 2 * changeOffset;
target.style.left = (targetX - (width * changeFactor) - changeOffset) + "px";
target.style.top = (targetY - (height * changeFactor) - changeOffset) + "px";
setTimeout(function() {
target.width = width;
target.height = height;
target.style.left = targetX + "px";
target.style.top = targetY + "px";
target.wiggling = false;
}, 200);
}
function getPieces() {
var pieces = [];
var imgs = document.getElementsByTagName("img");
for (var i=0; i<imgs.length; i++) {
if (imgs[i].className == "piece") {
pieces.push(imgs[i]);
}
}
return pieces;
}
function wiggleAll() {
var pieces = getPieces();
for (var i=0; i<pieces.length; i++) {
var piece = pieces[i];
wiggle(piece);
}
}
function handleMouseOver(o, s) {
if (!dragging) {
wiggle(o);
}
}
function init() {
if (documentLoaded) {
var pieces = getPieces();
var y = 200;
var x = 300;
for(i in pieces) {
var piece = pieces[i];
piece.style.left = x + "px";
piece.style.top = y + "px";
x += piece.width;
}
// document.getElementById('loading').style.display='none';
wiggleAll();
}
}