/*------------------------------------------------------------*/
/*
	Cycle the visibility of a group of elements
	- see http://www.russiankettlebells.com/
*/
/*------------------------------------------------------------*/
function cycleElementGroupObj(id,group,grpsize,rate) {
	this.id			= id;
	this.group		= group;
	this.timer		= 0;
	this.grpsize	= grpsize;
	this.current	= 0;
	this.rate		= rate*1000;
}
/*------------------------------------------------------------*/

/*------------------------------------------------------------*/
function cycleElementGroup(grp) {

	// hide the current
	var lastptid	= grp.group + grp.current;
	var visible		= isElementScrollVisible(lastptid);

	if (visible) {
		hideElement(lastptid);

		// increment and/or cycle
		grp.current++;
		grp.current		= grp.current % grp.grpsize; 
	
		// show the next element	
		var ptid	= grp.group + grp.current;
		showElement(ptid);
	}
	// set the next round
	grp.timer = setTimeout('cycleElementGroup('+grp.id+')',grp.rate);
}
/*------------------------------------------------------------*/


/*------------------------------------------------------------*/
function pauseElementCycle(grpname) {
	var timeout	= 0;
	eval("var grp = "+grpname);
	eval("timeout = "+grp.timer);
	if (timeout>0) {
		eval("clearTimeout("+grp.timer+");");
		grp.timer		= 0;
	}
}
/*------------------------------------------------------------*/

/*------------------------------------------------------------*/
function startElementCycle(grpname) {
	var timeout	= 0;
	eval("var grp = "+grpname)
	eval("timeout = "+grp.timer);
	if (timeout==0) {
		//eval("grp.timer = setTimeout('cycleElementGroup("+grp+")',2000);");
		grp.timer = setTimeout('cycleElementGroup('+grpname+')',grp.rate);
	}
}
/*------------------------------------------------------------*/



/*------------------------------------------------------------*/
function findElementPos(id){
	var obj = document.getElementById(id);
	if (obj) {	
		var posX = obj.offsetLeft;
		var posY = obj.offsetTop;
		while(obj.offsetParent){
			posX	= posX+obj.offsetParent.offsetLeft;
			posY	= posY+obj.offsetParent.offsetTop;
			if(obj==document.getElementsByTagName('body')[0]){break}
			else{obj = obj.offsetParent;}
		}
		return [posX, posY];
	}
	return [-1,-1];
}
/*------------------------------------------------------------*/

/*------------------------------------------------------------*/
function getScrollFromTop(){
	var top = (document.documentElement.scrollTop ?
		document.documentElement.scrollTop :
		document.body.scrollTop);
	return top;
}
/*------------------------------------------------------------*/

/*------------------------------------------------------------*/
function isElementScrollVisible(id){
	var pos			= findElementPos(id);
	var scrollpos	= getScrollFromTop();
	var visible		= pos[1]>scrollpos ? true : false;
	return visible;
}
/*------------------------------------------------------------*/

