var __hasTableLiveGrid = false;
var __cacheMark = { data: [] };
var __cacheIDsHolder = {};
var __tourGUID = null;
var __isTeam = false;
var __isFinal = false;
var __isHoleByHole = false;
var __imgFoldsTrigger = [];
var __speed = 'normal';
var __isSafari = (/safari/ig.test(navigator.userAgent));
var __grp = '';
var __lang = '';

var __colors = ['#dad46d', '#aac489', '#84ba9e', '#94a1bf', '#6bbdd4',
				'#ece9b6', '#d4e1c4', '#c1dcce', '#c9d0df', '#b5dee9'];

function iMark(teamGUID) {
	this.TeamGUID = teamGUID;
	this.NewColor = -1;
	this.IsFolded = false;
}

function removeHTML(txt, tag) {
	var re = new RegExp('(<' + tag + '([^>]+)>)', 'ig');
	return txt.replace(re, '');
}

function getMarkItem(teamGUID) {
	var result = null;
	$.each(__cacheMark.data, function() {
		if (this.TeamGUID == teamGUID) {
			result = this;
			return false;
		}
	});
	return result;
}

function getMarkColor(mark, increase) {
	if (increase) {
		if (mark.NewColor >= 5)
			mark.NewColor = 0;
		else
			mark.NewColor++;
	}

	return [__colors[mark.NewColor], __colors[mark.NewColor + 5]];
}

function saveMarkToCookie() {
	var s = [];
	$.each(__cacheMark.data, function() {
		s.push(shortGuid(this.TeamGUID) + ':' + this.NewColor.toString() + ':' + ((this.IsFolded) ? '1' : '0'));
	});

	if (__isSafari) {
		if (s.length > 0) {
			$.post('/app_livescoring/_cacheMark.asp?callback=?', { cacheName: 'cacheMark' + shortGuid(__tourGUID)  + __grp, cacheValue: s.join(','), cacheExpires: 3 }, function(data){ });
		}
	} else {
		if (s.length > 0) {
			$.cookie('cacheMark' + shortGuid(__tourGUID) + __grp, s.join(','), { expires: 3, path: '/' });
		}
	}
}

function expandScore(guid) {
	var tr = $('#' + guid);
	var imgFold = tr.find('img[src*="leftmenu"]');
	var imgFlag = tr.find('img[src*="flagMark"]');
	var m = getMarkItem(guid);

	if (imgFold.attr('src') == '/images/menu/shared/leftmenu_plus_off.gif') {
		imgFold.attr({ src: '/images/menu/shared/leftmenu_minus_off.gif' });

		var preLoad = $('<tr>' +
							'<td align="center" colspan="' + tr.children().length + '" class="fold">' +
								'<img src="/images/shared/loader/indicator.gif" width="16" height="16" alt="" border="0" />' +
							'</td>' +
						'</tr>').insertAfter(tr);
		preLoad.children()
			.css({
				borderLeft: '1px solid ' + tr.css('background-color'),
				borderRight: '1px solid ' + tr.css('background-color'),
				borderBottom: '1px solid ' + tr.css('background-color')
			})
			.fadeIn(__speed, function() {
				$.ajax({
					type: 'GET',
					url: '_scorecard.asp',
					data: { tour: __tourGUID, guid: '{' + guid + '}', lang: __lang, isFinal: (__isFinal) ? 1 : 0, isTeam: (__isTeam) ? 1 : 0 },
					dataType: 'html',
					error: function(xmlHttp, textStatus, errorThrown) {
						preLoad.children()
						.css({ color: '#ff0000', padding: '1em' })
						.attr({ align: 'left' })
						.html('<b>ERROR!</b><br />' + xmlHttp.responseText);
					},
					success: function(data, textStatus) {
						preLoad.children().children().fadeOut(__speed, function() {
							preLoad.children().children().remove();

							var dt = $(removeHTML(data, 'hr'));

							if (m)
								dt.find('.row1, .row2').css({ color:'black', backgroundColor: getMarkColor(m, false)[1] });
							else
								dt.find('.row1, .row2').css({ color: tr.css('color'), backgroundColor: tr.css('background-color') });

							dt.appendTo(preLoad.children()).fadeIn(__speed, function() {
								alertParent();
							});
						});
					}
				});
			});

		if (m) m.IsFolded = true;
	} else if (imgFold.attr('src') == '/images/menu/shared/leftmenu_minus_off.gif') {
		imgFold.attr({ src: '/images/menu/shared/leftmenu_plus_off.gif' });

		tr.next().children().fadeOut(__speed, function() {
			tr.next().remove();
		});

		if (m) m.IsFolded = false;
	}

	if (m) saveMarkToCookie();
}

function alertParent() {
	try {
		window.parent.postMessage(window.location.href + 'height/width:' + (document.getElementsByTagName('table')[0].clientHeight) + "," + ( document.getElementsByTagName('table')[0].clientWidth ), origin);
	} catch(err) {
		//shh!
	}
}

function highlightMark(guid, increaseNewColor) {
	var tr = $('#' + guid);
	var imgFold = tr.find('img[src*="leftmenu"]');
	var imgFlag = tr.find('img[src*="flagMark"]');
	var m = getMarkItem(guid);
	var increase = (typeof increaseNewColor === 'undefined') ? true : increaseNewColor;

	if (m) {
		imgFlag.attr({ src: '/images/livescoring/flagMark_On.gif' });
		tr.css({ color:'black', backgroundColor: getMarkColor(m, increase)[0] });
		tr.next().children().find('.row1, .row2').css({ color:'black', backgroundColor: getMarkColor(m, false)[1] });

		if (m.NewColor >= 5) {
			// Regenerator cache
			var newCache = { data: [] };
			$.each(__cacheMark.data, function() {
				if (this.TeamGUID == m.TeamGUID)
					return true;
				newCache.data.push(this);
			});
			__cacheMark = newCache;

			imgFlag.attr({ src: '/images/livescoring/flagMark_Off.gif' });

			var tmpColor = (tr.attr('class') == 'row1') ? '#f2f0e0' : '#dbdbdb';

			tr.css({ color:'black', backgroundColor: tmpColor });
			tr.next().children().find('.row1, .row2').css({ color:tr.css('color'), backgroundColor: tr.css('background-color') });
		}
	} else {
		// Add new mark to cache
		var iMrk = new iMark(guid);

		if (imgFold)
			iMrk.IsFolded = /minus/ig.test(imgFold.attr('src'));

		__cacheMark.data.push(iMrk);

		imgFlag.attr({ src: '/images/livescoring/flagMark_On.gif' });
		tr.css({ color:'black', backgroundColor: getMarkColor(iMrk, increase)[0] });

		if (imgFold && imgFold.attr('src') == '/images/menu/shared/leftmenu_minus_off.gif')
			tr.next().children().find('.row1, .row2').css({ color:'black', backgroundColor: getMarkColor(iMrk, false)[1] });
	}

	saveMarkToCookie();

	if (imgFold && imgFold.attr('src') == '/images/menu/shared/leftmenu_minus_off.gif') {
		tr.next().children().css({
			borderLeft: '1px solid ' + tr.css('background-color'),
			borderRight: '1px solid ' + tr.css('background-color'),
			borderBottom: '1px solid ' + tr.css('background-color')
		});
	}
}

function getColor(elem, attr) {
	var color;
	do {
		color = $.curCSS(elem, attr);
		if (color != '' && color != 'transparent' || $.nodeName(elem, 'body'))
			break;
		attr = 'backgroundColor';
	} while (elem = elem.parentNode);
	return color;
}

function preRender_LiveGrid() {
	$.each(__cacheMark.data, function() {
		highlightMark(this.TeamGUID, false);

		if (this.IsFolded)
			expandScore(this.TeamGUID);
	});

	preRender_SelectRoundHolder();
	preRender_Ellipsis();
}

function preRender_Ellipsis() {
	var ellipsis = $('.ellipsis');
	if ($.browser.msie == false) {
		ellipsis.each(function(i, elem) {
			var e = $(elem);
			var t = e.text();
			var wbr = e.html().replace(t, t.split('').join('<wbr />'));
			e.html(wbr);
		});
	}

	var arr = [];

	ellipsis.each(function(i, elem) {
		var e = $(elem);
		e.attr({ title: e.text() });

		if (e.parent().get(0).tagName.toUpperCase() == 'A') {
			e.css({ cursor: 'pointer' });
		}

		arr.push(e, e.innerWidth());
	});

	for (var i = 0; i < arr.length; i += 2) {
		if ($.browser.safari) { 
			arr[i].width(arr[i + 1] - 17);
		} else {
			arr[i].width(arr[i + 1]);
		}
	}

	ellipsis.removeClass('ellipsis');
	ellipsis.addClass('ellipsis_loaded');
	ellipsis.find('wbr').remove();
}

function preRender_SelectRoundHolder() {
	if ($('#formSelectRoundHolder') && $('#roundHolder')) {
		var rh = $('#roundHolder');
		var srh = $('#formSelectRoundHolder');
		srh.appendTo(rh)
	}
}

function shortGuid(guid) {
	return guid.toLowerCase().replace(/[^a-z0-9]/g, '').substr(20);
}

var firstTimeSession = 0;
function submitSessionForm() {
	if (firstTimeSession == 0) {
		firstTimeSession = 1;
		if (__isSafari) {
			$('#LSsessionForm').submit();
		}
	}
}

function querySt(ji) {
	var hu = window.location.search.substring(1);
	var gy = hu.split('&');
	for (var i = 0; i < gy.length; i++) {
		var ft = gy[i].split('=');
		if (ft[0] == ji) {
			return ft[1];
		}
	}
	return null;
}

$(function() {
	$('tr.row1, tr.row2').each(function() {
		if (this.id.length == 36) {
			__cacheIDsHolder[shortGuid(this.id)] = this.id;
		}
	});

	if (querySt('grp') != null) {
		__grp = querySt('grp');
	}

	if ($.cookie('cacheMark' + shortGuid(__tourGUID) + __grp) == null) {
		saveMarkToCookie();
	} else {
		var s = $.cookie('cacheMark' + shortGuid(__tourGUID) + __grp).split(',');

		for (var i = 0; i < s.length; i++) {
			var n = s[i].split(':');
			var m = new iMark(__cacheIDsHolder[n[0]]);

			m.NewColor = parseInt(n[1]);
			m.IsFolded = (n[2] == '1') ? true : false;
			__cacheMark.data.push(m);
		}
	}
});
