
fx_tmr = 33;
fx_null=0;
fx_loop=1;
fx_slidein=2;
fx_slideout=4;
rads = 0.0174532925;

browser="";bver=0;
var nav=String(navigator.userAgent).toLowerCase();
platform = navigator.platform;
if (nav.indexOf("msie")!=-1)	{browser="ie"}
if (nav.indexOf("firefox")!=-1)	{browser="ff"}
if (nav.indexOf("minefield")!=-1){browser="ff"}
if (nav.indexOf("safari")!=-1)	{browser="safari"}
if (nav.indexOf("opera")!=-1)	{browser="opera"}
if (nav.indexOf("msie 8.0")!=-1){bver=8}
if (nav.indexOf("msie 7.0")!=-1){bver=7}
if (nav.indexOf("msie 6.0")!=-1){bver=6}
if (nav.indexOf("msie 5.5")!=-1){bver=5.5}
if (nav.indexOf("msie 5.0")!=-1){bver=5}


fxarray=[];fxmarray=[];fxtmr=0;fxinproc=0;fxcommand=0;objidx=0;
function fx(){
	try{
	if (arguments[0].substr(0,1)=="#"||arguments[0].substr(0,1)==".") {
		objects=arguments[0]
	} else {
		objects=testid(arguments[0]);
	}
	}catch(e){
		objects=testid(arguments[0]);
	}
	steps=parseInt(arguments[1],10);
	features=parseInt(arguments[2],10);
	if(arguments[2]==true){features=1}
	notifyfunc=arguments[3];
	stepidx=steps;
	var newfx=objects+"|"+steps+"|"+stepidx+"|"+features+"|"+notifyfunc;
	saveargs="";
	for(argi=4;argi<arguments.length;argi++) {
		saveargs+=",'"+arguments[argi]+"'";
		newtype="";
		if(String(arguments[argi]).indexOf("null")!=-1){return}
		if(String(arguments[argi]).toLowerCase().indexOf("color")!=-1){newtype="#"}
		arguments[argi]=String(arguments[argi]).replace(/\#/g,"").replace(/px/g,"");
		sargs=arguments[argi].split(",");
		if(newtype=="#") {newfx+="|"+sargs[0]+","+parseInt(sargs[1].substr(0,2),16)+","+parseInt(sargs[1].substr(2,2),16)+","+parseInt(sargs[1].substr(4,2),16)+","+((parseInt(sargs[2].substr(0,2),16)-parseInt(sargs[1].substr(0,2),16))/steps)+","+((parseInt(sargs[2].substr(2,2),16)-parseInt(sargs[1].substr(2,2),16))/steps)+","+((parseInt(sargs[2].substr(4,2),16)-parseInt(sargs[1].substr(4,2),16))/steps);continue}
		if(features&6){sarg1=0}else{sarg1=sargs[1]}
		if(features&4){
			newfx+="|"+sargs[0]+",180,"+((parseFloat(sargs[1])-parseFloat(sargs[2]))/steps)+","+sargs[2]+","+sargs[3];continue;
		}else{
			newfx+="|"+sargs[0]+","+sarg1+","+((parseFloat(sargs[2])-parseFloat(sargs[1]))/steps)+","+sargs[1]+","+sargs[3];continue;
		}
	}
	fxidx=-1;
	for(i=0;i<fxarray.length;i++){if (fxarray[i].split("|")[0]==objects){fxidx = i}}
	if(fxinproc==1){thisargs="'"+objects+"',"+steps+","+features+",'"+notifyfunc+"'"+saveargs;eval('setTimeout("fx('+thisargs+')",1)');return}
	if(steps>0){
		if(fxidx==-1){
			fxarray.push(newfx)
		}else{
			fxarray[fxidx]=newfx
		}
	} else {
		if (fxidx!=-1) {
			fxarray.splice(fxidx,1)
		}
	}
	if((fxarray.length>0)&&(fxtmr==0)){fxtmr=setTimeout("fxproc()",1)}
}

function fxproc(){
	fxinproc=1;
	for (i=0;i<fxarray.length;i++) {

		fxa=fxarray[i].split("|");
		fx_objs=String(fxa[0]);

		if (fx_objs=="undefined") {
			nulval=fxarray.splice(i,1);
			i--;
			continue
		}

		fx_totalsteps=parseInt(fxa[1],10);

		fx_stepidx=parseInt(fxa[2],10);
		fx_feature=parseInt(fxa[3],10);
		fx_notifyfunc=String(fxa[4]);
		fx_stepidx=fx_stepidx-1;

		if (fx_stepidx<0) {
			if ((fx_feature&1)==0) {
				nulval=fxarray.splice(i,1);
				i--;
				fx_notifyfunc=fx_notifyfunc.replace(/\~/g,"")
				eval(fx_notifyfunc);
				continue;
			}else{
				fx_stepidx=fx_totalsteps-1;
				newfx=fx_objs+"|"+fx_totalsteps+"|"+fx_stepidx+"|"+fx_feature+"|"+fx_notifyfunc;
				for (argi=5;argi<fxa.length;argi++) {
					if (fxa[argi].indexOf("null")!=-1){break;continue}
					sarg=fxa[argi].split(",");
					if (sarg[0].toLowerCase().indexOf('color')!=-1) {
						newarg=sarg[0]+","+parseFloat(sarg[1])+","+parseFloat(sarg[2])+","+parseFloat(sarg[3])+","+(-parseFloat(sarg[4]))+","+(-parseFloat(sarg[5]))+","+(-parseFloat(sarg[6]));
					} else {
						newarg=sarg[0]+","+(parseFloat(sarg[1])+(-parseFloat(sarg[2])))+","+(-parseFloat(sarg[2]))+","+sarg[3];
					}
					newfx+="|"+newarg;
				}
				fxarray[i]=newfx;
				fxa=newfx.split("|");
			}
		}
		newfx = fx_objs+"|"+fx_totalsteps+"|"+fx_stepidx+"|"+fx_feature+"|"+fx_notifyfunc;
		for(argi=5;argi<fxa.length;argi++) {try{
			if(fxa[argi].indexOf("null")!=-1){break;continue}
			newarg="";
			sarg=fxa[argi].split(",");
			if (sarg[0].toLowerCase().indexOf('color')!=-1) {
				newarg=sarg[0]+","+(parseFloat(sarg[1])+parseFloat(sarg[4]))+","+(parseFloat(sarg[2])+parseFloat(sarg[5]))+","+(parseFloat(sarg[3])+parseFloat(sarg[6]))+","+sarg[4]+","+sarg[5]+","+sarg[6]+","+sarg[7];
				sarg=newarg.split(",");
				if (fx_objs.substr(0,1)=="."||fx_objs.substr(0,1)=="#") {
					setstyle(fx_objs,sarg[0],'#'+gethex(Math.round(sarg[1]))+gethex(Math.round(sarg[2]))+gethex(Math.round(sarg[3])) )
				}else{
					eval("dg(fx_objs).style."+sarg[0]+"='#"+gethex(Math.round(sarg[1]))+gethex(Math.round(sarg[2]))+gethex(Math.round(sarg[3]))+"'")
				}
			} else {
				if (fx_feature&6) {
					deg=parseFloat(sarg[1]);
					if(parseFloat(sarg[2])<0){deg=deg+(90/fx_totalsteps)}else{deg=deg-(90/fx_totalsteps)}
					newarg=sarg[0]+","+deg+","+sarg[2]+","+sarg[3]+","+sarg[4];
				} else {
					newarg=sarg[0]+","+(parseFloat(sarg[1])+parseFloat(sarg[2]))+","+sarg[2]+","+sarg[3]+","+sarg[4];
				}
				sarg = newarg.split(",");
				if (sarg[0]=="opacity") {
					if (fx_feature&6) {
						radians=parseFloat(sarg[1])*rads;
						sineval=(fx_feature&2)?(Math.sin(radians)*(fx_totalsteps*parseFloat(sarg[2]))):(Math.cos(radians)*Math.abs(fx_totalsteps*parseFloat(sarg[2])));
						sineval=(parseFloat(sarg[2])>0)?(parseFloat(sarg[3])-sineval):(parseFloat(sarg[3])+sineval);
						setopacity( fx_objs,Math.round(sineval));
						if (sarg[4]!="undefined"){eval(sarg[4]+"("+sineval+",'"+fx_objs+"')")}
					} else {
						setopacity(fx_objs,Math.abs(Math.round(parseFloat(sarg[1]))));
						if (sarg[4]!="undefined"){eval(sarg[4]+"("+Math.round(parseFloat(sarg[1]))+",'"+fx_objs+"')")}
					}
				} else {
					if (sarg[0]=="zoom") {postfix="%'"}else{postfix="px'"}
					if (fx_feature&6) {
						radians=parseFloat(sarg[1])*rads;
						sineval=(fx_feature&2)?(Math.sin(radians)*(fx_totalsteps*parseFloat(sarg[2]))):(Math.cos(radians)*Math.abs(fx_totalsteps*parseFloat(sarg[2])));
						sineval=(parseFloat(sarg[2])>0)?(parseFloat(sarg[3])-sineval):(parseFloat(sarg[3])+sineval);
						if (fx_objs.substr(0,1)=="."||fx_objs.substr(0,1)=="#") {
							setstyle(fx_objs,sarg[0],String(Math.round(sineval))+"px")
						} else {

							eval("dg(fx_objs).style."+sarg[0]+"='"+Math.round(sineval)+postfix)
						}
						if (sarg[4]!="undefined"){eval(sarg[4]+"("+sineval+",'"+fx_objs+"')")}

					} else {
						if (fx_objs.substr(0,1)=="."||fx_objs.substr(0,1)=="#") {
							setstyle(fx_objs,sarg[0],Math.round(sarg[1])+"px")
						} else {
							eval("dg(fx_objs).style."+sarg[0]+"='"+Math.round(sarg[1])+postfix)
						}
						if (sarg[4]!="undefined"){eval(sarg[4]+"("+Math.round(parseFloat(sarg[1]))+",'"+fx_objs+"')")}
					}
				}
			}
			newfx+="|"+newarg;
		}catch(e){}}

		if (fxarray[i].split("|")[1]!=0) {
			fxarray[i]=newfx;
		}
		// this could be depreciated if not needed. adding a tilde to notifyfunc causes it to fire on every update
		// since a new notify parameter has been added to each css directive, this may not be needed anymore
		if (fx_notifyfunc.indexOf("~")!=-1) {eval(fx_notifyfunc.replace(/\~/g,""))}

	}
	if(fxarray.length>0){fxtmr = setTimeout("fxproc()",fx_tmr)}else{fxtmr=0}
	fxinproc=0;
}
function dg(thisid){try{return document.getElementById(thisid)}catch(e){return null}}
function fxm(thisobj,fxmidx){eval("fx('"+testid(thisobj)+"',"+fxmarray[fxmidx]+")")}
function setopacity(opid,opv){try{if((browser=="ie")&&(platform=="Win32")){thisfilter=String(dg(opid).style.filter);thisfilter=thisfilter.replace(/alpha\(opacity\=.*?\)/g,"");thisfilter=thisfilter.replace(/\s/g,"");dg(opid).style.filter=thisfilter+" alpha(opacity="+parseInt(Math.round((opv)),10)+")";return};if((browser=="ie")&&(platform=="mac")){return};if(browser=="safari"){dg(opid).style.opacity=(opv/100)+"";return};if(browser=="ff"){if(opv>99){opv=99};dg(opid).style.MozOpacity=(opv/100);return}if(browser=="opera"){dg(opid).style.opacity=(opv/100)}}catch(e){}}
function testid(thisid){try{returnid=String(dg(thisid).id)}catch(e){if(String(thisid.id)==""){returnid=String("dhtmlobj"+objidx);thisid.setAttribute("id",returnid);objidx++}else{returnid=thisid.id}};return returnid}
function getleft(obj){var curleft=0;if(obj.offsetParent){while(obj.offsetParent){curleft+=obj.offsetLeft;obj=obj.offsetParent}}else{if(obj.x){curleft+=obj.x;}}return curleft}
function gettop(obj){var curtop=0;if(obj.offsetParent){while(obj.offsetParent){curtop+=obj.offsetTop;obj=obj.offsetParent}}else{if(obj.y){curtop+=obj.y;}}return curtop}
function getbot(thisobj){hacc=parseInt(thisobj.offsetHeight);yacc=gettop(thisobj);return yacc+hacc}
function getright(thisobj){wacc=parseInt(thisobj.offsetParent.offsetWidth);xacc=0;getleft(thisobj);return xacc+wacc}
function ischild(thisobj,idtype){if(thisobj.tagName=="INPUT"||thisobj.tagName=="TEXTAREA"||thisobj.tagName=="SELECT"){return null};do{try{tobj=String(thisobj.id)}catch(e){tobj=""};try{if(tobj.indexOf(idtype)!=-1){break};thisobj=thisobj.offsetParent;}catch(e){break}}while(tobj!="BODY");return thisobj}
function getstyle(cssselector){sheets=document.styleSheets;for(var iss=0;iss<sheets.length;iss++){getrules=[];if(browser=="ie"){getrules=document.styleSheets[iss].rules;}else{getrules=document.styleSheets[iss].cssRules;}for(var i=0;i<getrules.length;i++){if(getrules.item(i).selectorText.toLowerCase()==cssselector.toLowerCase()){return getrules.item(i)}}}}
function setstyle(cssselector,cssstyle,cssvalue){var setstyleobj=getstyle(cssselector);eval("setstyleobj.style."+cssstyle+"='"+cssvalue+"'")}
function fixpng(scaling){if((browser=="ie")&&(bver<7)){if(event.srcElement.src.indexOf("spacer.gif")!=-1){return};event.srcElement.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+event.srcElement.src+"', sizingMethod='"+((scaling==undefined||scaling==false)?"image":"scale")+"')";event.srcElement.src="img/spacer.gif"}}
function fixpng_background(thisid){if((browser=="ie")&&(bver<7)){if(dg(thisid).background.indexOf("spacer.gif")!=-1){return};dg(thisid).style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+dg(thisid).background+"', sizingMethod='scale')";dg(thisid).background=""}}
function fixpng_bg_style(thisid){if((browser=="ie")&&(bver<7)){if(dg(thisid).style.backgroundImage.indexOf("spacer.gif")!=-1){return};dg(thisid).style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+dg(thisid).style.backgroundImage.replace(/url\(/g,"").replace(/\)/g,"")+"', sizingMethod='scale')";dg(thisid).style.backgroundImage="url(img/spacer.gif)"}}
function fixpng_cssbg(cssselector){if((browser=="ie")&&(bver<7)){thiscss=getstyle(cssselector);if(thiscss.style.backgroundImage.indexOf("spacer.gif")!=-1){return};thiscss.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+thiscss.style.backgroundImage.replace(/url\(/g,"").replace(/\)/g,"")+"', sizingMethod='scale')";thiscss.style.backgroundImage="url(img/spacer.gif)"}}
function gethex(decnum) {var dechex="0"+decnum.toString(16);return dechex.substr(dechex.length-2)}
