/* global variables */
var counter = new Array();
counter['Alcohol'] = 0;
counter['Flavor'] = 0;
counter['Garnish'] = 0;

function hideTables() {
	/* hide all original tables */
	$('tableAlcohol').style.display = 'none';
	$('tableFlavor').style.display = 'none';
	$('tableGarnish').style.display = 'none';
}

function addRow(drinkElement) {
	/* check they selected something */
	var sel = $(drinkElement).options[$(drinkElement).selectedIndex];
	if($(drinkElement).selectedIndex==0 || $(drinkElement + '_oz').getValue()=='') {
		alert('Please select ' + drinkElement + ' and ounces/servings');
		return;
	}
	
	/* get a clone of original table */
	var clone = $('table' + drinkElement).cloneNode(true);

	/* set the new name with counter */
	clone.setAttribute(
		"id", "table" + drinkElement + counter[drinkElement]
	);
	
	/* show table */
	clone.style.display = 'block';
	
	/* add to parent */
	$('container' + drinkElement).insertBefore(
		clone, $('table' + drinkElement)
	);
	
	/* add the column data and increment counter */
	addCol(drinkElement);
	counter[drinkElement]++;
	
}

function addCol(drinkElement) {
	/* get the select index from the dropdown */
	var sel = $(drinkElement).options[$(drinkElement).selectedIndex];

	/* rename elements with counters */
	$('item' + drinkElement).setAttribute(
		"id", "item" + drinkElement + counter[drinkElement]
	);
	$('calories' + drinkElement).setAttribute(
		"id", "calories" + drinkElement + counter[drinkElement]
	);
	$(drinkElement + "_id").setAttribute(
		"id", drinkElement + "_id" + counter[drinkElement]
	);
	$(drinkElement + "_ozs").setAttribute(
		"id", drinkElement + "_ozs" + counter[drinkElement]
	);	
	
	/* set element data */
	var stype = (drinkElement=='Garnish') ? " servings)" : " oz)";
	$("item" + drinkElement + counter[drinkElement]).innerHTML = 
		sel.text + "(" + $(drinkElement + '_oz').getValue() + stype;
	$(drinkElement + "_id" + counter[drinkElement]).innerHTML =
		sel.value;
	$(drinkElement + "_id" + counter[drinkElement]).style.display =
		'none';
		
	$(drinkElement + "_ozs" + counter[drinkElement]).innerHTML =
		$(drinkElement + '_oz').getValue();
	$(drinkElement + "_ozs" + counter[drinkElement]).style.display =
		'none';		
	
	/* get calories via ajax */
	getCalories(
				$(drinkElement + '_oz').getValue(),
				drinkElement,
				sel.value,
				$("calories" + drinkElement + counter[drinkElement])
	);
}

function removeRow(el, drinkElement) {
	/*	lame I tried to split the name of the image name but
		IE sucks ass an pulled up only a single changing one */
	var ieSucks = el.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;

	$('container' + drinkElement).removeChild(ieSucks);

	
	/* update total calories */
	updateCalories();	
}

function getCalories(quantity, drinkElement, id, updateElement) {
	/* creat a new ajax object */
	var aj = new Ajax.Request('ajax.php',
	{
		method:'post',
		/* set all parameters */
		parameters: 'action=getCalories&quan=' + quantity + '&type=' + drinkElement + '&id=' + id,		
		/* success function */
		onSuccess: function(transport) {
			var response = transport.responseText || "no response text";
			$(updateElement).innerHTML = response;
			/* update total calories */
			updateCalories();
		},
		/* failure */
		onFailure: function(){ alert('Something went wrong...') }
	});	
}

function getInnerText(elt) {
	var _innerText = elt.innerText;
	if (_innerText == undefined) {
		_innerText = elt.innerHTML.replace(/<[^>]+>/g,"");
	}
	return _innerText;
}

function updateCalories() {
	/* roll up all calories from all sections */
	var bigger = (counter['Alcohol']>counter['Flavor']) ? counter['Alcohol'] : counter['Flavor'];
	var bigger = (bigger>counter['Garnish']) ? bigger : counter['Garnish'];
	
	var totalCal = 0;
	
	for(var i=0; i<bigger+1; i++) {
		if($('itemAlcohol'+i)) {
			totalCal += parseInt(getInnerText($('caloriesAlcohol'+i)));
		}
	}
	
	for(var i=0; i<bigger+1; i++) {
		if($('itemFlavor'+i)) {
			totalCal += parseInt(getInnerText($('caloriesFlavor'+i)));
		}
	}
	
	for(var i=0; i<bigger+1; i++) {
		if($('itemGarnish'+i)) {
			totalCal += parseInt(getInnerText($('caloriesGarnish'+i)));
		}
	}	
	
	$('totalCalories').update(totalCal + " Calories");
}

function changeGlass(el) {
	var sel = $(el).options[$(el).selectedIndex];
	$('glassType').update(sel.text);
}

function addElement(frm, fe) {
	var inp = document.createElement('input');
	inp.setAttribute("type", fe.type);
	inp.setAttribute("name", fe.name);
	inp.setAttribute("value", fe.value);
	$(frm).appendChild(inp);
}

function saveDrink() {
	/* chack author */
	if(author_id=='') {
		alert('Please login to save a drink');
		window.location.href = 'skinnytini_insider_login.php';
		return;
	}
		
	var bigger = (counter['Alcohol']>counter['Flavor']) ? counter['Alcohol'] : counter['Flavor'];
	var bigger = (bigger>counter['Garnish']) ? bigger : counter['Garnish'];
	
	var fe = {};
	
	/* add alcohols */
	for(var i=0; i<bigger+1; i++) {
		if($('itemAlcohol'+i)) {
			fe = { type:"text", name:"alcohols[]", value:$("Alcohol_id" + i).innerHTML };
			addElement('make_drink', fe);
			fe = { type:"text", name:"alcohols_ounces[]", value:$("Alcohol_ozs" + i).innerHTML };
			addElement('make_drink', fe);
		}
	}
	
	/* add flavors */
	for(var i=0; i<bigger+1; i++) {
		if($('itemFlavor'+i)) {
			fe = { type:"text", name:"flavors[]", value:$("Flavor_id" + i).innerHTML };
			addElement('make_drink', fe);
			fe = { type:"text", name:"flavors_ounces[]", value:$("Flavor_ozs" + i).innerHTML };
			addElement('make_drink', fe);
		}
	}
	
	/* add garnish */
	for(var i=0; i<bigger+1; i++) {
		if($('itemGarnish'+i)) {
			fe = { type:"text", name:"garnishes[]", value:$("Garnish_id" + i).innerHTML };
			addElement('make_drink', fe);
			fe = { type:"text", name:"garnishes_servings[]", value:$("Garnish_ozs" + i).innerHTML };
			addElement('make_drink', fe);
		}
	}
	
	/* add all others */
	fe = { type:"text", name:"author_id", value: author_id };
	addElement('make_drink', fe);
	
	var gl = document.getElementById('glass');
	fe = { type:"text", name:"glasses_id", value: gl.options[gl.selectedIndex].value};
	addElement('make_drink', fe);
	
	fe = { type:"text", name:"name", value: document.getElementById('name').value };
	addElement('make_drink', fe);
	
	fe = { type:"text", name:"recipe", value: document.getElementById('recipe').value };
	addElement('make_drink', fe);
	
	/* forward to thanks */
	document.make_drink.submit();
}