var canvas; var delta = [0,0]; var stage = [window.screenX,window.screenY,window.innerWidth,window.innerHeight]; getBrowserDimensions(); var isRunning = false; var isMouseDown = false; var worldAABB; var world; var iterations = 1; var timeStep = 1/25; var walls = new Array(); var wall_thickness = 200; var wallsSetted = false; var mouseJoint; var mouseX = 0; var mouseY = 0; var mouseOnClick = new Array(); var timer = 0; var elements = new Array(); var bodies = new Array(); var properties = new Array(); var gWebSearch; var imFeelingLuckyMode = false; var resultBodies = new Array(); var orientation = { x: 0, y: 1 }; init(); if (location.search != "") { var params = location.search.substr(1).split("&") for (var i = 0; i < params.length; i++) { var param = params[i].split("="); if (param[0] == "q") { document.getElementById('q').value = param[1]; run(); break; } } } // GOOGLE API function onLoad() { gWebSearch = new GwebSearch(); gWebSearch.setResultSetSize(GSearch.SMALL_RESULTSET); gWebSearch.setSearchCompleteCallback(null, onWebSearch); if (document.getElementById('q').value != '') search(); } function onWebSearch() { if(imFeelingLuckyMode) { location.href = gWebSearch.results[0].unescapedUrl; return; } for (var i = 0; i < gWebSearch.results.length; i++) addResult(gWebSearch.results[i]); } // function init() { canvas = document.getElementById('canvas'); document.onmousedown = onDocumentMouseDown; document.onmouseup = onDocumentMouseUp; document.onmousemove = onDocumentMouseMove; document.ondblclick = onDocumentDoubleClick; document.onkeypress = onDocumentKeyPress; document.addEventListener('touchstart', onDocumentTouchStart, false); document.addEventListener('touchmove', onDocumentTouchMove, false); document.addEventListener('touchend', onDocumentTouchEnd, false); window.addEventListener( 'deviceorientation', onWindowDeviceOrientation, false ); // init box2d worldAABB = new b2AABB(); worldAABB.minVertex.Set(-200, -200); worldAABB.maxVertex.Set( screen.width + 200, screen.height + 200); world = new b2World(worldAABB, new b2Vec2(0, 0), true); // walls setWalls(); // Get box2d elements elements = getElementsByClass("box2d"); for (i = 0; i < elements.length; i++) { var element = elements[i]; properties[i] = findPos(element); properties[i][2] = element.offsetWidth; properties[i][3] = element.offsetHeight; } for (i = 0; i < elements.length; i++) { var element = elements[i]; element.style.position = 'absolute'; element.style.left = properties[i][0] + 'px'; element.style.top = properties[i][1] + 'px'; // element.style.backgroundColor = '#ffff00'; element.onmousedown = onElementMouseDown; element.onmouseup = onElementMouseUp; element.onclick = onElementClick; bodies[i] = createBox(world, properties[i][0] + (properties[i][2] >> 1), properties[i][1] + (properties[i][3] >> 1), properties[i][2] / 2, properties[i][3] / 2, false); } } function run() { isRunning = true; setInterval(loop, 25); } // function onDocumentMouseDown() { isMouseDown = true; return false; } function onDocumentMouseUp() { isMouseDown = false; return false; } function onDocumentMouseMove() { if (!isRunning) run(); mouseX = window.event.clientX; mouseY = window.event.clientY; } function onDocumentDoubleClick() { reset(); } function onDocumentKeyPress(event) { if (event.charCode == 13) search(); } function onDocumentTouchStart( event ) { if(event.touches.length == 1) { event.preventDefault(); if (!isRunning) run(); // Faking double click for touch devices var now = new Date().getTime(); if (now - timeOfLastTouch < 250) { reset(); return; } timeOfLastTouch = now; mouseX = event.touches[0].pageX; mouseY = event.touches[0].pageY; isMouseDown = true; } } function onDocumentTouchMove( event ) { if(event.touches.length == 1) { event.preventDefault(); mouseX = event.touches[0].pageX; mouseY = event.touches[0].pageY; } } function onDocumentTouchEnd( event ) { if(event.touches.length == 0) { event.preventDefault(); isMouseDown = false; } } function onWindowDeviceOrientation( event ) { if ( event.beta ) { orientation.x = Math.sin( event.gamma * Math.PI / 180 ); orientation.y = Math.sin( ( Math.PI / 4 ) + event.beta * Math.PI / 180 ); } } // function onElementMouseDown() { mouseOnClick[0] = window.event.clientX; mouseOnClick[1] = window.event.clientY; return false; } function onElementMouseUp() { return false; } function onElementClick() { var range = 5; if (mouseOnClick[0] > window.event.clientX + range || mouseOnClick[0] < window.event.clientX - range && mouseOnClick[1] > window.event.clientY + range || mouseOnClick[1] < window.event.clientY - range) return false; if (this == document.getElementById('btnG')) search(); if (this == document.getElementById('btnI')) imFeelingLucky(); if (this == document.getElementById('q')) document.f.q.focus(); } // API STUFF function search() { if (!isRunning) run(); onDocumentDoubleClick(); // clean gWebSearch.execute(document.getElementById('q').value); return false; } function imFeelingLucky() { imFeelingLuckyMode = true; gWebSearch.execute(document.getElementById('q').value); return false; } function addResult(data) { var element = document.createElement('div'); element.innerHTML = '