function Sprite(image,w,h,celsPerRow,regX,regY,imageW,imageH){this.x=0;this.y=0;this.w=w;this.h=h;this.celsPerRow=celsPerRow;this.cel=0;this.regX=regX;this.regY=regY;this.scaleX=1.0;this.scaleY=1.0;this.div=document.createElement("div");with(this.div.style){width=w+"px";height=h+"px";position="absolute";left=(-regX)+"px";top=(-regY)+"px";overflow="hidden"}this.img=document.createElement("img");this.img.sprite=this;if(imageW==0||imageH==0){this.img.onload=function(){this.sprite.imgW=this.width;this.sprite.imgH=this.height}}else{this.imgW=imageW;this.imgH=imageH}this.img.setAttribute("src",image);with(this.img.style){position="absolute";left="0px";top="0px";if(imageW&&imageH){width=imageW+"px";height=imageH+"px"}}this.div.appendChild(this.img)};Sprite.prototype.moveTo=function(x,y){this.x=x;this.y=y;this.div.style.left=Math.round(x-Math.round(this.regX*this.scaleX))+"px";this.div.style.top=Math.round(y-Math.round(this.regY*this.scaleY))+"px"};Sprite.prototype.setCel=function(cel){if(cel!=this.cel){var row;var col;if(this.celsPerRow>0){row=Math.floor(cel/this.celsPerRow);col=cel%this.celsPerRow}else{row=0;col=cel}this.cel=cel;this.img.style.left=Math.round(-this.w*col*this.scaleX)+"px";this.img.style.top=Math.round(-this.h*row*this.scaleY)+"px"}};Sprite.prototype.setScale=function(scaleX,scaleY){if(!this.imgW||!this.imgH){return}this.scaleX=scaleX;this.scaleY=scaleY;this.div.style.width=Math.round(this.w*scaleX)+"px";this.div.style.height=Math.round(this.h*scaleY)+"px";this.moveTo(this.x,this.y);this.img.style.width=Math.round(this.imgW*scaleX)+"px";this.img.style.height=Math.round(this.imgH*scaleY)+"px";var currentCel=this.cel;this.cel=-1;this.setCel(currentCel)};Sprite.prototype.attach=function(){document.body.appendChild(this.div)};Sprite.prototype.detach=function(){if(this.div.parentNode==document.body){document.body.removeChild(this.div)}};Sprite.prototype.setVisible=function(v){this.div.style.visibility=v?'visible':'hidden'};Sprite.prototype.isVisible=function(){return(this.div.style.visibility?this.div.style.visibility=='visible':true)};Sprite.prototype.destroy=function(){this.detach();this.div.removeChild(this.img);this.img.sprite=null;this.div=null;this.img=null};