// Globals
var hiddenRows = "";
var hiddenCols = "";
var lowlightedRows = "";
var highlightedRows = "";
var highlightedOnly = "";
var maskLowlighted = "";
var sortorder = "";			// primary sort
var sortcol = "";			// primary sort
var sortorderlast = "";		// secondary sort
var sortcollast = "";		// secondary sort
var filters = "";
var currcode = "";
var currcol = "";
var currcolID = "";

function showHelp() {
	document.getElementById("infowrap").innerHTML = document.getElementById("intro").innerHTML;
	showdeadcenterdiv("600","350","defaultleft","infoframe");
	}
	
function showInfo(casinocode) {
	document.getElementById('infowrap').innerHTML = "Loading data...";
	window.iframe.location.href = "/info.php?casino="+casinocode;
	showdeadcenterdiv("600","300","defaultleft","infoframe");
	}

function columnNotes(colID) {
	if (!colID) {
		colID = currcolID;
		}
	document.getElementById('infowrap').innerHTML = "Loading notes...";
	window.iframe.location.href = "/columnnotes.php?columnID="+colID;
	showdeadcenterdiv("600","400","defaultleft","infoframe");
	}
	
function hideInfo() {
	document.getElementById('infoframe').style.display = "none";
	window.iframe.location.href = "/blank.php";
	}
	 
function revealList() {
	document.getElementById('infowrap').innerHTML = "";
	document.getElementById('wrap').style.display = "block";
	}
	
function sortData(col,order) {
	if (!col) { col = currcol; }
	// Save variables for bookmarking
	sortorder = order;			// primary sort
	sortcol = col;				// primary sort
	document.getElementById("waitmessage").innerHTML = "Querying database...";
	showdeadcenterdiv("200","20","350","waitmessage");
	// hiddenCols amd hiddenRows are populated by functions toggleCol() and toggleRow()
	window.iframe.location.href = "/getdata.php?order="+sortorder+"&col="+sortcol+"&sorder="+sortorderlast+"&scol="+sortcollast+"&f="+filters+"&hionly="+highlightedOnly+"&hidelo="+maskLowlighted+"&hrows="+hiddenRows+"&hcols="+hiddenCols+"&lorows="+lowlightedRows+"&hirows="+highlightedRows;
	setTimeout("refreshMessage('Formating data. Please wait...')", 1000);
	}
	
function sendDataToParent(fromDiv,toDiv) {
	parent.document.getElementById("waitmessage").style.display = "none";
	parent.document.getElementById(toDiv).innerHTML = document.getElementById(fromDiv).innerHTML;
	}
	
function gotoPage() {
	var page = document.boxes.pages.options[document.boxes.pages.selectedIndex].value;
	if (page) {
		window.location.href = page;
		}
	}
	
function applyFilter(filter) {
	// Counter dropdown box toggle
	if (!filter) {
		filter = document.boxes.filters.options[document.boxes.filters.options.selectedIndex].value;
		}
	if (filter.substr(0,1) == "b") {
		var filtertype = "bonus";
		}
	else if (filter.substr(0,1) == "c") {
		var filtertype = "USA";
		}
	else if (filter.substr(0,1) == "m") {
		var filtertype = "recommendations";
		}
	else if (filter.substr(0,1) == "r") {
		var filtertype = "reverse";
		}
	else if (filter.substr(0,1) == "s") {
		var filtertype = "software";
		}
	else if (filter.substr(0,1) == "w") {
		var filtertype = "cashout";
		}
		
	// Add/Remove from stored variable "filters" unless using highlights
	if (filter == "highlight") {
		showHighlighted();
		}
	else if (filter == "hidelowlight") {
		hideLowlighted();
		}
	else if (filter == "remhighlight") {
		removeHighlights();
		}
	else if (filter == "remlowlight") {
		removeLowlights();
		}
	else if (filter == "remhighlowlight") {
		removeLowlights();
		removeHighlights();
		}
	else if (filter == "ignorehighlights") {
		ignoreHighlighted();
		}
	else if (filter != "clearfilters") {
		filters = filter;
		document.getElementById("lastfilter").innerHTML = "<a href=\"javascript:void('0');\" onClick=\"applyFilter('clearfilters');\" class=\"remfilter\">Remove "+filtertype+" filter &raquo;</a></em>";
		}
	else {
		filters = "";
		document.getElementById("lastfilter").innerHTML = "";
		}
	if (filter && filter != "highlight" && filter != "hidelowlight" && filter != "ignorehighlights") {
		document.getElementById("waitmessage").innerHTML = "Querying database...";
		showdeadcenterdiv("200","20","350","waitmessage");
		window.iframe.location.href = "/getdata.php?order="+sortorder+"&col="+sortcol+"&sorder="+sortorderlast+"&scol="+sortcollast+"&f="+filters+"&hionly="+highlightedOnly+"&hidelo="+maskLowlighted+"&hrows="+hiddenRows+"&hcols="+hiddenCols+"&lorows="+lowlightedRows+"&hirows="+highlightedRows;
		}
	if (filter == "clearfilters") {
		setTimeout("refreshMessage('Removing filters. Please wait...')", 1000);
		setTimeout("refreshMessage('Formatting output. Please wait...')", 2000);
		}
	else if (filter == "remhighlight") {
		setTimeout("refreshMessage('Removing highlights. Please wait...')", 1000);
		}
	else if (filter == "remlowlight") {
		setTimeout("refreshMessage('Removing lowlights. Please wait...')", 1000);
		}
	else if (filter == "remhighlowlight") {
		setTimeout("refreshMessage('Removing highlights & lowlights. Please wait...')", 1000);
		}
	else if (filter) {
		setTimeout("refreshMessage('Applying filters. Please wait...')", 1000);
		}
	document.boxes.filters.options.selectedIndex = 0;
	}
	
// Sort from dropdown menu
function applySort(sort) {
	// Counter dropdown box toggle
	if (!sort) {
		sort = document.boxes.sorts.options[document.boxes.sorts.options.selectedIndex].value;
		}
	// Add/Remove from stored variable "filters" unless using highlights
	if (sort.substr(0,4) == "sort") {
		var fields=sort.split(":");
		sortData(fields[1],fields[2]);		
		document.getElementById("waitmessage").innerHTML = "Re-ordering...";
		showdeadcenterdiv("200","20","350","waitmessage");
		window.iframe.location.href = "/getdata.php?order="+sortorder+"&col="+sortcol+"&sorder="+sortorderlast+"&scol="+sortcollast+"&f="+filters+"&hionly="+highlightedOnly+"&hidelo="+maskLowlighted+"&hrows="+hiddenRows+"&hcols="+hiddenCols+"&lorows="+lowlightedRows+"&hirows="+highlightedRows;
		}
	setTimeout("refreshMessage('Formating display. Please wait...')", 2000);
	}
	
function refreshMessage(mess) {
	document.getElementById('waitmessage').innerHTML = mess;
	}
	
// FUNCTION CURRENTLY REDUNDANT ( replaced by func lRow() )
function toggleRow(vRow) {
	var browser=navigator.appName;
	var pattern;
	// Counter dropdown box toggle
	if (!vRow) {
		vRow = document.boxes.row.options[document.boxes.row.options.selectedIndex].value;
		}
	// Show all
	if (vRow == "all") {
		var trows = document.getElementsByTagName('div');
    	for (var t = 0; t < trows.length; ++t) {
        	var trow = trows[t];
			var rowID = trow.getAttribute('id');
			if (rowID && rowID.substr(0,2) == "tr") {
				if (browser == "Netscape") {
					document.getElementById(rowID).style.display = "table-row";
					}
				else {
					document.getElementById(rowID).style.display = "block";
					}
				var opt = rowID.replace(/t/, "");
				document.getElementById(opt).style.color = "#222222";				
				pattern = new RegExp(opt+"-", "g"); 
				hiddenRows = hiddenRows.replace(pattern, "");
				}
			document.boxes.row.options.selectedIndex = 0;
			}
		}
	else if (vRow) {
		// hide row
		if (document.getElementById(vRow).style.display != "none") {
			document.getElementById(vRow).style.display = "none";
			document.getElementById(vRow).style.color = "#aaaaaa";
			document.boxes.row.options.selectedIndex = 0;
			hiddenRows = hiddenRows+vRow+"-";			
			}
		// show row
		else {
			if (browser == "Netscape") {
				document.getElementById(vRow).style.display = "table-row";				
				}
			else {
				document.getElementById(vRow).style.display = "block";
				}
			document.getElementById(vRow).style.color = "#222222";
			document.boxes.row.options.selectedIndex = 0;
			pattern = new RegExp(vRow+"-", "g"); 
			hiddenRows = hiddenRows.replace(pattern, "");
			}
		}
	}
	
function toggleCol(vCol) {
	var browser=navigator.appName;
	var pattern;
	// Counter dropdown box toggle
	if (!vCol) {
		vCol = document.boxes.column.options[document.boxes.column.options.selectedIndex].value;
		}
	var tspans = document.getElementsByTagName('span');
    for ( var t = 0; t < tspans.length; ++t ) {
        var tspan = tspans[t];
		var spanID = tspan.getAttribute('id');
		if (spanID && spanID.indexOf(":") > -1 && (spanID.indexOf(vCol) > -1 || vCol == "all")) {
			var breakspan=spanID.split(":");
			var opt = breakspan[1];			
			// hide column
			if (opt && document.getElementById(spanID).style.display != "none" && vCol != "all") {				
				document.getElementById(spanID).style.display = "none";				
				document.boxes.column.options.selectedIndex = 0;
				document.getElementById(opt).style.color = "#aaaaaa";
				pattern = vCol+"-";
				if (hiddenCols.indexOf(pattern) == -1) {
					hiddenCols = hiddenCols+vCol+"-";
					}
				}
			// show column
			else if (document.getElementById(spanID).style.display == "none" || vCol == "all") {
				if (browser == "Netscape") {
					document.getElementById(spanID).style.display = "table-cell";					
					}
				else {
					document.getElementById(spanID).style.display = "inline";
					}
				//The "row" select box must contain an item for every ID starting at "c0" -> no. of columns (no gaps in sequence)
				document.getElementById(opt).style.color = "#222222";
				document.boxes.column.options.selectedIndex = 0;
				pattern = new RegExp(opt+"-", "g"); 
				hiddenCols = hiddenCols.replace(pattern, "");
				}
			}		
		}	
	}

// Dynamically adjusts width of "wrap" div element so when columns overlap
// screen width, it forces horizontal scrolling. Used for Firefox, IE is fine.
function adjustWidth(vCol) {
	if (!vCol) {
		var vCol = document.boxes.column.options[document.boxes.column.options.selectedIndex].value;
		}
	var wref = vCol.replace(/c/,'');
	if (vCol == "all") { // showing all columns
		wrapwidth = totalwrap; // variable defined in index.php
		document.getElementById('wrap').style.width = wrapwidth+"px";
		}
	else if (document.getElementById("r0:"+vCol).style.display == "none") { // showing column so add width
		wrapwidth = wrapwidth + wi[wref];			
		document.getElementById('wrap').style.width = wrapwidth+"px";
		}
	else { // hiding column so subtract width
		wrapwidth = wrapwidth - wi[wref];				
		document.getElementById('wrap').style.width = wrapwidth+"px";
		}
	}
	
// Toggle column from popup menu (populates col name from global var)
function hColFromMenu() {
	adjustWidth(currcolID);
	toggleCol(currcolID);
	}
	
// Highlight row
function hRow(row) {
	if (!row) {
		row = "tr"+currcode;
		}
	var pattern = row+"-";
	var tspans = document.getElementById(row).getElementsByTagName('span');
    for ( var t = 0; t < tspans.length; ++t ) {
        var tspan = tspans[t];
		var cell = tspan.getAttribute('id');
		if (highlightedRows.indexOf(pattern) == -1) {
			document.getElementById(cell).style.backgroundColor = "#ffffaa";
			document.getElementById(cell).style.color = "#990000";
			}
		else {
			document.getElementById(cell).style.backgroundColor = "#ffffff";
			document.getElementById(cell).style.color = "#222222";
			}
		}
	if (highlightedRows.indexOf(pattern) == -1) {
		highlightedRows = highlightedRows+row+"-"; // add
		}
	else {
		pattern = new RegExp(row+"-", "g"); 
		highlightedRows = highlightedRows.replace(pattern, ""); // remove
		}
	}
	
// Lowlight row
function lRow(row) {
	if (!row) {
		row = "tr"+currcode;
		}
	var pattern = row+"-";
	var tspans = document.getElementById(row).getElementsByTagName('span');
    for ( var t = 0; t < tspans.length; ++t ) {
        var tspan = tspans[t];
		var cell = tspan.getAttribute('id');
		var hrefs = document.getElementById(cell).getElementsByTagName('a');
		if (lowlightedRows.indexOf(pattern) == -1) {
			document.getElementById(cell).style.backgroundColor = "#ffffff";
			document.getElementById(cell).style.color = "#cccccc";
			for ( var a = 0; a < hrefs.length; ++a ) {
				var ahref = hrefs[a];
				var href = ahref.getAttribute('id');
				document.getElementById(href).style.color = "#cccccc";
				}
			//document.getElementById(cell).style.opacity=0.4; 			// FF
			//document.getElementById(cell).filters.alpha.opacity=40;   // IE
			}
		else {
			document.getElementById(cell).style.backgroundColor = "#ffffff";
			document.getElementById(cell).style.color = "#222222";
			for ( var a = 0; a < hrefs.length; ++a ) {
				var ahref = hrefs[a];
				var href = ahref.getAttribute('id');
				document.getElementById(href).style.color = "#0000ff";
				}
			}
		}
	if (lowlightedRows.indexOf(pattern) == -1) {
		lowlightedRows = lowlightedRows+row+"-"; // add
		}
	else {
		pattern = new RegExp(row+"-", "g"); 
		lowlightedRows = lowlightedRows.replace(pattern, ""); // remove
		}
	}
	
function showHighlighted() {
	var rows=highlightedRows.split("-");
	var tspans = document.getElementById('wrap').getElementsByTagName('div');
    for (var t = 0; t < tspans.length; ++t) {
        var tspan = tspans[t];
		var row = tspan.getAttribute('id');
		if (!in_array(row,rows) && document.getElementById(row) && row != "th0") {
			document.getElementById(row).style.display = "none";
			}
		}
	highlightedOnly = "y";
	}

// REPLACED WITH function bRowAll() BELOW
// Highlight row (used to highlight left cell blue as mouse moves up/down rows)
function bRow(row,type) {
	if (!row) {
		row = "r"+currcode;
		}
	else {
		row = "r"+row;
		}
	if (type == "on" && document.getElementById(row+":c0")) {
		document.getElementById(row+":c0").style.backgroundColor = "#0000FF";
		}
	else if (document.getElementById(row+":c0")) {
		document.getElementById(row+":c0").style.backgroundColor = "#ffffcc";
		}
	}
	
// Highlight row (used to highlight row as mouse moves up/down rows)
// Called in datarow.php and menufunctions.js
function bRowAll(row,type) {
	if (!row) {
		row = "tr"+currcode;
		}
	else {
		row = "tr"+row;
		}
	var tspans = document.getElementById(row).getElementsByTagName('span');
    for ( var t = 0; t < tspans.length; ++t ) {
        var tspan = tspans[t];
		var cell = tspan.getAttribute('id');
		if (type == "on" && document.getElementById(cell) && lowlightedRows.indexOf(row) == -1 && highlightedRows.indexOf(row) == -1 && cell.indexOf(":c0") == -1) {
			document.getElementById(cell).style.backgroundColor = "#ffffdd";
			}
		else if (document.getElementById(cell) && lowlightedRows.indexOf(row) == -1 && highlightedRows.indexOf(row) == -1 && cell.indexOf(":c0") == -1) {
			document.getElementById(cell).style.backgroundColor = "#ffffff";
			}
		}
	}
	
function hideLowlighted() {
	var browser=navigator.appName;
	var rows=lowlightedRows.split("-");
	var tspans = document.getElementById('wrap').getElementsByTagName('div');
    for (var t = 0; t < tspans.length; ++t) {
        var tspan = tspans[t];
		var row = tspan.getAttribute('id');
		if (in_array(row,rows) && document.getElementById(row)) {
			document.getElementById(row).style.display = "none";
			}
		}
	maskLowlighted = "y";
	}
	
function ignoreHighlighted() {
	var browser=navigator.appName;
	var tspans = document.getElementById('wrap').getElementsByTagName('div');
    for (var t = 0; t < tspans.length; ++t) {
        var tspan = tspans[t];
		var row = tspan.getAttribute('id');
		if (row && document.getElementById(row)) {
			if (browser == "Netscape") {
				document.getElementById(row).style.display = "table-row";
				}
			else {
				document.getElementById(row).style.display = "block";
				}
			}
		}
	maskLowlighted  = "";
	highlightedOnly = "";
	}
	
function removeHighlights() {
	var rows=highlightedRows.split("-");
    for (var t = 0; t < rows.length; ++t) {
		var row = rows[t];
		if (row && document.getElementById(row)) {
			document.getElementById(row).style.backgroundColor = "#ffffff";
			document.getElementById(row).style.color = "#222222";
			}
		}
	highlightedRows = "";
	highlightedOnly = "";
	}

function removeLowlights() {
	var rows=lowlightedRows.split("-");
    for (var t = 0; t < rows.length; ++t) {
		var row = rows[t];
		if (row && document.getElementById(row)) {
			document.getElementById(row).style.backgroundColor = "#ffffff";
			document.getElementById(row).style.color = "#222222";
			}
		}
	lowlightedRows = "";
	maskLowlighted  = "";
	}
	
function CreateBookmarkLink() {
	var d = new Date();
	var t = d.getTime();
	window.iframe.location.href = "/save.php?tstamp="+t+"&order="+sortorder+"&col="+sortcol+"&order2="+sortorderlast+"&col2="+sortcollast+"&f="+filters+"&hionly="+highlightedOnly+"&hidelo="+maskLowlighted+"&hrows="+hiddenRows+"&hcols="+hiddenCols+"&lorows="+lowlightedRows+"&hirows="+highlightedRows;
	var title = "A - Z Online Casinos [View #1]"; 
	var url = "http://www.azonlinecasinos.com/index.php?view="+t;
	document.getElementById('url').innerHTML = '<span class=\"saveview\"><em>URL for last saved view:</em></span><span style=\"float-left;margin-left:1px;\"><a href="'+url+'" class="help">'+url+'</a> (expires after 3 months)</span>';
	if (window.sidebar) { // Mozilla Firefox Bookmark
		if (confirm('This will save your view as a Sidebar Bookmark. Once saved, right click the link on your BOOKMARKS menu, click "Properties" and UN-TICK the "Load this bookmark in the sidebar" box.')) {
			window.sidebar.addPanel(title, url,"");
			}
		}
	else if (window.external) { // IE Favorite
			window.external.AddFavorite( url, title);
		
		}
	else if (window.opera && window.print) { // Opera Hotlist
		return true;
		}
	}

/***************************************************************************************/
/*							UTILITY FUNCTIONS										   */
/***************************************************************************************/
function gotoCasino(code) {
	if (!code) {
		code = currcode;
		}
	window.open("/goto-casino.php?c="+code,"_blank");		
	}
	
function in_array(myValue,myArray) {
    function equals(a,b) {
        return (a === b);
    	}
    for (var i in myArray) {
        if (equals(myArray[i],myValue))
            return true;
    	}
    return false;
	}

// Center screen positioning functions
function showdeadcenterdiv(Xwidth,Yheight,leftcenter,divid) {
	// First, determine how much the visitor has scrolled
	var scrolledX, scrolledY; 
	if (self.pageYoffset) { 
		scrolledX = self.pageXoffset; 
		scrolledY = self.pageYoffset; 
		} 
	else if (document.documentElement && document.documentElement.scrollTop) { 
		scrolledX = document.documentElement.scrollLeft; 
		scrolledY = document.documentElement.scrollTop; 
		}
	else if (document.body) { 
		scrolledX = document.body.scrollLeft; 
		scrolledY = document.body.scrollTop; 
		} 

	// Next, determine the coordinates of the center of browser's window 
	var centerX, centerY; 
	if (self.innerHeight) { 
		centerX = self.innerWidth; 
		centerY = self.innerHeight; 
		}
	else if (document.documentElement && document.documentElement.clientHeight) { 
		centerX = document.documentElement.clientWidth; 
		centerY = document.documentElement.clientHeight; 
		}
	else if (document.body) { 
		centerX = document.body.clientWidth; 
		centerY = document.body.clientHeight; 
		} 

	// Xwidth is the width of the div, Yheight is the height of the div passed as arguments to the function: 
	var leftoffset = scrolledX + (centerX - Xwidth) / 2; 
	var topoffset = scrolledY + (centerY - Yheight) / 2; 
	// The initial width and height of the div can be set in the style sheet with display:none; divid is passed as an argument to // the function 
	var o=document.getElementById(divid); 
	var r=o.style; 
	r.position='absolute'; 
	r.top = topoffset + 'px';
	r.width = Xwidth;
	r.height = Yheight;
	if (leftcenter == "center") {
		r.left = leftoffset + 'px';
		}
	else if (leftcenter == "defaultleft") {
		r.left = '175px';
		}
	else {
		r.left = leftcenter + 'px';
		}
	r.display = "block"; 
} 
