// ********** Helper

function divRef (id) {
	if (document.layers && document.layers[id])	return document.layers[id];
	else if (document.all && document.all[id]) return document.all[id];
	else if (document.getElementById && document.getElementById(id)) return document.getElementById(id);
	else return null;
}

function divRefStyle (id)
{	
    if (document.layers && document.layers[id]) return document.layers[id];
    else if (document.getElementById) 
    {
    	if (document.getElementById(id)) return document.getElementById(id).style;


    }else if (document.all)
    {
    	return document.all[id];
    }
    
    else return null;
}


// ********** XMLHttpRequest Objekt starten

var xmlHttp = false;
// Mozilla, Opera, Safari sowie Internet Explorer 7
if (typeof(XMLHttpRequest) != 'undefined') {
    xmlHttp = new XMLHttpRequest();
}
if (!xmlHttp) {
    // Internet Explorer 6 und älter
    try {
        xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
        try {
            xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
        } catch(e) {
            xmlHttp  = false;
        }
    }
}

// ********** Artikel über xmlHttp aufrufen

function js_rex_getArticle(article_id,params)
{
	js_debug("Anfrage Artikel "+ article_id +" gestartet",0);
	divRefStyle("waiting").visibility = "visible";
	if (xmlHttp) {
		
		var myUrl = 'index.php?article_id='+article_id+params;
		js_debug("URL: <a href='"+myUrl+"' target=_blank>index.php?article_id="+article_id+"</a> ...",0);
	    xmlHttp.open('GET', myUrl, true);
	    xmlHttp.onreadystatechange = function () {
	        if (xmlHttp.readyState == 4) { // Status complete
				if (xmlHttp.status == 200) { // OK response
		            text = xmlHttp.responseText;
					js_rex_parseText(text);
					js_debug("Daten wurden uebertragen",0);
					divRefStyle("waiting").visibility = "hidden";
				}else
				{
					js_debug("ERROR: Seite ist nicht vorhanden! Fehlercode: " + xmlHttp.statusText,1);
				}
	        }
	    }
	    xmlHttp.send(null);
	    js_debug("Artikel "+ article_id +" - Anfrage gesendet",0);
	}else
	{
		js_debug("HTTP Objekt konnte nicht generiert werden.",1);
	}
	
}


// ***** Empfangenen Text parsen und dementsprechende Funktionen aufrufen

function js_rex_parseText(text)
{
	js_debug("******************** PARSEN",0);
	block = text.split(/#####BLOCK#####/);
	js_debug(block.length+" Blöcke gefunden",0);
	for (var i = 0; i < block.length; i++) 
	{
		i_block = block[i].split(/#####/);
		js_debug("* "+i+". Block: "+i_block[0],0);
		if (i_block.length > 1)
		{
			
			if (i_block[0]=="INNERHTML") js_rex_writeLayer(i_block[1],i_block[2]);
			else if (i_block[0]=="ADDINNERHTML") js_rex_addToLayer(i_block[1],i_block[2]);
			else if (i_block[0]=="SETVALUE") js_rex_setValue(i_block[1],i_block[2]);
			else if (i_block[0]=="HIDELAYER") js_rex_shLayer(i_block[1],"hide");
			else if (i_block[0]=="SHOWLAYER") js_rex_shLayer(i_block[1],"show");
			else if (i_block[0]=="SHOWAREA") js_rex_plop(i_block[1],"show");
			else if (i_block[0]=="HIDEAREA") js_rex_plop(i_block[1],"hide");
			else if (i_block[0]=="EVALJAVASCRIPT") js_rex_evalJS(i_block[1]);
			else js_debug("Aktion "+i_block[0]+" nicht gefunden",1);
		}
	}
	js_debug("*** END: PARSEN",0);
}

// ***** Array zum Versenden erstellen

function js_rex_evalJS(script)
{
	js_debug("javascript ausführen: "+script,0);
	eval(script);
}



// ***** Array zum Versenden erstellen

function js_rex_sendArray(id,myarray)
{
	var sendarray = "";
	for(i=0; i< myarray.length; i++)
	{
		if (document.getElementById(myarray[i])) sendarray += "&"+myarray[i]+"=" + divRef(myarray[i]).value;
	}	
	js_rex_getArticle(id,sendarray);
	return false;
}


// ***** ***** ***** Funktionen zum Verarbeiten


// ***** Show/Hide Layer

function js_rex_shLayer(id,what)
{
	if (what == "show")
	{
		$("#"+id).show();
		$("#"+id+"_bg").show();
	}else
	{
		$("#"+id).hide();
		$("#"+id+"_bg").hide();
	}
}


// ***** Wert setzen - Entweder Formular- oder sonstiger Wert

function js_rex_setValue(id,value)
{
	if (divRef(id))
	{
		divRef(id).value = value;
	}else
	{
		js_debug("Layer " + id + " wurde nicht gefunden",1);
	}
}


// ***** Inhalte in einen Layer schreiben

function js_rex_writeLayer(id,content)
{
	
	if (divRef(id))
	{
		divRef(id).innerHTML = content;
		divRef(id).scrollTop = 0;
		js_debug("Layer " + id + " wurde ersetzt",0);
	}else
	{
		js_debug("Layer " + id + " wurde nicht gefunden",1);
	}
}


// ***** Inhalte einem Layer hinzufügen

function js_rex_addToLayer(id,content)
{
	if (divRef(id))
	{
		divRef(id).innerHTML += content;
		divRef(id).scrollTop = 0;
		js_debug("Dem Layer " + id + " wurde Inhalt hinzugefügt",0);
	}else
	{
		js_debug("Layer " + id + " wurde nicht gefunden",1);
	}
}


// ***** Formularverarbeitung

function js_rex_sendForm(article_id,formname)
{
	// * formularwerte auslesen
	// * link generieren
	// * abschicken

	js_debug("Formular "+formname+" wird an "+article_id+" gesendet",0);

	// ***** alle input elemente holen
	var params_input = "";
	var elemente = divRef(formname).getElementsByTagName("input");
	for (i=0;i<elemente.length;i++)
	{
		type = elemente[i].type;
		myKey = elemente[i].name;
		myValue = "";
		if (type == "checkbox")
		{
			if (elemente[i].checked == true) myValue = "1";
			else myValue = "0";
		}else
		{
			myValue = elemente[i].value;
		}
		params_input += "&"+escape(myKey)+"="+escape(myValue);
	}

	// ***** alle select auslesen
	var params_select = "";
	var elemente = divRef(formname).getElementsByTagName("select");
	for (i=0;i<elemente.length;i++)
	{
		for (j = 0; j < elemente[i].length; ++j)
		{
			if (elemente[i].options[j].selected == true)
			{
				params_select += "&"+escape(elemente[i].name)+"="+escape(elemente[i].options[j].value);
			}
		}
	}
	
	// ***** alle textareas auslesen
	var params_textarea = "";
	var elemente = divRef(formname).getElementsByTagName("textarea");
	for (i=0;i<elemente.length;i++)
	{
		myKey = elemente[i].name;
		myValue = elemente[i].value;
		params_textarea += "&"+escape(myKey)+"="+escape(myValue);
	}
	
	// ***** alle params zusammensetzen
	params = params_input + params_select + params_textarea;
	// ***** abschicken
	js_rex_getArticle(article_id,params);
}

// ***** JS DEBUG in den debuglayer schreiben

function js_debug(content,warning)
{
	// if (warning == 1) divRef("debug_content").innerHTML += "<hr /><div class=warning>"+content+"</div>";
	// else divRef("debug_content").innerHTML += "<hr />"+content;
}

// ***** FIGUR AUSWAEHLEN

var fmax = new Array();
fmax["figure"] = 3;
fmax["hair"] = 11;
fmax["pants"] = 10;
fmax["shirts"] = 33;
fmax["socks"] = 3;
fmax["shoes"] = 3;

var fcur = new Array();
fcur["figure"] = -1;
fcur["hair"] = -1;
fcur["pants"] = -1;
fcur["shirts"] = -1;
fcur["socks"] = -1;
fcur["shoes"] = -1;



function js_rex_setFigure(def,type,gender,dir)
{

	// wenn current nicht gesetzt - default setzen
	if (fcur[type] == -1) fcur[type] = def;

	// rechts oder links blaettern ?
	if (dir == 1) fcur[type]++;
	else fcur[type]--;

	// aus dem rahmen ?
	if (fcur[type]<1) fcur[type] = fmax[type];
	else if (fcur[type]>fmax[type]) fcur[type] = 1;
	
	// grafiken setzen
	var ipfad = "/files/wm/figure_parts/"+gender+"/"+type+"/"+fcur[type]+"/ru_1.gif";

	changeImage("img_"+type,ipfad);
	
	// input felder setzen
	js_rex_setValue("val_"+type,fcur[type]);
	
	js_debug("Spieler neu angezeigt.",0);
}





//DUELL update, parameter swf,  swf-version
function js_rex_Duell(user_id,vs_user_id,user_name,vs_user_name,spielmodus,swf)
{
	js_debug("Duell startet zwischen: "+user_id+" und "+vs_user_id,0);

	// spiel/angriff/verteidigung
	// <param name='wmode' value='transparent'>
	
	var link = "/files/"+swf+".swf?spielmodus="+spielmodus+"&uid_angreifer="+user_id+"&uid_verteidiger="+vs_user_id+"&user_login1="+user_name+"&user_login2="+vs_user_name;
	var width = 500;
	var height = 550;
	var content = "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='"+width+"' height='"+height+"' CODEBASE='http://download.macromedia.com/'><param name=movie value='"+link+"'><param name='bgcolor' value='#000000'><param name='wmode' value='transparent'><embed src='"+link+"' width='"+width+"' height='"+height+"' type='application/x-shockwave-flash' wmode='transparent'></embed></object>";
	js_rex_writeLayer("fbs-duell-screen",content);

	js_debug("Duell wurde gestartet zwischen: "+user_id+" und "+vs_user_id,0);
	
}

//DUELL update, parameter swf,  swf-version
function js_rex_showDuell(glink,swf)
{
	
	var link = "/files/"+swf+".swf?"+glink;
	var width = 500;
	var height = 550;
	var content = "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='"+width+"' height='"+height+"' CODEBASE='http://download.macromedia.com/'><param name=movie value='"+link+"'><param name='wmode' value='transparent'><embed src='"+link+"' width='"+width+"' height='"+height+"' type='application/x-shockwave-flash' wmode='transparent'></embed></object>";
	js_rex_writeLayer("fbs-duell-screen",content);

	js_debug("Duell wird angesehen ",0);
}




function changeImage(id,src){
	divRef(id).src = src;
}

