function _addParams(url, params) {
	if(url.indexOf('?') == -1) {
		url += '?';		
	}
	else {
		url += '&';
	}
	
	for(key in params) {
		url += key + '=' + params[key] + '&';	
	}

	return url;
}
function onLoadIFrame()
{
	// grab the entire html contents because somehow the form tag
	// ends up in the head tag sometimes
    var html =  $('#ajaxIFrame').contents().find('html').html();
    
    // remove body and head tags
    html = html.replace(/\<\/?body\>|\<\/?head\>/gi,'');

	$('#ajaxPopup').html(html);
	$('#ajaxPopupHolder').center();
	
	// if there is no form in this iframe then set a timeout to close the iframe window
	if($('#ajaxIFrame').contents().find('form').length == 0) {
		setTimeout("$('#ajaxPopupHolder').fadeOut()",2000);
		if($('#ajaxPopupHolder #ajaxAction').length) {
			if($('#ajaxPopupHolder #ajaxAction').val().indexOf('(') == -1) {
				eval($('#ajaxPopupHolder #ajaxAction').val() + '();');
			}
			else {
				eval($('#ajaxPopupHolder #ajaxAction').val() + ';');
			}
		}
	}
	else {
		
		$('#ajaxPopup form').attr('target','ajaxIFrame');
		
		var action = $('#ajaxPopup form').attr('action');
		action = _addParams(action,{isAjaxPopup:1,isAjax:1});
		$('#ajaxPopup form').attr('action',action);
		
		$('#ajaxPopup .submit').click( function(){ } );
	}
	
	$('#ajaxPopupHolder').fadeIn();
}

jQuery.fn.center = function () {
    this.css("position","fixed");
    this.css("top", ( $(window).height() - this.height() ) / 2 + "px");
    this.css("left", ( $(window).width() - this.width() ) / 2 + "px");
    //this.css("top", ( $(window).height() - this.height() ) / 2+$(window).scrollTop() + "px");
    //this.css("left", ( $(window).width() - this.width() ) / 2+$(window).scrollLeft() + "px");
    return this;
}

$(document).ready(function() {
	
	// collapse items in the cookie	
	var collapsedItems = $.cookie('leftColumnCollapsed');
	// this is not working right in all browsers
	/*
	if(collapsedItems) {
		collapsedItems = collapsedItems.replace(/^[^|]*\|/,'');
		collapsedItems = collapsedItems.substr(0, collapsedItems.length - 1);
		
		var items = [];
		
		if(collapsedItems.indexOf('||') != -1) {
			items = collapsedItems.split('||');
		}
		else {
			items[0] = collapsedItems;
		}
		
		for(var item in items) {
			var indexes = items[item].split(',');
			var selector = '#leftColumn > :eq(' + indexes.join(') > :eq(') + ')';
			$(selector).addClass('collapsed');
			jQuery.each($(selector).parent().nextAll(), function() {
				if($(this).is('.footer') || $(this).is('dt')) {
					return false;
				}
				else {
					$(this).hide();
				}
			});
		}
	}
		*/
				
	$('.toggle').click(function() {
		$(this).toggleClass('collapsed');
		
		// save the state of left hand column elements for now
		if($(this).parents('#leftColumn').length) {
			
			var indexList = $(this).parent().children().index(this);
			jQuery.each($(this).parents(),function() {
				if($(this).is('#leftColumn')) {
					return false;
				}
				indexList = $(this).parent().children().index(this) + ',' + indexList;
			});
			
			var collapsedItems = $.cookie('leftColumnCollapsed');
			var stringIndex = collapsedItems ? collapsedItems.indexOf('|' + indexList + '|') : -1;
			
			if($(this).is('.collapsed')) {
				if(stringIndex == -1) {
					// add the item
					collapsedItems += '|' + indexList + '|';
				}
			}
			else if(stringIndex != -1) {
				// remove the item
				collapsedItems = collapsedItems.replace('|' + indexList + '|','');
			}
			
			$.cookie('leftColumnCollapsed',collapsedItems, { path: '/', expire: 365 } );
		}
		
		jQuery.each($(this).parent().nextAll(), function() {
			if($(this).is('.footer') || $(this).is('dt')) {
				return false;
			}
			else if($(this).is('.friends')) {
				// special hack for toggle not working on friends div - doesn't like hide('fast')
				if($(this).is(':visible')) {
					$(this).hide();
				} 
				else {
					$(this).show('fast');
				}
				return true;
			}
			else {
				$(this).toggle('fast');
				return true;
			}
		});
		
		return false;
	});

	$("#meetCharacters").click(function(){
		Shadowbox.open({
			content: '/swf/characters.swf?requestSource=game',
			player: 'swf',
			width: '900',
			height: '600',
			handleOversize: 'none'
		});
		$('#sb-wrapper').attr('class','largeFrame');
		return false;
	});
	
	$(".isAjaxPopup").click(function() {

		$('#ajaxPopupHolder').remove();
		$('body').append('<div id="ajaxPopupHolder">' + 
			'<table cellspacing="0" id="ajaxTable"><tbody>' +
			'<tr><td class="hdr1"></td><td class="hdr2"><a href="javascript:" class="closeBtn"></a></td><td class="hdr3"></td></tr>' +
			'<tr><td class="leftBrdr"></td><td class="content" id="ajaxPopup"></td><td class="rightBrdr"></td></tr>' +
			'<tr><td class="ftr1"></td><td class="ftr2"></td><td class="ftr3"></td></tr>' +
			'</tbody></table>' +
			'</div>'
			);
		$('#ajaxPopupHolder .hdr2 .closeBtn').click(function() { $('#ajaxPopupHolder').fadeOut(); } );
		
		var regexp = /onSuccess:([a-zA-Z0-9\(\)]+)/i;
		var ajaxAction = regexp.exec($(this).attr('class'))
		if(ajaxAction.length) {
			$('#ajaxPopupHolder').append('<input type="hidden" name="ajaxAction" id="ajaxAction" value="' + ajaxAction[1] + '" />');
		}
		
		$('#ajaxIFrame').remove();
		var popupUrl = _addParams($(this).attr('href'), {isAjaxPopup:1,isAjax:1});
		$('#ajaxPopupHolder').append('<iframe src="'+popupUrl+'" style="width:0;height:0;" id="ajaxIFrame" name="ajaxIFrame" frameborder="0" scrolling="0" onload="onLoadIFrame()"></iframe>');
		return false;
	});
});
