var monthView = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', 'View All');
var seasonView = new Array('Please select', 'Fall', 'Winter', 'Spring', 'Summer');
var seriesView = new Array('Please select', 'Dish Entertains', 'Workshop Series', 'Individual Packages');
var firstLoad = true;

Event.observe(window, 'load',
	function()
	{		
		centerItems();
		//switchView('month');		
	});

function getBrowserWidth()
{
	if (window.innerWidth)
		return window.innerWidth;
	else if (document.documentElement && document.documentElement.clientWidth != 0)
		return document.documentElement.clientWidth;
	else if (document.body)
		return document.body.clientWidth;		
	else
		return 0;
}

function centerItems()
{		
	var items = new Array('mainTable');
	var browserW = getBrowserWidth();
	var halfW = browserW/2;
	
	for(i = 0; i < items.length; i++)
	{
		var itemW = $(items[i]).width;
		//console.debug("New item width="+itemW);
		
		var pos = halfW - (itemW/2);	
		$(items[i]).style.float = 'left';
		$(items[i]).style.position = 'relative';
		$(items[i]).style.left = pos + 'px';
		$(items[i]).style.width = itemW;
	}
}


function genView(type, selected)
{
	var select = new Element('select', {id: 'calendarview'});
	
	var view = null;
	switch(type)
	{
		case 'month':
			view = monthView;
			break;
		case 'series':
			view = seriesView;
			break;
		case 'season':
			view = seasonView;
			break;
		default:
			return;
	}
	select.insert(new Element('option', {value: 0}).update('Please select...'));
	view.each(
		function(item, i)
		{
			var option;
			//i is 0-index, need values which start at 1 for db
			if ('month' == type)
				i++;
			
			//if (firstLoad)
			//{
			//	firstLoad = false;
			//	option = new Element('option', {value: 0, selected: "selected"}).update(item);
			//}
			//else
			if (i == selected)			
				option = new Element('option', {value: i, selected: "selected"}).update(item);
			else
				option = new Element('option', {value: i}).update(item);
				
			select.insert(option);
        });

	Event.observe(select,'change',function(){selectChange(type);});
	return select;
}

function selectChange(type)
{
	var val = $('calendarview').value;	
	window.location = '/zf/event?type=' + type + "&val=" + val;
}

function switchView(type, selected)
{
	$('viewContainer').update(genView(type, selected));
}


function restartGif()
{
	// IE workaround for very strange GIF89a bug
	$A(document.images).each(function(img)
	{
		var imgName = img.src.toUpperCase();
		if (imgName.substring(imgName.length-3, imgName.length) == "GIF")
			img.src = img.src;
	});
}

function trim (str)
{
	str = this != window? this : str;
    
	return str.replace(/^s+/, '').replace(/s+$/, '');
}

function cancelEvent(which)
{
	if (!confirm('Are you sure you want to cancel this class?'))
		return;
				
	new Ajax.Request('/zf/event/cancel',
	{
		method: 'post',
		parameters: {eventid: which},
		onSuccess: function(transport)
		{
			var errObj = transport.responseText.evalJSON();
			// integrity check ok
			if (errObj.ERRNUM == 10000)
			{
				alert(errObj.ERRMSG);
				//refresh page
				window.location = '/zf/event/';
			}
			else
			{
				alert(errObj.ERRMSG);
			}
		}
	});
}
	
function editEvent(which)
{
	var strId = $(which).id;
	var idx = strId.indexOf('_') + 1;
	var eventId = strId.substring(idx);
	$('eventid').value = eventId;
	$('eventname').value = $('eventName_'+eventId).innerHTML.replace(/[-]/gi,"");
	$('description').value = $('eventDesc_'+eventId).innerHTML;
	$('eventtype').value = $('eventType_'+eventId).innerHTML;
	$('start_p_date_and_time').value = $('datestart_'+eventId).innerHTML;
	$('end_p_date_and_time').value = $('dateend_'+eventId).innerHTML;
	$('seats').value = $('seats_'+eventId).innerHTML;
	$('price').value = $('price_'+eventId).innerHTML.replace(/[^\d.]/gi,"");
	
	var chefStr = '';
	$$('div.chef').each(function(s)
	{
		var i = s.id.indexOf('_') + 1;
		var chunk1 = s.id.substring(i);
		var j = chunk1.indexOf('_') + 1;
		var chunk2 = chunk1.substring(j);
		
		var chefEID = chunk1.substring(0,j - 1);
		//console.debug('chunk1='+chunk1+' chunk2='+chunk2+' eid='+chefEID);
		
		if (chefEID === eventId)
			chefStr += 'chef='+chunk2+'&';
	});
	$('chefs').value = chefStr.substring(0, chefStr.length - 1);
	$('editForm').submit();
}

function saveSeats(which)
{	
	checkSeats(which, parseInt($(which).value));
	var divId = $(which + '_Msg');	

	divId.show();
	restartGif();
	
	var strId = $(which).id;
	var idx = strId.indexOf('_') + 1;
	var eventId = strId.substring(idx);

	new Ajax.Request('/zf/event/add',
	{
		method: 'post',
		parameters: { eventid: eventId, seats: $(which).value },
		onSuccess: function(transport)
		{			
			var errObj = transport.responseText.evalJSON();			
			divId.hide();
			
			// cart update success for event
			if (errObj.ERRNUM == 3004)
			{
			}			
			else
			{
				alert(errObj.ERRMSG);
			}
		}
	});
}

function checkSeats(which, seats)
{	
	if (seats > 10)
		seats = 10;
	
	if (seats < 0 )
		seats = 0;

	$(which).value = seats;
}

function addEvent(which)
{
	var newVal = parseInt($(which).value) + 1;

	checkSeats(which, newVal);
	//TODO: check here to see if value changed; if not, abort call
	saveSeats(which);
}

function remEvent(which)
{
	var newVal = parseInt($(which).value) - 1;

	checkSeats(which, newVal);
	//TODO: check here to see if value changed; if not, abort call
	saveSeats(which);
}

function doSubmit()
{
	
	new Ajax.Request('/zf/event/save/',
	{
		method: 'post',
		parameters: $('newevent').serialize().toQueryParams(),
		onSuccess: function(transport)
		{			
			var errObj = transport.responseText.evalJSON();			
			// integrity check ok

			if (errObj.ERRNUM == 4013)
			{
				$('errorBox').style.border = "1px dashed green";
				$('errorBoxHeader').style.color = 'green';
				$('errorBox').style.background = "#ffffff url(/zf/public/site/images/good.gif) no-repeat 10px 10px";
				$('errorBox').show();
				if ($('eventid').value != '')
					$('errorDesc').update("Event updated successfully. You may now continue editing or return to calendar.");
				else
				{
					$('errorDesc').update("New event added successfully. You may now enter another.");
					// prepare form for another entry
					$('newevent').reset();
					$('newevent').focusFirstElement();
				}
			}
			else
			{
				$('errorBox').show();
				$('errorDesc').update(errObj.ERRMSG);
			}
			//make sure we're in viewport			
			setTimeout("window.scrollBy(0,-intoVP($('errorBox')))", 200);			
		}
	});
}

function intoVP()
{
	var yScroll;
	
	if (self.pageYOffset)
		yScroll = self.pageYOffset;
	else if (document.documentElement && document.documentElement.scrollTop)
        yScroll = document.documentElement.scrollTop; 
	else if (document.body)
        yScroll = document.body.scrollTop;

	return yScroll;
}