var defaultUEIndex = 1;
var currentUEIndex = 0;
var timerUEIndex = 1;
var eventRotateDelay = 5000; //5000; //time in milliseconds
var clickEventRotateDelay = 10; //10000; //time in milliseconds

var numevents = 0;

var elementHeight = 0;

jQuery.preloadImages = function()
{
	for(var i = 0; i<arguments.length; i++)
	{
		jQuery("<img>").attr("src", arguments[i]);
	}
}

function selectEvent(index, eventid, flashimage, promoline1, promoline2, ticketurl)
{
	/*
	If we have a click event, we stop the auto rotate for 15 seconds, and then resume again.
	This gives ample time to the user to click on any links for that event.
	*/
	if(arguments[6])
	{
		timerUEIndex = index;
		
		
		/*$(document).stopTime('rotateevents');
		$(document).oneTime(clickEventRotateDelay,'rotateevents', 	function()
												{
													$(document).everyTime(eventRotateDelay, 'rotateevents', function(){
														//alert(currentUEIndex);
														var timereventid = $("#eventid_"+timerUEIndex).val();
														var timerflashimage = $("#flashimage_"+timerUEIndex).val();
														var timerpromoline1 = $("#promoline1_"+timerUEIndex).val();
														var timerpromoline2 = $("#promoline2_"+timerUEIndex).val();
														var timerticketurl = $("#ticketurl_"+timerUEIndex).val();
														selectEvent(timerUEIndex, timereventid, timerflashimage, timerpromoline1, timerpromoline2, timerticketurl);
														
														timerUEIndex ++;
														if(timerUEIndex > numevents)
														{
															timerUEIndex = defaultUEIndex;
														}
														
														//currentUEIndex = timerUEIndex;
													});
												});*/
		if($(".UEPic:animated"))
		$(".UEPic:animated").stop();
	
		if($(".UEOnArrow:animated"))
		{
			$(".UEOnArrow:animated").stop();
			if(currentUEIndex != index)
				$(".UEOnArrow").hide();
		}
		
		if($(".UEDetailPromoline1:animated"))
			$(".UEDetailPromoline1:animated").stop();
		if($(".UEDetailPromoline2:animated"))
			$(".UEDetailPromoline2:animated").stop();
		if($(".UEDetailLinks:animated"))
			$(".UEDetailLinks:animated").stop();
	}
	
	if(currentUEIndex != index)
	{
		var elOld = $("#UE"+currentUEIndex);
		elOld.hide();
		elOld.removeClass("UEOn").addClass("UEOff").fadeIn("fast");
		
		var UEOnArrow = $(".UEOnArrow");
		
		UEOnArrow.hide();
		
		
		var el = $("#UE"+index);
		var elOffset = el.offset();
		var elHeight = el.outerHeight();
		
		var idx = $(".UEListItem").index(el);
		
		var slot = idx + parseInt( parseInt($(".UEList").css("top")) / elHeight );
		
		if(slot >= 10)
			slot = 10;
		
		if(slot < 0)
			slot = 0;
		
		if(slot >= 10)
		{
			$(".UEList").animate({"top": "-="+(elHeight)+"px"}, "fast", "swing");
		}
		else
		{
			if(currentUEIndex == numevents && !arguments[6])
				$(".UEList").animate({"top": 0}, "fast", "swing");
		}
		
		
		var leftBorder = parseInt(el.css("borderLeftWidth"));
		var topBorder = parseInt(el.css("borderTopWidth"));
		
		el.hide();
		el.removeClass("UEOff").addClass("UEOn").fadeIn("fast");
		var arrowHeight = UEOnArrow.height();
		
		//var setTop = elOffset.top + Math.ceil((elHeight - arrowHeight) / 2);
		
		var setTop = (slot * elHeight) + Math.ceil((elHeight - arrowHeight) / 2);
		
		var setLeft = $(".UEPic").width();
		
		var arrowWidth = parseInt(UEOnArrow.css("width"));
		
		if($.boxModel)
		{
			//UEOnArrow.css({top:setTop,left:elOffset.left+1});
			
			if(arguments[6])
			{
				//UEOnArrow.css({left:setLeft+2});
				UEOnArrow.css({top:setTop,left:setLeft+2});
			}
			else
			{
				if(slot >= 10)
				{
					setTop = ((slot-1) * elHeight) + Math.ceil((elHeight - arrowHeight) / 2);
					UEOnArrow.css({top:setTop,left:setLeft+2});
				}
				else
				{
					UEOnArrow.css({top:setTop,left:setLeft+2});
				}
			}
			
			UEOnArrow.css("opacity","show").animate({"left": "-="+(arrowWidth), "opacity":"show"}, "fast", "swing");
		}
		else
		{
			//i've had it with bloody Internet Explorer! Going to boycott this shit!
			UEOnArrow.css({top:setTop-topBorder+1 , left:setLeft+leftBorder+1});
			UEOnArrow.css("opacity","show").animate({"left": "-="+(arrowWidth+leftBorder-1), "opacity":"show"}, "fast", "swing");
		}
		
		
		
		var UEPic = $(".UEPic");
		//UEPic;
		
		var img = $("<img src=\"/userfiles/image/events/" + flashimage + "\" />");
		
		UEPic.fadeTo("fast", 0,	function(){
									UEPic.html(img).fadeTo("fast", 1.0);
								});
		
		var UEDetailPromoline1 = $(".UEDetailPromoline1");
		var UEDetailPromoline2 = $(".UEDetailPromoline2");
		
		UEDetailPromoline1.fadeTo("fast", 0,	function(){
									if(promoline1.length > 35)
									{
										$(UEDetailPromoline1).css("font-size","13px");
										promoline1 = promoline1.substr(0,35) + "...";
									}
									else
									{
										$(UEDetailPromoline1).css("font-size","15px");
									}
									UEDetailPromoline1.html(""+promoline1);
									UEDetailPromoline1.fadeTo("fast", 1.0);
								});
		
		UEDetailPromoline2.fadeTo("fast", 0,	function(){
									UEDetailPromoline2.html(""+promoline2).fadeTo("fast", 1.0);
								});
		
		var theTicketLink = "";
		if($.trim(ticketurl) != "")
		{
			theTicketLink = "<a href=\""+ticketurl+"\" target=\"_blank\" onmouseover=\"return setStatus('Buy Ticket Now');\" onmouseout=\"return setStatus('');\">Buy Ticket Now</a><br />";
		}
		var links = $( theTicketLink + "<a href=\""+siteurl+"index.cfm/PageID/2/EventID/"+eventid+"/\" onmouseover=\"return setStatus('More Info');\" onmouseout=\"return setStatus('');\">More Info</a>");
		
		var UEDetailLinks = $(".UEDetailLinks");
		UEDetailLinks.fadeTo("fast", 0,	function(){
									UEDetailLinks.html(links).fadeTo("fast", 1.0);
								});
		currentUEIndex = index;
	}
	
	//animate scrollbar
	var handleheight = parseInt(280/parseInt(numevents));
	
	$(".UEScrollerHandle").animate({
		"top":((currentUEIndex == 1)?0:((currentUEIndex-1) * handleheight))+"px"
	}, "fast", "swing");
}

function assignClick(el, index, eventid, flashimage, promoline1, promoline2, ticketurl)
{
	$(el).click(function(e)
	{
		selectEvent(index, eventid, flashimage, promoline1, promoline2, ticketurl, e);
	});
}

$(function()
{
	numevents = $("#numevents").val();
	
	$(".UEListItemTitle").tooltip({
		delay:0,
		track:true,
		id:"UEtooltip"
	});
	
	var handleheight = parseInt(280/parseInt(numevents));
	
	$(".UEScrollerHandle").css("height",handleheight+"px").draggable({
		containment:"parent",
		axis:"y",
		grid:[13,handleheight],
		stop:function(e,ui)
		{
			var elHeight = elementHeight;
			var $top = ui.position.top;
			var $listtop = parseInt($(".UEList").css("top"));
			var $listbottom = parseInt($(".UEList").outerHeight()) + $listtop;
			//console.log(parseInt($listtop) >= -( (numevents - 10) * elHeight ) && );
			
			var $idx = parseInt($top/handleheight);
			
			if(  -( (parseInt($top/handleheight)) * elHeight) >= -( (numevents - 10) * elHeight ))
			{
				//$(".UEOnArrow").hide();
				var moveTop = -( (parseInt($top/handleheight)) * elHeight );
				
				var el = $("#UE"+currentUEIndex);
				var idx = $(".UEListItem").index(el);
				
				//console.log(parseInt(el.position().top));
				var elOffset = el.offset();
				var elHeight = el.outerHeight();
				
				var arrowHeight = $(".UEOnArrow").height();
				var setTop = moveTop + (idx * elHeight) + Math.ceil((elHeight - arrowHeight) / 2);
				$(".UEOnArrow").animate({top:setTop+"px"}, "fast", "swing");
				
				$(".UEList").animate({"top": moveTop+"px"}, "fast", "swing");
				//realignArrow();
			}
			else
			{
				//$(".UEOnArrow").hide();
				var moveTop = -( (numevents - 10) * elHeight );
				
				var el = $("#UE"+currentUEIndex);
				var idx = $(".UEListItem").index(el);
				
				//console.log(parseInt(el.position().top));
				var elOffset = el.offset();
				var elHeight = el.outerHeight();
				
				var arrowHeight = $(".UEOnArrow").height();
				var setTop = moveTop + (idx * elHeight) + Math.ceil((elHeight - arrowHeight) / 2);
				$(".UEOnArrow").animate({top:setTop+"px"}, "fast", "swing");
				
				$(".UEList").animate({"top": moveTop+"px"}, "fast", "swing");
			}
		}
	});
	
	resetHeightUEListItems();
	$(".UEContainer").disableTextSelect().hover(
		function(e)
		{
			$(document).stopTime('rotateevents');
		},
		function(e)
		{
			$(document).oneTime(clickEventRotateDelay,'rotateevents', 	function()
												{
													$(document).everyTime(eventRotateDelay, 'rotateevents', function(){
														//alert(currentUEIndex);
														var timereventid = $("#eventid_"+timerUEIndex).val();
														var timerflashimage = $("#flashimage_"+timerUEIndex).val();
														var timerpromoline1 = $("#promoline1_"+timerUEIndex).val();
														var timerpromoline2 = $("#promoline2_"+timerUEIndex).val();
														var timerticketurl = $("#ticketurl_"+timerUEIndex).val();
														selectEvent(timerUEIndex, timereventid, timerflashimage, timerpromoline1, timerpromoline2, timerticketurl);
														
														timerUEIndex ++;
														if(timerUEIndex > numevents)
														{
															timerUEIndex = defaultUEIndex;
														}
														
														//currentUEIndex = timerUEIndex;
													});
												});
		}
	);
	
	
	var defaulteventid = $("#eventid_"+defaultUEIndex).val();
	var defaultflashimage = $("#flashimage_"+defaultUEIndex).val();
	var defaultpromoline1 = $("#promoline1_"+defaultUEIndex).val();
	var defaultpromoline2 = $("#promoline2_"+defaultUEIndex).val();
	var defaultticketurl = $("#ticketurl_"+defaultUEIndex).val();
	
	setTimeout(	function()
				{
					selectEvent(defaultUEIndex, defaulteventid, defaultflashimage, defaultpromoline1, defaultpromoline2, defaultticketurl);
					
	
					$(document).everyTime(eventRotateDelay, 'rotateevents', function(){
						//alert(currentUEIndex);
						var timereventid = $("#eventid_"+timerUEIndex).val();
						var timerflashimage = $("#flashimage_"+timerUEIndex).val();
						var timerpromoline1 = $("#promoline1_"+timerUEIndex).val();
						var timerpromoline2 = $("#promoline2_"+timerUEIndex).val();
						var timerticketurl = $("#ticketurl_"+timerUEIndex).val();
						selectEvent(timerUEIndex, timereventid, timerflashimage, timerpromoline1, timerpromoline2, timerticketurl);
						
						timerUEIndex ++;
						if(timerUEIndex > numevents)
						{
							timerUEIndex = defaultUEIndex;
						}
						
						//currentUEIndex = timerUEIndex;
					});
					
					$(window).resize(function(){ 
						realignArrow();
					});
				},
				eventRotateDelay);
});

function setStatus(msg)
{
	window.status = msg;
	return true;
}

function realignArrow()
{
	var UEOnArrow = $(".UEOnArrow");
	var el = $("#UE"+currentUEIndex);
			
	var leftBorder = parseInt(el.css("borderLeftWidth"));
	var topBorder = parseInt(el.css("borderTopWidth"));
	
	var elOffset = el.offset();
	var elHeight = el.outerHeight();
	var arrowHeight = UEOnArrow.height();
	
	//var setTop = elOffset.top + Math.ceil((elHeight - arrowHeight) / 2);
	var idx = $(".UEListItem").index(el);
	var setTop = (idx * elHeight) + Math.ceil((elHeight - arrowHeight) / 2);
	
	var setLeft = $(".UEPic").width();
		
	var arrowWidth = parseInt(UEOnArrow.css("width"));
	
	if($.boxModel)
	{
		//UEOnArrow.css({top:setTop,left:elOffset.left+1});
		UEOnArrow.css({top:setTop,left:setLeft - arrowWidth + 2});
		//UEOnArrow.css("opacity","show").animate({"left": "-="+(arrowWidth), "opacity":"show"}, "fast", "swing");
	}
	else
	{
		//i've had it with bloody Internet Explorer! Going to boycott this shit!
		UEOnArrow.css({top:setTop-topBorder+1 , left:setLeft+leftBorder+1 - (arrowWidth+leftBorder-1)});
		//UEOnArrow.css("opacity","show").animate({"left": "-="+(arrowWidth+leftBorder-1), "opacity":"show"}, "fast", "swing");
	}
}

function resetHeightUEListItems()
{
	var listHeight = $(".UEList").height();

	//var totalItems = $(".UEListItem").size();
	var totalItems = 10;
	var heightToSet = Math.floor(listHeight/totalItems);
	elementHeight = heightToSet;
	
	$(".UEListItemDate, .UEListItemTitle").css("line-height",heightToSet-1+"px");
	$(".UEListItem,.UEListItemContainer").height(heightToSet-1).show();
}

