var updateTimer;
var t;
var req = null;
var res = "";
var XMLdata = null;
var updateInterval = 30;
var oldInterval = 30;
var countingDown = true;
var toGet;
var collectionsToGet = new Array();
var matchesToGet = new Array();
var matchesToStore = new Array();
var notSelected = new Array();
var sports = new Array();
var expanded = new Array();
var reBoldables = new Array();
var col;
var mat;
var pling = false;
var goalScored = false;
var mode = "all";
var propertyMap = new Array();
var bold = new Array();
var boldedMap = new Array();
var boldTime = 60000;
var notInProgressTime = 120000;
var loading = false;
var loader;
var popUp;
var newDetached = true;

function update(){
	if(loading != true){
		loading = true;
		updating(true);
	}
	clearTimeout(updateTimer);
	toGet = "XML";
	getData("");
}

function getData(name){
	if(loading != true){
		loading = true;
		updating(true);
	}
	if(name != ""){
		name += ".html";
	}
	else{
		name += "liveresult.xml";
	}
	var url = "/webbproduktioner/sport/liveresult/webbresult/output/";
	url = url + name;
	getXMLHttpObj();
	if(req == null){
		alert ("Browser does not support HTTP Request");
		return;
	}
	req.open("GET", url, true);
	req.onreadystatechange = putData;
	req.send(null);
}

function getXMLHttpObj(){
	var xmlHttp;
	if(window.XMLHttpRequest){
		xmlHttp = new XMLHttpRequest();
	}
	else if(window.ActiveXObject){
		xmlHttp = new ActiveXObject("Microsoft.xmlHTTP");
	}
	req=xmlHttp;
	return;
}

function putData(){
	if(req.readyState == 4){
		if(toGet == "XML"){
			res = req.responseXML;
			if(XMLdata != null){
				collectionsToGet[0] = null;
				matchesToGet[0] = null;
				col = 0;
				mat = 0;
				var newDay = compare();
				if(newDay == true){
					update();
				}
				else{
					XMLdata = res;
					res = "";
					if(collectionsToGet[0] != null){
						col = 0;
						mat = 0;
						toGet = collectionsToGet[col];
						col++;
						getData(toGet);
					}
					else if(matchesToGet[0] != null){
						col = 0;
						mat = 0;
						toGet = matchesToGet[col];
						mat++;
						getData(toGet);
					}
					else{
						doBold();
						toGet = "";
						if(countingDown){
							t = updateInterval;
							countDownToUpdate();
						}
					}
				}
			}
			else{
				collectionsToGet[0] = null;
				matchesToGet[0] = null;
				mat = 0;
				if(res.documentElement.attributes[1].nodeValue > 30){
					updateInterval = minInterval(res.documentElement.attributes[1].nodeValue);
				}
				else{
					document.getElementById("opt30").selected = "selected";
				}
				oldInterval = updateInterval;
				showTime(res.documentElement.attributes[0].nodeValue);
				if(res.documentElement.nodeName == "liveresult"){
					for(var i = 0 ; i < res.getElementsByTagName("games").length ; i++){
						var sportFound = false;
						for(var n = 0 ; n < sports.length ; n++){
							if(sports[n] == res.getElementsByTagName("games")[i].getAttribute("sport")){
								sportFound = true;
								break;
							}
						}
						if(sportFound == false){
							sports[sports.length] = res.getElementsByTagName("games")[i].getAttribute("sport");
							mapProperty((res.getElementsByTagName("games")[i].getAttribute("sport") + "i"), null, true, false, null);
							addElement("div", "service", res.getElementsByTagName("games")[i].getAttribute("sport"), "ms_sport");
							document.getElementById(res.getElementsByTagName("games")[i].getAttribute("sport")).innerHTML = "";
							addElement("div", res.getElementsByTagName("games")[i].getAttribute("sport"), (res.getElementsByTagName("games")[i].getAttribute("sport") + "header"), "header");
							document.getElementById(res.getElementsByTagName("games")[i].getAttribute("sport") + "header").innerHTML = "";
							addElement("div", (res.getElementsByTagName("games")[i].getAttribute("sport") + "header"), (res.getElementsByTagName("games")[i].getAttribute("sport") + "check"), "scheck");
							document.getElementById(res.getElementsByTagName("games")[i].getAttribute("sport") + "check").innerHTML = "";
							addElement("input", (res.getElementsByTagName("games")[i].getAttribute("sport") + "check"), (res.getElementsByTagName("games")[i].getAttribute("sport") + "i"), "sportcheck");
							document.getElementById(res.getElementsByTagName("games")[i].getAttribute("sport") + "i").setAttribute("name", res.getElementsByTagName("games")[i].getAttribute("sport"));
							document.getElementById(res.getElementsByTagName("games")[i].getAttribute("sport") + "i").setAttribute("onclick", "checkAll(this)");
							document.getElementById("service").innerHTML += "";
							addElement("span", (res.getElementsByTagName("games")[i].getAttribute("sport") + "header"), (res.getElementsByTagName("games")[i].getAttribute("sport") + "label"), "label")
							document.getElementById(res.getElementsByTagName("games")[i].getAttribute("sport") + "label").innerHTML = res.getElementsByTagName("games")[i].getAttribute("sport").toUpperCase();
						}
						collectionsToGet[i] = res.getElementsByTagName("games")[i].getAttribute("id");
						addElement("div", res.getElementsByTagName("games")[i].getAttribute("sport"), collectionsToGet[i], "collection");
						mapProperty((collectionsToGet[i] + "i"), res.getElementsByTagName("games")[i].getAttribute("time"), true, false, null);
						for(var m = 0 ; m < res.getElementsByTagName("games")[i].getElementsByTagName("game").length ; m++){
							matchesToGet[mat] = res.getElementsByTagName("games")[i].getElementsByTagName("game")[m].getAttribute("id");
							mat++;
							mapProperty((res.getElementsByTagName("games")[i].getElementsByTagName("game")[m].getAttribute("id") + "i"), res.getElementsByTagName("games")[i].getElementsByTagName("game")[m].getAttribute("time"), true, false, false);
							if(res.getElementsByTagName("games")[i].getElementsByTagName("game")[m].getElementsByTagName("status")[0].childNodes[0].nodeValue == "STARTED" && mode != "inProgress" && document.getElementById("inProgressOn").className != "active"){
								document.getElementById("inProgressOn").className = "active";
								document.getElementById("inProgressOff").className = "inactive";
							}
						}
						collectionsToGet[(i + 1)] = null;
					}
					matchesToGet[mat] = null;
					var sportsToSort = new Array(sports);
					for(var s = 0 ; s < sports.length ; s++){
						sportsToSort[s] = new sortable(sports[s], sports[s]);
					}
					var sortedSports = insertionSort(sportsToSort);
					if(sortedSports != null){
						sortElements(sortedSports);
					}
				}
				XMLdata = res;
				res = "";
				if(collectionsToGet[0] != null){
					col = 0;
					mat = 0;
					toGet = collectionsToGet[col]
					col++;
					getData(toGet);
				}
				else{
					toGet = "";
					if(countingDown){
						t = updateInterval;
						countDownToUpdate();
					}
				}
			}
		}
		else{
			res = req.responseText;
			replaceElement(toGet);
			if(document.getElementById(toGet).className == "collection"){
				var league;
				for(var i = 0 ; i < XMLdata.getElementsByTagName("games").length ; i++){
					if(XMLdata.getElementsByTagName("games")[i].getAttribute("id") == toGet){
						league = XMLdata.getElementsByTagName("games")[i];
						break;
					}
				}
				setBackgroundColour(league);
			}
			if(collectionsToGet[col] != null){
				toGet = collectionsToGet[col]
				col++;
				getData(toGet);
			}
			else if(matchesToGet[mat] != null){
				toGet = matchesToGet[mat]
				mat++;
				getData(toGet);
			}
			else{
				restore();
				removeNotSelected();
				if(expanded[0] != null){
					expand();
				}
				doBold();
				reBold();
				if(newDetached == true){
					parseQueryString();
					newDetached = false;
				}
				if(goalScored == true && pling == true){
					playPling();
				}
				goalScored = false;
				oldHomeScore = null;
				oldAwayScore = null;
				matchesToStore[0] = null;
				expanded[0] = null;
				toGet = "";
				if(countingDown){
					t = updateInterval;
					countDownToUpdate();
				}
			}
		}
		if(toGet == ""){
			updating(false);
		}
	}
}

function updating(val){
	if(val == true){
		clearTimeout(loader);
		loader = setTimeout("updating('" + "error" + "');",20000);
		if(newDetached == true){
			document.getElementById("service").style.display = "none";
		}
	}
	else if(val == false){
		loading = val;
		clearTimeout(loader);
		if(newDetached == false){
			document.getElementById("service").style.display = "block";
		}
	}
	else if(val == "error"){
		loading = false;
		clearTimeout(loader);
		if(newDetached == false){
			document.getElementById("service").style.display = "block";
		}
	}
}

function mapProperty(index, timValue, actValue, selValue, expValue){
	propertyMap[index] = new propertyList(timValue, actValue, selValue, expValue);
	return;
}

function propertyList(tim, act, sel, exp){
	this.time = tim;
	this.active = act;
	this.selected = sel;
	this.expanded = exp;
	this.innerHTML = "";
	return;
}

function addElement(tag, location, idNumber, classAttr){
	var newElement = document.createElement(tag);
	newElement.id = idNumber;
	newElement.className = classAttr;
	if(tag == "input"){
		newElement.setAttribute("type", "checkbox");
	}
	document.getElementById(location).appendChild(newElement);
	if(tag != "input"){
		document.getElementById(idNumber).innerHTML = null;
	}
	return;
}

function sortable(key, id){
	this.key = key;
	this.id = id;
}

function insertionSort(toSort){
	var changed = false;
	var i = 1;
	while(i < toSort.length){
		var lower = toSort[i];
		var j = i - 1;
		while(j >= 0 && toSort[j].key > lower.key){
			changed = true;
			toSort[j + 1] = toSort[j];
			j--;
		}
		toSort[j + 1] = lower;
		i++;
	}
	if(changed == true){
		return toSort;
	}
	else{
		return null;
	}
}

function sortElements(toSort){
	for(var k = toSort.length - 2 ; k >= 0 ; k--){
		document.getElementById(toSort[k].id).parentNode.insertBefore(document.getElementById(toSort[k].id), document.getElementById(toSort[k + 1].id));
	}
	return;
}

function setBackgroundColour(league){
	var c = false;
		for(var i = 0 ; i < league.getElementsByTagName("game").length ; i++){
			if(propertyMap[league.getElementsByTagName("game")[i].getAttribute("id") + "i"].active == true){
				c = !c;
				if(c == true){
					document.getElementById(league.getElementsByTagName("game")[i].getAttribute("id")).className = "gameodd";
				}
				else{
					document.getElementById(league.getElementsByTagName("game")[i].getAttribute("id")).className = "gameeven";
				}
			}
		}
	return;
}

function compare(){
	var collectionFound;
	var matchFound;
	var toHide = new Array();
	var toExpand = new Array();
	var toStore = new Array();
	var toReBold = new Array();
	bold[0] = null;
	notSelected[0] = null;
	var b = 0;
	var not = 0;
	var hid = 0;
	var exp = 0;
	var sto = 0;
	var reb = 0;
	var inProgress = false;
	var oldScore;
	var newScore;
	var matchesToKeep = new Array();
	var toKeep = 0;
	matchesToKeep[0] = null;
	if(res.documentElement.attributes[0].nodeValue != XMLdata.documentElement.attributes[0].nodeValue){
		if(XMLdata.documentElement.attributes[2].nodeValue != res.documentElement.attributes[2].nodeValue){
			document.getElementById("service").innerHTML = "";
			XMLdata = null;
			return true;
		}
		else{
			if(res.documentElement.attributes[1].nodeValue != XMLdata.documentElement.attributes[1].nodeValue){
				updateInterval = minInterval(res.documentElement.attributes[1].nodeValue);
			}
			showTime(res.documentElement.attributes[0].nodeValue);
			for(var i = 0 ; i < res.getElementsByTagName("games").length ; i++){
				var sortMatches = false;
				collectionFound = false;
				if(inProgress == false){
					for(var k = 0 ; k < res.getElementsByTagName("games")[i].getElementsByTagName("game").length ; k++){
						if(res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getElementsByTagName("status")[0].childNodes[0].nodeValue == "STARTED"){
							inProgress = true;
							break;
						}
					}
				}
				for(var j = 0 ; j < XMLdata.getElementsByTagName("games").length ; j++){
					if(res.getElementsByTagName("games")[i].getAttribute("id") == XMLdata.getElementsByTagName("games")[j].getAttribute("id")){
						collectionFound = true;
						for(var k = 0 ; k < res.getElementsByTagName("games")[i].getElementsByTagName("game").length ; k++){
							for(var l = 0 ; l < XMLdata.getElementsByTagName("games")[j].getElementsByTagName("game").length ; l++){
								if(res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id") == XMLdata.getElementsByTagName("games")[j].getElementsByTagName("game")[l].getAttribute("id")){
									if(k != l){
									sortMatches = true;
									break;
									}
								}
							}
							if(sortMatches == true){
								break;
							}
						}
						if(sortMatches == true && (col == 0 || collectionsToGet[(col - 1)] != res.getElementsByTagName("games")[i].getAttribute("id"))){
							var matchesToSort = new Array();
							for(var m = 0 ; m < res.getElementsByTagName("games")[i].getElementsByTagName("game").length ; m++){
								matchesToSort[m] = new sortable(res.getElementsByTagName("games")[i].getElementsByTagName("game")[m].getAttribute("id"), res.getElementsByTagName("games")[i].getElementsByTagName("game")[m].getAttribute("id"));
							}
							sortElements(matchesToSort);
							setBackgroundColour(res.getElementsByTagName("games")[i])
						}
						if((res.getElementsByTagName("games")[i].getAttribute("time") != propertyMap[(XMLdata.getElementsByTagName("games")[j].getAttribute("id") + "i")].time) && (propertyMap[(XMLdata.getElementsByTagName("games")[j].getAttribute("id") + "i")].active == true || mode == "inProgress")){
							if(res.getElementsByTagName("games")[i].getAttribute("name") != XMLdata.getElementsByTagName("games")[j].getAttribute("name")){
								document.getElementById(res.getElementsByTagName("games")[i].getAttribute("id") + "label").innerHTML = res.getElementsByTagName("games")[i].getAttribute("name");
							}
							for(var k = 0 ; k < res.getElementsByTagName("games")[i].getElementsByTagName("game").length ; k++){
								matchFound = false;
								for(var l = 0 ; l < XMLdata.getElementsByTagName("games")[j].getElementsByTagName("game").length ; l++){
									if(res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id") == XMLdata.getElementsByTagName("games")[j].getElementsByTagName("game")[l].getAttribute("id")){
										matchFound = true;
										if(k != l){
											sortMatches = true;
										}
										if((res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("time") != propertyMap[(XMLdata.getElementsByTagName("games")[j].getElementsByTagName("game")[l].getAttribute("id") + "i")].time) && ((propertyMap[(XMLdata.getElementsByTagName("games")[j].getElementsByTagName("game")[k].getAttribute("id") + "i")].active == true) || (mode == "inProgress" && res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getElementsByTagName("status")[0].childNodes[0].nodeValue == "STARTED" && XMLdata.getElementsByTagName("games")[j].getElementsByTagName("game")[l].getElementsByTagName("status")[0].childNodes[0].nodeValue != "STARTED"))){
											if((propertyMap[(XMLdata.getElementsByTagName("games")[j].getElementsByTagName("game")[k].getAttribute("id") + "i")].active == false) && mode == "inProgress" && (res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getElementsByTagName("status")[0].childNodes[0].nodeValue == "STARTED")){
											}
											matchesToGet[mat] = XMLdata.getElementsByTagName("games")[j].getElementsByTagName("game")[l].getAttribute("id");
											if(boldedMap[(matchesToGet[mat] + "homescore")] && boldedMap[(matchesToGet[mat] + "homescore")] != null){
												toReBold[reb] = matchesToGet[mat] + "homescore";
												reb++;
											}
											if(boldedMap[(matchesToGet[mat] + "awayscore")] && boldedMap[(matchesToGet[mat] + "awayscore")] != null){
												toReBold[reb] = matchesToGet[mat] + "awayscore";
												reb++;
											}
											mat++;
											if(propertyMap[(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id") + "i")].expanded == true){
												toExpand[exp] = XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id");
												exp++;
											}
											if(mode == "inProgress" && propertyMap[(XMLdata.getElementsByTagName("games")[j].getElementsByTagName("game")[l].getAttribute("id") + "i")].active == false){
												propertyMap[(XMLdata.getElementsByTagName("games")[j].getElementsByTagName("game")[l].getAttribute("id") + "i")].active = true;
												document.getElementById(XMLdata.getElementsByTagName("games")[j].getElementsByTagName("game")[l].getAttribute("id")).className = "game";
												if(mode == "inProgress" && propertyMap[(XMLdata.getElementsByTagName("games")[j].getAttribute("id") + "i")].active == false){
													propertyMap[(XMLdata.getElementsByTagName("games")[j].getAttribute("id") + "i")].active = true;
													document.getElementById(XMLdata.getElementsByTagName("games")[j].getAttribute("id")).className = "collection";
													if(mode == "inProgress" && propertyMap[(XMLdata.getElementsByTagName("games")[j].getAttribute("sport") + "i")].active == false){
														propertyMap[(XMLdata.getElementsByTagName("games")[j].getAttribute("sport") + "i")].active = true;
														document.getElementById(XMLdata.getElementsByTagName("games")[j].getAttribute("sport")).className = "ms_sport";
													}
												}
											}
											var s = res.getElementsByTagName("games")[i].getAttribute("sport");
											if(s != "Basket" && s != "Handboll"){
												if(res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getElementsByTagName("home")[0].childNodes[0].nodeValue != "X" && document.getElementById(res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id") + "homescore").innerHTML != "X"){
													if(res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getElementsByTagName("home")[0].childNodes[0].nodeValue != document.getElementById(res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id") + "homescore").innerHTML){
														bold[b] = XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id") + "homescore";
														b++;
														goalScored = true;
													}
												}
												if(res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getElementsByTagName("away")[0].childNodes[0].nodeValue != "X" && document.getElementById(res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id") + "awayscore").innerHTML != "X"){
													if(res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getElementsByTagName("away")[0].childNodes[0].nodeValue != document.getElementById(res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id") + "awayscore").innerHTML){
														bold[b] = XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id") + "awayscore";
														b++;
														goalScored = true;
													}
												}
												bold[b] = null;
											}
											if(mode == "inProgress" && XMLdata.getElementsByTagName("games")[j].getElementsByTagName("game")[l].getElementsByTagName("status")[0].childNodes[0].nodeValue == "STARTED" && res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getElementsByTagName("status")[0].childNodes[0].nodeValue != "STARTED"){
												matchesToKeep[toKeep] = XMLdata.getElementsByTagName("games")[j].getElementsByTagName("game")[l].getAttribute("id");
												toKeep++;
											}
										}
									}
								}
								if(matchFound == false){
									var active;
									if(mode != "all"){
										active = false;
									}
									else{
										active = true;
									}
									mapProperty((res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id") + "i"), res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("time"), true, false, false);
									if(col != 0 && collectionsToGet[(col - 1)] != res.getElementsByTagName("games")[i].getAttribute("id")){
										collectionsToGet[col] = res.getElementsByTagName("games")[i].getAttribute("id");
										col++;
									}
									matchesToGet[col] = res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id");
									mat++;
									for(var l = 0 ; l < res.getElementsByTagName("games")[i].length ; l++){
										if(res.getElementsByTagName("games")[i].getElementsByTagName("game")[l].getAttribute("id") != res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id")){
											toStore[sto] = res.getElementsByTagName("games")[i].getElementsByTagName("game")[l].getAttribute("id");
											sto++;
										}
									}
									if(mode == "select" || (mode == "inProgress" && res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getElementsByTagName("status")[0].childNodes[0].nodeValue != "STARTED")){
										propertyMap[(res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id") + "i")].active = false;
										toHide[hid] = res.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id");
										hid++;
									}
								}
							}
						}
						if(sortMatches == true && (col == 0 || collectionsToGet[(col - 1)] != res.getElementsByTagName("games")[i].getAttribute("id"))){
							var matchesToSort = new Array();
							for(var m = 0 ; m < res.getElementsByTagName("games")[i].getElementsByTagName("game").length ; m++){
								matchesToSort[l] = new sortable(res.getElementsByTagName("games")[i].getElementsByTagName("game")[l].getAttribute("id"), res.getElementsByTagName("games")[i].getElementsByTagName("game")[l].getAttribute("id"));
							}
							sortElements(matchesToSort);
						}
					}
				}
				if(collectionFound == false){
					var sportFound = false;
					for(var n = 0 ; n < sports.length ; n++){
						if(sports[n] == res.getElementsByTagName("games")[i].getAttribute("sport")){
							sportFound = true;
							break;
						}
					}
					if(sportFound == false){
						sports[sports.length] = res.getElementsByTagName("games")[i].getAttribute("sport");
						mapProperty((res.getElementsByTagName("games")[i].getAttribute("sport") + "i"), null, true, false, null);
						addElement("div", "service", res.getElementsByTagName("games")[i].getAttribute("sport"), "ms_sport");
						document.getElementById(res.getElementsByTagName("games")[i].getAttribute("sport")).innerHTML = "";
						addElement("div", res.getElementsByTagName("games")[i].getAttribute("sport"), (res.getElementsByTagName("games")[i].getAttribute("sport") + "header"), "header");
						document.getElementById(res.getElementsByTagName("games")[i].getAttribute("sport") + "header").innerHTML = "";
						addElement("div", (res.getElementsByTagName("games")[i].getAttribute("sport") + "header"), (res.getElementsByTagName("games")[i].getAttribute("sport") + "check"), "scheck");
						document.getElementById(res.getElementsByTagName("games")[i].getAttribute("sport") + "check").innerHTML = "";
						addElement("input", (res.getElementsByTagName("games")[i].getAttribute("sport") + "check"), (res.getElementsByTagName("games")[i].getAttribute("sport") + "i"), "sportcheck");
						document.getElementById(res.getElementsByTagName("games")[i].getAttribute("sport") + "i").setAttribute("name", res.getElementsByTagName("games")[i].getAttribute("sport"));
						document.getElementById(res.getElementsByTagName("games")[i].getAttribute("sport") + "i").setAttribute("onclick", "checkAll(this)");
						document.getElementById("service").innerHTML += "";
						addElement("span", (res.getElementsByTagName("games")[i].getAttribute("sport") + "header"), (res.getElementsByTagName("games")[i].getAttribute("sport") + "label"), "label")
						document.getElementById(res.getElementsByTagName("games")[i].getAttribute("sport") + "label").innerHTML = res.getElementsByTagName("games")[i].getAttribute("sport").toUpperCase();
						var sportsToSort = new Array(sports);
						for(var s = 0 ; s < sports.length ; s++){
							sportsToSort[s] = new sortable(sports[s], sports[s]);
						}
						var sortedSports = insertionSort(sportsToSort);
						if(sortedSports != null){
							sortElements(sortedSports);
						}
					}
					collectionsToGet[col] = res.getElementsByTagName("games")[i].getAttribute("id");
					col++;
					mapProperty((collectionsToGet[col - 1] + "i"), res.getElementsByTagName("games")[i].getAttribute("time"), true, false, null);
					addElement("div", res.getElementsByTagName("games")[i].getAttribute("sport"), collectionsToGet[col - 1], "collection");
					matchFound = false;
					for(var m = 0 ; m < res.getElementsByTagName("games")[i].getElementsByTagName("game").length ; m++){
						mapProperty((res.getElementsByTagName("games")[i].getElementsByTagName("game")[m].getAttribute("id") + "i"), res.getElementsByTagName("games")[i].getElementsByTagName("game")[m].getAttribute("time"), true, false, false);
						matchesToGet[mat] = res.getElementsByTagName("games")[i].getElementsByTagName("games")[m].getAttribute("id");
						mat++;
						if(mode == "all" || (mode == "inProgress" && res.getElementsByTagName("games")[i].getElementsByTagName("game")[m].getElementsByTagName("status")[0].childNodes[0].nodeValue == "STARTED")){
							matchFound = true;
						}
						else{
							propertyMap[(res.getElementsByTagName("games")[i].getElementsByTagName("game")[m].getAttribute("id") + "i")].active = false;
							toHide[hid] = res.getElementsByTagName("games")[i].getElementsByTagName("game")[m].getAttribute("id");
							hid++;
						}
					}
					if(matchFound == false){
						propertyMap[(res.getElementsByTagName("games")[i].getAttribute("id") + "i")].active = false;
						toHide[hid] = res.getElementsByTagName("games")[i].getAttribute("id");
						hid++;
						if(sportFound == false){
							propertyMap[(res.getElementsByTagName("games")[i].getAttribute("sport") + "i")].active = false;
							toHide[hid] = res.getElementsByTagName("games")[i].getAttribute("sport");
							hid++;
						}
					}
					var leaguesToSort = new Array();
					var l = 0;
					for(var c = 0 ; c < res.getElementsByTagName("games").length ; c++){
						if(res.getElementsByTagName("games")[c].getAttribute("sport") == res.getElementsByTagName("games")[i].getAttribute("sport") && res.getElementsByTagName("games")[c].getAttribute("id") != res.getElementsByTagName("games")[i].getAttribute("id")){
							leaguesToSort[l] = new sortable(res.getElementsByTagName("games")[c].getAttribute("name"), res.getElementsByTagName("games")[c].getAttribute("id"));
							l++;
						}
					}
					leaguesToSort[l] = new sortable(res.getElementsByTagName("games")[i].getAttribute("name"), res.getElementsByTagName("games")[i].getAttribute("id"));
					var sortedLeagues = insertionSort(leaguesToSort);
					if(sortedLeagues != null){
						sortElements(sortedLeagues);
					}
					if(mode == "select" || (mode == "inProgress" && matchFound == false)){
						propertyMap[(collectionsToGet[col] + "i")].active = false;
						document.getElementById(collectionsToGet[col]).className = "hidden";
					}
				}
			}
			for(var i = 0 ; i < XMLdata.getElementsByTagName("games").length ; i++){
				collectionFound = false;
				var matchCount = 0;
				for(var j = 0 ; j < res.getElementsByTagName("games").length ; j++){
					if(XMLdata.getElementsByTagName("games")[i].getAttribute("id") == res.getElementsByTagName("games")[j].getAttribute("id")){
						collectionFound = true;
						var collectionAltered = false;
						for(var k = 0 ; k < XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game").length ; k++){
							matchFound = false;
							for(var l = 0 ; l < res.getElementsByTagName("games")[j].getElementsByTagName("game").length ; l++){
								if(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id") == res.getElementsByTagName("games")[j].getElementsByTagName("game")[l].getAttribute("id")){
									matchFound = true;
								}
							}
							if(matchFound == false){
								collectionAltered = true
//								document.getElementById("log").innerHTML += "<br /><b>found nonexisting match: </b>" + XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id");
								deleteElement(XMLdata.getElementsByTagName("games")[i].getAttribute("id"), XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id"));
								propertyMap[(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[k].getAttribute("id") + "i")] = null;
							}
						}
						if(collectionAltered == true){
							setBackgroundColour(res.getElementsByTagName("games")[j]);
						}
					}
				}
				if(collectionFound == false){
					var activeChildren = actives(XMLdata.getElementsByTagName("games")[i].getAttribute("sport"), XMLdata.getElementsByTagName("games")[i].getAttribute("id"));
					if(activeChildren[0] <= 1){
						document.getElementById(XMLdata.getElementsByTagName("games")[i].getAttribute("sport")).className = "hidden";
						propertyMap[(XMLdata.getElementsByTagName("games")[i].getAttribute("sport") + "i")].active = false;
					}
					for(var m = 0 ; m < XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game").length ; m++){
						propertyMap[(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[m].getAttribute("id") + "i")] = null;
					}
					deleteElement(XMLdata.getElementsByTagName("games")[i].getAttribute("sport"), XMLdata.getElementsByTagName("games")[i].getAttribute("id"));
					propertyMap[(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i")] = null;
					var leaguesInSport = 0;
					for(var n = 0 ; n < res.getElementsByTagName("games").length ; n++){
						if(res.getElementsByTagName("games")[n].getAttribute("sport") == XMLdata.getElementsByTagName("games")[i].getAttribute("sport")){
							leaguesInSport++;
						}
					}
					if(leaguesInSport == 0){
						var correctedSports = new Array();
						var t = 0;
						for(var s = 0 ; s < sports.length ; s++){
							if(sports[s] == XMLdata.getElementsByTagName("games")[i].getAttribute("sport")){
								s++;
							}
							correctedSports[t] = sports[s];
						}
						sports = correctedSports;
						deleteElement("service", XMLdata.getElementsByTagName("games")[i].getAttribute("sport"));
						propertyMap[(XMLdata.getElementsByTagName("games")[i].getAttribute("sport") + "i")] = null;
					}
				}
			}
			collectionsToGet[col] = null;
			matchesToGet[mat] = null;
			notSelected = toHide;
			expanded = toExpand;
			reBoldables = toReBold;
			if(inProgress == false && mode != "inProgress"){
				document.getElementById("inProgressOff").className = "active";
				document.getElementById("inProgressOn").className = "inactive";
			}
			else if(inProgress == true && mode != "inProgress"){
				document.getElementById("inProgressOn").className = "active";
				document.getElementById("inProgressOff").className = "inactive";
			}
			matchesToStore = toStore;
			if(matchesToStore[0] != null){
				store();
			}
			if(matchesToKeep[0] != null){
				keepInProgress(matchesToKeep);
			}
		}
	}
	return;
}

function replaceElement(item){
	var newContent = document.createElement("div");
	newContent.innerHTML = res;
	if(newContent.childNodes[0].innerHTML != null && newContent.childNodes[0].innerHTML != undefined){
		document.getElementById(item).innerHTML = newContent.childNodes[0].innerHTML;
	}
	else{
		document.getElementById(item).innerHTML = newContent.childNodes[1].innerHTML;
	}
	return;
}

function deleteElement(parent, item){
	var n = 0;
	while(n < document.getElementById(parent).getElementsByTagName("div").length){
		if(document.getElementById(parent).getElementsByTagName("div")[n].getAttribute("id") == item){
			break;
		}
		else{
			n++;
		}
	}
	document.getElementById(parent).removeChild(document.getElementById(parent).getElementsByTagName("div")[n]);
	return;
}

function doBold(){
	var b = 0;
	var item;
	while(bold[b] != null){
		if(document.getElementById(bold[b]).innerHTML != "X"){
			if(boldedMap[(bold[b])] && boldedMap[(bold[b])] != null){
				boldedMap[(bold[b])].newScore = document.getElementById(bold[b]).innerHTML;
			}
			else{
				boldedMap[(bold[b])] = new boldObject(document.getElementById(bold[b]).innerHTML);
			}
		setTimeout("unBold('" + bold[b] + "')", boldTime);
		document.getElementById(bold[b]).style.color = "#ff0000";
		bold[b] = null;
		b++;
		}
	}
	return;
}

function boldObject(number){
	this.score = number;
	this.newScore = number;
	return;
}

function unBold(item){
	if(document.getElementById(item) && boldedMap[item] != null){
		if(boldedMap[item].score == boldedMap[item].newScore){
			document.getElementById(item).style.color = "#000050";
			boldedMap[item] = null;
		}
		else{
			boldedMap[item].score = boldedMap[item].newScore;
		}
	}
	return;
}

function reBold(){
	if(reBoldables[0] != null){
		for(var i = 0 ; i < reBoldables.length ; i++){
			if(boldedMap[(reBoldables[i])] && boldedMap[(reBoldables[i])] != null){
				document.getElementById(reBoldables[i]).style.color = "#ff0000";
			}
		}
		reBoldables[0] = null;
	}
	return;
}

function expand(){
	for(var i = 0 ; i < expanded.length ; i++){
		if(document.getElementById(expanded[i] + "exp").className != "hidden"){
			document.getElementById(expanded[i] + "d").className = "details";
			document.getElementById(expanded[i] + "min").className = "btnHideDetails";
			document.getElementById(expanded[i] + "exp").className = "hidden";
		}
		else{
			propertyMap[(expanded[i] + "i")].expanded = false;
		}
	}
}

function keepInProgress(keepers){
	for(var i = 0 ; i < keepers.length ; i++){
		setTimeout("removeFromInProgress('" + keepers[i] + "')", notInProgressTime);
	}
	return;
}

function removeFromInProgress(item){
	if(mode == "inProgress"){
		var stillInProgress = false;
		var parent = document.getElementById(item).parentNode.getAttribute("id");
		for(var i = 0 ; i < XMLdata.getElementsByTagName("games").length ; i++){
			if(XMLdata.getElementsByTagName("games")[i].getAttribute("id") == parent){
				for(var j = 0 ; j < XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game").length ; j++){
					if(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") == item){
						if(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getElementsByTagName("status")[0].childNodes[0].nodeValue == "STARTED"){
							stillInProgress = true;
							break;
						}
					}
				}
				break;
			}
		}
		if(stillInProgress == false){
			document.getElementById(item).className = "hidden";
			propertyMap[item + "i"].active = false;
			var activeChildren = actives((document.getElementById(item).parentNode.parentNode.getAttribute("id")), (document.getElementById(item).parentNode.getAttribute("id")));
			if(activeChildren[1] == 0){
				document.getElementById(item).parentNode.className = "hidden";
				propertyMap[document.getElementById(item).parentNode.getAttribute("id") + "i"].active = false;
				if(activeChildren[0] <= 1){
					document.getElementById(item).parentNode.parentNode.className = "hidden";
					propertyMap[document.getElementById(item).parentNode.parentNode.getAttribute("id") + "i"].active = false;
				}
			}
		}
	}
}

function actives(parent, child){
	var numberOfChildren = 0;
	var numberOfGrandChildren = 0;
	for(var i = 0 ; i < XMLdata.getElementsByTagName("games").length ; i++){
		if(XMLdata.getElementsByTagName("games")[i].getAttribute("sport") == parent){
			if(propertyMap[(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i")].active == true){
				numberOfChildren++;
				if(XMLdata.getElementsByTagName("games")[i].getAttribute("id") == child){
					for(var j = 0 ; j < XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game").length ; j++){
						if(propertyMap[(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i")].active == true){
							numberOfGrandChildren++;
						}
					}
				}
			}
		}
	}
	var children = new Array(numberOfChildren, numberOfGrandChildren);
	return children;
}

function store(){
	for(var i = 0 ; i < matchesToStore.length ; i++){
		propertyMap[(matchesToStore[i] + "i")].innerHTML = document.getElementById(matchesToStore[i]).innerHTML;
	}
	return;
}

function restore(){
	for(var i = 0 ; i < matchesToStore.length ; i++){
		document.getElementById(matchesToStore[i]).innerHTML = propertyMap[(matchesToStore[i] + "i")].innerHTML;
	}
	return;    
}

function removeNotSelected(){
	for(var i = 0 ; i < notSelected.length ; i++){
		document.getElementById(notSelected[i]).className = "hidden";
	}
}

function countDownToUpdate(){
	if(t < 60){
		document.getElementById("counter").innerHTML = t + " s";
	}
	else{
		var min = Math.floor(t / 60);
		var s = t % 60;
		if(s == 0){
			document.getElementById("counter").innerHTML = min + " min";
		}
		else{
			document.getElementById("counter").innerHTML = min + " min " + s + " s";
		}
	}
	if(t > 0){
		t--;
		updateTimer = setTimeout("countDownToUpdate()", 1000);
	}
	else{
		update();
	}
}

function selectMatches(){
	if(loading == false){
		var selectedSports = new Array();
		var selectedLeagues = new Array();
		var toUnCheck = new Array();
		var toSelect = new Array();
		var toDeSelect = new Array();
		var spo = 0;
		var leg = 0;
		var un = 0;
		var se = 0;
		var de = 0;
		var colLength;
		var matchCount;
		var chosen = false;
		for(var i = 0 ; i < XMLdata.getElementsByTagName("games").length ; i++){
			if(propertyMap[(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i")].active == true){
				colLength = 0;
				matchCount = 0;
				for(var j = 0 ; j < XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game").length ; j++){
					if(propertyMap[(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i")].active == true){
						colLength++;
						if(document.getElementById(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i").checked == false){
							toDeSelect[de] = (XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id"));
							de++;
							matchCount++;
						}
						else{
							chosen = true;
							toUnCheck[un] = (XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i");
							toSelect[se] = (XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id"));
							un++;
							se++;
						}
					}
				}
				if(matchCount == colLength){
					toDeSelect[de] = XMLdata.getElementsByTagName("games")[i].getAttribute("id");
					de++;
				}
				else{
					var sportFound = false;
					selectedLeagues[leg] = XMLdata.getElementsByTagName("games")[i];
					toUnCheck[un] = XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i";
					toSelect[se] = XMLdata.getElementsByTagName("games")[i].getAttribute("id");
					leg++;
					un++;
					se++;
					for(var s = 0 ; s < selectedSports.length ; s++){
						if(selectedSports[s] == XMLdata.getElementsByTagName("games")[i].getAttribute("sport")){
							sportFound = true;
							break;
						}
					}
					if(sportFound != true){
						selectedSports[spo] = XMLdata.getElementsByTagName("games")[i].getAttribute("sport");
						spo++;
					}
				}
			}
		}
		if(chosen == false){
			alert("Du har inte valt några matcher.");
		}
		else{
			for(var r = 0 ; r < sports.length ; r++){
				var sportFound = false;
				for(var s = 0 ; s < selectedSports.length ; s++){
					if(sports[r] == selectedSports[s]){
						sportFound = true;
						toSelect[se] = sports[r];
						se++;
						if(document.getElementById(sports[r] + "i").checked == true){
							toUnCheck[un] = sports[r] + "i";
							un++;
						}
						break;
					}
				}
				if(sportFound == false){
					toDeSelect[de] = sports[r];
					de++;
				}
			}
			for(var i = 0 ; i < toSelect.length ; i++){
				propertyMap[toSelect[i] + "i"].selected = true;
			}
			for(var i = 0 ; i < toDeSelect.length ; i++){
				propertyMap[toDeSelect[i] + "i"].selected = false;
				propertyMap[toDeSelect[i] + "i"].active = false;
				document.getElementById(toDeSelect[i]).className = "hidden";
			}
			for(var i = 0 ; i < toUnCheck.length ; i++){
				document.getElementById(toUnCheck[i]).checked = false;
			}
			if(mode == "all"){
				document.getElementById("allActive").className = "inactive";
				document.getElementById("allOn").className = "active";
			}
			else if(mode == "inProgress"){
				document.getElementById("inProgressActive").className = "inactive";
				document.getElementById("inProgressOn").className = "active";
			}
			mode = "select";
			document.getElementById("selectActive").className = "active";
			document.getElementById("selectOn").className = "inactive";
			document.getElementById("selectOff").className = "inactive";
			for(var i = 0 ; i < selectedLeagues.length ; i++){
				setBackgroundColour(selectedLeagues[i]);
			}
		}
	}
	//_hbPageView('select_matches','/Sport/Sport/Malservice/Start');
}

function checkAll(item){
	if(item.checked == true){
		if(item.className == "sportcheck"){
			for(var i = 0 ; i < XMLdata.getElementsByTagName("games").length ; i++){
				if((XMLdata.getElementsByTagName("games")[i].getAttribute("sport") + "i") == item.id){
					document.getElementById(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i").checked = true;
					document.getElementById(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i").onclick();
				}
			}
		}
		if(item.className == "leaguecheck"){
			for(var i = 0 ; i < XMLdata.getElementsByTagName("games").length ; i++){
				if(XMLdata.getElementsByTagName("games")[i].getAttribute("id") == item.name){
					for(var j = 0 ; j < XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game").length; j++){
						if(document.getElementById(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id"))){
							document.getElementById(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i").checked = true;
						}
					}
					break;
				}
			}
		}
	}
	else if(item.checked == false){
		if(item.className == "sportcheck"){
			for(var i = 0 ; i < XMLdata.getElementsByTagName("games").length ; i++){
				if((XMLdata.getElementsByTagName("games")[i].getAttribute("sport") + "i") == item.id){
					document.getElementById(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i").checked = false;
					document.getElementById(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i").onclick();
				}
			}
		}
		if(item.className == "leaguecheck"){
			for(var i = 0 ; i < XMLdata.getElementsByTagName("games").length ; i++){
				if(XMLdata.getElementsByTagName("games")[i].getAttribute("id") == item.name){
					for(var j = 0 ; j < XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game").length; j++){
    						if(document.getElementById(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id"))){
							document.getElementById(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i").checked = false;
						}
					}
					break;
				}
			}
		}
	}
}

function details(item){
	if(loading == false){
		var matchId = item.parentNode.getAttribute("id");
		if(propertyMap[(matchId + "i")].expanded == false){
			propertyMap[(matchId + "i")].expanded = true;
			document.getElementById(matchId + "exp").className = "hidden";
			document.getElementById(matchId + "min").className = "btnHideDetails";
			document.getElementById(matchId + "d").className = "details";
			//_hbPageView('show_details_' + matchId,'/Sport/Sport/Malservice/Start');
		}
		else{
			propertyMap[(matchId + "i")].expanded = false;
			document.getElementById(matchId + "min").className = "hidden";
			if(document.getElementById(matchId + "d").innerHTML != ""){
				document.getElementById(matchId + "exp").className = "btnShowDetails";
			}
			else if(document.getElementById(matchId + "exp").className != "hidden"){
				document.getElementById(matchId + "exp").className = "hidden";
			}
			document.getElementById(matchId + "d").className = "hidden";
			//_hbPageView('hide_details_' + matchId,'/Sport/Sport/Malservice/Start');
		}
	}
}

function changeInterval(){
	if(loading == false){
		if(document.getElementById("interval").value == "null"){
			updateInterval = null;
			oldInterval = null;
			document.getElementById("counter").innerHTML = "";
			countingDown = false;
			clearTimeout(updateTimer);
		}
		else if(document.getElementById("opt" + document.getElementById("interval").value).disabled != true){
			updateInterval = document.getElementById("interval").value;
			oldInterval = updateInterval;
			countingDown = true;
			update();
		}
	}
	//_hbPageView('change_interval_' + updateInterval,'/Sport/Sport/Malservice/Start');
}

function minInterval(newMinInterval){
	var newInterval;
	if(newMinInterval > 120){
		newInterval = 300;
		document.getElementById("opt30").disabled = true;
		document.getElementById("opt60").disabled = true;
		document.getElementById("opt120").disabled = true;
		document.getElementById("opt30").style.color = "#cccccc";
		document.getElementById("opt60").style.color = "#cccccc";
		document.getElementById("opt120").style.color = "#cccccc";
		document.getElementById("opt300").selected = "selected";
	}
	else if(newMinInterval > 60){
		document.getElementById("opt30").disabled = true;
		document.getElementById("opt60").disabled = true;
		document.getElementById("opt30").style.color = "#cccccc";
		document.getElementById("opt60").style.color = "#cccccc";
		document.getElementById("opt120").disabled = false;
		document.getElementById("opt120").style.color = "#000000";
		if(newMinInterval >= oldInterval){
			newInterval = 120;
			document.getElementById("opt120").selected = "selected";
		}
		else{
			newInterval = oldInterval;
			document.getElementById("opt300").selected = "selected";
		}
	}
	else if(newMinInterval > 30){
		document.getElementById("opt30").disabled = true;
		document.getElementById("opt30").style.color = "#cccccc";
		document.getElementById("opt60").disabled = false;
		document.getElementById("opt120").disabled = false;
		document.getElementById("opt60").style.color = "#000000";
		document.getElementById("opt120").style.color = "#000000";
		if(newMinInterval >= oldInterval){
			newInterval = 60;
			document.getElementById("opt60").selected = "selected";
		}
		else{
			newInterval = oldInterval;
			document.getElementById("opt" + oldInterval).selected = "selected";
		}
	}
	else if(newMinInterval <= 30){
		document.getElementById("opt30").disabled = false;
		document.getElementById("opt60").disabled = false;
		document.getElementById("opt120").disabled = false;
		document.getElementById("opt30").style.color = "#000000";
		document.getElementById("opt60").style.color = "#000000";
		document.getElementById("opt120").style.color = "#000000";
		if(newMinInterval >= oldInterval){
			newInterval = 30;
			document.getElementById("opt30").selected = "selected";
		}
		else{
			newInterval = oldInterval;
			document.getElementById("opt" + oldInterval).selected = "selected";
		}
	}
	return newInterval;
}

function changeMode(option){
	var started = false;
	var selectedSports = new Array();
	var spo = 0;
	var activeLeagues = new Array();
	var act = 0;
	if(loading == false){
		if(document.getElementById(option.id + "Off").className == "active"){
			if(option.id == "inProgress"){
				alert("Inga matcher pågår för närvarande.");
			}
			if(option.id == "select"){
				alert("Du har inte valt några matcher.");
			}
		}
		else if(mode != option.id){
			document.getElementById(mode + "Active").className = "inactive";
			document.getElementById(mode + "On").className = "active";
			document.getElementById(option.id + "On").className = "inactive";
			document.getElementById(option.id + "Active").className = "active";
			mode = option.id;
			if(mode == "all"){
				for(var s = 0 ; s < sports.length ; s++){
					if(propertyMap[(sports[s] + "i")].active == false){
						propertyMap[(sports[s] + "i")].active = true;
						document.getElementById(sports[s]).className = "ms_sport";
					}
					else{
						document.getElementById(sports[s]).className = "hidden";
						document.getElementById(sports[s]).className = "ms_sport";
					}
				}
				for(var i = 0 ; i < XMLdata.getElementsByTagName("games").length ; i++){
					activeLeagues[act] = XMLdata.getElementsByTagName("games")[i];
					act++;
					if(propertyMap[(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i")].active == false){
						propertyMap[(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i")].active = true;
						document.getElementById(XMLdata.getElementsByTagName("games")[i].getAttribute("id")).className = "collection";
					}
					for(var j = 0 ; j < XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game").length ; j++){
						if(propertyMap[(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i")].active == false){
							propertyMap[(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i")].active = true;
							document.getElementById(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id")).className = "game";
						}
						if(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getElementsByTagName("status")[0].childNodes[0].nodeValue == "STARTED"){
							started = true;
						}
					}
				}
			}
			else if(mode == "inProgress"){
				started = true;
				var sportFound = false;
				for(var i = 0 ; i < XMLdata.getElementsByTagName("games").length ; i++){
					var matchFound = false;
					for(var j = 0 ; j < XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game").length ; j++){
						if(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getElementsByTagName("status")[0].childNodes[0].nodeValue == "STARTED"){
							matchFound = true;
							propertyMap[(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i")].active = true;
							document.getElementById(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id")).className = "game";
						}
						else{
							propertyMap[(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i")].active = false;
							document.getElementById(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id")).className = "hidden";
						}
					}
					if(matchFound == false){
						propertyMap[(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i")].active = false;
						document.getElementById(XMLdata.getElementsByTagName("games")[i].getAttribute("id")).className = "hidden";
					}
					else{
						propertyMap[(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i")].active = true;
						document.getElementById(XMLdata.getElementsByTagName("games")[i].getAttribute("id")).className = "collection";
						activeLeagues[act] = XMLdata.getElementsByTagName("games")[i];
						act++;
						sportFound = false;
						for(var s = 0 ; s < selectedSports.length ; s++){
							if(selectedSports[s] == XMLdata.getElementsByTagName("games")[i].getAttribute("sport")){
								sportFound = true;
							}
						}
						if(sportFound != true){
							selectedSports[spo] = XMLdata.getElementsByTagName("games")[i].getAttribute("sport");
							spo++;
						}
					}
				}
				for(var r = 0 ; r < sports.length ; r++){
					sportFound = false;
					for(var s = 0 ; s < selectedSports.length ; s++){
						if(sports[r] == selectedSports[s]){
							sportFound = true;
							document.getElementById(sports[r]).className = "ms_sport";
							propertyMap[(sports[r] + "i")].active = true;
							break;
						}
					}
					if(sportFound == false){
						document.getElementById(sports[r]).className = "hidden";
						propertyMap[(sports[r] + "i")].active = false;
					}
				}
			}
			else if(mode == "select"){
				for(var i = 0 ; i < XMLdata.getElementsByTagName("games").length ; i++){
					if(propertyMap[(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i")].selected == true){
						propertyMap[(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i")].active = true;
						document.getElementById(XMLdata.getElementsByTagName("games")[i].getAttribute("id")).className = "collection";
						activeLeagues[act] = XMLdata.getElementsByTagName("games")[i];
						act++;
					}
					else{
						propertyMap[(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i")].active = false;
						document.getElementById(XMLdata.getElementsByTagName("games")[i].getAttribute("id")).className = "hidden";
					}
					for(var j = 0 ; j < XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game").length ; j++){
						if(propertyMap[(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i")].selected == true){
							propertyMap[(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i")].active = true;
							document.getElementById(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id")).className = "game";
						}
						else{
							propertyMap[(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i")].active = false;
							document.getElementById(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id")).className = "hidden";
						}
						if(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getElementsByTagName("status")[0].childNodes[0].nodeValue == "STARTED"){
							started = true;
						}
					}
				}
				for(var s = 0 ; s < sports.length ; s++){
					if(propertyMap[(sports[s] + "i")].selected == true){
						propertyMap[(sports[s] + "i")].active = true;
						document.getElementById(sports[s]).className = "ms_sport";
					}
					else{
						propertyMap[(sports[s] + "i")].active = false;
						document.getElementById(sports[s]).className = "hidden";
					}
				}
			}
			if(started == false){
				document.getElementById("inProgressOn").className = "inactive";
				document.getElementById("inProgressOff").className = "active";
			}
			for(var i = 0 ; i < activeLeagues.length ; i++){
				setBackgroundColour(activeLeagues[i]);
			}
			if(countingDown == true){
				update();
			}
		}
		//_hbPageView('change_view_' + mode,'/Sport/Sport/Malservice/Start');
	}
}

function detach(){
	if(loading == false){
		var checkedSports = new Array();
		var toSelect = new Array();
		var spo = 0;
		var se = 0;
		var colLength;
		var matchCount;
		var selectedSports = new Array();
		var nos = 0;
		var numberOfLeagues = 0;
		var chosen = false;
		for(var s = 0 ; s < sports.length ; s++){
			if(document.getElementById(sports[s] + "i").checked == true){
				document.getElementById(sports[s] + "i").checked = false;
			}
		}
		for(var i = 0 ; i < XMLdata.getElementsByTagName("games").length ; i++){
			var matchFound = false;
			if(propertyMap[(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i")].active == true){
				if(document.getElementById(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i").checked == true){
					document.getElementById(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i").checked = false;
				}
				for(var j = 0 ; j < XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game").length ; j++){
					if(propertyMap[(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i")].active == true){
						if(document.getElementById(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i").checked == true){
							matchFound = true;
							document.getElementById(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i").checked = false;
							toSelect[se] = XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id");
							se++;
						}
					}
				}
			}
			if(matchFound == true){
				numberOfLeagues++;
				var sportFound = false;
				for(var t = 0 ; t < selectedSports.length ; t++){
					if(selectedSports[t] == XMLdata.getElementsByTagName("games")[i].getAttribute("sport")){
						sportFound = true;
					}
				}
				if(sportFound == false){
					selectedSports[nos] = XMLdata.getElementsByTagName("games")[i].getAttribute("sport");
					nos++;
				}
			}
		}
		if(toSelect[0] == null){
			alert("Du har inte valt några matcher.");
		}
		else{
			var maxHeight = 600;
			var sportHeight = 32;
			var leagueHeight = 20;
			var matchHeight = 17;
			var popUpHeight = 177 + selectedSports.length * sportHeight + numberOfLeagues * leagueHeight + toSelect.length * matchHeight;
			var popUpWidth = 667;
			if(popUpHeight > 600){
				popUpHeight = 600;
				popUpWidth = 667;
			}
			var url = "/webbproduktioner/sport/liveresult/webbresult/malservicePopUp.jsp";
			url = url + "?ms=" + toSelect;
			if(se > 1){
				for(var t = 1 ; t < toSelect ; t++){
					url = url + "," + toSelect[t];
				}
			}
			popUp = window.open(url,"detached","resizable=yes,scrollbars=yes,height=" + popUpHeight + ",width=" + popUpWidth + "");
		}
	}
	//_hbPageView('select_new_window','/Sport/Sport/Malservice/Start');
}

function parseQueryString(){
	if(document.URL.indexOf('?') != -1){
		var qPos = document.URL.indexOf('?');
		var qString = document.URL.substr(qPos + 1);
		if(qString.indexOf("ms=") != -1){
			var matchParam = /,/;
			var selectedSports = new Array();
			var selectedLeagues = new Array();
			var spo = 0;
			var lea = 0;
			qString = qString.substring((qString.indexOf("ms=") + 3), (qString.length));
			if(qString.indexOf("&") != -1){
				qString = qString.substring(0, qString.indexOf("&"));
			}
			sportParams = qString.split(matchParam);
			for(var i = 0 ; i < XMLdata.getElementsByTagName("games").length ; i++){
				var leagueFound = false;
				var matchCount = 0;
				var leagueToSort = false;
				for(var j = 0 ; j < XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game").length ; j++){
					var matchFound = false;
					for(var k = 0 ; k < sportParams.length ; k++){
						if(sportParams[k] == XMLdata.getElementsByTagName("games")[i].getAttribute("id")){
							leagueFound = true;
							break;
						}
						else if(sportParams[k] == XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id")){
							matchFound = true;
							matchCount++;
							propertyMap[(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i")].selected = true;
							break;
						}
					}
					if(matchFound == true || leagueFound == true){
						leagueToSort = true;
					}
					if(leagueFound == true){
						break;
					}
					if(matchFound == false && leagueFound == false){
						propertyMap[(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i")].active = false;
						document.getElementById(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id")).className = "hidden";
					}
				}
				if(leagueToSort == true){
					selectedLeagues[lea] = XMLdata.getElementsByTagName("games")[i];
					lea++;
				}
				if(leagueFound == false && matchCount == 0){
					propertyMap[(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i")].active = false;
					document.getElementById(XMLdata.getElementsByTagName("games")[i].getAttribute("id")).className = "hidden";
				}
				else{
					propertyMap[(XMLdata.getElementsByTagName("games")[i].getAttribute("id") + "i")].selected = true;
					if(matchCount == 0){
						for(var j = 0 ; j < XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game").length ; j++){
							propertyMap[(XMLdata.getElementsByTagName("games")[i].getElementsByTagName("game")[j].getAttribute("id") + "i")].selected = true;				
						}
					}
					for(var s = 0 ; s < selectedSports.length ; s++){
						var sportFound = false;
						if(selectedSports[s] == XMLdata.getElementsByTagName("games")[i].getAttribute("sport")){
							sportFound = true;
							break;
						}
					}
					if(sportFound != true){
						selectedSports[spo] = XMLdata.getElementsByTagName("games")[i].getAttribute("sport");
						spo++;
					}
				}
			}
			for(var l = 0 ; l < selectedLeagues.length ; l++){
				setBackgroundColour(selectedLeagues[l]);
			}
			for(var r = 0 ; r < sports.length ; r++){
				var sportFound = false;
				for(var s = 0 ; s < selectedSports.length ; s++){
					if(sports[r] == selectedSports[s]){
						sportFound = true;
						propertyMap[sports[r] + "i"].selected = true;
						break;
					}
				}
				if(sportFound == false){
					propertyMap[sports[r] + "i"].active = false;
					document.getElementById(sports[r]).className = "hidden";
				}
			}
			document.getElementById("allActive").className = "inactive";
			document.getElementById("allOn").className = "active";
			document.getElementById("selectActive").className = "active";
			document.getElementById("selectOff").className = "inactive";
			mode = "select";
		}
	}
	return;
}

function plingOnOff(){
	if(pling){
		pling = false;
		document.getElementById("btnSoundOn").className = "visible";
		document.getElementById("btnSoundOff").className = "hidden";
		//_hbPageView('pling_off','/Sport/Sport/Malservice/Start');
	}
	else{
		pling = true;
		document.getElementById("btnSoundOff").className = "visible";
		document.getElementById("btnSoundOn").className = "hidden";
		//_hbPageView('pling_on','/Sport/Sport/Malservice/Start');
	}
}

function playPling(soundObj){
	var sound = eval("document.getElementById('plingSound')");
	try{
		sound.Play();
	}
	catch(e){
		try{
			sound.DoPlay();
		}
		catch(e){
			document.embeds[0].play();
			alert("ljud");
		}
	}
	return;
}

function popUpHelp(){
	var url = "/webbproduktioner/sport/liveresult/webbresult/help.html";
	var helpWindow = window.open(url,"help","toolbar=no,location=no,directories=no,status=yes,menubar=no,resizable=yes,scrollbars=yes,height=400,width=300");
	//_hbPageView('show_help','/Sport/Sport/Malservice/Start');
}

function showTime(timeStamp){
	var time = timeStamp.slice(11,16);
	document.getElementById("time").innerHTML = time;
}
