$(function()
{
	//FLIR.auto();
	//FLIR.auto(['h2','h3','ul#menu li a','button','a.button']);
	//$("h2, h3:not(#current-balance), ul.menu li:not(#logout) a").each(function(){FLIR.replace(this);});
	$(':not(fieldset,.fixed).scroll.main-col .content, div.terms').jScrollPane({scrollbarWidth: 14, showArrows: true});

	initTicker();
	fixHintLabels($("#loginform:not(.staticlabels)"));
	
	if ($("#chat").length > 0)
	{
		//alert($("#chat"));
		var chat = new LiveChat("jp60sek",$("#chat"));
		chat.start();		
	}

	var jpl = new JPList($("#jp-list"),"jplist");
	jpl.start();
	
	var messageBar = $("#message-bar, .errors, .infobox");
	//alert(messageBar.length);
	
	if (messageBar.length > 0)
	{
		//messageBar.css({opacity:0}).animate({opacity:1},200)
		var fadeTime = 200;
		var fadeAmount = 0.7;
		messageBar.each(function(){$(this).animate({opacity:fadeAmount},fadeTime).animate({opacity:1},fadeTime)
				  .animate({opacity:fadeAmount},fadeTime).animate({opacity:1},fadeTime)});
		//messageBar.effect("highlight",{},1000);		
	}
});

var JPList = function(obj,typeVal)
{
	var container = $(obj);
	var items = new Array();
	var curItem = null;
	var type = typeVal;
	
	this.start = function()
	{
		var self = this;
		var index = 0;
		var domItems = container.children(); //container.find("li");
		var lastItem = null;
				
		//alert(items.length);
		
		if (domItems.length < 4)
			return;
				
		domItems.each(function()
		{
			container.css({display: 'block'});
			var item = $(this);
			if (lastItem)
				lastItem.data("nextItem",item);
				
			items.push(item);
			initItem(item,index);
			index++;
			lastItem = item;
		});
		
		if (items.length > 0)
		{
			items[domItems.length-1].data("nextItem",items[0]);		
			startAnim();
		}
	}
	
	var initItem = function(item,index)
	{
		//alert(item+" = "+index);
		//$(item).data("index",index);
		if (type == "jplist")
			item.hide();
	}
	
	var startAnim = function()
	{
		curItem = items[0];
		curItem.show();
		var interval = 5000;
		if (type != "jplist")
			interval = 8000;
		setInterval(showNextItem,interval);
	}
	
	var showNextItem = function()
	{
		var item = curItem;
		curItem = curItem.data("nextItem");
		//item.show(500,function(){curItem.fadeIn(500);});
		
		if (type == "jplist")
		{	
			if ($.browser.msie && ($.browser.version < 7))
			{			
				item.hide();
				curItem.show();
			}
			else
			{				
				item.hide(500,function(){item.appendTo(container)});
				curItem.show(500);
			}
		}
		else
		{
			item.animate({marginLeft:"-255px"},500,"linear",function(){item.css({marginLeft:'0'}); item.appendTo(container)});
		}
	}
}

var LiveChat = function(roomNameVal,containerVal)
{
	var roomName=roomNameVal;
	var url="/api/chathistory.php?output=json&room="+roomName+"&date=2009-02-17";
	var items = new Array();
	var container = containerVal;
	var displayTimer = null;
	var atBottom = false;
		
	this.start = function()
	{
		container.parent().jScrollPane({animateTo:true, animateInterval: 100, animateStep:2});
		//console.log(container.parent()[0]);
		updateScroller();
		fetchItems();

		container.parent().parent().append("<canvas id=\"chat-canvas\" width=\"219\" height=\"186\"></canvas>");
		initCanvas();
	}
	
	var initCanvas = function()
	{
		var canvas = $("#chat-canvas")[0];
		
		if (!canvas.getContext)
			return;
			
		var ctx = canvas.getContext('2d');
				
		var bgcol = container.parent().parent().parent().css("background-color");
		//console.log(bgcol);
		
		var newBgCol = bgcol.substring(4,bgcol.lastIndexOf(")"));
		//console.log(newBgCol);
		
		//canvas.css("position: absolute; top: 0; left: 0; z-index: 20;");
		
		var w = container.parent().parent().width();
		var h = 186;
		
		//console.log("width: "+w);
		
		$(canvas).css({width:w+"px"});
	
		var col1 = "RGBA("+newBgCol+", 255)" //"RGBA(0,0,0,255)";
		var col2 = "RGBA("+newBgCol+", 0)" //"RGBA(0,0,0,0)";
		
		var grad = ctx.createLinearGradient(0,0,0,h);
		grad.addColorStop(0,col1);
		grad.addColorStop(.25,col2);
		grad.addColorStop(.75,col2);
		grad.addColorStop(1,col1);
		
		ctx.fillStyle = grad;
		ctx.fillRect(0,0,w,h);
	}
	
	var stopDisplayUpdates = function()
	{
		//console.log("stopping");
		clearInterval(displayTimer);
		displayTimer = null;
	}
	
	var startNextUpdate = function(interval)
	{
		if (interval == null)
			interval = 1000 + (Math.random() * 3000);
	
		displayTimer = setInterval(update,interval);
	}
	
	var fetchItems = function()
	{
		$.getJSON(url,onItemsFetched);
	}
	
	var onItemsFetched = function(data)
	{
		$("#chat-loading").hide();
		$.each(data.list,parseItem);
		if (items.length > 0 && displayTimer == null)
			startNextUpdate();
	}
	
	var parseItem = function(index,item)
	{
		//console.log(item);
	
			var time = item.timestamp;
			time = time.substring(1,time.lastIndexOf(']'));
			//console.log('*'+time+'*');
					
			//var date = new Date();
			var date = getDate(time);
			//console.log(date.toUTCString());
			
		item.date = date;
		items.push(item);
	}
	
	var getDate = function(time)
	{
		var year = time.substring(0,4);
		var day = time.substring(5,7);
		var month = time.substring(8,10);
		var hour = time.substring(11,13);
		var min = time.substring(14,16);
		var sec = time.substring(17,19);
		
		//console.log(year+","+month+","+day+","+hour+","+min+","+sec);
		//year = null;
		//month = null;
		//day = null;
		//return new Date(year,month,day,hour,min,sec);
		var date = new Date();
		date.setHours(hour,min,sec);
		return date;
	}
	
	var update = function()
	{
		var item = items.shift();
		//console.log("displaying "+item.alias+" = "+item.text+" in "+container[0]);
		//console.log(items.length+" items left");
		atBottom = container.parent().data('jScrollPanePosition') == container.parent().data('jScrollPaneMaxScroll');

		container.append("<dt>"+item.alias+"</dt><dd>"+item.text+"</dd>");
		container.parent().jScrollPane({animateTo:true, animateInterval: 100, animateStep:2});

		if (atBottom)
			updateScroller();
		
		stopDisplayUpdates();

		if (items.length == 0)
		{
			//console.log("item length is 0, stopping");
		}
		else
		{
			//console.log(items[0].date);
			//console.log(items[0].date + " vs " + item.date);
			var diff = items[0].date - item.date;
			//if(console)
			//	console.log(items[0].date);
			
			if (diff > 8000)
				diff = 8000;
			startNextUpdate(diff);
		}
	}
	
	var updateScroller = function()
	{
		//console.log(container.parent().data('jScrollPanePosition') + ' vs' + container.parent().data('jScrollPaneMaxScroll'));
		//if (!atBottom)
		//	return;
		
		if (container.parent()[0].scrollTo)
			container.parent()[0].scrollTo(container.parent().data('jScrollPaneMaxScroll'));
	}	
}

function fixHintLabels(form)
{
	form.find("label").each(function()
	{
		var label = $(this);
		label.addClass("hintlabel");

		var input = label.parent().find("#"+label.attr("for"));
		
		if (input.val() != "")
			label.addClass("hintlabel-hidden");
			
		input.focus(function(){			
			if (input.val() == "")
				label.addClass("hintlabel-hidden");
		});
		
		input.blur(function(){
			//console.log("blurring "+input.attr("id")+", value is: "+input.val());
			if (input.val() == "")
				label.removeClass("hintlabel-hidden");
		});

		fn = function(){
			label.addClass("hintlabel-hidden");
			input.focus();
		};
		
		label.click(fn);
		input.click(fn);
	});
}

function onFlirElementReplaced(element, fstyle)
{
	el = $(element);
	if (el[0].tagName == "H2")
	{
		el.find("img.flir-image").wrap("<span class=\"flir-wrapper\"></span>");
	}	
}

function onFlirElementReplacing(element, fstyle)
{
	/*
	el = $(element);
	content = el.html();
	el.after("<span class=\"print-only\">"+content+"</span>");
	*/
	return element;
}

/*
var din = {
	src: '/images/rockwell.swf'
};

sIFR.useStyleCheck = true;
sIFR.activate(din);

sIFR.replace(din, {
	selector: 'h2',
	wmode:'transparent',
	css:{'.sIFR-root' : {'color':'#FFFFFF'}}
});
*/

function initTicker()
{
	var bar = $("#winnerbar ul");

	var barWidth = 0;

	bar.find("li").each(function(index)
	{
		var item = jQuery(this);
		barWidth += item.width() + parseInt(item.css("padding-right"),10);
	});
	
	bar.css({width: barWidth+"px"});
	//console.log("w: "+bar.parent().width());
	animateTicker(bar,(barWidth - bar.parent().width()) * -1);
}

function animateTicker(bar,pos)
{
	//console.log("animating to "+pos);
	/*
	el = $("#scrollcontainer").get(0);
	el.scrollLeft = 0;
	
	console.log(el.scrollLeft);
	setInterval(function()
	{
		//console.log(el.scrollLeft);
		el.scrollLeft += 1;	
		//if (el.scrollLeft )
	},50);
	*/
	
	//bar.attr("scrollLeft",200);
	//bar.animate({scrollLeft: "600"},1000,"linear");
	
	//bar.css({left: "100%"});
	//bar.animate({left: "-100%"},20000,"linear",function(){animateTicker(bar);});
	
	//bar.css({left: bar.parent().width()});
	if (pos == 0)
		newPos = (bar.width() - bar.parent().width()) * -1;
	else
		newPos = 0;
		
	bar.animate({left: pos+"px"},60000,"linear",function(){ animateTicker(bar,newPos); });
}