




function isnewvele(ele) {
	if(isempty(ele)) return false;
	else if(!isdefined(ele.eletype)) return false;
	else if(ele.eletype>=2) return true;
	return false;
}

function newvele(ele) {
	ele=newele(ele); if(!ele) return false;
	if(ele.eletype>=2) return ele;
	ele.eletype=2;

	ele.show=veleshow;
	ele.hide=velehide;
	ele.isvisible=veleisvisible;

	ele.getnextancestor=velegetnextancestor;
	ele.getabsx=velegetabsx;
	ele.getabsy=velegetabsy;
	
	ele.getx=velegetx;
	ele.gety=velegety;
	ele.setx=velesetx;
	ele.sety=velesety;
	
	ele.getw=velegetw;
	ele.geth=velegeth;
	ele.setw=velesetw;
	ele.seth=veleseth;
	
	ele.geta=velegeta;
	ele.seta=veleseta;
	
	ele.iidmove=-1;
	ele.mpaused=0;
	ele.mtype=0;
	ele.mbeginx=0;
	ele.mprevx=0;
	ele.mcurrentx=0;
	ele.mendx=0;
	ele.mstepx=0;
	ele.mratex=0;
	ele.mbeginy=0;
	ele.mprevy=0;
	ele.mcurrenty=0;
	ele.mendy=0;
	ele.mstepy=0;
	ele.mratey=0;
	ele.moncomplete=0;
	ele.move=velemove;
	ele.movenext=velemovenext;
	ele.pausemove=velepausemove;
	ele.resumemove=veleresumemove;
	ele.stopmove=velestopmove;
	
	ele.iidresize=-1;
	ele.rspaused=0;
	ele.rstype=0;
	ele.rsbeginw=0;
	ele.rsprevw=0;
	ele.rscurrentw=0;
	ele.rsendw=0;
	ele.rsstepw=0;
	ele.rsratew=0;
	ele.rsbeginh=0;
	ele.rsprevh=0;
	ele.rscurrenth=0;
	ele.rsendh=0;
	ele.rssteph=0;
	ele.rsrateh=0;
	ele.rsoncomplete=0;
	ele.resize=veleresize;
	ele.resizenext=veleresizenext;
	ele.pauseresize=velepauseresize;
	ele.resumeresize=veleresumeresize;
	ele.stopresize=velestopresize;

	ele.iidfade=-1;
	ele.fpaused=0;
	ele.ftype=0;
	ele.fbegina=0;
	ele.fpreva=0;
	ele.fcurrenta=0;
	ele.fenda=0;
	ele.fstepa=0;
	ele.fratea=0;
	ele.foncomplete=0;
	ele.fade=velefade;
	ele.fadenext=velefadenext;
	ele.pausefade=velepausefade;
	ele.resumefade=veleresumefade;
	ele.stopfade=velestopfade;

	ele.setfinger=velesetfinger;
	ele.fixdim=velefixdim;
	
	return ele;
}

function veleshow(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	ele.style.display="block";/*ele.style.display="";*/ ele.style.visibility="visible";
}
function velehide(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	ele.style.visibility="hidden"; ele.style.display="none";
}
function veleisvisible(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(ele.style.display=="none"||ele.style.visibility=="hidden") return false;
	else return true;
}

function velegetnextancestor(oele) {
	if(!oele) oele=this;
	var actualStyle;
	if(window.getComputedStyle) actualStyle=getComputedStyle(oele,null).position;
	else if(oele.currentStyle) actualStyle=oele.currentStyle.position;
	//fallback for browsers with low support - only reliable for inline styles
	else actualStyle=oele.style.position;
	//the offsetParent of a fixed position element is null so it will stop
	if(actualStyle=='absolute'||actualStyle=='fixed') return oele.offsetParent;
	return oele.parentNode;
}
function velegetabsx(oElement) {
	if(!oElement) oElement=this; else if(typeof(oElement)=='string') oElement=document.getElementById(oElement);
	if(typeof(oElement.offsetParent)!='undefined') {
		var originalElement=oElement;
		for(var posX=0;oElement;oElement=oElement.offsetParent) posX+=oElement.offsetLeft;
		if(!originalElement.parentNode||!originalElement.style||typeof(originalElement.scrollLeft)=='undefined') return posX;/*older browsers cannot check element scrolling*/
		oElement=velegetnextancestor(originalElement);
		while(oElement&&oElement!=document.body&&oElement!=document.documentElement) {
			posX-=oElement.scrollLeft;
			oElement=velegetnextancestor(oElement);
		}
		return posX;
	} else return oElement.x;
}
function velegetabsy(oElement) {
	if(!oElement) oElement=this; else if(typeof(oElement)=='string') oElement=document.getElementById(oElement);
	if(typeof(oElement.offsetParent)!='undefined') {
		var originalElement=oElement;
		for(var posY=0;oElement;oElement=oElement.offsetParent) posY+=oElement.offsetTop;
		if(!originalElement.parentNode||!originalElement.style||typeof(originalElement.scrollTop)=='undefined') return posY;/*older browsers cannot check element scrolling*/
		oElement=velegetnextancestor(originalElement);
		while(oElement&&oElement!=document.body&&oElement!=document.documentElement) {
			posY-=oElement.scrollTop;
			oElement=velegetnextancestor(oElement);
		}
		return posY;
	} else return oElement.y;
}
/*function geteleabsxv1(eleid) {
	var ele=document.getElementById(eleid);
	if (document.getBoxObjectFor) return document.getBoxObjectFor(ele).x;
	else return ele.getBoundingClientRect().left;
}
function geteleabsyv1(eleid) {
	var ele=document.getElementById(eleid);
	if (document.getBoxObjectFor) return document.getBoxObjectFor(ele).y;
	else return ele.getBoundingClientRect().top;
}
function geteleabsxv2(elemID) {
    var offsetTrail = document.getElementById(elemID);
    var offsetLeft = 0;
    while (offsetTrail) {
        offsetLeft += offsetTrail.offsetLeft;
        if (offsetTrail.scrollLeft) offsetLeft-=offsetTrail.scrollLeft;
        offsetTrail = offsetTrail.offsetParent;
    }
    if (navigator.userAgent.indexOf("Mac") != -1 && 
        typeof document.body.leftMargin != "undefined") {
        offsetLeft += document.body.leftMargin;
    }
    return offsetLeft;
}
function geteleabsyv2(elemID) {
    var offsetTrail = document.getElementById(elemID);
    var offsetTop = 0;
    while (offsetTrail) {
        offsetTop += offsetTrail.offsetTop;
        if (offsetTrail.scrollTop) offsetTop-=offsetTrail.scrollTop;
        offsetTrail = offsetTrail.offsetParent;
    }
    if (navigator.userAgent.indexOf("Mac") != -1 && 
        typeof document.body.leftMargin != "undefined") {
        offsetTop += document.body.topMargin;
    }
	return offsetTop;
}
function geteleabsxv3(eleid) {
	var oElement=document.getElementById(eleid);
	if( typeof( oElement.offsetParent ) != 'undefined' ) {
		var originalElement = oElement;
		for( var posX = 0; oElement; oElement = oElement.offsetParent ) {
			posX += oElement.offsetLeft;
			if( oElement != originalElement && oElement != document.body && oElement != document.documentElement ) { posX -= oElement.scrollLeft; }
		}
		return posX;
	} else { return oElement.x; }
}
function geteleabsyv3(eleid) {
	var oElement=document.getElementById(eleid);
	if( typeof( oElement.offsetParent ) != 'undefined' ) {
		var originalElement = oElement;
		for( var posY = 0; oElement; oElement = oElement.offsetParent ) {
			posY += oElement.offsetTop;
			if( oElement != originalElement && oElement != document.body && oElement != document.documentElement ) { posY -= oElement.scrollTop; }
		}
		return posY;
	} else { return oElement.y; }
}*/

function velegetx(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	return parseInt(ele.style.left);
}
function velegety(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	return parseInt(ele.style.top);
}
function velesetx(x,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(isNaN(x)) ele.style.left=x;
	else ele.style.left=Math.round(x)+'px';
}
function velesety(y,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(isNaN(y)) ele.style.top=y;
	else ele.style.top=Math.round(y)+'px';
}

function velegetw(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	return ele.offsetWidth;
}
function velegeth(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	return ele.offsetHeight;
}
function velesetw(w,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(isNaN(w)) ele.style.width=w;
	else if(w>=0) {
		ele.style.width=Math.round(w)+'px';
		if(isie()&&w==0) ele.style.visibility='hidden';
	}
}
function veleseth(h,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(isNaN(h)) ele.style.height=h;
	else if(h>=0) {
		ele.style.height=Math.round(h)+'px';
		if(isie()&&h==0) ele.style.visibility='hidden';
	}
}

function velegeta(ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(typeof(ele.style.filter)!='undefined') {
		if(typeof(ele.filters.alpha)=='undefined') ele.style.filter='alpha(opacity=100)';
		return +(ele.filters.alpha.opacity);
	} else if(typeof(ele.style.opacity)!='undefined') return ele.style.opacity*100;
	else if(typeof(ele.style.MozOpacity)!='undefined') return ele.style.MozOpacity*100;
}
function veleseta(alpha,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(alpha<0) return;
	if(typeof(ele.style.filter)!='undefined') {
		if(typeof(ele.filters.alpha)=='undefined') ele.style.filter='alpha(opacity='+alpha+')';
		else ele.filters.alpha.opacity=alpha;
	} else if(typeof(ele.style.opacity)!='undefined') ele.style.opacity=alpha/100;
	else if(typeof(ele.style.MozOpacity)!='undefined') ele.style.MozOpacity=alpha/100;
}

function velemove(mms,mt,sx,rx,bx,ex,sy,ry,by,ey,oncomplete) {
	var ele=this;
	ele.mtype=mt;
	ele.mbeginx=bx;
	ele.mendx=ex;
	if(sx=='at') {
		//ele.mtype==1?sx=1:sx=Math.abs(ele.mendx-ele.mbeginx)/17.33; // earlier version
		if(ele.mtype==1||ele.mtype==2) sx=1;
		//else sx=Math.abs(ele.mendx-ele.mbeginx)*30/100; // quick version
		else if(Math.abs(ele.mendx-ele.mbeginx)<=20) sx=Math.abs(ele.mendx-ele.mbeginx)*8.5/100;
		else if(Math.abs(ele.mendx-ele.mbeginx)<=30) sx=Math.abs(ele.mendx-ele.mbeginx)*8.0/100;
		else if(Math.abs(ele.mendx-ele.mbeginx)<=40) sx=Math.abs(ele.mendx-ele.mbeginx)*7.5/100;
		else if(Math.abs(ele.mendx-ele.mbeginx)<=50) sx=Math.abs(ele.mendx-ele.mbeginx)*7.0/100;
		else if(Math.abs(ele.mendx-ele.mbeginx)<=80) sx=Math.abs(ele.mendx-ele.mbeginx)*6.5/100;
		else if(Math.abs(ele.mendx-ele.mbeginx)<=100) sx=Math.abs(ele.mendx-ele.mbeginx)*6.1/100;
		else sx=Math.abs(ele.mendx-ele.mbeginx)*5.75/100;
	}
	ele.mstepx=sx;
	if(rx=='at') {
		//ele.mtype==1?rx=0:rx=0.05; // earlier version
		if(ele.mtype==1) { rx=0; }
		else if(ele.mtype==2) { rx=0.15; }
		else if(ele.mtype==3) { rx=0.05; /*rx=0.23;//quick version*/ }
	}
	ele.mratex=rx;
	ele.mbeginy=by;
	ele.mendy=ey;
	if(sy=='at') {
		//ele.mtype==1?sy=1:sy=Math.abs(ele.mendy-ele.mbeginy)/17.33; // earlier version
		if(ele.mtype==1||ele.mtype==2) sy=1;
		//else sy=Math.abs(ele.mendy-ele.mbeginy)*30/100; // quick version
		else if(Math.abs(ele.mendy-ele.mbeginy)<=20) sy=Math.abs(ele.mendy-ele.mbeginy)*8.5/100;
		else if(Math.abs(ele.mendy-ele.mbeginy)<=30) sy=Math.abs(ele.mendy-ele.mbeginy)*8.0/100;
		else if(Math.abs(ele.mendy-ele.mbeginy)<=40) sy=Math.abs(ele.mendy-ele.mbeginy)*7.5/100;
		else if(Math.abs(ele.mendy-ele.mbeginy)<=50) sy=Math.abs(ele.mendy-ele.mbeginy)*7.0/100;
		else if(Math.abs(ele.mendy-ele.mbeginy)<=80) sy=Math.abs(ele.mendy-ele.mbeginy)*6.5/100;
		else if(Math.abs(ele.mendy-ele.mbeginy)<=100) sy=Math.abs(ele.mendy-ele.mbeginy)*6.1/100;
		else sy=Math.abs(ele.mendy-ele.mbeginy)*5.75/100;
	}
	ele.mstepy=sy;
	if(ry=='at') {
		//ele.mtype==1?ry=0:ry=0.05; // earlier version
		if(ele.mtype==1) { ry=0; }
		else if(ele.mtype==2) { ry=0.15; }
		else if(ele.mtype==3) { ry=0.05; /*ry=0.23;//quick version*/ }
	}
	ele.mratey=ry;
	ele.mcurrentx=ele.mbeginx;
	ele.mcurrenty=ele.mbeginy;
	ele.setx(ele.mcurrentx);
	ele.sety(ele.mcurrenty);
	ele.mprevx=ele.getx();
	ele.mprevy=ele.gety();
	if(typeof(oncomplete)!='function') oncomplete=0; ele.moncomplete=oncomplete;
	//if(oncomplete&&oncomplete!=''&&oncomplete!=null) ele.moncomplete=oncomplete;
	ele.stopmove();
	if(mms=='at') mms=1;
//ele.iidmove=setInterval(function(){velemovenext(ele);},mms);
	ele.iidmove=setInterval(function(){ele.movenext();},mms);
}
function velemovenext() {
	var ele=this;
	if(ele.mpaused) return;
	var xl2r=true; if(ele.mbeginx>ele.mendx) xl2r=false;
	var yt2b=true; if(ele.mbeginy>ele.mendy) yt2b=false;
	if(ele.mtype==1) { // constant
		ele.mstepx+=ele.mratex;
		ele.mstepy+=ele.mratey;
	} else if(ele.mtype==2) { // accelerated
		ele.mstepx+=ele.mstepx*ele.mratex;
		ele.mstepy+=ele.mstepy*ele.mratey;
	} else if(ele.mtype==3) { // decelerated
		ele.mstepx-=ele.mstepx*ele.mratex;
		ele.mstepy-=ele.mstepy*ele.mratey;
	}
	if(xl2r) ele.mcurrentx+=ele.mstepx;
	else ele.mcurrentx-=ele.mstepx;
	if(yt2b) ele.mcurrenty+=ele.mstepy;
	else ele.mcurrenty-=ele.mstepy;
	ele.setx(ele.mcurrentx);
	ele.sety(ele.mcurrenty);
	var curx=ele.getx();
	var cury=ele.gety();
	if (
		 ( ((xl2r&&ele.mcurrentx>=ele.mendx) || (!xl2r&&ele.mcurrentx<=ele.mendx)) && 
			((yt2b&&ele.mcurrenty>=ele.mendy) || (!yt2b&&ele.mcurrenty<=ele.mendy)) ) || 
		(curx==ele.mprevx&&cury==ele.mprevy)
	) {
		ele.stopmove();
		ele.mcurrentx=ele.mendx;
		ele.mcurrenty=ele.mendy;
		ele.setx(ele.mcurrentx);
		ele.sety(ele.mcurrenty);
		if(typeof(ele.moncomplete)=='function') ele.moncomplete();
		//ele.moncomplete=0;
		return;
	}
	ele.mprevx=curx;
	ele.mprevy=cury;
}
function velepausemove() {
	var ele=this;
	ele.mpaused=1;
}
function veleresumemove() {
	var ele=this;
	ele.mpaused=0;
}
function velestopmove() {
	var ele=this;
	if(ele.iidmove!=-1) {
		clearInterval(ele.iidmove);
		ele.iidmove=-1;
		ele.mpaused=0;
	}
}

function veleresize(rsms,rst,sw,rw,bw,ew,sh,rh,bh,eh,oncomplete) {
	var ele=this;
	ele.rstype=rst;
	ele.rsbeginw=bw;
	ele.rsendw=ew;
	if(sw=='at') {
		//ele.rstype==1?sw=1:sw=Math.abs(ele.rsendw-ele.rsbeginw)/17.33; //earlier version
		if(ele.rstype==1||ele.rstype==2) sw=1;
		//else sw=Math.abs(ele.rsendw-ele.rsbeginw)*30/100; //quick version
		else if(Math.abs(ele.rsendw-ele.rsbeginw)<=20) sw=Math.abs(ele.rsendw-ele.rsbeginw)*8.5/100;
		else if(Math.abs(ele.rsendw-ele.rsbeginw)<=30) sw=Math.abs(ele.rsendw-ele.rsbeginw)*8.0/100;
		else if(Math.abs(ele.rsendw-ele.rsbeginw)<=40) sw=Math.abs(ele.rsendw-ele.rsbeginw)*7.5/100;
		else if(Math.abs(ele.rsendw-ele.rsbeginw)<=50) sw=Math.abs(ele.rsendw-ele.rsbeginw)*7.0/100;
		else if(Math.abs(ele.rsendw-ele.rsbeginw)<=80) sw=Math.abs(ele.rsendw-ele.rsbeginw)*6.5/100;
		else if(Math.abs(ele.rsendw-ele.rsbeginw)<=100) sw=Math.abs(ele.rsendw-ele.rsbeginw)*6.1/100;
		else sw=Math.abs(ele.rsendw-ele.rsbeginw)*5.75/100;
	}
	ele.rsstepw=sw;
	if(rw=='at') {
		//ele.rstype==1?rw=0:rw=0.05; //earlier version
		if(ele.rstype==1) { rw=0; }
		else if(ele.rstype==2) { rw=0.15; }
		else if(ele.rstype==3) { rw=0.05; /*rw=0.23;//quick version*/ }
	}
	ele.rsratew=rw;
	ele.rsbeginh=bh;
	ele.rsendh=eh;
	if(sh=='at') {
		//ele.rstype==1?sh=1:sh=Math.abs(ele.rsendh-ele.rsbeginh)/17.33; //earlier version
		if(ele.rstype==1||ele.rstype==2) sh=1;
		//else sh=Math.abs(ele.rsendh-ele.rsbeginh)*30/100; //quick version
		else if(Math.abs(ele.rsendh-ele.rsbeginh)<=20) sh=Math.abs(ele.rsendh-ele.rsbeginh)*8.5/100;
		else if(Math.abs(ele.rsendh-ele.rsbeginh)<=30) sh=Math.abs(ele.rsendh-ele.rsbeginh)*8.0/100;
		else if(Math.abs(ele.rsendh-ele.rsbeginh)<=40) sh=Math.abs(ele.rsendh-ele.rsbeginh)*7.5/100;
		else if(Math.abs(ele.rsendh-ele.rsbeginh)<=50) sh=Math.abs(ele.rsendh-ele.rsbeginh)*7.0/100;
		else if(Math.abs(ele.rsendh-ele.rsbeginh)<=80) sh=Math.abs(ele.rsendh-ele.rsbeginh)*6.5/100;
		else if(Math.abs(ele.rsendh-ele.rsbeginh)<=100) sh=Math.abs(ele.rsendh-ele.rsbeginh)*6.1/100;
		else sh=Math.abs(ele.rsendh-ele.rsbeginh)*5.75/100;
	}
	ele.rssteph=sh;
	if(rh=='at') {
		//ele.rstype==1?rh=0:rh=0.05; //earlier version
		if(ele.rstype==1) { rh=0; }
		else if(ele.rstype==2) { rh=0.15; }
		else if(ele.rstype==3) { rh=0.05; /*rh=0.23;//quick version*/ }
	}
	ele.rsrateh=rh;
	ele.rscurrentw=ele.rsbeginw;
	ele.rscurrenth=ele.rsbeginh;
	ele.setw(ele.rscurrentw);
	ele.seth(ele.rscurrenth);
	ele.rsprevw=ele.getw();
	ele.rsprevh=ele.geth();
	if(typeof(oncomplete)!='function') oncomplete=0; ele.rsoncomplete=oncomplete;
	//if(oncomplete&&oncomplete!=''&&oncomplete!=null) ele.rsoncomplete=oncomplete;
	ele.stopresize();
	if(rsms=='at') rsms=1;
	ele.iidresize=setInterval(function(){ele.resizenext();},rsms);
}
function veleresizenext() {
	var ele=this;
	if(ele.rspaused) return;
	var ws2b=true; if(ele.rsbeginw>ele.rsendw) ws2b=false;
	var hs2b=true; if(ele.rsbeginh>ele.rsendh) hs2b=false;
	if(ele.rstype==1) { // constant
		ele.rsstepw+=ele.rsratew;
		ele.rssteph+=ele.rsrateh;
	} else if(ele.rstype==2) { // accelerated
		ele.rsstepw+=ele.rsstepw*ele.rsratew;
		ele.rssteph+=ele.rssteph*ele.rsrateh;
	} else if(ele.rstype==3) { // decelerated
		ele.rsstepw-=ele.rsstepw*ele.rsratew;
		ele.rssteph-=ele.rssteph*ele.rsrateh;
	}
	if(ws2b) ele.rscurrentw+=ele.rsstepw;
	else ele.rscurrentw-=ele.rsstepw;
	if(hs2b) ele.rscurrenth+=ele.rssteph;
	else ele.rscurrenth-=ele.rssteph;
	ele.setw(ele.rscurrentw);
	ele.seth(ele.rscurrenth);
	var curw=ele.getw();
	var curh=ele.geth();
	if (
		 ( ((ws2b&&ele.rscurrentw>=ele.rsendw) || (!ws2b&&ele.rscurrentw<=ele.rsendw)) && 
			((hs2b&&ele.rscurrenth>=ele.rsendh) || (!hs2b&&ele.rscurrenth<=ele.rsendh)) ) || 
		(curw==ele.rsprevw&&curh==ele.rsprevh)
	) {
		ele.stopresize();
		ele.rscurrentw=ele.rsendw;
		ele.rscurrenth=ele.rsendh;
		ele.setw(ele.rscurrentw);
		ele.seth(ele.rscurrenth);
		if(typeof(ele.rsoncomplete)=='function') ele.rsoncomplete();
		//ele.rsoncomplete=0;
		return;
	}
	ele.rsprevw=curw;
	ele.rsprevh=curh;
}
function velepauseresize() {
	var ele=this;
	ele.rspaused=1;
}
function veleresumeresize() {
	var ele=this;
	ele.rspaused=0;
}
function velestopresize() {
	var ele=this;
	if(ele.iidresize!=-1) {
		clearInterval(ele.iidresize);
		ele.iidresize=-1;
		ele.rspaused=0;
	}
}

function velefade(fms,ft,fs,fr,ba,ea,oncomplete) {
	var ele=this;
	if(ele.style.display=='none') ele.style.display='block';
	if(ele.style.visibility=='hidden') ele.style.visibility='visible';
	ele.ftype=ft;
	if(fs=='at') {
		if(ele.ftype==1) { fs=1; }
		else if(ele.ftype==2) { fs=1; }
		else if(ele.ftype==3) { fs=8; }
	}
	//if(fs=='at') ele.ftype==1?fs=1:fs=8;
	ele.fstepa=fs;
	if(fr=='at') {
		if(ele.ftype==1) { fr=0; }
		else if(ele.ftype==2) { fr=0.15; }
		else if(ele.ftype==3) { fr=0.05; }
	}
	//if(fr=='at') ele.ftype==1?fr=0:fr=0.05;
	ele.fratea=fr;
	ele.fbegina=ba;
	ele.fenda=ea;
	ele.fcurrenta=ele.fbegina;
	ele.seta(ele.fcurrenta);
	ele.fpreva=ele.fcurrenta;
	if(typeof(oncomplete)!='function') oncomplete=0; ele.foncomplete=oncomplete;
	//if(oncomplete&&oncomplete!=''&&oncomplete!=null) ele.foncomplete=oncomplete;
	ele.stopfade();
	if(fms=='at') fms=15;
	ele.iidfade=setInterval(function(){ele.fadenext();},fms);
}
function velefadenext() {
	var ele=this;
	if(ele.fpaused) return;
	var al2h=true; if(ele.fbegina>ele.fenda) al2h=false;
	if(ele.ftype==1) ele.fstepa+=ele.fratea; // constant
	else if(ele.ftype==2) ele.fstepa+=ele.fstepa*ele.fratea; // accelerated
	else if(ele.ftype==3) ele.fstepa-=ele.fstepa*ele.fratea; // decelerated
	if(al2h) ele.fcurrenta+=ele.fstepa;
	else ele.fcurrenta-=ele.fstepa;
	ele.seta(ele.fcurrenta);
	if( (al2h&&ele.fcurrenta>=ele.fenda) || (!al2h&&ele.fcurrenta<=ele.fenda) || (Math.round(ele.fcurrenta)==Math.round(ele.fpreva)) ) {
		ele.stopfade();
		ele.fcurrenta=ele.fenda;
		ele.seta(ele.fcurrenta);
		if(typeof(ele.foncomplete)=='function') ele.foncomplete();
		//ele.foncomplete=0;
	}
	if(!al2h&&ele.fcurrenta<=0) {
		ele.style.display='none';
		ele.style.visibility='hidden';
	}
	ele.fpreva=ele.fcurrenta;
}
function velepausefade() {
	var ele=this;
	ele.fpaused=1;
}
function veleresumefade() {
	var ele=this;
	ele.fpaused=0;
}
function velestopfade() {
	var ele=this;
	if(ele.iidfade!=-1) {
		clearInterval(ele.iidfade);
		ele.iidfade=-1;
		ele.fpaused=0;
	}
}

function velesetfinger(setstate,ele) {
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	if(setstate) eleaddevent('mouseover',function(){this.style.cursor='pointer';},ele);
	else eleremoveevent('mouseover',function(){this.style.cursor='pointer';},ele);
}

function velefixdim(w,h,oflow,ele) {
	if(!eleistable(ele)||!eleistd(ele)||!eleisdiv(ele)) return -1;
	if(!ele) ele=this; else if(typeof(ele)=='string') ele=document.getElementById(ele);
	velesetw(w,ele);
	veleseth(h,ele);
	ele.style.overflow=oflow;
}





function getwinw(win) {
	if(!win) win=window; var winw=0;
	if(navigator.appName=="Netscape") winw=win.outerWidth; 
	else if(navigator.appName.indexOf("Microsoft")!=-1) winw=getscreenw(win)+getwinframew(win);
	return winw;
}
function getwinh(win) {
	if(!win) win=window; var winh=0;
	if(navigator.appName=="Netscape") winh=win.outerHeight;
	else if(navigator.appName.indexOf("Microsoft")!=-1) winh=getscreenh(win)+getwinframeh(win);
	return winh;
}
function getwinframew(win) {
	if(!win) win=window; var framew=0; var frameh=0; var testw=500; var testh=500;
	if(navigator.appName=="Netscape") framew=win.outerWidth-win.innerWidth; 
	else if(navigator.appName.indexOf("Microsoft")!=-1){
		var owinw=getscreenw(win); var owinh=getscreenh(win);
		win.resizeTo(testw,testh);
		framew=testw-getscreenw(win); frameh=testh-getscreenh(win);
		win.resizeTo(owinw+framew,owinh+frameh);
	}
	return framew;
}
function getwinframeh(win) {
	if(!win) win=window; var framew=0; var frameh=0; var testw=500; var testh=500;
	if(navigator.appName=="Netscape") frameh=win.outerHeight-win.innerHeight; 
	else if(navigator.appName.indexOf("Microsoft")!=-1){
		var owinw=getscreenw(win); var owinh=getscreenh(win);
		win.resizeTo(testw,testh);
		framew=testw-getscreenw(win); frameh=testh-getscreenh(win);
		win.resizeTo(owinw+framew,owinh+frameh);
	}
	return frameh;
}
function getscreenw(win) {
	if(!win) win=window; var winw=0; if(parseInt(navigator.appVersion)<=3) return 0;
	if(navigator.appName=="Netscape") winw=win.innerWidth-16; 
	else if(navigator.appName.indexOf("Microsoft")!=-1){
		if(win.document.documentElement&&win.document.documentElement.clientWidth) winw=win.document.documentElement.clientWidth-20;
		else if(win.document.body) winw=win.document.body.clientWidth-20;
	}
	return winw;
}
function getscreenh(win) {
	if(!win) win=window; var winh=0; if(parseInt(navigator.appVersion)<=3) return 0;
	if(navigator.appName=="Netscape") winh=win.innerHeight-16;
	else if(navigator.appName.indexOf("Microsoft")!=-1){
		if(win.document.documentElement&&win.document.documentElement.clientHeight) winh=win.document.documentElement.clientHeight-20;
		else if(win.document.body) winh=win.document.body.clientHeight-20;
	}
	return winh;
}
function getscreenx0() {
	if(window.pageXOffset) return window.pageXOffset; 
	else if(document.documentElement&&document.documentElement.scrollLeft) return document.documentElement.scrollLeft;
	else if(document.body) return document.body.scrollLeft;
	return 0;
}
function getscreeny0() {
	if(window.pageYOffset) return window.pageYOffset; 
	else if(document.documentElement&&document.documentElement.scrollTop) return document.documentElement.scrollTop;
	else if(document.body) return document.body.scrollTop;
	return 0;
}
function getscreenctx() {
	return getscreenx0()+(getscreenw()/2);
}
function getscreencty() {
	return getscreeny0()+(getscreenh()/2);
}





