﻿//Copyright (c) 2013, Playful Invention Company.

//Permission is hereby granted, free of charge, to any person obtaining a copy
//of this software and associated documentation files (the "Software"), to deal
//in the Software without restriction, including without limitation the rights
//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//copies of the Software, and to permit persons to whom the Software is
//furnished to do so, subject to the following conditions:

//The above copyright notice and this permission notice shall be included in
//all copies or substantial portions of the Software.

//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//THE SOFTWARE.

// -----

// GridPaint has been kept extremely minimal as an explicit design choice.
// If you want to add features please make a fork with a different name.
// Thanks in advance

var onStart, onMove, onEnd;
var zoom;

function eventInit(){
	window.onmousedown = evMousedown;	
	frame.onmousemove = evMousemove;	
	frame.onmouseup = evMouseup;
	var wsize = window.innerWidth;
	var wtop = 55;
	if (wsize <= 480) {
		zoom = 0.353;
		wtop = 150;
	} else if (wsize <= 768) {
		zoom = 0.6;
		wtop = 90;
	} else if (wsize <= 1024) {
		zoom = 0.95;
		wtop = 60;
	} else {
		zoom = 1.10;
		wtop = 55;	
	}
	document.getElementById("canvas").style.zoom = zoom;
	document.getElementById("canvas").style.top = wtop + "px";
}

function evMousedown(e){
	e.preventDefault(); 
	var x=localx(e.clientX), y=localy(e.clientY);
	onStart(x,y);
}


function evMousemove(e){
	e.preventDefault(); 
	if(!onMove) return;
	var x=localx(e.clientX), y=localy(e.clientY);
	onMove(x,y);
}

function evMouseup(e){
	e.preventDefault(); 
	if(!onEnd) return;
	onEnd();
}

function localx(gx){return (gx/zoom-frame.getBoundingClientRect().left);}
function localy(gy){return (gy/zoom-frame.getBoundingClientRect().top);}


@@ -1315,16 +1315,30 @@
 ar zoom;
+%0Avar shiftTop;
 %0A%0Afuncti
@@ -1553,16 +1553,34 @@
  = 150;%0A
+%09%09shiftTop = -85;%0A
 %09%7D else 
@@ -1626,16 +1626,34 @@
 p = 90;%0A
+%09%09shiftTop = -40;%0A
 %09%7D else 
@@ -1701,16 +1701,32 @@
 p = 60;%0A
+%09%09shiftTop = 0;%0A
 %09%7D else 
@@ -1756,16 +1756,32 @@
  = 55;%09%0A
+%09%09shiftTop = 0;%0A
 %09%7D%0A%09docu
@@ -1829,16 +1829,388 @@
 = zoom;%0A
+%09var useragent = navigator.userAgent.toLowerCase();%0A%09if (useragent.indexOf('chrome') == -1) %7B%0A%09%09document.getElementById(%22canvas%22).style.MozTransform = %22scale(%22+zoom+%22)%22;%0A%09%09document.getElementById(%22canvas%22).style.MozTransformOrigin = %220 0%22;%0A%09%09document.getElementById(%22canvas%22).style.width = %221024px%22;%0A%09%09document.getElementById(%22canvas%22).style.height = %22748px%22;%09%0A%09%7D else %7B%0A%09
 %09documen
@@ -2261,16 +2261,35 @@
 + %22px%22;%0A
+%09%09shiftTop = 0;%0A%09%7D%0A
 %7D%0A%0Afunct
@@ -2700,16 +2700,18 @@
 aly(gy)%7B
+%0A%09
 return (
@@ -2713,24 +2713,33 @@
 urn (gy/zoom
++shiftTop
 -frame.getBo
@@ -2762,11 +2762,12 @@
 ().top);
+%0A
 %7D%0A%0A

Fix Gridpaint zoom issue on Firefox OS