var modules = {
	'huetchenspiel':{
		'w':806,
		'h':422
	},
	'ausweicher':{
		'w':600,
		'h':400
	},
	'realpuzzle':{
		'w':900,
		'h':500
	},
	'schiebepuzzle':{
		'w':500,
		'h':450
	},
	'highscores':{
		'w':550,
		'h':400
	},
	'formular':{
		'w':700,
		'h':500,
		'id':'form'
	},
	'info1':{
		'w':500,
		'h':400,
		'id':'info1'
	}
};

// get Handle to Flash movie
function thisMovie(movieName) {
	if (navigator.appName.indexOf("Microsoft") != -1) {
		return window[movieName];
	} else {
		return document[movieName];
	}
}

var mainFlashObj = null;

function createFlash(swfFile,w,h,id,flashId) {
	var params = {
		'wmode':"opaque",
		'bgcolor':"#ffffff",
		'quality':"best",
		'allowNetworking':"all",
		'allowScriptAccess': "always",
		'id':flashId,
		'name':flashId
	};
	swfobject.embedSWF(swfFile, id, w, h, "9.0.0", "expressInstall.swf",
		{}, params, {
			'redirectUrl':"http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash"
		}
	);
}

var offX, offY;
var lastModule = "";
var lastMod = null;

function startModule(moduleName) {
	//var winSize = window.getSize();
	//alert("Window is "+winSize.x+"x"+winSize.y+" pixels");
	lastModule = moduleName;
	var mod = modules[moduleName];
	lastMod = mod;
	window.scrollTo(0,0);

	var bodySize = $('body').getSize();
	offX = Math.floor((bodySize.x-mod.w)/2);
	offY = Math.floor((bodySize.y-mod.h)/2);

	//alert("modul ist "+mod.w+"x"+mod.h+" groß und kommt nach "+offX+","+offY);

	var bodyHeight = $('body').getScrollSize().y;

	var sperrDiv = new Element("a",{id:'sperrdiv'});
	sperrDiv.setStyles({
		'display':'block',
		'position':'absolute',
		'top':0,
		'left':0,
		'opacity':0,
		'width':screen.width,
		'height':bodyHeight,
		'background':'#000000'
	});
	sperrDiv.inject('flashHolder','before');
	var myFx = new Fx.Tween(sperrDiv);
	myFx.start('opacity', '0.5');


	var closeStr = '<a href="javascript:closeGame();" alt="schließen" class="schliessenbutton"></a>';
	var elm = new Element("div",{'class':'floater','html':closeStr,'id':'gameholder'});
		elm.setStyles({
			'left':offX,
			'top':offY,
			'width':mod.w+10,
			'height':mod.h+40,
			'overflow':'hidden'
		});

	if (mod.id) {
		elm.inject($('flashHolder'));
		var f = $(mod.id);
		f.setStyles({
				'left':offX+5,
				'top':offY+35,
				'display':"block",
				'position':'absolute'
		});
		document.f['agb'].value=0;
		showOverlay(mod.id);
	} else {
		var flashElm = new Element("div",{'class':'flashcontent','id':'minigame'});
		flashElm.setStyles({
			'width':mod.w,
			'height':mod.h
		});
		var flashGameElm = new Element("div",{'id':'holder'});

		elm.inject($('flashHolder'));
		flashElm.inject(elm);
		flashGameElm.inject(flashElm);

		//mainFlashObj.freeze();
		var swfFile = moduleName;
		if (moduleName=="ausweicher" && anbieter=="doppeldecker") swfFile = "ausweicher_doppeldecker";
		if (moduleName=="ausweicher" && anbieter=="bigben") swfFile = "ausweicher_bigben";
		createFlash("swf/"+swfFile+".swf",mod.w,mod.h,'holder','holder');
	}
	thisMovie('mainflash').freeze();
	//var w = //window.open(moduleName+".html","minigame","width="+mod.w+",height="+mod.h+"innerWidth="+mod.w+",innerHeight="+mod.h+",scrollbars=no"+",left="+offX+",top="+offY);
}

function showForm() {
	startModule("formular");
}

var onCompleteFunc = null;
function closeGame() {
	if (lastMod.id) {
		var f = $(lastMod.id);
		f.setStyles({
				'display':"none"
		});
	} else {
		swfobject.removeSWF("holder");
	}
	var sperrFx = new Fx.Tween($('sperrdiv'),{'onComplete':function(){
		$('sperrdiv').dispose();
	}});
	sperrFx.start('opacity',0);
	var bgFx = new Fx.Morph($('gameholder'),{'onComplete':function(){
		$('gameholder').dispose();
		thisMovie('mainflash').unfreeze();
		if (onCompleteFunc != null) {
			onCompleteFunc();
			onCompleteFunc = null;
		}
	}});
	var bodySize = $('body').getSize();
	bgFx.start({
		'height': 1,
		'width': 1,
		'left':bodySize.x/2,
		'top':bodySize.y/2
	});
}


function setXStart(x) {
	$('restbody').setStyle('left',x);
}

window.addEvent('domready', function() {
	var flashVars = {};
	if (anbieter=="doppeldecker") flashVars.doppeldecker = 1;
	if (anbieter=="bigben") flashVars.bigben = 1;
	var params = {
		'wmode':"opaque",
		'bgcolor':"#ffffff",
		'quality':"best",
		'allowNetworking':"all",
		'allowScriptAccess': "always",
		'id':'mf',
		'name':'mf'
	};
	swfobject.embedSWF("swf/main.swf", "mainflash", "100%", 610, "9.0.0", "expressInstall.swf",
		flashVars, params, {
			'redirectUrl':"http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash"
		}
	);
	if (submitscore) {
		var f = document.f;
		f['timestr'].value = timeStr;
		f['id'].value = idStr;
		showForm();
	}
});

function getFlashObj() {
	mainFlashObj = thisMovie('mainflash');
	alert ("flashObj = "+mainFlashObj);
}

/*********** FORM FUNCTIONS *************/

function showOverlay(ovl) {
	var ovls = ['form','agb'];
	ovls.each(function(ov) {
		$(ov+"overlay").setStyle('display',(ovl==ov) ? 'block' : 'none');
	});
}

function teilnahme(timeStr,id) {
	var f = document.f;
	onCompleteFunc = showForm;
	f['timestr'].value = timeStr;
	f['id'].value = id;
	closeGame();
}

function formAbort() {
	closeGame();
}

function isEmpty(str) {
	return (str.match(/^\s*$/));
}

function formSubmit() {
	var f = document.f;
	var msg = $('messages');
	var errors = "";
	var fields = ['nickname','email','vorname','nachname','strasse','hausnummer','plz','ort'];
	var emailRX = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	fields.each(function(item){
		var val = f[item].value;
		if (isEmpty(val)) errors += "Das Feld &quot;"+(item.capitalize())+"&quot; muss noch ausgefüllt werden!<br/>";
	});
	if (!f['agb'].value =="1") {
		errors += "Den AGBs und Teilnahmebestimmungen muss zugestimmt werden!<br/>";
	}
	if (!f['email'].value.match(emailRX)) {
		errors += "Die Email-Adresse ist ungültig!<br/>";
	}
	msg.innerHTML = errors;
	if (errors=="") {
		var elm = $('wickieform');
		var data = elm.toQueryString();
		var reqOptions = {
			'url':'receiveForm.php?'+data,
			'method':'GET',
			'encoding':'ISO-8859-1',
			'onSuccess': formReceived
		};
		var req = new Request(reqOptions);
		req.send();
	}
}

function formReceived(txt,xml) {
	//alert ("form sent. Answer was:\n"+txt);
	var msg = $('messages');
	var str = txt.trim();
	var errStrings = {
		'invalid':"Die Spieledaten sind fehlerhaft\n",
		'queryfail':"Datenbankabfrage konnte nicht durchgeführt werden\n",
		'double':"Diese Email-Adresse wurde schon einmal eingetragen\n",
		'agb':"Den AGBs wurde nicht zugestimmt\n",
		'no database select':"Datenbanktabelle wurde nicht gefunden\n",
		'no database connect':"Es konnte keine Verbindung mit der Datenbank hergestellt werden\n"
	};
	var errors = "";
	switch (str) {
		case 'ok':
			closeGame();
			break;
		default:
			errors += errStrings[str];
			break;
	}
	msg.innerHTML = errors;
}

function toggleCB(field) {
	var newvalue = 1-document.f[field].value;
	if (newvalue==1) {
		$("check"+field).setStyle("visibility","visible");
	} else {
		$("check"+field).setStyle("visibility","hidden");
	}
	document.f[field].value = newvalue;
}
