﻿/*# Metadata ################################### Header v.2
# $URL: http://gt-nas-1/svn/gamebase.frontend/trunk/xsl_gamebase/_stargames/data/tools_mootools1.2.js $
# $Rev: 6219 $
# $Date: 2011-12-20 15:27:19 +0100 (Di, 20 Dez 2011) $
# $Author: bszil $
### TOC ###################################################
#
### Description ###########################################
#
#########################################################*/

var COOKIEDOMAIN = /^[^.]*(\.[^.]*(?:\.\w{2,3})?\.[^.]*)$/.exec(location.hostname);
COOKIEDOMAIN = (COOKIEDOMAIN != null) ? COOKIEDOMAIN[1] : location.hostname;

top.GameBaseClient = new Hash.Cookie('GAMEBASE_CL', {
	duration: 365,
	domain: COOKIEDOMAIN,
	path: '/'
});

var IE6 = (Browser.Engine.trident4) ? true : false;
var IE7 = (Browser.Engine.trident5) ? true : false;
var IE8 = (Browser.Engine.trident6 && Browser.version == 8) ? true : false;
var IE = (Browser.Engine.trident) ? true : false;

function startSlideshow() {
	if ($('heading')) {
		headerSlideshow = new gallery($('heading'), {
			elementSelector: "div.container",
			titleSelector: "h3",
			subtitleSelector: "p",
			imageSelector: "img",
			showArrows: false,
			showCarousel: false,
			embedLinks: false,
			timed: true,
			baseClass: "headerSlideshow",
			defaultTransition: "crossfade",
			slideInfoZoneSlide: false,
			slideInfoZoneOpacity: 1
		});
	
		$('heading').addEvent('mouseenter', function () {
			$('heading').getElement('h2 a').setStyle("display", "none");
			$('heading').getElement('.slideInfoZone').setStyle("display", "block");
		});
		$('heading').addEvent('mouseleave', function () {
			$('heading').getElement('h2 a').setStyle("display", "block");
			$('heading').getElement('.slideInfoZone').setStyle("display", "none");
		});
	}
}

function loginFields() {
	var qAutologinVisible = false;
	if ($('lNick')) {
		
		var showAutologin = new Fx.Tween("qLogin", {
			duration: 100
		}).start('height');
		
		var lNick = $('lNick');
		var lPass = $('lPass');
		
		//neues passwort feld erzeugen
		var lPassText = new Element("input", {
			"type": "text",
			"name": "passText",
			"id": "lPassText",
			"value": qLoginPass ,
			"class": "formField ffInput",
			"styles": {
				"display": "inline"
			}
		});
		
		lPassText.inject("lPass", "after");
		lPass.setStyle('display', 'none');
		
		var statusSubmit = new Element("a", {
			"class": "statusBarSubmit",
			"href": "#"
		});
		
		var statusText = new Element("span").set('text', qLoginSubmit)
		statusSubmit.adopt(statusText);
			
		statusSubmit.inject($("qLogin").getElement("button"), 'before');
		$("qLogin").getElement("button").addClass("ieFakeSubmit");
		
		lNick.addEvent('focus', function (evt) {
			if (!qAutologinVisible) {
				showAutologin.start('height', '50');
			}
			if (lNick.value == lNick.defaultValue) {
				lNick.value = "";
			}
		});
		
		lNick.addEvent('blur', function (evt) {
			if (lNick.value == "") {
				lNick.value = lNick.defaultValue;
			}
		});
	
		
		lPass.addEvent('blur', function (evt){
			if (lPass.value == "") {
				lPass.setStyle('display', 'none');
				lPassText.setStyle('display', 'inline');
			}
		});
		
		lPassText.addEvent('focus', function (evt){
			if (!qAutologinVisible) {
				showAutologin.start('height', '50');
			}
			lPassText.setStyle('display', 'none');
			lPass.setStyle('display', 'inline');
			lPass.focus();
		});
	
	}
	
	/*submit mit normalem link*/
	
	if($('qLogin')){
		$('qLogin').getElement('.statusBarSubmit').addEvent('click', function () {
				if ($('lNick').value == $('lNick').defaultValue) {
					$('lNick').value = '';
				}
				$('qLogin').submit();
		});
	}
}

function gamesMenu(start) {
	var sideBarGames = new Accordion('#gamesCatTabs a', '#gamesBar ul', {
	 	show: start,
		opacity: false,
		onActive: function(toggler, element) {
			element.getParent().getElement('.gamesCatHeader').setStyle('display', 'block');
			$('gamesCatTabs').setStyle('background-position', '0px -'+$('gamesCatTabs').getElements('a').indexOf(toggler) * $('gamesCatTabs').getStyle('height').toInt() + 'px');
			$(element).setStyle('zoom', '1');
		},
		onBackground: function(toggler, element){
			element.getParent().getElement('.gamesCatHeader').setStyle('display', 'none');
		}
	}, $('gamesBar'));
	
	var sideBarTips = new Tips($('gamesCatTabs').getElements('a'), {
		onShow: function (toolTip) {
			toolTip.fade('in');
		},
		onHide: function (toolTip) {
			toolTip.fade('out');
		},
		className: "sideBarTips-tip"
	});
}

function setLangMultiFormat(iso) {
	var langExpr, loc, mode, langRepl, newLoc;
	/*
	0: findet /en/
	1: findet lang=en oder lang~en
	2: findet id_lang=2 oder id_lang~2
	*/
	langExpr = /[^:]*:\/\/[^\/]*\/(?:(?:[^\/]*\/(\w{2})\/)|(?:.*[\?&~\/](?:(?:id_lang(?:=|~)(\d{1,}))|(?:lang(?:=|~)(\w{2})))))?.*/;
	loc = self.location.href;
	langExpr.exec(loc);

	/*
	0: suchmuster für /en/
	1: suchmuster für id_lang=2 oder id_lang~2
	2: suchmuster für lang=en oder lang~en
	*/	
	langRepl = [/(.*\/)\w{2}(\/.*)/,/(.*[?&~/])id_lang(=|~)\d+(.*)/,/(.*[?&~/])lang(=|~)\w{2}(.*)/];
	
	//welches suchmuster soll angewendet werden
	mode = (RegExp.$1) ? '0' : (RegExp.$2) ? '1' : (RegExp.$3) ? '2' : '3';
	//suchmuster auswählen
	langRepl = langRepl[mode];

	if (mode == 0) {
		newLoc = loc.replace(langRepl, '$1' + iso + '$2');
	}
	else if (mode == 3) {
		var LangAnchor = /([^#]*)(#?.*)$/; // trennt sprungziel von der url
		var LangType = /(?:(\?|&)|(~)|(.+\/)|((?:~[^/]+)|(?:=[^&]+))|([^?&~/]))$/;// nochmal suchmuster für urlendungen
		var noPath = /^.*:\/\/[^/]*\/$/;
		/*
		1
		/? => ?
		/& => &
		
		2
		/display/page~ => &lang=de
		
		3
		/display/page~register_start/ => lang.html?lang=de
		
		4
		/display/page~register_start => &lang=de
		
		5
		/display/page~register_start/Registration.html => ?lang=de
		*/

		LangAnchor = LangAnchor.exec(loc);//anker von url trennen
		LangType = LangType.exec(LangAnchor[1]);//suchmuster wählen
		LangType = LangType[1] ? '' : LangType[2] ? '&' : LangType[3] ? 'lang.html?' : LangType[4] ? '&' : '?';//was muss geändert werden
		
		if (noPath.test(loc)) {
			LangType = '?';
		}
			
		newLoc = LangAnchor[1] + LangType + 'lang=' + iso + LangAnchor[2];//url zusammenbauen und anker wieder anhängen
	}
	else {
		newLoc = loc.replace(langRepl, '$1lang$2' + iso + '$3');			
	}
	self.location.href = newLoc;
}

// LANGUAGE DROPDOWN 
function languageMenu(){
	if ($('languages')) {
		var languages = $('languages'),
		hide = {
			height: languages.getElement('li').getSize().y
		},
		show = languages.measure(function () {
			var returnValue;
			this.setStyles({
				height: 'auto'
			});
			returnValue = {
				height: this.getSize().y
			};
			this.setStyles(hide);
			return returnValue;
		});
		languages.addEvents({
			mouseenter: function () {
				this.morph(show);
			},
			mouseleave: function () {
				this.morph(hide);
			}
		});
		
		if ($(document.body).hasClass('opera') && navigator.userAgent.match(/Mobi|Tablet/i)) {
			var languagesUl = languages.getElement('ul'),
				languagesElements = $$(
					languagesUl,
					languages
				);
			languagesUl.setStyles({
				'height': 'inherit',
				'padding-bottom': 0
			});
			languagesUl.getElement('li.active a').addEvent('click', function () {
				if (languages.style.height == 'auto') {
					languagesElements.setStyle('height', hide.height);
				} else {
					languagesElements.setStyle('height', 'auto');
				}
			})
		}
	}
}

/*currency dings*/
function currencyMenu(){
	if($('currencyContainer') && $('amountOfMoney')) {
		var currencyContainer = $('currencyContainer');
		var currency = $('currency');
		currencyContainer.inject('amountOfMoney');
		var hide = {
			height: 0
		},
		show =  currency.measure(function () {
			var returnValue;
			currency.setStyles({
				height: 'auto'
			});
			returnValue = {
				height: currency.getSize().y
			};
			currencyContainer.setStyles(hide);
			return returnValue;
		});
		
		$('amountOfMoney').addEvents({
			mouseenter: function () {
				currencyContainer.morph(show);
			},
			mouseleave: function () {
				currencyContainer.morph(hide);
			}
		});	
	}
}

GT = window.GT || {};

window.addEvent('domready', function () {
	BODY = $(document.body);
	smallToRoot();
	
	if (Browser.Engine.trident4) {
		$$('input,select,textarea,button,.ieHover').each(function (el) {
			el.addEvent('mouseover', function () {
				el.addClass("hover");
			});
			el.addEvent('mouseout', function () {
				el.removeClass("hover");
			});
			el.addEvent('focus', function () {
				el.addClass("focus");
			});
			el.addEvent('blur', function () {
				el.removeClass("focus");
			});
		});
	}
	
	

	var aTooltip = $$('a[gtt]');
	
	GT.tooltip = new Tips(aTooltip, {
		text: '', 
		title: function (element) {
			return element.get('gtt');
		},
		'className': 'tooltip',
		showDelay: 100,
		hideDelay: 50,
		onShow: function (tip, el) {
			tip.set('tween', {
				onStart: function () {
					this.set('display', 'block');
				},
				onComplete: function () {
					if (!this.subject.getStyle('opacity')) {
						this.set('display', 'none');
					}
				}
			});
			tip.tween('opacity', 1);
		},
		onHide: function (tip, el) {
			tip.tween('opacity', 0);
		}
	});

	
	loginFields();
	
	languageMenu();

	currencyMenu();

	/*der opera schnallts sonst irgendwie nicht*/
	if ($('main')) {
		$('main').getElements('.gameLogo').each(function (el) {
			var shade = new Element("span", {
					"class": "shade"
			});	
			shade.inject(el.getElement('a'));	
			
			//keine ahnung warum der opera das da nicht will..
			//&weil er spinnt bekommt ers garnicht
			if (!window.opera) {
				el.getElement('img').reflect({
					height: 0.2,
					opacity: 0.3
				});
			}
		});
	}
	
	//das brauchen wir für den armen ie 6 der mal wieder probs hat - wegen dem reflextion script
	//das wird nur gemacht wenn die classe room nicht gesetzt ist - denn da haben wir schon sowas
	
	document.getElements('.ie6 .gameLogo a').each(function (el) {
		if (!el.hasClass("room") && !el.getProperty("rel")) {
			el.addEvent('click',function (evt) {
				evt.preventDefault();
				self.location.href = el.getProperty('href');
			});
		}
	});	
	
	/*für die kleinen icons bei den spielen auf der games seite*/
	var gameIcons = new Tips('.gameIcons img',{
			initialize: function(){
				toolName.addClass("gameIcon");
			},
			onShow: function(toolTip){
				toolTip.fade('in');
			},
			onHide: function(toolTip){
				toolTip.fade('out');
			},	
		className:"gameIcon-tip"
	});	

	if ((document.getElement('body').hasClass("login") && top.opener && !top.opener.closed) || (document.getElement('body[class^=warning_]') && !document.getElement('body').hasClass('warning_disconnect')) || document.getElement('body').hasClass("room")){
		BODY.addClass("min");
	} else if (document.getElement('body[class^=payment]')) {
		BODY.addClass("payment");
	}
	
	if (document.getElement('body').hasClass('casino')) {
		if ($('btnCasino')) {
			$('btnCasino').addClass("active");
		}
	} else if (document.getElement('body[class^=game]')) {
		if ($('btnGames')) {
			$('btnGames').addClass("active");
		}
	} else if(document.getElement('body[class^=tourn]')) {
		if ($('btnTourn')) {
			$('btnTourn').addClass("active");
		}
	}
	
	$$('body.min .opener.close').addEvent('submit', function (evt) {
		if (opener && !opener.closed){
			this.target = 'root';
			self.close();
		}
	});
	
	$$('body.room #tipContainer a')
		.addClass('opener')
		.addClass('close');
	
	//real und fun boxen gleich hoch machen
	
	if ($('regPlayForFun') && $('regPlayForReal')) {
		var theHeight = Math.max($('regPlayForFun').getElement('.container').getStyle('height').toInt(), $('regPlayForReal').getElement('.container').getStyle('height').toInt());
		$('regPlayForFun').getElement('.container').setStyle('height', theHeight);
		$('regPlayForReal').getElement('.container').setStyle('height', theHeight);
	}
	
	//FUN REAL buttons machen das selbe wie der link in der box
	$$('#regPlayForReal, body:not(.warning_moneyroom) #regPlayForFun').each(function (el,index) {
		var theLink = el.getElement('.next a');
		el.getElement('button').addEvent('click', function () {
			if (theLink.hasClass("opener")) {
				loadOpenerNew(theLink);
			} else {
				self.location.href = theLink.getProperty("href");
			}
		});
	});
	
	$$('a.opener').each(function (el) {
		el.addEvent('click', function (evt) {
			evt.preventDefault();
			loadOpenerNew(el);
		});
	});

	$$('a.profile').each(function (el) {
		el.addEvent('click', function (evt) {
			evt.preventDefault();
			popupWindowNew(470, 400, "scrollbars=yes", el);
		});
	});
	
	$$('a.room_casino').each(function (el) {
		el.addEvent('click', function (evt) {
		var width = screen.width - 100;
		var height = screen.height - 100;					 
			evt.preventDefault();
			openWindow(el.getProperty('href'), '_blank', 'scrollbars=yes, resizable=yes', 960, 768);
		});
	});
	
	$$('a.room').each(function (el) {
		el.addEvent('click', function (evt) {
			evt.preventDefault();
			openWindow(el.getProperty('href'), '_blank', 'scrollbars=yes, resizable=yes', 980, 764);
		});
	});
	
	formErrors.each(function(el, index) {
		var input = (document.getElement('input[id='+el+']')) ? document.getElement('input[id=' + el + ']') : $(el);
		$(input.parentNode.parentNode).addClass("formError");
	});

	//für die systemcheck eine classe setzen
	if (document.getElement(".warning_systemcheck #warningBox")) {
		document.getElement(".warning_systemcheck #warningBox").addClass("infoBox");
	}
});

function setGameSize(size){
	top.GameBaseClient.set('gameSize', size);
	top.$('gameSize').selectedIndex = size;
	var sizes = ['gameSmall', 'gameMed', 'gameLarge']
	sizes.each(function (el, i) {
		$(top.document.body).removeClass(el);
	});
	$(top.document.body).addClass(sizes[size]);	
	var nWidth = top.$('gameFrame').getStyle('width');
	var nHeight = top.$('gameFrame').getStyle('height');
	var theGame = top.frames[0].document.getElementById("gameApplet");
	//spielgrösse
	theGame.style.height = nHeight;//ie-error
	theGame.style.width = nWidth;
	
	//wie gross ist der wrapper
	var wSize = top.$("wrapper").getSize();
	
	var nWidth = wSize.x;//+17//+scrollbar;
	var nHeight = wSize.y + 28;//+footer
	if (top.outerHeight) {
		nHeight = nHeight + (top.outerHeight - top.innerHeight);
		nWidth = nWidth + (top.outerWidth - top.innerWidth);
		top.moveTo(Math.max(0, screen.availWidth / 2 - nWidth / 2), Math.max(0, screen.availHeight / 2 - nHeight / 2));
		top.resizeTo(Math.min(nWidth + 17, screen.availWidth), Math.min(nHeight, screen.availHeight));//17px für scrollbar
	} else {
		top.moveTo(Math.max(0, screen.availWidth / 2 - nWidth / 2), Math.max(0, screen.availHeight / 2 - nHeight / 2));
		ieResize(nWidth, nHeight);
		top.$('gameSettings').setStyle('right', (GetInnerSize()[0] - Math.min(nWidth, GetInnerSize()[0]) + 27) + 'px');
	}
}

function GetInnerSize() {
	var x, y;
	if (self.innerHeight) // all except Explorer
	{
		x = self.innerWidth;
		y = self.innerHeight;
	} else if (top.document.documentElement && top.document.documentElement.clientHeight)
		// Explorer 6 Strict Mode
	{
		x = top.document.documentElement.clientWidth;
		y = top.document.documentElement.clientHeight;
	}
	else if (top.document.body) // other Explorers
	{
		x = top.document.body.clientWidth;
		y = top.document.body.clientHeight;
	}
	return [x, y];
}

function ieResize (w, h) {
	x = top.screenLeft || top.screenX;
	y = top.screenTop || top.screenY;

	top.moveTo(0, 0);
	top.resizeTo(screen.availWidth, screen.availHeight);

	var inner = GetInnerSize();
	var ox = screen.availWidth - inner[0];
	var oy = screen.availHeight - inner[1];
	top.resizeTo(w + ox, h + oy);
}

function pgPrint(){
	var theUrl = self.location.href;
	var theExpr = /.*(\?|~|&).*/;
	var delimiter = (theExpr.exec(theUrl)) ? "&" : "?";
	var theAnchor = /([^#]*)(#?.*)$/; // trennt sprungziel von der url
	theAnchor = theAnchor.exec(theUrl);
	theUrl = theAnchor[1] + delimiter + 'rm=print';
	window.open(theUrl);
}

function smallToRoot(){
	if (BODY.hasClass('small') || BODY.hasClass('room')) {
		BODY.addEvent('click', function (event) {
			var eventTarget = $(event.target),
				link = (eventTarget.get('tag') == 'a') ? eventTarget : eventTarget.getParent('a'),
				special;		

			if (link) {
				special = link.getParent('h1') || link.getParent('div#footer') || false;				
				
				if (BODY.hasClass('small') && BODY.hasClass('help')) {
					link.setProperty('target', '_blank');
										
					(function () {
						self.close();
					}).delay(500);		
									
					var target = self;
					while(target.top.opener && !target.top.opener.closed) {
						target = target.top.opener;
						target.focus()
					}						
				}
				
				if (link.hasClass('opener') || special) {
					link.setProperty('target', 'root');
					if (opener && !opener.closed) {
						opener.focus();
					}
				}
								
				if (link.hasClass('close') || special) {
					(function () {
						self.close();
					}).delay(500);
				}
			}
		});
	}
}
