var d=document;
function dObj(idx){return d.getElementById(idx)}
function dAEv(a,b){
	a=a.split(',');
	for(i in a)document.attachEvent('on'+a[i],b);
}
function dDEv(a,b){
	a=a.split(',');
	for(i in a)document.detachEvent('on'+a[i],b);
}
function obj(idx){
	var t=this;
	t.path=(typeof(idx)=='string')?dObj(idx):idx;
	var p=t.path;
	t.w=p.offsetWidth;
	t.h=p.offsetHeight;
	t.x=0;
	t.y=0;
	while(p.offsetParent!=null){
		if(p.currentStyle.position=='absolute'){
			t.x+=parseInt(p.currentStyle.left);
			t.y+=parseInt(p.currentStyle.top);
			break;
		}
		t.x+=p.offsetLeft-p.scrollLeft;
		t.y+=p.offsetTop-p.scrollTop;
		p=p.offsetParent;
	}
}
function objArray(objx){
	var output=new Array();
	if(objx!=null){
		/*if(objx.length!=null){
			if(objx.length>0) for(x=0;x<objx.length;x++)output[x]=objx[x];
			else output[0]=objx;
		}
		else output[0]=objx;
	}*/
		try{
			if(objx.id!=null){
				throw 1;
			}
			else{
				throw 0;
			}
		}
		catch(e){
			if(e==1){
				output[0]=objx;
			}
			else{
				if(objx.length>0) for(x=0;x<objx.length;x++)output[x]=objx[x];
				else output[0]=objx;
			}
		}
	}
	return output;
}
obj.prototype.setXY=function(x,y){
	if(this.path.parentNode!=d.body)d.body.appendChild(this.path);
	var p=this.path.style;
	p.position='absolute';
	p.left=x+'px';
	p.top=y+'px';
};
obj.prototype.alignObject=function(idxp,c1,c2){
	idx=new obj(idxp);
	idx.setXY(0,0);//preping
	idx=new obj(idxp);
	var cx=[,[0,0],[1,0],[1,1],[0,1]],t=this;
	c1=cx[c1];c2=cx[c2];
	var x=t.x+(c1[0]?t.w:0)-(c2[0]?idx.w-2:0);
	var y=t.y+(c1[1]?t.h:0)-(c2[1]?idx.h-2:0);
	var wChk=((x<0&&c2[0])||(x+idx.w>d.body.offsetWidth&&!c2[0]));
	var hChk=((y<0&&c2[1])||(y+idx.h>d.body.offsetHeight&&!c2[1]));
	if(wChk)x=t.x+(c1[0]?0:t.w)-(c2[0]?0:idx.w-2);
	if(hChk)y=t.y+(c1[1]?0:t.h)-(c2[1]?0:idx.h-2);
	idx.setXY(x,y);
};
function nodePath(obj,idxp){
	var dbx=idxp.split(/\b/gi),i=0;
	if(dbx[i].indexOf('*')>-1&&obj.id==dbx[i+1])i+=2;
	for(i;i<dbx.length;i+=2){
		if(dbx[i].match(/\./g)){
			obj=obj.parentNode;
			while(obj.id!=dbx[i+1])obj=obj.parentNode;
		}
		if(dbx[i].match(/\\/g)){
			obj=obj.getElementsByTagName('*')[dbx[i+1]];
			if(typeof(obj.style)=='undefined')obj=obj[0];
		}
	}
	return obj;
}
function styleParser(str){
	var obx=new Object();
	var str=str.split(';');
	for(i=0;i<str.length;i++){
		str[i]=str[i].split(':');
		obx[str[i][0]]=str[i][1];
	}
	return obx;
}
function mouseX(e){
	return e.clientX+d.documentElement.scrollLeft+d.body.scrollLeft;
}
function mouseY(e){
	return e.clientY+d.documentElement.scrollTop+d.body.scrollTop;
}
function mouseXY(e){
	var p=e.srcElement;
	var x=e.clientX;
	var y=e.clientY;
	while(p.offsetParent!=null){
		if(p.scrollLeft!=null)x+=p.scrollLeft;
		if(p.scrollTop!=null)y+=p.scrollTop;
		p=p.offsetParent;
	}
	return [x,y];
}
Array.prototype.removeIndex=function(x){
	var t=this,a;
	for(a=x;a<t.length-1;a++)t[a]=t[a+1];
	t.length--;
};
Array.prototype.addValue=function(x){
	var t=this;
	t[t.length]=x;
};
Array.prototype.valExists=function(x){
	var sw=-1,t=this,a;
	for(a=0;a<t.length;a++){
		if(t[a]==x){
			sw=a;
			break;
		}
	}
	return sw;
};
Array.prototype.removeValue=function(x){
	var t=this,sw=0,a;
	for(a=0;a<t.length;a++){
		if(sw)t[a-1]=t[a];
		if(t[a]==x)sw=1;
	}
	if(sw)t.length--;
};