var http = null;
var bid = 0;
var warten = 0;
var sivid = 0;
var basisurl = 'http://www.freebasic-portal.de/';

function create_ajax() {
    if (window.XMLHttpRequest) {
      http = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
      try {
    	http = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
        try {
    	  http = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
      }
    }
}

/*   JSEdit Funktionen    */

function jsEdit_PressButton(openTag, closeTag) {
    jsEdit_PressButtonHint(openTag, closeTag, '', '');
}

function jsEdit_PressButtonHint(openTag, closeTag, promptText1, promptText2) {
    if(closeTag != "")
        jsEdit_surroundText(openTag, closeTag, document.getElementById("edittextfeld"), promptText1, promptText2);
    else
        jsEdit_replaceText(openTag, document.getElementById("edittextfeld"));
}

// Replaces the currently selected text with the passed text.
function jsEdit_replaceText(text, textarea)
{
	// Attempt to create a text range (IE).
	if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange)
	{
		var caretPos = textarea.caretPos;

		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
		caretPos.select();
	}
	// Mozilla text range replace.
	else if (typeof(textarea.selectionStart) != "undefined")
	{
		var begin = textarea.value.substr(0, textarea.selectionStart);
		var end = textarea.value.substr(textarea.selectionEnd);
		var scrollPos = textarea.scrollTop;

		textarea.value = begin + text + end;

		if (textarea.setSelectionRange)
		{
			textarea.focus();
			textarea.setSelectionRange(begin.length + text.length, begin.length + text.length);
		}
		textarea.scrollTop = scrollPos;
	}
	// Just put it on the end.
	else
	{
		textarea.value += text;
		textarea.focus(textarea.value.length - 1);
	}
}

// Surrounds the selected text with text1 and text2.
function jsEdit_surroundText(text1, text2, textarea, promptText1, promptText2)
{
    // Can a text range be created?
	if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange)
	{
		var caretPos = textarea.caretPos, temp_length = caretPos.text.length;

        if (temp_length == 0 && promptText1) {
    		var selection = prompt(promptText1, "");
    		if(selection == null) return;
            if (promptText2) {
    		  var selection2 = prompt(promptText2, "");
    		  if(selection2 != null) selection+=";"+selection2;
            }
        }

		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text1 + caretPos.text + text2 + ' ' : text1 + caretPos.text + selection + text2;

        if (temp_length == 0)
		{
			caretPos.moveStart("character", -text2.length);
			caretPos.moveEnd("character", -text2.length);
			caretPos.select();
		}
		else
			textarea.focus(caretPos);
	}
	// Mozilla text range wrap.
	else if (typeof(textarea.selectionStart) != "undefined")
	{
		var begin = textarea.value.substr(0, textarea.selectionStart);
		var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
		var end = textarea.value.substr(textarea.selectionEnd);
		var newCursorPos = textarea.selectionStart;
		var scrollPos = textarea.scrollTop;

		if(selection == "" && promptText1) {
            selection = prompt(promptText1, "");
            if(selection == null) return;
    		if(promptText2) {
                selection2 = prompt(promptText2, "");
                if(selection2 != null) selection+=";"+selection2;
    		}
		}

        textarea.value = begin + text1 + selection + text2 + end;

		if (textarea.setSelectionRange)
		{
			if (selection.length == 0)
				textarea.setSelectionRange(newCursorPos + text1.length, newCursorPos + text1.length);
			else
				textarea.setSelectionRange(newCursorPos, newCursorPos + text1.length + selection.length + text2.length);
			textarea.focus();
		}
		textarea.scrollTop = scrollPos;
	}
	// Just put them on the end, then.
	else
	{
		textarea.value += text1 + text2;
		textarea.focus(textarea.value.length - 1);
	}
}

// Remember the current position.
function jsEdit_storeCaret(text)
{
	// Only bother if it will be useful.
	if (typeof(text.createTextRange) != "undefined")
		text.caretPos = document.selection.createRange().duplicate();
}


/*    Sonstige Funktionen    */

function SuchfeldOnFocus() {
	if (document.getElementById('suchfeld').value == 'Suche im FB-Portal...') document.getElementById('suchfeld').value = '';
}

function SuchfeldOnBlur () {
	if (document.getElementById('suchfeld').value == '') document.getElementById('suchfeld').value = 'Suche im FB-Portal...';
}

function EditfeldOnFocus() {
	if (document.getElementById('efedfeld').value == 'Hier eingeben!') document.getElementById('efedfeld').value = '';
}

function EditfeldOnBlur () {
	if (document.getElementById('efedfeld').value == '') document.getElementById('efedfeld').value = 'Hier eingeben!';
}

function RefSuchfeldOnFocus() {
	if (document.getElementById('refsuchfeld').value == 'Gehe zu Referenzeintrag...') document.getElementById('refsuchfeld').value = '';
}

function RefSuchfeldOnBlur () {
	if (document.getElementById('refsuchfeld').value == '') document.getElementById('refsuchfeld').value = 'Gehe zu Referenzeintrag...';
}

function NLoginMsg (zusatztext) {
	alert ('Sie müssen eingeloggt sein, um ' + zusatztext);
}

function FwTo (ziel) {
	window.location = ziel;
}

function RefSF (event) {
	var rsf = document.getElementById('refsuchfeld');
	var kc;
	if (event) {
		if (navigator.appName.indexOf("Explorer") != -1) {
			kc = event.keyCode;
		} else {
			kc = event.which;
		}
		if ((rsf.value != '') && (kc == 13)) {
			FwTo(basisurl+'befehlsreferenz/such/'+rsf.value);
		}
	}
}

function layerload () {
    if (!http || http.readyState != 4) return;
    var answer=http.responseText;
    Shadowbox.open({
        content:    '<div id="dml">' + answer + '</div>',
        player:     "html",
        title:      "",
        height:     370,
        width:      320
    });
}

function fnlayer (datei) {
    create_ajax();
    if(http != null) {
        http.abort();
        http.open("GET", basisurl+"ajax/"+datei+".txt", true);
        http.onreadystatechange = layerload;
        var success = true;
        try {http.send(null);}
        catch (e) {success = false;}
        if(success) return;
    }
}

function layernavupd () {
    if (!http || http.readyState != 4) return;
    var answer=http.responseText;
    document.getElementById('dmli').innerHTML = answer;
}

function layernav (ziel) {
	if (ziel.length >= 8) {
		if (ziel.substr(0,8) == 'bildupl/') {
			bid = document.getElementById('bidfd').value;
			warten = 0;
			sivid = setInterval (AJPrfImgUplStatus, 2200);
		}
	}
    create_ajax();
    if(http != null) {
        http.abort();
        http.open("GET", basisurl+"ajax/"+ziel+".txt", true);
        http.onreadystatechange = layernavupd;
        var success = true;
        try {http.send(null);}
        catch (e) {success = false;}
        if(success) return;
    }
}

function Dec2Hex(Decimal) {
    var hexChars = "0123456789ABCDEF";
    var a = Decimal % 16;
    var b = (Decimal - a)/16;
    hex = "" + hexChars.charAt(b) + hexChars.charAt(a);
    return hex;
}

function AJTencode(input) {
    hexOutput = "";
    for (i=0; i<input.length; i++) {
        hexOutput = hexOutput + Dec2Hex(input.charCodeAt(i));
    }
    return hexOutput;
}

function lyl2 (ltyp) {
	var linkziel = document.getElementById('lyiz').value;
	if (linkziel == '') {
		alert('Sie müssen ein Linkziel eingeben!');
		return;
	} else {
		if (ltyp == 'I') {
			if (linkziel.charAt(0) == '/') linkziel = linkziel.substr(1);
			var ergebnis = linkziel.search(/[&:?!,$;]+/);
			if (ergebnis != -1) {
				alert('Das Linkziel enthält ungültige Sonderzeichen!');
				return;
			}
		}
		linkziel = AJTencode(linkziel);
		layernav ('link3/'+ltyp+linkziel);
	}
}

function lyrefauflisten () {
    if (!http || http.readyState != 4) return;
    var answer=http.responseText;
	var zieldiv = document.getElementById('lyrefserg');
	var anzahl = parseInt(answer.charAt(0));
	if (anzahl == 0) {
		zieldiv.innerHTML = '<i>Es wurden leider keine passenden Referenzeinträge gefunden!</i>';
	} else {
		answer = answer.substr(1);
		zieldiv.innerHTML = answer;
	}	
}

function lyrefsuch () {
	var suche = document.getElementById('lyiz').value;
	if (suche == '') {
		alert('Sie müssen das Feld ausfüllen!');
		return;
	} else {
		var ergebnis = suche.search(/^[0-9]+$/);
		if (ergebnis == -1) {
			var anfrage = 'T'+suche;
		} else {
			var anfrage = 'I'+suche;
		}
		create_ajax();
		if(http != null) {
			http.abort();
			http.open("GET", basisurl+"ajax/refsuch/"+anfrage+".txt", true);
			http.onreadystatechange = lyrefauflisten;
			var success = true;
			try {http.send(null);}
			catch (e) {success = false;}
			if(success) return;
		}
	}
}

function lyInsertLink (adresse) {
	var aufschrift = document.getElementById('lyiz').value;
	var glink = '';
	if (aufschrift == '') {
		glink = '[url]' + adresse + '[/url]';
	} else {
		glink = '[url=' + adresse + ']' + aufschrift + '[/url]';
	}
	Shadowbox.close();
	jsEdit_replaceText(glink, document.getElementById("edittextfeld"));
}

function lyInsertImg (imgid) {
	Shadowbox.close();
	jsEdit_replaceText('[img]'+imgid+'[/img]', document.getElementById("edittextfeld"));
	return;
}

function lyInsertImgBox (imgid, flowert) {
	var breite = document.getElementById('lyibreite').value;
	if (breite == "") {
		alert('Bitte geben Sie zunächst eine Breitenangabe ohne Einheitenzeichen (also nur eine Zahl!) ein.');
		return;
	}
	if (breite.search(/[^0-9]+/) != -1) {
		alert('Die Breitenangabe enthält ungültige Sonderzeichen. Nur Zahlen sind erlaubt!');
		return;
	}
	Shadowbox.close();
	jsEdit_replaceText('[imgbox]'+imgid+';'+breite+';'+flowert+'[/imgbox]', document.getElementById("edittextfeld"));
	return;
}

function AJPrfImgUplStatusAW () {
    if (!http || http.readyState != 4) return;
    var answer=parseInt(http.responseText);
	if (answer > 0) { //Fertig
		clearInterval(sivid);
		warten = 0;
		layernav('bildupld/'+answer);		
	} else if (answer < 0) {
		clearInterval(sivid);
		warten = 0;
		layernav('bilduplerr');
	}
	warten = 0;
}

function AJPrfImgUplStatus () {
	if (warten == 1) {
		return;
	} else {
		warten = 1;
	}
	create_ajax();
	if(http != null) {
		http.abort();
		http.open("GET", basisurl+"ajax/iustatus/"+bid+".txt", true);
		http.onreadystatechange = AJPrfImgUplStatusAW;
		var success = true;
		try {http.send(null);}
		catch (e) {success = false;}
		if(success) return;
	}
}

function ImgPopup (id, breite, hoehe) {
	var br = screen.width;
	var he = screen.height;
	br=(br-breite)/2;
	he=(he-hoehe)/2;
	Fenster1 = window.open(basisurl+"imgpopup/"+id+"-"+breite+".html", "kleinesfenster", "width="+breite+",height="+hoehe+",left="+br+",top="+he);
	Fenster1.focus();
	return false;
}

function VersionPopup(adresse) {
	var br = screen.width;
	var he = screen.height;
	var breite=640, hoehe=480;
	br=(br-breite)/2;
	he=(he-hoehe)/2;
	Fenster2 = window.open(basisurl+"versionen/anzeigen/"+adresse, "versionfenster", "width="+breite+",height="+hoehe+",left="+br+",top="+he+",scrollbars=yes");
	Fenster2.focus();
	return false;
}

function JSLVA (id) {
	var br = screen.width;
	var he = screen.height;
	document.write('<img src="'+basisurl+'meinaccount/jslva-'+id+'-'+br+'-'+he+'.png" alt="">');
}
