// config
var hoverTimeout = 300; // msec

// browser check
var ua = navigator.userAgent;
var s = "MSIE", isIE = false, isValidBrowser = false; 
if (ua.indexOf(s)) isIE = true;

if (document.getElementById) isValidBrowser = true;

/* if (isValidBrowser) {
	if (isIE)
		document.onmousedown = hideMenus;
	else
		document.addEventListener("mousedown", hideMenus, true);
}
*/

var hideables = 0;
var menuTimer = 0;
var activeMenu = 0;


function showMenu(menu) {
	if (isValidBrowser) {
		clrT();
		hAll();
		showLayer('m'+(menu));
		hideRegion(menu);
		setTitle(menu);
	}
}


function setT() {
	if (isValidBrowser) menuTimer=setTimeout("hideMenus()",hoverTimeout);
}


function clrT() {
	clearTimeout(menuTimer);
}


function hideMenus() {
	hAll();
	for (j=0;j<hideables.length;j++) { 
		showLayer(hideables[j][0]);
	}
}


function hAll() { 
	hideLayer('m1','m2','m3','m4','m5'); 
	setTitle(0);
}


function setTitle(menu){
	if (menu != activeMenu) {
		activeMenu = menu;
		for (i=1;i<=4;i++) 	{ document.getElementById('mh'+i).className = ((i==activeMenu) ? 'active' : ''); }
	}
}


function showLayer() { 
   var n=showLayer.arguments.length; 
   for (var i=0; i<n; i++) { 
	 var lyr = getLayer(showLayer.arguments[i]); 
	 if(lyr) lyr.style.visibility="visible";
   } 
} 


function hideLayer() { 
   var n=hideLayer.arguments.length; 
   var i;
   var combos;
   for (var i=0; i<n; i++) { 
	  var lyr = getLayer(hideLayer.arguments[i]) 
	  if(lyr) {
	    if(lyr.tagName=="SPAN"){
	      combos=lyr.getElementsByTagName("select");
	      for (i=0; i<combos.length; ++i) {
          combos[i].blur();
	      }
	    }
	    lyr.style.visibility = "hidden";
	  }
   } 
} 

function hideRegion(region) { // hide objects within a region

	if (!hideables) createHideableList();

	var regionMask;
	for (j=0;j<hideables.length;j++) {
		regionList=String(hideables[j][1]);
		if (Number(regionList.substr(region-1,1))==0) 
			hideLayer(hideables[j][0]);
		else
			showLayer(hideables[j][0]);
	}
}

function getLayer(name) { 
	if(typeof name != "string") return name; 
	if (name)
		if (document.getElementById(name)) 
			return document.getElementById(name);
	return null;
} 

function createHideableList() {
	
	var re, count, i, myLayers=new Array();
	
	myLayers=document.getElementsByTagName('span');
	hideables= new Array();
	re=/^(\w|\d)+\_((0|1){4})$/;
	count=0;
	for (i=0; i<myLayers.length; i++) {
		a=myLayers[i].id.match(re);
		if (a != null) {
			hideables[count]=new Array();
			hideables[count][0]=myLayers[i].id;
			hideables[count][1]=RegExp.$2;
			count++;
		}
	}
}

function CreateMainMenu( aTitle, aDescription, anId ) {
  var result;
  result = document.createElement('a');
  result.title = aDescription;
  result.id = "mh" + anId;
  result.href = "javascript:void(null);";
  result.tabindex="30" + anId;
  result.onclick=function (evt) { return false; };
  result.onmouseover=function (evt) { showMenu(anId);return false; };
  result.onmouseout=function (evt) { setT();return false; };
  result.onkeypress=function (evt) { return false; };
  result.onfocus=function (evt) { showMenu(anId);return false; };
  result.onblur=function (evt) { setT();return false; };
  result.innerHTML = aTitle;
  return result;
}

function CreateMainMenuBody( anId, aTitle, aMenuDiv ) {
  var menu;
  var heading;
  var list;
  menu = document.createElement('div');
  heading = document.createElement('h2');
  list = document.createElement('ul');
  menu.id = "m" + anId;
  menu.title = aTitle;
  menu.className = "mBody";
  heading.innerHTML = aTitle;
  menu.appendChild(heading);
  menu.appendChild(list);
  aMenuDiv.appendChild(menu);
  return list;
}

function CreateMainMenuItem( aHref, aName, aDescription, aMenuNumber, anItemNumber ) {
  return BuildMainMenuItem( aHref, aName, aDescription, aMenuNumber, anItemNumber, false );
}

function CreateExternalMainMenuItem( aHref, aName, aDescription, aMenuNumber, anItemNumber ) {
  return BuildMainMenuItem( aHref, aName, aDescription, aMenuNumber, anItemNumber, true );
}

function BuildMainMenuItem( aHref, aName, aDescription, aMenuNumber, anItemNumber, isExternal ) {
  var result;
  var link;
  result = document.createElement('li');
  result.id= "mi_" + aMenuNumber + "_" + anItemNumber;
  link = document.createElement('a');
  link.href=aHref;
  
  if( aDescription != null ) {
    link.title=aDescription;
  }
  
  if( isExternal == true ) {
    link.target="_blank";
  }
  
  link.onclick=function (evt) { hideMenus();return true; };
  link.onmouseover=function (evt) { clrT();return false; };
  link.onmouseout=function (evt) { setT();return false; };
  link.onfocus=function (evt) { clrT();return false; };
  link.onblur=function (evt) { setT();return false; };
  link.innerHTML = aName;    
  result.appendChild(link);
  return result;
}

function getBrowserType() {
  var detect = navigator.userAgent.toLowerCase();
  var browser,version,total,thestring;

  if (checkIt('konqueror'))
  {
  	browser = "Konqueror";
  	OS = "Linux";
  }
  else if (checkIt(detect, 'safari')) browser = "Safari"
  else if (checkIt(detect, 'omniweb')) browser = "OmniWeb"
  else if (checkIt(detect, 'opera')) browser = "Opera"
  else if (checkIt(detect, 'webtv')) browser = "WebTV";
  else if (checkIt(detect, 'icab')) browser = "iCab"
  else if (checkIt(detect, 'msie')) browser = "Internet Explorer"
  else if (!checkIt(detect, 'compatible'))
  {
  	browser = "Netscape Navigator"
  	version = detect.charAt(8);
  }
  else browser = "An unknown browser";

  return browser;
}

function isBrowserSafari() {
  return ( getBrowserType() == "Safari" );
}

function checkIt(aSource, aSearchString)
{
	place = aSource.indexOf(aSearchString) + 1;
	return place;
}

function GetRaceMeetingMenuTable() {
  return document.getElementById("raceMeetingListControl_body_racelist");
}

function ShowNoFixturesInRaceMeetingMenu() {
  AddRaceMeetingFixtureTypeHeading("No fixtures found");
}

function AppendRowToTable( aTable ) {
  var newRow;

  if( isBrowserSafari()) {
    newRow = aTable.insertRow(-1);
  }
  else {
    newRow = aTable.insertRow(aTable.rows.length);
  }
  
  return newRow;
}

function AddRaceMeetingFixtureTypeHeading( aFixtureId ) {

  var label;
  var newRow;
  var table;
  var newCell;
  
  if( aFixtureId == "R" ) {
    label = "Thoroughbreds";
  }
  else if( aFixtureId == "T" ) {
    label = "Harness";
  }
  else if( aFixtureId == "D" ) {
    label = "Greyhounds";
  }
  else {
    label = aFixtureId;
  }
  
  table = GetRaceMeetingMenuTable();
  if(table) {
    newRow = AppendRowToTable(table);
    newRow.className = "code";
    
    if( isBrowserSafari()) {
      newRow.innerHTML = "<td colspan='2'>" + "<b>" + label + "</b>" + "</td>";
    }
    else {
      newCell = newRow.insertCell(0);
      newCell.innerHTML = "<b>" + label + "</b>";
      newCell.colSpan = 2;
    }
  }
}

function AddRaceMeetingItem( aBaseUrl, aDate, aCode, aText, aRowCount ) {
  var newRow;
  var table;
  var codeCell;
  var labelCell;
  var link;
  
  table = GetRaceMeetingMenuTable();
  if(table) {
    newRow = AppendRowToTable(table);
    
    if(( aRowCount % 2 ) != 0 ) {
      newRow.className = "alt";
    }
    
    codeCell = newRow.insertCell(0);
    link = document.createElement('a');
    link.href=aBaseUrl + "?fixtureDate=" + aDate + "&fixtureId=" + aCode;
    link.innerHTML = "<b>" + aCode + "</b>";
    codeCell.appendChild(link);
    
    labelCell = newRow.insertCell(1);
    link = document.createElement('a');
    link.href=aBaseUrl + "?fixtureDate=" + aDate + "&fixtureId=" + aCode;
    link.innerHTML = aText;    
    labelCell.appendChild(link);
  }
}
