function createXMLHttpRequest() {
var ua;
if(window.XMLHttpRequest) {
	try {ua = new XMLHttpRequest();}
	    catch(e) {ua = false;}
	}
	else if(window.ActiveXObject) {
	    try {ua = new ActiveXObject("Microsoft.XMLHTTP");}
	    catch(e) {ua = false;}
	}
return ua;
}

function sent_to_server(data, what){
	var params = "length=" + data.length + "&data=" + data + "&what=" +what;

	var http = createXMLHttpRequest();
	http.open("POST", "ajax.php", true);
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http.setRequestHeader("Content-length", params.length);
	http.setRequestHeader("Connection", "close");
	http.onreadystatechange = function() {
		if(http.readyState == 4 && http.status == 200) {
			if (what == "load") {document.getElementById("ladenajax").innerHTML = http.responseText;}
			if (what == "klasse") {if (http.responseText == "saved") location.href='index.php';}
			if (what == "load2") {document.getElementById("ladenvorschau").innerHTML = http.responseText;}
			else if (what == "test") {
					if (http.responseText == "working") {
						document.getElementById("testdiv2").innerHTML = "<img src='images/ok.png' alt='Erfolg'>";
					}
				}
			else {
				if (http.responseText == "saved") {/*document.getElementById("verbindung").innerHTML = "good";*/return true;}
				else {connectionerror();return false;}
			}	
			//alert(http.responseText);
		}
		//else connectionerror();
	}
	http.send(params);	
}

function loadhtml(data){
	document.getElementById("speichernajax").innerHTML = data;
}

function insert(aTag, eTag) {
	  var input=document.getElementById(acttextfeld);
	  input.focus();
	  /* für Internet Explorer */
	  if(typeof document.selection != 'undefined') {
	    /* Einfügen des Formatierungscodes */
	    var range = document.selection.createRange();
	    var insText = range.text;
	    range.text = aTag + insText + eTag;
	    /* Anpassen der Cursorposition */
	    range = document.selection.createRange();
	    if (insText.length == 0) {
	      range.move('character', -eTag.length);
	    } else {
	      range.moveStart('character', aTag.length + insText.length + eTag.length);      
	    }
	    range.select();
	  }
	  /* für neuere auf Gecko basierende Browser */
	  else if(typeof input.selectionStart != 'undefined')
	  {
	    /* Einfügen des Formatierungscodes */
	    var start = input.selectionStart;
	    var end = input.selectionEnd;
	    var insText = input.value.substring(start, end);
	    input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
	    /* Anpassen der Cursorposition */
	    var pos;
	    if (insText.length == 0) {
	      pos = start + aTag.length;
	    } else {
	      pos = start + aTag.length + insText.length + eTag.length;
	    }
	    input.selectionStart = pos;
	    input.selectionEnd = pos;
	  }
	  /* für die übrigen Browser */
	  else
	  {
	    /* Abfrage der Einfügeposition */
	    var pos;
	    var re = new RegExp('^[0-9]{0,3}$');
	    while(!re.test(pos)) {
	      pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
	    }
	    if(pos > input.value.length) {
	      pos = input.value.length;
	    }
	    /* Einfügen des Formatierungscodes */
	    var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
	    input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
	  }
	}


function serialize (mixed_value) {
    var _getType = function (inp) {
        var type = typeof inp, match;
        var key;
        if (type == 'object' && !inp) {
            return 'null';
        }
        if (type == "object") {
            if (!inp.constructor) {
                return 'object';
            }
            var cons = inp.constructor.toString();
            match = cons.match(/(\w+)\(/);
            if (match) {
                cons = match[1].toLowerCase();
            }
            var types = ["boolean", "number", "string", "array"];
            for (key in types) {
                if (cons == types[key]) {
                    type = types[key];
                    break;
                }
            }
        }
        return type;
    };
    var type = _getType(mixed_value);
    var val, ktype = '';
    
    switch (type) {
        case "function": 
            val = ""; 
            break;
        case "boolean":
            val = "b:" + (mixed_value ? "1" : "0");
            break;
        case "number":
            val = (Math.round(mixed_value) == mixed_value ? "i" : "d") + ":" + mixed_value;
            break;
        case "string":
            val = "s:" + encodeURIComponent(mixed_value).replace(/%../g, 'x').length + ":\"" + mixed_value + "\"";
            break;
        case "array":
        case "object":
            val = "a";
            var count = 0;
            var vals = "";
            var okey;
            var key;
            for (key in mixed_value) {
                ktype = _getType(mixed_value[key]);
                if (ktype == "function") { 
                    continue; 
                }
                
                okey = (key.match(/^[0-9]+$/) ? parseInt(key, 10) : key);
                vals += this.serialize(okey) +
                        this.serialize(mixed_value[key]);
                count++;
            }
            val += ":" + count + ":{" + vals + "}";
            break;
        case "undefined":
        default:
            val = "N";
            break;
    }
    if (type != "object" && type != "array") {
        val += ";";
    }
    return val;
}

function str_replace(search, replace, subject) {
    return subject.split(search).join(replace);
}

function umlaut(str){
	str=str_replace("ä","ae_",str);
	str=str_replace("Ä","Ae_",str);
	str=str_replace("ö","oe_",str);
	str=str_replace("Ö","Oe_",str);
	str=str_replace("ü","ue_",str);
	str=str_replace("Ü","Ue_",str);
	/* return (str+'').toLowerCase(); */
	return str;
}

function substr (f_string, f_start, f_length) {
    f_string += '';

    if (f_start < 0) {
        f_start += f_string.length;
    }

    if (f_length == undefined) {
        f_length = f_string.length;
    } else if (f_length < 0){
        f_length += f_string.length;
    } else {
        f_length += f_start;
    }

    if (f_length < f_start) {
        f_length = f_start;
    }
    return f_string.substring(f_start, f_length);
}

function deletecookie(){
    var d = new Date();
    document.cookie = "zeugnis_email=1;expires=" + d.toGMTString() + ";" + ";";
    document.cookie = "zeugnis_pass=1;expires=" + d.toGMTString() + ";" + ";";
    self.location = "index.php?info=logout";
}

function ucfirst (str) {
    var f = str.charAt(0).toUpperCase();
    return f + str.substr(1);
}

