function init()
{
//	status_url = "http://q.o1o.de/"; // not needed trailing slash
	status_url = "http://s.allstats.de/";
//	status_url = "http://s.squery.de";
	document.generatorform.reset();
	document.generatorform.Codearea.value = status_url;
	i=0;
	while(document.generatorform.elements[i]) {
		document.generatorform.elements[i].disabled = true;
		i++;
	}
	
	document.generatorform.game.disabled = false;
	document.generatorform.game.focus();
	document.generatorform.ip.disabled = false;
	document.generatorform.port.disabled = false;
	document.generatorform.qport.disabled = false;
	document.generatorform.tpl.disabled = false;
	document.generatorform.reset_form.disabled = false;
}
function get_status(code)
{
	/* HTTP-Objekt starten */
	if(window.XMLHttpRequest) {
		request = new window.XMLHttpRequest();
		if (request.overrideMimeType)
			request.overrideMimeType('text/xml')
	}
	else if(window.ActiveXObject) {
		try {
			request = new ActiveXObject('Msxml2.XMLHTTP');
		} catch(e) {
			try {
				request = new ActiveXObject('Microsoft.XMLHTTP');
			} catch(e2) {
				try {
					request = new ActiveXObject("Msxml2.XMLHTTP.4.0");
				} catch(e3) {
					request = false;
				}
			}
		}
	}
	else {
		return;
	}
	
	if(!request) {
		alert('XMLHttpRequest object not available!');
		return false;
	}
	
	/* Request */
	request.open('GET', 'status_wrapper.php?url=' + encodeURIComponent(code) , true);
	
	/* Header setzen */
	request.setRequestHeader('Content-Type', 'text/plain');
	/* Funktion als Bestätigung */
	request.onreadystatechange = handle_response;
	
	/* Daten senden */
	request.send(null);
	
	/* Bestätigungsfunktion */
	function handle_response()
	{
		vorschau = window.open('', 'Preview', 'left=100,top=100,height=350,width=600,dependent=yes,status=no,resizable=yes,scrollbars=yes');
		vorschau.name = 'Preview';
		vorschau.document.title = 'Preview';
		
		vorschau.document.getElementsByTagName('body')[0].innerHTML = '<img name="loadinggif" title="loading..." alt="loadinggif" width="16" height="16" src="http://www.allstats.de/modules/codegenerator/images/loading.gif" />';
		
		if(request.readyState == 0){
			vorschau.document.getElementsByTagName('body')[0].innerHTML = '<img name="loadinggif" title="loading..." alt="loadinggif" width="16" height="16" src="http://www.allstats.de/modules/codegenerator/images/loading.gif" /><span style="color:red">starting preview...<br></span>';
		}else if(request.readyState == 1){
			vorschau.document.getElementsByTagName('body')[0].innerHTML = '<img name="loadinggif" title="loading..." alt="loadinggif" width="16" height="16" src="http://www.allstats.de/modules/codegenerator/images/loading.gif" /><span style="color:red">preview started...<br></span>';
		}else if(request.readyState == 2){
			vorschau.document.getElementsByTagName('body')[0].innerHTML = '<img name="loadinggif" title="loading..." alt="loadinggif" width="16" height="16" src="http://www.allstats.de/modules/codegenerator/images/loading.gif" /><span style="color:red">loading preview...<br></span>';
		}else if(request.readyState == 3){
			vorschau.document.getElementsByTagName('body')[0].innerHTML = '<img name="loadinggif" title="loading..." alt="loadinggif" width="16" height="16" src="http://www.allstats.de/modules/codegenerator/images/loading.gif" /><span style="color:red">awaiting preview...<br></span>';
		}else if(request.readyState == 4){
			
			if(request.status == 200 || request.status == "OK" || request.status == 304){
				//vorschau.resizeTo(iwidth,iheight);
				vorschau.document.getElementsByTagName('body')[0].innerHTML = '';
				vorschau.document.write(request.responseText);
				vorschau.focus();
				// Wenn nichts zutrifft
			} else {
				vorschau.document.getElementsByTagName('body')[0].innerHTML = '<br><img name="attentiongif" title="failed" alt="attentiongif" width="32" height="32" src="http://www.allstats.de/modules/codegenerator/images/attention.gif" /><span style="color:red">Error retrieving status... exit.<br></span>';
				vorschau.document.getElementsByTagName('body')[0].innerHTML+= 'Status: ' + request.status;
				vorschau.focus();
			}
		}
	}
	vorschau.focus();
}
function set_formstate()
{
	var game = '';
	var template = '';
	
	var game = document.generatorform.game.value;
	var ip = document.generatorform.ip.value;
	var template = document.generatorform.tpl.value;
	var qport = document.generatorform.qport.value;
	if(game && ip && template && qport) {
		i=0;
		while(document.generatorform.elements[i]) {
			document.generatorform.elements[i].disabled = false;
			i++;
		}
	}
}
function set_ports(cport, qport)
{
	if(cport && !document.generatorform.port.value) {
		document.generatorform.port.value = cport;
		return;
	}
	
	if(qport && !document.generatorform.qport.value) {
		document.generatorform.qport.value = qport;
		return;
	}
}
function set_code(game, ip, qport, tpl_name, tpl_width, tpl_height)
{
	var code = '';
	var iframe = '';
	if(tpl_width) iwidth = tpl_width + 10
		else iwidth = 400;
	if(tpl_height) iheight = tpl_height + 10
		else iheight = 150;
	//alert(game + ip + qport + tpl_name + tpl_width + tpl_height);
	var code = 
		status_url + 
		'/?' + 'game=' + game + 
		'&' + 'ip=' + ip + 
		'&' + 'qport=' + qport;
	if(tpl_name == 'self') tpl_name = document.generatorform.tplurl.value;
	code +=	'&' + 'tpl=' + tpl_name;
		
	//alert(document.generatorform.pic.value);
	if(document.generatorform.pic.checked) code += '&pic';
	if(document.generatorform.ppl.checked) code += '&ppl';
	if(document.generatorform.dppl.checked) code += '&dppl';
	if(document.generatorform.cvars.checked) code += '&cvars';
	if(document.generatorform.clogo.checked) code += '&logo';
	if(document.generatorform.connect.checked) code += '&connect';
	if(document.generatorform.nocss.checked) code += '&nocss';
	if(document.generatorform.logo.value) code += '&logo=' + document.generatorform.logo.value;
	if(document.generatorform.banner.value) code += '&banner=' + document.generatorform.banner.value;
	if(document.generatorform.url.value) code += '&url=' + document.generatorform.url.value;
	if(document.generatorform.pw.value) code += '&pw=' + document.generatorform.pw.value;
	if(document.generatorform.to.value) code += '&to=' + document.generatorform.to.value;
	if(document.generatorform.text.value) code += '&text=' + document.generatorform.text.value;
	if(document.generatorform.link.value) code += '&link=' + document.generatorform.link.value;
	if(document.generatorform.bg.value) code += '&bg=' + document.generatorform.bg.value;
	if(document.generatorform.hbg.value) code += '&hbg=' + document.generatorform.hbg.value;
	if(document.generatorform.bd.value) code += '&bd=' + document.generatorform.bd.value;
	if(document.generatorform.bgimgurl.value) code += '&img=' + document.generatorform.bgimgurl.value;
	
	if(document.generatorform.codetype.value == 'php') {
		iframe = '<?php echo @file_get_contents(\'' + code + '\'); ?>';
	}
	else if(document.generatorform.codetype.value == 'url') {
		iframe = code;
	}
	else if(document.generatorform.codetype.value == 'html') {
		iframecode = code + '&iframe';
		iframe = 
			'<iframe frameborder="0" framespacing="0" scrolling="no" marginheight="0" marginwidth="0" vspace="0" hspace="0" width="' + tpl_width + '" height="' + tpl_height + '" src="' + iframecode + '"> </iframe>';
	}
	else {
		return false;
	}
	document.generatorform.Codearea.value = iframe;
	//document.getElementById('preview').innerHTML = iframe;
	//get_status(code);
	vorschau = window.open(code, 'Preview', 'left=100,top=100,height=350,width=600,dependent=yes,status=no,resizable=yes,scrollbars=yes');
}
function validate_input(x)
{
	switch(x) {
		case 'ip':
			return true;
		if(document.generatorform.ip.value !== 'IP') {
			alert('Bitte gültige IP adresse eingeben!');
			document.generatorform.ip.focus();
			document.generatorform.ip.select();
			return false;
		}
		break;
	}
	return true;
}
function update_form(x)
{
	if(!validate_input(x)) return false;
	
	if(document.generatorform.game.value) {
		var array_value = document.generatorform.game.value.split(" ", 2);
		var game = array_value[0];
		if(!document.generatorform.qport.value)
			var qport = array_value[1];
		else
			var qport = document.generatorform.qport.value;
	}
	
	if(document.generatorform.tpl.value) {
		var array_tpl = document.generatorform.tpl.value.split(" ", 3);
		var tpl_name = array_tpl[0];
		var tpl_width = array_tpl[1];
		var tpl_height = array_tpl[2];
	}
	
	switch(x) {
		case 'game':
			if(document.generatorform.game.value) {
				set_ports("", qport);
				document.generatorform.ip.focus();
			}
			else
				init();
			if(document.generatorform.game.value && document.generatorform.ip.value && document.generatorform.tpl.value && document.generatorform.qport.value) {
				set_formstate();
				set_code(game, document.generatorform.ip.value, qport, tpl_name, tpl_width, tpl_height);
			}
		break;
		case 'ip':
			document.generatorform.port.focus();
			if(document.generatorform.game.value && document.generatorform.ip.value && document.generatorform.tpl.value && document.generatorform.qport.value) {
				set_formstate();
				set_code(game, document.generatorform.ip.value, qport, tpl_name, tpl_width, tpl_height);
			}
		break;
		case 'port':
			document.generatorform.qport.focus();
			if(document.generatorform.game.value && document.generatorform.ip.value && document.generatorform.tpl.value && document.generatorform.qport.value) {
				set_formstate();
				set_code(game, document.generatorform.ip.value, qport, tpl_name, tpl_width, tpl_height);
			}
		break;
		case 'qport':
			document.generatorform.tpl.focus();
			if(document.generatorform.game.value && document.generatorform.ip.value && document.generatorform.tpl.value && document.generatorform.qport.value) {
				set_formstate();
				set_code(game, document.generatorform.ip.value, qport, tpl_name, tpl_width, tpl_height);
			}
		break;
		case 'tpl':
			document.generatorform.codetype.focus();
			if(document.generatorform.game.value && document.generatorform.ip.value && document.generatorform.tpl.value && document.generatorform.qport.value) {
				set_formstate();
				set_code(game, document.generatorform.ip.value, qport, tpl_name, tpl_width, tpl_height);
			}
		break;
		case 'codetype':
			if(document.generatorform.game.value && document.generatorform.ip.value && document.generatorform.tpl.value && document.generatorform.qport.value) {
				set_code(game, document.generatorform.ip.value, qport, tpl_name, tpl_width, tpl_height);
			}
		break;
		default:
			if(document.generatorform.game.value && document.generatorform.ip.value && document.generatorform.tpl.value && document.generatorform.qport.value) {
				set_formstate();
				set_code(game, document.generatorform.ip.value, qport, tpl_name, tpl_width, tpl_height);
			}
		break;
	}
}

