//Version 1.2
var req = null;

var betting_slip_refresh_rate=55; //seconds
var last_minute_betting_refresh_rate=63; //seconds
var race_calendar_refresh_rate=5*60; //seconds
var my_account_refresh_rate=52; //seconds

function refresh_betting_slip(LANG, aktdatlnrvnrrnr, iWa, imode){
	var name = 'betting_slip';
    var url = '/ajax/refresh_betting_slip.php?LANG='+LANG+'&imode='+imode+'&aktdatlnrvnrrnr='+aktdatlnrvnrrnr+'&iWa='+iWa;
	request(url, name);
}

function refresh_last_minute_betting(LANG){
	var name = 'last_minute_betting';
    var url = '/ajax/refresh_last_minute_betting.php?LANG='+LANG;
	request(url, name);
}

function refresh_race_calendar(LANG, aktdatlnrvnrrnr, zuklapp){
	var name = 'race_calendar';
    var url = '/ajax/refresh_race_calendar.php?LANG='+LANG+'&aktdatlnrvnrrnr='+aktdatlnrvnrrnr+zuklapp;
	request(url, name);
}

function refresh_next_races(LANG, zuklapp){
	var name = 'next_races';
    var url = '/ajax/refresh_next_races.php?LANG='+LANG+'&nrnav='+zuklapp;
	request(url, name);
}

function refresh_my_account(LANG){
	var name = 'my_account';
    var url = '/ajax/refresh_my_account.php?LANG='+LANG;
	request(url, name);
}

function refresh_starter_list(LANG, aktdatlnrvnrrnr, closed, rtm, race_nr){
	var name = 'starter_list';
    var url = '/ajax/refresh_starter_list.php?LANG='+LANG+'&aktdatlnrvnrrnr='+aktdatlnrvnrrnr+'&closed='+closed+'&rtm='+rtm+'&race='+race_nr;
	request(url, name);
}

function refresh_calendar(LANG, kalsel){
	var name = 'calendar';
    var url = '/ajax/refresh_calendar.php?LANG='+LANG+'&kalsel='+kalsel;
	request(url, name);
}


function timestamp(){
	var jetzt = new Date();
	return jetzt.getTime();
}

function init(){
	try{
		req = new XMLHttpRequest();
	}
	catch (e){
		try{
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e){
			try{
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (failed){
				req = null;
			}
		}  
	}

	//if (req == null){
	  //Fehler!
	//}
}

function request(url, name){
	if (url.indexOf("?")>=0)
	{
		url = url + "&timestamp=" + timestamp();
	}else{
		url = url + "?timestamp=" + timestamp();
	}
	if (req==null)
	{
		init();
	}
	if (req!=null)
	{
		//request ist asynchron
		req.open("GET", url, true);

		//Beim abschliessen des request wird diese Funktion ausgeführt
		req.onreadystatechange = new Function ( "handle('"+name+"')" );

		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
		//req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
		//req.overrideMimeType('text/xml; charset=ISO-8859-1')

		req.send(null);
	}
}

function handle(name){
	var html = '';
	switch(req.readyState) {
		case 4:
			if(req.status!=200) {
				//r.innerHTML = "Fehler: "+req.status+"<br>"; 
			}else{
				html = req.responseText;
				if(html.indexOf("#REFRESH#") == -1){
					switch (name){
						case 'betting_slip':
							update_betting_slip(html, name);
							break;
						default:
							update_div(html, name);
							break;
					}
				}else{
					window.location.reload();
				}
			}
		break;

		default:
			return false;
		break;     
	}
}

function update_betting_slip(html, name){
	try{
		var scratched=0;
		var betting_slip = document.getElementById(name).getElementsByTagName("table")[0];
		var betting_slip_temp = document.getElementById(name+"_temp");
		betting_slip_temp.innerHTML=html;
		var betting_slip_new = document.getElementById(name+"_new").getElementsByTagName("table")[0];

		var rows = betting_slip.getElementsByTagName("tr");
		var rows_new = betting_slip_new.getElementsByTagName("tr");
		if (rows.length != rows_new.length){throw "table differs 1";}
		cells = new Array(rows.length);
		var cells_new = new Array(rows_new.length);
		for (var i = 0; i < rows_new.length; ++i){
			scratched=0;
			cells[i] = rows[i].getElementsByTagName("td");
			cells_new[i] = rows_new[i].getElementsByTagName("td");
			if (cells[i].length != cells_new[i].length){throw "table differs 2";}
			for (var j = 0; j < cells_new[i].length; ++j) {
				if(cells_new[i][j].innerHTML.indexOf("****") != -1) scratched=1;
				if(cells_new[i][j].innerHTML != cells[i][j].innerHTML && (cells_new[i][j].getElementsByTagName("input").length<=0 || scratched==1)){
					cells[i][j].innerHTML=cells_new[i][j].innerHTML;
				}
			}
		}
		betting_slip_temp.innerHTML='';
		calc("NULL");
	}
    catch (e) {
		//alert(e);
    }
}

function update_div(html, name){
	try{
		var div = document.getElementById(name);
		var div_temp = document.getElementById(name+"_temp");
		div_temp.innerHTML=html;
		var div_new = document.getElementById(name+"_new");

		if(div_new.innerHTML!='') div.innerHTML = div_new.innerHTML;
		div_temp.innerHTML='';
		if(name == 'race_calendar'){
			close_elements();//schliesst offene Rennkalender.
			refresh_calendar_ajax();//refreshed den Kalender.
		}
		if(name == 'starter_list'){
			mark_race();//markiert angewähltes Rennen im V3 Schein
			mark_starter();
		}
		if(name == 'calendar'){
			
		}
	}
    catch (e) {
		//alert(e);
    }
}