var pressed = ""
var newkey = ""
var curpos = ""
var sprX = 64
var sprY = 64
var movX = 4
var movY = 4
var mapStartX = 0
var mapStartY = 0
var MapXOffset = 0
var MapYOffset = 0
var totalXShift = 0
var totalYShift = 0
var cwidth = 32
var visible = 14
var fullareaX
var fullareaY
curpos = "u1"

gras1 = new Image();
gras1.src = "dhtml/gras1.gif";
tregras = new Image();
tregras.src = "dhtml/tre-gras.gif";
mtngras = new Image();
mtngras.src = "dhtml/mtn-gras.gif";
water1 = new Image();
water1.src = "dhtml/water1.gif";
pekgras = new Image();
pekgras.src = "dhtml/pek-gras.gif";
sand1 = new Image();
sand1.src = "dhtml/sand1.gif";

gu1 = new Image() ;
gu1.src = "dhtml/gu-1.gif"
gu2 = new Image() ;
gu2.src = "dhtml/gu-2.gif"
gd1 = new Image() ;
gd1.src = "dhtml/gd-1.gif"
gd2 = new Image() ;
gd2.src = "dhtml/gd-2.gif"
gr1 = new Image() ;
gr1.src = "dhtml/gr-1.gif"
gr2 = new Image() ;
gr2.src = "dhtml/gr-2.gif"
gl1 = new Image() ;
gl1.src = "dhtml/gl-1.gif"
gl2 = new Image() ;
gl2.src = "dhtml/gl-2.gif"
blankimg = new Image();
blankimg.src = "dhtml/blank.gif"

function KeyPressed() {
	switch (window.event.keyCode) {
		case 38: // up arrow
			if (curpos == "u1") {
				girl.src = gu2.src
				curpos = "u2"
			} else {
				girl.src = gu1.src
				curpos = "u1"
			}
			if (sprY - movY > 0) {
				var CheckY = parseInt(((sprY-movX)/cwidth) + "")
				var CheckX = parseInt((sprX/cwidth) + "")
				CheckY += MapYOffset
				CheckX += MapXOffset
				if (map01Array[CheckY][CheckX] < 5) {
					CheckX = parseInt(((sprX+(cwidth-1))/cwidth) + "")
					CheckX += MapXOffset
					if (map01Array[CheckY][CheckX] < 5) {
						sprY -= movY
					}
				}
			} else {
				sprY = 0
			}
			break
		case 40: // down arrow
			if (curpos == "d1") {
				girl.src = gd2.src
				curpos = "d2"
			} else {
				girl.src = gd1.src
				curpos = "d1"
			}
			if (sprY < ((visible-1)*cwidth)) {
				var CheckY = parseInt(((sprY+cwidth+2)/cwidth) + "")
				var CheckX = parseInt((sprX/cwidth) + "")
				CheckY += MapYOffset
				CheckX += MapXOffset
				if (map01Array[CheckY][CheckX] < 5) {
					CheckX = parseInt(((sprX+(cwidth-1))/cwidth) + "")
					CheckX += MapXOffset
					if (map01Array[CheckY][CheckX] < 5) {
						sprY += movY
					}
				}
			}
			break
		case 37: // left arrow
			if (curpos == "l1") {
				girl.src = gl2.src
				curpos = "l2"
			} else {
				girl.src = gl1.src
				curpos = "l1"
			}
			if (sprX - movX > 0) {
				var CheckX = parseInt(((sprX-movX)/cwidth) + "")
				var CheckY = parseInt((sprY/cwidth) + "")
				CheckY += MapYOffset
				CheckX += MapXOffset
				if (map01Array[CheckY][CheckX] < 5) {
					CheckY = parseInt(((sprY+(cwidth-1))/cwidth) + "")
					CheckY += MapYOffset
					if (map01Array[CheckY][CheckX] < 5) {
						sprX -= movX
					}
				}
			} else {
				sprX = 0
			}
			break
		case 39: //right arrow
			if (curpos == "r1") {
				girl.src = gr2.src
				curpos = "r2"
			} else {
				girl.src = gr1.src
				curpos = "r1"
			}
			if (sprX < ((visible-1)*cwidth)) {
				var CheckX = parseInt(((sprX+cwidth+2)/cwidth) + "")
				var CheckY = parseInt((sprY/cwidth) + "")
				CheckY += MapYOffset
				CheckX += MapXOffset
				if (map01Array[CheckY][CheckX] < 5) {
					CheckY = parseInt(((sprY+(cwidth-1))/cwidth) + "")
					CheckY += MapYOffset
					if (map01Array[CheckY][CheckX] < 5) {
						sprX += movX
					}
				}
			}
			break
		case 74:
			MoveMap(1)
			break
		case 73:
			MoveMap(3)
			break
		case 75:
			MoveMap(4)
			break
		case 76:
			MoveMap(2)
			break
	}
	newkey = window.event.keyCode + ""
	if (pressed.length > 0) {
		if (pressed.indexOf(newkey) < 0) {
			pressed = pressed + " " + newkey
		}
	} else {
		pressed = newkey
	}
	pressed = Replace(pressed, "  ", " ")
	girl.style.top = sprY
	girl.style.left = sprX
	//window.status = pressed
}

function DrawMap(StartX, StartY) {
	var i,ii
	for(i=0;i<(MapMaxY+14);i++) {
		for(ii=0;ii<(MapMaxX+14);ii++) {
			switch (map01Array[i+StartY][ii+StartX]) {
				case 1:
					document.getElementById(ii+"-"+i).src = gras1.src
					break
				case 2:
					document.getElementById(ii+"-"+i).src = tregras.src
					break
				case 3:
					document.getElementById(ii+"-"+i).src = mtngras.src
					break
				case 4:
					document.getElementById(ii+"-"+i).src = sand1.src
					break
				case 5:
					document.getElementById(ii+"-"+i).src = pekgras.src
					break
				case 6:
					document.getElementById(ii+"-"+i).src = water1.src
					break
			}
		}
	}
}

function MakeMap() {
	var i,ii,nEle,left,top,EleNam,name,i2,ii2,div1,div2,imax, iimax
	//div1 = document.createElement('<div ID="gamearea" style="position:absolute;left=0;top=0;height=448;width=448;overflow=hidden;">')
	nEle = '<div ID="gamearea" style="position:absolute;left=0;top=0;height=' + (visible * cwidth) + ';width=' + (visible * cwidth) + ';overflow=hidden;">'
	div1 = document.createElement(nEle)
	div2 = document.createElement('<div ID="maparea" style="position:absolute;left=0;top=0;">')
	div1.appendChild(div2)
	if ((MapMaxX+14) < 512) { iimax = MapMaxX+14; }
	if ((MapMaxY+14) < 512) { imax = MapMaxY+14; }
	fullareaX = MapMaxX+14
	fullareaY = MapMaxY+14
	for(i=0;i<imax;i++) {
		for(ii=0;ii<iimax;ii++) {
			left = ii*cwidth
			top = i*cwidth
			i2 = i 
			ii2 = ii
			name = ii2+"-"+i2
			EleName = '<img src="dhtml/blank.gif" name="'+ name +'" width="' + cwidth + '" height="' + cwidth + '" style="position:absolute;left='+left+';top='+top+';">'
			nEle = document.createElement(EleName)
			nEle.style.zIndex = 0;
			div2.appendChild(nEle)
		}
	}
	document.body.appendChild(div1)
	nEle = document.createElement('<img src="dhtml/gd-1.gif" width="' + cwidth + '" height="' + cwidth + '" name="girl" style="zorder:10;position:absolute;top:'+sprY+';left:'+sprX+';">')
	document.body.appendChild(nEle)
	girl.style.zIndex = 10
	DrawMap(MapXOffset,MapYOffset)
}

function MoveMap(Direction) {
	var i,ii,shiftx,shifty,newx,newy;
	switch (Direction) {
		case 1: //left
			shiftx = -4;
			break
		case 2: //right
			shiftx = 4;
			break
		case 3: //up
			shifty = -4;
			break
		case 4: //down
			shifty = 4;
			break
	}
	curitem = document.getElementById("maparea")
	oldx = parseInt(curitem.style.left)
	oldy = parseInt(curitem.style.top)
	newx = oldx + shiftx
	newy = oldy + shifty
	if (Direction < 3) {
		totalXShift += shiftx
		window.status = "oldx:" + oldx + " newx:" + newx
		if (newx <= 0 && newx >= (0-(MapMaxX * cwidth))) {
			curitem.style.left = newx
		}
	}
	if (Direction > 2) {
		totalYShift += shifty
		if (newy <= 0 && newy >= (0-(MapMaxY * cwidth))) {
			curitem.style.top = newy
		}
	}
}


function KeyLetGo() {
	newkey = window.event.keyCode + ""
	var pressed1 = pressed
	pressed = ""
	pressed1 = Replace(pressed1, newkey, "")
	pressed1 = Replace(pressed1, "  ", " ")
	pressed1 = Trim(pressed1)
	pressed = pressed1
}