var elems = new Array();

function registerEntity(name, state, colorChange, amm){

	//alert('registering > ' + name + ' & state=' + state);

	elems[name] = state;
	elems[name + '_colorChange'] = colorChange;
	elems[name + '_amm'] = amm;
}

function easeInOut (t, b, c, d) {
	if (t==0) return b;
	if (t==d) return b+c;
	if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
	return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
}

function makeBig(elem, count, amm){

	if(count<=15){
			
		var newVal = easeInOut(count, 0, amm, 15);

		document.getElementById(elem).style.height = newVal + 'px';
	
		count++;

		setTimeout(function(){makeBig(elem, count, amm);}, 20);

	}else{
		count = 0;
	}
}

function makeSmall(elem, count, amm){
	
	if(count<=15){
			
		var newVal = easeInOut(count, 0, amm, 15);

		document.getElementById(elem).style.height = (amm-newVal) + 'px';
	
		count++;

		setTimeout(function(){makeSmall(elem, count, amm);}, 20);

	}else{
		count = 0;
	}
}

function showMe(name, linker){

	//alert('working with ' + name + ' & state = ' + elems[name]);

	if(elems[name]==0){

		clearShowMe();
	
		makeBig(name, 0, elems[name + '_amm']);

		document.getElementById(linker).style.color = "#" + elems[name + '_colorChange'];

		elems[name] = 1;
	
	}else{
		
		makeSmall(name, 0, elems[name + '_amm']);
		
		document.getElementById(linker).style.color = "#ababab";

		elems[name] = 0;
	
	}

}

function clearShowMe(){
	
	arr = getElementsByClassName(document, "a", "product");

	for(i=0;i<arr.length;i++){
		if(elems[arr[i].id + '_recipes']==1){
			showMe(arr[i].id + '_recipes', arr[i].id);
		}
	}

}

function getElementsByClassName(oElm, strTagName, oClassNames){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var arrRegExpClassNames = new Array();
	if(typeof oClassNames == "object"){
		for(var i=0; i<oClassNames.length; i++){
			arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
		}
	}
	else{
		arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
	}
	var oElement;
	var bMatchesAll;
	for(var j=0; j<arrElements.length; j++){
		oElement = arrElements[j];
		bMatchesAll = true;
		for(var k=0; k<arrRegExpClassNames.length; k++){
			if(!arrRegExpClassNames[k].test(oElement.className)){
				bMatchesAll = false;
				break;
			}
		}
		if(bMatchesAll){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}
