/* found here: http://en.wikipedia.org/wiki/XMLHttpRequest
*
* Provide the XMLHttpRequest constructor for IE 5.x-6.x:
* Other browsers (including IE 7.x-9.x) do not redefine
* XMLHttpRequest if it already exists.
*
* This example is based on findings at:
* http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx
*/
if( typeof XMLHttpRequest == "undefined" )
{
XMLHttpRequest = function()
{
try
{
return new ActiveXObject("Msxml2.XMLHTTP.6.0");
}
catch (e) {}
try
{
return new ActiveXObject("Msxml2.XMLHTTP.3.0");
}
catch (e) {}
try
{
return new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {}
// Microsoft.XMLHTTP points to Msxml2.XMLHTTP.3.0 and is redundant
throw new Error("This browser does not support XMLHttpRequest.");
}
}
var learn_div = null;
var learn_obj = null;
var learn_words = null;
var learn_idxs = null;
var learn_cnts = null;
var learn_probs = null;
var learn_q = null;
var learn_as = null;
var learn_widx = -1;
var learn_answer = -1;
var learn_tries = 0;
var learn_r_mul = 0;
var learn_r_div = 0;
var learn_last = null;
var learn_types = new Array(
"-",
"Nomen M",
"Nomen W",
"Nomen",
"Verb",
"Adjektiv",
"Adverb",
"Praeposition",
"Satz"
);
function learn_calc_probs()
{
var i;
var t = 0.0;
var f = 1.0;
for( i=0; i<=5; i++ )
{
t += learn_cnts[i] * f;
f /= 4.0;
}
var p = 0.0;
f = 1.0 / t;
for( i=0; i<5; i++ )
{
p += learn_cnts[i] * f;
learn_probs[i] = p;
f /= 4.0;
}
}
function learn_upd_done( http_request )
{
if( http_request.readyState == 4 )
{
if( http_request.status == 200 )
{
var t = http_request.responseText;
alert( t );
}
else
{
alert( "error " + http_request.status );
}
}
}
function learn_next()
{
if( learn_tries > 0 )
{
var upd = false;
var word = learn_words[learn_widx];
if( learn_tries == 1 && learn_words[learn_widx].le < 5 )
{
upd = true;
word.le++;
learn_idxs[word.le]--;
learn_cnts[word.le]++;
learn_cnts[word.le-1]--;
var swapidx = learn_idxs[word.le];
if( learn_widx != swapidx )
{
learn_words[learn_widx] = learn_words[swapidx];
learn_words[swapidx] = word;
}
}
else if( learn_tries > 2 && learn_words[learn_widx].le > 1 )
{
upd = true;
var swapidx = learn_idxs[word.le];
learn_idxs[word.le]++;
learn_cnts[word.le-1]++;
learn_cnts[word.le]--;
word.le--;
if( learn_widx != swapidx )
{
learn_words[learn_widx] = learn_words[swapidx];
learn_words[swapidx] = word;
}
}
if( upd )
{
var url = "?cmd=learn_upd&id=" + word.id + "&level=" + word.le;
var http_request = new XMLHttpRequest();
http_request.open( "GET", url, true );
/*
http_request.onreadystatechange = function()
{
learn_upd_done( http_request );
};
*/
http_request.send( null );
learn_calc_probs();
}
learn_last.innerHTML = "vorher: " +
word.hi + " - " + learn_types[word.ty] + " = " +
word.ge + " (level " + word.le + ")";
}
var le = 0;
var loops = 20;
var i;
do
{
var r = Math.random();
for( le=0; le<5; le++ )
{
if( r < learn_probs[le] )
{
break;
}
}
loops--;
}
while( loops >= 0 || learn_cnts[le] == 0 );
learn_widx = learn_idxs[le] +
Math.round( Math.random() * (learn_cnts[le] - 0.001) - 0.499 );
var a = Math.round( Math.random() * 9.99 - 0.499 )
if( a == learn_answer )
{
a = Math.round( Math.random() * 9.99 - 0.499 )
}
learn_answer = a;
learn_q.innerHTML = "" +
learn_words[learn_widx].hi + " - " +
learn_types[learn_words[learn_widx].ty] + " (level " +
learn_words[learn_widx].le + ")";
var w = new Array( 10 );
var j;
for( i=0; i<10; i++ )
{
if( i == learn_answer )
{
w[i] = learn_widx;
}
else
{
var ok = false;
while( !ok )
{
w[i] = Math.round( Math.random() * (learn_words.length - 0.01) - 0.499 );
if( w[i] != learn_widx )
{
for( j=0; j-" +
"" +
"- -
" +
"- -
" +
"- -
" +
"- -
" +
"- -
" +
"- -
" +
"- -
" +
"- -
" +
"- -
" +
"- -
" +
"
" +
"";
learn_q = document.getElementById( "q" );
learn_as = new Array( 10 );
for( i=0; i<10; i++ )
{
learn_as[i] = document.getElementById( "a"+i );
}
learn_last = document.getElementById( "last" );
learn_probs = new Array( 0.0, 1.0, 1.0, 1.0, 1.0 );
learn_calc_probs();
learn_next();
}
function learn_init_error( http_request )
{
learn_div.innerHTML = "error initializing";
}
function learn_init()
{
learn_div = document.getElementById( "learn" );
var http_request = new XMLHttpRequest();
http_request.open( "GET", "?cmd=learn_list", true );
http_request.onreadystatechange = function()
{
if( http_request.readyState == 4 )
{
if( http_request.status == 200 )
{
learn_init_post( http_request );
}
else
{
learn_init_error( http_request );
}
}
};
http_request.send( null );
}