

function setCookie( name, value, expires, path, domain, secure )
{
// set time, it's in milliseconds
var today = new Date();
today.setTime( today.getTime() );

/*
if the expires variable is set, make the correct
expires time, the current script below will set
it for x number of days, to make it for hours,
delete * 24, for minutes, delete * 60 * 24
*/
if ( expires )
{
expires = expires * 1000 * 60 * 60 * 24;
}
var expires_date = new Date( today.getTime() + (expires) );

document.cookie = name + "=" +escape( value ) +
( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
( ( path ) ? ";path=" + path : "" ) +
( ( domain ) ? ";domain=" + domain : "" ) +
( ( secure ) ? ";secure" : "" );
}

// this fixes an issue with the old method, ambiguous values
// with this test document.cookie.indexOf( name + "=" );
function getCookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f

	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );


		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found )
	{
		return null;
	}
}

//jQuery.userIsAdmin = false;

jQuery.preloadImages = function()
{
  for(var i = 0; i<arguments.length; i++)
  {
    jQuery("<img>").attr("src", arguments[i]);
  }
}

jQuery.addMouseOver = function ()
{
	
	for(var i = 0; i<arguments.length; i+=2)
	{
		var elem = $(arguments[i]);
		for (var j = 0; j<elem.length; j++)
		{
			jQuery.preloadImages(elem[j].src.replace("_off","_on"));
			
		}
		elem.hover(
			 function()
			 {
			  this.src = this.src.replace("_off","_on");
			 },
			 function()
			 {
			  this.src = this.src.replace("_on","_off");
			 }
		);
	}
}

function isIE6()
{
	return ($('.ie6').length > 0);
}

jQuery.removeFav = function (base, game)
{
	$("#favorite_list_inner").load(base+"/ajax/remove_fav/"+game);
}

jQuery.addFav = function (base, game)
{
	$("#favorite_list_inner").load(base+"/ajax/add_fav/"+game);
}

jQuery.removeFavPlay = function (base, game)
{
	$("#favorite_list_inner_play").load(base+"/ajax/remove_fav_play/"+game);
}

jQuery.addFavPlay = function (base, game)
{
	$("#favorite_list_inner_play").load(base+"/ajax/add_fav_play/"+game);
}

jQuery.switchGame = function (base, game)
{
	//$("#game_frame").attr("src", 'http://localhost/'+base + "/ajax/player_inner/" + game);
	if (jQuery.isFullscreen)
		window.location.href = base+'/fullscreen/'+game;
	else
	{
		
		jQuery.get(base+"/ajax/save_settings/all/chat/"+($('#chat_container').is(':hidden')?'0':'1')+"/slider/" + jQuery.slider_pos, function () {
			$('#favorite_list_play').remove();
			jQuery.initPlayer(base, game);
		});
	}
}

jQuery.accessGame = function (base, game, download)
{
	//alert(base+"/ajax/access_game/"+game);
	jQuery.get(base+"/ajax/access_game/"+game/*, function(data){
		window.location.href = download;
	}*/);
}

jQuery.initDownload = function (url, text, delay, base, game)
{
//prep_per
//download_counter
	var timecounter = 0;
	$('#download_counter').everyTime(100, function(){
		
		var percent =Math. round(((timecounter/10)/delay)*100);
		$('#prep_per').text(percent);
		
		if (percent >= 100)
		{
			$('#download_counter').stopTime();
			jQuery.accessGame(base, game, url);
			$('#download_counter').html(text);
			//
		}
		else
			timecounter++;
	});
}

function getFlash(movie) 
{ 
	if(navigator.appName.indexOf("Microsoft Internet") ==- 1) 
	{
		if(window.document[movie])
			return window.document[movie];
		if(document.embeds && document.embeds[movie])
			return document.embeds[movie]; 
	}
	else 
	{
		if(window.document[movie+'_o'])
			return window.document[movie+'_o'];
		return document.getElementById(movie+'_o'); 
	}
}

jQuery.initGameRating = function(sel, path, starOn, starOff, starHalf, hintList)
{
  $(sel).each(function() {
  	el = $(this);
  	vals = el.attr('title').split(";");
  	el[0].game = vals[0];
  	el[0].gameScore = vals[1];
  	el.raty({
      starOn:    starOn,
      starOff:   starOff,
      starHalf:  starHalf,
      showHalf:  true,
      path:		 path,
      imgWidth:  23,
      start:     el[0].gameScore,
      hintList:  hintList,
      readOnly:  !jQuery.userIsAdmin && (getCookie("dd_rated["+el[0].game+"]") == "1"),
      onClick: function(score) {
      	$.submit_score($(this), score);
      }
    });
  });
}

jQuery.submit_score = function(element, score)
{
	$.fn.raty.readOnly(true, "#"+element[0].id);
	//alert(score + " " + element.attr('title'));
	jQuery.get(jQuery.baseUrl+"/ajax/rate_game/"+element[0].game+'/score/'+score, function(data) {
		newScore = new Number(data);
		setCookie("dd_rated["+element[0].game+"]", "1", 7, "/", '', '');
		$('#rs_t_'+element[0].game).html(newScore.toFixed(2));
		$.fn.raty.start(newScore, "#"+element[0].id);
	});
	
	$('<div><img src="'+jQuery.imageUrl+'/snake_transparent.gif" /></div>').attr({id: element[0].id+"_progdiv", style: "position: absolute; left: "+element.offset().left+"px; top: "+element.offset().top+"px; width: "+element.width()+"px; height: "+element.height()+"px; text-align: center; vertical-align: middle;  filter:alpha(opacity=50); -moz-opacity:0.9; -khtml-opacity: 0.9; opacity: 0.9; background: white;"}).appendTo('body').oneTime(3000, function() {
		$(this).remove();
	});
}

function updateLB(game, kind, name)
{
	jQuery.get(jQuery.baseUrl+"/ajax/leaderboard/"+game+'/lbkind/'+kind+'/lbname/'+name, function(data) {
		//http://in2games.net/de/ajax/leaderboard/william-tell/lblkind/4
		$('#leaderboard_c').html(data);
	});
}

var skip_wait = false;
function skipWait()
{
	skip_wait = true;
}

jQuery.initOnline = function (url, text, delay, base, game)
{
//prep_per
//download_counter
	var timecounter = 0;

	skip_wait = false;
	
	$('#flash_container').flash({ 
		src: url,
		width: '100%',
		height: '100%',
		id: 'flash_obj',
		name: 'flash_obj'/*,
		wmode: 'opaque'*/
	},
	{
		version: 8
	});
	$('#flash_outer').css({
		width: '1px', 
		height: '1px', 
		position: 'absolute', 
		left: '0px', 
		top: '0px'});
	
	/*
	$('#flash_outer').css({width: '100%', height: '100%'});
	
	$('#ad_container').show();
	$('#flash_outer').hide();*/
	

	$('#online_counter').everyTime(100, function(){
		var percent;
		var flash_percent = getFlash('flash_obj').PercentLoaded();
		if (delay == 0)
			percent = flash_percent;
		else
			percent =Math.min(flash_percent, Math. round(((timecounter/10)/delay)*100));
		$('#prep_per').text(percent);
		
		if (percent >= 100 || skip_wait == true)
		{
			$('#online_counter').stopTime();
			//jQuery.accessGame(base, game, url);
			jQuery.get(base+"/ajax/access_game/"+game);
			$('#ad_container').hide();
			$('#flash_outer').css({width: '100%', height: '100%'});
			//$('#download_counter').html('<a href="'+url+'">'+text+'</a>');
			//
		}
		else
			timecounter++;
	});
	
}

// calculates the total width if the chat is shown
function calcualtePlayer(chatVisible)
{
	var overlay = $('#overlay');
	var navbar = $('#player_navbar');
	var player = $('#player_container');
	var chat = $('#chat_container');
	var space = 10;
	var factor = 1.4
	
	var player_max_w = (overlay.width()-2*space);
	var player_max_h = (overlay.height()-space*2-navbar.height());
	
	if (chatVisible)
		player_max_w -= chat.width()+space;
		
	if (player_max_w/1.4 < player_max_h)
	{
		player_max_h = player_max_w/1.4;
	}
	else
	{
		player_max_w = player_max_h*1.4;
	}
	
	player_max_w *= jQuery.slider_pos/100;
	player_max_h *= jQuery.slider_pos/100;
		
	player_width = player_max_w;
	var total_width = player_width+space*2;
	if (chatVisible)
		total_width += chat.width()+space;
	var player_left = space + (overlay.width()-total_width)/2;
	var chat_left = player_left + player_width + space;
		
	return new Array(player_width, player_max_h, player_left, (space+navbar.height() + ((overlay.height()-space*2-navbar.height() - player_max_h)/2)), chat_left);
}

function checkAll(field)
{
	for (i = 0; i < field.length; i++)
		field[i].checked = true;
}

function uncheckAll(field)
{
	for (i = 0; i < field.length; i++)
		field[i].checked = false;
}

jQuery.resize = function ()
{
	var overlay = $('#overlay');
	var navbar = $('#player_navbar');
	var player = $('#player_container');
	var chat = $('#chat_container');
	var space = 10;
	var factor = 1.4;
	
	var player_max_w = (overlay.width()-2*space);
	var player_max_h = (overlay.height()-space*2-navbar.height());
	
	//$('#dd_slider').css({left: ($('#slider_space').position().left+5)+'px'});
	
	if (!chat.is(':hidden'))
		player_max_w -= chat.width()+space;
		
	if (player_max_w/1.4 < player_max_h)
	{
		player_max_h = player_max_w/1.4;
	}
	else
	{
		player_max_w = player_max_h*1.4;
	}
	
	player_max_w *= jQuery.slider_pos/100;
	player_max_h *= jQuery.slider_pos/100;
		
	player_width = player_max_w;
	var total_width = player_width+space*2;
	if (!chat.is(':hidden'))
		total_width += chat.width()+space;
	var player_left = space + (overlay.width()-total_width)/2;
	var chat_left = player_left + player_width + space;
	player.css({left: player_left+'px', top: (space+navbar.height() + ((overlay.height()-space*2-navbar.height() - player_max_h)/2))+'px', width: player_width+'px', height: player_max_h+'px'});
	chat.css({left: chat_left+'px', top: (space+navbar.height() + ((overlay.height()-space*2-navbar.height() - chat.height())/2))+'px'});
	
	
	if (isIE6())
	{
		var pos = overlay.position();
		$('#ie6iframe').css({
			width: overlay.width()+"px",
			height: overlay.height()+"px",
			top: pos.top + "px",
			left: pos.left + "px"
		});
	}
}

jQuery.initFullscreen = function(base, url_name)
{
	jQuery.isFullscreen = true;
	$('#overlay').show();
	$('#show_chat').hide();
	$('#hide_chat').hide();
	$("#dd_slider").hide();
	//$('#player_favoritelink').hide();
	$('#chat_container').hide();
	jQuery.slider_pos = 100;
	
	//$('#player_favoritelink').staticPopup('favorite_list_play', -150, -30);
	$('#player_favoritelink').hide();
	
	
	jQuery.resize();
		
		$(window).bind('resize', function() {
			jQuery.resize();
		});
		
	$('#player_close').click(function (c) {
		window.location.href = base+'/game/'+url_name;
	});
}

jQuery.initPlayer = function (base, game, oncloseplayer)
{
	if (isIE6())
	{
		if ($('#ie6iframe').length == 0)
			$("body").append('<iframe id="ie6iframe" src="javascript:\'\';" marginwidth="0" marginheight="0" align="bottom" scrolling="no" frameborder="0" style="position:absolute; display:none; filter:alpha(opacity=0);" ></iframe>');
	}
	var overlay;
	if ($('#overlay').length == 0)
	{
		overlay = $(jQuery('<div id="overlay" style="display: none"></div>'));
		$('body').append(overlay);
	}
	else
		overlay = $('#overlay');
	overlay.append('<div id="player_bg">&nbsp;</div>');
		$('#player_bg').css({opacity: 0.8});
	
	overlay.load(base+"/ajax/player/"+game, function () {
		overlay.append('<div id="player_bg">&nbsp;</div>');
		$('#player_bg').css({opacity: 0.8});
		
		/*alert(base.substr(0, base.lastIndexOf('/'))+'/ajax_chat/index_shout.php');
		alert(base.lastIndexOf('/'));*/
		slider_pos = $("#slider_data").text();
		try
		{
			disp_chat = $("#chat_data").text();
		}
		catch (err)
		{
			disp_chat = 0;
		}
		$("#dd_slider").slider({min: 50, max: 100, value: slider_pos, step: 0.5});
		jQuery.slider_pos = slider_pos;
		//$('#dd_slider').css({left: ($('#slider_space').position().left+5)+'px', top: '20px'});
		
		$('#dd_slider').bind('slide', function(event, ui) {
			jQuery.slider_pos = ui.value;
			jQuery.resize();
		});
		
		$('#player_favoritelink').hide();
		
		if ($('#favorite_list_inner_play').length == 0)
		{
			$('#show_chat').hide();
			$('#hide_chat').hide();
			//$('#player_favoritelink').hide();
			$('#chat_container').hide();
			$('#dd_slider_wrap').css({'padding-left': '220px'});
		}
		else
		{
			$('#favorite_list_play').remove().appendTo('body');
			//$('#player_favoritelink').staticPopup('favorite_list_play', -150, -30);
			$('#dd_slider_wrap').css({'padding-left': '320px'});
			if (disp_chat==1)
			{
				$('#show_chat').hide();
				$('#hide_chat').show();
				$('#chat_container').show();
			}
			else
			{
				$('#show_chat').show();
				$('#hide_chat').hide();
				$('#chat_container').hide();
			}
		}		
		jQuery.resize();
		$('#dd_slider').oneTime('1000ms', function() {
			jQuery.resize();
		});
		
		
		$(window).bind('resize', function() {
			jQuery.resize();
		});
		
		$(window).scroll(function () { 
		  window.scrollTo(0,0);
		});

		$('#show_chat').click(function(e) {
			var player_size = calcualtePlayer(true);
			
			//var chat_left = ($('#overlay').width() - player_width)/2 + (player_width - ($('#chat_container').width()));
		
			$('#player_container').animate({left: (player_size[2])+'px', width: player_size[0]+'px', height: player_size[1]+'px', top: player_size[3]+'px'}, 2000, function() {
				$('#player_frame').show();
			});
			$('#chat_container').css('left', player_size[4]);
			$('#chat_container').show("slide", {direction: "left"}, 2000);
			$('#show_chat').hide();
			$('#hide_chat').show();
		});
		$('#hide_chat').click(function(e) {
			var player_size = calcualtePlayer(false);
			$('#player_frame').hide();
			$('#player_container').animate({left: (player_size[2])+'px', width: player_size[0]+'px', height: player_size[1]+'px', top: player_size[3]+'px'}, 2000);
			$('#chat_container').hide("slide", {direction: "left"}, 2000);
			
			$('#show_chat').show();
			$('#hide_chat').hide();
		});
		
		$('#player_close').click(function (c) {
			jQuery.get(base+"/ajax/save_settings/all/chat/"+($('#chat_container').is(':hidden')?'0':'1')+"/slider/" + jQuery.slider_pos, function(data){
				$('#favorite_list_play').remove();
				$(window).unbind('scroll');
				$(window).unbind('resize');
				//c.preventDefault();
				$('#overlay').hide();
				$('#overlay').html('');
				if (isIE6())
					$('#ie6iframe').hide();
				if (oncloseplayer)
					oncloseplayer();

			});
		});
	});
	overlay.fadeIn('normal');
	/*overlay.css({opacity: 0});
	overlay.show();
	overlay.fadeTo('normal', 0.8);*/
	
	var pos = overlay.position();
	if (isIE6())
	{
		$('#ie6iframe').css({
			width: overlay.width()+"px",
			height: overlay.height()+"px",
			top: pos.top + "px",
			left: pos.left + "px"
		});
		$('#ie6iframe').show();
	}
}

function uploadSuccess()
{
	$("#file_name").remove();
	$("#upload_form").append("<input type='hidden' id='file_name' name='file_name' value='"+getFlash('download_obj_id').getName()+"' />");
	$("#upload_form").submit();
}

function reposUpload()
{
	var w, h, l, t;
	if (getFlash('download_obj_id'))
	{
	$("#file").show();
	var pos = $("#file").position();
	w = $("#file").width();
	h = $("#file").height();
	l = pos.left;
	t = pos.top;
	$("#file_upload").css({left: l+"px", top: t+"px", width: w+"px"});
	$("#download_obj_id").css({width: w+"px"});
	$("#download_obj_id_o").css({width: w+"px"});
	$("#file").hide();
	}
}

jQuery.initUpload = function (url)
{
	//if ($("#file_upload").hasFlash(10,0,22))
	{
		var w, h, l, t;
		var pos = $("#file").position();
		w = $("#file").width();
		h = $("#file").height();
		l = pos.left;
		t = pos.top;
		
		
		$("#file_upload").flash({ 
			src: url,
			width: w,
			height: 25+"px",
			id: 'download_obj_id',
			name: 'download_obj',
			wmode: 'opaque',
			AllowScriptAccess: 'always'
		},
		{
			version: 10
		});
		
		$("#file_upload").css({left: l+"px", top: t+"px"});
		$("#file_upload").show();
		if (getFlash('download_obj_id'))
		{
			$("#upload_button").click(function (event) {
			
				if ($("input[name='gametype']:checked").val() == 'browser' || $("input[name='gametype']:checked").val() == 'client')
					return true;
				else if ($("input[name='gametype']:checked").val() == 'offline' && ($("input[name='uploadkind']:checked").val() == 'link' || $("input[name='uploadkind']:checked").val() == 'remote')) 
					return true;
					
				if ($("input[name='submit_file']").length > 0 && $("input[name='uploadkind']:checked").val() == 'remote')
					return true;
			
				event.preventDefault();
				
				if (getFlash('download_obj_id').getName() == '')
				{
					alert('Bitte eine Datei wählen!');
					return false;
				}
				
				var l, t;
				var pos = $("#upload_form").position();
				l = pos.left;
				t = pos.top;
				$('#upload_form').hide();
				$('#upload_container').css({height: '600px'});
				$("#file_upload").css({left: l+"px", top: t+"px", width: "400px", height: "500px"/*, position: 'static'*/});
				$("#download_obj_id").css({width: "400px", height: "500px"});
				$("#download_obj_id_o").css({width: "400px", height: "500px"});
				//alert(jQuery.baseUrl+"/makeuuid/");
				jQuery.get(jQuery.baseUrl+"/makeuuid/", function (data) {
					$("#upload_file").remove();
					$("#upload_form").append("<input type='hidden' id='upload_file' name='upload_file' value='"+data+"' />");
					//alert(jQuery.baseUrl+'/big_upload/'+data);
					getFlash('download_obj_id').upload(jQuery.baseUrl+'/big_upload/'+data);
				});
				
				
			});
			$("#file").hide();
		}
		else
			$("#file_upload").remove();
	}	
	
}

jQuery.fn.staticPopup = function (popupElement, offx, offy)
{
	var tracked_elem = this;
	var popup = null;
	var popupShown = false;
	var hideDelayTimer = null;
	var isHiding = false;
	var xoff = offx?offx:0;
	var yoff = offy?offy:0;
	
	
	if (isIE6())
	{
		if ($('#ie6iframe').length == 0)
			$("body").append('<iframe id="ie6iframe" src="javascript:\'\';" marginwidth="0" marginheight="0" align="bottom" scrolling="no" frameborder="0" style="position:absolute; display:none; filter:alpha(opacity=0);" ></iframe>');
	}

	// create the popup element if it doesn't exist already
	if ($('#'+popupElement).length == 0)
	{
		$("body").append("<div id='"+popupElement+"'><div id='"+popupElement+"_inner' class='center_inner'><div><p id='"+popupElement+"_text'></p></div></div></div>");

		$('#'+popupElement).css({cursor: 'pointer', 'z-index': '1000'}).click(
			function()
			{
				if (trackedElement.attr("href"))
					window.location = trackedElement.attr("href");
			}
		);
	}
	
	popup = $('#'+popupElement);
	
	this.each(function() {
		$([popup[0], this]).mouseover(
			function()
			{
				// reset the clear timer since we don't want to be hidden any more
				if (hideDelayTimer) 
					clearTimeout(hideDelayTimer);
					
				// if the popup is alreay shown then there is nothing for us to do
				if (popupShown)
					return;
				
				popupShown = true;
				
				var pos = tracked_elem.offset();
				var left = (pos.left+xoff);
				var top = (pos.top+tracked_elem.height()+yoff);
				
				if (isIE6())
				{
					$('#ie6iframe').css({
						width: popup.width(),
						height: popup.height(),
						top: top + "px",
						left: left + "px"
					});
					$('#ie6iframe').show();
				}
					
				if (isHiding)
				{
					// popup is currently being hidden, set new animation (fadeIn) and stop previous one
					popup.fadeIn("fast").stop(true, true);
				}
				else
				{
					// popup is not currently shown, set position (currently always below triggering element ...) and show (animated)
					
					popup.css({
						top: top + "px",
						left: left + "px"
					});
					popup.fadeIn("fast");
				}
				
			}
		).mouseout(
			function()
			{
				// reset timer to prevent duplicated animations
				if (hideDelayTimer) 
					clearTimeout(hideDelayTimer);
					
				hideDelayTimer = setTimeout(function () {
				
					if (popup[0].force_stay)
						return;
						
					hideDelayTimer = null;
					isHiding = true;
					popupShown = false;
					// now we realy hide
					popup.fadeOut("fast", function()
					{
						if (isIE6())
							$('#ie6iframe').hide();
						// uff ... finally made it, now we are hidden again
						isHiding = false;
					});
				}, 300); // timeout value (popup will be hidden if mouse if moved off for more than this amount!
			}
		);
	});
}

function popupimg(adress, width, height) {
	res = window.open(adress,"in2gamesnet","height="+height+",width="+width);
}

function selectCountry(id)
{
	$('body').append('<div id="country_select"></div>');
	$('#country_select').load(jQuery.baseUrl+'/ajax/country_select/'+id);
	$('#country_select').css({'overflow': 'scroll', 'background-color': 'white', border: '3px solid black', 'position': 'fixed', 'padding': '5px', 'width': '900px', height: '600px', 'left' : '50%', 'margin': '-300px 0 0 -450px', 'top': '50%'});
}

function saveCountry()
{
	$.post(jQuery.baseUrl+'/ajax/country_select_save', $('#countries').serialize(), function (data) {
		//$('#country_select').html(data);
		$('#country_select').remove();
	});
	
}

/* 	creates a popup following the mouse while it is hovering over 'elem'
	'elem' can point to one or multiple elements (e.g. .my_class) 
	includes a fix for ie6 selects, isIE6 function required! */
jQuery.fn.trackingPopup = function (popupElement)
{
	var popup = null;
	var trackedElement = null;

	// create the popup element if it doesn't exist already
	if ($('#'+popupElement).length == 0)
	{
		$("body").append("<div id='"+popupElement+"'><div id='"+popupElement+"_inner' class='center_inner'><div><p id='"+popupElement+"_text'>a</p></div></div></div>");
		if (isIE6())
		{
			$("body").append('<iframe id="ie6iframe" src="javascript:\'\';" marginwidth="0" marginheight="0" align="bottom" scrolling="no" frameborder="0" style="position:absolute; display:none; filter:alpha(opacity=0);" ></iframe>');
		}
		$('#'+popupElement).css({cursor: 'pointer', 'z-index': '1000'})/*.click(
			function()
			{
				if (trackedElement.attr("href"))
					window.location = trackedElement.attr("href");
			}
		)*/;
	}
	
	popup = $('#'+popupElement);
	
	this.mouseenter(
		function(e)
		{
			// keep a reference to the tracked element, we need it for bounds checking and possibly linking
			if (isIE6())
			{
				$('#ie6iframe').css({
					width: popup.width(),
					height: popup.height(),
					top: e.pageY + "px",
					left: (e.pageX-20) + "px"
				});
				$('#ie6iframe').show();
			}
			
			trackedElement = $(this);
			popup.css({
				top: e.pageY + "px",
				left: (e.pageX-20) + "px"
			});
			if (trackedElement.attr("alt"))
				popup.find('#'+popupElement+'_text').html(trackedElement.attr("alt"));
			else
				popup.find('#'+popupElement+'_text').html(trackedElement.attr("title"));
			popup.fadeIn("fast");
			
			popup.click(function () {
				if (trackedElement.attr('href'))
					document.location = trackedElement.attr('href');
				else if (trackedElement.parent().attr('href'))
					document.location = trackedElement.parent().attr('href');
			});
			
			$(document).mousemove(
				function mouseMovedHandler(e) 
				{
					var pos = trackedElement.offset();
					//var relativeX = e.pageX - trackedElement[0].offsetLeft;
    				//var relativeY = e.pageY - trackedElement[0].offsetTop;
			
					// if the mouse is outside of the elements bounds we can hide it and remove the pointer, otherwise update the popup position
					if (e.pageX < pos.left || e.pageY < pos.top || e.pageX > pos.left + trackedElement.width() || e.pageY > pos.top + trackedElement.height())
					//if (relativeX < 0 || relativeY < 0 || relativeX > trackedElement.width() || relativeY > trackedElement.height())
					{
						if (isIE6())
							$('#ie6iframe').hide();
						popup.stop(true, true);
						popup.hide();
						$(document).unbind('mousemove', arguments.callee);
						$('#'+popupElement).unbind('click');
					}
					else	
					{
						if (isIE6())
							$('#ie6iframe').css({
								top: e.pageY + "px",
								left: (e.pageX-20) + "px"
							});
						popup.css({
							top: e.pageY + "px",
							left: (e.pageX-20) + "px"
						});
					}
				}
			);
		}
	);
}

var gametypeSel = false;

function selUploadtype(sender, url)
{
	value = $("input[name='uploadkind']:checked").val();
	
	if (value == 'link')
	{
		$('#fl_file').hide();
		$('#fl_link').hide();
		$('#file_upload').hide();
		$('#fl_link_ger').show();
		$('#fl_link_en').show();
	}
	else if (value == 'remote')
	{
		$('#fl_file').hide();
		$('#fl_link').show();
		$('#file_upload').hide();
		$('#fl_link_ger').hide();
		$('#fl_link_en').hide();
	}
	else
	{
		$('#fl_file').show();
		$('#file_upload').show();
		$('#fl_link').hide();
		$('#fl_link_ger').hide();
		$('#fl_link_en').hide();
	}
	
	reposUpload();
}

function startEditMCEGame(url)
{
	$('textarea.tinymce').tinymce({
		// Location of TinyMCE script
		script_url : url+'/lib/tiny_mce_new/tiny_mce.js',
	
		// General options
		theme : "advanced",
		mode : "textareas",
		//plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,preview,media,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,advlist,bbcode",
		plugins : "paste",
	
		// Theme options
		theme_advanced_buttons1 : "bold,italic,underline,strikethrough,forecolor,|,bullist,numlist,|,outdent,indent,|,link,unlink,|,undo,redo",
		theme_advanced_buttons2 : "",
		theme_advanced_buttons3 : "",
		/*				theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",
				theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",
				theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap",*/
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		//theme_advanced_statusbar_location : "bottom",
		
		theme_advanced_resizing : true,
		entity_encoding : "raw",
		add_unload_trigger : false,
		/*remove_linebreaks : false,*/
		forced_root_block : false,
		force_br_newlines : true,
		force_p_newlines : false,
		convert_newlines_to_brs: false,
		forced_root_block : '', // Needed for 3.x
		
	
		// Drop lists for link/image/media/template dialogs
		template_external_list_url : "lists/template_list.js",
		external_link_list_url : "lists/link_list.js",
		external_image_list_url : "lists/image_list.js",
		media_external_list_url : "lists/media_list.js",
		
		
		content_css : "/css/gamedesc_mce.css",
		
		setup: function(ed) {
	
			// Force Paste-as-Plain-Text
			ed.onPaste.add( function(ed, e, o) {
			//ed.execCommand('mcePasteText', true);
			//return tinymce.dom.Event.cancel(e);
			ed.pasteAsPlainText=true;
			});
			
		}
	
	});
}

function startEditMCE(url)
{
	$('textarea.tinymce').tinymce({
		// Location of TinyMCE script
		script_url : url+'/lib/tiny_mce_new/tiny_mce.js',
	
		// General options
		theme : "advanced",
		mode : "textareas",
		//plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,preview,media,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,advlist,bbcode",
		plugins : "bbcode,paste",
	
		// Theme options
		theme_advanced_buttons1 : "bold,italic,underline,undo,redo",
		theme_advanced_buttons2 : "",
		theme_advanced_buttons3 : "",
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		//theme_advanced_statusbar_location : "bottom",
		
		theme_advanced_resizing : true,
		entity_encoding : "raw",
		add_unload_trigger : false,
		/*remove_linebreaks : false,*/
		forced_root_block : false,
		force_br_newlines : true,
		force_p_newlines : false,
		convert_newlines_to_brs: false,
		forced_root_block : '', // Needed for 3.x
		
	
		// Drop lists for link/image/media/template dialogs
		template_external_list_url : "lists/template_list.js",
		external_link_list_url : "lists/link_list.js",
		external_image_list_url : "lists/image_list.js",
		media_external_list_url : "lists/media_list.js",
		
		
		content_css : "/css/gamedesc_mce.css",
		
		setup: function(ed) {
	
			// Force Paste-as-Plain-Text
			ed.onPaste.add( function(ed, e, o) {
			//ed.execCommand('mcePasteText', true);
			//return tinymce.dom.Event.cancel(e);
			ed.pasteAsPlainText=true;
			});
			
		}
	
	});
}

function selGametype(sender, url)
{
	value = $("input[name='gametype']:checked").val();
	
	$('.fl_on').hide();
	$('.fl_dl').hide();
	$('.fl_br').hide();
	$('.fl_cl').hide();
	
	if (value == 'online')
	{
		$('.fl_on').show();
		$("input[name='uploadkind']:radio:nth(0)").attr("checked","checked");
		if ($('#name').val() == '')
			$("#lightbox").attr("checked", "");
	}
	else
	{
		if ($('#name').val() == '')
			$("#lightbox").attr("checked", "checked");
	}
	if (value == 'offline')
		$('.fl_dl').show();
	if (value == 'browser')
	{
		$('#file_upload').hide();
		$('.fl_br').show();
	}
	if (value == 'client')
	{
		$('#file_upload').hide();
		$('.fl_cl').show();
	}
		
	if (!gametypeSel)
	{
		startEditMCEGame(url);
		gametypeSel= true;
	}
	
	reposUpload();
	if (value != 'browser' && value != 'client')
		selUploadtype(sender, url);
}

function setupToggleLink(linkid, dstid, txtclose, txtopen) {
	src = $(linkid);
	
	src.data('open', '<span class="ui-icon ui-icon-triangle-1-n" style="margin-top: 9px; float:  left;"></span><span style="float: left;">' + txtopen + '</span>');
	src.data('close', '<span class="ui-icon ui-icon-triangle-1-s" style="margin-top: 9px; float:  left;"></span><span style="float: left;">' + txtclose + '</span>');
	src.data('dstid', dstid);
	
	dst = $(dstid);
	if (dst.css('display') != 'none')
		src.html(src.data('open'));
	else
		src.html(src.data('close'));
		
	$(linkid).click(function (event) {
		src = $(this);
		dst = $(src.data('dstid'));
		dst.toggle();
		if (dst.css('display') != 'none')
			src.html(src.data('open'));
		else
			src.html(src.data('close'));
		event.preventDefault();
	});
}

$(document).ready(function () {
    //$("p").text("The DOM is now loaded and can be manipulated.");
    $('#favoritelink').staticPopup('favorite_list', -150, -30);
    
    $('#keywordlink').staticPopup('keyword_list');
    $('#recommend').click(function () {
    	if ($('#navbar_info').is(":hidden"))
	    	$('#navbar_info').slideDown("slow");
	    else
	    	$('#navbar_info').slideUp("slow")
    });
    
    $('#searchbox').css("color", "gray");
    
    
    if (isIE6())
    {
    	$(document).pngFix();
    }
    
    var instanceOne = new ImageFlow();
	instanceOne.init({ ImageFlowID:'myImageFlow', reflectionGET:'&bgc=ffffff' });
	
	$("body").append('<div id="quickSearchResults" style="display:none"></div>');
	searchbox = $('#searchbox');
	searchresults = $("#quickSearchResults");
	searchkind = $("#search_kind");
	
	if (searchbox.length > 0)
	{
		var numres = 0;
		var lasttext = '';
		var lastkind = '';
		var quickSearchTimer = null;
		
		function searchfunc(data) {
			searchresults.empty();
			for (i=0; i<data.length; i++)
			{
				searchresults.append('<div onclick="location.href=\''+data[i].url+'\'" class="quickSearchEntry"><a href="'+data[i].url+'">'+data[i].name+'</a></div>');
			}
			numres = data.length;
			if (data.length > 0)
				searchresults.show();
			else
				searchresults.hide();
		}
		
		var divCss = {
				"left": searchbox.offset().left,
				"padding": 2,
				"position": "fixed",
				"top": searchbox.offset().top + searchbox.height() + 1,
				"border": "1px solid #7f9db9",
				"width": searchbox.width() - 3,
				"background": "white",
				"max-width": searchbox.width() - 3,
				"z-index": "990000"
				};
		searchresults.css(divCss);
		searchbox.attr("autocomplete","off"); 
		searchbox.keyup(function(event) {
			if (searchbox.val().length > 2)
			{
				//$("#quickSearchResults").fadeOut(200, initSearch);
				//searchresults.show();
				if (quickSearchTimer != null) // cancel the delayed event
					clearTimeout(quickSearchTimer);
				quickSearchTimer = setTimeout(function() { // delay the searching
					quickSearchTimer = null;
					//$("#quickSearchResults").fadeOut(200, initSearch);
					
					if (lasttext != searchbox.val() || lastkind != searchkind.val())
					{
						lasttext = searchbox.val();
						lastkind = searchkind.val();
						$.getJSON(jQuery.baseUrl+'/ajax/quicksearch/' + $.URLEncode(searchbox.val()) + '/type/' + searchkind.val(), searchfunc);
					}
					
				} , 300);
			}
			else if (searchbox.val().length <= 2)
				searchresults.hide();
		});
		searchbox.blur(function(event) {
			setTimeout(function(){
			searchresults.hide();
			}, 200);
		});
		var searchCleared = false;
		searchbox.focus(function(event) {
			if (!searchCleared)
			{
				searchbox.css("color", "black");
				searchbox.val("");
				searchCleared = true;
			}
			if (searchbox.val().length > 2)
			{
				//$("#quickSearchResults").fadeOut(200, initSearch);
				if (lasttext != searchbox.val() || lastkind != searchkind.val())
				{
					lasttext = searchbox.val();
						lastkind = searchkind.val();
						$.getJSON(jQuery.baseUrl+'/ajax/quicksearch/' + $.URLEncode(searchbox.val()) + '/type/' + searchkind.val(), searchfunc);
				}
				else if (numres > 0)
				{
					searchresults.show();
				}
			}
		});
    }
    
    
    $('#nl_all_online').click(function () {
    	$('#onlinesel').toggle(!this.checked);
    });
    $('#nl_all_download').click(function () {
    	$('#downloadsel').toggle(!this.checked);
    });
    $('#nl_all_browser').click(function () {
    	$('#browsersel').toggle(!this.checked);
    });
    $('#nl_all_client').click(function () {
    	$('#clientsel').toggle(!this.checked);
    });
    
    /*$('#searchbox').focus(function () {
    	var pos = $('#keywordlink').offset();
    	$('#keyword_list').stop(true, true);
    	if (isIE6())
    	{
			$('#ie6iframe').css({
				width: $('#keyword_list').width(),
				height: $('#keyword_list').height(),
				top: (pos.top+$('#keywordlink').height()) + "px",
				left: pos.left + "px"
			});
			$('#ie6iframe').show();
		}
		$('#keyword_list').css({
			top: (pos.top+$('#keywordlink').height()) + "px",
			left: (pos.left) + "px"
		});
		$('#keyword_list')[0].force_stay = true;
    	$('#keyword_list').show();
    });
    $('#searchbox').blur(function (e) {
    	$('#keyword_list')[0].force_stay = false;
		$('#keyword_list').stop(true, true);
		$('#keyword_list').fadeOut("fast");
		if (isIE6())
			$('#ie6iframe').hide();
	});*/
});

