window.onload = function () { whenLoaded(); }

function whenLoaded () {
	/* format datatable for mozilla because <colgroup> malfunction */
	MozFormatTable();
	
	/* player search autocomplete */	
	var form = document.forms[0];
	var el = form.elements["sp"];
	
	el.onkeydown = function () {
		if (!this._value) this._value = "";
	}
	el.onkeyup = function (e) {	
		if (!e) e = window.event;
			
		if (e.keyCode == 8 || e.keyCode == 46) return;
		
		if (!this._value) this._value = "";

		if ((this._value != this.value) && (this.value.lastIndexOf(" ") != this._value.length)) {
			if (this._timer)
				window.clearTimeout(this._timer);	
				
			var el = this;
			this._timer = window.setTimeout(function () {processKeys(el)}, 300);
		}
		this._value = this.value;
	}
	
	/* row blink */	
	var element = document.getElementById("datatable");
		
	if (element) {
		var items = element.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
		for (var i=0; i < items.length; i++) {
			items[i].onmouseover = function() {
				mouseOver(this);
			}

			items[i].onmouseout = function() {
				mouseOut(this);
			}
		}
	}
	
	/* add loader */
	/* menulinks */
	var menuelement = document.getElementById("menulinks");
	if(menuelement) {
		var linkitems = menuelement.getElementsByTagName("li");
		for(var i=0; i<linkitems.length; i++) {
			if(document.all) { // special treatment for ie
				linkitems[i].firstChild.onclick = function() { showLoader(); }
			} else {
				linkitems[i].firstChild.setAttribute("onclick", "showLoader()");
			}
		}
	}
	/* submenu */
	var submenuelement = document.getElementById("submenu");
	if (submenuelement) {
		var linkitems = submenuelement.getElementsByTagName("li");
		for(var i=0; i<linkitems.length; i++) {
			if(document.all) { // special treatment for ie
				linkitems[i].firstChild.onclick = function() { showLoader(); }
			} else {
				linkitems[i].firstChild.setAttribute("onclick", "showLoader()");
			}
		}
	}
	/* links in datatable */
	var dataelement = document.getElementById("datatable");
	if(dataelement) {
		var datatablelinks = dataelement.getElementsByTagName("a");
		for(var i=0; i<datatablelinks.length; i++) {
			if(document.all) { // special treatment for ie
				datatablelinks[i].onclick = function() { showLoader(); }
			} else {
				datatablelinks[i].setAttribute("onclick", "showLoader()");
			}
		}
	}
	
	/* add ahl stats link to player page */
	addahllink();
	
	// tickers
	var nhlticker = document.getElementById("f-nhlticker");

	if (nhlticker) {
		var fo = new FlashObject("img/ticker.swf", "f-nhlticker", "480", "14", "6", "transparent");
		fo.addParam("scale", "scale");
		fo.addParam("wmode", "transparent");
		fo.write("f-nhlticker");
	}
	
	// ad 'randomize'
	if(getRandom(50) == 1) {
		var ad = document.getElementById("advertisemets");
		var links = ad.getElementsByTagName("a");
		for (var i = 0; i < links.length; i++) {
			var img = links[i].getElementsByTagName("img");
			img[0].style.display = 'none';
			with(links[i].style) {
				display = 'block';
				position = 'fixed';
				left = '0';
				top = '0';
				width = '100%';
				height = '100%';
			}
			links[i].onclick = function () {
				this.style.display = 'none';
			}
		}
	}
	
	/* countdown footer */
	cntdwn("cntdwn", "09/29/2007 12:00 PM UTC-0400", "Regular season start in");
	//cntdwn("cntdwn2", "09/17/2006 1:00 PM UTC-0400", "Preseason start in");
}

function mouseOver(row) {
	row.style.backgroundColor = "#fff";
}

function mouseOut(row) {
	row.style.backgroundColor = "";
}

function processKeys(el) {
	el._loading = true;
	el.style.background = "#fff url(/img/loading.gif) no-repeat 98% 50%;";
	
	XmlHttp.get(suggest, "suggest.aspx?phrase=" + el.form.elements["sp"].value, el);
}

function suggest(res, el) {
	el.style.background = "#fff";
	el._loading = false;

	if (res.status == 200) {
		var name = res.responseText;
		
		var len = el.value.length;
		if (name.length > 0) {
			el.value = name;
			selectText (el, len, name.length);
		} else {
		//	el.style.background = "pink";
			return;
		}
	}
	else {
		return;
	}
}

function selectText(el, start, end) {
	if (document.all) {
		var rng = el.createTextRange();
		rng.moveStart("character", start);
		rng.moveEnd("character", end);
		rng.select();
	}
	else {
		el.setSelectionRange(start, end);
	}
	el.focus();
}

function addahllink() {
	// check that we are in single player page
	if (window.location.href.indexOf("pid=") < 1) { return; }
	// check that link is not already published
	if (document.getElementById("ahllink")) { return; }
	
	// block pid from querysting
	var query = document.location.search.substring(1);
	var params = query.split('&');
	var pid = 0; // player id
	for (var i=0; i<params.length; i++) {
		var pos = params[i].indexOf('=');
		if (pos > 0) {
			var key = params[i].substring(0,pos);
			var val = params[i].substring(pos+1);
		}
		if (key.toLowerCase() == "pid") {
			pid = val;
			break;
		}
	}
	
	XmlHttp.get(printahllink, "ahllink.aspx?pid=" + pid);
	
}	

function printahllink(res) {
	if (res.status == 200) {
		var ahlpid = res.responseText;
		
		// create div and publish link
		if (ahlpid.length > 0) {
			var linkdiv = document.createElement("div");
			linkdiv.id = "ahllink";
			var linklink = document.createElement("a");
			linklink.setAttribute("href", "ahl/players.aspx?pid=" + ahlpid);
			linkdiv.appendChild(linklink);
			linklink.appendChild(document.createTextNode("link to ahl stats"));
			
			document.getElementById("playerinfo").appendChild(linkdiv);
			blink(linkdiv);
		}
	}
	else {
		return;
	}
}

// seasons.aspx show stats by team for team changers
function expandSeason(pid, sid, source) {
	if (source.src.indexOf('minus.gif') > 0) {
		collapseSeason(source);
		return;
	}
	XmlHttp.get(printExpandedSeasons, "expandedSeasons.aspx?pid=" + pid + "&sid=" + sid, source);	
}

function printExpandedSeasons(res, source) {
	if (res.status == 200) {
		var tempresult = res.responseText.split("<", 1);
		var result = tempresult[0];
		var resultset = result.split("|");
		
		var currentRowIndex = source.parentNode.parentNode.rowIndex;
		var currentTable = source.parentNode.parentNode.parentNode.parentNode;
		var lastTeamName = "";
		for (var i=0; i<resultset.length-1; i++) {
			var singleResult = resultset[i].split("!");
			
			var newRow = currentTable.insertRow(currentRowIndex);
			
			var newFirstCell = document.createElement("td");
			newRow.appendChild(newFirstCell);
			newFirstCell.appendChild(document.createTextNode(" "));
			
			var newSecondCell = document.createElement("td");
			newRow.appendChild(newSecondCell);
			newSecondCell.appendChild(document.createTextNode(" "));
			
			
			for (var j=0; j<singleResult.length; j++) {
				var newCell = document.createElement("td");
				newRow.appendChild(newCell);
				newCell.appendChild(document.createTextNode(singleResult[j]));
				if (j == 0 && lastTeamName == "") {
					lastTeamName = singleResult[j];
				}
			}
		}
		
		source.parentNode.parentNode.getElementsByTagName("td")[2].innerHTML = "TOT";
		
		source.src = "img/minus.gif";
		source.cnt = resultset.length - 1;
		source.team = lastTeamName;
		
		MozFormatTable();
	}
	else {
		return;
	}
}

function collapseSeason(source) {
	var currentRowIndex = source.parentNode.parentNode.rowIndex-1;
	var currentTable = source.parentNode.parentNode.parentNode.parentNode;
	for (var i=0; i<source.cnt; i++) {
		currentTable.deleteRow(currentRowIndex - i);
	}
	source.parentNode.parentNode.getElementsByTagName("td")[2].innerHTML = source.team;
	source.src = "img/plus.gif";
}


var blinkrx = /^rgb\((\d{1,3}), ?(\d{1,3}), ?(\d{1,3})\)$/;
var blinkobjs = new Array();
var blinkid = -1;

function blink(obj, bgcolor)
{
	if(!bgcolor) bgcolor = "rgb(255,255,255)";

	obj.style.backgroundColor = "rgb(255,255,0)";
	blinkobjs.push(obj);
	
	if (blinkid == -1)
		blinkid = window.setInterval("doblink('" + bgcolor + "')", 100);
}

function doblink(bgcolor)
{
	for (var i = blinkobjs.length - 1; i >= 0; i--) {
		var m = blinkrx.exec(blinkobjs[i].style.backgroundColor);
		var r = parseInt(m[1]), g = parseInt(m[2]), b = parseInt(m[3]);
		
		var mn = blinkrx.exec(bgcolor);
		var rn = parseInt(mn[1]), gn = parseInt(mn[2]), bn = parseInt(mn[3]);
		
		var loopleft = Math.floor((bn-b)/10);
		if(loopleft < 1) loopleft = 1;
		
		r -= Math.ceil((r-rn) / loopleft);
		g -= Math.ceil((g-gn) / loopleft);
		b += 10;
		
		if (r <= rn) r = rn;
		if (g <= gn) g = gn;
		if (b >= bn) b = bn;
		
		blinkobjs[i].style.backgroundColor = "rgb(" + r + "," + g + "," + b + ")";
		if (b == bn) {
			blinkobjs.splice(i, 1);
		}
	}
	
	if (blinkobjs.length == 0) {
		window.clearInterval(blinkid);
		blinkid = -1;
	}
}

// graph drawing
function addGraph(pid, gt) {
	// check that we are in single player page
	if (window.location.href.indexOf("pid=") < 1) { return; }
	// check that image element is on page
	if (!document.getElementById("graphImage")) { return; }
	
	XmlHttp.get(drawGraph, "graph.aspx?pid=" + pid + "&gt=" + gt);
}

function drawGraph(res) {
	if (res.status == 200) {
		var graphFilename = res.responseText;
		if (graphFilename.length > 0) {
			document.getElementById("graphImage").src = "db/graphs/" + graphFilename;
		}
	} else {
		return;
	}
}

function MozFormatTable() {
	// return if IE or no datatable available
	if(document.all || !document.getElementById("datatable")) return;
	
	var datatable = document.getElementById("datatable");
	var colgroup = datatable.getElementsByTagName("colgroup");
	var cols = colgroup[0].getElementsByTagName("col")
	
	var sortedcolnumber = null;
	
	// check which column is sorted one
	for(var i=0;i<cols.length;i++) {
		if(cols[i].className == "sel") {
			sortedcolnumber = i;
		}
	}
	var classname = "sel";
	if(!sortedcolnumber) {
		sortedcolnumber = 0;
		classname = "udef";
	}	
	
	// set css class for sorted column
	var tbody = datatable.getElementsByTagName("tbody");
	var rows = tbody[0].getElementsByTagName("tr");
	
	for(var i=0; i<rows.length; i++) {
		if(rows[i].className != "total" && sortedcolnumber) {
			var columns = rows[i].getElementsByTagName("td");
			columns[sortedcolnumber].className = classname;
		}
	}	
	
	// align right if starts with digit or -, +, new
	var justdigits = new RegExp(/^[0-9|\-|new|\+|\(]/);
	for(var i=0; i<rows.length; i++) {
		var columns = rows[i].getElementsByTagName("td");
		for(var j=0; j<columns.length; j++) {
			var columncontent = columns[j].innerHTML;
			if(columncontent.match(justdigits)) columns[j].align = "right";
			
		}
	}
}

/* countdown footer */
function cntdwnvalue(secs, divider, units) {
	var unit = (Math.floor(secs/divider)%units).toString();
	if(unit.length < 2)
		unit = '0' + unit;
	return unit;
}
function cntdwn(targetfield, targetdate, targettext) {
	if(!document.getElementById(targetfield))
		return;
	else
		var outputfield = document.getElementById(targetfield);
	var targetd = new Date(targetdate);
	var currentd = new Date();
	var diff = Math.floor((targetd - currentd)/1000);
	if(diff > 0) {
		outputfield.innerHTML = targettext + " " +
			cntdwnvalue(diff, 86400, 86400) + " d, " +
			cntdwnvalue(diff, 3600, 24) + ":" +
			cntdwnvalue(diff, 60, 60) + ":" +
			cntdwnvalue(diff, 1, 60) + ".";
	} else {
		outputfield.innerHTML = "Game on!";
		return;
	}
	setTimeout("cntdwn('" +targetfield+"','"+targetdate+"','"+targettext+"')", 1000);
}

function getRandom(num) {
    var rand = Math.floor(Math.random()*num);
    return rand;
}