var UNDEF_GIF="undefined.gif";
var UNDEF_IMG=new Image();
var spriteArray=new Array();
var spriteCnt=0;
var spriteFlags=Array();

UNDEF_IMG.src=UNDEF_GIF;

var	pxTop  = 'posTop';
var	pxLeft = 'posLeft';
var	oton = 'parentElement';

	pxTop  = 'top';
	pxLeft = 'left';
if(!D)D = document;
if(!WIN) WIN = window;
if(D.all){
	if(!DA) DA = D.all;
	if(!DGI)DGI = new Function("return WIN.document.all[arguments[0]]");
	if(!DGT)DGT = new Function("return WIN.document.all.tags(arguments[0])");
	if(D.getElementById)
		DG = D.getElementById;
	if((navigator.userAgent+'').match(/opera/i))DA=false;

}else
if(D.getElementById){
	if(!DG) DG = D.getElementById;
	if(!DGI)DGI = new Function("return WIN.document.getElementById(arguments[0])");
	if(!DGT)DGT = new Function("return WIN.document.getElementsByTagName(arguments[0])");
	pxTop  = 'top';
	pxLeft = 'left';

	oton = 'parentNode';
} //

function Sprite(){
	this.x=0;
	 this.lastX=0;
	this.y=0;
	 this.lastY=0;
	this.z=0;
	 this.lastZ=0;
	this.rotate=0;
	this.flipV=false;
	this.flipH=false;
	this.opacity=100; // 0 ` 100
	 this.getOpacity = function(){return this.opacity;}
	this.visible=false;
	this.alive=1;
	this.width=0;
	this.height=0;


		 this.moveTo	 = function(xx,yy){
			with(this){
				lastX = x;
				lastY = y;
				x = xx;
				y = yy;
				moved=true;
			}
		 }
		 this.moveBy	 = function(xx,yy){
			if(xx == 0 || yy == 0)return;
			this.moveTo(this.x + x,this.y + y);
		 } 
		 this.moved		 = false;

		this.setVisibility= function(v){
			if(this.visible == v)return;
			this.visible = v;
			this.vChanged = true;
		} 
		 this.vChanged	  = false;
		this.setZ = function(zz){
			if(this.z==zz)return;
			this.z = zz;
			this.zChanged = true;
		}
		 this.zChanged	  = false;
		this.setSize	 = function(ww,hh){
			if(this.width==ww && this.height==hh)return;
			 this.width=ww;
			 this.height=hh;
			this.resized = true;
		}
		 this.resized	  = false;
		this.setFlipV	 = function(f){
			if(this.flipV == f)return;
			 this.flipV = f;
			fChanged = true;
		}
		this.setFlipH	 = function(f){
			if(this.flipH == f)return;
			 this.flipH = f;
			fChanged = true;
		}
		 this.fChanged	  = false;
		this.setOpacity	 = function(o){
			if(this.opacity == o)return;
			if(o < 0 || o > 100)return;
			 this.opacity = o;
			this.oChanged = true;
		}
		 this.oChanged = false;

		this.setImage	 = function(src,ww,hh,f){
			if(f == true){this.image = "";}
			if(this.imageSrc == src )return;
			this.imageSrc = src;
			this.iChanged = true;
			if(ww > 0 && hh > 0)this.setSize(ww,hh);
		}
		 this.iChanged	  = false;

		this.setHTML	 = function(html){
			if(this.html==html)return;
				this.html = html;
			this.hChanged = true;
		}
		 this.hChanged	  = false;

	 this.update		 = function(){
		with(this){
			var bs = body.style;
			if(vChanged){
				bs.visibility = (visible) ? "visible" : "hidden";
				vChanged = false;
			}
			if(!visible)return;
			if(iChanged){
				if(objType == 0){
					this.imgTag.src = IMAGEBASEDIR + this.imageSrc;
				}else{
				  body.innerHTML='<IMG src="' + IMAGEBASEDIR + imageSrc + '" style="WIDTH:100%;HEIGHT:100%;BORDER:NONE;" onerror="this.src=UNDEF_IMG.src">';	
				  this.objType = 0;
				  this.imgTag = body.firstChild;
				  this.html = body.innerHTML;
				}
			 iChanged = false;
			}
			if(hChanged){
				imageSrc = null;
				imgTag = null;
				objType = 1;
				body.innerHTML=html;
			 hChanged = false;
			}
			if(moved || resized){
				var vw = SCREEN_W  / VSCREEN_W,vh=SCREEN_H  / VSCREEN_H;
			 if(moved){
				bs[pxLeft] = vw * x;
	 			bs[pxTop]  = vh * y;
				moved=false;
			 }
			 if(resized){
				bs.width  = vw * width;
				bs.height = vh * height;
				resized = false;
			 }
			}
			if(zChanged){
				bs.zIndex = z;
				zChanged = false;
			}
			var bf = body.filters;
			if(oChanged){
				if(DA){
					var ah = bf["alpha"]
					if(opacity >= 100){
						ah.enabled = false;
						opacity=100;
						body.filters["alpha"].opacity = opacity;
						return;
					}else
						if(!ah.enabled)ah.enabled = true;
						body.filters["alpha"].opacity = opacity;
				}else{
					var o = opacity / 100;
						bs.MozOpacity = o;
						bs.opacity = o;
				}
			 oChanged = false;
			}
			if(fChanged){
			 if(DA){
				bf["flipV"].enabled = flipV;
				bf["flipH"].enabled = flipH;
			 }
				fChanged = false;
			}
		}
	 }

	 this.kill = function(){
				 with(this){
					setFlipV(false);
					setFlipH(false);
					setOpacity(100);
					imgTag=null;
					setVisibility(false);
					update();
					objType=-1;
					this.html="";
					body.alive=-1;
					alive=-1;
					return -1;
				 }
	 }
	 this.reset = function(){
				 with(this){
					setZPosition(1);
					moveTo(0,0);
					setFlipV(false);
					setFlipV(false);
					setOpacity(100);
					update();
					setVisibility(false);
					this.html="";
					body.innerHTML="";
					imageSrc="";
					imgTag=null;
					objType=-1;
					return 0;
				 }
	 }
	this.draw = function(){this.update();};

	this.body=getSpriteBody();
	this.body.alive="1";
	this.imageSrc = UNDEF_GIF;
	this.imgTag = this.body.firstChild;

	this.name = this.body.id;//(name) ? name : "sprite"+parseInt(Math.random()*10000);
	this.objType = -1;//IMAGE = 0  HTML = 1 vector polygon circle
	this.html = this.body.innerHTML;
	
	this.parent = null;
	this.child = null;
	

} //


function createSpriteBody(){
		var tmp='';
		for(var i = 0 ; i< SPRITES_MAX ; i++ )
			tmp+='<span class="Sprite" id="sprBody'+i+'"></span>';
		WIN.document.write(tmp);

		for(var i = 0 ; i< SPRITES_MAX ; i++ ){
					spriteArray[i] = DGI("sprBody" + i);
					spriteArray[i].alive="-1";
		}

}

function getSpriteBody(){
		var found=false;
		for(var i=0 ; i < SPRITES_MAX ; i++){
		  spriteCnt = (spriteCnt + 1) % SPRITES_MAX;
		  if( parseInt(spriteArray[spriteCnt].alive) != 1 ){
				found=true;
				return spriteArray[spriteCnt];
				break;
			}
		}
		alert("SPRITE OVER!");
		return spriteArray[0];
} //


function DummySprite(){
	var T=this;
	T.x=0;T.lastX=0;
	T.y=0;T.lastY=0;
	T.z=0;T.lastZ=0;
	T.rotate=0;T.flipV=false;
	T.flipH=false;T.opacity=100;T.getOpacity=function(){return 100;}
	T.visible=false;
	T.alive=1;
	T.width=0;
	T.height=0;
	T.func = function(){return -1;}
	T.moveTo = T.func;
	T.moveBy = T.func;
	T.setVisibility= T.func;
	T.setZ = T.func;
	T.setSize = T.func;
	T.setFlipV = T.func;
	T.setFlipH = T.func;
		T.setOpacity = T.func;
		T.setImage = T.func;
		T.setHTML = T.func;

	 T.update = T.func;

	 T.kill = T.func;
	 T.reset = T.func;
	T.draw = T.func;
	T.body="";
	T.imageSrc = UNDEF_GIF;
	T.name = "dummy";
	T.objType = -1;//IMAGE = 0  HTML = 1 vector polygon circle
	T.html = "";
	T.parent = null;
	T.child = null;
} //

DummySprite.instance = new DummySprite();

