/* timerlen controls refresh, slideAnilen is the number of milliseconds for entire slide */

var timerlen = 5;
var slideAniLen = 600;

/* arrays to keep track of animation */

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var dir = new Array();
var designtypeid = new Array();
var accordion = new Array();

/* slide functions. These are called from the website. */ 

function slidedown(objname){
	if(moving[objname])
		return;
		
	if(document.getElementById(objname).style.display != "none")
		return; /* cannot slide down something that is already visible */
		
	moving[objname] = name;
	dir[objname]="down";
	startslide(objname);
}
		
function slideup(objname){
	if(moving[objname])
		return;
	
	if(document.getElementById(objname).style.display == "none")
		return; /* cannot slide up something that is already hidden */
	
	moving[objname] = true;
	dir[objname] = "up";
	startslide(objname);
}

/* function begins the sliding process */

function startslide(objname){
	obj[objname] = document.getElementById(objname);
	
	endHeight[objname] = parseInt(obj[objname].style.height);
	startTime[objname] = (new Date()).getTime();
	
	if(dir[objname] == "down"){
		obj[objname].style.height = "1px";
	}
	
	obj[objname].style.display = "block";
	
	timerID[objname] = setInterval('slidetick("' + objname + '");', timerlen);
}

/* function animates the sliding process */

function slidetick(objname){
	var elapsed = (new Date()).getTime() - startTime[objname];
	
	if (elapsed > slideAniLen) 
		endSlide(objname);
	else {
		var d = Math.round(elapsed / slideAniLen * endHeight[objname]);
		if(dir[objname] == "up") 
			d = endHeight[objname]-d;
		
		obj[objname].style.height = d + "px";
	}
	
	return;
}

/* function ends the sliding process */

function endSlide(objname){
	clearInterval(timerID[objname]);
	
	if(dir[objname] == "up")
		obj[objname].style.display = "none";
		
	obj[objname].style.height = endHeight[objname] + "px";
	
	delete(moving[objname]);
	delete(timerID[objname]);
	delete(startTime[objname]);
	delete(endHeight[objname]);
	delete(obj[objname]);
	delete(dir[objname]);
	
	if(designtypeid[objname]!=-1) {
		window.location='cart.php?designtypeid='+designtypeid[objname];	
	}
	
	delete(designtypeid[objname]);
	
	return;
}
		
function toggleSlide(objname,dtid,rownum){

	//alert(rownum);
	//alert(typeof(objname));
	if (typeof(objname)=='string')
	{
	    if(document.getElementById(objname)!="null")
	    {
			if(document.getElementById(objname).style.display == "none"){
				for (i=rownum;i>=0;i--) {
		    		if(i%2==0) {
		    			objname='cart_row'+i;
		    			slidedown(objname);
		    		}
		    		designtypeid[objname]=dtid;       		 		
		    	}
		 	} else {
		    	/* div is not hidden, so slide up */
		    	for (i=rownum;i>=0;i--) {
		    		if(i%2==0) {
		    			objname='cart_row'+i;
		    			slideup(objname);
		    		}
		    		designtypeid[objname]=dtid;    		
		    	}
		  	}
	    }
	}
}


/* fade functions */

var TimeToFade = 500.0;

function fade(eid){

var element = document.getElementById(eid);
if(element == null)
return;

if(element.FadeState == null){
element.FadeState = -2;
}

if(element.FadeState == 1 || element.FadeState == -1){
element.FadeState = element.FadeState == 1 ? -1 : 1;
element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;

}else{
element.FadeState = element.FadeState == 2 ? -1 : 1;
element.FadeTimeLeft = TimeToFade;
setTimeout("animateFade(" + new Date().getTime()
+ ",'" + eid + "')", 33);
}
}

function animateFade(lastTick, eid){

var curTick = new Date().getTime();
var elapsedTicks = curTick - lastTick;

var element = document.getElementById(eid);

if(element.FadeTimeLeft <= elapsedTicks){

element.style.opacity = element.FadeState == 1 ? '1' : '0';
element.style.filter = 'alpha(opacity = '
+ (element.FadeState == 1 ? '100' : '0') + ')';
element.FadeState = element.FadeState == 1 ? 2 : -2;

return;
}

element.FadeTimeLeft -= elapsedTicks;
var newOpVal = element.FadeTimeLeft/TimeToFade;
if(element.FadeState == 1)
newOpVal = 1 - newOpVal;

element.style.opacity = newOpVal;
element.style.filter =
'alpha(opacity = ' + (newOpVal*100) + ')';

setTimeout("animateFade(" + curTick
+ ",'" + eid + "')", 33);
}