$(function() {
	options = {
		chattersWidth : 200,
		buddiesWidth : 150
	};
		
	uicookie = {
		set : function(){
			tocookie = escape($.toJSON(options));
			$.cookie('ui', tocookie, { path: '/', expires: 60 });
		},		
		get : function(username){
			cookie = $.cookie('ui');
			if(cookie != null) {
				cookieJSON = $.evalJSON(unescape(cookie));
				options.chattersWidth = cookieJSON.chattersWidth;
				options.buddiesWidth = cookieJSON.buddiesWidth;
			}
		}
	}
	uicookie.get();
	
	$("#chatters, #buddies").bind("contextmenu",function(e){
        return false;
    });
	
	if($.browser.msie){
		resizePMtextdiv = function(){
			$("#pmChat").css("height", $("#pmDialog").height() - $("#pmHeader").height() - $("#notPMChat").height() - 21);
		};
	}else{
		resizePMtextdiv = function(){
			$("#pmChat").css("height", $("#pmDialog").height() - $("#pmHeader").height() - $("#notPMChat").height() - 3);
		};
	}
	
	$("input").placeholder();
	 
	$('#userlist').liveFilter('ul');
	
	$("#pmDialog").dialog({
		bgiframe: true,
		autoOpen: false,
		height: 425,
		width: 550,
		resize: function(event, ui) { 
			resizePMtextdiv();
		}
	});
	
	$("#adminDialog").dialog({
		bgiframe: true,
		autoOpen: false,
		height: 425,
		width: 550,
		resize: function(event, ui) { 
			resizePMtextdiv();
		}
	});
	
	$("#roomDialog").dialog({
		bgiframe: true,
		autoOpen: false,
		height: 400,
		width: 650,
		resize: function(event, ui) { 
			$("#roomlist-container").css("height", $("div#roomDialog").height() - $("div#roomDialog .innerbg:last").height() - $("div#roomListMsg").height() - 37);
		}
	});
	
	$("#placeholder").dialog({
		bgiframe: true,
		autoOpen: false,
		height: 300,
		width: 350
	});
	
	$("#errorDialog").dialog({
		bgiframe: true,
		autoOpen: false,
		height: 280,
		top: 150,
		modal: true,
		zIndex: 8999
	});
	
	$("#settings").dialog({
		bgiframe: true,
		autoOpen: false,
		height: 300,
		width: 350,
		resize: function(event, ui) { 
			$("#settingsAccordion").accordion("resize");
		}
	});
	
	$("#help").dialog({
		bgiframe: true,
		autoOpen: false,
		height: 300,
		width: 350
	});
	
	$("#manage-room").dialog({
		bgiframe: true,
		autoOpen: false,
		height: 400,
		width: 650
	});
	
	$('button').button();
	$('form').submit(function(ev){
		ev.preventDefault();
	});
	
	$('.settings').bind("click", function(){
		$("#settings").dialog('open');
	});	
	$("#settingsAccordion").accordion({
		fillSpace: true
	});
	
	$('.help').bind("click", function(){
		$("#help").dialog('open');
	});
	
	$("ul.horiBtns").noContext();
	
	/* End fluid window sizing. */
	
	window.onbeforeunload = function (e) {
	  var e = e || window.event;
	  var msg = 'Confirm closing the chat(In case you hit refresh, back, ctrl+f4, etc on accident).';
	  // For IE and Firefox
	  if (e) {
	    e.returnValue = msg;
	  }	
	  // For Safari
	  return msg;
	};


//fluid resizable and draggable menus.
	var $container = $("#menus");
	var $buddies = $("#buddies");
	var $center = $("#center");
	var $chatters = $("#chatters");
	
	$buddies.width(options.buddiesWidth - ($buddies.outerWidth() - $buddies.width()));
	$chatters.width(options.chattersWidth - ($chatters.outerWidth() - $chatters.width()));
	
	setOuterHeights = function(){
		$container.height($(window).height() - $container.siblings().height());
		$center.width($center.parent().width() - ($chatters.outerWidth() + $buddies.outerWidth()) - ($center.outerWidth() - $center.width()));
		$container.children('li').each(function(index){
			$(this).height($(this).parent().height() - ($(this).outerHeight(true) - $(this).height()));
		});
	}
	resizeCHATtextdiv = function(){
		$("#mainChat").css("height", $center.outerHeight() - $("#mainChat").siblings().outerHeight(true) - ($("#mainChat").outerHeight(true) - $("#mainChat").height()));
	};
	resizeBuddylist = function(){
		$("#buddylist").css("height", $buddies.outerHeight() - $("#buddylist").siblings().outerHeight(true));
	};
	resizeUserlist = function(){
		$("#userlist").css("height", $chatters.outerHeight() - $("#userlist").siblings().outerHeight(true));
	};
	setOuterHeights();
	resizeCHATtextdiv();
	resizeBuddylist();
	resizeUserlist();
	var resizeTimeout = null;
	$(window).resize(function(){
		setOuterHeights();
		resizeCHATtextdiv();
		resizeBuddylist();
		resizeUserlist();
	});
	
	var dragging = null;
	$(".sortable").draggable({
		revert: true,
		revertDuration: 0,
		handle: '.handle',
		containment: 'parent',
		opacity: 0.5,
		helper: 'clone',
		start: function(){
			setDropTargets();
			dragging = $(this);
		},
		stop: function(ev, ui){
			if($(ev.originalTarget).hasClass('droptarget'))
				dragging.insertBefore(ev.originalTarget);
			removeDropTargets();
			setResizing();
		}
	});
	
	var resizeBuffer = 50;
	var resizeBufferHalf = resizeBuffer / 2;
	setResizing = function(){
		var leftDist = 0;
		var elHeight = $("#menus").height();
		$('.divider').remove();
		$('.resizable').each(function(index){
			if (index == $('.sortable').length - 1) 
				return;
			var el = $(this);
			leftDist += el.outerWidth(true);
			
			var dividerEl = $('<ul />', {
				css: { left: leftDist, height: elHeight },
				className: 'divider'
			});
			var nextEl = el.next('.sortable');
			var startX = null;
			var elWidth = el.width();
			var nextElWidth = nextEl.width();
			dividerEl.insertAfter(el);
			dividerEl.draggable({
				containment: [ leftDist - elWidth + resizeBufferHalf - 5,
								0,
								leftDist + nextElWidth - (resizeBufferHalf - 5),
								$(window).height() ],
				start: function(ev){
					startX = ev.pageX;
				},
				drag: function(ev, ui){
					newX = startX - ui.position.left;
					el.css('width', elWidth - newX);
					nextEl.css('width', nextElWidth + newX);
				},
				stop: function(ev){
					setResizing();
					options.chattersWidth = $chatters.width();
					options.buddiesWidth = $buddies.width();
					uicookie.set()
				}
			});
			
		});
	}
	setResizing();
	
	setDropTargets = function(){
		var leftDist = 0;
		var elHeight = $container.height();
		$('.sortable').each(function(index){
			var el = $(this);
			leftDist += el.outerWidth(true);
			
			var newEl = $('<li />', {
				css: { left: leftDist, height: elHeight },
				className: 'droptarget'
			});
			newEl.insertAfter(el);
			if (index == $('.sortable').length - 2) {
				newEl.css('width', '20px');
				return false;
			}
		});
		var newEl = $('<li />', {
			css: { left: 0, height: elHeight, width: 20, margin: 0
			},
			className: 'droptarget'
		})
		newEl.prependTo($container);
	}
	removeDropTargets = function(){
		$container.children('.droptarget').remove();
		$container.children('.ui-draggable-dragging').remove();
	}

});


var kkeys = [], konami = "38,38,40,40,37,39,37,39,66,65";
$(document).keydown(function(e) {
  kkeys.push( e.keyCode );
  if ( kkeys.toString().indexOf( konami ) >= 0 ){
    $(document).unbind('keydown',arguments.callee);
    $.getScript('http://www.cornify.com/js/cornify.js',function(){
      cornify_add();
      $(document).keydown(cornify_add);
    });          
  }
});