/*
 * workaround for bug #8152: IE8 ajax jquery/sarissa problem
 */
jQuery.ajaxSettings.xhr = function() {
	return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
};

/*---------------------------------------------------------------------------------------------------------*/
/* -------------------------- metacap js ----------------------------------------------------------------- */
/* ------------------------------------------------------------------------------------------------------- */

//Logging in Kosole von Firebug/Chrome/IE8 (Developer Tools) 
function log(text) {
	if (window['console'] !== undefined) {
		console.info(text);
	}
}

function addBet(){
	}

var Zeit1 = new Date();
var AbsolutJetzt = Zeit1.getTime();

var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
var chrome = ua.indexOf("Chrome");
var safari = ua.indexOf("Safari");
var fireFox = ua.indexOf("Firefox");
var IE_vers = parseInt(ua.substring (msie+5, ua.indexOf (".", msie)));

function popup(type, template, dx, dy, style){
	fenster = window.open("popup_"+type+".php?main="+template+"&style="+style,"popup","toolbar=no,scrollbars=yes,menubar=no,resizable=yes,status=no,width="+dx+",height="+dy+",dependent=yes");
	fenster.focus();
	}

function game(dx, dy){
	fenster = window.open("game.php","game","toolbar=no,scrollbars=no,menubar=no,resizable=yes,status=no,width="+dx+",height="+dy+",dependent=yes");
	fenster.focus();
	}

function open_page(page, close){
	document.location.href = 'index.php?main='+page;
	if(close)
		fenster.close();
	}

jQuery.noConflict();
jQuery(document).ready(function() {
	
	/* ### Head-Drop-Menue: Mein Tipico, Kasse ### */
	
	jQuery("#mytipico_foot, #mytipico_title, #head_mytipico .head_shadow").click(function() {
		jQuery("#mytipico").slideToggle("fast");
		jQuery("#mytipico_foot div").toggle();
		});
			
	jQuery("#headdrop2_foot, #headdrop2_title, #head_headdrop2 .head_shadow").click(function() {
		jQuery("#headdrop2").slideToggle("fast");
		jQuery("#headdrop2_foot div").toggle();
		});
			
	/* ### Highlights ### */
	
	jQuery("#hilights_1 .hilights_head_2").click(function () {
		jQuery("#hilights_1").hide();
		jQuery("#hilights_2").show();
		jQuery(this).blur();
		});
	
	jQuery("#hilights_2 .hilights_head_2").click(function () {
		jQuery("#hilights_2").hide();
		jQuery("#hilights_1").show();
		jQuery(this).blur();
		});
	
	/* ### Tooltip ### */

	jQuery(".nav_main_1 .left, .nav_main_2 .left, .check_l, .arrow_l").hover(function () {
		tip(jQuery(this).text(), 20);
		document.onmousemove = update_tip;
    	}, function () {
		untip();
		});
	
	//globaler Diashow Start (kann auch in onLoad gepackt werden)
	jQuery(function() {
		jQuery("#.main_teaser_rot.img2, #.main_teaser_rot.img3, #.main_teaser_rot.img4").show();
		slide_start();
	});
	
	jQuery(".check_r").hover(function () {
		tip(jQuery(this).parent().find(".left").text(), 20);
		document.onmousemove = update_tip;
    	}, function () {
    		untip();
    	});
	
	/* ### Placeholder-Fix fuer Internet Explorer ### */

	jQuery('[placeholder]').focus(function() {
		var input = jQuery(this);
		if (input.val() == input.attr('placeholder')) {
			if (msie == -1) {
				if (this.originalType) {
					this.type = this.originalType;
					delete this.originalType;
				}
			}
			input.val('');
			input.removeClass('placeholder');
		}
	}).blur(function() {
		var input = jQuery(this);
		if (input.val() == '') {
			if (msie == -1) {
				if (this.type == 'password') {
					this.originalType = this.type;
					this.type = 'text';
				}
			}
			input.addClass('placeholder');
			input.val(input.attr('placeholder'));
		}
	}).blur().parents('form').submit(function() {
		jQuery(this).find('[placeholder]').each(function() {
			var input = jQuery(this);
			if (input.val() == input.attr('placeholder')) {
				input.val('');
			}
		})
	});
	
	/* ### Registrierung: Validierung der Felder 'login' und 'email' und Verstecken des Bot-Feldes ### */
	
	jQuery('#registration').ready(function() {
		jQuery(document.getElementById('registerForm:login')).ready(function() {
			jQuery(document.getElementById('registerForm:email')).ready(function() {
				var login = document.getElementById('registerForm:login');
				var email = document.getElementById('registerForm:email');
				if(login != null && login.value != '' && email != null && email.value != '') {
					validateLoginAndEMailOnPageLoad();
				} else if(login != null && login.value != '') {
					validateLoginOnPageLoad();
				} else if(email != null && email.value != '') {
					validateEMailOnPageLoad();
				}
			});
		});
		jQuery('#registerForm').mousemove(function(e) {
			jQuery('#emailConfirmLeft').hide();
			jQuery('#emailConfirmRight').hide();
		});
	});
	
	});

function addLinkParameters(linkId) {
	var link = jQuery('#rfSubmit');
	var href = link.attr('href');
	var login = jQuery('#rfLogin');
	var email = jQuery('#rfEmail');
	var hrefLogin = login.val();
	var hrefEmail = email.val();
	if(login.attr('placeholder') == hrefLogin) {
		hrefLogin = "";
	}
	if(email.attr('placeholder') == hrefEmail) {
		hrefEmail = "";
	}
	href = href + '?rflogin=' + encodeURIComponent(hrefLogin) + '&rfemail=' + encodeURIComponent(hrefEmail);
	link.attr('href', href);
}

//Diashow Start 
var timer = null;

function slide_start(){
	timer = setInterval("slide_switch()", 7000);
	}

// Diashow Stop 
function slide_stop(){
	clearTimeout(timer);
	}

// Diashow
function slide_switch(){
	var active = jQuery('#slideshow .main_teaser_rot.active');

	if(active.length == 0)
		active = jQuery('#slideshow .main_teaser_rot:last');
	
	var next = active.next().length ? active.next() : jQuery('#slideshow .main_teaser_rot:first');

	active.addClass('last-active');
	
	active.animate({opacity: 0.0}, 1500);
	
	next.css({opacity: 0.0})
		.addClass('active')
		.animate({opacity: 1.0}, 1500, function() {
			active.removeClass('active last-active');
		});
	}

// Diashow Jump
function slide_jump(id){
	//dia_stop = id;
	jQuery('#slideshow .main_teaser_rot.active').stop(true, true);
	jQuery('#slideshow .main_teaser_rot').removeClass('active');
	jQuery('#slideshow .main_teaser_rot').removeClass('last-active');
	jQuery('#slideshow .main_teaser_rot.img'+id).addClass('active');
	jQuery('#slideshow .main_teaser_rot.img'+id).css({opacity: 1.0});
	jQuery('.main_teaser_but_row a').blur();
	}

//Diashow RollOver
function slide_rollover(id){
	if(id == 1)
		slide_stop();
	else
		slide_start();
	}

//Textroller
var timerID = null;
function textrollInit(){
	clearTimeout(timerID);
	speed = 1;
	mov = document.getElementById('box_roll');
	movHeight = mov.offsetHeight;
	textroll();
	}

function textroll(){
	var top = mov.offsetTop;
	mov.style.top = (top - speed) + 'px';
	
	if(top < -36){
		jQuery('#box_roll li:first').clone().appendTo('#box_roll');
		jQuery('#box_roll li:first').detach();
		mov.style.top = (top + 36) + 'px';
		timerID = setTimeout('textroll()', 2000);
		}
	else
		timerID = setTimeout('textroll()', 60);
	}

//Tab Navigation
function tab_menue(this_obj, what, action, hide){
	this_obj.parent().parent().find(".tab_select").removeClass('on');
	this_obj.parent().addClass('on');
	this_obj.blur();
	action ? jQuery("#" + what).show() : jQuery("#" + what).hide();
	if(hide)
		jQuery("#" + hide).hide();
	}

//Toggle DropDown Navigation
function drop_menue(id){
	jQuery("#menue_" + id).slideToggle("fast");
	}

//Close DropDown Navigation
function close_menue(id){
jQuery("#" + id).mouseleave(function() {
	jQuery("#menue_" + id).hide();
	});
}

//Select  DropDown Navigation
function select_menue(this_obj){
	var idString = this_obj.parent().parent().attr("id");
	idString = idString.substr(6);
	jQuery("#"+idString).find("div:first").text(this_obj.text());
	if(idString == 'drop_1' && this_obj.attr("id") != 'period')
		jQuery("#datepicker").hide();
	else if(this_obj.attr("id") == 'period')
		jQuery("#datepicker").show();
   	}

//Ticket + Open bets
function tog_slider(what){
	jQuery("#"+what+"_body").slideToggle("slow");
	jQuery("#"+what+"_foot div").toggle();
}

function nav_more() {
	jQuery("#nav_more").hide();
	jQuery("#nav_corner_off").show();
	jQuery("#root_box").slideDown("fast");
}

function nav_less() {
	jQuery("#nav_corner_off").hide();
	jQuery("#root_box").slideUp("fast");
	jQuery("#nav_more").show();
}

//Slider (Laschen) Ã¶ffnen
function show_slider(this_obj, type) {
	var this_obj_2 = this_obj.parent().parent();
	if(this_obj_2.find(".hide").is(":hidden")){
		this_obj.addClass(type + "_on");
		this_obj_2.find(".hide").show();
		this_obj_2.find(".sheet_slider_body_off").addClass("sheet_slider_body").removeClass("sheet_slider_body_off");
	}
	else{
		this_obj.removeClass(type + "_on");
		this_obj_2.find(".hide").hide();
		this_obj_2.find(".sheet_slider_body").addClass("sheet_slider_body_off").removeClass("sheet_slider_body");
	}
}

//Slider (Laschen) schliessen
function hide_slider(this_obj, type) {
	type == 'm' ? this_obj = this_obj.parent().parent() : this_obj = this_obj.parent();
	this_obj.find(".hide").hide();
	this_obj.find(".sheet_slider_" + type).removeClass(type + "_on");
	this_obj.find(".sheet_slider_body").addClass("sheet_slider_body_off").removeClass("sheet_slider_body");
}

//Upcoming Live Wetten
function tog_upcoming(this_obj){
	var parent_table = this_obj.parents("table:first");
	var slider = parent_table.parent().find(".sheet_body_live");
	if(slider.is(':hidden')){
		slider.slideDown();
		parent_table.find(".tog").addClass("open");
	}
	else {
		slider.slideUp();
		parent_table.find(".tog").removeClass("open");
	}
	parent_table.find(".tog div").toggle();
}

//Layer öffnen
function show_layer(id, top, left, width, mtop, mleft) {
	// for our lovely IE
	top ? top + 'px' : '';
	left ? left + 'px' : '';
	width ? width + 'px' : '';
	mtop ? mtop + 'px' : '';
	mleft ? mleft + 'px' : '';
	
	jQuery('.condition').hide();
	jQuery(".fly_message_layer").hide();
	if ((typeof top != 'undefined') && (typeof left != 'undefined') && 
		(typeof mtop != 'undefined') && (typeof mleft != 'undefined')) {
		jQuery('#' + id + '_layer').css({'top' : top, 'left' : left, 'width' : width, 'margin-top' : mtop, 'margin-left' : mleft}).show();
	}
	else if ((typeof top != 'undefined') && (typeof left != 'undefined')) {
		jQuery('#' + id + '_layer').css({'top' : top+'px', 'left' : left+ 'px'}).show();
	}
	jQuery('#' + id + '_layer').show();
}

// Layer schliessen
function hide_layer(id) {
	jQuery('#' + id + '_layer').hide();
}

function toggleSpecialBetPanel(divId, eventId) {
	return _toggleSpecialBetPanel(divId, eventId, false, '');	
}

function toggleSpecialBetPreviewPanel(divId, eventId) {
	return _toggleSpecialBetPanel(divId, eventId, true, '');	
}

function toggleSpecialBetPanelUpcoming(divId, eventId, excludedResultSets) {
	return _toggleSpecialBetPanel(divId, eventId, false, excludedResultSets);	
}

function _toggleSpecialBetPanel(divId, eventId, preview, excludedResultSets) {
	var div = jQuery("#"+divId);
	var link = jQuery("#"+divId+"_link");
	/*sw-layer in lwk ist in einer tabelle platziert, dafuer braucht man die unterscheidung*/
	var upcomingEvents = /^upcoming_/.test(divId);
	function toggle() {
		if (upcomingEvents)
			div = div.parents('tr:first');
		if (link.toggleClass("m_on").hasClass("m_on")) {
			div.show();
		} else {
			div.hide();
		}
	}

	if (div.is(":empty")) {
		div.load(
			'/program/specialBetPanel.faces', {
				eventId: eventId,
				preview: preview,
				excludedResultSets: excludedResultSets
			}, function() {
				markResults();
				toggle();
			}
		);
	} else {
		toggle();
	}
	
	return false;
}

var tipCancelled;
function loadEventStakeRatio(eventId, imgNode) {
	tipCancelled = false;
	var url = RefreshHandler.urlUpdate+"?"+RefreshHandler.encodeUrl("_", "/program/eventstakeratio");
	var n = jQuery('#ratioHolder' + eventId);
	n.load(url,{
		eventId: eventId
	}, function() {
		if (!tipCancelled) 
			tip_2(n.html(), jQuery(imgNode));
	}
	);
}

function sound_play(name) {
	if (typeof window['swfobject'] != 'undefined') {
		var obj = swfobject.getObjectById('sound');
		if(obj && typeof obj.setVar != 'undefined'){
			try {
		 		obj.setVar({sound_name: name});
		 		obj.Play();
			} catch(err) {
				log(err);
			}
		}
	}
}

function removeSmallConference(willChangePage) {
	if (willChangePage && window['gwt_removeSmallConference'] !== undefined) {
		gwt_removeSmallConference();
	}
}

function loadSmallConferenceForSelectedGroups() {
	if (window['gwt_loadSmallConferenceForSelectedGroups'] !== undefined) {
		gwt_loadSmallConferenceForSelectedGroups();
	}
}

function hideSpecialBetPanel(where) {
	var cur = jQuery(where);
	
	// lookup our "ajax parent"
	for(; cur.length && !cur.hasClass("ajax_target"); cur = cur.parent());

	// use this node's id
	toggleSpecialBetPanel(cur.attr("id"));
}

//Zeitzonen Layer
function mini_teaser(what){
	var this_obj = jQuery("#"+what+"_mini_layer");
	if(this_obj.is(':hidden')){
		jQuery("#zone_mini_layer").hide();
		jQuery("#lang_mini_layer").hide();
		jQuery(this_obj).show();
	}
	else
		jQuery(this_obj).hide();
}

//Rollover Flaggen
function change_flag(this_obj, flag){
	var path_split = this_obj.attr('src').split('/');
	if(flag == 1)
		this_obj.attr('src', '/img/flags/' + path_split[path_split.length-1]);
	else
		this_obj.attr('src', '/img/flags_grey/' + path_split[path_split.length-1]);
}

//Rollover Payment
function change_img(this_obj, flag){
	var path_split = this_obj.attr('src').split('/');
	var file = path_split[path_split.length-1];
	var path = path_split[path_split.length-2];
	
	if(flag == 1)
		this_obj.attr('src', '/img/' + path + '_on/' + file);
	else
		this_obj.attr('src', '/img/' + path.substr(0, path.length - 3) + '/' + file);
}

//Zeitzonen Layer
function change_zone(){
	var this_obj = jQuery("#zone_mini_layer");
	if(this_obj.is(':hidden'))
		jQuery(this_obj).show();
	else
		jQuery(this_obj).hide();
}

function popMobileOffering(){
	var this_obj = jQuery("#mobile_offering");
	if(this_obj.is(':hidden'))
		jQuery(this_obj).show();
	else
		jQuery(this_obj).hide();
}

//Online-Casino Active Game
function active_game(this_obj){
	var offset = this_obj.find("img").offset();
	var active_game = jQuery('#casino_active_game');
	active_game.css("left", offset.left).css("top", offset.top).css("cursor","pointer");
	active_game.unbind('click').click(open_game_handler);
}

function open_game_handler() {
	var gameId = jQuery(this).attr('gameid');
	browseGame(gameId, true);
	return false;
}

function slide_game_handler() {
	var gameId = jQuery(this).attr('gameid');
	select_game(gameId);
	return false;
}

function select_game(gameId) {
	var span = jQuery('#small_picts .small_pict_' + gameId);
	var img = span.find('img');
	var gameName = img.attr('alt');
	var imageId = img.attr('imageSrcBig');
	jQuery('#explore_pict').attr('src', imageId);
	var link = span.find('a');
	var exploreLink = jQuery('#explore_pict_link');
	var exploreLinkSmall = jQuery('#explore_pict_link2');
	exploreLink.attr('href', link.attr('href'));
	exploreLink.attr('gameid', gameId);
	exploreLink.unbind('click', open_game_handler);
	exploreLink.bind('click', open_game_handler);
	exploreLinkSmall.html(gameName);
	exploreLinkSmall.attr('href', link.attr('href'));
	exploreLinkSmall.attr('gameid', gameId);
	exploreLinkSmall.unbind('click', open_game_handler);
	exploreLinkSmall.bind('click', open_game_handler);
	jQuery('#casino_active_game').attr('gameid', gameId);
	jQuery('#loginForm').find("input[name^='saveGameId']").attr('value', gameId);
	active_game(link);
	set_game_prev_next(gameId);
}

function show_login_layer(id, saveGameId) {
	show_layer(id);
	jQuery('#casinoLoginForm').find("input[name^='saveGameId']").attr('value', saveGameId);
	// cleanen wird mit set_popup_game bei Bedarf gesetzt
	jQuery('#casinoLoginForm').find("input[name^='openPopUpGame']").attr('value', false);
	jQuery('#casinoLoginForm').find("input[name^='openPopUpGameName']").attr('value', '');
}

function set_popup_game(popUpGameName) {
	jQuery('#casinoLoginForm').find("input[name^='openPopUpGame']").attr('value', true);
	jQuery('#casinoLoginForm').find("input[name^='openPopUpGameName']").attr('value', popUpGameName);
}

function set_game_prev_next(gameId) {
	var active = jQuery('#small_picts .small_pict_' + gameId);
	var prev = active.prev();
	if(prev.length == 0) {
		prev = jQuery('#small_picts').children(':last-child');
	}
	var next = active.next();
	if(next.length == 0) {
		next = jQuery('#small_picts').children(':first-child');
	}
	var slideLink = jQuery('#explore_pict_link_previous');
	slideLink.attr('href', prev.find('a').attr('href'));
	slideLink.attr('gameid', prev.attr('gameid'));
	slideLink.unbind('click', slide_game_handler);
	slideLink.bind('click', slide_game_handler);
	slideLink = jQuery('#explore_pict_link_next');
	slideLink.attr('href', next.find('a').attr('href'));
	slideLink.attr('gameid', next.attr('gameid'));
	slideLink.unbind('click', slide_game_handler);
	slideLink.bind('click', slide_game_handler);
}

function select_category(categoryId) {
	set_explore_box_height(categoryId);
	jQuery('#small_picts').html(jQuery('#small_picts_' + categoryId).html());
	jQuery('.flex_tab_bg').removeClass('on');
	jQuery("span[id^='small_picts_link_" + categoryId + "']").parent().addClass('on');
	var gameId = jQuery('#small_picts').children(':first-child').attr('gameid');
	select_game(gameId);
	jQuery('#casinoLoginForm').find("input[name^='saveCatId']").attr('value', categoryId);
	jQuery('#loginForm').find("input[name^='saveCatId']").attr('value', categoryId);
}

function set_explore_box_height(categoryId) {
	var addPx = 47;
	var maxPerRow = 10;
	var baseHeight = 405;
	var count = jQuery('#small_picts_' + categoryId).children().length;
	count = Math.floor(count / maxPerRow);
	count = baseHeight + addPx * count; // + 'px';
	jQuery('#explore_box').css('height', count);
}

//Tooltip
var mytip = null;

function update_tip(e){
	if(mytip){
		var x = (document.all) ? window.event.clientX : e.pageX;
		if(mytip.offsetParent == null)
			var y = (document.all) ? window.event.clientY + document.documentElement.scrollTop : e.pageY;
		else
			var y = (document.all) ? window.event.y + mytip.offsetParent.scrollTop : e.pageY;
		var dx = mytip.offsetWidth;
		
		if(document.body.clientWidth < dx + x + 15)
			mytip.style.left = (x - dx - 15) + 'px';
		else
			mytip.style.left = (x + 15) + 'px';
		mytip.style.top = (y + 15) + 'px';
		}
	}

function tip(text, len){
	if(text.length > len){
		mytip = document.getElementById('tooltip');
		mytip.style.display = 'block';
		mytip.innerHTML = text;
		document.onmousemove = update_tip;
		}
	}

/* Untip für die Tooltips, die per Ajax nachgeladen werden. Zum Beispiel User-Wetten
 * Sorgt dafür, das noch nicht geladener Tooltip nicht angzeit wird, wenn der Maus-Cursor
 * schon weg ist. Die Variable tipCancelled soll man in der implementierenden Funtion selber abfragen.*/
function cancelTip() {
	tipCancelled = true;
	untip();
}

function untip(){
	if(mytip)
		mytip.style.display = 'none';
	if(mytip_2)
		mytip_2.style.display = 'none';
	if(mytip_3)
		mytip_3.style.display = 'none';
	if(mytip_4)
		mytip_4.style.display = 'none';
	if(mytip_5)
		mytip_5.style.display = 'none';
	if(mytip_7)
		mytip_7.style.display = 'none';
	if(mytip_8)
		mytip_8.style.display = 'none';
}


function tip_check(this_obj, text, len){
	var this_obj_2 = this_obj.parent().parent();
	if(this_obj_2.find(".hide").is(":hidden")){
		tip(text, len);
		}
	}

//Tooltip 2
var mytip_2 = null;

function tip_2(text, this_obj){
    mytip_2 = document.getElementById('tooltip_2');
    mytip_2.style.display = 'block';
    document.getElementById('tooltip_2_inner').innerHTML = text;
    var offset = this_obj.offset();
    mytip_2.style.left = (offset.left + 18) + 'px';
    mytip_2.style.top = (offset.top - 8) + 'px';
    }

//Tooltip 3
var mytip_3 = null;
function tip_3(width, dx, dy, head_1, head_2, text, this_obj, pos){
	mytip_3 = document.getElementById('tooltip_3');
	mytip_3.style.display = 'block';
	mytip_3.style.width = width + 'px';
	var tl = document.getElementById('tooltip_3_tl');
	var bl = document.getElementById('tooltip_3_bl');
	if(this_obj.hasClass("redborder")){
		document.getElementById('tooltip_3_tr').innerHTML = head_1;
		document.getElementById('tooltip_3_br').innerHTML = head_2 + text;
		if(pos){
			tl.style.backgroundImage = 'url(/img/tooltip_3_tl_red_bot.png)';
			bl.style.backgroundImage = 'url(/img/tooltip_3_bl_bot.png)';
		}
		else{
			tl.style.backgroundImage = 'url(/img/tooltip_3_tl_red.png)';
			bl.style.backgroundImage = 'url(/img/tooltip_3_bl.png)';
		}
		document.getElementById('tooltip_3_tr').style.backgroundImage = 'url(/img/tooltip_3_tr_red.png)';
	}
	else{
		document.getElementById('tooltip_3_tr').innerHTML = head_2;
		document.getElementById('tooltip_3_br').innerHTML = text;
		if(pos){
			tl.style.backgroundImage = 'url(/img/tooltip_3_tl_bot.png)';
			bl.style.backgroundImage = 'url(/img/tooltip_3_bl_bot.png)';
		}
		else{
			tl.style.backgroundImage = 'url(/img/tooltip_3_tl.png)';
			bl.style.backgroundImage = 'url(/img/tooltip_3_bl.png)';
		}
		document.getElementById('tooltip_3_tr').style.backgroundImage = 'url(/img/tooltip_3_tr.png)';
	}
	var offset = this_obj.offset();
	mytip_3.style.marginLeft = dx + 'px';
	pos ? mytip_3.style.top = (offset.top + dy - mytip_3.offsetHeight) + 'px' : mytip_3.style.top = (offset.top - dy) + 'px';
} 

function tip_3Secret(width, dx, dy, head_1, head_2, text, this_obj, styleObj, form, pos){
	mytip_3 = document.getElementById('tooltip_3');
	mytip_3.style.display = 'block';
	mytip_3.style.width = width + 'px';
	var tl = document.getElementById('tooltip_3_tl');
	var bl = document.getElementById('tooltip_3_bl');
	if(jQuery("#"+form+"\\:"+styleObj).hasClass("redborder")){
		document.getElementById('tooltip_3_tr').innerHTML = head_1;
		document.getElementById('tooltip_3_br').innerHTML = head_2 + text;
		if(pos){
			tl.style.backgroundImage = 'url(/img/tooltip_3_tl_red_bot.png)';
			bl.style.backgroundImage = 'url(/img/tooltip_3_bl_bot.png)';
		}
		else{
			tl.style.backgroundImage = 'url(/img/tooltip_3_tl_red.png)';
			bl.style.backgroundImage = 'url(/img/tooltip_3_bl.png)';
		}
		document.getElementById('tooltip_3_tr').style.backgroundImage = 'url(/img/tooltip_3_tr_red.png)';
	}
	else{
		document.getElementById('tooltip_3_tr').innerHTML = head_2;
		document.getElementById('tooltip_3_br').innerHTML = text;
		if(pos){
			tl.style.backgroundImage = 'url(/img/tooltip_3_tl_bot.png)';
			bl.style.backgroundImage = 'url(/img/tooltip_3_bl_bot.png)';
		}
		else{
			tl.style.backgroundImage = 'url(/img/tooltip_3_tl.png)';
			bl.style.backgroundImage = 'url(/img/tooltip_3_bl.png)';
		}
		document.getElementById('tooltip_3_tr').style.backgroundImage = 'url(/img/tooltip_3_tr.png)';
	}
	var offset = this_obj.offset();
	mytip_3.style.marginLeft = dx + 'px';
	pos ? mytip_3.style.top = (offset.top + dy - mytip_3.offsetHeight) + 'px' : mytip_3.style.top = (offset.top - dy) + 'px';
}

//Tooltip 4 (Top Spiel Zeitleiste)
var mytip_4 = null;

function tip_4(this_obj, a, b, c){
	mytip_4 = document.getElementById('tooltip_4');
	document.getElementById('tooltip_4_m').innerHTML = '<span>' + a + '\'</span><br />' + b + '<br />' + c;
	if(a < 6)
		document.getElementById('tooltip_4_m').style.background = 'url(/img/conference/timeline/tl_ttm2.png) no-repeat left top';
	else
		document.getElementById('tooltip_4_m').style.background = 'url(/img/conference/timeline/tl_ttm.png) no-repeat center top';
	document.getElementById('tooltip_4').style.display = 'block';
	var offset = this_obj.offset();
	var dx = mytip_4.offsetWidth / 2 - 4;
	if(a < 6)
		mytip_4.style.left = (offset.left - 20) + 'px';
	else
		mytip_4.style.left = (offset.left - dx) + 'px';
	mytip_4.style.top = (offset.top - 84) + 'px';
} 

//Tooltip 5 (Casino Gamepreview Floorplan)
var mytip_5 = null;

function tip_5(this_obj, pict, tip){
	mytip_5 = document.getElementById('tooltip_' + tip);
	mytip_5.style.display = 'block';
	mytip_5.firstChild.src = pict;
	var offset = this_obj.offset();
	mytip_5.style.left = (offset.left - 40) + 'px';
	mytip_5.style.top = (offset.top - 140) + 'px';
}

function tip_3Close(){
	mytip_3 = document.getElementById('tooltip_3');
	mytip_3.style.display = 'none';
}

var mytip_7 = null;

function tip_7(text, this_obj){
    mytip_7 = document.getElementById('tooltip_7');
    mytip_7.style.display = 'block';
    document.getElementById('tooltip_7_inner').innerHTML = text;
    var offset = this_obj.offset();
    mytip_7.style.left = (offset.left - 17) + 'px';
    mytip_7.style.top = (offset.top - mytip_7.offsetHeight) + 'px';
    }

//Tooltip 8 (Registration Footer)
var mytip_8 = null;

function tip_8(text, this_obj){
	mytip_8 = document.getElementById('tooltip_8');
	mytip_8.style.display = 'block';
	document.getElementById('tooltip_8_inner').innerHTML = text;
	var offset = this_obj.offset();
	mytip_8.style.left = (offset.left - 17) + 'px';
	mytip_8.style.top = (offset.top - mytip_8.offsetHeight) + 'px';
	}


//Feature Layer
function feature_pop(this_obj){
	if(IE_vers != 6){
		if(this_obj == 'close')
			jQuery("#feature_pop, #feature_pop_img, #dim_layer").fadeOut('slow');
		else if(this_obj.get(0).tagName.toLowerCase() == 'img'){
			jQuery("#feature_pop_img").find("img").attr("src", this_obj.attr("src"));
			jQuery(".pop_close").css('left', '794px');
			jQuery("#feature_pop_img").css('top', (60 + jQuery(window).scrollTop()) + 'px');
			jQuery("#feature_pop_img, #dim_layer").fadeIn('slow');
			}
		else{
			jQuery("#feature_pop .content").html(this_obj.parent().find('.hide').html());
			jQuery(".pop_close").css('left', '494px');
			jQuery("#feature_pop").css('top', (60 + jQuery(window).scrollTop()) + 'px');
			jQuery("#feature_pop, #dim_layer").fadeIn('slow');
			}
		}
	}

function popupMobileDemo(wrongBrowser){
	if (chrome != -1 || safari != -1 || fireFox != -1 || (msie != -1 && IE_vers >= 8)){
		popwin = window.open('/site/mobileDemo.faces',"popup","toolbar=no,scrollbars=no,menubar=no,resizable=yes,status=no,width=400,height=769,dependent=yes,top=0");
    	popwin.focus();
	} else
		showAlertLayer(wrongBrowser);
}

function pop_next(num){
	jQuery("#feature_pop .content").html(jQuery("#pop_" + num).html());
	}



//Subnav Layer mit versch. Verzögerungen bei
//Tabbing, erstmaliges aufklappen, schließen
var t = null;
var tabbing = false;
function subnav(id, type, flag){
	clearTimeout(t);
	if(!flag){
		if (type>0){
			if (!tabbing){ 
				t = setInterval("subnav('"+id+"', '"+type+"', '1')", 300);
			}
			else{ 
				t = setInterval("subnav('"+id+"', '"+type+"', '1')", 150);
			}
		}
		else t = setInterval("subnav('"+id+"', '"+type+"', '1')", 0);
	}
	else{
		jQuery(".sub_nav_drop").hide();
		jQuery(".first").removeClass('on_1').removeClass('on_2');
		jQuery("#box_03 a:first, #box_04 a:first").css({'color' : '#000000'});
		if(type > 0){
			tabbing = true;
			jQuery("." + id).show();
			jQuery("#" + id).addClass('on_' + type);
			if(type == 2)
				jQuery("#" + id + " a.cat").css({'color' : '#cccccc'});
			}
		else{
			tabbing = false;
			jQuery("." + id).hide();
			}
		}
}
//Nachladen der Navigation.
function loadSubnav(){
	jQuery("#sub_nav_2").load('/template/subNav.faces');
}

//Alle Drop-Down Layer der Navigation verstecken
//Für Onclick bei den Casino spielen.
function hideSubnavLayers(){
	jQuery("#sub_nav .sub_nav_drop").hide();
}

/*---------------------------------------------------------------------------------------------------------*/
/* -------------------------- ebet js -------------------------------------------------------------------- */
/* ------------------------------------------------------------------------------------------------------- */

function doClear(theText) {
	if (theText.value == theText.defaultValue) {
		theText.value = ""
	}
}

function doClearPassword(passwordField) {
	if (passwordField.value == '--------') {
		passwordField.value = "";
	}
}

function doResetPassword(passwordField) {
	if (passwordField.value == '') {
		passwordField.value = '--------';
	}
}

// >>> secure form
function makeFormSecure(formId) {
	var hostname = location.hostname;
	var port = location.port == "" ? "" : ":8443";  
	var elm = document.getElementById(formId);
	var action = elm.getAttribute("action");
	action = "https://" + location.hostname + port + action;
	elm.setAttribute("action", action);
}
// <<<

// >>> Marker for odds
var markedResults = new Array();
var markedLiveResults = new Array();

function getMarkedResults() {
	return markedResults.join(",");
}
function markResults() {
	for (i = 0; i < markedResults.length; i++) {
		markResultButton(markedResults[i], false);
		markLiveResultButton(markedResults[i]);
	}
}

/**wird beim Klick auf dem Button aufgerufen (optimistisches Toggln von Buttons)*/
function tr(resultId,region) {
	var button = jQuery(":button[name=q"+resultId+"]");
	if(button.hasClass('roll_red')) {
		addMarkStyle(button);
	}
	else {
		removeMarkStyle(button);
	}
	var button = jQuery(":button[name=ql"+resultId+"]");
	if(button.length > 0) {
		if (button.hasClass('c_but') || button.hasClass('c_but_up') 
				|| button.hasClass('c_but_down')) {
			addLiveMarkStyle(button);
		} else {
			removeLiveMarkStyle(button);
		}
	}
	toggleResult(resultId,region);// a4j:jsFunction in editor.xhtml
}
function markResultButton(resultId) {
	var btns = document.getElementsByName("q"+resultId);
	for (var i = 0; i < btns.length; i++) {
		var b = jQuery(btns[i]);
		addMarkStyle(b);
	}
}
function markResult(resultId) {
	markedResults.push(resultId);
	var lBtn = jQuery(":button[name=ql"+resultId+"]");
	if (lBtn.length > 0) {
		markedLiveResults[resultId] = lBtn.text();
	}
	markResultButton(resultId);
	markLiveResultButton(resultId);
}
/**wird vom Ticket-Editor aufgerufen nachdem es neu geladen wurde (zB beim Entfernen der Quote)*/
function clearMarks() {
	markedResults = new Array();
	markedLiveResults = new Array();
	var btns = jQuery('.red_quote');
	for (var i = 0; i < btns.length; i++) {
		var b = jQuery(btns[i]);
		removeMarkStyle(b);
	}

	/**Neue Buttons (Suche LWK-Gadget) auch deselektieren*/
	var btns = jQuery(":button[name^=ql]");
	for (var i = 0; i < btns.length; i++) {
		var b = jQuery(btns[i]);
		removeLiveMarkStyle(b);
	}
}
function addMarkStyle(elem) {
	elem.removeClass('roll_red');
	elem.addClass('white');
	elem.addClass('red_quote');
	elem.blur();
}
function removeMarkStyle(elem) {
	elem.addClass('roll_red');
	elem.removeClass('white');
	elem.removeClass('red_quote');
	elem.blur();
}

/**wird bei jedem Update von der Event-Zeile (LWK-Gadget) aufgerufen, 
 * um die vorher selektierte Results zu wiederherstellen*/
var refreshEditorTimer; 
function markLiveResults() {
	var shouldUpdateEditor = false;
	for (i = 0; i < markedResults.length; i++) {
		if(markLiveResultButton(markedResults[i])) {
			shouldUpdateEditor = true;
		}
	}
	if (shouldUpdateEditor) {
		log('updating editor');
		if (refreshEditorTimer !== undefined){
        	clearTimeout(refreshEditorTimer);
        }
        //markLiveResults() wird bei einzelnen Event-Zeilen. Es wird versucht, falls die selektierten Quoten, 
		//aktualisiert wurden, den Wettschein nicht sofort für jede Zeile aufzurufen, sondern per Timeout
		//eine Aktualisierung des Wettschein für alle Änderungen zu feuern
		refreshEditorTimer = setTimeout('refresh()', 1000);
	}
}

function markLiveResultButton(resultId) {
	var shouldUpdateEditor = false;
	jQuery(":button[name=ql"+resultId+"]").each(
		function() {
			var button = jQuery(this);
			addLiveMarkStyle(button);
			//überprüfen, ob die markierten Quoten sich geändert haben
			//um zu entscheiden, ob der TicketEditor refresht werden kann.
			var quote = markedLiveResults[resultId];
			if (quote !== undefined && button.text() != quote) {
				shouldUpdateEditor = true;
			}
		}
	);
	return shouldUpdateEditor;
}

function addLiveMarkStyle(elem) {
	if (elem.hasClass('c_but_up')) {
		elem.removeClass('c_but_up');
		elem.addClass('c_but_on_up');
	} else if (elem.hasClass('c_but_down')) {
		elem.removeClass('c_but_down');
		elem.addClass('c_but_on_down');
	} else if (elem.hasClass('c_but_paused')) {
		elem.removeClass('c_but_paused');
		elem.addClass('c_but_on_paused');
	} 
	//"c_but" - letzte Bedingung
	else if (elem.hasClass('c_but')) {
		elem.removeClass('c_but');
		elem.addClass('c_but_on');
	} 
	elem.removeClass('roll_red');
}

function removeLiveMarkStyle(elem) {
	if (elem.hasClass('c_but_on_up')) {
		elem.removeClass('c_but_on_up');
		elem.addClass('c_but_up');
	} else if (elem.hasClass('c_but_on_down')) {
		elem.removeClass('c_but_on_down');
		elem.addClass('c_but_down');
	} else if (elem.hasClass('c_but_on_paused')) {
		elem.removeClass('c_but_on_paused');
		elem.addClass('c_but_paused');
	} 
	//"c_but" - letzte Bedingung
	else if (elem.hasClass('c_but_on')) {
		elem.removeClass('c_but_on');
		elem.addClass('c_but');
	} 
	elem.addClass('roll_red');
}

// <<< Marker for odds

// >>> Marker for groups

var markedGroups = new Array();

function markGroup(groupId) {
	markedGroups.push(groupId);
	markNavTreeNode(groupId);
}

function markNavTreeNode(groupId) {
	jQuery('#t'+groupId).addClass('on');
	// Dummy-Klasse hinzufügen für den jQuery-Selektor in clearNavTreeMarks()
	jQuery('#t'+groupId).addClass('groupSelected'); 
	var obj = jQuery('#t'+groupId).parent().parent().parent();
	if (jQuery(obj).is(':hidden')) {
		jQuery(obj).show();
		jQuery(obj).parent().addClass("bold down");
		if (jQuery(obj).parent().parent().is(':hidden')) {
			jQuery(obj).parent().parent().show();
			jQuery(obj).parent().parent().parent().find(".moreGroups").hide();
			jQuery(obj).parent().parent().parent().find(".lessGroups").show();
		}
	}
}

function markArchiveNavTreeNode(parentGroupId,groupId) {
	var parent = jQuery('#archiveEntry'+parentGroupId);
	parent.find(".left").addClass('bold down');
	parent.parent().addClass('pointline');
	var group = jQuery('#archiveEntry'+groupId)
	group.addClass('bold');
	group.parent().parent().parent().show();
	var obj = parent.parent().parent().parent();
	if (jQuery(obj).is(':hidden')) {
		jQuery(obj).show();
		jQuery("#nav_more").hide();
		jQuery("#nav_corner_off").show();
	}
}


function archiveSelectAll(groupId) {
	var navEntry = jQuery('#archiveEntry' + groupId);
	navEntry.parent().parent().find("ul").toggle();
	if(navEntry.parent().parent().find("ul").is(':hidden')){
		navEntry.find('.left').removeClass("bold down");
		navEntry.parent().removeClass("pointline");
	} else{
		navEntry.find('.left').addClass("bold down");
		navEntry.parent().addClass("pointline");
	}
}

function showGroups(groupId) {
	jQuery("#nav_more"+groupId).hide();
	jQuery("#nav_corner_off"+groupId).show();
	jQuery("#nav #ul"+groupId+".hide").slideDown("fast");
}

function hideGroups(groupId) {
	jQuery("#nav_corner_off"+groupId).hide();
	jQuery("#nav #ul"+groupId+".hide").slideUp("fast");
	jQuery("#nav_more"+groupId).show();
}

function clearNavTreeMarks() {
	var icons = jQuery('.groupSelected');
	for(var i = 0; i < icons.length; i++) {
		var icon = icons[i];
		jQuery(icon).removeClass('on');
	}
}

function groupSelectAll(groupId) {
	var navEntry = jQuery('#navEntry' + groupId);
	jQuery(navEntry).parent().parent().find("ul").toggle();
	if(jQuery(navEntry).parent().parent().find("ul").is(':hidden')){
		jQuery(navEntry).find('.left').removeClass("bold down");
		jQuery(navEntry).find('.check_r').removeClass("bold");
		jQuery(navEntry).parent().removeClass("pointline");
	} else{
		jQuery(navEntry).find('.left').addClass("bold down");
		jQuery(navEntry).find('.check_r').addClass("bold");
		jQuery(navEntry).parent().addClass("pointline");
	}
}

// <<< Marker for groups


// >>> Popup functions
var popwin = null;

function popupScrollbars(url, name, width, height) {
	name = name.replace(/ /g,"");
	name = name.replace(/./g,"");
	popwin = window.open(url,name,"toolbar=no,scrollbars=yes,menubar=no,resizable=yes,status=no,width="+width+",height="+height+",dependent=yes");
    popwin.focus();
}

function popupNoScrollbars(url, name, width, height) {
	name = name.replace(/ /g,"");
	name = name.replace(/./g,"");
    popwin = window.open(url,name,"toolbar=no,scrollbars=no,menubar=no,resizable=yes,status=no,width="+width+",height="+height+",dependent=yes");
    popwin.focus();
}

// aus einem Popup das Elternfenster delegieren eine neue Seite aufzurufen und das Popup schliessen 
function openPage(url){
	document.location.href = url;
	popwin.close();
}

function openPageWithLogin(url,loggedIn){
	if (popwin)
		popwin.close();
	if (loggedIn)
		document.location.href = url;
	else{
		jQuery('#casinoLoginForm').find("input[name^='viewId']").attr('value', url);
		jQuery('#casinoLoginForm').find("input[name^='paymentLogin']").attr('value', 'true');
		show_layer('dim'); 
		show_login_layer('login','');
	}
}
// <<< Popup functions


// >>> Ticket-Editor
function enterCode(message) {
	with (document.editorForm) {
		var enteredCode = prompt(message);
		if (enteredCode) {
			action = 'TODO' + enteredCode;
			// url value="/ticket/editor.do?method=loadBonus UND code="
			submit();
		}
	}
}

function stakeClick() {
	document.getElementById('editorForm\:amountDisplay').select();
	document.getElementById('editorForm\:selected').value = 'stake';
	return true;
}
function totalStakeClick() {
	document.getElementById('editorForm\:totalStakeDisplay').select();	
	document.getElementById('editorForm\:selected').value = 'totalStake';
	return true;
}
function winClick() {
	document.getElementById('editorForm\:winDisplay').select();
	document.getElementById('editorForm\:selected').value = 'win';
	return true;
}

function pressedReaction(question) {
	if (confirm(question)) {
		/*
		var btns = jQuery(".ticket_button");
		for (var i = 0; i < btns.length; i++) {
			var b = btns[i];
			jQuery(b).disabled = true;
		}
		*/
		return true;
	}
	return false;
}
// <<< Ticket-Editor


// >>> Selection Handling
// ts: toggle special bets
function ts(component) {
	//var component = jQuery(component).parent();
	if (jQuery(component).parent().parent().find(".hide").is(':hidden')) {
		jQuery(component).addClass("m_on");
		jQuery(component).parent().parent().find(".hide").show();
		jQuery(component).parent().parent().find(".sheet_slider_body_off").addClass("sheet_slider_body");
		jQuery(component).parent().parent().find(".sheet_slider_body_off").removeClass("sheet_slider_body_off");
	} else {
		jQuery(component).removeClass("m_on");
		jQuery(component).parent().parent().find(".hide").hide();
		jQuery(component).parent().parent().find(".sheet_slider_body").addClass("sheet_slider_body_off");
		jQuery(component).parent().parent().find(".sheet_slider_body").removeClass("sheet_slider_body");
	}
	jQuery("#help_resultType_layer").hide();
}

// <<< Selection Handling

// >>> Ajax4JSF error/expired handling
var A4J_ERROR_MESSAGE = '';
if (typeof A4J != 'undefined') { // some pages made error "A4J not defined"
	A4J.AJAX.onError = function(req,status,message) {
		if (A4J_ERROR_MESSAGE == '') {
			// RichFaces Fehlermeldung unterbinden, 
			// falls man einen AJAX-Request durch einen Seitenwechsel
			// unterbrochen hat
			if (status != 599 && ticket != 0) {
				showAlertLayer('Error ' + status + "\n" + message);			
			}
		} else {
			showAlertLayer(A4J_ERROR_MESSAGE);
			A4J_ERROR_MESSAGE = "";
		}
	}
	A4J.AJAX.onExpired = function(loc,expiredMsg) {
		// Auf jsp leiten, damit Sprache richtig codiert wird
		location.href = CONTEXT_PATH + "/index.jsp";
	}
}

// >>> common functions
function showHintLayer(id, top, left) {
	jQuery("#"+id).show();
	jQuery("#"+id).css({'top' : top+'px', 'left' : left+'px'});
}
// <<< common functions


// Backup aus popupUtil.js
// wird wahrscheinlich gar nicht mehr benutzt...

/* 
Version: 2004-10-25

default values:
    name=<random value>
    width=760
    height=540
    top=10
    left=50
    status=yes
*/
function popup(url, name, width, height, top, left, status) {
	if ((typeof name) == "undefined") {
	    name = "popup_" +
	        createRandomString("abcdefghiklmnopqrstuvwxyz", 8);
	}
	if ((typeof width) == "undefined")
	    width = 760;
	if ((typeof height) == "undefined")
	    height = 540;
	if ((typeof top) == "undefined")
	    top = 10;
	if ((typeof left) == "undefined")
	    left = 50;
	if ((typeof status) == "undefined")
	    status = "yes";
	var params = "dependent=yes,location=no,menubar=no,toolbar=no,resizable=yes,scrollbars=yes"
	    + ",width=" + width
	    + ",height=" + height
	    + ",top=" + top
	    + ",left=" + left
	    + ",status=" + status;
	var popwin = window.open(url, name, params);
	popwin.focus();
}

function popupStatistics(lang, param) {
	var url;
	// Betradar benutzt als Laenderkuerzel fuer Serbien "sr" statt "rs"
	if (lang == 'language=rs') {
		lang = 'language=sr';
	}
	if(param == null)
		url = 'http://www.stats.betradar.com/s4/?clientid=145&' + lang;
	else 
		url = 'http://www.stats.betradar.com/s4/?clientid=145&' + lang + '&' + param;
	popup(url, 'stats', 985, 720);
}

function createRandomString(chars, string_length) {
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
	    var rnum = Math.floor(Math.random() * chars.length);
	    randomstring += chars.substring(rnum, rnum+1);
	}
	return randomstring;
}

// >>> payment
function radioClick(component, field) {
	document.getElementById(field).setAttribute("value", component.value);
}
function selectTemplate(selectedDataPk) {
	document.getElementById('form:selectedDataPk').value = selectedDataPk;
	var elm = document.getElementById("securityCode" + selectedDataPk);
	if (elm != null) {
		document.getElementById('form:selectedSecurityCode').value = elm.value;
	}
}
function submitForm(submitButton, text) {
	submitButton.value=text;
	submitButton.onclick=doNothing;
}
function doNothing() {
	return false;
}
// <<< payment


//function pressedReactionDelay(delayInput) {
//	if (delayInput > 0) {
//		jQuery('#delay_layer, #delay_layer_inner').show();
//		delay(delayInput);
//		}
//	}

//function delay(delayInput) {
//	if (delayInput > 0) {
//		document.getElementById('counter').innerHTML = delayInput;
//		var delayTimeout = window.setTimeout('delay('+(delayInput - 1)+')', 1000);
//		}
//	else
//		jQuery('#delay_layer, #delay_layer_inner').hide();
//}

// help_layer

function getScrollPosition() {
	var scrollPosition;
	if (window.pageYOffset) {
		scrollPosition = window.pageYOffset;
	} else if (document.documentElement.scrollTop) {
		scrollPosition = document.documentElement.scrollTop;
	} else if ( document.body.scrollTop ) {
		scrollPosition = document.body.scrollTop;
	} else {
		scrollPosition = 0;
	}
	return scrollPosition;
}

function getScreenWidth() {
	var screenWidth;
	if (document.body.offsetWidth) {
		screenWidth = document.body.offsetWidth;
    } else {
  		screenWidth = window.innerWidth;
    }
	return screenWidth;
}

var clickX;
var clickY;
function showHelp (text) {
	var scrollPosition = getScrollPosition();
	var screenWidth = getScreenWidth();
	jQuery('#help_resultType_layer').css("left", (clickX + 280) > screenWidth ? screenWidth - 280 : clickX);
	jQuery('#help_resultType_layer').css("top", clickY + scrollPosition);
	document.getElementById('help_resultType_layer_inner').innerHTML = text;
	jQuery('#help_resultType_layer').show();	  
}

function closeHelp() {
	jQuery('#help_resultType_layer').hide();	  
}

function showArchiveLayer() {
	var scrollPosition = getScrollPosition();
	var screenWidth = getScreenWidth();
	jQuery('#archive_layer').css("left", (clickX + 280) > screenWidth ? screenWidth - 280 : clickX);
	jQuery('#archive_layer').css("top", clickY + scrollPosition);
	jQuery('#archive_layer').show();	  
}

function closeArchiveLayer() {
	jQuery('#archive_layer').hide();	  
}

function showAlertLayer(text) {
	var text_split = text.split('#*#');
	document.getElementById('alert_layer_inner').innerHTML = text_split[0];
	if(text_split[1])
		document.getElementById('alert_layer_inner_headline').innerHTML = text_split[1];
	jQuery('#alert_layer_bg').show();
	jQuery('#alert_layer').show();
}

function closeAlertLayer() {
	jQuery('#alert_layer_bg').hide();
	jQuery('#alert_layer').hide();
}

function trackClick (clickEvent) {
	var obj;
	var insideLayer = false;
	if (clickEvent != null) {
		obj = clickEvent.target;
	} else {
		clickEvent = window.event;
		obj = clickEvent.srcElement;
	}
	if (document.getElementById) {
		clickX  = clickEvent.clientX;
		clickY = clickEvent.clientY;
	} else if (document.all) {
		clickX = clickEvent.clientX;
		clickY = clickEvent.clientY;
	}
	
	if (jQuery(obj).hasClass("layerClass")) {
		jQuery(obj).find(".layerClass").hide();
		insideLayer = true;
	} else {
		insideLayer = jQuery(obj).parents('div').hasClass("layerClass");
	}	
	if(!insideLayer) {
        jQuery('#dim_layer').fadeOut('slow'); 
        jQuery(".layerClass").hide(); 
	}
}

document.onmousedown = trackClick;

// editor

var lock = false;
var delayTimeout;

function refresh() {
	if (!lock) {
		lock = true;
		refreshServer();
	}
}

function onReactionComplete() {
	A4J_ERROR_MESSAGE = ''; 
	lock = false; 
	reRenderHead(); 
	hideDelayLayer();
}

function delay(delayInput) {
	if (delayInput > 0) {
		document.getElementById('counter').innerHTML = delayInput;
		delayTimeout = window.setTimeout('delay('+(delayInput - 1)+')', 1000);
	}
}

function hideDelayLayer() {
	jQuery('#delay_layer, #delay_layer_inner').hide();
	clearTimeout(delayTimeout);
}

function showDelayLayer() {
	var popup = jQuery('#delay_layer_inner');
	popup.css('left', '50%');
	popup.css('top', '200px');
	popup.css('margin-left', '-150px');
	jQuery('#delay_layer, #delay_layer_inner').show();
}

function showCenteredDelayLayer() {
	var size = new Array();
	size = getWindowSize();
	var popup = jQuery('#delay_layer_inner');
	var left = (size[0] - popup.width()) / 2;
	var top = (size[1] - popup.height()) / 2;
	top -= 20;
	popup.css('left', left);
	popup.css('top', top);
	popup.css('margin-left', '0px');
	jQuery('#delay_layer, #delay_layer_inner').show();
}

function iFrameHeight(iframeId) {
	if(document.getElementById && !(document.all)) {
		h = document.getElementById(iframeId).contentDocument.body.scrollHeight;
	} else if(document.all) {
		h = document.frames(iframeId).document.body.scrollHeight;
	}
	if(h > 0) {
		h += 10;
		jQuery('#' + iframeId).css('height', h + 'px');
	}
}

//Button 'Daten ändern' und 'Cancel' (Kontaktdaten)
function but_change_data(what, suffix){
	this_obj = jQuery("#change" + suffix).parent();
	if(what == 1){
		this_obj.find(".off" + suffix).hide();
		this_obj.find(".hide" + suffix).show();
		this_obj.find(".bg_grey").css('backgroundColor','#ffffff');
	}
	else{
		this_obj.find(".off" + suffix).show();
		this_obj.find(".hide" + suffix).hide();
		this_obj.find(".bg_grey").css('backgroundColor','#ebebeb');
	}
}

// affiliate
function toggleOverview(field) {
	if (field == 'overviewInformation') {
		jQuery('.overviewInformation').show();
		jQuery('.overviewSportsbook').hide();
		jQuery('.overviewCasino').hide();
		jQuery('.overviewBilling').hide();
	}
	if (field == 'overviewSportsbook') {
		jQuery('.overviewInformation').hide();
		jQuery('.overviewSportsbook').show();
		jQuery('.overviewCasino').hide();
		jQuery('.overviewBilling').hide();
	}
	if (field == 'overviewCasino') {
		jQuery('.overviewInformation').hide();
		jQuery('.overviewSportsbook').hide();
		jQuery('.overviewCasino').show();
		jQuery('.overviewBilling').hide();
	}
	if (field == 'overviewBilling') {
		jQuery('.overviewInformation').hide();
		jQuery('.overviewSportsbook').hide();
		jQuery('.overviewCasino').hide();
		jQuery('.overviewBilling').show();
	}
}

function startWaitAjax() {
	jQuery('body').css('cursor','wait');
}
function stopWaitAjax() {
	jQuery('body').css('cursor','default');
}

// search
function encodeRedirectLocation(redirect, url, input) {
	if (redirect) {
		var redirectUrl = CONTEXT_PATH + url + '?input=' + input;
		location.href = redirectUrl;
	}
}

// verhindert im Editor die Eingabe von Zeichen
// erlaubt die Eingabe von Ziffern und einem bestimmten Trennzeichen
function ensureValidInput(event, separator) {
	var keycode;

	if (window.event) {
		keycode = window.event.keyCode;
	} else if (event) {
		keycode = event.which;
	} else {
		return true;
	}
	
	// Zahlen erlauben
	if (47 < keycode) {
		if (keycode < 58) {
			return true;
		}
	}
	
	// Trennzeichen erlauben
	if (keycode == separator)
		return true;

	// Steuerzeichen erlauben
	var kcok = new Array(8, 10, 13, 0);
	while (kcok.length > 0) {
		if (keycode == kcok.pop()) {							
			return true;
		}
	}

	return false;
}

var lastMouseMove = new Date().getTime();
var lastPollingTime = 0;
var sessionTimeout = 1000 * 60 * 14;//14 Minuten seit der _letzten Abfrage_

function handleMove(moveEvent) {
	var newLastMouseMove = new Date().getTime();
    if (newLastMouseMove - Math.max(lastMouseMove,lastPollingTime) < sessionTimeout) {
		lastMouseMove = newLastMouseMove;
	} else {
		document.onmouseover = null;	
		showAlertLayer(INACTIVITY_DIALOG_TEXT);
		jQuery('#alert_layer_button').click(function() {window.location='/'});
		window.setTimeout("window.location='/'", 6000);
	}
}

//wird von GWT und JS-Ajax-Funktionen aufgerufen 
//um die Zeit vom letzten Response sich zu merken
function updateLastPollingTime() {
	lastPollingTime = new Date().getTime();
}

function getLastMouseMove() {
	return lastMouseMove;
}

	document.onmouseover = handleMove;

var pollTimer;

function doPoll(_url, interval, executionThreshold) {
		var timeNoAction = executionThreshold;
		if (new Date().getTime() - getLastMouseMove() > timeNoAction) {
			pollTimer = window.setTimeout("doPoll('"+_url+"', "+interval+", "+timeNoAction+")", interval);
	    } else {
			jQuery.ajax({
				type: "GET",
				url: _url,
				cache: false,
				dataType: "text",
				success: function(data, textStatus) {
					if (data != '') {
						poll(data);
					}
					updateLastPollingTime();
				},
				error: function(XMLHttpRequest, textStatus, errorThrown) {
					updateLastPollingTime();
				},
				complete: function(XMLHttpRequest, textStatus) {
					pollTimer = window.setTimeout("doPoll('"+_url+"', "+interval+", "+timeNoAction+")", interval);
				}
			});
		}		
}

RefreshHandler.onUpdatesRequested = updateLastPollingTime;
window.setInterval(function() {
	if (new Date().getTime() - getLastMouseMove() > 5 * 60 * 1000) {
		RefreshHandler.stop();
    } else {
		RefreshHandler.start();
    }
}, 1000);

function stopPoll() {
	window.clearTimeout(pollTimer);
}

// Fügt der Affiliate Links&Banner Struktur nachträglich Formatierungen hinzu
// Es setzt landesspezifische Bilder neben die Sprachheader
// Und berechnet die Alternierung der Zeilenfarben. Dabei muss je nach Anzahl der Banner
// eine unterschiedliche 'line-height' gesetzt werden.
function markBannerButtons() {
	var topics = jQuery('#affiliateBanner ul.level5 > li.open > a');
	for (i = 0; i < topics.length; i++) {
		var content = jQuery(topics[i]).text().trim();
		// Es kann nur die Textinformation des entsprechenden Knotens verwendet werden
		// Dadurch wird es jedoch Reihenfolge-unabhängig
		var img = '';
		if (content == 'Deutsch' || content == 'German' || content == 'Tedesco') {
			img = 'german';
		} else if (content == 'Englisch' || content == 'English' || content == 'Inglese') {
			img = 'uk';
		} else if (content == 'Italienisch' || content == 'Italian' || content == 'Italiano') {
			img = 'italy';
		} else if (/Franz.sisch/.test(content) || content == 'French') {
			img = 'fr';
		} else if (content == 'Dutch') {
			img = 'netherlands';	
		} else if (content == 'Schweiz' || content == 'Swiss' || content == 'Svizzero') {
			img = 'swiss';
		} else if (/T.rkisch/.test(content) || content == 'Turkey') {
			img = 'turkey';
		}
		if (img != '') {
			jQuery(topics[i]).html('<img align="absmiddle" src="' + STATIC_SERVER + '/img/affiliate/flag-' + img + '.png"> ' + content);
		}
	}
	
	var height = 30;
	var links = jQuery('#affiliateBanner ul.level6 > li.open > a');
	for (i = 0; i < links.length; i++) {
		if (i % 2 == 0) {
			var leafs = jQuery(links[i]).parent().find('li.leaf');
			var rows = Math.ceil(leafs.length / 9);
			var element = jQuery(links[i]);
			element.css('height', rows * height + 'px');
			element.css('background-color', '#EBEBEB');
			element.parent().find('ul.level7').css('background-color', '#EBEBEB');
		}
	}
}

/*
 * Scrollt zu einer uebergebenen Position.
 * Anwendung beim Pageing in der Gruppenansicht, LWK und Meine Wetten.
 * Wenn animate == true, dann wird das Scrollen animiert dargestellt.
 */
function scrollToPosition(position, animate){
	if(animate){
		jQuery("html, body").animate({scrollTop:position}, 'slow');
	}else{
		jQuery("html, body").scrollTop(position);
	}
}

function getWindowSize() {
	var w = 0, h = 0;
	 
    if (typeof(window.innerWidth) == 'number') {
        w = window.innerWidth;
        h = window.innerHeight;
    } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
        w = document.documentElement.clientWidth;
        h = document.documentElement.clientHeight;
    } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
        w = document.body.clientWidth;
        h = document.body.clientHeight;
    }
    return [w, h];
}

function relocateCondLayer(id) {
	jQuery('#' + id + '_layer').css('top', jQuery('#' + id).offset().top - 55); 
	jQuery('#' + id + '_layer').css('left', jQuery('#' + id).offset().left - 45); 
}

function check_drop(this_obj, what, element){
	if(what == 1){
		this_obj.find(element).slideToggle('fast');
	}
	else{
		this_obj.mouseleave(function() {
			this_obj.find(element).hide();
			});
		}
}
/*
 * Vorraussetzung ist, dass das äußerste Element der timeline.jsp übergeben wird. (Hat die Klasse .timeline)
 * Hier wird der aktuelle Status der Filterbuttons gespeichert, damit dieser wiederhergestellt werden kann nach einem update.
 * Dann wird über pressEventButton der aktuelle Status getogglt
 */
var buttonStates = {};
var possibleStates = new Array('point','yellow-card','red-card','corner-kick', 'offside');
function saveStateAndPress(obj, classname){
	var divId = jQuery(obj).parent().attr('id');
	var boolMap = buttonStates[divId];
	if (boolMap == undefined){
		boolMap = {};
		for (var i=0;i<possibleStates.length;i++){
			var val = possibleStates[i];
			boolMap[val] = classname!=val ? false : true;
		}
		buttonStates[divId] = boolMap;
	}else
		boolMap[classname] = !boolMap[classname];
	pressEventButton(obj, classname);
}

/*
 * Status der Zeitleiste wiederherstellen. (Eingedrückte Filterbuttons)
 */
function restoreTimelineState(divId, thisObj){
	var boolMap = buttonStates[divId];
	if (boolMap!==undefined){
		var obj = jQuery(thisObj).find('.timeline');
		for (var i=0;i<possibleStates.length;i++){
			var val = possibleStates[i];
			if (boolMap[val])
				pressEventButton(obj, val);
		}
	}
}

/*
 * Ein Filterbutton der Zeitleiste wird eingedrückt.
 */
function pressEventButton(obj, classname){
	jQuery(obj).find('.' + classname).toggleClass('select');
}

//Toggled eine Zeitleiste unter "Meine Wetten"
function tog_timeline(this_obj, eventId, betId){
	var url = '/timeline?eventId=' + eventId + '&betId=' + betId;
	var tl = jQuery(this_obj).parent().find('#_timeline_eventId_' + eventId + '_betId_' + betId);
	toggle_timeline(this_obj, url, tl);
}

//Toggled eine Zeitleiste unter "Ergebnisse" des Popups "Ergebnisse und Livescore"
function tog_timeline_results(this_obj, eventId){
	var url = '/timeline?eventId=' + eventId;
	var tl = jQuery(this_obj).parent().parent().find('#_timeline_eventId_' + eventId);
	toggle_timeline(this_obj, url, tl);
}

function toggle_timeline(this_obj, url, tl){
	if(tl.is(':hidden')){
		RefreshHandler.nav(url);
		jQuery(this_obj).parent().addClass("on");
		tl.show();
	}
	else{
		RefreshHandler.stopRefresh(tl);
		jQuery(this_obj).parent().removeClass("on");
		tl.hide();
	}
}

//über die Spielstände/Rote Karten in LWK-Gadget/LWK iterieren und die blinken lassen
function blink() {
	jQuery(".blink").each(function() {
		jQuery(this).toggleClass("invisible");
	});
	blinkTimer = window.setTimeout('blink();', 1000);
}
blink();

//Auf/Zuklappt die ausgeblendeten Ausgänge bei Wettkampf-Sportarten
function toggleFurtherBets(element) {
	var el = jQuery(element);
	el.parent().parent().children('.extra').toggleClass('hide');
	el.children().each(function(){jQuery(this).toggleClass('hide');});
}

function getCompetitionKey(eventId) {
	var key = 'TOP_COMPETITION_OPEN_' + eventId;
	if (window[key] === undefined) {
		window[key] = false;
	}
	return key;
}

//stellt den State bei Top-Competition wieder her (das Bild, Zeilen (>3), unteren Bereich)
function restoreCompetitionFurtherBets(eventId, element) {
	var key = getCompetitionKey(eventId);
	var hideFnc = function(node, hide) {
		if (window[key] || !hide) {
			node.removeClass('hide');
		} else if (hide){
			node.addClass('hide');
		}
	};
	//Das Bild mit Sport-Image
	jQuery(element).find('.sheet_te.extra').each(function(){
		hideFnc(jQuery(this),true);
	});
	jQuery(element).filter('.competition').find('.extra').each(function(i){
		hideFnc(jQuery(this),i >= 3);
	});
	//child-Elemente toggln, falls parent nicht mit dem Style 'extra' versehen ist
	jQuery(element).filter('.headToHead').find('.extra').each(function(i){
		hideFnc(jQuery(this),i >= 3);
	});
	//sich selbst auf die css-Klasse 'extra' prüfen
	jQuery(element).filter('.yesNo.extra').each(function(){
		hideFnc(jQuery(this),true)
	});
	//Text: wenige Wetten/mehr Wetten toggln (beim JS-Update oder Klicken auf dem Text)
	//#close_eventId wird nur dann gefunden, 
	//wenn die Funktion die Referenz auf Top-Rennen (nicht die Unterbereiche) bekommt
	jQuery(element).find('#close_'+eventId).find('div').each(function() {
		if (window[key]) {
			jQuery(this).toggleClass('hide');
		}
	});
}

//Auf-/Zuklappt die Zeilen bei Top-Competition (das Bild, Zeilen (>3), unteren Bereich)
function toggleCompetitionFurtherBets(eventId, element) {
	var key = getCompetitionKey(eventId);
	window[key] = !window[key];
	//Das Bild mit Sport-Image
	jQuery(element).find('.sheet_te.extra').each(function(){
		jQuery(this).toggleClass('hide');
	});
	jQuery(element).find('.competition').find('.extra').each(function(i){
		if(i >= 3) {
			jQuery(this).toggleClass('hide');
		}
	});
	//child-Elemente toggln, falls parent nicht mit dem Style 'extra' versehen ist
	jQuery(element).find('.headToHead').find('.extra').each(function(i){
		if(i >= 3) {
			jQuery(this).toggleClass('hide');
		}
	});
	//sich selbst auf die css-Klasse 'extra' prüfen
	jQuery(element).find('.yesNo.extra').each(function(){
		jQuery(this).toggleClass('hide');
	});

	jQuery(element).find('#close_'+eventId).find('div').each(function() {
		jQuery(this).toggleClass('hide');
	});	
}

//Suche: Merkt den Zustand von Ergebnisse und Livescore Bereich und togglt es auch, falls notwendig
function toggleLivescoreSection(restoreState) {
	var isHidden = jQuery('#box_rl .box_rl_cont').is(':hidden');
	var open;
	if (restoreState) { 
		open = isHidden && window.livescoreSectionOpen !== undefined && window.livescoreSectionOpen;
	} else {
		open = isHidden;
	}
	if(open){
		jQuery('#box_rl .box_rl_cont,  #box_rl_pag').show();
		jQuery('#box_rl .hilights_head').removeClass('close');
		window.livescoreSectionOpen = true;
	}else{
		jQuery('#box_rl .box_rl_cont, #box_rl_pag').hide();
		jQuery('#box_rl .hilights_head').addClass('close');
		window.livescoreSectionOpen = false;
	};
}

function alternate(selector, oddStyle, evenStyle, switchClass, withParent) {
	if (!oddStyle) {
		oddStyle = '';
	};
	if (!evenStyle) {
		evenStyle = 'even';
	};
	var odd = true;
	jQuery(selector).each(function() {
		if (switchClass) {
			var e = withParent ? jQuery(this).parent() : jQuery(this);
			if(e.prev().hasClass(switchClass)) {
				odd = true;
			}
		}
		if (odd) {
			jQuery(this).removeClass(evenStyle);
			jQuery(this).addClass(oddStyle);
		} else {
			jQuery(this).removeClass(oddStyle);
			jQuery(this).addClass(evenStyle);
		}
		odd = !odd;
	})
}

//Wird beim Click auf Suche-Suggestion ausgeführt
function selSuggestion(text) {
	jQuery("#searchField").val(text);
	jQuery("#searchForm").submit();
}

function paginationClick(url, scrollToTop) {
	RefreshHandler.nav(url);
	if (scrollToTop) {
		scrollToPosition('0', false);
	}
}

function bindSuggestionBehavior(searchDefaultString) {
	var searchTab = jQuery("#box_00"); //die ganze Form + Suggestions
	var searchField = jQuery('#searchField'); //das Eingabefeld
	/*verzögertes Aufrufen von Suchstring*/
	var callSearch = function() {
		var searchString = jQuery("#searchField").val();
		RefreshHandler.nav('@suggestion/search/suggestion?s='+encodeURIComponent(searchString));
	}
	var searchTimeout;
	searchField.keyup(
		function(event) {
	        if (searchTimeout !== undefined){
	        	clearTimeout(searchTimeout);
	        }
	        searchTimeout = setTimeout(callSearch, 200);
		}
	);
	searchField.click(function() {
		if(searchField.val() == searchDefaultString){
			searchField.val('');
		}
	});	
	var mouseOverSuggestion = false;
	//Suggestion-Box verschwinden lassen, 
	//nur wenn man den gesamten Bereich (li id="box_00") verlässt
	searchTab.focusout(function (e) {
		if(!mouseOverSuggestion) {
			jQuery('#box_00 .box_00').hide();
			searchTab.removeClass('on_3');
			if(!searchField.val()){
				searchField.val(searchDefaultString);
			}
		} else {
			//focus zurück setzen, damit focusout wieder funktioniert
			//setTimeout - hack, funktioniert in firefox ansonsten nicht
			setTimeout(function() {searchField.focus();}, 100);
		}
	});
	searchTab.mouseover(function() {
		mouseOverSuggestion = true;
		jQuery(this).addClass('on_3');
	});
	searchTab.mouseout(function (e) {
		if(jQuery.contains(this, e.relatedTarget) == false) {
			mouseOverSuggestion = false;
			//nur den Style an Suchfeld ändern, wenn Suggestions 
			//nicht angezeigt werden. zB beim Ziehen von Maus nach oben
			if (!jQuery('#box_00 .box_00').is(':visible')) {
				searchTab.removeClass('on_3');
			}
		}
	});
}


function toggleSmallConferenceSection(restoreState) {
	var isOpen = !jQuery('#box_lwk').is(':hidden');
	var open;
	if (restoreState) { 
		open = window.conferenceGroupSelectionOpen === undefined || window.conferenceGroupSelectionOpen;
	} else {
		open = !isOpen;
	}
	if(open){
		jQuery('#box_lwk').show();
		jQuery('#box_lwk_foot').show();
		jQuery('#box_lwk_closed_header').hide();
		window.conferenceGroupSelectionOpen = true;
	}else{
		jQuery('#box_lwk').hide();
		jQuery('#box_lwk_foot').hide();
		jQuery('#box_lwk_closed_header').show();
		window.conferenceGroupSelectionOpen = false;
	};
}

/**
 * Funktion zur Steuerung von LWK-Gadget Gruppenauswahl (Anzeige von Events für ausgewählte Gruppen) 
 * @param init - ob es der allererste Request ist oder nur Nav-Aufruf (Gruppen wurden hinzugefügt/entfernt)
 * @param selectedGroupIds - in Gruppen-Navigation selektierte Gruppen-Ids
 * */
function smallConferenceGroupSelection(init, selectedGroupIds) {
	if (init) {
		//RefreshHandler.nav() soll nicht aufgerufen werden, wenn direkt nachdem das Gadget geladen wurde
		window.firstSmallConferenceGroupSelection = true;
		//setTimeout - ist eine Lösung dafür, damit RefreshHandler.init()/nav() erst dann aufgerufen werden
		//nachdem das per Ajax gelieferte Dokument tatsächlich in DOM-Baum hinzugefügt wurde. 
		setTimeout(function() {
			RefreshHandler.init();
		}, 0);
	} else {
		if (window.firstSmallConferenceGroupSelection) {
			window.firstSmallConferenceGroupSelection = false;
		} else {
			var url = '@smallconferencegroup/program/smallconferencegroupselection?selectedGroupIds='+selectedGroupIds;
			setTimeout(function() {
				RefreshHandler.nav(url);
			},0);
		}
	}
}

function viewResults(sportId, timefilter){
	//Alle offenen Zeitleisten auf hide setzen damit sie beim wechsel der Results Standardmäßig zu sind.
	var timeline = jQuery(".timeline");
	timeline.hide();
	timeline.parent().hide()
	//Results wechseln
	RefreshHandler.nav("@content" + "/results/" + sportId + "/" + timefilter);
}

function viewLivescore(){
	RefreshHandler.nav("@content/livescore");
}

function viewMyLeagues(){
	RefreshHandler.nav("@content/myleagues");
}

function viewMyEvents(){
	RefreshHandler.nav("@content/myevents");
}

jQuery(function() {
	var pp = jQuery("#password_placeholder");
	var p = jQuery("#password");
	var l = jQuery("#login");

	pp.click(function() {
	    p.focus();
	});
	p.focus(function() {
		pp.hide();
	});
	function update_pp() {
	    if (p.attr("value")) {
	    	pp.hide();
	    } else {
	        pp.show();
	    }
	}
	p.blur(update_pp);
	l.blur(update_pp);
	l.click(update_pp);
	l.focus(update_pp);
	l.change(update_pp);
});

jQuery(function() {
	var pp = jQuery("#password_placeholder_2");
	var p = jQuery("#password_2");
	var l = jQuery("#casinoLogin");
	
	pp.click(function() {
		p.focus();
	});
	p.focus(function() {
		pp.hide();
	});
	function update_pp() {
		if (p.attr("value")) {
			pp.hide();
		} else {
			pp.show();
		}
	}
	p.blur(update_pp);
	l.blur(update_pp);
	l.click(update_pp);
	l.focus(update_pp);
	l.change(update_pp);
});
